mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-11 20:06:44 +07:00
ath9k: Handle FATAL interrupts correctly
When a FATAL interrupt is received, a full chip reset is required, which is done in the main tasklet. But since the reset routine is scheduled as a work item, make sure that interrupts are not enabled in the tasklet before the reset is done. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
8a5b7ab36b
commit
c6cc47b101
@ -362,6 +362,13 @@ void ath9k_tasklet(unsigned long data)
|
||||
type = RESET_TYPE_BB_WATCHDOG;
|
||||
|
||||
ath9k_queue_reset(sc, type);
|
||||
|
||||
/*
|
||||
* Increment the ref. counter here so that
|
||||
* interrupts are enabled in the reset routine.
|
||||
*/
|
||||
atomic_inc(&ah->intr_ref_cnt);
|
||||
ath_dbg(common, ANY, "FATAL: Skipping interrupts\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -400,10 +407,9 @@ void ath9k_tasklet(unsigned long data)
|
||||
|
||||
ath9k_btcoex_handle_interrupt(sc, status);
|
||||
|
||||
out:
|
||||
/* re-enable hardware interrupt */
|
||||
ath9k_hw_enable_interrupts(ah);
|
||||
|
||||
out:
|
||||
spin_unlock(&sc->sc_pcu_lock);
|
||||
ath9k_ps_restore(sc);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user