BCMSAI

SAI BCM shell commands

BCMSAI

Added to the shell at runtime rather than built in.

Debug commands of the Broadcom SAI itself, as opposed to the SDK. The SAI adds BCMSAI to the shell when it creates the switch, so it is available once syncd has finished initialising. It replaces any SDK command of the same name.

Keywords are matched case-insensitively and each can be abbreviated: the upper-case letters of a keyword below are the characters an abbreviation must contain. The first keyword that matches wins. Numbers are decimal only, and anything that is not a number reads as 0. Most dumps always show unit 0, whatever unit prefix the command line has.

BCMSAI with no argument prints the built-in help below. An unknown first word prints no help; the drivshell> front-end reports it as “Failed to execute the diagnostic command” (see The drivshell> front-end).

Many dumps print only their headings on a SONiC Trident 3 switch, because the feature behind them is not in use or not available on the chip: L2Ecmp, VlanStack, MPTnl (no VXLAN tunnels), srv6 (SRV6 not enabled), clm (CLM supported: NO) and the flexctr port-* forms (Not supported on non LTSW devices).

The built-in help does not match the actual behaviour everywhere; the entries below document what the shell really accepts. See SyncDB, Hamem, Acl and route.

Safety summary

Sub-command

Effect

VERsion, ObjectState (dump forms), Memtrack, Hamem, Scaletrack, MPTnl, L2Ecmp, VlanStack, SamplePacket, route, flexctr, Acl, LoadBalance, WBInfo, dump_eapp_config, clm show, clm port <id> get delay, srv6 dumps

Display only.

ApiLog, Cint

Print a fixed “not included in SAI build” message.

ObjectState Configure …, clm mode, clm port <id> set …, clm port <id> tx, srv6 global clrctr, TechSupport Config …

Change SAI or SDK state.

TechSupport (dump forms), SyncDB Data Dump

Write files and turn the shell console off and on, or write a debug dump.

DataManager …, SyncDB Table Dump

Tear down and save SAI state before dumping. Not safe on a running switch.

Warning

BCMSAI DataManager … and BCMSAI SyncDB Table Dump run part of the SAI’s shutdown and save path before they dump anything. On a SONiC Trident 3 switch DataManager Dump and DataManager Table completed and syncd went on answering shell commands, but what they do to a later warm reboot is not known. Do not use them on a production switch.

BCMSAI VERsion

Print the SAI, OCP SAI, SDK and CANCUN versions. The output is the same as for the front-end command bsv; the format is shown there. Read-only.

Hardware-validated

drivshell> BCMSAI VERsion
BRCM SAI ver: [15.2.1.0.0.0.26.3], OCP SAI ver: [1.18.1], SDK ver: [sdk-6.5.35-SP1], CANCUN ver: [06.15.00]
BRCM SAI cold boot ver:[15.2.1.0.0.0.26.3]
BCMSAI SyncDB Table List

List the SAI syncdb table names: Table names: followed by one tab-indented name per line. Read-only.

Hardware-validated

drivshell> BCMSAI SyncDB Table List
Table names:
  CPUMqueue
  Mqueue
  Uqueue
  _brcm_sai_hostif_trap_flexctr_info
  _tnl_l2_ecmp_group
  acl_chain_groups
  acl_cmn_counter
  acl_group_list
  acl_log
  acl_table_group_members
  acl_table_groups
  acl_table_qual_info
  acl_tables
  ars_info
  ars_profile
  bfd_bcm_sai_ep_map
  bfd_ep_info
  bfd_ip_ep_map
  bfd_nh_ep_map
  buf_pools
  buf_port_pools
  buf_profiles
  cpu_cos_map_
  csig_global_info
  ctr_info
  dbg_ctr_idx
  dev_port_class_id
  dot1p_color
  dot1p_tc_map
...
BCMSAI SyncDB Table Dump <table_name>

Dump one syncdb table. Take the name from BCMSAI SyncDB Table List; names longer than 127 characters are truncated. An unknown name prints Table "<name>" not found.

