feat(ttl): Take a BER baseline in Script A, before the first traffic run

blanton_ber.sh init -> start -> sleep 30 -> report -> stop -> clear,
branched on SWB_UNIT0 / SWB_UNIT1 the same way the traffic block beside it
is.

Script C already took the closing sweep after its traffic report. With
this one at the front the pair brackets the soak, the same shape the DSC
scans got in V1.2.0 and for the same reason: one BER figure says very
little, a change in it says a lot.

The sleep 30 is blanton_ber.sh's BER_INTERVAL. Reporting before a full
interval has accumulated reads a window that has not finished, and
nothing warns about it - that number now lives in three places.

The block was copied out of Script C, whose comment says it runs after
the traffic report, because there it does. Here it runs before. The
comment was rewritten to describe where the code actually sits and why
'clear' has to happen before the traffic block.

Not yet run on hardware. Nothing settles between blanton_ber.sh clear and
the blanton_traffic_linespeed ps that follows it, and 'clear' is what
releases lanes PRBS was holding out of normal operation. Script C does
not have that ordering, so the two traffic reports are a built-in
comparison: NA or FAIL pairs in Script A's that are absent from
Script C's mean the lanes had not come back, and a sleep after 'clear'
is the fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
2026-09-08 09:35:36 +08:00
co-authored by Claude Opus 5
parent 29ec4c2239
commit 496e3ab650
+79 -2
View File
@@ -1,7 +1,7 @@
; =============================================================================
; Script A for Blanton
; Version : V1.2.0
; Date : 2026-09-07
; Version : V1.2.1
; Date : 2026-09-08
; Author : ETWen
; =============================================================================
; Version History:
@@ -535,6 +535,33 @@
; out. Both files are still copied to /host/hw-eval/jobs
; and out to the USB stick with everything else, so no data
; is lost - the master log is just shorter
; V1.2.1 2026-09-08
; ScriptA Add a BER baseline sweep before the traffic run
; blanton_ber.sh init / start / sleep 30 / report / stop /
; clear, branched on SWB_UNIT0 and SWB_UNIT1 the same way
; the traffic block is. ScriptC already took the closing
; sweep after its traffic report, so the two now bracket
; the soak the way the DSC scans do
; sleep 30 is not arbitrary: it is blanton_ber.sh's
; BER_INTERVAL. 'report' before one full interval has
; accumulated reads a window that has not finished
; The block was copied from ScriptC, which runs it AFTER
; traffic, and its comment said so. In ScriptA it runs
; BEFORE traffic, so the comment was rewritten to match
; where the code actually is
; !! nothing settles between 'blanton_ber.sh clear' and
; 'blanton_traffic_linespeed ps' that follows it. PRBS
; holds the lanes out of normal operation and 'clear' is
; what releases them, so the first traffic run of
; ScriptA now starts on lanes that have just been
; released. ScriptC does not have this ordering. Watch
; ScriptA's first traffic report for NA or FAIL pairs
; that ScriptC's does not show - if they appear, a sleep
; after 'clear' is the fix
; !! ScriptA now runs BER twice as far as the switch is
; concerned: once here and once inside ScriptC. Neither
; can overlap blanton_traffic_linespeed or
; blanton_tr518.sh - they all take over the same ports
; =============================================================================
include "config.ttl"
@@ -744,6 +771,56 @@ sendln "config feature state lldp disabled"
wait prompt_sonic_root
sendln "config save -y"
; ========== BER ==========
; Baseline sweep, taken BEFORE the traffic run - ScriptC takes the closing
; one after its traffic report, so the pair brackets the soak.
; PRBS takes the SerDes out of normal operation; 'clear' is what puts the
; lanes back, so it has to run before the traffic block below.
; sleep 30 matches blanton_ber.sh BER_INTERVAL - reporting earlier reads an
; interval that has not finished accumulating.
if SWB_UNIT0 = 1 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh init"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh start"
wait prompt_sonic_root
sendln "sleep 30"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh report"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh stop"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh clear"
elseif SWB_UNIT0 = 1 && SWB_UNIT1 = 0 then
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh init -u 0"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh start -u 0"
wait prompt_sonic_root
sendln "sleep 30"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh report -u 0"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh stop -u 0"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh clear -u 0"
elseif SWB_UNIT0 = 0 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh init -u 1"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh start -u 1"
wait prompt_sonic_root
sendln "sleep 30"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh report -u 1"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh stop -u 1"
wait prompt_sonic_root
sendln "./Blanton_Script/blanton_ber.sh clear -u 1"
else
endif
if SWB_UNIT0 = 1 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed ps"