[ESP32] Fix issue with ethernet commissioning (#27808)
diff --git a/src/platform/ESP32/CHIPDevicePlatformConfig.h b/src/platform/ESP32/CHIPDevicePlatformConfig.h
index dd1dc97..493d240 100644
--- a/src/platform/ESP32/CHIPDevicePlatformConfig.h
+++ b/src/platform/ESP32/CHIPDevicePlatformConfig.h
@@ -72,7 +72,8 @@
#define CHIP_DEVICE_CONFIG_ENABLE_WIFI CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP | CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION
#endif // CONFIG_IDF_TARGET_ESP32H2
-#define CHIP_DEVICE_CONFIG_ENABLE_SED CONFIG_WIFI_POWER_SAVE_MIN || CONFIG_WIFI_POWER_SAVE_MAX
+#define CHIP_DEVICE_CONFIG_ENABLE_SED \
+ !CONFIG_ENABLE_ETHERNET_TELEMETRY && (CONFIG_WIFI_POWER_SAVE_MIN || CONFIG_WIFI_POWER_SAVE_MAX)
#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE CONFIG_ENABLE_CHIPOBLE
#define CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY CONFIG_ENABLE_EXTENDED_DISCOVERY
diff --git a/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp b/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp
index e611304..f8cce41 100644
--- a/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp
+++ b/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp
@@ -25,6 +25,21 @@
namespace DeviceLayer {
namespace NetworkCommissioning {
+static void on_eth_event(void * esp_netif, esp_event_base_t event_base, int32_t event_id, void * event_data)
+{
+ switch (event_id)
+ {
+ case ETHERNET_EVENT_CONNECTED: {
+ esp_netif_t * eth_netif = (esp_netif_t *) esp_netif;
+ ChipLogProgress(DeviceLayer, "Ethernet Connected");
+ ESP_ERROR_CHECK(esp_netif_create_ip6_linklocal(eth_netif));
+ }
+ break;
+ default:
+ break;
+ }
+}
+
CHIP_ERROR ESPEthernetDriver::Init(NetworkStatusChangeCallback * networkStatusChangeCallback)
{
/* Currently default ethernet board supported is IP101, if you want to use other types of
@@ -50,6 +65,8 @@
/* attach Ethernet driver to TCP/IP stack */
ESP_ERROR_CHECK(esp_netif_attach(eth_netif, esp_eth_new_netif_glue(eth_handle)));
+ ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ETHERNET_EVENT_CONNECTED, &on_eth_event, eth_netif));
+
ESP_ERROR_CHECK(esp_eth_start(eth_handle));
return CHIP_NO_ERROR;