[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;