From 4e1f633a68becea1ae04a78793a67f251ada9333 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 23 Apr 2011 21:34:40 +0000
Subject: mac80211: do rate control updates when the HT configuration changes
 on an interface

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26750 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../560-mac80211_ht_change_rate_update.patch       | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 package/mac80211/patches/560-mac80211_ht_change_rate_update.patch

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
index 000000000..bff6a6b8a
--- /dev/null
+++ b/package/mac80211/patches/560-mac80211_ht_change_rate_update.patch
@@ -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:
-- 
cgit v1.2.3