From cf7df418edc922c0490c7969b4d5c1988daff7d3 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sat, 1 May 2021 19:51:24 +0200 Subject: [PATCH] Kernel: Make sure we read all packets The previous patch already helped with this, however my idea of only reading a few packets didn't work and we'd still sometimes end up not receiving any more packets from the E1000 interface. With this patch applied my NIC seems to receive packets just fine, at least for now. --- Kernel/Net/E1000NetworkAdapter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Net/E1000NetworkAdapter.cpp b/Kernel/Net/E1000NetworkAdapter.cpp index 1b1ddb97ad..848945672a 100644 --- a/Kernel/Net/E1000NetworkAdapter.cpp +++ b/Kernel/Net/E1000NetworkAdapter.cpp @@ -426,7 +426,7 @@ void E1000NetworkAdapter::receive() { auto* rx_descriptors = (e1000_tx_desc*)m_rx_descriptors_region->vaddr().as_ptr(); u32 rx_current; - for (u32 i = 0; i < number_of_rx_descriptors; i++) { + for (;;) { rx_current = in32(REG_RXDESCTAIL) % number_of_rx_descriptors; rx_current = (rx_current + 1) % number_of_rx_descriptors; if (!(rx_descriptors[rx_current].status & 1))