aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-3945-rs.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945-rs.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
index bb91353c443e..c25daec4f93d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
@@ -826,13 +826,12 @@ void iwl3945_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)
826 rcu_read_lock(); 826 rcu_read_lock();
827 827
828 sta = ieee80211_find_sta(hw, priv->stations[sta_id].sta.sta.addr); 828 sta = ieee80211_find_sta(hw, priv->stations[sta_id].sta.sta.addr);
829 psta = (void *) sta->drv_priv; 829 if (!sta) {
830 if (!sta || !psta) {
831 IWL_DEBUG_RATE("leave - no private rate data!\n");
832 rcu_read_unlock(); 830 rcu_read_unlock();
833 return; 831 return;
834 } 832 }
835 833
834 psta = (void *) sta->drv_priv;
836 rs_sta = psta->rs_sta; 835 rs_sta = psta->rs_sta;
837 836
838 spin_lock_irqsave(&rs_sta->lock, flags); 837 spin_lock_irqsave(&rs_sta->lock, flags);
@@ -856,7 +855,6 @@ void iwl3945_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)
856 break; 855 break;
857 } 856 }
858 857
859 rcu_read_unlock();
860 spin_unlock_irqrestore(&rs_sta->lock, flags); 858 spin_unlock_irqrestore(&rs_sta->lock, flags);
861 859
862 rssi = priv->last_rx_rssi; 860 rssi = priv->last_rx_rssi;
@@ -870,6 +868,7 @@ void iwl3945_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)
870 IWL_DEBUG_RATE("leave: rssi %d assign rate index: " 868 IWL_DEBUG_RATE("leave: rssi %d assign rate index: "
871 "%d (plcp 0x%x)\n", rssi, rs_sta->start_rate, 869 "%d (plcp 0x%x)\n", rssi, rs_sta->start_rate,
872 iwl3945_rates[rs_sta->start_rate].plcp); 870 iwl3945_rates[rs_sta->start_rate].plcp);
871 rcu_read_unlock();
873} 872}
874 873
875int iwl3945_rate_control_register(void) 874int iwl3945_rate_control_register(void)