Hi David,
our testers have discovered a regression in the current linux-3.1 code base. It increases latency of payload traffic by a factor of 4-5. Therefore we propose a patch that hopefully can be included before linux 3.1 final has been released. We kept it as short as possible to avoid introducing last minute bugs.
Once you pulled the patch you will run into a merge conflict with net-next: ++<<<<<<< HEAD + orig_node = transtable_search(bat_priv, ethhdr->h_source, + ethhdr->h_dest); + if (is_multicast_ether_addr(ethhdr->h_dest) || + (orig_node && orig_node->gw_flags)) { ++======= + orig_node = transtable_search(bat_priv, ethhdr->h_dest); + do_bcast = is_multicast_ether_addr(ethhdr->h_dest); + if (do_bcast || (orig_node && orig_node->gw_flags)) { ++>>>>>>> batman-adv/maint
The correct merge result would be: +====== orig_node = transtable_search(bat_priv, ethhdr->h_source, ethhdr->h_dest); do_bcast = is_multicast_ether_addr(ethhdr->h_dest); if (do_bcast || (orig_node && orig_node->gw_flags)) { +======
Let me know if there is a better way to address the merge conflict.
Thanks, Marek
The following changes since commit 322a8b034003c0d46d39af85bf24fee27b902f48:
Linux 3.1-rc1 (2011-08-07 18:23:30 -0700)
are available in the git repository at: git://git.open-mesh.org/linux-merge.git batman-adv/maint
Antonio Quartulli (1): batman-adv: do_bcast has to be true for broadcast packets only
net/batman-adv/soft-interface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
From: Antonio Quartulli ordex@autistici.org
corrects a critical bug of the GW feature. This bug made all the unicast packets destined to a GW to be sent as broadcast. This bug is present even if the sender GW feature is configured as OFF. It's an urgent bug fix and should be committed as soon as possible.
This was a regression introduced by 43676ab590c3f8686fd047d34c3e33803eef71f0
Signed-off-by: Antonio Quartulli ordex@autistici.org Signed-off-by: Marek Lindner lindner_marek@yahoo.de --- net/batman-adv/soft-interface.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c index 3e2f91f..05dd351 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c @@ -565,7 +565,7 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface) struct orig_node *orig_node = NULL; int data_len = skb->len, ret; short vid = -1; - bool do_bcast = false; + bool do_bcast;
if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE) goto dropped; @@ -598,15 +598,15 @@ static int interface_tx(struct sk_buff *skb, struct net_device *soft_iface) tt_local_add(soft_iface, ethhdr->h_source);
orig_node = transtable_search(bat_priv, ethhdr->h_dest); - if (is_multicast_ether_addr(ethhdr->h_dest) || - (orig_node && orig_node->gw_flags)) { + do_bcast = is_multicast_ether_addr(ethhdr->h_dest); + if (do_bcast || (orig_node && orig_node->gw_flags)) { ret = gw_is_target(bat_priv, skb, orig_node);
if (ret < 0) goto dropped;
- if (ret == 0) - do_bcast = true; + if (ret) + do_bcast = false; }
/* ethernet packet should be broadcasted */
From: Marek Lindner lindner_marek@yahoo.de Date: Thu, 22 Sep 2011 20:57:15 +0200
The following changes since commit 322a8b034003c0d46d39af85bf24fee27b902f48:
Linux 3.1-rc1 (2011-08-07 18:23:30 -0700)
are available in the git repository at: git://git.open-mesh.org/linux-merge.git batman-adv/maint
Pulled, thanks.
b.a.t.m.a.n@lists.open-mesh.org