--- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -5484,6 +5484,9 @@ ath_beacon_dturbo_config(vap, intval & ~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA)); #endif + if ((nexttbtt & HAL_BEACON_PERIOD) - (ath_hal_gettsf32(ah) >> 10) + <= ath_hal_sw_beacon_response_time) + nexttbtt += intval; sc->sc_nexttbtt = nexttbtt; ath_hal_beaconinit(ah, nexttbtt, intval); if (intval & HAL_BEACON_RESET_TSF) { --- a/ath_hal/ah_os.c +++ b/ath_hal/ah_os.c @@ -71,6 +71,7 @@ int ath_hal_dma_beacon_response_time = 2; /* in TUs */ int ath_hal_sw_beacon_response_time = 10; /* in TUs */ int ath_hal_additional_swba_backoff = 0; /* in TUs */ +EXPORT_SYMBOL(ath_hal_sw_beacon_response_time); struct ath_hal * _ath_hal_attach(u_int16_t devid, HAL_SOFTC sc,