diff --git a/components/esp_netif/lwip/esp_netif_lwip_slip.c b/components/esp_netif/lwip/esp_netif_lwip_slip.c index 769cbf12ae..9d2d56dc2f 100644 --- a/components/esp_netif/lwip/esp_netif_lwip_slip.c +++ b/components/esp_netif/lwip/esp_netif_lwip_slip.c @@ -166,7 +166,13 @@ void esp_netif_lwip_slip_input(void *h, void *buffer, unsigned int len, void *eb ESP_LOG_BUFFER_HEXDUMP(TAG, buffer, len, ESP_LOG_DEBUG); // Update slip netif with data - slipif_received_bytes(netif->lwip_netif, buffer, len); + const int max_batch = 255; + int sent = 0; + while(sent < len) { + int batch = (len - sent) > max_batch ? max_batch : (len - sent); + slipif_received_bytes(netif->lwip_netif, buffer+sent, batch); + sent += batch; + } // Process incoming bytes for (int i = 0; i < len; i++) {