Hi,
I was asked to submit following pull request for net-next-2.6/linux-2.6.39. It
contains Marek's hard work (and of course related work by other people) to
remove the orig_hash (aka the batman-adv private "big kernel lock").
There are also smaller cleanups by Marek, Jesper Juhl and Linus Luessing which
remove some unused variables, includes and irritating naming schemes.
thanks,
Sven
The following changes since commit 3878f1f075470990d9c2418b53f31694e774f743:
batman-adv: Disallow originator addressing within mesh layer (2011-02-11 23:30:33 +0100)
are available in the git repository at:
git://git.open-mesh.org/ecsv/linux-merge.git batman-adv/next
Jesper Juhl (1):
batman-adv: Remove two duplicate includes.
Linus Lüssing (4):
batman-adv: Make bat_priv->curr_gw an rcu protected pointer
batman-adv: Increase orig_node refcount before releasing rcu read lock
batman-adv: Fix possible buffer overflow in softif neigh list output
batman-adv: Remove unused hdr_size variable in route_unicast_packet()
Marek Lindner (21):
batman-adv: protect neighbor nodes with reference counters
batman-adv: convert neighbor list to hlist
batman-adv: protect neighbor list with rcu locks
batman-adv: free neighbors when an interface is deactivated
batman-adv: protect neigh_nodes used outside of rcu_locks with refcounting
batman-adv: protect each hash row with rcu locks
batman-adv: protect originator nodes with reference counters
batman-adv: protect ogm counter arrays with spinlock
batman-adv: Correct rcu refcounting for neigh_node
batman-adv: Correct rcu refcounting for gw_node
batman-adv: Correct rcu refcounting for softif_neigh
batman-adv: Correct rcu refcounting for batman_if
batman-adv: protect bit operations to count OGMs with spinlock
batman-adv: make broadcast seqno operations atomic
batman-adv: separate ethernet comparing calls from hash functions
batman-adv: remove extra layer between hash and hash element - hash bucket
batman-adv: Correct rcu refcounting for orig_node
batman-adv: increase refcount in create_neighbor to be consistent
batman-adv: remove orig_hash spinlock
batman-adv: rename global if_list to hardif_list
batman-adv: rename batman_if struct to hard_iface
Simon Wunderlich (1):
batman-adv: protect bonding with rcu locks
Sven Eckelmann (1):
batman-adv: Disallow regular interface as mesh device
net/batman-adv/aggregation.c | 8 +-
net/batman-adv/aggregation.h | 4 +-
net/batman-adv/bat_sysfs.c | 51 +-
net/batman-adv/gateway_client.c | 140 ++++--
net/batman-adv/hard-interface.c | 407 ++++++++--------
net/batman-adv/hard-interface.h | 15 +-
net/batman-adv/hash.c | 26 +-
net/batman-adv/hash.h | 112 ++---
net/batman-adv/icmp_socket.c | 40 +-
net/batman-adv/main.c | 13 +-
net/batman-adv/main.h | 12 +-
net/batman-adv/originator.c | 252 ++++++----
net/batman-adv/originator.h | 50 ++-
net/batman-adv/routing.c | 983 +++++++++++++++++++++---------------
net/batman-adv/routing.h | 25 +-
net/batman-adv/send.c | 103 ++--
net/batman-adv/send.h | 8 +-
net/batman-adv/soft-interface.c | 74 ++--
net/batman-adv/soft-interface.h | 3 +-
net/batman-adv/translation-table.c | 205 +++++---
net/batman-adv/types.h | 48 +-
net/batman-adv/unicast.c | 93 ++--
net/batman-adv/unicast.h | 2 +-
net/batman-adv/vis.c | 192 ++++---
24 files changed, 1634 insertions(+), 1232 deletions(-)
Hi everyone,
By accident I've typed in a mesh interface name for batman-adv which
already existed as a real interface. This produces a null pointer
dereference in orig_hash_add_if():
http://www.open-mesh.org/ticket/146
The attached patch shall illustrate the problem, but I'm not quite
satisfied with it. Although it seems to "fix" the problem and gets
rid of the call trace, it is probably still very racy. Does anyone
have an idea for a more sane but equally easy check to fix the issue?
Or is the only sane solution to hold an rcu-lock and compare the
hard_iface->soft_iface in hardif_enable_interface() with every
hard-iface->net_dev from the hardif_list?
Cheers, Linus
This patch corrects commit
4c4236064501e85915087f00a370df8d9f43028d in which
bucket_free_orig_rcu() has been removed but without
being replaced.
In _push_orig(), the orig_node was not freed anymore after
a timeout.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
Signed-off-by: Marek Lindner <lindner_marek(a)yahoo.de>
---
originator.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/originator.c b/originator.c
index 53753d3..0b91330 100644
--- a/originator.c
+++ b/originator.c
@@ -349,6 +349,7 @@ static void _purge_orig(struct bat_priv *bat_priv)
if (orig_node->gw_flags)
gw_node_delete(bat_priv, orig_node);
hlist_del_rcu(node);
+ orig_node_free_ref(orig_node);
continue;
}
--
1.7.3.4
Wireless Battle Mesh v4 - Agenda
=====================
The principal assembly work on the WBMv4 agenda has been completed and the
result published on the battlemesh website:
http://battlemesh.org/BattleMeshV4/Agenda
However, expect some minor tweaks in the coming days as we always have some
latecomers. The most difficult part while compiling the schedule was the various
travel plans of the speakers. If any speaker feels uneasy about its talk feel
free to contact me - a solution will be found.
Lightening talks: These slots can be acquired by simply contacting me during
the event. The agenda will be updated as soon as slots have been registered.
If you have any question or suggestion, please let me know.
Regards,
Marek
Hi everyone,
Here are some smaller modifications of the redundancy bonding mode patches. I
haven't modified the batman_header yet, as there seem to be some other opinions
about this, too and might be easier to discuss at the WBMv4.
As always, everything is available here as well:
http://git.open-mesh.org/?p=t_x/batman-adv.git;a=shortlog;h=refs/heads/rbon…
Cheers, Linus
rbonding changelog v2:
* Fix (interim) refcounting bug / memory leak in unicast_send_skb() [5/12]
* change recv_icmp_ttl_exceeded() to change_icmp_ttl_exceeded(), as it
is in the sending code path now (thanks Andrew!) [3/12]
* Add missing ttl modification in aggregation.c [3/12]
* rebased to f39fe6f230e4cbf2b04e659b056ea62a652578a0
Hi all,
as promised, I have completed the analysis of the protocol overhead
providing also simulation results with and whitout the OGM aggregation
mechanism activated. As anticipated the results shows that aggregation
works well in reducing the overhead. In attachment the report
(OGMoverhead.pdf).
In attachment you will also find a draft/proposals of a new routing
approach. It is based on the collection of more link parameters (the
current TQ, bit-rate and node-load) to write in OGM at each hop. This
permit to develop a more thorough metric and can open new room of
improvement such multi-path routing.
Any comment/suggestion is welcome!
Regards.
--
Daniele Furlan
Hello..
I succesfully configured a batman-adv mesh to add access points to our
existing wired lan. I am using Openwrt 10.04 and batman-adv 2010.1.0.
DHCP and everything works as expected. Any wired or wireless client
connecting to the network gets an IP from a DHCP server hooked into the
switch etc etc.
Our Network configuration:
8 batman-adv routers with a wireless mesh with two or more of the
routers having a wired connection directly to the switch. In this case,
the 8 routers decide to pick one of the "plugged in" routers as a
gateway to avoid bridge loops. This is fine.
I have been running into issues with wired clients however.
When a wired client plugged into the switch tries to contact a wired
client plugged into the same switch, the packets manage to get lost. I
believe they are are going through the wireless routers plugged into the
same switch.
Instead of going like this..
PC 1 ----> switch1 ---> PC 2
they seem to be going like this... (my guess).
PC 1 ---> switch1 ---> wireless router 1 ----(wireless mesh link)---->
wireless router 2 ----> switch1 ---> PC 2.
I think this is because the translation tables on the bat node are
announcing that even the wired clients are connected to them.
This is causing extreme delays even in wired clients. Any help will be
appreciated. Should I enable STP in on the switch ports ?
- Vinay