Replace net_poll budget with snapshot-based drain: read available bytes once, stop when consumed

This commit is contained in:
Ian Gulliver
2026-04-11 20:51:42 +09:00
parent ecc8271648
commit 59d67c740c

View File

@@ -137,10 +137,12 @@ void net_poll(std::span<uint8_t> tx) {
w6300::irq_pending = false; w6300::irq_pending = false;
w6300::clear_interrupt(w6300::ik_int_all); w6300::clear_interrupt(w6300::ik_int_all);
static uint8_t rx_buf[1518]; static uint8_t rx_buf[1518];
int budget = 10; uint16_t available = w6300::get_socket_recv_buf(raw_socket);
while (budget-- > 0 && w6300::get_socket_recv_buf(raw_socket) > 0) { uint16_t consumed = 0;
while (consumed < available) {
auto result = w6300::recv(raw_socket, std::span{rx_buf}); auto result = w6300::recv(raw_socket, std::span{rx_buf});
if (!result) break; if (!result) break;
consumed += *result + 2;
span_writer tx_writer(tx); span_writer tx_writer(tx);
process_frame({rx_buf, *result}, tx_writer); process_frame({rx_buf, *result}, tx_writer);
} }