From 46e1bae9e36917c2e763082730d99df302c1c625 Mon Sep 17 00:00:00 2001 From: Thales Fragoso Date: Mon, 7 Jun 2021 02:30:38 -0300 Subject: eth-v2: Start Ethernet peripheral implementation --- embassy-net/src/lib.rs | 2 +- embassy-net/src/packet_pool.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'embassy-net/src') diff --git a/embassy-net/src/lib.rs b/embassy-net/src/lib.rs index 88dcf0aa5..51eb97a2e 100644 --- a/embassy-net/src/lib.rs +++ b/embassy-net/src/lib.rs @@ -13,7 +13,7 @@ pub use config::DhcpConfigurator; pub use config::{Config, Configurator, Event as ConfigEvent, StaticConfigurator}; pub use device::{Device, LinkState}; -pub use packet_pool::{Packet, PacketBox, PacketBoxExt, PacketBuf}; +pub use packet_pool::{Packet, PacketBox, PacketBoxExt, PacketBuf, MTU}; pub use stack::{init, is_config_up, is_init, is_link_up, run}; #[cfg(feature = "tcp")] diff --git a/embassy-net/src/packet_pool.rs b/embassy-net/src/packet_pool.rs index 2c27d4013..0ec88e649 100644 --- a/embassy-net/src/packet_pool.rs +++ b/embassy-net/src/packet_pool.rs @@ -3,12 +3,13 @@ use core::ops::{Deref, DerefMut, Range}; use atomic_pool::{pool, Box}; -pub const MTU: usize = 1514; +pub const MTU: usize = 1516; pub const PACKET_POOL_SIZE: usize = 4; pool!(pub PacketPool: [Packet; PACKET_POOL_SIZE]); pub type PacketBox = Box; +#[repr(align(4))] pub struct Packet(pub [u8; MTU]); impl Packet { -- cgit From 3396a519389837727c17eae2ebf65d5c93f70551 Mon Sep 17 00:00:00 2001 From: Thales Fragoso Date: Mon, 14 Jun 2021 18:06:12 -0300 Subject: net: Add features for pool size and remove unwrap on smoltcp device --- embassy-net/src/device.rs | 2 +- embassy-net/src/packet_pool.rs | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'embassy-net/src') diff --git a/embassy-net/src/device.rs b/embassy-net/src/device.rs index 5fcb94ac8..fc9d08947 100644 --- a/embassy-net/src/device.rs +++ b/embassy-net/src/device.rs @@ -43,8 +43,8 @@ impl<'a> SmolDevice<'a> for DeviceAdapter { type TxToken = TxToken<'a>; fn receive(&'a mut self) -> Option<(Self::RxToken, Self::TxToken)> { + let tx_pkt = PacketBox::new(Packet::new())?; let rx_pkt = self.device.receive()?; - let tx_pkt = PacketBox::new(Packet::new()).unwrap(); // TODO: not sure about unwrap let rx_token = RxToken { pkt: rx_pkt }; let tx_token = TxToken { device: self.device, diff --git a/embassy-net/src/packet_pool.rs b/embassy-net/src/packet_pool.rs index 0ec88e649..b43ae2eb2 100644 --- a/embassy-net/src/packet_pool.rs +++ b/embassy-net/src/packet_pool.rs @@ -4,8 +4,19 @@ use core::ops::{Deref, DerefMut, Range}; use atomic_pool::{pool, Box}; pub const MTU: usize = 1516; + +#[cfg(feature = "pool-4")] pub const PACKET_POOL_SIZE: usize = 4; +#[cfg(feature = "pool-8")] +pub const PACKET_POOL_SIZE: usize = 8; + +#[cfg(feature = "pool-16")] +pub const PACKET_POOL_SIZE: usize = 16; + +#[cfg(feature = "pool-32")] +pub const PACKET_POOL_SIZE: usize = 32; + pool!(pub PacketPool: [Packet; PACKET_POOL_SIZE]); pub type PacketBox = Box; -- cgit