ath9k: Use TSFOOR interrupt to trigger TSF sync with next Beacon
If the chip complains about TSF sync, make sure we remain awake to sync with the next Beacon frame. In theory, this should not be needed since we are currently trying to receive all Beacon frames, anyway, better have this code ready should we ever change that. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
1ffc1c61bd
Коммит
54ce846e2c
|
@ -480,6 +480,16 @@ static void ath9k_tasklet(unsigned long data)
|
||||||
if (status & ATH9K_INT_TX)
|
if (status & ATH9K_INT_TX)
|
||||||
ath_tx_tasklet(sc);
|
ath_tx_tasklet(sc);
|
||||||
|
|
||||||
|
if ((status & ATH9K_INT_TSFOOR) &&
|
||||||
|
(sc->hw->conf.flags & IEEE80211_CONF_PS)) {
|
||||||
|
/*
|
||||||
|
* TSF sync does not look correct; remain awake to sync with
|
||||||
|
* the next Beacon.
|
||||||
|
*/
|
||||||
|
DPRINTF(sc, ATH_DBG_PS, "TSFOOR - Sync with next Beacon\n");
|
||||||
|
sc->sc_flags |= SC_OP_WAIT_FOR_BEACON;
|
||||||
|
}
|
||||||
|
|
||||||
/* re-enable hardware interrupt */
|
/* re-enable hardware interrupt */
|
||||||
ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
|
ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
|
||||||
ath9k_ps_restore(sc);
|
ath9k_ps_restore(sc);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче