aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2011-11-23 22:30:19 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-28 14:43:53 -0500
commitde2e56cea25c80f91a6c6699de40fb3fe8b2479d (patch)
tree960f8884a34c7ad34ff2866ebc080e7e7ab16e2b
parentbc192f8918ab8e41ba53b9ef881bc425ae92ed1b (diff)
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>
-rw-r--r--drivers/net/wireless/rtlwifi/pci.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
index b6683a247b51..91f0525364ea 100644
--- a/drivers/net/wireless/rtlwifi/pci.c
+++ b/drivers/net/wireless/rtlwifi/pci.c
@@ -780,6 +780,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
780 unsigned long flags; 780 unsigned long flags;
781 u32 inta = 0; 781 u32 inta = 0;
782 u32 intb = 0; 782 u32 intb = 0;
783 irqreturn_t ret = IRQ_HANDLED;
783 784
784 spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); 785 spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags);
785 786
@@ -787,8 +788,10 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
787 rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb); 788 rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb);
788 789
789 /*Shared IRQ or HW disappared */ 790 /*Shared IRQ or HW disappared */
790 if (!inta || inta == 0xffff) 791 if (!inta || inta == 0xffff) {
792 ret = IRQ_NONE;
791 goto done; 793 goto done;
794 }
792 795
793 /*<1> beacon related */ 796 /*<1> beacon related */
794 if (inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK]) { 797 if (inta & rtlpriv->cfg->maps[RTL_IMR_TBDOK]) {
@@ -892,7 +895,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
892 895
893done: 896done:
894 spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); 897 spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags);
895 return IRQ_HANDLED; 898 return ret;
896} 899}
897 900
898static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw) 901static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw)