From: Javier Cardona <javier@cozybit.com>
Date: Thu, 12 Apr 2012 21:32:23 +0000 (-0700)
Subject: mac80211: Take into account TSF adjustment latency in Toffset setpoint
X-Git-Tag: firefly_0821_release~3680^2~2787^2~410^2~46
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ec14bcd20f5139a3dc42cfc34cdcebcbdc062c00;p=firefly-linux-kernel-4.4.55.git

mac80211: Take into account TSF adjustment latency in Toffset setpoint

When testing mesh synchronization we observed a global TSF slowdown that
was dependent on the number of synchronized mesh stations.  This seems
to be caused by the TSF adjustment (read/write) latency.

Adding a small margin to the Toffset setpoint solved the problem.

Signed-off-by: Shinichi Hotori <hotorinn@gmail.com>
Signed-off-by: Yu Niiro <yu.niiro@gmail.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

diff --git a/net/mac80211/mesh_sync.c b/net/mac80211/mesh_sync.c
index 22a5f1e66996..ff60d6bcc631 100644
--- a/net/mac80211/mesh_sync.c
+++ b/net/mac80211/mesh_sync.c
@@ -24,11 +24,17 @@
  */
 #define TOFFSET_MINIMUM_ADJUSTMENT 10
 
+/* This is not in the standard. It is a margin added to the
+ * Toffset setpoint to mitigate TSF overcorrection
+ * introduced by TSF adjustment latency.
+ */
+#define TOFFSET_SET_MARGIN 20
+
 /* This is not in the standard.  It represents the maximum Toffset jump above
  * which we'll invalidate the Toffset setpoint and choose a new setpoint.  This
  * could be, for instance, in case a neighbor is restarted and its TSF counter
  * reset.
- * */
+ */
 #define TOFFSET_MAXIMUM_ADJUSTMENT 30000		/* 30 ms */
 
 struct sync_method {