aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qca.qualcomm.com>2013-12-24 00:14:26 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-01-03 15:36:58 -0500
commit0c75997758d865b666a53b5cffcf7d9b9018d3f9 (patch)
tree0ac23bafb418acf8469e1f295c310a11861f5af5 /drivers/net
parent415ec61b66198f93962b76107f3324571475a3e2 (diff)
ath9k: Process BB watchdog events in the tasklet
Move the BB processing code to the tasklet and avoid doing it in the ISR, there is no real benefit and this makes the ISR less heavy. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 39d3af410834..0d730804c47d 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -457,6 +457,11 @@ void ath9k_tasklet(unsigned long data)
457 457
458 if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) && 458 if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) &&
459 (status & ATH9K_INT_BB_WATCHDOG)) { 459 (status & ATH9K_INT_BB_WATCHDOG)) {
460 spin_lock(&common->cc_lock);
461 ath_hw_cycle_counters_update(common);
462 ar9003_hw_bb_watchdog_dbg_info(ah);
463 spin_unlock(&common->cc_lock);
464
460 if (ar9003_hw_bb_watchdog_check(ah)) { 465 if (ar9003_hw_bb_watchdog_check(ah)) {
461 type = RESET_TYPE_BB_WATCHDOG; 466 type = RESET_TYPE_BB_WATCHDOG;
462 ath9k_queue_reset(sc, type); 467 ath9k_queue_reset(sc, type);
@@ -593,15 +598,8 @@ irqreturn_t ath_isr(int irq, void *dev)
593 goto chip_reset; 598 goto chip_reset;
594 599
595 if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) && 600 if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) &&
596 (status & ATH9K_INT_BB_WATCHDOG)) { 601 (status & ATH9K_INT_BB_WATCHDOG))
597
598 spin_lock(&common->cc_lock);
599 ath_hw_cycle_counters_update(common);
600 ar9003_hw_bb_watchdog_dbg_info(ah);
601 spin_unlock(&common->cc_lock);
602
603 goto chip_reset; 602 goto chip_reset;
604 }
605 603
606#ifdef CONFIG_ATH9K_WOW 604#ifdef CONFIG_ATH9K_WOW
607 if (status & ATH9K_INT_BMISS) { 605 if (status & ATH9K_INT_BMISS) {