ref: alfred ver 2015.1 / .2
alfred process dies (not in ps ) without leaving any log entry for reason why
alfred -r 64 : can't connect to unix socket : Connetion refused
remains : /tmp/run/
alfred.pid
alfred.sock
batadv-vis still in process-list and shows data
alfred stop does not kill the remains
start / restart / reload does not bring alfred up
system reboot required
occurence : frequent irregular at start or after some time
afred.facters disabled
does anybody have any hint or idea ?
cheers
3zl
Hi,
it seems a bunch of patches are missing in net-next from batman-adv next's
branch.
An incorrect lockdep_assert was fixed to refer to the correct lock. The
flag FIRST_HOP was dropped because it is not used anymore in the batman-adv
compat version 15. The bridge loop avoidance code will now cleanup its
internal state when it gets disabled. This is required to reset itself in
case it gets restarted again. Also the behavior when the user tries to
enable the already started bridge loop avoidance was modified to just
ignore this trigger. It was also tuned to better cope with networks
using very lossy links.
The rest are only contain minor cleanups of the code, updates of the
documentation and kerneldoc inside the batman-adv source code.
Kind regards,
Sven
Antonio Quartulli (3):
batman-adv: fix kerneldoc for DAT functions
batman-adv: fix kerneldoc for TT functions
batman-adv: add kernel doc for AP isolation attributes in bat_priv
Marek Lindner (2):
batman-adv: remove leftovers of unused BATADV_PRIMARIES_FIRST_HOP flag
batman-adv: kernel doc readability updates
Markus Elfring (4):
batman-adv: Delete unnecessary checks before the function call "kfree_skb"
batman-adv: Less checks in batadv_tvlv_unicast_send()
batman-adv: Delete an unnecessary check before the function call "batadv_softif_vlan_free_ref"
batman-adv: Split a condition check
Simon Wunderlich (5):
batman-adv: Start new development cycle
batman-adv: purge bridge loop avoidance when its disabled
batman-adv: increase BLA wait periods to 6
batman-adv: only call post function if something changed
batman-adv: Update/repair bridge loop avoidance kerneldoc
Sven Eckelmann (14):
batman-adv: Fix lockdep annotation of batadv_tlv_container_remove
batman-adv: Add function to convert string to batadv throughput
batman-adv: Change ifconfig examples to iproute2
batman-adv: Fix kernel-doc parsing of main structs
batman-adv: Fix kerneldoc member names in for main structs
batman-adv: Remove kerneldoc for missing struct members
batman-adv: Add kerneldoc for batadv_neigh_node::refcount
batman-adv: Fix kerneldoc parsing of structs/enums
batman-adv: Remove kerneldoc for missing parameters
batman-adv: Fix names in kerneldoc of functions
batman-adv: Drop invalid kerneldoc for variable batadv_vlan_attrs
batman-adv: Fix kerneldoc parsing of return description
batman-adv: Fix kerneldoc of main functions
batman-adv: Fix kerneldoc of network-coding functions
Documentation/networking/batman-adv.txt | 9 +-
net/batman-adv/bat_iv_ogm.c | 21 ++-
net/batman-adv/bitarray.c | 12 +-
net/batman-adv/bitarray.h | 12 +-
net/batman-adv/bridge_loop_avoidance.c | 247 ++++++++++++++++++++++++--------
net/batman-adv/bridge_loop_avoidance.h | 2 +
net/batman-adv/debugfs.c | 6 +
net/batman-adv/distributed-arp-table.c | 41 +++---
net/batman-adv/fragmentation.c | 18 +--
net/batman-adv/fragmentation.h | 2 +-
net/batman-adv/gateway_client.c | 14 +-
net/batman-adv/gateway_common.c | 119 +++++++--------
net/batman-adv/hard-interface.c | 7 +-
net/batman-adv/hash.h | 22 +--
net/batman-adv/main.c | 45 +++---
net/batman-adv/main.h | 21 ++-
net/batman-adv/multicast.c | 35 +++--
net/batman-adv/multicast.h | 2 +-
net/batman-adv/network-coding.c | 59 ++++----
net/batman-adv/originator.c | 54 ++++---
net/batman-adv/packet.h | 20 +--
net/batman-adv/routing.c | 36 +++--
net/batman-adv/send.c | 32 +++--
net/batman-adv/send.h | 4 +-
net/batman-adv/soft-interface.c | 18 +--
net/batman-adv/sysfs.c | 31 ++--
net/batman-adv/translation-table.c | 125 +++++++++-------
net/batman-adv/types.h | 60 ++++----
28 files changed, 650 insertions(+), 424 deletions(-)
The neigh_list with batadv_hardif_neigh_node objects is accessed with only
rcu_read_lock in batadv_neigh_node_get and batadv_iv_neigh_print. Thus is
is not allowed to kfree the object before the rcu grace period ends which
may still tries to access this object. Therefore the object has first to be
removed from the neigh_list and then it has either wait with
synchronize_rcu or call_rcu till the grace period ends before it can be
freed.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
I have no idea why batadv_hardif_neigh_free_now is considered to be safe to
call. The only caller is batadv_neigh_node_free_rcu but this function never
makes sure that the previously mentioned two functions are actually not
accessing it right now when hlist_del_rcu_init + kfree is called.
---
net/batman-adv/originator.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 00b0437..2681c7d 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -217,10 +217,6 @@ static void batadv_hardif_neigh_free_rcu(struct rcu_head *rcu)
hardif_neigh = container_of(rcu, struct batadv_hardif_neigh_node, rcu);
- spin_lock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
- hlist_del_init_rcu(&hardif_neigh->list);
- spin_unlock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
-
batadv_hardif_free_ref_now(hardif_neigh->if_incoming);
kfree(hardif_neigh);
}
@@ -233,8 +229,13 @@ static void batadv_hardif_neigh_free_rcu(struct rcu_head *rcu)
static void
batadv_hardif_neigh_free_now(struct batadv_hardif_neigh_node *hardif_neigh)
{
- if (atomic_dec_and_test(&hardif_neigh->refcount))
+ if (atomic_dec_and_test(&hardif_neigh->refcount)) {
+ spin_lock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
+ hlist_del_init_rcu(&hardif_neigh->list);
+ spin_unlock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
+
batadv_hardif_neigh_free_rcu(&hardif_neigh->rcu);
+ }
}
/**
@@ -244,8 +245,13 @@ batadv_hardif_neigh_free_now(struct batadv_hardif_neigh_node *hardif_neigh)
*/
void batadv_hardif_neigh_free_ref(struct batadv_hardif_neigh_node *hardif_neigh)
{
- if (atomic_dec_and_test(&hardif_neigh->refcount))
+ if (atomic_dec_and_test(&hardif_neigh->refcount)) {
+ spin_lock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
+ hlist_del_init_rcu(&hardif_neigh->list);
+ spin_unlock_bh(&hardif_neigh->if_incoming->neigh_list_lock);
+
call_rcu(&hardif_neigh->rcu, batadv_hardif_neigh_free_rcu);
+ }
}
/**
--
2.6.4
Hello there
Hallo (deutsche Version unten)
I have a simple batman setup that does behave odd:
Raspberry b+, jessie, batman-adv2015.2 witha single LOGILINK WL0084B
USB wifi stick attached
I have 5 rasperries that can see each other via wifi (one of them is a
gw(BASE2), one of them (SHELF_1) is not directly reachable by the gw,
because they are in a line from one room to another and has to be
reached via one single hop in between)
digraph {
{
"BASE_2"
}
"BASE_2" -> "SHELF_3 @ ra" [label="1.689"]
"BASE_2" -> "SHELF_5 @ Bar" [label="1.689"]
"BASE_2" -> "SHELF_2 @ CD Regal" [label="2.161"]
"BASE_2" -> "SHELF_4 @ Toaster" [label="2.161"]
"BASE_2" -> "SHELF_1 @ Chris" [label="2.040"]
subgraph "cluster_SHELF_3 @ ra" {
"SHELF_3 @ ra"
}
"SHELF_3 @ ra" -> "SHELF_5 @ Bar" [label="1.192"]
"SHELF_3 @ ra" -> "SHELF_4 @ Toaster" [label="1.328"]
"SHELF_3 @ ra" -> "BASE_2" [label="2.277"]
subgraph "cluster_SHELF_4 @ Toaster" {
"SHELF_4 @ Toaster"
}
"SHELF_4 @ Toaster" -> "SHELF_3 @ ra" [label="1.037"]
"SHELF_4 @ Toaster" -> "SHELF_2 @ CD Regal" [label="1.483"]
"SHELF_4 @ Toaster" -> "SHELF_5 @ Bar" [label="1.175"]
"SHELF_4 @ Toaster" -> "SHELF_1 @ Chris" [label="1.371"]
"SHELF_4 @ Toaster" -> "BASE_2" [label="3.446"]
subgraph "cluster_SHELF_1 @ Chris" {
"SHELF_1 @ Chris"
}
"SHELF_1 @ Chris" -> "SHELF_3 @ ra" [label="1.170"]
"SHELF_1 @ Chris" -> "SHELF_5 @ Bar" [label="1.020"]
subgraph "cluster_SHELF_5 @ Bar" {
"SHELF_5 @ Bar"
}
"SHELF_5 @ Bar" -> "SHELF_3 @ ra" [label="1.045"]
"SHELF_5 @ Bar" -> "SHELF_2 @ CD Regal" [label="1.393"]
"SHELF_5 @ Bar" -> "SHELF_4 @ Toaster" [label="1.203"]
"SHELF_5 @ Bar" -> "SHELF_1 @ Chris" [label="1.226"]
"SHELF_5 @ Bar" -> "BASE_2" [label="2.898"]
}
The problem is, when pinging ANY of the clients from the base (or any
client from any other client) I always have a package loss of roughly
50% with a ping reply time up to 10ms sometimes (BASE2 -> SHELF_1, the
closer ones are faster). To make things worse, the connection is so
weak, even a ssh login may bring it down.
I tried quite a few different settings and already updated to the new
version and used multiple USB sticks - the result always stays the
same. Now I am out of ideas and I would appreciate some new ideas.
GERMAN:
Ich habe hier 5 Raspberries die sich gegenseitig sehen können (einer
ist eine BASIS (BASE2), einer davon (SHELF_1) kann von der Basis nicht
direkt gesehen werden, weil sie von einem raum zum nächsten immer
größere Distanzen überwinden müssen).
Das Problem ist nun, dass wenn ich irgend einen client von der Basis
aus pinge, oder irgend einen client von einem anderen client pinge,
dass ich rund 50% package loss mit bis zu 10ms antwortzeit habe. Die
die sich näher sind funktionieren besser (2ms) die weiter weg sind
schlechter. Ich kann nicht mal mit einer ssh konsole von BASE2 auf
SHELF_1 so dass ich da sinnvoll was eingeben kann.
Ich habe schon einige verschiedene Optionen durchprobiert, wie
Beispielsweise Update von 2015.0 auf 2015.2, sogar zwei USB Sticks pro
Raspberry PI, aber das Problem bleibt. Nun würde ich um Input bitten,
mir sind die Ideen ausgegangen.
Danke
Thanks a lot!
Richard
open-mesh.org and its subdomains can only be accessed via HTTPS. HTTP-only
requests are currently redirected automatically to HTTPS but references in
the source code should be only https.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
Documentation/networking/batman-adv.txt | 2 +-
MAINTAINERS | 2 +-
net/batman-adv/Kconfig | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt
index 58e4904..810becb 100644
--- a/Documentation/networking/batman-adv.txt
+++ b/Documentation/networking/batman-adv.txt
@@ -184,7 +184,7 @@ interfaces to the kernel module settings.
For more information, please see the manpage (man batctl).
-batctl is available on http://www.open-mesh.org/
+batctl is available on https://www.open-mesh.org/
CONTACT
diff --git a/MAINTAINERS b/MAINTAINERS
index f3de001..0223cee 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2111,7 +2111,7 @@ M: Marek Lindner <mareklindner(a)neomailbox.ch>
M: Simon Wunderlich <sw(a)simonwunderlich.de>
M: Antonio Quartulli <antonio(a)meshcoding.com>
L: b.a.t.m.a.n(a)lists.open-mesh.org
-W: http://www.open-mesh.org/
+W: https://www.open-mesh.org/
S: Maintained
F: net/batman-adv/
diff --git a/net/batman-adv/Kconfig b/net/batman-adv/Kconfig
index c6fc8f7..2dd40e5 100644
--- a/net/batman-adv/Kconfig
+++ b/net/batman-adv/Kconfig
@@ -12,7 +12,7 @@ config BATMAN_ADV
B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is
a routing protocol for multi-hop ad-hoc mesh networks. The
networks may be wired or wireless. See
- http://www.open-mesh.org/ for more information and user space
+ https://www.open-mesh.org/ for more information and user space
tools.
config BATMAN_ADV_BLA
--
2.6.2
From: Antonio Quartulli <antonio(a)meshcoding.com>
My personal email address has changed. Update it in the doc files
Signed-off-by: Antonio Quartulli <antonio(a)meshcoding.com>
---
Documentation/ABI/testing/sysfs-class-net-mesh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh
index c464062..c2b956d 100644
--- a/Documentation/ABI/testing/sysfs-class-net-mesh
+++ b/Documentation/ABI/testing/sysfs-class-net-mesh
@@ -8,7 +8,7 @@ Description:
What: /sys/class/net/<mesh_iface>/mesh/<vlan_subdir>/ap_isolation
Date: May 2011
-Contact: Antonio Quartulli <antonio(a)meshcoding.com>
+Contact: Antonio Quartulli <a(a)unstable.cc>
Description:
Indicates whether the data traffic going from a
wireless client to another wireless client will be
@@ -70,7 +70,7 @@ Description:
What: /sys/class/net/<mesh_iface>/mesh/isolation_mark
Date: Nov 2013
-Contact: Antonio Quartulli <antonio(a)meshcoding.com>
+Contact: Antonio Quartulli <a(a)unstable.cc>
Description:
Defines the isolation mark (and its bitmask) which
is used to classify clients as "isolated" by the
--
2.6.4
open-mesh.org and its subdomains can only be accessed via HTTPS. HTTP-only
requests are currently redirected automatically to HTTPS but references to it
should be only https.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
alfred/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alfred/Makefile b/alfred/Makefile
index 3dba9b3..48b2a8b 100644
--- a/alfred/Makefile
+++ b/alfred/Makefile
@@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
#
-# The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
+# The latest alfred git hash in PKG_REV can be obtained from https://git.open-mesh.org/alfred.git
#
PKG_NAME:=alfred
PKG_VERSION:=2015.1
--
2.6.2
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
---
man/alfred.8 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/alfred.8 b/man/alfred.8
index 95241a7..49d42bc 100644
--- a/man/alfred.8
+++ b/man/alfred.8
@@ -130,7 +130,7 @@ Send data to the alfred server and store it under id 65:
.br
\fB cat /etc/hostname | alfred -s 65\fP
-Retreive all data stored as id 65 from all connected alfred servers:
+Retrieve all data stored as id 65 from all connected alfred servers:
.br
\fB alfred -r 65\fP
.nf
--
2.6.4