ath9k_htc: Update HT configuration properly
Use BSS_CHANGED_HT to handle HT parameter changes. The rate information on the target has to be updated to handle changes in HT configuration. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0d425a7d7b
commit
2c76ef89b0
1 changed files with 30 additions and 0 deletions
|
@ -409,6 +409,33 @@ static void ath9k_htc_init_rate(struct ath9k_htc_priv *priv,
|
|||
sta->addr, be32_to_cpu(trate.capflags));
|
||||
}
|
||||
|
||||
static void ath9k_htc_update_rate(struct ath9k_htc_priv *priv,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *bss_conf)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(priv->ah);
|
||||
struct ath9k_htc_target_rate trate;
|
||||
struct ieee80211_sta *sta;
|
||||
int ret;
|
||||
|
||||
memset(&trate, 0, sizeof(struct ath9k_htc_target_rate));
|
||||
|
||||
rcu_read_lock();
|
||||
sta = ieee80211_find_sta(vif, bss_conf->bssid);
|
||||
if (!sta) {
|
||||
rcu_read_unlock();
|
||||
return;
|
||||
}
|
||||
ath9k_htc_setup_rate(priv, sta, &trate);
|
||||
rcu_read_unlock();
|
||||
|
||||
ret = ath9k_htc_send_rate_cmd(priv, &trate);
|
||||
if (!ret)
|
||||
ath_print(common, ATH_DBG_CONFIG,
|
||||
"Updated target sta: %pM, rate caps: 0x%X\n",
|
||||
bss_conf->bssid, be32_to_cpu(trate.capflags));
|
||||
}
|
||||
|
||||
static int ath9k_htc_aggr_oper(struct ath9k_htc_priv *priv,
|
||||
struct ieee80211_vif *vif,
|
||||
u8 *sta_addr, u8 tid, bool oper)
|
||||
|
@ -1595,6 +1622,9 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
|
|||
ath9k_hw_init_global_settings(ah);
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_HT)
|
||||
ath9k_htc_update_rate(priv, vif, bss_conf);
|
||||
|
||||
ath9k_htc_ps_restore(priv);
|
||||
mutex_unlock(&priv->mutex);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue