From 0719c98aca69e85a328e301030297eb67a1df98a Mon Sep 17 00:00:00 2001 From: Elvis Pfutzenreuter Date: Wed, 22 May 2024 16:33:33 -0300 Subject: [PATCH] ports/esp32: Make LAN.active() idempotent. Signed-off-by: Elvis Pfutzenreuter --- ports/esp32/network_lan.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ports/esp32/network_lan.c b/ports/esp32/network_lan.c index 570c9a4afdef..33318cc988ae 100644 --- a/ports/esp32/network_lan.c +++ b/ports/esp32/network_lan.c @@ -314,13 +314,15 @@ static mp_obj_t lan_active(size_t n_args, const mp_obj_t *args) { if (n_args > 1) { if (mp_obj_is_true(args[1])) { esp_netif_set_hostname(self->base.netif, mod_network_hostname_data); - self->base.active = (esp_eth_start(self->eth_handle) == ESP_OK); - if (!self->base.active) { + esp_err_t res = esp_eth_start(self->eth_handle); + self->base.active = (res == ESP_OK); + if (!self->base.active && res != ESP_ERR_INVALID_STATE) { mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("ethernet enable failed")); } } else { - self->base.active = !(esp_eth_stop(self->eth_handle) == ESP_OK); - if (self->base.active) { + esp_err_t res = esp_eth_stop(self->eth_handle); + self->base.active = !(res == ESP_OK); + if (self->base.active && res != ESP_ERR_INVALID_STATE) { mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("ethernet disable failed")); } }