From 65764a8e569002339c7184feb1c01e2c8ee41df6 Mon Sep 17 00:00:00 2001 From: Vincent Ollivier Date: Wed, 27 Mar 2024 09:35:28 +0100 Subject: [PATCH] Return received buffer --- src/sys/net/nic/e1000.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/sys/net/nic/e1000.rs b/src/sys/net/nic/e1000.rs index 37afd76..cfd0780 100644 --- a/src/sys/net/nic/e1000.rs +++ b/src/sys/net/nic/e1000.rs @@ -462,13 +462,14 @@ impl EthernetDeviceIO for Device { let rx_id = self.rx_id.load(Ordering::SeqCst); debug!("NET E1000: rx_id = {}", rx_id); + let rx_descs = self.rx_descs.lock(); //debug!("NET E1000: {:?}", rx_descs[rx_id]); fence(Ordering::SeqCst); - let rx_id = (rx_id + 1) % RX_BUFFERS_COUNT; - self.rx_id.store(rx_id, Ordering::SeqCst); - //self.write(REG_RDT, rx_id as u32); - //debug!("NET E1000: RDT -> rx_id = {:#X}", rx_id); + self.rx_id.store((rx_id + 1) % RX_BUFFERS_COUNT, Ordering::SeqCst); + + let n = rx_descs[rx_id].len as usize; + return Some(self.rx_buffers[rx_id][0..n].to_vec()); } for i in 0..RX_BUFFERS_COUNT {