| 1 | --- a/net/mac80211/main.c |
| 2 | +++ b/net/mac80211/main.c |
| 3 | @@ -197,7 +197,9 @@ void ieee80211_bss_info_change_notify(st |
| 4 | u32 changed) |
| 5 | { |
| 6 | struct ieee80211_local *local = sdata->local; |
| 7 | + struct ieee80211_supported_band *sband; |
| 8 | static const u8 zero[ETH_ALEN] = { 0 }; |
| 9 | + struct sta_info *sta; |
| 10 | |
| 11 | if (!changed) |
| 12 | return; |
| 13 | @@ -219,6 +221,22 @@ void ieee80211_bss_info_change_notify(st |
| 14 | |
| 15 | switch (sdata->vif.type) { |
| 16 | case NL80211_IFTYPE_AP: |
| 17 | + if (!(changed & BSS_CHANGED_HT)) |
| 18 | + break; |
| 19 | + |
| 20 | + sband = local->hw.wiphy->bands[local->hw.conf.channel->band]; |
| 21 | + rcu_read_lock(); |
| 22 | + list_for_each_entry(sta, &local->sta_list, list) { |
| 23 | + if (sta->sdata != sdata && |
| 24 | + (!sdata->bss || sta->sdata->bss != sdata->bss)) |
| 25 | + continue; |
| 26 | + |
| 27 | + rate_control_rate_update(local, sband, sta, |
| 28 | + IEEE80211_RC_HT_CHANGED, |
| 29 | + local->_oper_channel_type); |
| 30 | + } |
| 31 | + rcu_read_unlock(); |
| 32 | + break; |
| 33 | case NL80211_IFTYPE_ADHOC: |
| 34 | case NL80211_IFTYPE_WDS: |
| 35 | case NL80211_IFTYPE_MESH_POINT: |
| 36 | |