Files
wlan-ap/feeds/qca-wifi-7/hostapd/patches/r28-hostapd-handle-ML-Probe-request-for-Non-Transmitting.patch
John Crispin 68cf54d9f7 qca-wifi-7: update to ath12.5.5
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-27 12:45:52 +01:00

60 lines
2.0 KiB
Diff

From 008acb6038aab6f365b7a0db006f9f829a5bb1f8 Mon Sep 17 00:00:00 2001
From: Mohan Kumar G <quic_mkumarg@quicinc.com>
Date: Fri, 3 May 2024 18:55:26 +0530
Subject: [PATCH] hostapd: handle ML Probe request for Non-Transmitting BSS
Currently, when configured in multiple BSSID and if ML probe
request is sent to non-transmitting BSS, the request is dropped.
This is because only the SSID of transmitting BSS is checked
when matching the probe request SSID. Other members in the
multiple BSSID set are not considered.
As per IEEE Std 802.11-2020 section 11.1.4.3.4, if the SSID in
probe request matches any of the SSIDs of multiple BSSID set
members, probe response can be sent.
Fix this issue by checking SSIDs of non-transmitting BSS also
when receiving probe request in Multiple BSSID case.
Signed-off-by: Mohan Kumar G <quic_mkumarg@quicinc.com>
---
src/ap/beacon.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -1598,15 +1598,30 @@ void handle_probe_req(struct hostapd_dat
elems.ssid_list, elems.ssid_list_len,
elems.short_ssid_list, elems.short_ssid_list_len);
if (res == NO_SSID_MATCH) {
- if (!(mgmt->da[0] & 0x01)) {
+ if (hapd->iconf->mbssid) {
+ for (i = 0; i < hapd->iface->num_bss; i++) {
+ if (hapd == hapd->iface->bss[i])
+ continue;
+ res = ssid_match(hapd->iface->bss[i], elems.ssid,
+ elems.ssid_len, elems.ssid_list,
+ elems.ssid_list_len,
+ elems.short_ssid_list,
+ elems.short_ssid_list_len);
+ if (res != NO_SSID_MATCH) {
+ hapd_probed = hapd->iface->bss[i];
+ break;
+ }
+ }
+ }
+ if (res == NO_SSID_MATCH && !(mgmt->da[0] & 0x01)) {
wpa_printf(MSG_MSGDUMP, "Probe Request from " MACSTR
" for foreign SSID '%s' (DA " MACSTR ")%s",
MAC2STR(mgmt->sa),
wpa_ssid_txt(elems.ssid, elems.ssid_len),
MAC2STR(mgmt->da),
elems.ssid_list ? " (SSID list)" : "");
+ return;
}
- return;
}
if (hapd->conf->ignore_broadcast_ssid && res == WILDCARD_SSID_MATCH) {