diff --git a/cpu/esp8266/esp-wifi/esp_wifi_netdev.c b/cpu/esp8266/esp-wifi/esp_wifi_netdev.c
index e03f48d49ede220bdd15c1cef41bc28838238041..ac923b2001ecfa93d4d62d7a553a586d0b9a0761 100644
--- a/cpu/esp8266/esp-wifi/esp_wifi_netdev.c
+++ b/cpu/esp8266/esp-wifi/esp_wifi_netdev.c
@@ -514,7 +514,12 @@ extern err_t __real_ethernet_input(struct pbuf *pb, struct netif* netif);
 err_t __wrap_ethernet_input(struct pbuf *pb, struct netif* netif)
 {
     ESP_WIFI_DEBUG("%p %p", pb, netif);
-    _esp_wifi_recv_cb(pb, netif);
+    if (_esp_wifi_dev.state == ESP_WIFI_CONNECTED) {
+        _esp_wifi_recv_cb(pb, netif);
+    }
+    else {
+        __real_ethernet_input(pb, netif);
+    }
     return ERR_OK;
 }