|
@@ -780,6 +780,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
|
|
|
unsigned long flags;
|
|
|
u32 inta = 0;
|
|
|
u32 intb = 0;
|
|
|
+ irqreturn_t ret = IRQ_HANDLED;
|
|
|
|
|
|
spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags);
|
|
|
|
|
@@ -787,8 +788,10 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
|
|
|
rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb);
|
|
|
|
|
|
/*Shared IRQ or HW disappared */
|
|
|
- if (!inta || inta == 0xffff)
|
|
|
+ if (!inta || inta == 0xffff) {
|
|
|
+ ret = IRQ_NONE;
|
|
|
goto done;
|
|
|
+ }
|
|
|
|
|
|
/*<1> beacon related */
|
|
|
if (inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK]) {
|
|
@@ -892,7 +895,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
|
|
|
|
|
|
done:
|
|
|
spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags);
|
|
|
- return IRQ_HANDLED;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw)
|