Skip to content

Commit

Permalink
wifi: mac80211: handle wider bandwidth OFDMA during CSA
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Berg committed May 23, 2024
1 parent 344d18c commit f81747a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
8 changes: 6 additions & 2 deletions net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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;
Expand Down
5 changes: 4 additions & 1 deletion net/mac80211/spectmgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* Copyright 2007, Michael Wu <flamingice@sourmilk.net>
* Copyright 2007-2008, Intel Corporation
* Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
* Copyright (C) 2018, 2020, 2022-2023 Intel Corporation
* Copyright (C) 2018, 2020, 2022-2024 Intel Corporation
*/

#include <linux/ieee80211.h>
Expand Down Expand Up @@ -366,6 +366,9 @@ int ieee80211_parse_ch_switch_ie(struct ieee80211_sub_if_data *sdata,
validate_chandef_by_ht_vht_oper(sdata, conn, vht_cap_info,
&new_chandef);

/* capture the AP chandef before (potential) downgrading */
csa_ie->chanreq.ap = new_chandef;

/* if data is there validate the bandwidth & use it */
if (new_chandef.chan) {
if (conn->bw_limit < IEEE80211_CONN_BW_LIMIT_320 &&
Expand Down

0 comments on commit f81747a

Please sign in to comment.