diff options
author | Senthil Balasubramanian <senthilkumar@atheros.com> | 2011-04-22 10:02:11 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-25 22:50:18 +0400 |
commit | 9eab61c2bff2f769ee771a7a9301fb720cec9b56 (patch) | |
tree | ccc0f1062cc4bf00148a880256fe3fca18be2472 /drivers/net/wireless/ath/ath9k/main.c | |
parent | 515139066928da040d1482f201ef1b769bc29aa0 (diff) | |
download | linux-9eab61c2bff2f769ee771a7a9301fb720cec9b56.tar.xz |
ath9k: cleanup hw pll work handler
There is no reason why pll work handler should be part of xmit
file. move it to main.c so that reading hw check routines are
all in the same place.
Signed-off-by: Senthil Balasubramanian <senthilkumar@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.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index dd2fffbbef2e..94d73c3f4458 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -624,6 +624,29 @@ out: ath9k_ps_restore(sc); } +void ath_hw_pll_work(struct work_struct *work) +{ + struct ath_softc *sc = container_of(work, struct ath_softc, + hw_pll_work.work); + static int count; + + if (AR_SREV_9485(sc->sc_ah)) { + if (ar9003_get_pll_sqsum_dvc(sc->sc_ah) >= 0x40000) { + count++; + + if (count == 3) { + /* Rx is hung for more than 500ms. Reset it */ + ath_reset(sc, true); + count = 0; + } + } else + count = 0; + + ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work, HZ/5); + } +} + + void ath9k_tasklet(unsigned long data) { struct ath_softc *sc = (struct ath_softc *)data; |