Buffers, queues and QoS

MMU buffer configuration, queue counts, cut-through and PFC. See Buffers and queues.

Set in several SONiC Trident 3 HWSKU files: asf_mem_profile, bcm_num_cos, default_cpu_tx_queue, mmu_init_config, mmu_lossless, pfc_deadlock_seq_control.

asf_mem_profile
Type:
number

Cut-through (ASF) buffer profile: 0 store-and-forward only, 1 cut-through between ports of similar speed, 2 cut-through between all speeds.

SONiC:

set in 9 Trident 3 HWSKU files; 2, 0

bcm_num_cos
Type:
number
Default:
8

Number of class-of-service queues the SDK configures per port at start-up. Dell S5232F files set 10.

SONiC:

set in 40 Trident 3 HWSKU files; 10, 8, 9

bst_sync_thread_pri
Type:
number
Default:
50

Specifies the priority of the bcm_bst_sync_thread

buffer_stats_collect_mode
Type:
number
Default:
0

Flags to denote pstats and oob stats mode. TH only supports 0. 0x0 Instantaneous mode 0x1 Max use count mode with HW clear on Read

buffer_stats_collect_type
Type:
number
Default:
1

Flags to enable pstats or oob stats. only one can be enabled at a time. TH only supports 0 and 1. 0x0 None: disable both oob stats and pstats 0x1 OOB STATS: only enable out-of-band stats 0x2 PSTATS: only enable packetized statistic

default_cpu_tx_queue
Type:
number

Queue used for packets sent from the CPU without an explicit queue. Read by the SAI’s MMU set-up.

SONiC:

set in 18 Trident 3 HWSKU files; 9

hybrid_pfc_deadlock_enable
Type:
number
Default:
0

Control whether to enable hybrid PFC deadlock. 0 – Do not enable hybrid PFC deadlock. Only support HW based PFC deadlock (default). 1 – Enable hybrid PFC deadlock. Support both HW and SW based PFC deadlock.

SONiC:

set in 2 Trident 3 HWSKU files; 1

lb_port_use_uc_queues
Type:
number

This soc property defines whether SOBMH packets sent to loopback ports use unicast or multicast queues. The value is 0 to use multicast queues and 1 to use unicast queues.

lccdrain_timeout_usec
Type:
number

When a link goes down for any reason, the driver waits for all packets to that port to drain from the MMU before continuing. There is a timeout in case the packet count is non-zero AND non-decrementing. This is only for devices with UniMAC and TriMAC.

mirror_copy_counting_disable
Type:
number

This soc property is used to disable the mirror copy counting on all pool nums To disable a specific pool num, use the suffix “_poolx”. x represents the pool num default value is 0 (mirror copy counting is enabled).

Forms:

mirror_copy_counting_disable_pool<N>

mirror_dest_cosq_mode
Type:
number
Default:
0
mmu_config_override
Type:
number
Default:
1

Use the SDK’s built-in MMU settings (1) or the buf.* variables (0). The buf.* values are used only when this is 0 and they pass the SDK’s checks; otherwise the built-in settings stay.

mmu_flow_fanin
Type:
number

Number of simultaneous senders to each port for flow control purposes

mmu_flow_percent
Type:
number

Percentage of per-port cells usable before flow control starts

mmu_init_config
Type:
string

Name of a built-in MMU start-up configuration, read by the SAI’s MMU set-up.

SONiC:

set in 8 Trident 3 HWSKU files; "TD3-DELL-lossless"

mmu_lossless
Type:
number
Default:
0

Initial MMU profile: 0 lossy, 1 lossless (PFC-ready headroom). SONiC programs buffers through the SAI at runtime, so most files leave it at 0.

SONiC:

set in 15 Trident 3 HWSKU files; 0

mmu_lossless_pbmp
Type:
number

Select ports to apply MMU lossless configuration (valid only if mmu_lossless=1). This property is only required for specific chips that have limited MMU lossless ports, such as BCM5354x,BCM5667X. For example, enable MMU lossless mode on port 4~7. mmu_lossless=1 mmu_lossless_pbmp=0xf0

mmu_mem_size
Type:
string
mmu_num_dmvoq_queues
Type:
number

MMU configuration of number of dmvoq queues

mmu_overcommit
Type:
number

Non-stack port overcommit factor for dynamic pool

