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")); } }