Listreg

List register fields

Listreg

Shortest form: l.

List registers and show their fields. Read-only: it uses the chip description, not the hardware.

Grammar:

listreg [-alias] [-summary] <REGISTER> [<value>]
listreg -counters | -ed | -type

For <REGISTER>, an exact name prints its address, flags, and each field with its bit range and reset value; a number is taken as an address; anything else, or *, lists the registers whose names contain it (Unknown register; possible matches are:). The list is printed, but the command still counts as failed, so the SAI shell adds Failed to execute the diagnostic command. Error: Operation failed. after it. A <value> after the register is decoded into its fields, without reading the hardware. A per-port register is shown under its first instance (CLMAC_CTRL.ce0) with every block that has a copy listed under Blocks:.

Options start with - and have one-letter forms: -a (-alias, show alias names), -s (-summary, one line per register), -c (-counters, list counter registers), -e (-ed, list error/discard counters) and -t (-type, list registers by block type). Without any argument it prints its usage. If the reglist_enable configuration property is 0 the command does nothing.

Hardware-validated

drivshell> listreg ING_CONFIG_64
Register: ING_CONFIG_64.ipipe0 alias ING_CONFIG general register address 0x4e018000
Flags: 64-bits
Blocks: ipipe0 (1 copy)
Description: Switch configuration register
Displaying: reset defaults, reset value 0x804040000 mask 0x7ffffffffffff
  VFP_PRI_ACTION_FB2_MODE<25> = 0
  USE_PROT_STATUS<39> = 0
  USE_PPD_SOURCE<6> = 0
  TUNNEL_URPF_MODE<31:30> = 0
  TUNNEL_URPF_DEFAULTROUTECHECK<32> = 0
  SVL_ENABLE<22> = 0
  STNMOVE_ON_L2SRC_DISC<21> = 0
  PARSER_2_DEFAULT_IPV4_OPTIONS_HDR_CHECKSUM_CONTROL<50> = 0
  PARSER_1_DEFAULT_IPV4_OPTIONS_HDR_CHECKSUM_CONTROL<49> = 0
  NAT_ENABLE<36> = 0
  MY_STATION_CLASSID_SELECT<40> = 0
  MLD_PKTS_UNICAST_IGNORE<4> = 0
  MLD_CHECKS_ENABLE<5> = 0
  LOOKUP_L2MC_WITH_FID_ID<23> = 0
  LBID_RTAG<29:27> = 0
  L3SRC_HIT_ENABLE<18> = 1
  L3IIF_URPF_SELECT<33> = 0
  L2_ENTRY_USED_AS_MY_STATION<37> = 0
  L2MC_LOOKUP_USE_BROADCAST_DOMAIN<24> = 0
  L2DST_HIT_ENABLE<26> = 1
  IPV6_RESERVED_MC_ADDR_MLD_ENABLE<14> = 0
  IPV6_MC_MACDA_CHECK_ENABLE<16> = 0
  IPV4_RESERVED_MC_ADDR_IGMP_ENABLE<13> = 0
  IPV4_MC_MACDA_CHECK_ENABLE<15> = 0
  IPHDR_ERROR_L3_LOOKUP_ENABLE<35> = 1
...

Hardware-validated — Register names containing CLMAC

