[PATCH] AP MLD: handle link_id for EVENT_RX_FROM_UNKNOWN
Michael-CY Lee
michael-cy.lee at mediatek.com
Mon Jul 21 19:01:27 PDT 2025
The AP MLD may require the "link_id" to properly handle
unexpected frames. For instance, if the AP MLD receives
a data frame from a non-associated STA, it must send
deauthentication to the link on which the STA is operating.
Signed-off-by: Michael-CY Lee <michael-cy.lee at mediatek.com>
Reviewed-by: Money Wang <money.wang at mediatek.com>
---
src/ap/drv_callbacks.c | 1 +
src/drivers/driver.h | 1 +
src/drivers/driver_nl80211_event.c | 2 ++
3 files changed, 4 insertions(+)
diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index aebd52c0c..ab539765b 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -2654,6 +2654,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
hostapd_client_poll_ok(hapd, data->client_poll.addr);
break;
case EVENT_RX_FROM_UNKNOWN:
+ hapd = switch_link_hapd(hapd, data->rx_from_unknown.link_id);
hostapd_rx_from_unknown_sta(hapd, data->rx_from_unknown.bssid,
data->rx_from_unknown.addr,
data->rx_from_unknown.wds);
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 0a0532353..afa5b50cd 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -6655,6 +6655,7 @@ union wpa_event_data {
const u8 *bssid;
const u8 *addr;
int wds;
+ int link_id;
} rx_from_unknown;
/**
diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
index bcf6ff895..a1bbc82e5 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -2788,6 +2788,8 @@ static void nl80211_spurious_frame(struct i802_bss *bss, struct nlattr **tb,
event.rx_from_unknown.bssid = bss->addr;
event.rx_from_unknown.addr = nla_data(tb[NL80211_ATTR_MAC]);
event.rx_from_unknown.wds = wds;
+ event.rx_from_unknown.link_id = tb[NL80211_ATTR_MLO_LINK_ID] ?
+ nla_get_u8(tb[NL80211_ATTR_MLO_LINK_ID]) : -1;
wpa_supplicant_event(drv->ctx, EVENT_RX_FROM_UNKNOWN, &event);
}
--
2.25.1
More information about the Hostap
mailing list