From: Michael-CY Lee Date: Tue, 22 Jul 2025 02:01:27 +0000 (+0800) Subject: AP MLD: Handle link_id for EVENT_RX_FROM_UNKNOWN X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f769413f84a8b1608b2fa43d0d6fe1d2c5d434e;p=thirdparty%2Fhostap.git AP MLD: Handle link_id for EVENT_RX_FROM_UNKNOWN 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 Reviewed-by: Money Wang --- diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c index 51badb7c1..769d8f32c 100644 --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c @@ -2649,6 +2649,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 fbd4a546c..ada274e43 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -6660,6 +6660,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 9e4a3e6e1..7a54ff21e 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -2789,6 +2789,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); }