diff --git a/firmware/lib/net.cpp b/firmware/lib/net.cpp index 01d16d9..87784d9 100644 --- a/firmware/lib/net.cpp +++ b/firmware/lib/net.cpp @@ -137,10 +137,12 @@ void net_poll(std::span tx) { w6300::irq_pending = false; w6300::clear_interrupt(w6300::ik_int_all); static uint8_t rx_buf[1518]; - int budget = 10; - while (budget-- > 0 && w6300::get_socket_recv_buf(raw_socket) > 0) { + uint16_t available = w6300::get_socket_recv_buf(raw_socket); + uint16_t consumed = 0; + while (consumed < available) { auto result = w6300::recv(raw_socket, std::span{rx_buf}); if (!result) break; + consumed += *result + 2; span_writer tx_writer(tx); process_frame({rx_buf, *result}, tx_writer); }