rte_tm_capabilities(3)

๐Ÿฆ‹ rte_tm_capabilities โ€” the manual page, part 1

okay so this is rte_tm_capabilities(3) from the Library Functions Manual, and it is literally the vibe check for your traffic manager: it's the struct that tells you what your TM can and can't do before you even try. part 1 of 2, bestie, we're going in ๐Ÿ’…


โœจ NAME โœจ

rte_tm_capabilities


๐Ÿ“ฆ SYNOPSIS ๐Ÿ“ฆ

#include <rte_tm.h>

๐Ÿงš Data Fields

uint32_t n_nodes_max
uint32_t n_levels_max
int non_leaf_nodes_identical
int leaf_nodes_identical
uint32_t shaper_n_max
uint32_t shaper_private_n_max
int shaper_private_dual_rate_n_max
uint64_t shaper_private_rate_min
uint64_t shaper_private_rate_max
int shaper_private_packet_mode_supported
int shaper_private_byte_mode_supported
uint32_t shaper_shared_n_max
uint32_t shaper_shared_n_nodes_per_shaper_max
uint32_t shaper_shared_n_shapers_per_node_max
uint32_t shaper_shared_dual_rate_n_max
uint64_t shaper_shared_rate_min
uint64_t shaper_shared_rate_max
int shaper_shared_packet_mode_supported
int shaper_shared_byte_mode_supported
int shaper_pkt_length_adjust_min
int shaper_pkt_length_adjust_max
uint32_t sched_n_children_max
uint32_t sched_sp_n_priorities_max
uint32_t sched_wfq_n_children_per_group_max
uint32_t sched_wfq_n_groups_max
uint32_t sched_wfq_weight_max
int sched_wfq_packet_mode_supported
int sched_wfq_byte_mode_supported
int cman_wred_packet_mode_supported
int cman_wred_byte_mode_supported
int cman_head_drop_supported
uint32_t cman_wred_context_n_max
uint32_t cman_wred_context_private_n_max
uint32_t cman_wred_context_shared_n_max
uint32_t cman_wred_context_shared_n_nodes_per_context_max
uint32_t cman_wred_context_shared_n_contexts_per_node_max
int mark_vlan_dei_supported [RTE_COLORS]
int mark_ip_ecn_tcp_supported [RTE_COLORS]
int mark_ip_ecn_sctp_supported [RTE_COLORS]
int mark_ip_dscp_supported [RTE_COLORS]
uint64_t dynamic_update_mask
uint64_t stats_mask

๐Ÿ’– Detailed Description ๐Ÿ’–

Traffic manager capabilities. that's the whole summary, no notes, it ate.

Definition at line 199 of file rte_tm.h.


๐Ÿ” Field Documentation ๐Ÿ”

bestie this is the long part, grab a snack ๐Ÿ“

uint32_t n_nodes_max

The maximum number of nodes. ๐Ÿ’€ that's it, that's the cap on how many nodes you get, periodt.

Definition at line 201 of file rte_tm.h.

uint32_t n_levels_max

Maximum number of levels โ€” and yes, "levels" here means the number of nodes connecting the root node with any leaf node, including the root and the leaf. so like, count the whole chain, not just the middle ๐ŸŒˆ

Definition at line 206 of file rte_tm.h.

int non_leaf_nodes_identical

When non-zero, this flag indicates that all the non-leaf nodes (with the exception of the root node) have identical capability set. so if this is nonzero, you don't have to go check every single non-leaf node one by one โ€” they all match. the root is the exception, she's different ๐Ÿ’…

Definition at line 211 of file rte_tm.h.

int leaf_nodes_identical

When non-zero, this flag indicates that all the leaf nodes have identical capability set. same energy as above but for the leaves โ€” nonzero means they're all the same, no cap ๐Ÿƒ

Definition at line 216 of file rte_tm.h.

uint32_t shaper_n_max

Maximum number of shapers, either private or shared. okay so in case the implementation doesn't share any resources between private and shared shapers, this is typically equal to the sum of shaper_private_n_max and shaper_shared_n_max. if this is zero, traffic shaping is not supported. zero = no shaping, so sad ๐Ÿ˜ญ

Definition at line 224 of file rte_tm.h.

uint32_t shaper_private_n_max

