const u8 *bssid;
struct hostapd_frame_info fi;
int ret;
+ bool is_mld = false;
#ifdef CONFIG_TESTING_OPTIONS
if (hapd->ext_mgmt_frame_handling) {
if (bssid == NULL)
return 0;
- hapd = get_hapd_bssid(iface, bssid);
- if (hapd == NULL) {
+#ifdef CONFIG_IEEE80211BE
+ if (hapd->conf->mld_ap &&
+ os_memcmp(hapd->mld_addr, bssid, ETH_ALEN) == 0)
+ is_mld = true;
+#endif /* CONFIG_IEEE80211BE */
+
+ if (!is_mld)
+ hapd = get_hapd_bssid(iface, bssid);
+
+ if (!hapd) {
u16 fc = le_to_host16(hdr->frame_control);
/*
#ifdef CONFIG_MESH
!(hapd->conf->mesh & MESH_ENABLED) &&
#endif /* CONFIG_MESH */
+#ifdef CONFIG_IEEE80211BE
+ !(hapd->conf->mld_ap &&
+ os_memcmp(hapd->mld_addr, mgmt->bssid, ETH_ALEN) == 0) &&
+#endif /* CONFIG_IEEE80211BE */
os_memcmp(mgmt->bssid, hapd->own_addr, ETH_ALEN) != 0) {
wpa_printf(MSG_INFO, "MGMT: BSSID=" MACSTR " not our address",
MAC2STR(mgmt->bssid));
if ((!is_broadcast_ether_addr(mgmt->da) ||
stype != WLAN_FC_STYPE_ACTION) &&
+#ifdef CONFIG_IEEE80211BE
+ !(hapd->conf->mld_ap &&
+ os_memcmp(hapd->mld_addr, mgmt->bssid, ETH_ALEN) == 0) &&
+#endif /* CONFIG_IEEE80211BE */
os_memcmp(mgmt->da, hapd->own_addr, ETH_ALEN) != 0) {
hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_DEBUG,