drivshell> listreg CLMAC
Unknown register; possible matches are:
  CLMAC_CLEAR_ECC_STATUS CLMAC_CLEAR_FIFO_STATUS
  CLMAC_CLEAR_RX_LSS_STATUS CLMAC_CTRL CLMAC_E2ECC_DATA_HDR_0
  CLMAC_E2ECC_DATA_HDR_1 CLMAC_E2ECC_MODULE_HDR_0
  CLMAC_E2ECC_MODULE_HDR_1 CLMAC_E2EFC_DATA_HDR_0
  CLMAC_E2EFC_DATA_HDR_1 CLMAC_E2EFC_MODULE_HDR_0
  CLMAC_E2EFC_MODULE_HDR_1 CLMAC_E2E_CTRL CLMAC_ECC_CTRL
  CLMAC_ECC_FORCE_DOUBLE_BIT_ERR CLMAC_ECC_FORCE_SINGLE_BIT_ERR
  CLMAC_EEE_1_SEC_LINK_STATUS_TIMER CLMAC_EEE_CTRL CLMAC_EEE_TIMERS
  CLMAC_FIFO_STATUS CLMAC_GMII_EEE_CTRL CLMAC_HIGIG_HDR_0
  CLMAC_HIGIG_HDR_1 CLMAC_INTR_ENABLE CLMAC_INTR_STATUS
  CLMAC_LAG_FAILOVER_STATUS CLMAC_LLFC_CTRL CLMAC_MEM_CTRL CLMAC_MODE
  CLMAC_PAUSE_CTRL CLMAC_PFC_CTRL CLMAC_PFC_DA CLMAC_PFC_OPCODE
  CLMAC_PFC_TYPE CLMAC_RX_CDC_ECC_STATUS CLMAC_RX_CTRL
  CLMAC_RX_LLFC_MSG_FIELDS CLMAC_RX_LSS_CTRL CLMAC_RX_LSS_STATUS
  CLMAC_RX_MAC_SA CLMAC_RX_MAX_SIZE CLMAC_RX_TS_MEM_ECC_STATUS
  CLMAC_RX_VLAN_TAG CLMAC_SPARE0 CLMAC_SPARE1 CLMAC_TIMESTAMP_ADJUST
  CLMAC_TIMESTAMP_BYTE_ADJUST CLMAC_TXFIFO_CELL_CNT
  CLMAC_TXFIFO_CELL_REQ_CNT CLMAC_TX_CDC_ECC_STATUS
  CLMAC_TX_CRC_CORRUPT_CTRL CLMAC_TX_CTRL CLMAC_TX_LLFC_MSG_FIELDS
  CLMAC_TX_MAC_SA CLMAC_TX_TIMESTAMP_FIFO_DATA
  CLMAC_TX_TIMESTAMP_FIFO_STATUS CLMAC_VERSION_ID

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

Hardware-validated — Decode a value into CLMAC_CTRL’s fields

drivshell> listreg CLMAC_CTRL 0x9040
Register: CLMAC_CTRL.ce0 port register address 0x00060000
Flags: 64-bits
Blocks: clport0 clport1 clport2 clport3 clport4 clport5 clport6 clport7 clport8 clport9 clport10 clport11 clport12 clport13 clport14 clport15 clport16 clport17 clport18 clport19 clport20 clport21 clport22 clport23 clport24 clport25 clport26 clport27 clport28 clport29 clport30 clport31 [clport32] (33 copies, 1 disabled)
Description: MAC control.
Displaying: value 0x9040, reset value 0x9040 mask 0xffff
  XGMII_IPG_CHECK_DISABLE<11> = 0
  TX_EN<0> = 0
  SW_LINK_STATUS<12> = 1
  SOFT_RESET<6> = 1
  RX_EN<1> = 0
  RS_SOFT_RESET<10> = 0
  RSVD_5<9> = 0
  RSVD_4<7> = 0
  RSVD_1<3> = 0
  REMOVE_FAILOVER_LPBK<4> = 0
  LOCAL_LPBK_LEAK_ENB<8> = 0
  LOCAL_LPBK<2> = 0
  LINK_STATUS_SELECT<13> = 0
  LAG_FAILOVER_EN<5> = 0
  EXTENDED_HIG2_EN<15> = 1
  ALLOW_40B_AND_GREATER_PKTS<14> = 0
Listreg -counters

List every counter register of the unit. -ed lists only the error/discard counters; -type lists all registers grouped by block type.

Hardware-validated

