• V1.0.7 ef7cbdffd4

    etwen released this 2026-08-25 14:22:22 +08:00 | 35 commits to main since this release

    New features

    10G / 1G management port ping test

    • New mgmt_ping_monitor.sh exercises both management NICs in one loop: it brings each up with iproute2, waits for the link to settle, then pings that NIC's own target — eth0192.168.1.30, eth1192.168.1.31.
    • Runs detached like the other monitors: start / stop / status / fg / summary. start clears the previous log, so one run means one log.
    • Every leg writes a single greppable line — RESULT 10G eth0 -> 192.168.1.30 tx=10 rx=10 loss=0% rtt_avg=1.743ms nic_tx=10 nic_rx=10 PASS — so a whole soak can be read with summary instead of scrolling.
    • nic_tx / nic_rx are that interface's own counter delta across the burst. If a ping passes but they stay near zero, the traffic left on the other NIC and the number does not belong to this one.
    • Script A runs one round as a baseline; Script B leaves it running through the soak.

    Fan speed is set at the start of every run

    • FAN_SPEED in config.ttl (default 30) is applied by Script A, so a run no longer inherits whatever the previous test left the fans doing.
    • Both MAX31790 controllers are rebound first, which clears a controller left in an odd state.

    Stress load moved onto the platform's own job runner

    • CPU, DDR, SSD and USB stress now go through bgctl, replacing the ~/hammer/tools/stress_*.py scripts. bgctl list shows what is running; Script C stops everything with bgctl stop --all.
    • BMC DDR stress runs through bmc-manager, and a new BMC USB test discovers the cdc_ncm interface and pings across it for four hours under systemd-run.

    More of the DUT on record

    • Script A now captures the boot image, show version, firmware status, system EEPROM, SSD health, TPM version and NVMe SMART data before the test starts.
    • PCIe AER now sits next to ras-mc-ctl --summary, and Script C closes with NVMe health so a disk that degraded during the soak is visible.
    • dmesg capture uses human-readable timestamps and one combined error pattern, then clears the ring buffer — so Script C's dmesg shows only what the soak produced, not everything since boot.
    • Each run opens with hw-test-session start and closes with finish; Script C copies the job logs to /mnt/usb/jobs-<date>_<time> so they leave the DUT with the run they belong to.

    🐛 Bug fixes

    Script A no longer hangs waiting for ports that are already up

    • The readiness gate required more than 216 ports up, but a fully cabled unit reports exactly 216 — 108 loopback pairs times two. Script A sat in the poll loop forever on the very state it was waiting for. It now proceeds at 216.
    • The comments in wait_init.ttl still described the old "more than" rule; they now match the code, so the off-by-one cannot be reintroduced by reading the wrong line.

    The macro no longer runs ahead of the DUT during the soak

    • Script B set a 15-second wait cap for the cdc_ncm probe and never restored it. In Tera Term that cap is global, so it stayed in force for everything after — including the traffic setup, which walks 108 VLANs per switch unit and takes far longer. A timed-out wait returns without the prompt, leaving every later command issued a step early.

    Fan controller is no longer bound twice

    • One of the two MAX31790 controllers received a second bind immediately after the first, which could only fail because the driver was already attached.

    📦 Downloads

    File Contents
    Script_ABC_Blanton_V1.0.7.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      # required -- see below
    grep -rlU $'\r' ~/Blanton_Script    # expect no output
    

    The chmod +x is not optional. mgmt_ping_monitor.sh is executed rather than sourced and re-execs its own path to daemonise, and neither git (mode 100644) nor a Windows/USB copy carries the execute bit. Without it 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_UNIT1 in config.ttl say which switch units this DUT has. Traffic and the readiness gate both follow them: a single unit gets -u 0 or -u 1, and with neither set the traffic stage is skipped instead of failing against hardware that is not there.
    • Both management NICs stay up. If they share a subnet, keep ARP_STRICT=1 — otherwise the target's ARP can be answered by either NIC and a reply may arrive on the one that did not send.
    • Management connectivity is exercised, not preserved. Drive the run from the serial console.
    • Two settings persist to config_db.json and survive a reboot: LLDP is left disabled, and the 100G uplinks are left configured. Restore them before the DUT moves on.

    🔗 Links

    Full changelog: V1.0.5...V1.0.7

    Downloads