aboutsummaryrefslogtreecommitdiff
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorGravatar Johannes Berg <johannes.berg@intel.com> 2022-08-17 21:57:19 +0200
committerGravatar Johannes Berg <johannes.berg@intel.com> 2022-08-25 10:41:18 +0200
commit4f6c78de324b971494c5bbf2cae88b414ea88853 (patch)
tree4ffcd2a3e232742eb354cf730c62247cf4bb2604 /net/mac80211/mlme.c
parentwifi: mac80211: use the corresponding link for stats update (diff)
downloadlinux-4f6c78de324b971494c5bbf2cae88b414ea88853.tar.gz
linux-4f6c78de324b971494c5bbf2cae88b414ea88853.tar.bz2
linux-4f6c78de324b971494c5bbf2cae88b414ea88853.zip
wifi: mac80211: use link ID for MLO in queued frames
When queuing frames to an interface store the link ID we determined (which possibly came from the driver in the RX status in the first place) in the RX status, and use it in the MLME code to send probe responses, beacons and CSA frames to the right link. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 04d35cd39889..385d51e9990c 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -5671,6 +5671,13 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
sdata_lock(sdata);
+ if (rx_status->link_valid) {
+ link = sdata_dereference(sdata->link[rx_status->link_id],
+ sdata);
+ if (!link)
+ goto out;
+ }
+
switch (fc & IEEE80211_FCTL_STYPE) {
case IEEE80211_STYPE_BEACON:
ieee80211_rx_mgmt_beacon(link, (void *)mgmt,
@@ -5747,6 +5754,7 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
}
break;
}
+out:
sdata_unlock(sdata);
}