aboutsummaryrefslogtreecommitdiff
path: root/embassy-net
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-06-26 09:51:28 +0000
committerGitHub <[email protected]>2023-06-26 09:51:28 +0000
commitac2b7928c53812591f8bb2a65d86c3579bfc5783 (patch)
treef9d232442148cef95c489256977c049e5d8209fb /embassy-net
parentd8c70c5c3e89a0a83ae58881fe0bed5071939b2e (diff)
parent64cba950e55dd5cdd7d6ef13c2dbb03825bc6d01 (diff)
Merge pull request #1585 from embassy-rs/update-smoltcp2
Update smoltcp.
Diffstat (limited to 'embassy-net')
-rw-r--r--embassy-net/Cargo.toml4
-rw-r--r--embassy-net/src/device.rs3
-rw-r--r--embassy-net/src/lib.rs18
-rw-r--r--embassy-net/src/udp.rs2
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"]
38defmt = { version = "0.3", optional = true } 38defmt = { version = "0.3", optional = true }
39log = { version = "0.4.14", optional = true } 39log = { version = "0.4.14", optional = true }
40 40
41smoltcp = { version = "0.9.0", default-features = false, features = [ 41smoltcp = { 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
46embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" } 46embassy-net-driver = { version = "0.1.0", path = "../embassy-net-driver" }
47embassy-hal-common = { version = "0.1.0", path = "../embassy-hal-common" } 47embassy-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());