This is not read-only: before dumping, it saves the SAI state and shuts down the HA shared memory, and prints SyncDB save failed. if the save fails. See the warning above.

Unvalidated

drivshell> BCMSAI SyncDB Table Dump <table_name>
BCMSAI SyncDB Data Dump

Write a syncdb debug dump. The built-in help says this “will dump data into /tmp/debug”. The shell itself prints only Got Debug message....

Hardware-validated

drivshell> BCMSAI SyncDB Data Dump
Got Debug message...
BCMSAI DataManager Dump [<file_name>]

Dump the SAI data manager to the console or, given a file name, to that file in the warm-boot state directory. On SONiC the console form prints only DM data can be found here: /var/warmboot/brcm_sai_dm_techsupport.tgz.: the dump goes to that archive inside the syncd container. An over-long name prints File name length cannot be more than <n>.

This is not read-only: every DataManager form first walks and saves the SAI module state. See the warning above.

Hardware-validated

drivshell> BCMSAI DataManager Dump
DM data can be found here: /var/warmboot/brcm_sai_dm_techsupport.tgz.
BCMSAI DataManager Table

Show the data-manager table summary. Like DataManager Dump, it saves the SAI module state first.

Hardware-validated

drivshell> BCMSAI DataManager Table

Table Name: CPUMqueue
Table Creation Flags: 0x3
Table Type: AVL Tree (1)
Storable Table Schema Size: 260
Allocated Memory: 3056 (2KB)
Record Size: 8
Max Records: 48
Number of Records: 48
Max Non-Deleted Records: 48
Number of Non-Deleted Records: 48
Key Size: 4
Number of purges: 0
User Data Size: 384 (0KB)
Number of Writes: 96
Number of Reads: 0
Clients registered for table change notification:


Table Name: Mqueue
Table Creation Flags: 0x3
Table Type: AVL Tree (1)
Storable Table Schema Size: 344
Allocated Memory: 553328 (540KB)
Record Size: 12
Max Records: 9216
Number of Records: 361
Max Non-Deleted Records: 9216
Number of Non-Deleted Records: 361
Key Size: 8
...
BCMSAI dump_eapp_config

Print the embedded-application configuration: embedded-apps-location, feature-names, file-name, app-version, compatible-silicon and compatible-cancun. This keyword must be typed in full (any case). On a SONiC Trident 3 switch no embedded applications are configured and it prints only an empty embedded-apps-location: line. Read-only.

Hardware-validated

drivshell> BCMSAI dump_eapp_config
embedded-apps-location:
BCMSAI ObjectState [Brief | Type <objtype>]

Dump the SAI object-tracking state: all objects with no argument, a brief form with Brief, or one object type. <objtype> is a SAI object-type name without the SAI_OBJECT_TYPE_ prefix, in any case: port selects SAI_OBJECT_TYPE_PORT. Read-only.

On a SONiC switch ObjectState Type PORT prints nothing. Object tracking is probably off; ObjectState Configure Enable (below) turns it on.

Hardware-validated

drivshell> BCMSAI ObjectState Type PORT
BCMSAI ObjectState Configure <Enable | Disable | Clear>

Turn SAI object tracking on or off, or clear it. Config is accepted as an abbreviation of Configure. Changes SAI debug state.

Unvalidated

drivshell> BCMSAI ObjectState Config Enable
BCMSAI Memtrack [index | list | table | summary | module <id>]

Show SAI memory tracking. With no argument it prints all four views (index, list, table, summary). Any other word prints nothing and succeeds. Read-only.

Hardware-validated

drivshell> BCMSAI Memtrack summary

 Global Memory Statistics: outstanding(258667153) peak(258735568) overhead(67784)

 Indexed Memory Statistics: outstanding(68270942)

 List Memory Statistics: outstanding(2008)

 Table Memory Statistics: outstanding(39410656)
BCMSAI Hamem Summary [Detail]

Summarise the SAI’s HA (warm-boot) shared-memory tables. Read-only.

Hardware-validated

