mac80211: Take into account TSF adjustment latency in Toffset setpoint
authorJavier Cardona <javier@cozybit.com>
Thu, 12 Apr 2012 21:32:23 +0000 (14:32 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Apr 2012 18:19:29 +0000 (14:19 -0400)
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>
net/mac80211/mesh_sync.c

index 22a5f1e66996cc3bf6761c75a8f00e7e02d3d57d..ff60d6bcc63164b224ad59400ca29c83a3359fdf 100644 (file)
  */
 #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 {