ath9k: fix enabling interrupts after a hardware error interrupt
The interrupt handler increases the interrupt disable refcount, so the tasklet needs to always call ath9k_hw_enable_interrupts. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
c5d2593bad
commit
e392700741
@ -669,15 +669,15 @@ void ath9k_tasklet(unsigned long data)
|
||||
u32 status = sc->intrstatus;
|
||||
u32 rxmask;
|
||||
|
||||
ath9k_ps_wakeup(sc);
|
||||
spin_lock(&sc->sc_pcu_lock);
|
||||
|
||||
if ((status & ATH9K_INT_FATAL) ||
|
||||
(status & ATH9K_INT_BB_WATCHDOG)) {
|
||||
ieee80211_queue_work(sc->hw, &sc->hw_reset_work);
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ath9k_ps_wakeup(sc);
|
||||
spin_lock(&sc->sc_pcu_lock);
|
||||
|
||||
/*
|
||||
* Only run the baseband hang check if beacons stop working in AP or
|
||||
* IBSS mode, because it has a high false positive rate. For station
|
||||
@ -725,6 +725,7 @@ void ath9k_tasklet(unsigned long data)
|
||||
if (status & ATH9K_INT_GENTIMER)
|
||||
ath_gen_timer_isr(sc->sc_ah);
|
||||
|
||||
out:
|
||||
/* re-enable hardware interrupt */
|
||||
ath9k_hw_enable_interrupts(ah);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user