drivshell> BCMSAI Hamem Summary

################################################################################

********************************************************************************

comp(0) sub_comp(1) name(sai-ha-rt-table) header(0x7fe8631fc028) data_begin(0x7fe86320407c) data_start(0x7fe8632340ac)

sig(a0b0c0d) ver(1) chksum(0) memType(static) memSubtype(array)
ent_size(24) max(8194) used(0) avail(8194) peak(0) allocAgg(0::0) freeAgg(0::0) head(0) tail(8193)

================================================================================

comp(0) sub_comp(2) name(sai-ha-rt-node) header(0x7fe85f363028) data_begin(0x7fe85f423074) data_start(0x7fe860c23074)

sig(a0b0c0d) ver(1) chksum(0) memType(dynamic) memSubtype(trie)
ent_size(128) max(196608) used(6) avail(196602) peak(6) allocAgg(6::0) freeAgg(0::0) head(6) tail(196607)

================================================================================

********************************************************************************

################################################################################
BCMSAI Hamem Module <comp_id> <subcomp_id> [Detail]

Display one HA table by component and sub-component ID. The built-in help shows Comp <id> SubComp <id>; the shell actually expects Module followed by two bare numbers. Take the numbers from the comp(<n>) sub_comp(<n>) lines of Hamem Summary; a pair that does not exist prints nothing. On a SONiC Trident 3 switch the summary lists only component 0 with sub-components 1 (sai-ha-rt-table) and 2 (sai-ha-rt-node). Read-only.

Hardware-validated

drivshell> BCMSAI Hamem Module 1 0

Hardware-validated

drivshell> BCMSAI Hamem Module 0 2

comp(0) sub_comp(2) name(sai-ha-rt-node) header(0x7fe85f363028) data_begin(0x7fe85f423074) data_start(0x7fe860c23074)

sig(a0b0c0d) ver(1) chksum(0) memType(dynamic) memSubtype(trie)
ent_size(128) max(196608) used(6) avail(196602) peak(6) allocAgg(6::0) freeAgg(0::0) head(6) tail(196607)
BCMSAI Scaletrack Summary [Detail]

Summarise SAI scale tracking. Scaletrack Module <id> [Detail] shows one module. Read-only.

Hardware-validated

drivshell> BCMSAI Scaletrack Summary Detail

Scaling Information
************************************************************
************************************************************
************************************************************
Flags:
Bit 0 - Unused
Bit 1 - _BRCM_SAI_SCALE_TRACK_FLAGS_REGISTERED
Bit 2 - _BRCM_SAI_SCALE_TRACK_FLAGS_MAX_SCALE_ONLY
Bit 3 - _BRCM_SAI_SCALE_TRACK_OLD_MAX_SCALE

type                                          name      max     used     free peak-usage aggr-used aggr-free    flags   module     dmax     amax    pdmax    pamax

   1             _BRCM_SAI_SCALE_TYPE_MPTNL_TNL_NH     1024      N/A      N/A      N/A      N/A      N/A        6       26     1024     1024     1024     1024

   2      _BRCM_SAI_SCALE_TYPE_MPTNL_VXLAN_TNL_MAP      128      N/A      N/A      N/A      N/A      N/A        6       26      128      128      128      128

   3          _BRCM_SAI_SCALE_TYPE_MPTNL_VXLAN_TNL        5        0        5        0        0        0        2       26        5        5        5        5

   4     _BRCM_SAI_SCALE_TYPE_MPTNL_VXLAN_VLAN_VNI      128        0      128        0        0        0        2       26      128      128      128      128

   5      _BRCM_SAI_SCALE_TYPE_MPTNL_VXLAN_VRF_VNI       64        0       64        0        0        0        2       26       64       64       64       64

   6           _BRCM_SAI_SCALE_TYPE_MPTNL_IPIP_TNL      513        0      513        0        0        0        2       26      513      513      513      513

   7           _BRCM_SAI_SCALE_TYPE_MPTNL_TNL_LPBK        5        0        5        0        0        0        2       26        5        5        5        5

   8                  _BRCM_SAI_SCALE_TYPE_COUNTER     4096        0     4096        0        0        0        2       41     4096     4096     4096     4096

************************************************************
************************************************************
************************************************************
BCMSAI MPTnl <table> [Detail]

Dump the SAI multipoint (VXLAN) tunnel tables. <table> is one of Global, Route, SrcTnlIdDip, SipDipCmn, Dip, Sip, TeRm, Nh, ITnl, TnlMap, TnlMapEnt and TnlDvniMapEnt. Any second word other than Detail (for example Brief) gives the brief form. An unknown table name prints the usage. Read-only.

Hardware-validated

drivshell> BCMSAI MPTnl Global

 Tunnel Global Information

 Configuration Information:
VxLAN BUM Bit Enable:No

 Capability Information:
VxLAN:Yes IPinIP/GRE:Yes VxLAN_Decap_Only:Yes VxLAN_L3VNI_Only:No

 vxlan_flow_handle(1) vxlan_rsvd_vpn(45055) tnl_l3_rif(8192) def_vni(0)
 vxlan_drop_nh(132768) ipip_drop_nh(132769) ifp_misc_group_dscp_to_tc(0)
 bcm_vxlan_ing_stat_pool_id(0x0) bcm_vxlan_egr_stat_pool_id(0x0)
 bcm_ipinip_ing_stat_pool_id(0x0) bcm_ipinip_egr_stat_pool_id(0x0)
 route_mode(Any prefix) ecmp_sharing_mode(No Sharing) acc_mode(1) lag_nh_del_track_cnt(0)       nh_hwid_mismatch(0) uniform_decap_qos_map(3072)

 Scaling Information:
 tnl(curr:0::max:518) vxlan(curr:0::max:5) ipip(curr:0::max:513) tnl_ul_max_path(2)
 tnlmap(max(192) vlan(curr:0::max:128) vrf(curr:0::max:64) lpbk(curr:0::max:5))

 Lock Information:
 Global acquire(total:65) release(total:65::normal:65::api:0)


 Debug Counters
 Generic type(    vni_map_entry) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
 Generic type(   vlan_map_entry) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
 Generic type(    vrf_map_entry) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
 Generic type(      route_entry) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
 Generic type(    route_dip_tnl) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
 Generic type(  term_terminator) (crea_succ:0::crea_fail:0::del_succ:0::del_fail:0)
...
BCMSAI MPTnl Dip Detail

Show the known destination VTEPs of multipoint (VXLAN) tunnels.

Hardware-validated

drivshell> BCMSAI MPTnl Dip Detail

 Tunnel DIP Information
=======================================================

 Total DIP Count(0)

=======================================================
BCMSAI L2Ecmp <Global | Group [<id>] | Member [<id>] | TnlInfo | MacNbr>

Dump the SAI L2 ECMP group debug state: global state, all groups or one group by index, all members or one member by index, tunnels, or MAC neighbours. Read-only.

Hardware-validated

drivshell> BCMSAI L2Ecmp Group
---------- L2 Ecmp Groups -----------
---------- L2 Ecmp Groups -----------
BCMSAI VlanStack <idata | stackinfo | portinfo | fwdinfo>

Dump the SAI VLAN-stacking state. These keywords are all lower case, so any prefix is accepted. Read-only.

Hardware-validated

drivshell> BCMSAI VlanStack portinfo

 VLAN Stack PortInfo Information
=======================================================
BCMSAI SamplePacket [all | profile <idx> | ports]

Dump the SAI sampled-packet (sFlow) state: everything (no argument or all), one profile, or the per-port bindings. Read-only.

Hardware-validated

drivshell> BCMSAI SamplePacket
========== SamplePacket Profile Dump ==========
Global SamplePacket Count: 0
Use seperate Egress Sampler Proc File: false
Max Profiles: 16

Total Valid Profiles Found: 0
========== End of SamplePacket Dump ==========
BCMSAI route [vrf-all | vrf <vr_id> | brief | client <id>] [v4 | v6] [client <id>]

Dump the SAI route table. The defaults are all VRFs, both address families and client 0.

The first word always selects the VRF: vrf <id> selects one VRF, brief selects the brief form, client <id> sets the client, and any other word (conventionally vrf-all) means all VRFs. Only the next word is checked for v4 or v6. So BCMSAI route v4 shows both families; use BCMSAI route vrf-all v4 to see only IPv4. Read-only.

Hardware-validated

drivshell> BCMSAI route vrf-all v4

 IP Route Information
vr_id: start=0 end=4095 AFI: start=0 end=0, client_id=0
g_rtNode_ha_mem_size=196608, g_rtCount_max:98304, g_rtNodeCount=6, g_rtCount=6
Trie Dump

rtTable vr_id:0, afi:0, rtCount:3 ndCount:3
  1. [0.0.0.0/0]  src:0x1, NH=0x0,nhid:0, pa:0,mp:0,ip2me:0, state:1
  2. [198.51.100.0/24]  src:0x1, NH=0x386010600000001,nhid:0, pa:1,mp:0,ip2me:0, state:2
  3. [198.51.100.1/32]  src:0x1, NH=0x10100000000,nhid:0, pa:1,mp:0,ip2me:1, state:2
BCMSAI flexctr [detail]

Dump the SAI flex-counter state, in brief or detailed form. The built-in help also shows Brief; in fact any word other than detail or the port-* forms below gives the brief dump. Read-only.

Hardware-validated

drivshell> BCMSAI flexctr detail
Stats Enable Bit Mask List [sai_stats_support_mask]
  RIF:0x1 ROUTE:0x2 QDRP:0x4 DEF_ROUTE:0x10 EgrVLAN_SLIM:0x20                            L3_DST_Discard:0x40, Srv6_MySID_Stats:0x80,                             TAM_ST_Ingress:0x100, TAM_ST_Egress:0x200 Exclude_PFC_DSCRD:0x800
Stats Disable Bit Mask List [sai_stats_disable_mask]
  POLICER:0x1 QUEUE:0x2 MC_QUEUE:0x4 ECN:0x8 PORT_DROP:0x10
  PORT_TC:0x20 PORT_TC_DROP:0x40 PORT_IN_DISCARDS:0x80 VLAN:0x100 VXLAN:0x200 KNOCKOUT:0x800
Stats Enable Mask (0x0):

Stats Disable Mask (0x0):

Flexcounter Info:
Debug Counters
BCMSAI flexctr port-queue-stats [<port> | nz] [nz]

Per-queue counters for one port, or all ports if none is given. nz shows non-zero counters only. port-queue-drop-stats and port-ecn-queue-stats take the same arguments and show drop and ECN counters. <port> is a decimal SDK port number. Reading may clear the counters. On Trident 3 all three forms only print Not supported on non LTSW devices: they work only on the newer chip families.

Hardware-validated

drivshell> BCMSAI flexctr port-queue-stats nz
Not supported on non LTSW devices
BCMSAI Acl <Table | Entry | Counter | All>

Dump the SAI ACL tables, entries and counters, or all three. An argument is required. Any other word returns silently. The built-in help lists Acl Info [entry-oid …], but this build does not implement it. Read-only.

Hardware-validated

drivshell> BCMSAI Acl Table
ACL Tables:
==========
Auto field group prioritize:Disable
===================== 0 Ingress ACL tables =====================
===================== 0 Egress ACL tables =====================
BCMSAI ApiLog

Prints API Logging not included in SAI build. The Config, Show and Clear forms in the built-in help are not supported; the shell warns that the extra arguments were ignored.

Hardware-validated

drivshell> BCMSAI ApiLog


 API Logging not included in SAI build
BCMSAI LoadBalance

Print Load balance debug support and then the ARS and load-balancing tech-support dump: the RTAG7 hash settings for LAG and ECMP and the UDF hash controls. On Trident 3 the UDF hash controls read Feature unavailable and the dump ends with Platform does not support ARS (without a newline, so the prompt follows on the same line). Read-only.

