3.9 KiB
Fibergaga SFP-10G-T-30M (Aquantia AQR)
The documented oracle — and only that: the part's 30 m reach limit makes it unusable in the test set, so its registers matter as reference/instrument, never as product capability. RollBall module, PHY ID 0x31c31c13, proven over the i40e oracle path (../../nics/x710/). Its PHY family register reference is vendored in this directory (aquantia-aqr107-aqr109-datasheet.pdf — the AQR107-AQR109 register reference).
Documented registers
| Registers | What |
|---|---|
| 3.E820/3.E821 | PCS Receive Vendor Uncorrected Frame Counter (post-FEC) |
| 3.E840–3.E84E | Corrected Frame N Iteration Counters, N = 1…10 LDPC iterations — the pre-FEC leading indicator |
| 3.E816 | RS Corrected Error Frame Counter (system-side, secondary) |
| 1E.C884 bits 7:0 | Estimated cable length in meters, ±1 m, RO, from the cable diagnostic engine |
| 1E.C800 | Per-pair TDR fault verdicts (open/short/mismatch/cross-pair) |
| 1E.C801–C807 | Distances of the four worst reflections per pair, ±1 m |
| 1E.C880–C883 | Reflection impedance/magnitude |
| PMA 1.133–1.140, PCS 3.32/3.33 | Standard set (../README.md), proven live |
Vendor space found empirically (beyond the documented set)
From a 544-register sweep of the vendor regions plus snapshot-diffing to separate live counters from static state (staleness ruled out: 20/20 interleaved known-value reads correct). The method transfers to any undocumented map — sweep for nonzero, then diff snapshots across time and across link events:
| Register | Behaviour |
|---|---|
| 1E.C886 | Link uptime, monotonic +1 per second |
| 1E.C869 | ~452 Hz free-running clear-on-read tick — not errors: returned an identical count on consecutive fixed-length samples, deterministic where errors would be Poisson |
| 1E.C860–C868 | MDIO write shadow log — echoes devad/register/value of the last write |
| 1E.C820/C821 | Die temperature (~97 °C on bench) and its valid bit |
| 3.C820, 3.E810, 3.E812 | Spike during link training, quiet on a settled link |
Live behaviour of the documented 3.E820 (post-FEC uncorrected frames): reads 0 on a settled link, ~1852 within 0.7 s of a retrain — LDPC coding gain keeps it at exactly zero anywhere short of the margin cliff, so it moves during training and near failure, nothing in between.
Two negative results worth keeping: short-reach mode (PMA 1.131 bit 0) lowers our launch power, which degrades the far end's receive, not our own SNR — useless for self-degradation; and per-pair margins are retrain-dependent on this module too (the same cable trained to 66/45/56/48 and 52/36/45/46 in consecutive sessions) — compare within one training session only.
Pre-FEC correlation run (verification, not classification)
3.E820 is post-FEC; the pre-FEC counters are the corrected-by-iteration histogram (3.E840–E84E). The correlation run verifies the expected ordering; this module is its instrument. Design points:
- Dose axis = measured SNR margin (1.133–6), not the noise-knob position — plot counter rates against margin; don't assume the knob is monotonic.
- Run at high line utilization: an uncorrected LDPC frame landing in idle/IFG leaves no host-visible trace; low-load runs undercount the host side.
- Expected ordering as margin falls: corrected-iteration counters shift toward higher N first (host still perfect — the leading-indicator regime), then E820 + PCS 3.32/33 errored blocks + host CRC/loss together. One uncorrected LDPC frame is 2048 line bits (~320 ns) and can clip multiple packets — expect burstiness, not 1:1.
- Log fast retrains alongside (IEEE 1.147) to separate FEC exhaustion from retrain hiccups.
- Clear-on-read discipline: exactly one reader during a run.
- Scope: documents the Aquantia oracle — fine; proving the pipeline is the oracle's job. The CUX3610 is Alaska-M with its own map and stays out until documented.