Commit 9451ca1a authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

iwlwifi: build some station commands directly

In the powersave related functions we only need
to set a few parameters for the station command
and can otherwise leave it blank -- there's no
need to copy it from the database.

This allows us to not use the sta lock here.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 40e4e686
...@@ -1437,16 +1437,14 @@ int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta, ...@@ -1437,16 +1437,14 @@ int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta,
void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt) void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt)
{ {
unsigned long flags; struct iwl_addsta_cmd cmd = {
.mode = STA_CONTROL_MODIFY_MSK,
spin_lock_irqsave(&priv->shrd->sta_lock, flags); .station_flags = STA_FLG_PWR_SAVE_MSK,
priv->stations[sta_id].sta.station_flags |= STA_FLG_PWR_SAVE_MSK; .station_flags_msk = STA_FLG_PWR_SAVE_MSK,
priv->stations[sta_id].sta.station_flags_msk = STA_FLG_PWR_SAVE_MSK; .sta.sta_id = sta_id,
priv->stations[sta_id].sta.sta.modify_mask = .sta.modify_mask = STA_MODIFY_SLEEP_TX_COUNT_MSK,
STA_MODIFY_SLEEP_TX_COUNT_MSK; .sleep_tx_count = cpu_to_le16(cnt),
priv->stations[sta_id].sta.sleep_tx_count = cpu_to_le16(cnt); };
priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
spin_unlock_irqrestore(&priv->shrd->sta_lock, flags);
iwl_send_add_sta(priv, &cmd, CMD_ASYNC);
} }
...@@ -1505,17 +1505,13 @@ static int iwlagn_mac_sta_remove(struct ieee80211_hw *hw, ...@@ -1505,17 +1505,13 @@ static int iwlagn_mac_sta_remove(struct ieee80211_hw *hw,
static void iwl_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id) static void iwl_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id)
{ {
unsigned long flags; struct iwl_addsta_cmd cmd = {
.mode = STA_CONTROL_MODIFY_MSK,
spin_lock_irqsave(&priv->shrd->sta_lock, flags); .station_flags_msk = STA_FLG_PWR_SAVE_MSK,
priv->stations[sta_id].sta.station_flags &= ~STA_FLG_PWR_SAVE_MSK; .sta.sta_id = sta_id,
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.sleep_tx_count = 0;
priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
spin_unlock_irqrestore(&priv->shrd->sta_lock, flags);
iwl_send_add_sta(priv, &cmd, CMD_ASYNC);
} }
static void iwlagn_mac_sta_notify(struct ieee80211_hw *hw, static void iwlagn_mac_sta_notify(struct ieee80211_hw *hw,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment