wifi: mac80211: prevent 4-addr use on MLDs

We haven't tried this yet, and it's not very likely to
work well right now, so for now disable 4-addr use on
interfaces that are MLDs.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20220902161143.f2e4cc2efaa1.I5924e8fb44a2d098b676f5711b36bbc1b1bd68e2@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2022-09-02 16:12:58 +02:00
parent ae960ee90b
commit 90703ba9bb
2 changed files with 11 additions and 0 deletions

View file

@ -226,6 +226,10 @@ static int ieee80211_change_iface(struct wiphy *wiphy,
if (params->use_4addr == ifmgd->use_4addr) if (params->use_4addr == ifmgd->use_4addr)
return 0; return 0;
/* FIXME: no support for 4-addr MLO yet */
if (sdata->vif.valid_links)
return -EOPNOTSUPP;
sdata->u.mgd.use_4addr = params->use_4addr; sdata->u.mgd.use_4addr = params->use_4addr;
if (!ifmgd->associated) if (!ifmgd->associated)
return 0; return 0;
@ -4697,6 +4701,9 @@ static int ieee80211_add_intf_link(struct wiphy *wiphy,
{ {
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
if (wdev->use_4addr)
return -EOPNOTSUPP;
return ieee80211_vif_set_links(sdata, wdev->valid_links); return ieee80211_vif_set_links(sdata, wdev->valid_links);
} }

View file

@ -6894,6 +6894,10 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
} }
} }
/* FIXME: no support for 4-addr MLO yet */
if (sdata->u.mgd.use_4addr && req->link_id >= 0)
return -EOPNOTSUPP;
assoc_data = kzalloc(size, GFP_KERNEL); assoc_data = kzalloc(size, GFP_KERNEL);
if (!assoc_data) if (!assoc_data)
return -ENOMEM; return -ENOMEM;