diff mbox series

[v2,3/5] bss: don't add hidden OWE transition-networks to scan-list

Message ID 20240428131344.334314-4-mail@david-bauer.net
State New
Headers show
Series wpa_supplicant: optimize OWE roaming behavior | expand

Commit Message

David Bauer April 28, 2024, 1:13 p.m. UTC
When adding these networks hidden, they get re-added for the same BSSID
when scanning for the transition-SSID. Skip adding the OWE-SSIDs in case
the SSID was not explicitly scanned for.

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 wpa_supplicant/bss.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c
index e528af280..b9bf06c45 100644
--- a/wpa_supplicant/bss.c
+++ b/wpa_supplicant/bss.c
@@ -909,7 +909,7 @@  void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s,
 			     struct wpa_scan_res *res,
 			     struct os_reltime *fetch_time)
 {
-	const u8 *ssid, *p2p, *mesh;
+	const u8 *ssid, *p2p, *mesh, *owe, *rsn;
 	struct wpa_bss *bss;
 
 	if (wpa_s->conf->ignore_old_scan_res) {
@@ -940,6 +940,12 @@  void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s,
 		return;
 	}
 
+	/* Don't add hidden OWE transition networks with RSN. They are explicitly scanned for. */
+	rsn = wpa_scan_get_ie(res, WLAN_EID_RSN);
+	owe = wpa_scan_get_vendor_ie(res, OWE_IE_VENDOR_TYPE);
+	if (owe && rsn && (ssid[1] == 0 || ssid[2] == 0))
+		return;
+
 	p2p = wpa_scan_get_vendor_ie(res, P2P_IE_VENDOR_TYPE);
 #ifdef CONFIG_P2P
 	if (p2p == NULL &&