wifi: mac80211: handle link ID during management Tx
During non-STA management Tx, when source address is same as one of the link addresses and even when userspace requested Tx on a specific link, the link ID is not set in the TX control information. Now if the MLD address is also the same as that of the link address, then mac80211 fills link as "unspecified", since it looks like MLD TX. This is unexpected, however, since non-STA TX must specify which link to use. In hwsim, this will (after warnings) result in dropping such frames as well. Use and set the link id if the link bss is matching the address and requested channel. Signed-off-by: Sriram R <quic_srirrama@quicinc.com> Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com> Link: https://msgid.link/20240410052705.169865-1-quic_adisi@quicinc.com Link: https://lore.kernel.org/r/0496fb7e-53cc-476f-8052-985d82fd8d01@quicinc.com [reword commit message, should spell out hwsim etc.] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
6d4ed5b356
commit
b0d2d8f996
@ -897,8 +897,18 @@ int ieee80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
break;
|
||||
}
|
||||
|
||||
if (ether_addr_equal(conf->addr, mgmt->sa))
|
||||
if (ether_addr_equal(conf->addr, mgmt->sa)) {
|
||||
/* If userspace requested Tx on a specific link
|
||||
* use the same link id if the link bss is matching
|
||||
* the requested chan.
|
||||
*/
|
||||
if (sdata->vif.valid_links &&
|
||||
params->link_id >= 0 && params->link_id == i &&
|
||||
params->chan == chanctx_conf->def.chan)
|
||||
link_id = i;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
chanctx_conf = NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user