From 59d67c740c5ee0ab47d08b9689780c82cd0b0ff7 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 11 Apr 2026 20:51:42 +0900 Subject: [PATCH] Replace net_poll budget with snapshot-based drain: read available bytes once, stop when consumed --- firmware/lib/net.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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); }