rtlwifi: Don't block interrupts in spinlocks
Now power state transitions are not called from an interrupt context, there's no need to block interrupts. This code appears to block interrupts for too long, causing my trackpad to lose sync occasionally. Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
67fc6052a4
commit
312d5479dc
@@ -180,19 +180,18 @@ u32 rtl92s_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
u32 original_value, readback_value, bitshift;
|
||||
unsigned long flags;
|
||||
|
||||
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), rfpath(%#x), "
|
||||
"bitmask(%#x)\n", regaddr, rfpath, bitmask));
|
||||
|
||||
spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags);
|
||||
spin_lock(&rtlpriv->locks.rf_lock);
|
||||
|
||||
original_value = _rtl92s_phy_rf_serial_read(hw, rfpath, regaddr);
|
||||
|
||||
bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
|
||||
readback_value = (original_value & bitmask) >> bitshift;
|
||||
|
||||
spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags);
|
||||
spin_unlock(&rtlpriv->locks.rf_lock);
|
||||
|
||||
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), rfpath(%#x), "
|
||||
"bitmask(%#x), original_value(%#x)\n", regaddr, rfpath,
|
||||
@@ -207,7 +206,6 @@ void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_phy *rtlphy = &(rtlpriv->phy);
|
||||
u32 original_value, bitshift;
|
||||
unsigned long flags;
|
||||
|
||||
if (!((rtlphy->rf_pathmap >> rfpath) & 0x1))
|
||||
return;
|
||||
@@ -215,7 +213,7 @@ void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
|
||||
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x),"
|
||||
" data(%#x), rfpath(%#x)\n", regaddr, bitmask, data, rfpath));
|
||||
|
||||
spin_lock_irqsave(&rtlpriv->locks.rf_lock, flags);
|
||||
spin_lock(&rtlpriv->locks.rf_lock);
|
||||
|
||||
if (bitmask != RFREG_OFFSET_MASK) {
|
||||
original_value = _rtl92s_phy_rf_serial_read(hw, rfpath,
|
||||
@@ -226,7 +224,7 @@ void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
|
||||
|
||||
_rtl92s_phy_rf_serial_write(hw, rfpath, regaddr, data);
|
||||
|
||||
spin_unlock_irqrestore(&rtlpriv->locks.rf_lock, flags);
|
||||
spin_unlock(&rtlpriv->locks.rf_lock);
|
||||
|
||||
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x), "
|
||||
"data(%#x), rfpath(%#x)\n", regaddr, bitmask, data, rfpath));
|
||||
|
Reference in New Issue
Block a user