diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/ps.c')
-rw-r--r-- | drivers/net/wireless/rtlwifi/ps.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c index a14a68b2463..130fdd99d57 100644 --- a/drivers/net/wireless/rtlwifi/ps.c +++ b/drivers/net/wireless/rtlwifi/ps.c | |||
@@ -237,11 +237,12 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw) | |||
237 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 237 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
238 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); | 238 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); |
239 | enum rf_pwrstate rtstate; | 239 | enum rf_pwrstate rtstate; |
240 | unsigned long flags; | ||
240 | 241 | ||
241 | if (mac->opmode != NL80211_IFTYPE_STATION) | 242 | if (mac->opmode != NL80211_IFTYPE_STATION) |
242 | return; | 243 | return; |
243 | 244 | ||
244 | mutex_lock(&rtlpriv->locks.ps_mutex); | 245 | spin_lock_irqsave(&rtlpriv->locks.ips_lock, flags); |
245 | 246 | ||
246 | if (ppsc->inactiveps) { | 247 | if (ppsc->inactiveps) { |
247 | rtstate = ppsc->rfpwr_state; | 248 | rtstate = ppsc->rfpwr_state; |
@@ -257,7 +258,7 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw) | |||
257 | } | 258 | } |
258 | } | 259 | } |
259 | 260 | ||
260 | mutex_unlock(&rtlpriv->locks.ps_mutex); | 261 | spin_unlock_irqrestore(&rtlpriv->locks.ips_lock, flags); |
261 | } | 262 | } |
262 | 263 | ||
263 | /*for FW LPS*/ | 264 | /*for FW LPS*/ |