Transcribe BCM PDFs to markdown visually (tables intact); catalog probe candidates: EEE advertised in reference bringup, EMI cmds are fast-retrain enables, 1588/loopback/ECD chapters missing

This commit is contained in:
flamingcow
2026-08-12 18:33:10 -07:00
parent 4023d7ccf0
commit ff64b59fe0
4 changed files with 306 additions and 8 deletions
+9 -5
View File
@@ -34,13 +34,17 @@ All via the SMI bridge + command handler (transports.md carries the codes and th
- **Standard PCS 3.32/3.33** — block lock, latched errored-block/BER counters, clear-on-read: the noise-stress error proxy.
- **Retrain** — IEEE AN restart `7.0 |= bit9`, relinks in ~6 s.
Documented in the handler table, not yet exercised:
- **CMD_GET_PAIR_SWAP 0x8000** — MDI wiring/crossover/polarity report.
Documented in the handler table, not yet exercised (full transcription: `bcm84891l-mdio-commands.md`), in probe-priority order:
- **GET_EEE_MODE 0x8008** — per-speed EEE mode (disabled / native / AutogrEEEn fixed / variable; 10G in DATA1 bits [1:0]). Probe first: the ODM's reference bring-up *advertises 10GBASE-T EEE* (`7.60 = 0x0008`, see `bcm84891l-sfp-registers.md`), and module-to-module LPI would corrupt loss and latency numbers. `SET_EEE_MODE 0x8009` can force it off (AN restart to apply).
- **SET/GET_EEE_STATISTICS 0x801A/0x801B** — arm after link-up, then read TX(local)/RX(remote) LPI event counters or time durations. Direct evidence of whether EEE is actually happening on the wire, independent of what's advertised.
- **Fast-retrain enables 0x800A/0x800B** — the datasheet titles these EMI_MODE but both descriptions read "SW Fast Retrain enable" (per-speed, DATA1=10G/DATA2=5G/DATA3=2.5G). Fast retrains mask marginal-cable events as sub-ms hiccups; knowing (and possibly controlling) the enable state matters when attributing loss bursts.
- **CMD_GET_PAIR_SWAP 0x8000** — forced and current MDI pair mapping, 2 bits per pair: wiring/crossover verification.
- **GET_LIMITED_REACH_MODE 0x8006** — DATA3 = "currently linked in limited-reach mode": the only handler-visible consequence of the DSP's internal cable-length estimate, a single short/long bit, and only meaningful when LR mode is enabled (a config change — measure-only by default).
- **GET_EEE_MODE 0x8008 / GET_EEE_STATISTICS 0x801B** — verify EEE is off before trusting loss numbers.
- **GET_SUB_LF_RF_STATUS 0x800D** — local/remote fault detail.
- **GET_SUB_LF_RF_STATUS 0x800D** — whether copper-TX local/remote fault codes pass through or are replaced with IDLE toward the line (SET/CLEAR 0x8011/0x8010): affects whether the far end can see faults at all.
- **Host-interface health**: GET_XFI_TX_FILTERS 0x802B (FIR taps for the current speed), GET_XFI_POLARITY 0x802D, GET_USXGMII 0x8027 (DATA5 = MAC/PHY frequency unlock flag).
- Pause-frame mode (0x801F/0x8020) turns out to be scoped to 2.5/5G idle-stuffing under 10G XFI WAP mode — inert in plain 10G operation.
**No cable length.** The handler catalog is complete (§1.25.1.145: pair swap through WOL) and contains no ECD, length, or skew command. Cable length, opens/shorts, pair skew, and polarity live in the separate ECD register mechanism whose chapter FS hasn't sent — still the one outstanding ask. Until it lands, FS-side length comes only from the NIC timestamp path — in contrast to the Aquantia oracle, whose `1E.C884` length register is fully documented.
**No cable length.** The handler catalog is complete (§1.25.1.145: pair swap through WOL) and contains no ECD, length, or skew command. Cable length, opens/shorts, pair skew, and polarity live in the separate ECD register mechanism whose chapter FS hasn't sent. The 1588 engine is the same story: the PHY is IEEE 1588-2008 v2-compliant with a one-command enable (0x8004/0x8005) but its operation registers are undocumented — in-PHY timestamping would measure path delay at the MDI, taking PHY-pipeline latency out of the length equation entirely (open-questions.md §2). Until either chapter lands, FS-side length comes only from the NIC timestamp path — in contrast to the Aquantia oracle, whose `1E.C884` length register is fully documented.
## Marvell cable-length register candidates (unverified, single-shot only)
From kernel drivers for sibling parts — templates for a *future* single targeted probe on a sacrificial module, never a sweep, never near `*.0x??64`: