diff --git a/src/Script_ABC_Blanton/Blanton_Script/blanton_ber_debug.sh b/src/Script_ABC_Blanton/Blanton_Script/blanton_ber_debug.sh new file mode 100644 index 0000000..b875b36 --- /dev/null +++ b/src/Script_ABC_Blanton/Blanton_Script/blanton_ber_debug.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash +# ============================================================================= +# blanton_ber_debug.sh -- SerDes BER, raw run of tools/BER_Test.txt +# ============================================================================= +# Version History: +# V1.0.0 2026-10-07 First version. Runs the hand-pasted BER flow end to end +# (prbs set p=p31 / prbs get x2 / STArt / sleep 40 / Ber / +# STOp / clear) and prints every bcmcmd output as is -- +# no parsing, no PASS/FAIL, no summary. blanton_ber.sh is +# the judged version; this one is for looking at the raw +# output on the bench. +# +# Order of operations (per step, unit 0 first, then unit 1): +# phydiag prbs set p=p31 +# phydiag prbs get twice: the 1st clears the sticky +# phydiag prbs get "unlocked since last call", the 2nd +# is the current lock state +# phydiag prbsstat STArt Interval=30 +# sleep 40 MUST be > Interval, or Ber is read +# before the first interval settles +# phydiag prbsstat Ber +# phydiag prbsstat STOp +# phydiag prbs clear releases the lanes back to normal +# +# ⚠️ Links show DOWN while PRBS runs -- that is expected. +# ⚠️ Do not run together with blanton_ber.sh / blanton_traffic_linespeed.sh / +# blanton_tr518.sh -- they all take over the same ports. +# +# Usage: +# ./blanton_ber_debug.sh # unit 0 and 1 +# ./blanton_ber_debug.sh -u 0 # unit 0 only +# ./blanton_ber_debug.sh -u 1 # unit 1 only +# +# Env overrides: +# BCMCMD_CMD=bcmcmd BER_POLY=p=p31 BER_INTERVAL=30 BER_WAIT=40 +# BER_PORTS="1-24,..." (default: the 200G ports, no 268 -- same as +# tools/BER_Test.txt; add ",268" for the 100G uplink) +# ============================================================================= + +BCMCMD_CMD="${BCMCMD_CMD:-bcmcmd}" +BER_UNITS="0 1" +BER_PORTS="${BER_PORTS:-1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565}" +BER_POLY="${BER_POLY:-p=p31}" +BER_INTERVAL="${BER_INTERVAL:-30}" +BER_WAIT="${BER_WAIT:-40}" + +usage() { + sed -n '/^# Usage:/,/^# =====/p' "$0" | sed '$d; s/^# \{0,1\}//' +} + +while [ $# -gt 0 ]; do + case "$1" in + -u|--unit) + case "$2" in + 0|1) BER_UNITS="$2" ;; + *) echo "[ERR ] invalid unit '$2' (use 0 or 1)" >&2; exit 2 ;; + esac + shift 2 ;; + -h|--help) usage; exit 0 ;; + *) echo "[ERR ] unknown option '$1'" >&2; usage >&2; exit 2 ;; + esac +done + +# bcmcmd reads stdin -- keep it on /dev/null (see blanton_traffic_linespeed.sh V0.3.1) +_bcm() { + local unit="$1"; shift + local cmd="dsh -c 'phydiag ${BER_PORTS} $*'" + echo + echo "### [$(date '+%F %T')] unit $unit: phydiag $*" + "$BCMCMD_CMD" -n "$unit" -c " ${cmd} " &1 +} + +for u in $BER_UNITS; do + _bcm "$u" "prbs set ${BER_POLY}" + _bcm "$u" "prbs get" + _bcm "$u" "prbs get" +done + +for u in $BER_UNITS; do + _bcm "$u" "prbsstat STArt Interval=${BER_INTERVAL}" +done + +echo +echo "### [$(date '+%F %T')] sleep ${BER_WAIT}" +sleep "$BER_WAIT" + +for u in $BER_UNITS; do + _bcm "$u" "prbsstat Ber" +done + +for u in $BER_UNITS; do + _bcm "$u" "prbsstat STOp" +done + +for u in $BER_UNITS; do + _bcm "$u" "prbs clear" +done + +echo +echo "### [$(date '+%F %T')] BER_DEBUG_DONE units: $BER_UNITS" diff --git a/tools/BER_Test.txt b/tools/BER_Test.txt index 98d7322..5d5c65f 100644 --- a/tools/BER_Test.txt +++ b/tools/BER_Test.txt @@ -1,4 +1,4 @@ -bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=3' " +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=p31' " bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STArt Interval=30' " @@ -7,6 +7,49 @@ bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310- bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STOp' " bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs clear' " + + +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=p31' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " + +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STArt Interval=30' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat Ber' " + +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STOp' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs clear' " + +//BER SWB0/1 +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=p31' " +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=p31' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs get' " + +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STArt Interval=30' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STArt Interval=30' " +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat Ber' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat Ber' " + +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STOp' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbsstat STOp' " +bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs clear' " +bcmcmd -n 1 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs clear' " + + + + + + + + +bcmcmd -n 0 "port 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 en=0" +bcmcmd -n 0 "port 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 en=1" + +bcmcmd -n 1 "port 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 en=0" +bcmcmd -n 1 "port 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 en=1" + + root@sonic:~# bcmcmd -n 0 -c " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=3' " dsh -c 'phydiag 1-24,40-96,112-168,184-240,256-259,270-308,310-327,342-380,382-399,414-452,454-471,486-524,526-543,558-565 prbs set p=3' drivshell>