Maximum number of private shapers. it tells you the max number of nodes that can concurrently have their private shaper enabled. the value of zero indicates that private shapers are not supported.

Definition at line 230 of file rte_tm.h.

int shaper_private_dual_rate_n_max

Maximum number of private shapers that support dual rate shaping. so it's the max number of nodes that can concurrently have their private shaper enabled with dual rate support. only valid when private shapers are supported. zero means dual rate shaping isn't available for private shapers. oh and heads up โ€” the maximum value here is shaper_private_n_max, don't get it twisted ๐Ÿ‘‘

Definition at line 239 of file rte_tm.h.

uint64_t shaper_private_rate_min

Minimum committed/peak rate (bytes per second) for any private shaper. valid only when private shapers are supported. bytes per second, write that down โœ๏ธ

Definition at line 244 of file rte_tm.h.

uint64_t shaper_private_rate_max

Maximum committed/peak rate (bytes per second) for any private shaper. also valid only when private shapers are supported. yes it's bytes per second again ๐Ÿซถ

Definition at line 249 of file rte_tm.h.

int shaper_private_packet_mode_supported

Shaper private packet mode supported. when non-zero, this parameter indicates that there's at least one node that can be configured with packet mode in its private shaper. and when a shaper is configured in packet mode, the committed/peak rate you provided gets interpreted in packets per second. switching units on you, sneaky but iconic โœจ

Definition at line 257 of file rte_tm.h.

int shaper_private_byte_mode_supported

Shaper private byte mode supported. when non-zero, this parameter indicates that there's at least one node that can be configured with byte mode in its private shaper. when a shaper is configured in byte mode, the committed/peak rate provided is interpreted in bytes per second. that's the normal one, the baseline, the default flavor ๐Ÿงš

Definition at line 265 of file rte_tm.h.

uint32_t shaper_shared_n_max

Maximum number of shared shapers. the value of zero indicates that shared shapers are not supported. sharing is caring but only if this isn't zero, bestie ๐Ÿ’€

Definition at line 271 of file rte_tm.h.

uint32_t shaper_shared_n_nodes_per_shaper_max

Maximum number of nodes that can share the same shared shaper. only valid when shared shapers are supported. so like, how many friends can pile onto one shaper ๐ŸŒธ

Definition at line 276 of file rte_tm.h.

uint32_t shaper_shared_n_shapers_per_node_max

Maximum number of shared shapers a node can be part of. this parameter indicates that there's at least one node that can be configured with this many shared shapers โ€” which might not be true for all the nodes, so don't generalize. only valid when shared shapers are supported, and in that case it ranges from 1 to shaper_shared_n_max. ๐Ÿ‘‘

Definition at line 284 of file rte_tm.h.

uint32_t shaper_shared_dual_rate_n_max

Maximum number of shared shapers that can be configured with dual rate shaping. the value of zero indicates that dual rate shaping support is not available for shared shapers. double the rate, double the drama ๐Ÿ’…

Definition at line 290 of file rte_tm.h.

uint64_t shaper_shared_rate_min

Minimum committed/peak rate (bytes per second) for any shared shaper. only valid when shared shapers are supported. bytes per second, always bytes per second ๐Ÿ˜Œ

Definition at line 295 of file rte_tm.h.

uint64_t shaper_shared_rate_max

Maximum committed/peak rate (bytes per second) for any shared shaper. also only valid when shared shapers are supported. ok so min/max, you get it ๐Ÿซถ

Definition at line 300 of file rte_tm.h.

int shaper_shared_packet_mode_supported

Shaper shared packet mode supported. when non-zero, this parameter indicates a shared shaper can be configured with packet mode. when a shared shaper is configured in packet mode, the committed/peak rate provided is interpreted in packets per second. packets, not bytes, keep up โœจ

Definition at line 307 of file rte_tm.h.

int shaper_shared_byte_mode_supported

Shaper shared byte mode supported. when non-zero, this parameter indicates that a shared shaper can be configured with byte mode. when a shared shaper is configured in byte mode, the committed/peak rate provided is interpreted in bytes per second. and we're back to bytes, as it should be ๐Ÿ’œ

Definition at line 314 of file rte_tm.h.

int shaper_pkt_length_adjust_min

