summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/560-mac80211_ht_change_rate_update.patch
blob: bff6a6b8aa770f1a9f851ae57ec04ba3eaa0045b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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: