Files

2.4 KiB

NICs

The NIC decides two things: whether the host can reach module-PHY diagnostics at all, and whether the measurement path gets the hardware timestamps it requires. Per-device directories hold the details.

The transport rule

A NIC is usable for module diagnostics only if the host can master the module I2C bus with arbitrary multi-byte framing and writes. Firmware-mediated I2C imposes limits that break the module command protocols.

Comparison

Which card is where: ../state.md.

NIC (driver) Module I2C All-packet RX hw stamps Verdict
X520 / 82599 (ixgbe) Host bit-bangs — full control, proven No (single serial latch; 1588-event frames only, EtherType configurable) Diagnostics transport only — no all-packet exact stamps, so disqualified as product NIC
ConnectX-4/5 (mlx5) Firmware MCIA; writes allowed; framing open Yes (CQE-stamps everything) The product candidate — the only card meeting the full requirement set
X710 (i40e) 1-byte-offset only No RollBall oracle path; PTP length-experiment platform
E810 (ice) Multi-byte framing, writes EPERM-blocked Yes Dead for diagnostics writes

Requirement weights behind the verdicts: all-packet hardware RX timestamps are non-negotiable (software stamping was tried, not precise enough), raw-L2 steering is not (encap acceptable). Full analyses live in each device directory.

Architecture

  • Co-location is forced, not chosen. SNR under load, the pre-FEC correlation, and diagnosing the module that carried the stress all require diagnostics I2C to reach the modules the traffic flows through, and module I2C is only reachable through the hosting NIC. A "diagnostics NIC" would need the modules in its cages, off the traffic path — structurally impossible, not merely awkward. The chassis seconds it: one usable slot.
  • The single card is the ConnectX-5. The requirement weights flip the selection the X520 was chosen under: the 82599 stamps 1588-event frames only, txgbe is likewise PTP-only (verified in upstream wx_ptp.c; evaluated on paper, never owned), and mlx5 is the only driver meeting the full set — CQE-stamps every packet, one shared clock across ports, native ETHER_FLOW steering. If MCIA can't reach the BCM, product diagnostics run via the Marvell/Aquantia modules only (connectx-5).