Commit 54283409 authored by Andrei Otcheretianski's avatar Andrei Otcheretianski Committed by Johannes Berg
Browse files

wifi: mac80211: Consider MLO links in offchannel logic



Check all the MLO links to decide whether offchannel TX is needed.

Signed-off-by: default avatarAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 892b3bce
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -842,10 +842,24 @@ int ieee80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,

	/* Check if the operating channel is the requested channel */
	if (!need_offchan) {
		struct ieee80211_chanctx_conf *chanctx_conf;
		struct ieee80211_chanctx_conf *chanctx_conf = NULL;
		int i;

		rcu_read_lock();
		chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
		/* Check all the links first */
		for (i = 0; i < ARRAY_SIZE(sdata->vif.link_conf); i++) {
			if (!sdata->vif.link_conf[i])
				continue;

			chanctx_conf = rcu_dereference(sdata->vif.link_conf[i]->chanctx_conf);
			if (!chanctx_conf)
				continue;

			if (ether_addr_equal(sdata->vif.link_conf[i]->addr, mgmt->sa))
				break;

			chanctx_conf = NULL;
		}

		if (chanctx_conf) {
			need_offchan = params->chan &&