This fix ensure the timers to be set at beacon interval boundaries. Without
this change timers can be set improperly resulting in the absence of beacons.

Signed-off-by: Fabrice Deyber <fabricedey...@agilemesh.com>
---
 drivers/net/wireless/ath/ath9k/beacon.c |   15 +++------------
 1 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/beacon.c 
b/drivers/net/wireless/ath/ath9k/beacon.c
index d4d8cec..34675ae 100644
--- a/drivers/net/wireless/ath/ath9k/beacon.c
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
@@ -656,19 +656,10 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc,
 
        ath9k_reset_beacon_status(sc);
 
-       tsf = ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE);
        intval = TU_TO_USEC(conf->beacon_interval & ATH9K_BEACON_PERIOD);
-
-       if (!sc->beacon.bc_tstamp)
-               nexttbtt = tsf + intval;
-       else {
-               if (tsf > sc->beacon.bc_tstamp)
-                       delta = (tsf - sc->beacon.bc_tstamp);
-               else
-                       delta = (tsf + 1 + (~0U - sc->beacon.bc_tstamp));
-               nexttbtt = tsf + intval - (delta % intval);
-       }
-
+    tsf = roundup(ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE), intval);  
+    nexttbtt = tsf + intval;
+    
        ath_dbg(common, ATH_DBG_BEACON,
                "IBSS nexttbtt %u intval %u (%u)\n",
                nexttbtt, intval, conf->beacon_interval);
-- 
1.7.0.4

_______________________________________________
Devel mailing list
Devel@lists.open80211s.org
http://open80211s.com/mailman/listinfo/devel

Reply via email to