| From 330bb7117101099c687e9c7f13d48068670b9c62 Mon Sep 17 00:00:00 2001 |
| From: Larry Finger <Larry.Finger@lwfinger.net> |
| Date: Mon, 11 Nov 2019 13:40:46 -0600 |
| Subject: rtlwifi: rtl8192de: Fix missing enable interrupt flag |
| |
| From: Larry Finger <Larry.Finger@lwfinger.net> |
| |
| commit 330bb7117101099c687e9c7f13d48068670b9c62 upstream. |
| |
| In commit 38506ecefab9 ("rtlwifi: rtl_pci: Start modification for |
| new drivers"), the flag that indicates that interrupts are enabled was |
| never set. |
| |
| In addition, there are several places when enable/disable interrupts |
| were commented out are restored. A sychronize_interrupts() call is |
| removed. |
| |
| Fixes: 38506ecefab9 ("rtlwifi: rtl_pci: Start modification for new drivers") |
| Cc: Stable <stable@vger.kernel.org> # v3.18+ |
| Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/rtlwifi/rtl8192de/hw.c | 9 +++++---- |
| 1 file changed, 5 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/wireless/rtlwifi/rtl8192de/hw.c |
| +++ b/drivers/net/wireless/rtlwifi/rtl8192de/hw.c |
| @@ -1206,6 +1206,7 @@ void rtl92de_enable_interrupt(struct iee |
| |
| rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF); |
| rtl_write_dword(rtlpriv, REG_HIMRE, rtlpci->irq_mask[1] & 0xFFFFFFFF); |
| + rtlpci->irq_enabled = true; |
| } |
| |
| void rtl92de_disable_interrupt(struct ieee80211_hw *hw) |
| @@ -1215,7 +1216,7 @@ void rtl92de_disable_interrupt(struct ie |
| |
| rtl_write_dword(rtlpriv, REG_HIMR, IMR8190_DISABLED); |
| rtl_write_dword(rtlpriv, REG_HIMRE, IMR8190_DISABLED); |
| - synchronize_irq(rtlpci->pdev->irq); |
| + rtlpci->irq_enabled = false; |
| } |
| |
| static void _rtl92de_poweroff_adapter(struct ieee80211_hw *hw) |
| @@ -1386,7 +1387,7 @@ void rtl92de_set_beacon_related_register |
| |
| bcn_interval = mac->beacon_interval; |
| atim_window = 2; |
| - /*rtl92de_disable_interrupt(hw); */ |
| + rtl92de_disable_interrupt(hw); |
| rtl_write_word(rtlpriv, REG_ATIMWND, atim_window); |
| rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); |
| rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660f); |
| @@ -1406,9 +1407,9 @@ void rtl92de_set_beacon_interval(struct |
| |
| RT_TRACE(rtlpriv, COMP_BEACON, DBG_DMESG, |
| "beacon_interval:%d\n", bcn_interval); |
| - /* rtl92de_disable_interrupt(hw); */ |
| + rtl92de_disable_interrupt(hw); |
| rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); |
| - /* rtl92de_enable_interrupt(hw); */ |
| + rtl92de_enable_interrupt(hw); |
| } |
| |
| void rtl92de_update_interrupt_mask(struct ieee80211_hw *hw, |