diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-11-11 22:23:33 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-12-02 14:24:59 -0500 |
commit | bf3dac5a6fcf33a80c99e7b7406f8e5af99e2a70 (patch) | |
tree | 79b2b90a70f3c06eaf5bac8f78aa232da284a9a0 /drivers/net/wireless/ath/ath9k/init.c | |
parent | f28c785f37a977cfd5879f4bfec99838053373f8 (diff) | |
download | blackbird-op-linux-bf3dac5a6fcf33a80c99e7b7406f8e5af99e2a70.tar.gz blackbird-op-linux-bf3dac5a6fcf33a80c99e7b7406f8e5af99e2a70.zip |
ath9k: use a timer to put hardware into full sleep
When operating in client mode, the short period of time between scanning
and associating is often enough to put the hardware through several
FULL-SLEEP <-> AWAKE transitions, each wakeup requiring a reset to fully
recover the hardware.
This is completely unnecessary and can easily be avoided by deferring
the switch to full sleep.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/init.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index fb55302c958d..65a2add3b676 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c @@ -738,6 +738,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, tasklet_init(&sc->bcon_tasklet, ath9k_beacon_tasklet, (unsigned long)sc); + setup_timer(&sc->sleep_timer, ath_ps_full_sleep, (unsigned long)sc); INIT_WORK(&sc->hw_reset_work, ath_reset_work); INIT_WORK(&sc->hw_check_work, ath_hw_check); INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); @@ -1049,6 +1050,7 @@ static void ath9k_deinit_softc(struct ath_softc *sc) if (ATH_TXQ_SETUP(sc, i)) ath_tx_cleanupq(sc, &sc->tx.txq[i]); + del_timer_sync(&sc->sleep_timer); ath9k_hw_deinit(sc->sc_ah); if (sc->dfs_detector != NULL) sc->dfs_detector->exit(sc->dfs_detector); |