Minimum value allowed for packet length adjustment for any private or shared shaper. the floor, the lower bound, the "don't go below this" ๐ŸŒˆ

Definition at line 320 of file rte_tm.h.

int shaper_pkt_length_adjust_max

Maximum value allowed for packet length adjustment for any private or shared shaper. and that's the ceiling for the same thing. min and max, a matched set ๐ŸŽ€

Definition at line 325 of file rte_tm.h.

uint32_t sched_n_children_max

Maximum number of children nodes. this parameter indicates that there's at least one non-leaf node that can be configured with this many children nodes โ€” which might not be true for all the non-leaf nodes, so read it carefully bestie โ˜๏ธ

Definition at line 332 of file rte_tm.h.

uint32_t sched_sp_n_priorities_max

Maximum number of supported priority levels. this parameter indicates that there's at least one non-leaf node that can be configured with this many priority levels for managing its children nodes, which might not be true for all the non-leaf nodes. the value of zero is invalid. and the value of 1 indicates that only priority 0 is supported, which essentially means that Strict Priority (SP) algorithm is not supported. iykyk ๐Ÿ”ฅ

Definition at line 342 of file rte_tm.h.

uint32_t sched_wfq_n_children_per_group_max

Maximum number of sibling nodes that can have the same priority at any given time โ€” i.e. the maximum size of the WFQ sibling node group. this parameter indicates there's at least one non-leaf node that meets this condition, which might not be true for all the non-leaf nodes. the value of zero is invalid. the value of 1 indicates that WFQ algorithm is not supported. and the maximum value is sched_n_children_max. bestie that's a lot of rules, but they all matter ๐Ÿ’€

Definition at line 352 of file rte_tm.h.

uint32_t sched_wfq_n_groups_max

Maximum number of priority levels that can have more than one child node at any given time โ€” i.e. the maximum number of WFQ sibling node groups that have two or more members. this parameter indicates there's at least one non-leaf node that meets this condition, which might not be true for all the non-leaf nodes. the value of zero states that WFQ algorithm is not supported. the value of 1 indicates that (sched_sp_n_priorities_max - 1) priority levels have at most one child node, so there can be only one priority level with two or more sibling nodes making up a WFQ group. and the maximum value is: min(floor(sched_n_children_max / 2), sched_sp_n_priorities_max). ๐Ÿงฎ yes there's math, we love a formula โœจ

Definition at line 365 of file rte_tm.h.

uint32_t sched_wfq_weight_max

Maximum WFQ weight. the value of 1 indicates that all sibling nodes with same priority have the same WFQ weight, so WFQ is reduced to FQ. and honestly? that's just FQ wearing a WFQ costume ๐Ÿ’…

Definition at line 370 of file rte_tm.h.

int sched_wfq_packet_mode_supported

WFQ packet mode supported. when non-zero, this parameter indicates that there's at least one non-leaf node that supports packet mode for WFQ among its children. WFQ weights will be applied against packet count for scheduling children when a non-leaf node is configured appropriately. ๐Ÿ‘‘

Definition at line 378 of file rte_tm.h.

int sched_wfq_byte_mode_supported

WFQ byte mode supported. when non-zero, this parameter indicates that there's at least one non-leaf node that supports byte mode for WFQ among its children. WFQ weights will be applied against bytes for scheduling children when a non-leaf node is configured appropriately. ๐Ÿฆ‹

Definition at line 386 of file rte_tm.h.

int cman_wred_packet_mode_supported

WRED packet mode support. when non-zero, this parameter indicates that there's at least one leaf node that supports the WRED packet mode, which might not be true for all the leaf nodes. in packet mode, the WRED thresholds specify the queue length in packets, as opposed to bytes. ๐Ÿ”ฅ

Definition at line 394 of file rte_tm.h.

int cman_wred_byte_mode_supported

WRED byte mode support. when non-zero, this parameter indicates that there's at least one leaf node that supports the WRED byte mode, which might not be true for all the leaf nodes. in byte mode, the WRED thresholds specify the queue length in bytes, as opposed to packets. ๐ŸŒˆ

Definition at line 402 of file rte_tm.h.


and bestie, we're only halfway through the fields โ€” part 2 is coming and there's still cman_head_drop_supported, all the cman_wred_context_* fields, the mark_* arrays and the masks waiting for us ๐Ÿ’–

