aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan McIntyre <me@mciantyre.dev>2025-07-17 20:59:46 -0400
committerIan McIntyre <me@mciantyre.dev>2025-07-17 20:59:46 -0400
commitf3ae75ebd3410c83c5ad4d8b874061d25be95043 (patch)
treecf37fddc86fe68fd2f9759a5eb311519f4417518 /src
parent6498f85de3078ad7c3206c22c690ecb3d0fa71bb (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.rs3
-rw-r--r--src/lib.rs2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/bd.rs b/src/bd.rs
index 9d7ac3c..1afb93b 100644
--- a/src/bd.rs
+++ b/src/bd.rs
@@ -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> {
diff --git a/src/lib.rs b/src/lib.rs
index e24ccb7..0eda7f2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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;