Skip to content

Commit

Permalink
wifi: mac80211: handle link ID during management Tx
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sriram R authored and Johannes Berg committed Apr 19, 2024
1 parent 6d4ed5b commit b0d2d8f
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion net/mac80211/offchannel.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit b0d2d8f

Please sign in to comment.