From ed70ab36561b0526a868659f362f4ae3e9756a3c Mon Sep 17 00:00:00 2001 From: datdenkikniet Date: Fri, 14 Nov 2025 17:19:49 +0100 Subject: [PATCH 1/2] Use probe-rs instead of probe-run --- .cargo/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 3a1e17c..487f90a 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,5 @@ [target.'cfg(all(target_arch = "arm", target_os = "none"))'] -runner = 'probe-run' +runner = 'probe-rs run' rustflags = [ "-C", "link-arg=-Tlink.x", "-C", "link-arg=-Tdefmt.x", From 54b332b6fd43ae64bf23cd249edfed0468178ce3 Mon Sep 17 00:00:00 2001 From: datdenkikniet Date: Fri, 14 Nov 2025 18:30:53 +0100 Subject: [PATCH 2/2] Handle non-WouldBlock errors in smoltcp::phy::Device implemenation --- src/dma/smoltcp_phy.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/dma/smoltcp_phy.rs b/src/dma/smoltcp_phy.rs index 67424aa..f1ead36 100644 --- a/src/dma/smoltcp_phy.rs +++ b/src/dma/smoltcp_phy.rs @@ -1,3 +1,5 @@ +use crate::dma::RxError; + use super::rx::RxRing; use super::tx::TxRing; use super::EthernetDMA; @@ -86,11 +88,23 @@ impl<'dma, 'rx> RxToken for EthRxToken<'dma, 'rx> { #[cfg(not(feature = "ptp"))] let meta = None; - // NOTE(unwrap): an `EthRxToken` is only created when `eth.rx_available()` - let packet = self.rx_ring.recv_next(meta).ok().unwrap(); - let result = f(&packet); - packet.free(); - result + match self.rx_ring.recv_next(meta) { + Ok(v) => { + let result = f(&v); + v.free(); + result + } + Err(RxError::WouldBlock) => { + #[cfg(feature = "defmt")] + defmt::error!("EthRxToken: RX would block"); + f(&[]) + } + Err(_e) => { + #[cfg(feature = "defmt")] + defmt::debug!("Failed to receive packet: {}", _e); + f(&[]) + } + } } #[cfg(feature = "ptp")]