Epic: #113 · Milestone: MC3 — Pi 5 platform drivers
Why
Stub S3: net/netdev.home is 17 lines and drops every frame; no packet has ever reached the IP stack, on any platform. The Pi 5's MAC is a Cadence GEM inside RP1 with an external PHY over MDIO; arch/arm64/rpi5.home has ~10 lines for it. Ethernet is the v1 network (Wi-Fi is post-v1), needed for NAS shares, metadata, streaming, the phone remote and OTA.
Tasks
- Close S3 generically first on x86 QEMU with
virtio_net.home(already sketched) sonet-echo(Phase 2 gate) turns green: RX ring →netdev.receive_packet→ ethernet → ARP/IP → UDP/TCP. platform/rp1/gem.home: MAC init, DMA descriptor rings (RX/TX) with cache maintenance, MDIO PHY bring-up (autoneg, link status IRQ), interrupt via RP1 → PCIe MSI, MAC address from DTB/firmware OTP.- Zero-copy-ish buffer pool; checksum offload optional.
ip/ping/dhcpshell commands; DHCP lease, DNS resolution, TCP echo against a listener on the Mac.- Throughput target ≥ 300 Mbit/s TCP receive (4K HEVC streams need < 100 Mbit/s).
Acceptance
net-echo green on x86 QEMU; on hardware, [DHCP] lease 192.168.x.y and [TCP] echo ok milestones; iperf-like shell command reports ≥ 300 Mbit/s.