diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 15 |
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); |
1048 | exit: | ||
1049 | local_irq_restore(flags); | ||
1037 | return err; | 1050 | return err; |
1038 | } | 1051 | } |
1039 | 1052 | ||