ReviewOS

home-lang/home-os

RP1 Gigabit Ethernet (Cadence GEM MAC + PHY) driver and closing S3 (netdev RX) — a DHCP lease and a TCP echo on the real LAN

#69
Open chris opened this 9 days ago ·
9 days ago

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) so net-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/dhcp shell 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.

Size: L · Depends on: #67 · Blocks: #104, #103, #100, #109

Sign in to comment on this issue.