ath9k: Further fix for mesh beaconing
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 <fabricedeyber@agilemesh.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b942471bfc
commit
81168e509f
1 changed files with 3 additions and 12 deletions
|
@ -652,22 +652,13 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc,
|
|||
{
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
u32 tsf, delta, intval, nexttbtt;
|
||||
u32 tsf, intval, nexttbtt;
|
||||
|
||||
ath9k_reset_beacon_status(sc);
|
||||
|
||||
tsf = ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE);
|
||||
intval = TU_TO_USEC(conf->beacon_interval);
|
||||
|
||||
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",
|
||||
|
|
Loading…
Reference in a new issue