From 59c2778418f847e76170c8d91a7ab4e1045fda31 Mon Sep 17 00:00:00 2001 From: Adam Greig Date: Sat, 6 Jun 2026 18:00:22 +0100 Subject: [PATCH] Add eth-packet-trace feature that cfg-gates the logging at ethernet packet reception/transmission --- firmware/zynq7000-hal/Cargo.toml | 4 ++++ firmware/zynq7000-hal/src/eth/smoltcp.rs | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/firmware/zynq7000-hal/Cargo.toml b/firmware/zynq7000-hal/Cargo.toml index 7883c56..b68be84 100644 --- a/firmware/zynq7000-hal/Cargo.toml +++ b/firmware/zynq7000-hal/Cargo.toml @@ -65,6 +65,10 @@ time-driver-gtc = ["dep:embassy-time-driver", "dep:embassy-time-queue-utils", "d # caching is disabled. eth-cache-maintenance = [] +# Enable debug-level (packet size only) and trace-level (packet contents) +# logging of all packets received and transmitted. +eth-packet-trace = [] + [dev-dependencies] approx = "0.5" diff --git a/firmware/zynq7000-hal/src/eth/smoltcp.rs b/firmware/zynq7000-hal/src/eth/smoltcp.rs index cc15473..9b0c655 100644 --- a/firmware/zynq7000-hal/src/eth/smoltcp.rs +++ b/firmware/zynq7000-hal/src/eth/smoltcp.rs @@ -53,7 +53,9 @@ impl SmoltcpRxToken<'_> { invalidate_data_cache_range(self.rx_buf.0.as_ptr() as u32, clean_invalidate_len) .expect("RX buffer or buffer size not aligned to cache line size"); + #[cfg(feature = "eth-packet-trace")] log::debug!("eth rx {} bytes", self.rx_size); + #[cfg(feature = "eth-packet-trace")] log::trace!("rx data: {:x?}", &self.rx_buf.0[0..self.rx_size]); let result = f(&mut self.rx_buf.0[0..self.rx_size]); self.descr_list.clear_slot(self.slot_index); @@ -112,7 +114,9 @@ impl SmoltcpTxToken<'_> { clean_and_invalidate_data_cache_range(buffer.0.as_ptr() as u32, clean_invalidate_len) .expect("TX buffer or buffer size not aligned to cache line size"); + #[cfg(feature = "eth-packet-trace")] log::debug!("eth tx {len} bytes"); + #[cfg(feature = "eth-packet-trace")] log::trace!("tx data: {:x?}", &buffer.0[0..len]); self.descr_list .prepare_transfer_unchecked(Some(addr), u14::new(len as u16), true, false); @@ -255,12 +259,13 @@ impl CommonSmoltcpDriver { rx_descr::FrameScanResult::SingleFrame { index, size, - status, + status: _status, } => { + #[cfg(feature = "eth-packet-trace")] log::trace!( "eth rx frame, fsc status {:?}, cksum status {:?}", - status.fcs_status(), - status.type_id_match_info_or_chksum_status() + _status.fcs_status(), + _status.type_id_match_info_or_chksum_status() ); let rx_buf = self.bufs.rx_bufs.get_mut(index).unwrap();