diff --git a/src/iface/interface.rs b/src/iface/interface.rs index 05dae4e..f32f796 100644 --- a/src/iface/interface.rs +++ b/src/iface/interface.rs @@ -594,12 +594,8 @@ impl<'a, DeviceT> Interface<'a, DeviceT> fn socket_ingress(&mut self, sockets: &mut SocketSet, timestamp: Instant) -> bool { let mut processed_any = false; - loop { - let &mut Self { ref mut device, ref mut inner } = self; - let (rx_token, tx_token) = match device.receive() { - None => break, - Some(tokens) => tokens, - }; + let &mut Self { ref mut device, ref mut inner } = self; + while let Some((rx_token, tx_token)) = device.receive() { match rx_token.consume(timestamp, |frame| { match inner.device_capabilities.medium { #[cfg(feature = "medium-ethernet")] @@ -645,6 +641,7 @@ impl<'a, DeviceT> Interface<'a, DeviceT> Ok(_) => {}, }; } + processed_any }