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: use ap_addr for 4-address NULL frame destination

Currently ieee80211_send_4addr_nullfunc() uses deflink.u.mgd.bssid
for addr1 and addr3 fields. In MLO configurations, deflink.u.mgd.bssid
represents link 0's BSSID and is not updated when link 0 is not an
assoc link. This causes 4-address NULL frames to be sent to the
wrong address, preventing WDS AP_VLAN interface creation on the peer AP.

To fix this use sdata->vif.cfg.ap_addr instead, which contains the AP's MLD
address populated during authentication/association and remains
valid regardless of which links are active.

This ensures 4-address NULL frames reach the correct AP, allowing
proper WDS operation over MLO connections.

Co-developed-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
Signed-off-by: Tamizh Chelvam Raja <tamizh.raja@oss.qualcomm.com>
Link: https://patch.msgid.link/20260326164723.553927-3-tamizh.raja@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

authored by

Tamizh Chelvam Raja and committed by
Johannes Berg
594be50a 469d5d5a

+2 -2
+2 -2
net/mac80211/mlme.c
··· 2514 2514 fc = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC | 2515 2515 IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS); 2516 2516 nullfunc->frame_control = fc; 2517 - memcpy(nullfunc->addr1, sdata->deflink.u.mgd.bssid, ETH_ALEN); 2517 + memcpy(nullfunc->addr1, sdata->vif.cfg.ap_addr, ETH_ALEN); 2518 2518 memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN); 2519 - memcpy(nullfunc->addr3, sdata->deflink.u.mgd.bssid, ETH_ALEN); 2519 + memcpy(nullfunc->addr3, sdata->vif.cfg.ap_addr, ETH_ALEN); 2520 2520 memcpy(nullfunc->addr4, sdata->vif.addr, ETH_ALEN); 2521 2521 2522 2522 IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;