aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qca.qualcomm.com>2013-12-24 00:14:24 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-01-03 15:36:57 -0500
commit6549a8606d0a6cc45d0984893c859a6161c227b7 (patch)
treef8c40887474d68c782bbc7de694062d20e34e824 /drivers/net/wireless
parentd88527d3d3d6e3c46688878c7fc082ae42fa766e (diff)
ath9k: Fix baseband watchdog reset
Do a HW reset only for required signatures. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 1fd69de79020..c19182b8dd03 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -448,14 +448,8 @@ void ath9k_tasklet(unsigned long data)
448 ath9k_ps_wakeup(sc); 448 ath9k_ps_wakeup(sc);
449 spin_lock(&sc->sc_pcu_lock); 449 spin_lock(&sc->sc_pcu_lock);
450 450
451 if ((status & ATH9K_INT_FATAL) || 451 if (status & ATH9K_INT_FATAL) {
452 (status & ATH9K_INT_BB_WATCHDOG)) { 452 type = RESET_TYPE_FATAL_INT;
453
454 if (status & ATH9K_INT_FATAL)
455 type = RESET_TYPE_FATAL_INT;
456 else
457 type = RESET_TYPE_BB_WATCHDOG;
458
459 ath9k_queue_reset(sc, type); 453 ath9k_queue_reset(sc, type);
460 454
461 /* 455 /*
@@ -467,6 +461,23 @@ void ath9k_tasklet(unsigned long data)
467 goto out; 461 goto out;
468 } 462 }
469 463
464 if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) &&
465 (status & ATH9K_INT_BB_WATCHDOG)) {
466 if (ar9003_hw_bb_watchdog_check(ah)) {
467 type = RESET_TYPE_BB_WATCHDOG;
468 ath9k_queue_reset(sc, type);
469
470 /*
471 * Increment the ref. counter here so that
472 * interrupts are enabled in the reset routine.
473 */
474 atomic_inc(&ah->intr_ref_cnt);
475 ath_dbg(common, ANY,
476 "BB_WATCHDOG: Skipping interrupts\n");
477 goto out;
478 }
479 }
480
470 spin_lock_irqsave(&sc->sc_pm_lock, flags); 481 spin_lock_irqsave(&sc->sc_pm_lock, flags);
471 if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) { 482 if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) {
472 /* 483 /*