wifi: mac80211: fix puncturing bitmap handling in CSA

[ Upstream commit 927521170c ]

Code inspection reveals that we switch the puncturing bitmap
before the real channel switch, since that happens only in
the second round of the worker after the channel context is
switched by ieee80211_link_use_reserved_context().

Fixes: 2cc25e4b2a ("wifi: mac80211: configure puncturing bitmap")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Johannes Berg 2023-08-16 12:13:36 +02:00 committed by Greg Kroah-Hartman
parent af3d2e0f3a
commit 0bb707be97
1 changed files with 6 additions and 6 deletions

View File

@ -3640,12 +3640,6 @@ static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
lockdep_assert_held(&local->mtx);
lockdep_assert_held(&local->chanctx_mtx);
if (sdata->vif.bss_conf.eht_puncturing != sdata->vif.bss_conf.csa_punct_bitmap) {
sdata->vif.bss_conf.eht_puncturing =
sdata->vif.bss_conf.csa_punct_bitmap;
changed |= BSS_CHANGED_EHT_PUNCTURING;
}
/*
* using reservation isn't immediate as it may be deferred until later
* with multi-vif. once reservation is complete it will re-schedule the
@ -3675,6 +3669,12 @@ static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
if (err)
return err;
if (sdata->vif.bss_conf.eht_puncturing != sdata->vif.bss_conf.csa_punct_bitmap) {
sdata->vif.bss_conf.eht_puncturing =
sdata->vif.bss_conf.csa_punct_bitmap;
changed |= BSS_CHANGED_EHT_PUNCTURING;
}
ieee80211_link_info_change_notify(sdata, &sdata->deflink, changed);
if (sdata->deflink.csa_block_tx) {