drivshell> listreg -c
unit 0 counters
  CLMIB_R64 CLMIB_R127 CLMIB_R255 CLMIB_R511 CLMIB_R1023 CLMIB_R1518
  CLMIB_R2047 CLMIB_R4095 CLMIB_R9216 CLMIB_R16383 CLMIB_RALN
  CLMIB_RBCA CLMIB_RBYT CLMIB_RDVLN CLMIB_RERPKT CLMIB_RFCR CLMIB_RFCS
  CLMIB_RFLR CLMIB_RFRG CLMIB_RJBR CLMIB_RMCA CLMIB_RMCRC CLMIB_RMGV
  CLMIB_RMTUE CLMIB_ROVR CLMIB_RPFC0 CLMIB_RPFC1 CLMIB_RPFC2
  CLMIB_RPFC3 CLMIB_RPFC4 CLMIB_RPFC5 CLMIB_RPFC6 CLMIB_RPFC7
  CLMIB_RPFCOFF0 CLMIB_RPFCOFF1 CLMIB_RPFCOFF2 CLMIB_RPFCOFF3
  CLMIB_RPFCOFF4 CLMIB_RPFCOFF5 CLMIB_RPFCOFF6 CLMIB_RPFCOFF7
  CLMIB_RPKT CLMIB_RPOK CLMIB_RPRM CLMIB_RPROG0 CLMIB_RPROG1
  CLMIB_RPROG2 CLMIB_RPROG3 CLMIB_RRBYT CLMIB_RRPKT CLMIB_RSCHCRC
  CLMIB_RTRFU CLMIB_RUCA CLMIB_RUND CLMIB_RVLN CLMIB_RXCF CLMIB_RXPF
  CLMIB_RXPP CLMIB_RXUDA CLMIB_RXUO CLMIB_RXWSA
  CLMIB_RX_EEE_LPI_DURATION_COUNTER CLMIB_RX_EEE_LPI_EVENT_COUNTER
  CLMIB_RX_HCFC_COUNTER CLMIB_RX_HCFC_CRC_COUNTER
  CLMIB_RX_LLFC_CRC_COUNTER CLMIB_RX_LLFC_LOG_COUNTER
  CLMIB_RX_LLFC_PHY_COUNTER CLMIB_T64 CLMIB_T127 CLMIB_T255 CLMIB_T511
  CLMIB_T1023 CLMIB_T1518 CLMIB_T2047 CLMIB_T4095 CLMIB_T9216
  CLMIB_T16383 CLMIB_TBCA CLMIB_TBYT CLMIB_TDFR CLMIB_TDVLN CLMIB_TEDF
  CLMIB_TERR CLMIB_TFCS CLMIB_TFRG CLMIB_TJBR CLMIB_TLCL CLMIB_TMCA
  CLMIB_TMCL CLMIB_TMGV CLMIB_TNCL CLMIB_TOVR CLMIB_TPFC0 CLMIB_TPFC1
  CLMIB_TPFC2 CLMIB_TPFC3 CLMIB_TPFC4 CLMIB_TPFC5 CLMIB_TPFC6
  CLMIB_TPFC7 CLMIB_TPFCOFF0 CLMIB_TPFCOFF1 CLMIB_TPFCOFF2
  CLMIB_TPFCOFF3 CLMIB_TPFCOFF4 CLMIB_TPFCOFF5 CLMIB_TPFCOFF6
  CLMIB_TPFCOFF7 CLMIB_TPKT CLMIB_TPOK CLMIB_TRPKT CLMIB_TSCL
  CLMIB_TUCA CLMIB_TUFL CLMIB_TVLN CLMIB_TXCF CLMIB_TXCL CLMIB_TXPF
  CLMIB_TXPP CLMIB_TX_EEE_LPI_DURATION_COUNTER
  CLMIB_TX_EEE_LPI_EVENT_COUNTER CLMIB_TX_HCFC_COUNTER
  CLMIB_TX_LLFC_LOG_COUNTER CLMIB_XTHOL EGR_ECN_COUNTER_64 IBCAST_64
  ICTRL_64 IIPMC_64 ILTOMC_64 IMRP4_64 IMRP6_64 ING_ECN_COUNTER_64
...

Built-in help

Usage: listreg [options] regname [value]
Options:
    -alias/-a    display aliases
    -summary/-s    display single line summary for each reg
    -counters/-c    display counters
    -ed/-e        display error/discard counters
    -type/-t    display registers grouped by block type
If regname is '*' or does not match a register name, a substring
match is performed.  [] indicates register array.
If regname is a numeric address, the register that resides at that
address is displayed.

Further reading

BCM_SDK命令, bcm cmd, Juniper QFX5100 Series (Douglas Richard Hanks Jr., O’Reilly), Appendix A ‘Under the Hood’ – The Broadcom Shell / Broadcom Shell and cprod.