Hardware-validated

drivshell> BCMSAI LoadBalance

 Load balance debug support

Rtag7 hash control
    bcmSwitchHashControl                                   : 0x3b3 (947)
Rtag7 hash Lag Algorithm ..
    bcmSwitchHashField0Config                              : 0x8 (8)
    bcmSwitchHashSeed0                                     : 0x0 (0)
    bcmSwitchHashIP4TcpUdpField0                           : 0xf70 (3952)
    bcmSwitchHashIP4TcpUdpPortsEqualField0                 : 0xf70 (3952)
    bcmSwitchHashIP4Field0                                 : 0xf70 (3952)
    bcmSwitchHashField0PreProcessEnable                    : 0x1 (1)
    bcmSwitchTrunkHashSet0UnicastOffset                    : 0x0 (0)
Rtag7 hash ECMP Algorithm ..
    bcmSwitchHashSeed1                                     : 0x0 (0)
    bcmSwitchHashField1Config                              : 0x9 (9)
    bcmSwitchHashIP4TcpUdpField1                           : 0xf70 (3952)
    bcmSwitchHashIP4TcpUdpPortsEqualField1                 : 0xf70 (3952)
    bcmSwitchHashIP4Field1                                 : 0xf70 (3952)
    bcmSwitchHashField1PreProcessEnable                    : 0x1 (1)
    bcmSwitchECMPHashSet0Offset                            : 0x12 (18)
Rtag7 UDF hash control
    bcmSwitchUdfHashEnable                                 : Feature unavailable
    bcmSwitchHashUdfSelect0                                : Feature unavailable
    bcmSwitchHashUdfSelect1                                : Feature unavailable
Platform does not support ARSdrivshell>
BCMSAI WBInfo

Print WarmBoot/ISSU information and then the switch’s warm-boot state. Read-only.

Hardware-validated

drivshell> BCMSAI WBInfo

 WarmBoot/ISSU information
Current SAI Version: 15.2.1.0.0.0.26.3
Current SDK Version: sdk-6.5.35-SP1
WB Count for current SAI version: 0x0
WB Count since last coldboot: 0x0
ISSU Count since last coldboot: 0x0
BCMSAI srv6 global [detail | clrctr]

Show the SRv6 global state. clrctr most likely clears the SRv6 counters. The other srv6 dumps are sid-list, sid-adj, fixed-ul-nh, pd-encap-dump, tunnel, my-sid and agg. On a SONiC Trident 3 switch SRv6 is not set up and srv6 global prints only SRV6 not enabled.

Hardware-validated

drivshell> BCMSAI srv6 global

 SRV6 not enabled
BCMSAI TechSupport [Module <id> | File [<file_name>] [Append] | Append]

Collect SAI tech-support output. With no argument every enabled module is dumped; Module <id> dumps one module. File sets the output file name (File with no name resets it to sai-techsupport.log), and Append appends to the file instead of overwriting it. The full dump turns the shell console off and on again (console off / console on) while it writes the log file, and ends with SAI Timing: Techsupport took <s> seconds. Module IDs are listed by TechSupport Config; module 0 is SAI_API_INT_ERROR, which has nothing to dump and only prints its timing line.

Hardware-validated

drivshell> BCMSAI TechSupport Module 0
SAI Timing: Techsupport for module SAI_API_INT_ERROR(0) took 0.000 seconds

Hardware-validated

drivshell> BCMSAI TechSupport Module 4

 << Start SAI_API_VLAN(4) >>
Maximum supported VLANs : 4095
Use VFI for VLAN : 1
Maximum supported FDB entries : 32768

User Created Vlans
|Vlan|     VFI-MCG      |Member_Count|(type:tid : Bridge-Port-OID : Vlan-Member-OID : Priority-Tagged :   VPort  )|

|   1|0x7001 -0xf000003 |        None|

| 902|0x7386 -0xf000004 |           1|( ETH:12  :0x1003a0000000c  :0xc012700000386  :               NO:0xb0000001)|

|3999|0x7f9f -0xf000006 |        None|
System Internally Created Vlans
|Vlan|

|Vlan|Member_Count|(port_tid:Tag_type)|

|   1|        None|

| 902|           1|(      12:U       )|

|3999|        None|

|4095|        None|

|              Drop entry                    |   Counters  |
------------------------------------------------------------
|  DA = SystemMAC, Vlan = SAG-VSI            | 0 |
|  DA = SystemMAC, Vlan = MclagGW-VSI        | 0 |
|  MyStationHit, Vlan = L2-VSI               | 0 |
|  DA = MclagGW-MAC, Vlan = Non-MclagGw-VSI  | 0 |

 << End SAI_API_VLAN(4) >>
SAI Timing: Techsupport for module SAI_API_VLAN(4) took 0.002 seconds
BCMSAI TechSupport Config [Enable | Disable] [All | Module <id>]

With no argument, show which tech-support modules are enabled. Otherwise enable or disable all modules or one module. Changes the SAI tech-support configuration.

Hardware-validated

drivshell> BCMSAI TechSupport Config

ID     Name                             Flags
1      SAI_API_SWITCH                   0x1
2      SAI_API_PORT                     0x1
3      SAI_API_FDB                      0x1
4      SAI_API_VLAN                     0x1
6      SAI_API_ROUTE                    0x1
23     SAI_API_BUFFER                   0x1
24     SAI_API_HASH                     0x1
25     SAI_API_UDF                      0x1
26     SAI_API_TUNNEL                   0x1
536870934 SAI_API_INT_ERROR                0x1
35     SAI_API_SRV6                     0x1
48     SAI_API_ARS                      0x1
43     SAI_API_MACSEC                   0x1
34     SAI_API_TAM                      0x1
80     SAI_API_INT_SYNCDB               0x1
81     SAI_API_INT_DATAMGR              0x1
82     SAI_API_INT_OBJDUMP              0x1
83     SAI_API_INT_MEMTRACK             0x1
84     SAI_API_INT_SCALETRACK           0x1
85     SAI_API_INT_EAPP                 0x1
BCMSAI Cint

Prints SAI CINT support is not included in the SAI build. Use the SDK cint command instead.

Unvalidated

drivshell> BCMSAI Cint

SAI CINT support is not included in the SAI build
BCMSAI clm show port <all | enabled | <id>>

Show per-port CLM state as a table headed port-id | Media Type   | CLM delay available  | delay value(ns) | Status. enabled restricts the table to ports whose link is up. CLM relates to IEEE 1588 delay measurement. Trident 3 does not support it: the header reads CLM supported: NO and every port shows Feature unavailable (-16). Read-only.

Hardware-validated

drivshell> BCMSAI clm show port all
=====================================================================
|                                 CLM                               |
=====================================================================
CLM supported: NO
CLM is enabled via switch attr: NO
CLM mode: N/A
=====================================================================
port-id | Media Type   | CLM delay available  | delay value(ns) | Status
  1     | unknown      | No                   | N/A             | Feature unavailable (-16)
  5     | unknown      | No                   | N/A             | Feature unavailable (-16)
  9     | unknown      | No                   | N/A             | Feature unavailable (-16)
  10    | unknown      | No                   | N/A             | Feature unavailable (-16)
  11    | unknown      | No                   | N/A             | Feature unavailable (-16)
  12    | unknown      | No                   | N/A             | Feature unavailable (-16)
  13    | unknown      | No                   | N/A             | Feature unavailable (-16)
  17    | unknown      | No                   | N/A             | Feature unavailable (-16)
  21    | unknown      | No                   | N/A             | Feature unavailable (-16)
  25    | unknown      | No                   | N/A             | Feature unavailable (-16)
  29    | unknown      | No                   | N/A             | Feature unavailable (-16)
  33    | unknown      | No                   | N/A             | Feature unavailable (-16)
  37    | unknown      | No                   | N/A             | Feature unavailable (-16)
  41    | unknown      | No                   | N/A             | Feature unavailable (-16)
  45    | unknown      | No                   | N/A             | Feature unavailable (-16)
  49    | unknown      | No                   | N/A             | Feature unavailable (-16)
  53    | unknown      | No                   | N/A             | Feature unavailable (-16)
  57    | unknown      | No                   | N/A             | Feature unavailable (-16)
  61    | unknown      | No                   | N/A             | Feature unavailable (-16)
  67    | unknown      | No                   | N/A             | Feature unavailable (-16)
  71    | unknown      | No                   | N/A             | Feature unavailable (-16)
  75    | unknown      | No                   | N/A             | Feature unavailable (-16)
