Commit db1d0b6a authored by Miri Korenblit's avatar Miri Korenblit Committed by Johannes Berg
Browse files

wifi: mac80211: correctly check if CSA is active



We are not adding an interface if an existing one is doing CSA.
But the check won't work for MLO station interfaces, since for those,
vif->bss_conf is zeroed out.
Fix this by checking if any link of the vif has an active CSA.

Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20260111191912.7ceff62fc561.Ia38d27f42684d1cfd82d930d232bd5dea6ab9282@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent a3034bf0
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -350,6 +350,8 @@ static int ieee80211_check_concurrent_iface(struct ieee80211_sub_if_data *sdata,
	/* we hold the RTNL here so can safely walk the list */
	list_for_each_entry(nsdata, &local->interfaces, list) {
		if (nsdata != sdata && ieee80211_sdata_running(nsdata)) {
			struct ieee80211_link_data *link;

			/*
			 * Only OCB and monitor mode may coexist
			 */
@@ -376,8 +378,10 @@ static int ieee80211_check_concurrent_iface(struct ieee80211_sub_if_data *sdata,
			 * will not add another interface while any channel
			 * switch is active.
			 */
			if (nsdata->vif.bss_conf.csa_active)
			for_each_link_data(nsdata, link) {
				if (link->conf->csa_active)
					return -EBUSY;
			}

			/*
			 * The remaining checks are only performed for interfaces