Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

wifi: mac80211: enable MLO support for 4-address mode interfaces

The current code does not support establishing MLO connections for
interfaces operating in 4-address AP_VLAN mode.
MLO bringup is blocked by sanity checks in cfg.c, iface.c, and mlme.c,
which prevent MLD initialization when use_4addr is enabled.
Remove these restrictions to allow 4-address AP_VLAN interfaces to
initialize as part of an MLD and successfully participate in MLO
connections. This patch series also adds the necessary changes to
support WDS operation in MLO, making these modifications valid.

Allow 4-address mode interfaces to:
- Proceed with MLD initialization during interface setup
- Add MLO links dynamically via ieee80211_add_intf_link()
- Establish associations with MLO-capable access points
- Support AP_VLAN interfaces with MLO parent APs

Signed-off-by: Tamizh Chelvam Raja <tamizh.raja@oss.qualcomm.com>
Link: https://patch.msgid.link/20260326164723.553927-4-tamizh.raja@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

authored by

Tamizh Chelvam Raja and committed by
Johannes Berg
915c1d23 594be50a

-18
-7
net/mac80211/cfg.c
··· 281 281 if (params->use_4addr == ifmgd->use_4addr) 282 282 return 0; 283 283 284 - /* FIXME: no support for 4-addr MLO yet */ 285 - if (ieee80211_vif_is_mld(&sdata->vif)) 286 - return -EOPNOTSUPP; 287 - 288 284 sdata->u.mgd.use_4addr = params->use_4addr; 289 285 if (!ifmgd->associated) 290 286 return 0; ··· 5580 5584 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); 5581 5585 5582 5586 lockdep_assert_wiphy(sdata->local->hw.wiphy); 5583 - 5584 - if (wdev->use_4addr) 5585 - return -EOPNOTSUPP; 5586 5587 5587 5588 return ieee80211_vif_set_links(sdata, wdev->valid_links, 0); 5588 5589 }
-7
net/mac80211/iface.c
··· 409 409 nsdata->vif.type)) 410 410 return -ENOTUNIQ; 411 411 412 - /* No support for VLAN with MLO yet */ 413 - if (iftype == NL80211_IFTYPE_AP_VLAN && 414 - sdata->wdev.use_4addr && 415 - nsdata->vif.type == NL80211_IFTYPE_AP && 416 - nsdata->vif.valid_links) 417 - return -EOPNOTSUPP; 418 - 419 412 /* 420 413 * can only add VLANs to enabled APs 421 414 */
-4
net/mac80211/mlme.c
··· 9859 9859 for (i = 0; i < IEEE80211_MLD_MAX_NUM_LINKS; i++) 9860 9860 size += req->links[i].elems_len; 9861 9861 9862 - /* FIXME: no support for 4-addr MLO yet */ 9863 - if (sdata->u.mgd.use_4addr && req->link_id >= 0) 9864 - return -EOPNOTSUPP; 9865 - 9866 9862 assoc_data = kzalloc(size, GFP_KERNEL); 9867 9863 if (!assoc_data) 9868 9864 return -ENOMEM;