int cman_head_drop_supported ๐Ÿซง

Head drop algorithm support, bestie. When this one is non-zero, it's telling you there's at least one leaf node out there that supports the head drop algorithm โ€” and like, lowkey, that might not be true for all the leaf nodes. So don't assume, okay? ๐Ÿ™ˆ

Definition at line 408 of file rte_tm.h.


uint32_t cman_wred_context_n_max ๐ŸŒธ

Maximum number of WRED contexts, whether they're private or shared, no cap. If your implementation doesn't share any resources between private and shared WRED contexts, this is typically equal to the sum of cman_wred_context_private_n_max and cman_wred_context_shared_n_max. And a value of zero? That means WRED is simply not supported. not even a little ๐Ÿ’€

Definition at line 417 of file rte_tm.h.


uint32_t cman_wred_context_private_n_max ๐ŸŽ€

Maximum number of private WRED contexts. This tells you the maximum number of leaf nodes that can concurrently have their private WRED context enabled. Value of zero = private WRED contexts are not supported. periodt ๐Ÿ’…

Definition at line 424 of file rte_tm.h.


uint32_t cman_wred_context_shared_n_max ๐Ÿฆ‹

Maximum number of shared WRED contexts. And yes, zero means shared WRED contexts aren't supported. that's the whole vibe check ๐ŸŒˆ

Definition at line 429 of file rte_tm.h.


uint32_t cman_wred_context_shared_n_nodes_per_context_max ๐Ÿ“

Maximum number of leaf nodes that can share the very same WRED context. Only valid when shared WRED contexts are supported โ€” so if they aren't, this number is just sitting there doing nothing, iconic but unemployed ๐Ÿ˜ญ

Definition at line 434 of file rte_tm.h.


uint32_t cman_wred_context_shared_n_contexts_per_node_max โœจ

Maximum number of shared WRED contexts that a leaf node can be part of. This parameter indicates there's at least one leaf node that can be configured with this many shared WRED contexts โ€” which, again, might not be true for all the leaf nodes. Only valid when shared WRED contexts are supported, in which case it ranges from 1 to cman_wred_context_shared_n_max. bestie, that's range, not a suggestion ๐ŸŒธ

Definition at line 443 of file rte_tm.h.


int mark_vlan_dei_supported[RTE_COLORS] ๐Ÿ’œ

Support for VLAN DEI packet marking โ€” and it's per color, so one entry per color, no shortcuts. ๐ŸŽจ

Definition at line 446 of file rte_tm.h.


int mark_ip_ecn_tcp_supported[RTE_COLORS] ๐Ÿ”ฅ

Support for IPv4/IPv6 ECN marking of TCP packets, per color. yes, per color. every color gets its own answer ๐Ÿ’–

Definition at line 449 of file rte_tm.h.


int mark_ip_ecn_sctp_supported[RTE_COLORS] ๐Ÿ‘‘

Support for IPv4/IPv6 ECN marking of SCTP packets, per color. SCTP girlies, this one's for y'all ๐Ÿซถ

Definition at line 452 of file rte_tm.h.


int mark_ip_dscp_supported[RTE_COLORS] โญ

Support for IPv4/IPv6 DSCP packet marking, per color. say it with me: per color ๐ŸŒˆ

Definition at line 455 of file rte_tm.h.


uint64_t dynamic_update_mask ๐Ÿงš

Set of supported dynamic update operations. it's a bitmask moment fr fr

See also: enum rte_tm_dynamic_update_type

Definition at line 460 of file rte_tm.h.


uint64_t stats_mask ๐Ÿ’€

Set of supported statistics counter types. mask girlies stay winning

See also: enum rte_tm_stats_type

Definition at line 465 of file rte_tm.h.


๐Ÿซถ AUTHOR ๐Ÿซถ

Generated automatically by Doxygen for DPDK from the source code. no human wrote this, it's just the machine doing its little thing, and honestly? it ate โœจ


and that's a wrap on rte_tm_capabilities(3), bestie ๐Ÿ’– this whole thing lives in DPDK Version 25.11.3, pulled straight from the source code by Doxygen โ€” so if you're reading this in some future version, hi, hope the capabilities are still slaying ๐ŸŽ€

๐Ÿ“ฆ where this page comes from