aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/rtl8192cu
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2014-03-04 17:53:50 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-03-06 14:29:56 -0500
commita53268be0cb9763f11da4f6fe3fb924cbe3a7d4a (patch)
tree132fc28bd44538e7080a5977dc5d5257d9e6a69d /drivers/net/wireless/rtlwifi/rtl8192cu
parent1bae2ae3647393b8ce185135ef0854486ce5a4c2 (diff)
rtlwifi: rtl8192cu: Fix too long disable of IRQs
In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi: rtl8192ce: Fix too long disable of IRQs", Olivier Langlois <olivier@trillion01.com> fixed a problem caused by an extra long disabling of interrupts. This patch makes the same fix for rtl8192cu. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Stable <stable@vger.kernel.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8192cu')
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192cu/hw.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
index db7df7f83a02..68b5c7e92cfb 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
@@ -985,6 +985,17 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
985 struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); 985 struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
986 int err = 0; 986 int err = 0;
987 static bool iqk_initialized; 987 static bool iqk_initialized;
988 unsigned long flags;
989
990 /* As this function can take a very long time (up to 350 ms)
991 * and can be called with irqs disabled, reenable the irqs
992 * to let the other devices continue being serviced.
993 *
994 * It is safe doing so since our own interrupts will only be enabled
995 * in a subsequent step.
996 */
997 local_save_flags(flags);
998 local_irq_enable();
988 999
989 rtlhal->hw_type = HARDWARE_TYPE_RTL8192CU; 1000 rtlhal->hw_type = HARDWARE_TYPE_RTL8192CU;
990 err = _rtl92cu_init_mac(hw); 1001 err = _rtl92cu_init_mac(hw);
@@ -997,7 +1008,7 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
997 RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, 1008 RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
998 "Failed to download FW. Init HW without FW now..\n"); 1009 "Failed to download FW. Init HW without FW now..\n");
999 err = 1; 1010 err = 1;
1000 return err; 1011 goto exit;
1001 } 1012 }
1002 rtlhal->last_hmeboxnum = 0; /* h2c */ 1013 rtlhal->last_hmeboxnum = 0; /* h2c */
1003 _rtl92cu_phy_param_tab_init(hw); 1014 _rtl92cu_phy_param_tab_init(hw);
@@ -1034,6 +1045,8 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
1034 _InitPABias(hw); 1045 _InitPABias(hw);
1035 _update_mac_setting(hw); 1046 _update_mac_setting(hw);
1036 rtl92c_dm_init(hw); 1047 rtl92c_dm_init(hw);
1048exit:
1049 local_irq_restore(flags);
1037 return err; 1050 return err;
1038} 1051}
1039 1052