Skip to content

Commit

Permalink
wifi: mac80211: fix AP chandef capturing in CSA
Browse files Browse the repository at this point in the history
When the CSA is announced with only HT elements, the AP
chandef isn't captured correctly, leading to crashes in
the later code that checks for TPE changes during CSA.

Capture the AP chandef correctly in both cases to fix
this.

Reported-by: Jouni Malinen <[email protected]>
Fixes: 4540568 ("wifi: mac80211: handle TPE element during CSA")
Link: https://patch.msgid.link/20240709160851.47805f24624d.I024091f701447f7921e93bb23b46e01c2f46347d@changeid
Signed-off-by: Johannes Berg <[email protected]>
  • Loading branch information
jmberg-intel committed Jul 10, 2024
1 parent 003eae5 commit 408ac28
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions net/mac80211/spectmgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,9 @@ int ieee80211_parse_ch_switch_ie(struct ieee80211_sub_if_data *sdata,
break;
}

/* capture the AP configuration */
csa_ie->chanreq.ap = csa_ie->chanreq.oper;

/* parse one of the Elements to build a new chandef */
memset(&new_chandef, 0, sizeof(new_chandef));
new_chandef.chan = new_chan;
Expand All @@ -369,11 +372,11 @@ 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) {
/* capture the AP chandef before (potential) downgrading */
csa_ie->chanreq.ap = new_chandef;

if (conn->bw_limit < IEEE80211_CONN_BW_LIMIT_320 &&
new_chandef.width == NL80211_CHAN_WIDTH_320)
ieee80211_chandef_downgrade(&new_chandef, NULL);
Expand Down

0 comments on commit 408ac28

Please sign in to comment.