aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2018-09-23 18:48:09 +0200
committerJohn Crispin <john@phrozen.org>2018-09-26 16:39:44 +0200
commitec684ce193be84b3c2a25f6a3cfcc91bf3d75bfd (patch)
tree7e87918db5f7681343817ef9a716359492b32039 /package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch
parentdb90c243a0b9bd72fc691cd09e58a96ac2a452cf (diff)
downloadupstream-ec684ce193be84b3c2a25f6a3cfcc91bf3d75bfd.tar.gz
upstream-ec684ce193be84b3c2a25f6a3cfcc91bf3d75bfd.tar.bz2
upstream-ec684ce193be84b3c2a25f6a3cfcc91bf3d75bfd.zip
mac80211: Add patches which were added later
These patches were added after the new matches structure for the mac80211 package was created. All the deleted patches are already integrated in kernel 4.19-rc4. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch')
-rw-r--r--package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch96
1 files changed, 0 insertions, 96 deletions
diff --git a/package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch b/package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch
deleted file mode 100644
index aa8db32e72..0000000000
--- a/package/kernel/mac80211/patches/391-mac80211-Fix-station-bandwidth-setting-after-channel.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From: Ilan Peer <ilan.peer@intel.com>
-Date: Fri, 31 Aug 2018 11:31:10 +0300
-Subject: [PATCH] mac80211: Fix station bandwidth setting after channel
- switch
-
-When performing a channel switch flow for a managed interface, the
-flow did not update the bandwidth of the AP station and the rate
-scale algorithm. In case of a channel width downgrade, this would
-result with the rate scale algorithm using a bandwidth that does not
-match the interface channel configuration.
-
-Fix this by updating the AP station bandwidth and rate scaling algorithm
-before the actual channel change in case of a bandwidth downgrade, or
-after the actual channel change in case of a bandwidth upgrade.
-
-Signed-off-by: Ilan Peer <ilan.peer@intel.com>
-Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-
---- a/net/mac80211/mlme.c
-+++ b/net/mac80211/mlme.c
-@@ -975,6 +975,10 @@ static void ieee80211_chswitch_work(stru
- */
-
- if (sdata->reserved_chanctx) {
-+ struct ieee80211_supported_band *sband = NULL;
-+ struct sta_info *mgd_sta = NULL;
-+ enum ieee80211_sta_rx_bandwidth bw = IEEE80211_STA_RX_BW_20;
-+
- /*
- * with multi-vif csa driver may call ieee80211_csa_finish()
- * many times while waiting for other interfaces to use their
-@@ -983,6 +987,48 @@ static void ieee80211_chswitch_work(stru
- if (sdata->reserved_ready)
- goto out;
-
-+ if (sdata->vif.bss_conf.chandef.width !=
-+ sdata->csa_chandef.width) {
-+ /*
-+ * For managed interface, we need to also update the AP
-+ * station bandwidth and align the rate scale algorithm
-+ * on the bandwidth change. Here we only consider the
-+ * bandwidth of the new channel definition (as channel
-+ * switch flow does not have the full HT/VHT/HE
-+ * information), assuming that if additional changes are
-+ * required they would be done as part of the processing
-+ * of the next beacon from the AP.
-+ */
-+ switch (sdata->csa_chandef.width) {
-+ case NL80211_CHAN_WIDTH_20_NOHT:
-+ case NL80211_CHAN_WIDTH_20:
-+ default:
-+ bw = IEEE80211_STA_RX_BW_20;
-+ break;
-+ case NL80211_CHAN_WIDTH_40:
-+ bw = IEEE80211_STA_RX_BW_40;
-+ break;
-+ case NL80211_CHAN_WIDTH_80:
-+ bw = IEEE80211_STA_RX_BW_80;
-+ break;
-+ case NL80211_CHAN_WIDTH_80P80:
-+ case NL80211_CHAN_WIDTH_160:
-+ bw = IEEE80211_STA_RX_BW_160;
-+ break;
-+ }
-+
-+ mgd_sta = sta_info_get(sdata, ifmgd->bssid);
-+ sband =
-+ local->hw.wiphy->bands[sdata->csa_chandef.chan->band];
-+ }
-+
-+ if (sdata->vif.bss_conf.chandef.width >
-+ sdata->csa_chandef.width) {
-+ mgd_sta->sta.bandwidth = bw;
-+ rate_control_rate_update(local, sband, mgd_sta,
-+ IEEE80211_RC_BW_CHANGED);
-+ }
-+
- ret = ieee80211_vif_use_reserved_context(sdata);
- if (ret) {
- sdata_info(sdata,
-@@ -993,6 +1039,13 @@ static void ieee80211_chswitch_work(stru
- goto out;
- }
-
-+ if (sdata->vif.bss_conf.chandef.width <
-+ sdata->csa_chandef.width) {
-+ mgd_sta->sta.bandwidth = bw;
-+ rate_control_rate_update(local, sband, mgd_sta,
-+ IEEE80211_RC_BW_CHANGED);
-+ }
-+
- goto out;
- }
-