mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 19:14:30 +08:00
rtlwifi: Fix incorrect return of IRQ_HANDLED
The recent discussion regarding an incorrect return of IRQ_HANDLED from rt2800pci caused me to look at this PCI interrupt routine. I discovered that changes were needed. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
bc192f8918
commit
de2e56cea2
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user