diff options
| author | Ian McIntyre <me@mciantyre.dev> | 2025-07-17 20:59:46 -0400 |
|---|---|---|
| committer | Ian McIntyre <me@mciantyre.dev> | 2025-07-17 20:59:46 -0400 |
| commit | f3ae75ebd3410c83c5ad4d8b874061d25be95043 (patch) | |
| tree | cf37fddc86fe68fd2f9759a5eb311519f4417518 /src | |
| parent | 6498f85de3078ad7c3206c22c690ecb3d0fa71bb (diff) | |
Fix max burst size computation
The units are "MTUs," not "bytes." With this in mind, we can burst the
minimum number of buffers.
Diffstat (limited to 'src')
| -rw-r--r-- | src/bd.rs | 3 | ||||
| -rw-r--r-- | src/lib.rs | 2 |
2 files changed, 4 insertions, 1 deletions
@@ -153,6 +153,9 @@ impl<'a, D> IoSlices<'a, D> { pub(crate) fn mtu(&self) -> usize { self.mtu } + pub(crate) fn len(&self) -> usize { + self.ring.len() + } } impl<D> IoSlices<'_, D> { @@ -347,7 +347,7 @@ impl<const N: u8> smoltcp::phy::Device for Enet<N> { let mut caps = smoltcp::phy::DeviceCapabilities::default(); caps.medium = smoltcp::phy::Medium::Ethernet; caps.max_transmission_unit = mtu; - caps.max_burst_size = Some(mtu); + caps.max_burst_size = Some(self.tx_ring.len().min(self.rx_ring.len())); caps.checksum.ipv4 = smoltcp::phy::Checksum::None; caps.checksum.udp = smoltcp::phy::Checksum::None; |
