The stack: an Edgecore AS5610, Broadcom BCM56846 (Trident+) forwarding ASIC, PowerPC P2020 CPU, stock Linux 5.10 — older than we’d like; an upgrade is in progress. The mental model: this is an ordinary Linux box with a 52-port forwarding chip on the PCIe bus, and the kernel drives that chip the way it drives any accelerator. Everything below follows from that.

The chip. The ASIC is a PCIe device. Our kernel BDE driver — ported from Broadcom’s source-available OpenMDK to Linux 5.10 — maps its register space and hands userspace a handle. From there the daemon programs the silicon with register and table writes (MMIO and DMA). The low-level register maps and DMA primitives are OpenMDK, statically linked in; the datapath and forwarding logic on top are ours. The full proprietary SDK was reference-only, never shipped.

The ports. Each front port is a TAP netdev, swp1 through swp52, created and owned by a userspace daemon, edged. Because they are real netdevs, ip, ethtool, and tcpdump work unmodified. That TAP pair is also the CPU’s path on and off the wire: a frame the chip punts to the CPU is readable on swpN, and a frame the CPU sends goes back out that port.

The forwarding state. This is the key design choice. The kernel FIB is the source of truth, and edged is a netlink listener. It subscribes to RTM_NEWROUTE and RTM_NEWNEIGH and translates each change into the chip’s hardware tables: a route becomes an L3 entry, a resolved neighbor becomes a next-hop (egress port plus destination MAC), a multipath route becomes a hardware ECMP group. Note what this is not — it is not kernel switchdev offload. It is a userspace agent mirroring kernel state into silicon. The upshot: any daemon that installs routes into the kernel (FRR, Quagga, a static ip route) gets hardware forwarding for free, knowing nothing about the ASIC.

The rest of the board is standard kernel subsystems. The optics read over i2c, but the two speeds differ. A 10G SFP+ is straightforward: its EEPROM shows up through the at24 driver as a sysfs file, and the SFF-8472 diagnostics (optical power, temperature) are just byte offsets you read. The 40G QSFPs needed more first — a muxed i2c bus plus CPLD GPIO to take each module out of reset and select it before its EEPROM even appears. Fans, PSUs, and LEDs are a CPLD platform driver exposing sysfs attributes; temperatures come through hwmon; thermal management is a userspace script. The NOR boot flash is exposed as MTD partitions, U-Boot environment included, writable with fw_setenv.

And since it is all normal Linux, you debug it like a server: lsmod and dmesg for the drivers, journalctl for the daemon.

There is no vendor control plane to learn — netlink, sysfs, i2c, hwmon, MTD — the skills transfer one to one. The ASIC is just the fastest peripheral in the box.

More soon.