summaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2024-05-06 21:54:50 +0200
committerJohannes Berg <johannes.berg@intel.com>2024-05-23 11:28:54 +0200
commitf81747a9ad2e773ee72d881717e859a9f7a01c76 (patch)
tree33d95c3a1b49d3457ddd1735f3c2f6f732279c7c /net/mac80211/mlme.c
parent344d18cec23142b3921e068a90f58e8fc5f7637a (diff)
downloadlinux-f81747a9ad2e773ee72d881717e859a9f7a01c76.tar.gz
linux-f81747a9ad2e773ee72d881717e859a9f7a01c76.tar.bz2
linux-f81747a9ad2e773ee72d881717e859a9f7a01c76.zip
wifi: mac80211: handle wider bandwidth OFDMA during CSA
During channel switch, track the AP configuration in the chanreq, so that wider bandwidth OFDMA is taken into account correctly, since multiple channel contexts may be needed due to sharing not being possible due to wider bandwidth OFDMA. Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com> Link: https://msgid.link/20240506215543.b2c5a72dac1b.I69f65cb2e75d4a49a174b1aede68bf8ff0a3cab3@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 75d53257dd97..1d0b414619a4 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2517,8 +2517,13 @@ ieee80211_sta_process_chanswitch(struct ieee80211_link_data *link,
goto drop_connection;
}
+ link->csa.chanreq = csa_ie.chanreq;
+ if (link->u.mgd.conn.mode < IEEE80211_CONN_MODE_EHT ||
+ sdata->vif.driver_flags & IEEE80211_VIF_IGNORE_OFDMA_WIDER_BW)
+ link->csa.chanreq.ap.chan = NULL;
+
if (chanctx) {
- res = ieee80211_link_reserve_chanctx(link, &csa_ie.chanreq,
+ res = ieee80211_link_reserve_chanctx(link, &link->csa.chanreq,
chanctx->mode, false);
if (res) {
link_info(link,
@@ -2529,7 +2534,6 @@ ieee80211_sta_process_chanswitch(struct ieee80211_link_data *link,
}
link->conf->csa_active = true;
- link->csa.chanreq = csa_ie.chanreq;
link->u.mgd.csa.ignored_same_chan = false;
link->u.mgd.beacon_crc_valid = false;
link->u.mgd.csa.blocked_tx = csa_ie.mode;