diff options
author | Rajkumar Manoharan <rmanoharan@atheros.com> | 2011-05-06 08:57:47 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-05-10 15:54:45 -0400 |
commit | 4105f8075051b62816830c95de1ec17ceb364d09 (patch) | |
tree | 109f75ad81b23c2df24af5469314b160f93c17a9 /drivers/net/wireless/ath | |
parent | deb751880af6f2dce6cdc232a7b023f2b58cd815 (diff) |
ath9k: process TSF out of range before RX
Processing TSF out of range before RX helps to update beacon
timers so early in the succeeding rx process.
Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index c171d111ecf7..11d9eca8fb6e 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -689,6 +689,17 @@ void ath9k_tasklet(unsigned long data) | |||
689 | !ath9k_hw_check_alive(ah)) | 689 | !ath9k_hw_check_alive(ah)) |
690 | ieee80211_queue_work(sc->hw, &sc->hw_check_work); | 690 | ieee80211_queue_work(sc->hw, &sc->hw_check_work); |
691 | 691 | ||
692 | if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) { | ||
693 | /* | ||
694 | * TSF sync does not look correct; remain awake to sync with | ||
695 | * the next Beacon. | ||
696 | */ | ||
697 | ath_dbg(common, ATH_DBG_PS, | ||
698 | "TSFOOR - Sync with next Beacon\n"); | ||
699 | sc->ps_flags |= PS_WAIT_FOR_BEACON | PS_BEACON_SYNC | | ||
700 | PS_TSFOOR_SYNC; | ||
701 | } | ||
702 | |||
692 | if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) | 703 | if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) |
693 | rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL | | 704 | rxmask = (ATH9K_INT_RXHP | ATH9K_INT_RXLP | ATH9K_INT_RXEOL | |
694 | ATH9K_INT_RXORN); | 705 | ATH9K_INT_RXORN); |
@@ -711,17 +722,6 @@ void ath9k_tasklet(unsigned long data) | |||
711 | ath_tx_tasklet(sc); | 722 | ath_tx_tasklet(sc); |
712 | } | 723 | } |
713 | 724 | ||
714 | if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) { | ||
715 | /* | ||
716 | * TSF sync does not look correct; remain awake to sync with | ||
717 | * the next Beacon. | ||
718 | */ | ||
719 | ath_dbg(common, ATH_DBG_PS, | ||
720 | "TSFOOR - Sync with next Beacon\n"); | ||
721 | sc->ps_flags |= PS_WAIT_FOR_BEACON | PS_BEACON_SYNC | | ||
722 | PS_TSFOOR_SYNC; | ||
723 | } | ||
724 | |||
725 | if (ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) | 725 | if (ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) |
726 | if (status & ATH9K_INT_GENTIMER) | 726 | if (status & ATH9K_INT_GENTIMER) |
727 | ath_gen_timer_isr(sc->sc_ah); | 727 | ath_gen_timer_isr(sc->sc_ah); |