diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2011-11-23 22:30:19 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-11-28 14:43:53 -0500 |
commit | de2e56cea25c80f91a6c6699de40fb3fe8b2479d (patch) | |
tree | 960f8884a34c7ad34ff2866ebc080e7e7ab16e2b | |
parent | bc192f8918ab8e41ba53b9ef881bc425ae92ed1b (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.c | 7 |
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 | ||
893 | done: | 896 | done: |
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 | ||
898 | static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw) | 901 | static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw) |