From 1c3126eaf013dabe8b6f52cd789741a3c6d73554 Mon Sep 17 00:00:00 2001 From: Zhu Yi Date: Mon, 20 Aug 2007 09:49:26 +0800 Subject: [PATCH 09/31] iwlwifi: replace lock_flags into simpler flags Signed-off-by: Zhu Yi --- drivers/net/wireless/iwl-4965.c | 33 +++++++++++++++++++-------------- drivers/net/wireless/iwl-base.c | 4 ++-- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c index c09db49..9018120 100644 --- a/drivers/net/wireless/iwl-4965.c +++ b/drivers/net/wireless/iwl-4965.c @@ -203,6 +203,7 @@ static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max) if (!pwr_max) { u32 val; + rc = pci_read_config_dword(priv->pci_dev, PCI_POWER_SOURCE, &val); @@ -3724,14 +3725,15 @@ static int parse_elems(u8 *start, size_t len, struct ieee802_11_elems *elems) static void iwl4965_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id) { - unsigned long lock_flags; - spin_lock_irqsave(&priv->sta_lock, lock_flags); + unsigned long flags; + + spin_lock_irqsave(&priv->sta_lock, flags); priv->stations[sta_id].sta.station_flags &= ~STA_FLG_PWR_SAVE_MSK; priv->stations[sta_id].sta.station_flags_msk = STA_FLG_PWR_SAVE_MSK; priv->stations[sta_id].sta.sta.modify_mask = 0; priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; - spin_unlock_irqrestore(&priv->sta_lock, lock_flags); - /* assuming we are in rx flow and the lock is already locked */ + spin_unlock_irqrestore(&priv->sta_lock, flags); + iwl_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); } @@ -3739,9 +3741,11 @@ static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr) { /* FIXME: need locking over ps_status ??? */ u8 sta_id = iwl_hw_find_station(priv, addr); + if (sta_id != IWL_INVALID_STATION) { u8 sta_awake = priv->stations[sta_id]. ps_status == STA_PS_STATUS_WAKE; + if (sta_awake && ps_bit) priv->stations[sta_id].ps_status = STA_PS_STATUS_SLEEP; else if (!sta_awake && !ps_bit) { @@ -3749,7 +3753,6 @@ static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr) priv->stations[sta_id].ps_status = STA_PS_STATUS_WAKE; } } - } /* Called for REPLY_4965_RX (legacy ABG frames), or @@ -4059,13 +4062,13 @@ static void iwl4965_set_tx_status(struct iwl_priv *priv, int txq_id, int idx, static void iwl_sta_modify_enable_tid_tx(struct iwl_priv *priv, int sta_id, int tid) { - unsigned long lock_flags; + unsigned long flags; - spin_lock_irqsave(&priv->sta_lock, lock_flags); + spin_lock_irqsave(&priv->sta_lock, flags); priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_TID_DISABLE_TX; priv->stations[sta_id].sta.tid_disable_tx &= cpu_to_le16(~(1 << tid)); priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; - spin_unlock_irqrestore(&priv->sta_lock, lock_flags); + spin_unlock_irqrestore(&priv->sta_lock, flags); iwl_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); } @@ -4517,29 +4520,31 @@ void iwl4965_set_ht_add_station(struct iwl_priv *priv, u8 index) static void iwl4965_sta_modify_add_ba_tid(struct iwl_priv *priv, int sta_id, int tid, u16 ssn) { - unsigned long lock_flags; + unsigned long flags; - spin_lock_irqsave(&priv->sta_lock, lock_flags); + spin_lock_irqsave(&priv->sta_lock, flags); priv->stations[sta_id].sta.station_flags_msk = 0; priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_ADDBA_TID_MSK; priv->stations[sta_id].sta.add_immediate_ba_tid = (u8)tid; priv->stations[sta_id].sta.add_immediate_ba_ssn = cpu_to_le16(ssn); priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; - spin_unlock_irqrestore(&priv->sta_lock, lock_flags); + spin_unlock_irqrestore(&priv->sta_lock, flags); + iwl_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); } static void iwl4965_sta_modify_del_ba_tid(struct iwl_priv *priv, int sta_id, int tid) { - unsigned long lock_flags; + unsigned long flags; - spin_lock_irqsave(&priv->sta_lock, lock_flags); + spin_lock_irqsave(&priv->sta_lock, flags); priv->stations[sta_id].sta.station_flags_msk = 0; priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_DELBA_TID_MSK; priv->stations[sta_id].sta.remove_immediate_ba_tid = (u8)tid; priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; - spin_unlock_irqrestore(&priv->sta_lock, lock_flags); + spin_unlock_irqrestore(&priv->sta_lock, flags); + iwl_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC); } diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c index 428ca60..c905057 100644 --- a/drivers/net/wireless/iwl-base.c +++ b/drivers/net/wireless/iwl-base.c @@ -7811,9 +7811,9 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id, * to verify) - jpk */ memcpy(priv->bssid, conf->bssid, ETH_ALEN); - if (priv->iw_mode == IEEE80211_IF_TYPE_AP) { + if (priv->iw_mode == IEEE80211_IF_TYPE_AP) iwl_config_ap(priv); - } else { + else { priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK; rc = iwl_commit_rxon(priv); -- 1.5.2