2011-04-24 00:34:40 +03:00
|
|
|
--- a/net/mac80211/main.c
|
|
|
|
+++ b/net/mac80211/main.c
|
2012-02-07 13:28:11 +02:00
|
|
|
@@ -197,7 +197,9 @@ void ieee80211_bss_info_change_notify(st
|
2011-04-24 00:34:40 +03:00
|
|
|
u32 changed)
|
|
|
|
{
|
|
|
|
struct ieee80211_local *local = sdata->local;
|
|
|
|
+ struct ieee80211_supported_band *sband;
|
|
|
|
static const u8 zero[ETH_ALEN] = { 0 };
|
|
|
|
+ struct sta_info *sta;
|
|
|
|
|
|
|
|
if (!changed)
|
|
|
|
return;
|
2012-02-07 13:28:11 +02:00
|
|
|
@@ -219,6 +221,22 @@ void ieee80211_bss_info_change_notify(st
|
2011-04-24 00:34:40 +03:00
|
|
|
|
|
|
|
switch (sdata->vif.type) {
|
|
|
|
case NL80211_IFTYPE_AP:
|
|
|
|
+ if (!(changed & BSS_CHANGED_HT))
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
|
|
|
|
+ rcu_read_lock();
|
|
|
|
+ list_for_each_entry(sta, &local->sta_list, list) {
|
|
|
|
+ if (sta->sdata != sdata &&
|
|
|
|
+ (!sdata->bss || sta->sdata->bss != sdata->bss))
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
+ rate_control_rate_update(local, sband, sta,
|
|
|
|
+ IEEE80211_RC_HT_CHANGED,
|
|
|
|
+ local->_oper_channel_type);
|
|
|
|
+ }
|
|
|
|
+ rcu_read_unlock();
|
|
|
|
+ break;
|
|
|
|
case NL80211_IFTYPE_ADHOC:
|
|
|
|
case NL80211_IFTYPE_WDS:
|
|
|
|
case NL80211_IFTYPE_MESH_POINT:
|