embassy/embassy-net
Dario Nieuwenhuis ac74613b5a net: remove packet pool.
The pool was prone to deadlocks, especially due to having a single pool
for rx+tx. If the pool got full with rx'd packets it would deadlock because
processing a rx packet requires doing another allocation on the pool, for
the possibly tx'd response, before deallocating the rx'd packet.

This also allows Device impls to allocate the packet memory in a particular
RAM kind, if needed for example to do DMA.

The `Device` trait is now token-based, like smoltcp's. In the end, this
is better because it allows callers to manage memory however they want (including
with a pool if they want to).
2022-12-13 16:18:39 +01:00
..
src net: remove packet pool. 2022-12-13 16:18:39 +01:00
Cargo.toml net: update smoltcp 2022-12-07 00:28:38 +01:00
README.md fix net README.md 2022-12-13 14:06:37 +08:00

embassy-net

embassy-net contains an async network API based on smoltcp and embassy, designed for embedded systems.

Running the example

First, create the tap0 interface. You only need to do this once.

sudo ip tuntap add name tap0 mode tap user $USER
sudo ip link set tap0 up
sudo ip addr add 192.168.69.100/24 dev tap0
sudo ip -6 addr add fe80::100/64 dev tap0
sudo ip -6 addr add fdaa::100/64 dev tap0
sudo ip -6 route add fe80::/64 dev tap0
sudo ip -6 route add fdaa::/64 dev tap0

Second, have something listening there. For example nc -l 8000

Then run the example located in the examples folder:

cd $EMBASSY_ROOT/examples/std/
cargo run --bin net -- --static-ip

License

This work is licensed under either of

at your option.