...
BCMSAI clm mode <0 | 1 | 2>

Set the CLM mode: 1 (“OneStep”) enables CLM, 0 (“Disable”) turns it off. 2 (“TwoStep”) is refused. Prints CLM mode set to <mode>. Changes switch state.

Unvalidated

drivshell> BCMSAI clm mode 0
BCMSAI clm port <id> <set enable <true | n> | set media <fiber | copper | backplane | none> | get delay | tx>

Per-port CLM control: enable or disable it, set the media type, read the measured delay (Port <id>: delay_ns=<n>) or start a CLM transmit. set 1588 only prints 1588 config supported on DNX only. Every form except get delay changes port state. On Trident 3 they fail: get delay prints clm port <id> get delay failed: -16 (feature unavailable), followed by the front-end’s failure line.

Hardware-validated

drivshell> BCMSAI clm port 1 get delay
clm port 1 get delay failed: -16

Failed to execute the diagnostic command. Error: Operation failed.

Built-in help

Subcommands:
               DataManager [Dump [<file_name>]| Table]
               ObjectState [Config [Enable | Disable | Clear] | Brief |  Type <objtype>]
               SyncDB <Data Dump | <List | Table Dump <table_name>>
               VERsion
               Memtrack [Index | List | Table | Summary | Module <id>]
               Hamem [Summary | Comp <id> SubComp <id>] [Detail | Brief]
               Scaletrack [Summary | Module <id>] [Detail| Brief]

               MPTnl [Global | Route | SrcTnlIdDip | SipDipCmn | Dip | Sip | Nh | TeRm | ITnl | TnlMap | TnlMapEnt | TnlDvniMapEnt] [Detail| Brief]
               L2Ecmp [Global | Group <id> | Member <id> | TnlInfo | MacNbr]
               VlanStack [idata | stackinfo | portinfo | fwdinfo]
               SamplePacket [all | profile <idx> | ports]
               Route [vrf-all|vrf <vr_id>|brief] [v4|v6] [client <id>]
               Acl [Table | Entry | Counter | All]
               Acl Info [entry-oid <object-id>]
               ApiLog [Config [<Enable | Disable> <All | ApiType <api_type_id> | ObjectType <obj_type> > ] |
                       Show [last <log_count | ApiType <api_type_id> | ObjectType <obj_type> ]| Clear]
               FlexCtr [Detail|Brief | port-queue-stats <port> <nz>| port-queue-drop-stats <port> <nz> | port-ecn-queue-stats <port> <nz>]
               LoadBalance
               WBInfo
               clm mode <0|1|2> | clm show port <id|all|enabled> | clm port <id> set 1588|enable <bool>|media <type> | clm port <id> get delay | clm port <id> tx
               dump_eapp_config
               srv6 <global [Detail|ClrCtr]| sid-list | sid-adj | fixed-ul-nh | pd-encap-dump | tunnel | agg | my-sid>
               Cint - C interpreter for SAI
               TechSupport [Module <id> | Config [<Enable | Disable> <All | Module <id>>] | File <file-name> | Append]
    SAI debugging commands

    Note: "syncdb data dump" will dump data into /tmp/debug

Further reading

bcmsh.md (published as https://kamelnetworks.github.io/sonic/bcmsh.html), sonic-buildimage issues with bcmcmd usage (exemplars #1762, #3212, #10733, #22287, #28832).