From 8392b9407a1bcd686c4dfd753a04bbfdc9f68c82 Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Fri, 20 Mar 2026 16:54:22 -0300 Subject: [PATCH] update WiFi security definitions --- mongoose.c | 15 ++++++--------- mongoose.h | 5 +++++ src/drivers/st67w6.c | 15 ++++++--------- src/wifi.h | 5 +++++ .../wifi/port/net/netif_mongoose.c | 10 +++++++--- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/mongoose.c b/mongoose.c index 1d308740..8e991fe7 100644 --- a/mongoose.c +++ b/mongoose.c @@ -26733,14 +26733,11 @@ static void st67w6_handle_scan_result(char *data, size_t len) { !mg_str_to_num(fields[0], 10, &val, 1)) return; bss.security = - (val == 0) - ? MG_WIFI_SECURITY_OPEN - : MG_WIFI_SECURITY_WEP | - ((val == 2 || val == 4 || val == 5) ? MG_WIFI_SECURITY_WPA - : 0) | - ((val == 3 || val == 4 || val == 7) ? MG_WIFI_SECURITY_WPA2 - : 0) | - ((val == 6 || val == 7) ? MG_WIFI_SECURITY_WPA3 : 0); + (val == 0) ? MG_WIFI_SECURITY_OPEN : (uint8_t) MG_WIFI_SECURITY_WEP; + if (val == 2 || val == 4) bss.security |= MG_WIFI_SECURITY_WPA; + if (val == 3 || val == 4 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA2; + if (val == 6 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA3; + if (val == 5) bss.security |= MG_WIFI_SECURITY_WPA_ENTERPRISE; if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return; bss.SSID.buf = fields[0].buf + 1, bss.SSID.len = fields[0].len - 2; if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return; @@ -26770,7 +26767,7 @@ static void st67w6_handle_scan_result(char *data, size_t len) { !mg_str_to_num(fields[0], 10, &val, 1)) return; bss.has_n = (val & 4) != 0; - // bss.has_ax = (val & 8) != 0; + bss.has_ax = (val & 8) != 0; bss.band = MG_WIFI_BAND_2G; // NOT INFORMED with default options, no docs MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf, bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI, diff --git a/mongoose.h b/mongoose.h index 4c729777..ecadb01e 100644 --- a/mongoose.h +++ b/mongoose.h @@ -3164,11 +3164,16 @@ struct mg_wifi_scan_bss_data { #define MG_WIFI_SECURITY_WPA MG_BIT(1) #define MG_WIFI_SECURITY_WPA2 MG_BIT(2) #define MG_WIFI_SECURITY_WPA3 MG_BIT(3) +#define MG_WIFI_SECURITY_WPA_ENTERPRISE MG_BIT(4) +#define MG_WIFI_SECURITY_WPA2_ENTERPRISE MG_BIT(5) +#define MG_WIFI_SECURITY_WPA3_ENTERPRISE MG_BIT(6) uint8_t channel; unsigned band : 2; #define MG_WIFI_BAND_2G 0 #define MG_WIFI_BAND_5G 1 unsigned has_n : 1; + unsigned has_ac : 1; + unsigned has_ax : 1; }; bool mg_wifi_scan(void); diff --git a/src/drivers/st67w6.c b/src/drivers/st67w6.c index da53b050..2af7c953 100644 --- a/src/drivers/st67w6.c +++ b/src/drivers/st67w6.c @@ -274,14 +274,11 @@ static void st67w6_handle_scan_result(char *data, size_t len) { !mg_str_to_num(fields[0], 10, &val, 1)) return; bss.security = - (val == 0) - ? MG_WIFI_SECURITY_OPEN - : MG_WIFI_SECURITY_WEP | - ((val == 2 || val == 4 || val == 5) ? MG_WIFI_SECURITY_WPA - : 0) | - ((val == 3 || val == 4 || val == 7) ? MG_WIFI_SECURITY_WPA2 - : 0) | - ((val == 6 || val == 7) ? MG_WIFI_SECURITY_WPA3 : 0); + (val == 0) ? MG_WIFI_SECURITY_OPEN : (uint8_t) MG_WIFI_SECURITY_WEP; + if (val == 2 || val == 4) bss.security |= MG_WIFI_SECURITY_WPA; + if (val == 3 || val == 4 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA2; + if (val == 6 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA3; + if (val == 5) bss.security |= MG_WIFI_SECURITY_WPA_ENTERPRISE; if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return; bss.SSID.buf = fields[0].buf + 1, bss.SSID.len = fields[0].len - 2; if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return; @@ -311,7 +308,7 @@ static void st67w6_handle_scan_result(char *data, size_t len) { !mg_str_to_num(fields[0], 10, &val, 1)) return; bss.has_n = (val & 4) != 0; - // bss.has_ax = (val & 8) != 0; + bss.has_ax = (val & 8) != 0; bss.band = MG_WIFI_BAND_2G; // NOT INFORMED with default options, no docs MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf, bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI, diff --git a/src/wifi.h b/src/wifi.h index e8dabd6c..749859c5 100644 --- a/src/wifi.h +++ b/src/wifi.h @@ -24,11 +24,16 @@ struct mg_wifi_scan_bss_data { #define MG_WIFI_SECURITY_WPA MG_BIT(1) #define MG_WIFI_SECURITY_WPA2 MG_BIT(2) #define MG_WIFI_SECURITY_WPA3 MG_BIT(3) +#define MG_WIFI_SECURITY_WPA_ENTERPRISE MG_BIT(4) +#define MG_WIFI_SECURITY_WPA2_ENTERPRISE MG_BIT(5) +#define MG_WIFI_SECURITY_WPA3_ENTERPRISE MG_BIT(6) uint8_t channel; unsigned band : 2; #define MG_WIFI_BAND_2G 0 #define MG_WIFI_BAND_5G 1 unsigned has_n : 1; + unsigned has_ac : 1; + unsigned has_ax : 1; }; bool mg_wifi_scan(void); diff --git a/tutorials/nxp/frdm-rw612-xpresso-freertos-builtin-wifi/wifi/port/net/netif_mongoose.c b/tutorials/nxp/frdm-rw612-xpresso-freertos-builtin-wifi/wifi/port/net/netif_mongoose.c index 3ee70977..3d9da90d 100644 --- a/tutorials/nxp/frdm-rw612-xpresso-freertos-builtin-wifi/wifi/port/net/netif_mongoose.c +++ b/tutorials/nxp/frdm-rw612-xpresso-freertos-builtin-wifi/wifi/port/net/netif_mongoose.c @@ -471,13 +471,17 @@ static void handle_scan_result(unsigned int i, mg_tcpip_event_handler_t evcb) { mg_mprintf(bssid, "%M", print_mac, r.bssid); bss.BSSID = bssid; bss.RSSI = (int8_t) -r.rssi; - bss.has_n = r.dot11n; // TODO(scaprile): add 11ac, 11ax, etc + bss.has_n = r.dot11n; + bss.has_ac = r.dot11ac; + bss.has_ax = r.dot11ax; bss.channel = r.channel; bss.band = r.channel <= MAX_CHANNELS_BG ? MG_WIFI_BAND_2G : MG_WIFI_BAND_5G; bss.security = r.wep ? MG_WIFI_SECURITY_WEP : MG_WIFI_SECURITY_OPEN; if (r.wpa) bss.security |= MG_WIFI_SECURITY_WPA; - if (r.wpa2) bss.security |= MG_WIFI_SECURITY_WPA2; - // TODO(scaprile): add WPA3, enterprise + if (r.wpa2 || r.wpa2_sha256) bss.security |= MG_WIFI_SECURITY_WPA2; + if (r.wpa3_sae) bss.security |= MG_WIFI_SECURITY_WPA3; + if (r.wpa2_entp || r.wpa2_entp_sha256) bss.security |= MG_WIFI_SECURITY_WPA2_ENTERPRISE; + if (r.wpa3_1x_sha256 || r.wpa3_1x_sha384) bss.security |= MG_WIFI_SECURITY_WPA3_ENTERPRISE; MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf, bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI, bss.security));