rtlwifi: rtl8821ae: Fix system lockups on boot
authorLarry Finger <Larry.Finger@lwfinger.net>
Fri, 2 Oct 2015 16:44:30 +0000 (11:44 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 3 Oct 2015 06:41:32 +0000 (09:41 +0300)
commit54328e64047a54b8fc2362c2e1f0fa16c90f739f
tree0f086a3ee5e83dc760930f641d0d3b000d174dbd
parent76d164f582150fd0259ec0fcbc485470bcd8033e
rtlwifi: rtl8821ae: Fix system lockups on boot

In commit 1277fa2ab2f9 ("rtlwifi: Remove the clear interrupt routine from all
drivers"), the code that cleared all interrupt enable bits before setting them
was removed for all PCI drivers. This fixed an issue that caused TX to be
blocked for 3-5 seconds. On some RTL8821AE units, this change causes soft
lockups to occur on boot. For that reason, the portion of the earlier commit
that applied to rtl8821ae is reverted. Kernels 4.1 and newer are affected.

See http://marc.info/?l=linux-wireless&m=144373370103285&w=2 and
https://bugzilla.opensuse.org/show_bug.cgi?id=944978 for two cases where
this regression affected user systems. Note that this bug does not appear on
any of the developer's setups. For those users whose systems are affected
by the TX blockage, but do not lock up on boot, a module parameter is added
to disable the interrupt clear

Fixes: 1277fa2ab2f9 ("rtlwifi: Remove the clear interrupt routine from all drivers")
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org> [V4.1+]
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/rtlwifi/pci.h
drivers/net/wireless/rtlwifi/rtl8821ae/hw.c
drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
drivers/net/wireless/rtlwifi/wifi.h