forked from Minki/linux
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: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
40e4e6868c
commit
9451ca1a31
@ -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,
|
|||||||
|
|
||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user