batman-adv: fix upstream latency bug
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> git-svn-id: svn://svn.openwrt.org/openwrt/packages@28315 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
9b2795b461
commit
d3ddd45994
@ -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
|
||||
|
@ -0,0 +1,49 @@
|
||||
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>
|
||||
---
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user