From 1761c46e7fc78147af944c83634ae77f9d578440 Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Fri, 16 Dec 2011 21:17:16 -0600 Subject: [PATCH] --- yaml --- r: 279335 b: refs/heads/master c: b9116b9a2b5db63187d28f99e038f473fad036dc h: refs/heads/master i: 279333: 586daa2c716425af19b819eb3757a9a29fb3d27e 279331: ac9c196089964dd26f8129e1fe40b6542e6a3f37 279327: ac443ca2d18d463081db353df2b6d99750456a6d v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rtlwifi/base.c | 1 + trunk/drivers/net/wireless/rtlwifi/ps.c | 5 +++-- trunk/drivers/net/wireless/rtlwifi/wifi.h | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f6b5a883b283..66109db5e3d7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f72ae31e6f0442936c23287d34500fb93b7ac7b8 +refs/heads/master: b9116b9a2b5db63187d28f99e038f473fad036dc diff --git a/trunk/drivers/net/wireless/rtlwifi/base.c b/trunk/drivers/net/wireless/rtlwifi/base.c index d81a6021a30f..7c1d82d8d71c 100644 --- a/trunk/drivers/net/wireless/rtlwifi/base.c +++ b/trunk/drivers/net/wireless/rtlwifi/base.c @@ -449,6 +449,7 @@ int rtl_init_core(struct ieee80211_hw *hw) /* <4> locks */ mutex_init(&rtlpriv->locks.conf_mutex); mutex_init(&rtlpriv->locks.ps_mutex); + spin_lock_init(&rtlpriv->locks.ips_lock); spin_lock_init(&rtlpriv->locks.irq_th_lock); spin_lock_init(&rtlpriv->locks.h2c_lock); spin_lock_init(&rtlpriv->locks.rf_ps_lock); diff --git a/trunk/drivers/net/wireless/rtlwifi/ps.c b/trunk/drivers/net/wireless/rtlwifi/ps.c index a14a68b24635..130fdd99d573 100644 --- a/trunk/drivers/net/wireless/rtlwifi/ps.c +++ b/trunk/drivers/net/wireless/rtlwifi/ps.c @@ -237,11 +237,12 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw) struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); enum rf_pwrstate rtstate; + unsigned long flags; if (mac->opmode != NL80211_IFTYPE_STATION) return; - mutex_lock(&rtlpriv->locks.ps_mutex); + spin_lock_irqsave(&rtlpriv->locks.ips_lock, flags); if (ppsc->inactiveps) { rtstate = ppsc->rfpwr_state; @@ -257,7 +258,7 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw) } } - mutex_unlock(&rtlpriv->locks.ps_mutex); + spin_unlock_irqrestore(&rtlpriv->locks.ips_lock, flags); } /*for FW LPS*/ diff --git a/trunk/drivers/net/wireless/rtlwifi/wifi.h b/trunk/drivers/net/wireless/rtlwifi/wifi.h index 085dccdbd1b6..115969df0c9e 100644 --- a/trunk/drivers/net/wireless/rtlwifi/wifi.h +++ b/trunk/drivers/net/wireless/rtlwifi/wifi.h @@ -1547,6 +1547,7 @@ struct rtl_locks { struct mutex ps_mutex; /*spin lock */ + spinlock_t ips_lock; spinlock_t irq_th_lock; spinlock_t h2c_lock; spinlock_t rf_ps_lock;