diff options
author | Luis R. Rodriguez <lrodriguez@atheros.com> | 2010-05-13 13:33:44 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-02 16:13:00 -0400 |
commit | 08578b8f16ca551499c54f2cd229df3e58c8f381 (patch) | |
tree | fb44cbd61cdad7494a63fa6b35a3936e4f792162 /drivers/net/wireless/ath/ath9k/main.c | |
parent | aea702b70ae0964c16e17944e4a5ce2c2b038ced (diff) |
ath9k: enable the baseband watchdog events for AR9003
This enables the baseband watchdog events for the AR9003
family on ath9k. Upon an a baseband watchdog interrupt we reset
the hardware, this should address corner case conditions where
normal operation can stall. Enable ATH_DBG_RESET to be able
to review details of the bb watchdog interrupt once it happens.
If you're curious how often this happens just grep the debugfs
interrupt file.
Cc: Sam Ng <sam.ng@atheros.com>
Cc: Paul Shaw <paul.shaw@atheros.com>
Cc: Don Breslin <don.breslin@atheros.com>
Cc: Cliff Holden <cliff.holden@atheros.com
Signed-off-by: Luis R. Rodriguez <lrodriguez@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 | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index abfa0493236f..b98b2f2ed07d 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -520,6 +520,12 @@ irqreturn_t ath_isr(int irq, void *dev) | |||
520 | !(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA))) | 520 | !(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA))) |
521 | goto chip_reset; | 521 | goto chip_reset; |
522 | 522 | ||
523 | if ((ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) && | ||
524 | (status & ATH9K_INT_BB_WATCHDOG)) { | ||
525 | ar9003_hw_bb_watchdog_dbg_info(ah); | ||
526 | goto chip_reset; | ||
527 | } | ||
528 | |||
523 | if (status & ATH9K_INT_SWBA) | 529 | if (status & ATH9K_INT_SWBA) |
524 | tasklet_schedule(&sc->bcon_tasklet); | 530 | tasklet_schedule(&sc->bcon_tasklet); |
525 | 531 | ||
@@ -1195,7 +1201,9 @@ static int ath9k_start(struct ieee80211_hw *hw) | |||
1195 | ATH9K_INT_GLOBAL; | 1201 | ATH9K_INT_GLOBAL; |
1196 | 1202 | ||
1197 | if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) | 1203 | if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) |
1198 | ah->imask |= ATH9K_INT_RXHP | ATH9K_INT_RXLP; | 1204 | ah->imask |= ATH9K_INT_RXHP | |
1205 | ATH9K_INT_RXLP | | ||
1206 | ATH9K_INT_BB_WATCHDOG; | ||
1199 | else | 1207 | else |
1200 | ah->imask |= ATH9K_INT_RX; | 1208 | ah->imask |= ATH9K_INT_RX; |
1201 | 1209 | ||