aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/main.c
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2009-05-19 10:01:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-05-20 14:46:33 -0400
commit54ce846e2c5ade77bc6650d8e8c7e775e01ad859 (patch)
treea328ee0be7e0df7fabfb5e82a0cd967919192a58 /drivers/net/wireless/ath/ath9k/main.c
parent1ffc1c61bdbe31105d99d65043bbf7ae6d24dbc7 (diff)
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>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index dd54fa727a61..d2ef9732c1d9 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -480,6 +480,16 @@ static void ath9k_tasklet(unsigned long data)
480 if (status & ATH9K_INT_TX) 480 if (status & ATH9K_INT_TX)
481 ath_tx_tasklet(sc); 481 ath_tx_tasklet(sc);
482 482
483 if ((status & ATH9K_INT_TSFOOR) &&
484 (sc->hw->conf.flags & IEEE80211_CONF_PS)) {
485 /*
486 * TSF sync does not look correct; remain awake to sync with
487 * the next Beacon.
488 */
489 DPRINTF(sc, ATH_DBG_PS, "TSFOOR - Sync with next Beacon\n");
490 sc->sc_flags |= SC_OP_WAIT_FOR_BEACON;
491 }
492
483 /* re-enable hardware interrupt */ 493 /* re-enable hardware interrupt */
484 ath9k_hw_set_interrupts(sc->sc_ah, sc->imask); 494 ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
485 ath9k_ps_restore(sc); 495 ath9k_ps_restore(sc);