port_prbs_monitor.sh drives PRBS on both 100G uplinks: lpmode off, arm the pattern, then poll `phy diag <phy> prbs get` in the background until stopped, counting a poll as PASS only when the output says "PRBS OK!". prbsstat Ber is captured beside every poll for the record but does not decide the verdict. `stop` runs prbsstat STOp and prbs clear before rendering the report, so the test does not leave PRBS armed. `start a` / `start b` runs one uplink alone, which is how a genuine port fault is separated from the DUT not coping with two PRBS streams at once. A port that was not run reports SKIP rather than FAIL -- deciding on poll count alone would have made a deliberate single-port run look like half the hardware was broken. The port status is deliberately not printed at `start`: with PRBS armed the link reports DOWN, which reads as a failure to anyone glancing at the console. It appears in the report instead, after prbs clear and labelled as the recovered state. The calls in Script A, B and C are committed but commented out -- PRBS is still under bring-up. Fix: the job directory was written as /host/hw-eval/current/jobs in some places and /host/hw-eval/jobs in others, so what Script B wrote was not what Script C collected. Unified on /host/hw-eval/jobs. Fix: Script C copied to /mnt/usb assuming it was mounted. It now finds the device with usb_target.sh and mounts it first, so the logs actually leave the DUT. Script C also reorders its results -- stress logs, then the MGMT ping report, then 100G status -- and cats the bgctl ssd/usb logs. Script A -> V1.0.9. Docs and docs/release-notes/v1.0.9.md updated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
4.4 KiB
v1.0.9 — 100G PRBS testing, and the job logs actually reach the USB stick
✨ New features
100G uplink PRBS test
-
New
port_prbs_monitor.shdrives a PRBS test on both 100G uplinks: it clears low-power mode, arms the pattern, then pollsphy diag <phy> prbs getin the background until stopped. A poll counts as PASS only when the output saysPRBS OK!;prbsstat Beris captured alongside every poll for the record. -
stoprunsprbsstat STOpandprbs clearon each port before rendering the report, so the test does not leave PRBS armed behind it. -
reportgives the tally the bench actually wants:PORT POLLS PASS FAIL RESULT Ethernet513 42 42 0 PASS Ethernet514 42 40 2 FAIL -
One port at a time is a first-class mode.
start aorstart bruns a single uplink, which is how you separate a genuine port fault from the DUT not coping with two PRBS streams at once. A port that was not run reportsSKIP, notFAIL. -
Every command and its full output — setup, each poll, teardown — goes to that port's raw log.
⚠️ The script ships in this build and can be run by hand, but the calls in Script A, B and C are commented out: PRBS is still under bring-up on this platform.
USB target detection
usb_target.shreports an inserted USB device's node, mount point or by-id path. It excludes whatever disk backs/and/host— this platform can boot from a USB DOM, which also reports as USB — refuses to guess when several USB disks are present, and when mounting, verifies the result is writable rather than trusting thatmountsucceeded.- Script B builds the USB stress command from the detected node instead of a hard-coded
/dev/sda1.
🐛 Bug fixes
The job logs were being written to a path nobody collected
- Stress output, the monitors' logs and the USB archive disagreed about where the job directory lives. Everything now uses
/host/hw-eval/jobs/, so what Script B writes is what Script C copies out.
Script C copied to a USB that was never mounted
- The archive step assumed
/mnt/usbwas ready. Script C now finds the device and mounts it first, so a run's logs leave the DUT instead of being written into an empty mount point.
show interfaces status right after starting PRBS reads as a failure
- With PRBS armed the link is out of normal operation and reports DOWN.
port_prbs_monitor.shdeliberately does not print the port status atstart— it appears in the report instead, afterprbs clear, labelled as the recovered state.
📦 Downloads
| File | Contents |
|---|---|
Script_ABC_Blanton_V1.0.9.zip |
The full Tera Term working directory, including Blanton_Script/ to copy onto the DUT |
After copying to the DUT:
chmod +x ~/Blanton_Script/*.sh # see below
grep -rlU $'\r' ~/Blanton_Script # expect no output
mgmt_ping_monitor.sh and port_prbs_monitor.sh launch their workers through bash, so those two run without the execute bit. bmc_monitor.sh and usb_target.sh still need it, and neither git (mode 100644) nor a Windows/USB copy carries it. Without the chmod, start fails with Permission denied and the later cat finds nothing: the section ends up empty and nothing reports an error.
⚠️ Before you run
- Declare the switch population.
SWB_UNIT0/SWB_UNIT1inconfig.ttlsay which switch units this DUT has; traffic and the readiness gate both follow them. - Set
FAN_SPEED. It is applied at the start of every run. - Management connectivity is in use, not preserved. Both management NICs are up and pinging — drive the run from the serial console.
- PRBS is not wired into the macros yet. Run
port_prbs_monitor.shby hand if you want it; uncommenting the calls in A/B/C is not supported in this build. - Two settings persist to
config_db.jsonand survive a reboot: LLDP is left disabled and the 100G uplinks are left configured. Restore them before the DUT moves on.
🔗 Links
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
Full changelog: V1.0.8...V1.0.9