diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-06-26 01:59:25 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2023-06-26 11:43:28 +0200 |
| commit | 64cba950e55dd5cdd7d6ef13c2dbb03825bc6d01 (patch) | |
| tree | f9d232442148cef95c489256977c049e5d8209fb /embassy-net | |
| parent | d8c70c5c3e89a0a83ae58881fe0bed5071939b2e (diff) | |
Update smoltcp.
Diffstat (limited to 'embassy-net')
| -rw-r--r-- | embassy-net/Cargo.toml | 4 | ||||
| -rw-r--r-- | embassy-net/src/device.rs | 3 | ||||
| -rw-r--r-- | embassy-net/src/lib.rs | 18 | ||||
| -rw-r--r-- | embassy-net/src/udp.rs | 2 |
4 files changed, 18 insertions, 9 deletions
diff --git a/embassy-net/Cargo.toml b/embassy-net/Cargo.toml index 4ac572577..63947c261 100644 --- a/embassy-net/Cargo.toml +++ b/embassy-net/Cargo.toml | |||
| @@ -38,10 +38,10 @@ igmp = ["smoltcp/proto-igmp"] | |||
| 38 | defmt = { version = "0.3", optional = true } | 38 | defmt = { version = "0.3", optional = true } |
| 39 | log = { version = "0.4.14", optional = true } | 39 | log = { version = "0.4.14", optional = true } |
| 40 | 40 | ||
| 41 | smoltcp = { version = "0.9.0", default-features = false, features = [ | 41 | smoltcp = { git = "https://github.com/smoltcp-rs/smoltcp", rev = "803840b5ccac01cc0f108993958f637835f0adbe", default-features = false, features = [ |
| 42 | "socket", | 42 | "socket", |
| 43 | "async", | 43 | "async", |
| 44 | ]} | 44 | ] } |
| 45 | 45 | ||
| 46 | embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" } | 46 | embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" } |
| 47 | embassy-hal-common = { version = "0.1.0", path = "../embassy-hal-common" } | 47 | embassy-hal-common = { version = "0.1.0", path = "../embassy-hal-common" } |
diff --git a/embassy-net/src/device.rs b/embassy-net/src/device.rs index 583cdc87f..4513c86d3 100644 --- a/embassy-net/src/device.rs +++ b/embassy-net/src/device.rs | |||
| @@ -51,8 +51,9 @@ where | |||
| 51 | Medium::Ethernet => phy::Medium::Ethernet, | 51 | Medium::Ethernet => phy::Medium::Ethernet, |
| 52 | #[cfg(feature = "medium-ip")] | 52 | #[cfg(feature = "medium-ip")] |
| 53 | Medium::Ip => phy::Medium::Ip, | 53 | Medium::Ip => phy::Medium::Ip, |
| 54 | #[allow(unreachable_patterns)] | ||
| 54 | _ => panic!( | 55 | _ => panic!( |
| 55 | "Unsupported medium {:?}. MAke sure to enable it in embassy-net's Cargo features.", | 56 | "Unsupported medium {:?}. Make sure to enable it in embassy-net's Cargo features.", |
| 56 | caps.medium | 57 | caps.medium |
| 57 | ), | 58 | ), |
| 58 | }; | 59 | }; |
diff --git a/embassy-net/src/lib.rs b/embassy-net/src/lib.rs index 7e8f765f9..3e83da7aa 100644 --- a/embassy-net/src/lib.rs +++ b/embassy-net/src/lib.rs | |||
| @@ -235,12 +235,19 @@ impl<D: Driver + 'static> Stack<D> { | |||
| 235 | #[cfg(feature = "medium-ethernet")] | 235 | #[cfg(feature = "medium-ethernet")] |
| 236 | let medium = device.capabilities().medium; | 236 | let medium = device.capabilities().medium; |
| 237 | 237 | ||
| 238 | let mut iface_cfg = smoltcp::iface::Config::new(); | 238 | let hardware_addr = match medium { |
| 239 | #[cfg(feature = "medium-ethernet")] | ||
| 240 | Medium::Ethernet => HardwareAddress::Ethernet(EthernetAddress(device.ethernet_address())), | ||
| 241 | #[cfg(feature = "medium-ip")] | ||
| 242 | Medium::Ip => HardwareAddress::Ip, | ||
| 243 | #[allow(unreachable_patterns)] | ||
| 244 | _ => panic!( | ||
| 245 | "Unsupported medium {:?}. Make sure to enable it in embassy-net's Cargo features.", | ||
| 246 | medium | ||
| 247 | ), | ||
| 248 | }; | ||
| 249 | let mut iface_cfg = smoltcp::iface::Config::new(hardware_addr); | ||
| 239 | iface_cfg.random_seed = random_seed; | 250 | iface_cfg.random_seed = random_seed; |
| 240 | #[cfg(feature = "medium-ethernet")] | ||
| 241 | if medium == Medium::Ethernet { | ||
| 242 | iface_cfg.hardware_addr = Some(HardwareAddress::Ethernet(EthernetAddress(device.ethernet_address()))); | ||
| 243 | } | ||
| 244 | 251 | ||
| 245 | let iface = Interface::new( | 252 | let iface = Interface::new( |
| 246 | iface_cfg, | 253 | iface_cfg, |
| @@ -248,6 +255,7 @@ impl<D: Driver + 'static> Stack<D> { | |||
| 248 | inner: &mut device, | 255 | inner: &mut device, |
| 249 | cx: None, | 256 | cx: None, |
| 250 | }, | 257 | }, |
| 258 | instant_to_smoltcp(Instant::now()), | ||
| 251 | ); | 259 | ); |
| 252 | 260 | ||
| 253 | let sockets = SocketSet::new(&mut resources.sockets[..]); | 261 | let sockets = SocketSet::new(&mut resources.sockets[..]); |
diff --git a/embassy-net/src/udp.rs b/embassy-net/src/udp.rs index c9843cfe8..36f8d06f2 100644 --- a/embassy-net/src/udp.rs +++ b/embassy-net/src/udp.rs | |||
| @@ -104,7 +104,7 @@ impl<'a> UdpSocket<'a> { | |||
| 104 | pub async fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, IpEndpoint), Error> { | 104 | pub async fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, IpEndpoint), Error> { |
| 105 | poll_fn(move |cx| { | 105 | poll_fn(move |cx| { |
| 106 | self.with_mut(|s, _| match s.recv_slice(buf) { | 106 | self.with_mut(|s, _| match s.recv_slice(buf) { |
| 107 | Ok(x) => Poll::Ready(Ok(x)), | 107 | Ok((n, meta)) => Poll::Ready(Ok((n, meta.endpoint))), |
| 108 | // No data ready | 108 | // No data ready |
| 109 | Err(udp::RecvError::Exhausted) => { | 109 | Err(udp::RecvError::Exhausted) => { |
| 110 | s.register_recv_waker(cx.waker()); | 110 | s.register_recv_waker(cx.waker()); |
