> However when there is high traffic between two nodes A and B, sometimes the
> next hop of A and B changes to another address for a short time and the
> metric gets worse. After 2 – 3 seconds the original direct next hop returns.
>

There are two possibilities that I think of:
1. Node A does not receive direct PREP from node B.
2. Node B does not receive direct PREQ from node A
3. Node A received PREP from Node B via another hop which has better
metric than direct PREP from node B.

For 1 and 2, it may due to the link is terrible and packet are dropped.

For 3, you may look on reverting this patch and see how.

----
Chun-Yeow
From 5e919edf17f4a64815766bdb543b6e02521e15a9 Mon Sep 17 00:00:00 2001
From: Chun-Yeow Yeoh <[email protected]>
Date: Wed, 10 Jun 2015 21:20:51 +0800
Subject: [PATCH] Revert "mac80211: mesh: always use the latest target_sn"

This reverts commit bc3ce0b0be6b85e738e80ed25b52ad940f34b921.
---
 net/mac80211/mesh_hwmp.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index 214e63b..a33342b 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -543,10 +543,9 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata,
 		if (time_after(jiffies, ifmsh->last_sn_update +
 					net_traversal_jiffies(sdata)) ||
 		    time_before(jiffies, ifmsh->last_sn_update)) {
-			++ifmsh->sn;
+			target_sn = ++ifmsh->sn;
 			ifmsh->last_sn_update = jiffies;
 		}
-		target_sn = ifmsh->sn;
 	} else if (is_broadcast_ether_addr(target_addr) &&
 		   (target_flags & IEEE80211_PREQ_TO_FLAG)) {
 		rcu_read_lock();
-- 
2.3.0

_______________________________________________
Devel mailing list
[email protected]
http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel

Reply via email to