diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2013-12-24 00:14:24 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-01-03 15:36:57 -0500 |
commit | 6549a8606d0a6cc45d0984893c859a6161c227b7 (patch) | |
tree | f8c40887474d68c782bbc7de694062d20e34e824 /drivers/net/wireless | |
parent | d88527d3d3d6e3c46688878c7fc082ae42fa766e (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.c | 27 |
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 | /* |