From: Marek Lindner Date: Thu, 29 Sep 2011 10:18:17 +0000 (+0000) Subject: batman-adv: fix upstream latency bug X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e55baf7f63b46f4892f1f4eb294635e229f6bbf7;p=openwrt%2Fsvn-archive%2Fpackages.git batman-adv: fix upstream latency bug Signed-off-by: Marek Lindner SVN-Revision: 28315 --- diff --git a/net/batman-adv/Makefile b/net/batman-adv/Makefile index f09c88397..0df2ede97 100644 --- a/net/batman-adv/Makefile +++ b/net/batman-adv/Makefile @@ -78,10 +78,11 @@ PATCH_BATCTL = $(call Build/DoPatch,"$(PKG_BATCTL_BUILD_DIR)","$(PATCH_DIR)","*b BUILD_BATCTL = $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_BATCTL_ARGS) endif +KPATCH ?= $(PATCH) define Build/DoPatch @if [ -d "$(2)" ]; then \ if [ "$$$$(ls $(2) | grep -Ec $(3))" -gt 0 ]; then \ - $(PATCH) "$(1)" "$(2)" "$(3)"; \ + $(KPATCH) "$(1)" "$(2)" "$(3)"; \ fi; \ fi endef diff --git a/net/batman-adv/patches/batman-adv_do_bcast_has_to_be_true_for_broadcast_packets_only.patch b/net/batman-adv/patches/batman-adv_do_bcast_has_to_be_true_for_broadcast_packets_only.patch new file mode 100644 index 000000000..12d0a6a85 --- /dev/null +++ b/net/batman-adv/patches/batman-adv_do_bcast_has_to_be_true_for_broadcast_packets_only.patch @@ -0,0 +1,49 @@ +From: Antonio Quartulli + +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 +Signed-off-by: Marek Lindner +--- + soft-interface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/soft-interface.c ++++ b/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 */ +-- +1.7.5.4 +