aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2022-09-02 16:12:44 +0200
committerJohannes Berg <johannes.berg@intel.com>2022-09-06 10:13:52 +0200
commit6521ee74636d11cc895ccc2ba845de7969a30221 (patch)
tree1426a0ca7008c416b6cda5213d462bbb317e36a8
parentwifi: mac80211: add ieee80211_find_sta_by_link_addrs API (diff)
downloadlinux-dev-6521ee74636d11cc895ccc2ba845de7969a30221.tar.xz
linux-dev-6521ee74636d11cc895ccc2ba845de7969a30221.zip
wifi: mac80211_hwsim: skip inactive links on TX
With the link activation handling in mac80211, skip any inactive links on TX. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/mac80211_hwsim.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index ed3b1c84d547..b02865deca9c 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1734,6 +1734,9 @@ mac80211_hwsim_select_tx_link(struct mac80211_hwsim_data *data,
/* round-robin the available link IDs */
link_id = (sp->last_link + i + 1) % ARRAY_SIZE(vif->link_conf);
+ if (!(vif->active_links & BIT(link_id)))
+ continue;
+
*link_sta = rcu_dereference(sta->link[link_id]);
if (!*link_sta)
continue;
@@ -1742,6 +1745,10 @@ mac80211_hwsim_select_tx_link(struct mac80211_hwsim_data *data,
if (WARN_ON_ONCE(!bss_conf))
continue;
+ /* can happen while switching links */
+ if (!rcu_access_pointer(bss_conf->chanctx_conf))
+ continue;
+
sp->last_link = link_id;
return bss_conf;
}