mmu_overcommit_stack
Type:
number

Stack port overcommit factor for dynamic pool

mmu_port_num_mc_queue
Type:
number

Number of unicast and multicast queues per port mmu_port_num_mc_queue = 0 (12 unicast, 0 multicast) mmu_port_num_mc_queue = 1 (10 unicast, 2 multicast) mmu_port_num_mc_queue = 2 (8 unicast, 4 multicast) mmu_port_num_mc_queue = 3 (6 unicast, 6 multicast)

mmu_queue_flush_timeout
Type:
number

Timeout delay in microseconds for queue flush complete

mmu_red_drop_percent
Type:
number

Percentage of per-port/per-cos packets used before red packets will be dropped

mmu_reset_bytes
Type:
number

(1536 * 2) offset from dynamic cell set limits for reset (enable) limits. Rounded up from bytes to next cell size.

mmu_static_bytes
Type:
number

Per-port/per-cos static reserved limit. Rounded up from bytes to next cell size. Remaining cells are put in dynamic pool. If 0, then mmu_static_percent is used.

mmu_static_percent
Type:
number

Percentage of per-port/per-cos cells to use as static reserved limit. Remaining cells are put in dynamic pool. Only used if mmu_static_bytes is 0.

mmu_yellow_drop_percent
Type:
number

Percentage of per-port/per-cos packets used before yellow packets will be dropped

num_queues
Type:
number

In 5644x, 48 queues will be shared across host CPU and other micro controllers, this variable can be configured suffix with _pci _uc0 etc..

num_queues_pci
Type:
number
Default:
0

Number of CPU (CMIC) queues served by the PCIe host.

SONiC:

set in 1 Trident 3 HWSKU file; 46

num_queues_uc0
Type:
number
Default:
0

Number of CPU queues served by embedded microcontroller 0.

SONiC:

set in 1 Trident 3 HWSKU file; 1

num_queues_uc1
Type:
number
Default:
0

Number of CPU queues served by embedded microcontroller 1.

SONiC:

set in 1 Trident 3 HWSKU file; 1

oob_pstats_hw_cor_en
Type:
number
Default:
1
pfc_deadlock_seq_control
Type:
number
Default:
0

Order of PFC deadlock handling: 0 calls the user callback after setting PFC XOFF, 1 before.

SONiC:

set in 8 Trident 3 HWSKU files; 1

port_uc_mc_accounting_combine
Type:
number
Default:
0

0: Separate port use-count, port limit and port resume for UC and MC. 1: Combined port use-count, port limit and port resume for UC and MC.

profile_pg_1hdrm_8shared
Type:
number
Default:
1

0 - profile priority group with 1 shared profile and 8 headroom profiles, 1 - profile priority group with 8 shared profiles and 1 headroom profile

pstats_desc_all
Type:
number
Default:
1
pstats_mor_disable
Type:
number
qos_default_map
Type:
number

This configuration property is used to enable/disable default QoS mapping loading when creating a QoS map. Note: qos_default_map = 0 (default): disable loading default Qos mapping. qos_default_map = 1: enable loading default Qos mapping.

qos_map_dot1p_nonsharable_mode
Type:
number
qos_map_dscp_nonsharable_mode
Type:
number

Select DSCP map profile sharable mode. 0 - DSCP map profile shares among some map IDs (Default option). 1 - Each QoS map ID holds an exclusive DSCP map profile.

qos_map_egr_dscp_nonsharable_mode
Type:
number

Select whether the QoS egress DSCP table entries are non-sharable. 0 - The entries within the table are sharable between QoS maps (Default option). 1 - The entries within the table are non-sharable. Each QoS map has an exclusive set for itself.

qos_map_multi_get_mode
Type:
number

Select the output mode of API bcm_qos_map_multi_get. 0 - Get all HW QoS map entries regardless of valid or not (default). 1 - Get configurable QoS map entries.

service_queue_dynamic_config
Type:
number

TRUE => Support a. Changing service queue configuration with traffic. b. Allows multiple SERVICE_QUEUE_MAP table entries can share same egress Service Queue Group. FALSE => Default Setting Note: Hw limites number of port profile indexes to be 8. i.e. Max 8 unique combination of PORT_OFFSETS can be mapped. However, due to software use of memory profile indexing, one of these profile is used as a work entry. Thus we are limite to maximum of 7 unique port profiles.