[Silabs] Adds support for WPA3 transition mode for 917/916 NCP (#27334)
* WPA3 transition support
* WPA3 transition mode support
* wpa3 transition name changes
* Restyled by clang-format
* adding the wpa3 transition support for 917 ncp
* Restyled by whitespace
* Restyled by clang-format
* wpa3 transition name changes
* wpa3 transition personal
* removing wpa3 transition personal
* changing comments
---------
Co-authored-by: Restyled.io <commits@restyled.io>
diff --git a/examples/platform/silabs/SiWx917/BUILD.gn b/examples/platform/silabs/SiWx917/BUILD.gn
index beefb83..2d8ec86 100644
--- a/examples/platform/silabs/SiWx917/BUILD.gn
+++ b/examples/platform/silabs/SiWx917/BUILD.gn
@@ -33,7 +33,7 @@
sl_wfx_config_scan = true
# Argument to force enable WPA3 security on rs91x
- rs91x_wpa3_only = false
+ rs91x_wpa3_transition = false
# use commissionable data for SiWx917
siwx917_commissionable_data = false
@@ -219,8 +219,8 @@
defines += [ "CHIP_DEVICE_CONFIG_ENABLE_IPV4" ]
}
- if (rs91x_wpa3_only) {
- defines += [ "WIFI_ENABLE_SECURITY_WPA3=1" ]
+ if (rs91x_wpa3_transition) {
+ defines += [ "WIFI_ENABLE_SECURITY_WPA3_TRANSITION=1" ]
}
}
diff --git a/examples/platform/silabs/SiWx917/SiWx917/rsi_if.c b/examples/platform/silabs/SiWx917/SiWx917/rsi_if.c
index 9dc57d8..6f9afa5 100644
--- a/examples/platform/silabs/SiWx917/SiWx917/rsi_if.c
+++ b/examples/platform/silabs/SiWx917/SiWx917/rsi_if.c
@@ -355,11 +355,11 @@
/*
* Scan is done - failed
*/
-#if WIFI_ENABLE_SECURITY_WPA3
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
wfx_rsi.sec.security = WFX_SEC_WPA3;
-#else /* !WIFI_ENABLE_SECURITY_WPA3 */
+#else /* !WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
wfx_rsi.sec.security = WFX_SEC_WPA2;
-#endif /* WIFI_ENABLE_SECURITY_WPA3 */
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
SILABS_LOG("%s: warn: failed with status: %02x", __func__, status);
return;
}
@@ -386,9 +386,13 @@
case SME_WEP:
wfx_rsi.sec.security = WFX_SEC_WEP;
break;
- case SME_WPA3:
case SME_WPA3_TRANSITION:
- wfx_rsi.sec.security = WFX_SEC_WPA3;
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
+ case SME_WPA3:
+ wfx_rsi.sec.security = RSI_WPA3;
+#else
+ wfx_rsi.sec.security = WFX_SEC_WPA2;
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
break;
default:
wfx_rsi.sec.security = WFX_SEC_UNSPECIFIED;
@@ -425,9 +429,11 @@
case WFX_SEC_WPA2:
connect_security_mode = RSI_WPA_WPA2_MIXED;
break;
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
case WFX_SEC_WPA3:
- connect_security_mode = RSI_WPA3;
+ connect_security_mode = RSI_WPA3_TRANSITION;
break;
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANS */
case WFX_SEC_NONE:
connect_security_mode = RSI_OPEN;
break;
diff --git a/examples/platform/silabs/efr32/BUILD.gn b/examples/platform/silabs/efr32/BUILD.gn
index 860800e..4a7119d 100644
--- a/examples/platform/silabs/efr32/BUILD.gn
+++ b/examples/platform/silabs/efr32/BUILD.gn
@@ -31,7 +31,7 @@
sl_wfx_config_scan = true
# Argument to force enable WPA3 security on rs91x
- rs91x_wpa3_only = false
+ rs91x_wpa3_transition = false
#default WiFi SSID
chip_default_wifi_ssid = ""
@@ -254,10 +254,9 @@
if (chip_enable_wifi_ipv4) {
defines += [ "CHIP_DEVICE_CONFIG_ENABLE_IPV4" ]
}
-
- if (rs91x_wpa3_only) {
+ if (rs91x_wpa3_transition) {
# TODO: Change this macro once WF200 support is provided
- defines += [ "WIFI_ENABLE_SECURITY_WPA3=1" ]
+ defines += [ "WIFI_ENABLE_SECURITY_WPA3_TRANSITION=1" ]
}
}
diff --git a/examples/platform/silabs/efr32/rs911x/rsi_if.c b/examples/platform/silabs/efr32/rs911x/rsi_if.c
index f29cf01..d0d5844 100644
--- a/examples/platform/silabs/efr32/rs911x/rsi_if.c
+++ b/examples/platform/silabs/efr32/rs911x/rsi_if.c
@@ -420,20 +420,17 @@
/*
* Scan is done - failed
*/
-#if WIFI_ENABLE_SECURITY_WPA3
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
wfx_rsi.sec.security = WFX_SEC_WPA3;
-#else /* !WIFI_ENABLE_SECURITY_WPA3 */
+#else /* !WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
wfx_rsi.sec.security = WFX_SEC_WPA2;
-#endif /* WIFI_ENABLE_SECURITY_WPA3 */
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
SILABS_LOG("%s: warn: failed with status: %02x", __func__, status);
return;
}
- else
- {
- wfx_rsi.sec.security = WFX_SEC_UNSPECIFIED;
- wfx_rsi.ap_chan = rsp.scan_info->rf_channel;
- memcpy(&wfx_rsi.ap_mac.octet[0], &rsp.scan_info->bssid[0], BSSID_MAX_STR_LEN);
- }
+ wfx_rsi.sec.security = WFX_SEC_UNSPECIFIED;
+ wfx_rsi.ap_chan = rsp.scan_info->rf_channel;
+ memcpy(&wfx_rsi.ap_mac.octet[0], &rsp.scan_info->bssid[0], BSSID_MAX_STR_LEN);
switch (rsp.scan_info->security_mode)
{
@@ -451,9 +448,13 @@
case SME_WEP:
wfx_rsi.sec.security = WFX_SEC_WEP;
break;
- case SME_WPA3:
case SME_WPA3_TRANSITION:
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
+ case SME_WPA3:
wfx_rsi.sec.security = WFX_SEC_WPA3;
+#else
+ wfx_rsi.sec.security = WFX_SEC_WPA2;
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
break;
default:
wfx_rsi.sec.security = WFX_SEC_UNSPECIFIED;
@@ -492,9 +493,11 @@
case WFX_SEC_WPA2:
connect_security_mode = RSI_WPA_WPA2_MIXED;
break;
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
case WFX_SEC_WPA3:
- connect_security_mode = RSI_WPA3;
+ connect_security_mode = RSI_WPA3_TRANSITION;
break;
+#endif // WIFI_ENABLE_SECURITY_WPA3_TRANSITION
case WFX_SEC_NONE:
connect_security_mode = RSI_OPEN;
break;
diff --git a/examples/platform/silabs/efr32/rs911x/rsi_wlan_config.h b/examples/platform/silabs/efr32/rs911x/rsi_wlan_config.h
index 9fb927a..96bd71b 100644
--- a/examples/platform/silabs/efr32/rs911x/rsi_wlan_config.h
+++ b/examples/platform/silabs/efr32/rs911x/rsi_wlan_config.h
@@ -41,20 +41,20 @@
#define RSI_TCP_IP_FEATURE_BIT_MAP (TCP_IP_FEAT_BYPASS /*| TCP_IP_FEAT_EXTENSION_VALID*/)
//! To set Extended custom feature select bit map
-#if WIFI_ENABLE_SECURITY_WPA3
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
#ifdef CHIP_9117
#define RSI_EXT_CUSTOM_FEATURE_BIT_MAP \
- (EXT_FEAT_448K_M4SS_256K | EXT_FEAT_IEEE_80211W | EXT_FEAT_LOW_POWER_MODE | EXT_FEAT_XTAL_CLK_ENABLE)
-#else
+ (EXT_FEAT_448K_M4SS_256K | EXT_FEAT_LOW_POWER_MODE | EXT_FEAT_XTAL_CLK_ENABLE | EXT_FEAT_IEEE_80211W)
+#else /* !CHIP_9117 */
#define RSI_EXT_CUSTOM_FEATURE_BIT_MAP (EXT_FEAT_384K_MODE | EXT_FEAT_IEEE_80211W)
#endif /* CHIP_9117 */
-#else
+#else /* !WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
#ifdef CHIP_9117
#define RSI_EXT_CUSTOM_FEATURE_BIT_MAP (EXT_FEAT_448K_M4SS_256K | EXT_FEAT_LOW_POWER_MODE | EXT_FEAT_XTAL_CLK_ENABLE)
-#else
+#else /* !CHIP_9117 */
#define RSI_EXT_CUSTOM_FEATURE_BIT_MAP EXT_FEAT_384K_MODE
#endif /* CHIP_9117 */
-#endif /* WIFI_ENABLE_SECURITY_WPA3 */
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */
//! To set Extended TCPIP feature select bit map
#define RSI_EXT_TCPIP_FEATURE_BITMAP (/*EXT_FEAT_HTTP_OTAF_SUPPORT |*/ EXT_TCP_IP_SSL_16K_RECORD)
@@ -242,11 +242,11 @@
#define RSI_POWER_LEVEL RSI_POWER_LEVEL_HIGH
//! RSI_JOIN_FEAT_STA_BG_ONLY_MODE_ENABLE or RSI_JOIN_FEAT_LISTEN_INTERVAL_VALID
-#if WIFI_ENABLE_SECURITY_WPA3
-#define RSI_JOIN_FEAT_BIT_MAP RSI_JOIN_FEAT_MFP_CAPABLE_REQUIRED
+#if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
+#define RSI_JOIN_FEAT_BIT_MAP RSI_JOIN_FEAT_MFP_CAPABLE_ONLY
#else
#define RSI_JOIN_FEAT_BIT_MAP 0
-#endif
+#endif /* WIFI_ENABLE_SECURITY_WPA3_TRANS */
#define RSI_LISTEN_INTERVAL 0
diff --git a/scripts/examples/gn_silabs_example.sh b/scripts/examples/gn_silabs_example.sh
index 25d181e..06f6ee5 100755
--- a/scripts/examples/gn_silabs_example.sh
+++ b/scripts/examples/gn_silabs_example.sh
@@ -96,8 +96,8 @@
Use to build the example with pigweed RPC
ota_periodic_query_timeout_sec
Periodic query timeout variable for OTA in seconds
- rs91x_wpa3_only
- Support for WPA3 only mode on RS91x
+ rs91x_wpa3_transition
+ Support for WPA3 transition mode on RS91x
sl_matter_version
Use provided software version at build time
sl_matter_version_str
diff --git a/src/platform/silabs/efr32/wifi/wfx_host_events.h b/src/platform/silabs/efr32/wifi/wfx_host_events.h
index c0724b7..3c9d12b 100644
--- a/src/platform/silabs/efr32/wifi/wfx_host_events.h
+++ b/src/platform/silabs/efr32/wifi/wfx_host_events.h
@@ -239,7 +239,7 @@
WFX_SEC_WEP = 2,
WFX_SEC_WPA = 3,
WFX_SEC_WPA2 = 4,
- WFX_SEC_WPA3 = 5
+ WFX_SEC_WPA3 = 5,
} wfx_sec_t;
typedef struct