[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