diff --git a/components/esp_netif/lwip/esp_netif_lwip.c b/components/esp_netif/lwip/esp_netif_lwip.c index e656042882..d59e7cc3cb 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -1121,8 +1121,13 @@ bool esp_netif_is_netif_up(esp_netif_t *esp_netif) { ESP_LOGV(TAG, "%s esp_netif:%p", __func__, esp_netif); - if (esp_netif != NULL && esp_netif->lwip_netif != NULL && netif_is_up(esp_netif->lwip_netif)) { - return true; + if (esp_netif != NULL && esp_netif->lwip_netif != NULL) { + if (esp_netif->is_ppp_netif) { + // ppp implementation uses netif_set_link_up/down to update link state + return netif_is_link_up(esp_netif->lwip_netif); + } + // esp-netif handlers and drivers take care to set_netif_up/down on link state update + return netif_is_up(esp_netif->lwip_netif); } else { return false; }