diff --git a/embassy-net/CHANGELOG.md b/embassy-net/CHANGELOG.md index b67783a4e5..15603b2de2 100644 --- a/embassy-net/CHANGELOG.md +++ b/embassy-net/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased - ReleaseDate +- Avoid looping forever if the network interface is down. + ## 0.9.0 - 2026-03-10 - raw: Removed unnecessary Driver type parameter from `RawSocket::new` diff --git a/embassy-net/src/lib.rs b/embassy-net/src/lib.rs index ad994ea78a..b629f3703b 100644 --- a/embassy-net/src/lib.rs +++ b/embassy-net/src/lib.rs @@ -961,10 +961,12 @@ impl Inner { self.apply_static_config() } - if let Some(poll_at) = self.iface.poll_at(timestamp, &mut self.sockets) { - let t = pin!(Timer::at(instant_from_smoltcp(poll_at))); - if t.poll(cx).is_ready() { - cx.waker().wake_by_ref(); + if self.link_up { + if let Some(poll_at) = self.iface.poll_at(timestamp, &mut self.sockets) { + let t = pin!(Timer::at(instant_from_smoltcp(poll_at))); + if t.poll(cx).is_ready() { + cx.waker().wake_by_ref(); + } } } }