mac80211: do rate control updates when the HT configuration changes on an interface
authorFelix Fietkau <nbd@openwrt.org>
Sat, 23 Apr 2011 21:34:40 +0000 (21:34 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 23 Apr 2011 21:34:40 +0000 (21:34 +0000)
SVN-Revision: 26750

package/mac80211/patches/560-mac80211_ht_change_rate_update.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/560-mac80211_ht_change_rate_update.patch b/package/mac80211/patches/560-mac80211_ht_change_rate_update.patch
new file mode 100644 (file)
index 0000000..bff6a6b
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -245,7 +245,9 @@ void ieee80211_bss_info_change_notify(st
+                                     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;
+@@ -275,6 +277,22 @@ void ieee80211_bss_info_change_notify(st
+       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: