diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index 752abbaae5..fbcb25c7f8 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -41,7 +41,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-efr32:95
+ image: ghcr.io/project-chip/chip-build-efr32:115
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/silabs-common-build.yaml b/.github/workflows/silabs-common-build.yaml
index f7b2b19db3..1b2533c7ed 100644
--- a/.github/workflows/silabs-common-build.yaml
+++ b/.github/workflows/silabs-common-build.yaml
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-efr32:95
+ image: ghcr.io/project-chip/chip-build-efr32:115
strategy:
matrix:
diff --git a/.gitmodules b/.gitmodules
index fc99670bad..b4934aab2e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -213,17 +213,17 @@
[submodule "third_party/silabs/simplicity_sdk"]
path = third_party/silabs/simplicity_sdk
url = https://github.com/SiliconLabs/simplicity_sdk.git
- branch = v2024.6.2
+ branch = v2024.12.1-0
platforms = silabs
[submodule "third_party/silabs/wiseconnect-wifi-bt-sdk"]
path = third_party/silabs/wiseconnect-wifi-bt-sdk
url = https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git
- branch = 2.10.3
+ branch = 2.11.2
platforms = silabs
[submodule "third_party/silabs/wifi_sdk"]
path = third_party/silabs/wifi_sdk
url = https://github.com/SiliconLabs/wiseconnect.git
- branch = v3.3.3
+ branch = v3.4.1
platforms = silabs
[submodule "editline"]
path = third_party/editline/repo
diff --git a/examples/platform/silabs/cmp/sl-matter-attribute-storage.cpp b/examples/platform/silabs/cmp/sl-matter-attribute-storage.cpp
new file mode 100644
index 0000000000..b0c54c50dd
--- /dev/null
+++ b/examples/platform/silabs/cmp/sl-matter-attribute-storage.cpp
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * @file sl-matter-attribute-storage.cpp
+ * @brief Link zigbee datamodel attribute changes to Matter attribute storage.
+ *******************************************************************************
+ * # License
+ * Copyright 2024 Silicon Laboratories Inc.
+ *www.silabs.com
+ *******************************************************************************
+ *
+ * The licensor of this software is Silicon
+ *Laboratories Inc. Your use of this software is
+ *governed by the terms of Silicon Labs Master
+ *Software License Agreement (MSLA) available at
+ * www.silabs.com/about-us/legal/master-software-license-agreement.
+ *This software is distributed to you in Source Code
+ *format and is governed by the sections of the MSLA
+ *applicable to Source Code.
+ *
+ ******************************************************************************/
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace {
+// This is called from simplicity_sdk/protocol/zigbee/app/framework/util/attribute-storage.c on ZB attribute write
+// when GENERATED_MULTI_PROTOCOL_ATTRIBUTE_MAPPING and SL_CATALOG_MULTIPROTOCOL_ZIGBEE_MATTER_COMMON_PRESENT are defined.
+extern "C" sl_status_t sli_matter_af_write_attribute(uint16_t endpointId, uint32_t clusterId, uint32_t attributeId,
+ uint8_t * attributeValue, uint8_t type)
+{
+ // All type shall be directly applicable. We expect compilation error if type changes.
+ chip::EndpointId matterEndpointId = endpointId;
+ chip::ClusterId matterClusterId = clusterId;
+ chip::AttributeId matterAttributeId = attributeId;
+ EmberAfAttributeType matterDataType = type;
+
+ chip::Protocols::InteractionModel::Status imStatus =
+ emberAfWriteAttribute(matterEndpointId, matterClusterId, matterAttributeId, attributeValue, matterDataType);
+
+ // For sl internal use so we return a known status type to our stack
+ sl_status_t slStatus = SL_STATUS_OK;
+ if (imStatus != chip::Protocols::InteractionModel::Status::Success)
+ {
+ ChipLogError(Zcl, "Failed to write Matter attribute from multiprotocol update. Err:0x%02x", chip::to_underlying(imStatus));
+ slStatus = SL_STATUS_FAIL;
+ }
+
+ return slStatus;
+}
+} // namespace
diff --git a/examples/platform/silabs/cmp/sl-matter-attribute-storage.h b/examples/platform/silabs/cmp/sl-matter-attribute-storage.h
new file mode 100644
index 0000000000..ab564cc593
--- /dev/null
+++ b/examples/platform/silabs/cmp/sl-matter-attribute-storage.h
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * @file sl-matter-attribute-storage.h
+ * @brief Link zigbee datamodel attribute changes to Matter attribute storage.
+ *******************************************************************************
+ * # License
+ * Copyright 2024 Silicon Laboratories Inc. www.silabs.com
+ *******************************************************************************
+ *
+ * The licensor of this software is Silicon Laboratories Inc. Your use of this
+ * software is governed by the terms of Silicon Labs Master Software License
+ * Agreement (MSLA) available at
+ * www.silabs.com/about-us/legal/master-software-license-agreement. This
+ * software is distributed to you in Source Code format and is governed by the
+ * sections of the MSLA applicable to Source Code.
+ *
+ ******************************************************************************/
+
+#ifndef SL_MATTER_ATTRIBUTE_STORAGE
+#define SL_MATTER_ATTRIBUTE_STORAGE
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Writes an attribute value to the Matter attribute storage.
+ *
+ * *** This is a Silabs internal api. ***
+ *
+ * It exposes the Matter API that writes to the Matter attribute storage to our zigbee datamodel stack,
+ * implemented in C, for multiprotocol usecases, without exposing matter datamodel elements
+ *
+ * This function expect that either the used Zigbee cluster/attributes maps 1 to 1 to the matter counter part
+ * or that the caller translated the Zigbee attribute parameters to Matter attribute parameters.
+ *
+ * The function ultimaly uses those fields in the Matter API to perform the attribute write operation.
+ *
+ * @param endpointId Linked ZB/Matter endpoint identifier.
+ * @param clusterId Linked ZB/Matter cluster identifier.
+ * @param attributeId Linked ZB/Matter attribute identifier.
+ * @param attributeValue Pointer to the attribute value to be written.
+ * @param type The data type of the attribute. Shall match Matters' EmberAfAttributeType
+ * @return sl_status_t Status of the write operation, SL_STATUS_OK if successful, otherwise SL_STATUS_FAIL.
+ */
+sl_status_t sli_matter_af_write_attribute(uint16_t endpointId, uint32_t clusterId, uint32_t attributeId, uint8_t * attributeValue,
+ uint8_t type);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SL_MATTER_ATTRIBUTE_STORAGE
diff --git a/examples/platform/silabs/matter-platform.slcp b/examples/platform/silabs/matter-platform.slcp
index e4adf0743b..07117d7cb6 100644
--- a/examples/platform/silabs/matter-platform.slcp
+++ b/examples/platform/silabs/matter-platform.slcp
@@ -113,6 +113,8 @@ configuration:
- {name: SL_BT_RTOS_LINK_LAYER_TASK_STACK_SIZE, value: 1024}
- {name: SL_BT_RTOS_HOST_STACK_TASK_STACK_SIZE, value: 2048}
- {name: SL_BT_RTOS_EVENT_HANDLER_STACK_SIZE, value: 1536}
+- {name: SL_MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS, value: 1}
+- {name: SL_OPENTHREAD_ENABLE_SERIAL_TASK, value: 0}
template_contribution:
- name: mbedtls_ssl_content_len_in_requirement
diff --git a/examples/platform/silabs/provision/ProvisionStorageFlash.cpp b/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
index 047985a2ac..18ccc7c88d 100644
--- a/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
+++ b/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
@@ -29,6 +29,10 @@
#include
#endif // OTA_ENCRYPTION_ENABLE
+#if !SL_MATTER_GN_BUILD
+#include
+#endif
+
using namespace chip::Credentials;
#if SLI_SI91X_MCU_INTERFACE
diff --git a/src/platform/silabs/wifi/BUILD.gn b/src/platform/silabs/wifi/BUILD.gn
index d4877fcfd1..ded88553a0 100644
--- a/src/platform/silabs/wifi/BUILD.gn
+++ b/src/platform/silabs/wifi/BUILD.gn
@@ -139,9 +139,7 @@ source_set("wifi-platform") {
"${silabs_platform_dir}/wifi/SiWx/WifiInterface.cpp",
"${silabs_platform_dir}/wifi/wiseconnect-abstraction/WiseconnectInterfaceAbstraction.cpp",
"${silabs_platform_dir}/wifi/wiseconnect-abstraction/WiseconnectInterfaceAbstraction.h",
-
- # Wi-Fi Config - Using the file sdk support until the wiseconnect file is fixed
- "${matter_support_root}/sdk-copies/components/service/network_manager/src/sl_net_for_lwip.c",
+ "${wifi_sdk_root}/components/service/network_manager/src/sl_net_for_lwip.c",
]
public_deps += [ "${lwip_root}:lwip" ]
diff --git a/src/platform/silabs/wifi/SiWx/WifiInterface.cpp b/src/platform/silabs/wifi/SiWx/WifiInterface.cpp
index 96a12ab6bc..4978818e7a 100644
--- a/src/platform/silabs/wifi/SiWx/WifiInterface.cpp
+++ b/src/platform/silabs/wifi/SiWx/WifiInterface.cpp
@@ -100,16 +100,11 @@ bool ps_requirement_added = false;
#endif // CHIP_CONFIG_ENABLE_ICD_SERVER
bool hasNotifiedWifiConnectivity = false;
-bool hasNotifiedIPV6 = false;
-#if (CHIP_DEVICE_CONFIG_ENABLE_IPV4)
-bool hasNotifiedIPV4 = false;
-#endif /* CHIP_DEVICE_CONFIG_ENABLE_IPV4 */
wfx_wifi_scan_ext_t temp_reset;
osSemaphoreId_t sScanCompleteSemaphore;
osSemaphoreId_t sScanInProgressSemaphore;
-osTimerId_t sDHCPTimer;
osMessageQueueId_t sWifiEventQueue = nullptr;
sl_net_wifi_lwip_context_t wifi_client_context;
@@ -134,7 +129,8 @@ const sl_wifi_device_configuration_t config = {
#ifdef SLI_SI91X_MCU_INTERFACE
(SL_SI91X_FEAT_SECURITY_OPEN | SL_SI91X_FEAT_WPS_DISABLE),
#else
- (SL_SI91X_FEAT_SECURITY_OPEN | SL_SI91X_FEAT_AGGREGATION),
+ (SL_SI91X_FEAT_SECURITY_OPEN | SL_SI91X_FEAT_AGGREGATION | SL_SI91X_FEAT_ULP_GPIO_BASED_HANDSHAKE |
+ SL_SI91X_FEAT_DEV_TO_HOST_ULP_GPIO_1),
#endif
.tcp_ip_feature_bit_map = (SL_SI91X_TCP_IP_FEAT_DHCPV4_CLIENT | SL_SI91X_TCP_IP_FEAT_DNS_CLIENT |
SL_SI91X_TCP_IP_FEAT_SSL | SL_SI91X_TCP_IP_FEAT_BYPASS
@@ -207,27 +203,6 @@ constexpr uint8_t kWfxQueueSize = 10;
// TODO: Figure out why we actually need this, we are already handling failure and retries somewhere else.
constexpr uint16_t kWifiScanTimeoutTicks = 10000;
-void DHCPTimerEventHandler(void * arg)
-{
- WifiEvent event = WifiEvent::kStationDhcpPoll;
- sl_matter_wifi_post_event(event);
-}
-
-void CancelDHCPTimer(void)
-{
- VerifyOrReturn(osTimerIsRunning(sDHCPTimer), ChipLogDetail(DeviceLayer, "CancelDHCPTimer: timer not running"));
- VerifyOrReturn(osTimerStop(sDHCPTimer) == osOK, ChipLogError(DeviceLayer, "CancelDHCPTimer: failed to stop timer"));
-}
-
-void StartDHCPTimer(uint32_t timeout)
-{
- // Cancel timer if already started
- CancelDHCPTimer();
-
- VerifyOrReturn(osTimerStart(sDHCPTimer, pdMS_TO_TICKS(timeout)) == osOK,
- ChipLogError(DeviceLayer, "StartDHCPTimer: failed to start timer"));
-}
-
sl_status_t sl_wifi_siwx917_init(void)
{
sl_status_t status = SL_STATUS_OK;
@@ -356,7 +331,10 @@ sl_status_t SetWifiConfigurations()
VerifyOrReturnError(status == SL_STATUS_OK, status,
ChipLogError(DeviceLayer, "sl_wifi_set_listen_interval failed: 0x%lx", status));
- sl_wifi_advanced_client_configuration_t client_config = { .max_retry_attempts = 5 };
+ // This is be triggered on the disconnect use case, providing the amount of TA tries
+ // Setting the TA retry to 1 and giving the control to the M4 for improved power efficiency
+ // When max_retry_attempts is set to 0, TA will retry indefinitely.
+ sl_wifi_advanced_client_configuration_t client_config = { .max_retry_attempts = 1 };
status = sl_wifi_set_advanced_client_configuration(SL_WIFI_CLIENT_INTERFACE, &client_config);
VerifyOrReturnError(status == SL_STATUS_OK, status,
ChipLogError(DeviceLayer, "sl_wifi_set_advanced_client_configuration failed: 0x%lx", status));
@@ -513,11 +491,6 @@ sl_status_t sl_matter_wifi_platform_init(void)
sWifiEventQueue = osMessageQueueNew(kWfxQueueSize, sizeof(WifiEvent), nullptr);
VerifyOrReturnError(sWifiEventQueue != nullptr, SL_STATUS_ALLOCATION_FAILED);
- // Create timer for DHCP polling
- // TODO: Use LWIP timer instead of creating a new one here
- sDHCPTimer = osTimerNew(DHCPTimerEventHandler, osTimerPeriodic, nullptr, nullptr);
- VerifyOrReturnError(sDHCPTimer != nullptr, SL_STATUS_ALLOCATION_FAILED);
-
return status;
}
@@ -661,7 +634,6 @@ sl_status_t bg_scan_callback_handler(sl_wifi_event_t event, sl_wifi_scan_result_
/// NotifyConnectivity
/// @brief Notify the application about the connectivity status if it has not been notified yet.
-/// Helper function for HandleDHCPPolling.
void NotifyConnectivity(void)
{
VerifyOrReturn(!hasNotifiedWifiConnectivity);
@@ -669,45 +641,22 @@ void NotifyConnectivity(void)
hasNotifiedWifiConnectivity = true;
}
-void HandleDHCPPolling(void)
+/// NotifySuccessfulConnection
+/// @brief Processing function responsible for notifying the upper layers of a succesful connection attempt.
+void NotifySuccessfulConnection(void)
{
- WifiEvent event;
-
- // TODO: Notify the application that the interface is not set up or Chipdie here because we are in an unkonwn state
struct netif * sta_netif = &wifi_client_context.netif;
VerifyOrReturn(sta_netif != nullptr, ChipLogError(DeviceLayer, "HandleDHCPPolling: failed to get STA netif"));
-
#if (CHIP_DEVICE_CONFIG_ENABLE_IPV4)
- uint8_t dhcp_state = dhcpclient_poll(sta_netif);
- if (dhcp_state == DHCP_ADDRESS_ASSIGNED && !hasNotifiedIPV4)
- {
- wfx_dhcp_got_ipv4((uint32_t) sta_netif->ip_addr.u_addr.ip4.addr);
- hasNotifiedIPV4 = true;
- event = WifiEvent::kStationDhcpDone;
- sl_matter_wifi_post_event(event);
- NotifyConnectivity();
- }
- else if (dhcp_state == DHCP_OFF)
- {
- wfx_ip_changed_notify(IP_STATUS_FAIL);
- hasNotifiedIPV4 = false;
- }
+ wfx_dhcp_got_ipv4((uint32_t) sta_netif->ip_addr.u_addr.ip4.addr);
#endif /* CHIP_DEVICE_CONFIG_ENABLE_IPV4 */
- /* Checks if the assigned IPv6 address is preferred by evaluating
- * the first block of IPv6 address ( block 0)
- */
- if ((ip6_addr_ispreferred(netif_ip6_addr_state(sta_netif, 0))) && !hasNotifiedIPV6)
- {
- char addrStr[chip::Inet::IPAddress::kMaxStringLength] = { 0 };
- VerifyOrReturn(ip6addr_ntoa_r(netif_ip6_addr(sta_netif, 0), addrStr, sizeof(addrStr)) != nullptr);
- ChipLogProgress(DeviceLayer, "SLAAC OK: linklocal addr: %s", addrStr);
- wfx_ipv6_notify(GET_IPV6_SUCCESS);
- hasNotifiedIPV6 = true;
- event = WifiEvent::kStationDhcpDone;
- sl_matter_wifi_post_event(event);
- NotifyConnectivity();
- }
+ char addrStr[chip::Inet::IPAddress::kMaxStringLength] = { 0 };
+ VerifyOrReturn(ip6addr_ntoa_r(netif_ip6_addr(sta_netif, 0), addrStr, sizeof(addrStr)) != nullptr);
+ ChipLogProgress(DeviceLayer, "SLAAC OK: linklocal addr: %s", addrStr);
+ wfx_ipv6_notify(GET_IPV6_SUCCESS);
+ NotifyConnectivity();
}
+
void sl_matter_wifi_post_event(WifiEvent event)
{
sl_status_t status = osMessageQueuePut(sWifiEventQueue, &event, 0, 0);
@@ -719,19 +668,14 @@ void sl_matter_wifi_post_event(WifiEvent event)
// Chipdie, etc.
}
}
-/// ResetDHCPNotificationFlags
+/// ResetConnectivityNotificationFlags
/// @brief Reset the flags that are used to notify the application about DHCP connectivity
-/// and emits a WifiEvent::kStationDoDhcp event to trigger DHCP polling checks. Helper function for ProcessEvent.
-void ResetDHCPNotificationFlags(void)
+/// and emits a WifiEvent::kConnectionComplete event to trigger DHCP polling checks. Helper function for ProcessEvent.
+void ResetConnectivityNotificationFlags(void)
{
-
-#if (CHIP_DEVICE_CONFIG_ENABLE_IPV4)
- hasNotifiedIPV4 = false;
-#endif // CHIP_DEVICE_CONFIG_ENABLE_IPV4
- hasNotifiedIPV6 = false;
hasNotifiedWifiConnectivity = false;
- WifiEvent event = WifiEvent::kStationDoDhcp;
+ WifiEvent event = WifiEvent::kConnectionComplete;
sl_matter_wifi_post_event(event);
}
@@ -743,7 +687,7 @@ void ProcessEvent(WifiEvent event)
case WifiEvent::kStationConnect:
ChipLogDetail(DeviceLayer, "WifiEvent::kStationConnect");
wfx_rsi.dev_state.Set(WifiState::kStationConnected);
- ResetDHCPNotificationFlags();
+ ResetConnectivityNotificationFlags();
break;
case WifiEvent::kStationDisconnect: {
@@ -756,7 +700,7 @@ void ProcessEvent(WifiEvent event)
.Clear(WifiState::kStationDhcpDone);
/* TODO: Implement disconnect notify */
- ResetDHCPNotificationFlags();
+ ResetConnectivityNotificationFlags();
#if (CHIP_DEVICE_CONFIG_ENABLE_IPV4)
wfx_ip_changed_notify(0); // for IPV4
wfx_ip_changed_notify(IP_STATUS_FAIL);
@@ -833,20 +777,9 @@ void ProcessEvent(WifiEvent event)
JoinWifiNetwork();
break;
- case WifiEvent::kStationDoDhcp:
- ChipLogDetail(DeviceLayer, "WifiEvent::kStationDoDhcp");
- StartDHCPTimer(WFX_RSI_DHCP_POLL_INTERVAL);
- break;
-
- case WifiEvent::kStationDhcpDone:
- ChipLogDetail(DeviceLayer, "WifiEvent::kStationDhcpDone");
- CancelDHCPTimer();
- break;
-
- case WifiEvent::kStationDhcpPoll:
- ChipLogDetail(DeviceLayer, "WifiEvent::kStationDhcpPoll");
- HandleDHCPPolling();
- break;
+ case WifiEvent::kConnectionComplete:
+ ChipLogDetail(DeviceLayer, "WifiPlatformEvent::kConnectionComplete");
+ NotifySuccessfulConnection();
default:
break;
diff --git a/src/platform/silabs/wifi/WifiInterfaceAbstraction.h b/src/platform/silabs/wifi/WifiInterfaceAbstraction.h
index 623fff85de..3b31de8a2d 100644
--- a/src/platform/silabs/wifi/WifiInterfaceAbstraction.h
+++ b/src/platform/silabs/wifi/WifiInterfaceAbstraction.h
@@ -87,15 +87,15 @@ enum class WifiState : uint16_t
enum class WifiEvent : uint8_t
{
- kStationConnect = 0,
- kStationDisconnect = 1,
- kAPStart = 2,
- kAPStop = 3,
- kScan = 4, /* This is used as scan result and start */
- kStationStartJoin = 5,
- kStationDoDhcp = 6,
- kStationDhcpDone = 7,
- kStationDhcpPoll = 8
+ kStationConnect = 0,
+ kStationDisconnect = 1,
+ kAPStart = 2,
+ kAPStop = 3,
+ kScan = 4, /* This is used as scan result and start */
+ kStationStartJoin = 5,
+ kConnectionComplete = 6,
+ kStationDhcpDone = 7,
+ kStationDhcpPoll = 8
};
typedef enum
diff --git a/src/platform/silabs/wifi/rs911x/WifiInterface.cpp b/src/platform/silabs/wifi/rs911x/WifiInterface.cpp
index 90027eedba..e495af3e64 100644
--- a/src/platform/silabs/wifi/rs911x/WifiInterface.cpp
+++ b/src/platform/silabs/wifi/rs911x/WifiInterface.cpp
@@ -606,7 +606,7 @@ void HandleDHCPPolling(void)
/** ResetDHCPNotificationFlags
* @brief Reset the flags that are used to notify the application about DHCP connectivity
- * and emits a WifiEvent::kStationDoDhcp event to trigger DHCP polling checks. Helper function for ProcessEvent.
+ * and emits a WifiEvent::kConnectionComplete event to trigger DHCP polling checks. Helper function for ProcessEvent.
*/
void ResetDHCPNotificationFlags(void)
{
@@ -618,7 +618,7 @@ void ResetDHCPNotificationFlags(void)
hasNotifiedIPV6 = false;
hasNotifiedWifiConnectivity = false;
- outEvent = WifiEvent::kStationDoDhcp;
+ outEvent = WifiEvent::kConnectionComplete;
sl_matter_wifi_post_event(outEvent);
}
@@ -752,7 +752,7 @@ void ProcessEvent(WifiEvent event)
sl_wifi_platform_join_network();
}
break;
- case WifiEvent::kStationDoDhcp: {
+ case WifiEvent::kConnectionComplete: {
StartDHCPTimer(WFX_RSI_DHCP_POLL_INTERVAL);
}
break;
diff --git a/src/platform/silabs/wifi/rs911x/rs9117.gni b/src/platform/silabs/wifi/rs911x/rs9117.gni
index 7516584739..0b48db3d8d 100644
--- a/src/platform/silabs/wifi/rs911x/rs9117.gni
+++ b/src/platform/silabs/wifi/rs911x/rs9117.gni
@@ -44,9 +44,6 @@ rs9117_src_sapi = [
"${wifi_sdk_root}/components/device/silabs/si91x/wireless/ncp_interface/spi/sl_si91x_spi.c",
"${wifi_sdk_root}/components/device/silabs/si91x/wireless/ncp_interface/sl_si91x_ncp_driver.c",
- # Wi-Fi Config - Using the file sdk support until the wiseconnect file is fixed
- "${matter_support_root}/sdk-copies/components/service/network_manager/src/sl_net_for_lwip.c",
-
# wifi component
"${wifi_sdk_root}/components/protocol/wifi/src/sl_wifi_basic_credentials.c",
"${wifi_sdk_root}/components/protocol/wifi/src/sl_wifi_callback_framework.c",
@@ -55,6 +52,7 @@ rs9117_src_sapi = [
# basic_network_manager component
"${wifi_sdk_root}/components/service/network_manager/src/sl_net_credentials.c",
"${wifi_sdk_root}/components/service/network_manager/src/sl_net_basic_profiles.c",
+ "${wifi_sdk_root}/components/service/network_manager/src/sl_net_for_lwip.c",
# si91x_basic_buffers component
"${wifi_sdk_root}/components/device/silabs/si91x/wireless/memory/malloc_buffers.c",
diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni
index c7793b8e5a..f30f7feff3 100644
--- a/third_party/silabs/efr32_sdk.gni
+++ b/third_party/silabs/efr32_sdk.gni
@@ -172,6 +172,7 @@ template("efr32_sdk") {
"${efr32_sdk_root}/platform/bootloader",
"${efr32_sdk_root}/platform/bootloader/config",
"${efr32_sdk_root}/platform/bootloader/config/btl_interface",
+ "${efr32_sdk_root}/platform/bootloader/core/flash",
"${efr32_sdk_root}/platform/bootloader/api",
"${efr32_sdk_root}/platform/CMSIS/Core/Include",
"${efr32_sdk_root}/platform/CMSIS/RTOS2/Include",
@@ -733,6 +734,7 @@ template("efr32_sdk") {
"${efr32_sdk_root}/platform/CMSIS/RTOS2/Source/os_systick.c",
"${efr32_sdk_root}/platform/bootloader/api/btl_interface.c",
"${efr32_sdk_root}/platform/bootloader/api/btl_interface_storage.c",
+ "${efr32_sdk_root}/platform/bootloader/core/flash/btl_internal_flash.c",
"${efr32_sdk_root}/platform/bootloader/security/sha/crypto_sha.c",
"${efr32_sdk_root}/platform/common/src/sl_core_cortexm.c",
"${efr32_sdk_root}/platform/common/src/sl_slist.c",
diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support
index d6d19e512a..4dd871d868 160000
--- a/third_party/silabs/matter_support
+++ b/third_party/silabs/matter_support
@@ -1 +1 @@
-Subproject commit d6d19e512aa2fe54fb939887c2d0ce0700ae7099
+Subproject commit 4dd871d868695c2c3a196d4ebb41992ba9b1f7ab
diff --git a/third_party/silabs/simplicity_sdk b/third_party/silabs/simplicity_sdk
index 8627f84825..da661283f3 160000
--- a/third_party/silabs/simplicity_sdk
+++ b/third_party/silabs/simplicity_sdk
@@ -1 +1 @@
-Subproject commit 8627f8482564dc6d94b56512740a39d6f409a0eb
+Subproject commit da661283f301b53eec04d1016009e60bc7e34a1f
diff --git a/third_party/silabs/wifi_sdk b/third_party/silabs/wifi_sdk
index 9f6db891b3..f675628eef 160000
--- a/third_party/silabs/wifi_sdk
+++ b/third_party/silabs/wifi_sdk
@@ -1 +1 @@
-Subproject commit 9f6db891b349369a45da7d66f53f9cd83d3ba260
+Subproject commit f675628eefa1ac4990e94146abb75dd08b522571
diff --git a/third_party/silabs/wiseconnect-wifi-bt-sdk b/third_party/silabs/wiseconnect-wifi-bt-sdk
index b6d6cb552b..3dbc243390 160000
--- a/third_party/silabs/wiseconnect-wifi-bt-sdk
+++ b/third_party/silabs/wiseconnect-wifi-bt-sdk
@@ -1 +1 @@
-Subproject commit b6d6cb552beb4ecb6e690e0db4c9d374f8ba1b15
+Subproject commit 3dbc243390a99311968b4d39fe0339b7c8a201ec