DPDK  24.07.0
Data Fields
rte_tm_node_params Struct Reference

#include <rte_tm.h>

Data Fields

uint32_t shaper_profile_id
 
uint32_t * shared_shaper_id
 
uint32_t n_shared_shapers
 
uint64_t stats_mask
 
int * wfq_weight_mode
 
uint32_t n_sp_priorities
 
struct {
   int *   wfq_weight_mode
 
   uint32_t   n_sp_priorities
 
nonleaf
 
enum rte_tm_cman_mode cman
 
uint32_t wred_profile_id
 
uint32_t * shared_wred_context_id
 
uint32_t n_shared_wred_contexts
 
struct {
   uint32_t   wred_profile_id
 
   uint32_t *   shared_wred_context_id
 
   uint32_t   n_shared_wred_contexts
 
wred
 
struct {
   enum rte_tm_cman_mode   cman
 
   struct {
      uint32_t   wred_profile_id
 
      uint32_t *   shared_wred_context_id
 
      uint32_t   n_shared_wred_contexts
 
   }   wred
 
leaf
 

Detailed Description

Node parameters

Each non-leaf node has multiple inputs (its children nodes) and single output (which is input to its parent node). It arbitrates its inputs using Strict Priority (SP) and Weighted Fair Queuing (WFQ) algorithms to schedule input packets to its output while observing its shaping (rate limiting) constraints.

Algorithms such as Weighted Round Robin (WRR), Byte-level WRR, Deficit WRR (DWRR), etc. are considered approximations of the WFQ ideal and are assimilated to WFQ, although an associated implementation-dependent trade-off on accuracy, performance and resource usage might exist.

Children nodes with different priorities are scheduled using the SP algorithm based on their priority, with zero (0) as the highest priority. Children with the same priority are scheduled using the WFQ algorithm according to their weights. The WFQ weight of a given child node is relative to the sum of the weights of all its sibling nodes that have the same priority, with one (1) as the lowest weight. For each SP priority, the WFQ weight mode can be set as either byte-based or packet-based.

Each leaf node sits on top of a Tx queue of the current Ethernet port. Hence, the leaf nodes are predefined, with their node IDs set to 0 .. (N-1), where N is the number of Tx queues configured for the current Ethernet port. The non-leaf nodes have their IDs generated by the application.

Definition at line 1091 of file rte_tm.h.

Field Documentation

◆ shaper_profile_id

uint32_t shaper_profile_id

Shaper profile for the private shaper. The absence of the private shaper for the current node is indicated by setting this parameter to RTE_TM_SHAPER_PROFILE_ID_NONE.

Definition at line 1096 of file rte_tm.h.

◆ shared_shaper_id

uint32_t* shared_shaper_id

User allocated array of valid shared shaper IDs.

Definition at line 1099 of file rte_tm.h.

◆ n_shared_shapers

uint32_t n_shared_shapers

Number of shared shaper IDs in the shared_shaper_id array.

Definition at line 1102 of file rte_tm.h.

◆ wfq_weight_mode

int* wfq_weight_mode

WFQ weight mode for each SP priority. When NULL, it indicates that WFQ is to be used for all priorities. When non-NULL, it points to a pre-allocated array of n_sp_priorities values, with non-zero value for byte-mode and zero for packet-mode.

See also
struct rte_tm_node_capabilities::sched_wfq_packet_mode_supported
struct rte_tm_node_capabilities::sched_wfq_byte_mode_supported

Definition at line 1115 of file rte_tm.h.

◆ n_sp_priorities

uint32_t n_sp_priorities

Number of SP priorities.

Definition at line 1118 of file rte_tm.h.

◆ nonleaf

struct { ... } nonleaf

Parameters only valid for non-leaf nodes.

◆ cman

enum rte_tm_cman_mode cman

Congestion management mode

Definition at line 1124 of file rte_tm.h.

◆ wred_profile_id

uint32_t wred_profile_id

WRED profile for private WRED context. The absence of a private WRED context for the current leaf node is indicated by value RTE_TM_WRED_PROFILE_ID_NONE.

Definition at line 1135 of file rte_tm.h.

◆ shared_wred_context_id

uint32_t* shared_wred_context_id

User allocated array of shared WRED context IDs. When set to NULL, it indicates that the current leaf node should not currently be part of any shared WRED contexts.

Definition at line 1142 of file rte_tm.h.

◆ n_shared_wred_contexts

uint32_t n_shared_wred_contexts

Number of elements in the shared_wred_context_id array. Only valid when shared_wred_context_id is non-NULL, in which case it should be non-zero.

Definition at line 1149 of file rte_tm.h.

◆ wred

struct { ... } wred

WRED parameters (only valid when cman is set to WRED).

◆ leaf

struct { ... } leaf

Parameters only valid for leaf nodes.

◆ stats_mask

uint64_t stats_mask

Mask of statistics counter types to be enabled for this node. This needs to be a subset of the statistics counter types available for the current node. Any statistics counter type not included in this set is to be disabled for the current node.

See also
enum rte_tm_stats_type

Definition at line 1160 of file rte_tm.h.


The documentation for this struct was generated from the following file: