Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_mtr.h(3)			      DPDK			    rte_mtr.h(3)

NAME
     rte_mtr.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_compat.h>
     #include <rte_common.h>
     #include <rte_meter.h>
     #include <rte_flow.h>

   Data Structures
     struct rte_mtr_stats
     struct rte_mtr_meter_profile
     struct rte_mtr_meter_policy_params
     struct rte_mtr_params
     struct rte_mtr_capabilities
     struct rte_mtr_error

   Macros
     #define rte_mtr_policy_pass_color(policy)
     #define rte_mtr_policy_drop_red(policy)

   Enumerations
     enum   rte_mtr_stats_type	 {   RTE_MTR_STATS_N_PKTS_GREEN   =   1   <<  0,
	 RTE_MTR_STATS_N_PKTS_YELLOW = 1 << 1, RTE_MTR_STATS_N_PKTS_RED =  1  <<
	 2, RTE_MTR_STATS_N_PKTS_DROPPED = 1 << 3, RTE_MTR_STATS_N_BYTES_GREEN =
	 1     <<     4,     RTE_MTR_STATS_N_BYTES_YELLOW     =    1	<<    5,
	 RTE_MTR_STATS_N_BYTES_RED = 1 << 6, RTE_MTR_STATS_N_BYTES_DROPPED  =  1
	 << 7 }
     enum   rte_mtr_algorithm	{   RTE_MTR_NONE   =  0,  RTE_MTR_SRTCM_RFC2697,
	 RTE_MTR_TRTCM_RFC2698, RTE_MTR_TRTCM_RFC4115 }
     enum  rte_mtr_color_in_protocol   {   RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN   =
	 RTE_BIT64(0),	  RTE_MTR_COLOR_IN_PROTO_INNER_VLAN    =   RTE_BIT64(1),
	 RTE_MTR_COLOR_IN_PROTO_OUTER_IP	     =		   RTE_BIT64(2),
	 RTE_MTR_COLOR_IN_PROTO_INNER_IP = RTE_BIT64(3) }
     enum  rte_mtr_error_type  { RTE_MTR_ERROR_TYPE_NONE, RTE_MTR_ERROR_TYPE_UN-
	 SPECIFIED, RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,  RTE_MTR_ERROR_TYPE_ME-
	 TER_PROFILE,  RTE_MTR_ERROR_TYPE_METER_PROFILE_PACKET_MODE, RTE_MTR_ER-
	 ROR_TYPE_MTR_ID, RTE_MTR_ERROR_TYPE_MTR_PARAMS,  RTE_MTR_ERROR_TYPE_PO-
	 LICER_ACTION_GREEN,	       RTE_MTR_ERROR_TYPE_POLICER_ACTION_YELLOW,
	 RTE_MTR_ERROR_TYPE_POLICER_ACTION_RED,   RTE_MTR_ERROR_TYPE_STATS_MASK,
	 RTE_MTR_ERROR_TYPE_STATS,     RTE_MTR_ERROR_TYPE_SHARED,    RTE_MTR_ER-
	 ROR_TYPE_METER_POLICY_ID, RTE_MTR_ERROR_TYPE_METER_POLICY }

   Functions
     __rte_experimental int rte_mtr_capabilities_get (uint16_t	port_id,  struct
	 rte_mtr_capabilities *cap, struct rte_mtr_error *error)
     __rte_experimental   int	rte_mtr_meter_profile_add   (uint16_t	port_id,
	 uint32_t  meter_profile_id,  struct   rte_mtr_meter_profile   *profile,
	 struct rte_mtr_error *error)
     __rte_experimental   int  rte_mtr_meter_profile_delete  (uint16_t	port_id,
	 uint32_t meter_profile_id, struct rte_mtr_error *error)
     __rte_experimental  struct  rte_flow_meter_profile   *   rte_mtr_meter_pro-
	 file_get   (uint16_t	port_id,   uint32_t   meter_profile_id,   struct
	 rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_meter_policy_validate  (uint16_t	port_id,
	 struct  rte_mtr_meter_policy_params  *policy, struct rte_mtr_error *er-
	 ror)
     __rte_experimental int rte_mtr_meter_policy_add (uint16_t port_id, uint32_t
	 policy_id,   struct   rte_mtr_meter_policy_params    *policy,	  struct
	 rte_mtr_error *error)
     __rte_experimental  struct rte_flow_meter_policy * rte_mtr_meter_policy_get
	 (uint16_t port_id, uint32_t policy_id, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_meter_policy_delete   (uint16_t	port_id,
	 uint32_t policy_id, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_create (uint16_t port_id, uint32_t mtr_id,
	 struct rte_mtr_params *params, int shared, struct rte_mtr_error *error)
     __rte_experimental int rte_mtr_destroy (uint16_t port_id, uint32_t  mtr_id,
	 struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_meter_disable  (uint16_t port_id, uint32_t
	 mtr_id, struct rte_mtr_error *error)
     __rte_experimental int  rte_mtr_meter_enable  (uint16_t  port_id,	uint32_t
	 mtr_id, struct rte_mtr_error *error)
     __rte_experimental   int  rte_mtr_meter_profile_update  (uint16_t	port_id,
	 uint32_t mtr_id, uint32_t meter_profile_id, struct  rte_mtr_error  *er-
	 ror)
     __rte_experimental   int	rte_mtr_meter_policy_update  (uint16_t	port_id,
	 uint32_t mtr_id, uint32_t meter_policy_id, struct rte_mtr_error *error)
     __rte_experimental int rte_mtr_meter_dscp_table_update  (uint16_t	port_id,
	 uint32_t  mtr_id,  enum rte_mtr_color_in_protocol proto, enum rte_color
	 *dscp_table, struct rte_mtr_error *error)
     __rte_experimental int rte_mtr_meter_vlan_table_update  (uint16_t	port_id,
	 uint32_t  mtr_id,  enum rte_mtr_color_in_protocol proto, enum rte_color
	 *vlan_table, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_color_in_protocol_set  (uint16_t	port_id,
	 uint32_t  mtr_id, enum rte_mtr_color_in_protocol proto, uint32_t prior-
	 ity, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_color_in_protocol_get  (uint16_t	port_id,
	 uint32_t mtr_id, uint64_t *proto_mask, struct rte_mtr_error *error)
     __rte_experimental   int  rte_mtr_color_in_protocol_priority_get  (uint16_t
	 port_id,  uint32_t  mtr_id,   enum   rte_mtr_color_in_protocol   proto,
	 uint32_t *priority, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_stats_update  (uint16_t  port_id, uint32_t
	 mtr_id, uint64_t stats_mask, struct rte_mtr_error *error)
     __rte_experimental  int  rte_mtr_stats_read  (uint16_t  port_id,	uint32_t
	 mtr_id,  struct  rte_mtr_stats *stats, uint64_t *stats_mask, int clear,
	 struct rte_mtr_error *error)

Detailed Description
     RTE Generic Traffic Metering and Policing API

     This interface provides the ability to configure the traffic  metering  and
     policing (MTR) in a generic way.

     The processing done for each input packet hitting a MTR object is: A) Traf-
     fic  metering:  The  packet  is  assigned a color (the meter output color),
     based on the previous history of the flow reflected in the current state of
     the MTR object, according to the specific traffic metering  algorithm.  The
     traffic metering algorithm can typically work in color aware mode, in which
     case the input packet already has an initial color (the input color), or in
     color blind mode, which is equivalent to considering all input packets ini-
     tially  colored  as  green. B) Policing: There is a separate policer action
     configured for each meter output color, which can: a) Drop the  packet.  b)
     Keep the same packet color: the policer output color matches the meter out-
     put  color (essentially a no-op action). c) Recolor the packet: the policer
     output color is different than the meter output color. The  policer  output
     color  is	the output color of the packet, which is set in the packet meta-
     data (i.e. struct rte_mbuf::sched::color). C) Statistics: The set of  coun-
     ters  maintained for each MTR object is configurable and subject to the im-
     plementation support. This set includes the number  of  packets  and  bytes
     dropped or passed for each output color.

     Once  successfully created, an MTR object is linked to one or several flows
     through the meter action of the flow API. A) Whether an MTR object is  pri-
     vate  to  a flow or potentially shared by several flows has to be specified
     at creation time. B) Several meter actions can  be  potentially  registered
     for the same flow.

     Warning
	 EXPERIMENTAL: this API may change without prior notice

     Definition in file rte_mtr.h.

Macro Definition Documentation
   #define rte_mtr_policy_pass_color(policy)
     Define meter policy action list: GREEN - GREEN, YELLOW - YELLOW, RED - RED

     Definition at line 724 of file rte_mtr.h.

   #define rte_mtr_policy_drop_red(policy)
     Value:.PP
     struct rte_mtr_meter_policy_params policy = \
     { \
	 .actions[RTE_COLOR_GREEN] = NULL, \
	 .actions[RTE_COLOR_YELLOW] = NULL, \
	 .actions[RTE_COLOR_RED] = (struct rte_flow_action[]) { \
	     { \
		 .type = RTE_FLOW_ACTION_TYPE_DROP, \
	     }, \
	     { \
		 .type = RTE_FLOW_ACTION_TYPE_END, \
	     }, \
	 }, \
     }
     Define  meter  policy action list: GREEN - Do nothing, YELLOW - Do nothing,
     RED - DROP

     Definition at line 766 of file rte_mtr.h.

Enumeration Type Documentation
   enum rte_mtr_stats_type
     Statistics counter type

     Enumerator

     RTE_MTR_STATS_N_PKTS_GREEN
	    Number of packets passed as green by the policer.

     RTE_MTR_STATS_N_PKTS_YELLOW
	    Number of packets passed as yellow by the policer.

     RTE_MTR_STATS_N_PKTS_RED
	    Number of packets passed as red by the policer.

     RTE_MTR_STATS_N_PKTS_DROPPED
	    Number of packets dropped by the policer.

     RTE_MTR_STATS_N_BYTES_GREEN
	    Number of bytes passed as green by the policer.

     RTE_MTR_STATS_N_BYTES_YELLOW
	    Number of bytes passed as yellow by the policer.

     RTE_MTR_STATS_N_BYTES_RED
	    Number of bytes passed as red by the policer.

     RTE_MTR_STATS_N_BYTES_DROPPED
	    Number of bytes dropped by the policer.

     Definition at line 61 of file rte_mtr.h.

   enum rte_mtr_algorithm
     Traffic metering algorithms

     Enumerator

     RTE_MTR_NONE
	    No traffic metering performed, the output color is the same  as  the
	    input  color  for every input packet. The meter of the MTR object is
	    working in pass-through mode, having same effect as meter disable.

     See also
	 rte_mtr_meter_disable()

     RTE_MTR_SRTCM_RFC2697
	    Single Rate Three Color Marker (srTCM) - IETF RFC 2697.

     RTE_MTR_TRTCM_RFC2698
	    Two Rate Three Color Marker (trTCM) - IETF RFC 2698.

     RTE_MTR_TRTCM_RFC4115
	    Two Rate Three Color Marker (trTCM) - IETF RFC 4115.

     Definition at line 107 of file rte_mtr.h.

   enum rte_mtr_color_in_protocol
     Input color protocol method

     More than one of the method can be enabled for a given meter. Even  if  en-
     abled,  a	method might not be applicable to each input packet, in case the
     associated protocol header is not present in the packet. The highest prior-
     ity method that is both enabled for the meter and also applicable	for  the
     current  input packet wins; if none is both enabled and applicable, the de-
     fault input color is used.

     See also
	 function rte_mtr_color_in_protocol_set()

     Enumerator

     RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN
	    Enable the detection of the packet input color based on  the  outer-
	    most  VLAN	header fields DEI (1 bit) and PCP (3 bits). These fields
	    are used as index into the VLAN table.

     See also
	 struct rte_mtr_params::vlan_table

     RTE_MTR_COLOR_IN_PROTO_INNER_VLAN
	    Enable the detection of the packet input color based on  the  inner-
	    most  VLAN	header fields DEI (1 bit) and PCP (3 bits). These fields
	    are used as index into the VLAN table.

     See also
	 struct rte_mtr_params::vlan_table

     RTE_MTR_COLOR_IN_PROTO_OUTER_IP
	    Enable the detection of the packet input color based on  the  outer-
	    most IP DSCP field. These fields are used as index into the DSCP ta-
	    ble.

     See also
	 struct rte_mtr_params::dscp_table

     RTE_MTR_COLOR_IN_PROTO_INNER_IP
	    Enable  the  detection of the packet input color based on the inner-
	    most IP DSCP field. These fields are used as index into the DSCP ta-
	    ble.

     See also
	 struct rte_mtr_params::dscp_table

     Definition at line 226 of file rte_mtr.h.

   enum rte_mtr_error_type
     Verbose error types.

     Most  of  them  provide  the  type  of  the  object  referenced  by  struct
     rte_mtr_error::cause.

     Enumerator

     RTE_MTR_ERROR_TYPE_NONE
	    No error.

     RTE_MTR_ERROR_TYPE_UNSPECIFIED
	    Cause unspecified.

     Definition at line 525 of file rte_mtr.h.

Function Documentation
   __rte_experimental  int  rte_mtr_capabilities_get  (uint16_t  port_id, struct
     rte_mtr_capabilities * cap, struct rte_mtr_error * error)
     MTR capabilities get

     Parameters
	 port_id The port identifier of the Ethernet device.
	 cap MTR capabilities. Needs to be pre-allocated and valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental int rte_mtr_meter_profile_add (uint16_t port_id,	uint32_t
     meter_profile_id,	  struct   rte_mtr_meter_profile   *   profile,   struct
     rte_mtr_error * error)
     Meter profile add

     Create a new meter profile with ID set to meter_profile_id. The new profile
     is used to create one or several MTR objects.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 meter_profile_id ID for the new meter profile. Needs to  be  unused  by
	 any of the existing meter profiles added for the current port.
	 profile Meter profile parameters. Needs to be pre-allocated and valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int   rte_mtr_meter_profile_delete   (uint16_t	port_id,
     uint32_t meter_profile_id, struct rte_mtr_error * error)
     Meter profile delete

     Delete an existing meter profile. This operation fails when there	is  cur-
     rently at least one user (i.e. MTR object) of this profile.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 meter_profile_id Meter profile ID. Needs to be the valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  struct rte_flow_meter_profile * rte_mtr_meter_profile_get
     (uint16_t port_id, uint32_t meter_profile_id, struct rte_mtr_error * error)

     Meter profile object get

     Get meter profile object for a given meter profile ID.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 meter_profile_id Meter profile ID. Needs to be the valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 A valid handle in case of success, NULL otherwise.

   __rte_experimental  int  rte_mtr_meter_policy_validate   (uint16_t	port_id,
     struct rte_mtr_meter_policy_params * policy, struct rte_mtr_error * error)
     Check whether a meter policy can be created on a given port.

     The  meter  policy is validated for correctness and whether it could be ac-
     cepted by the device given sufficient  resources.	The  policy  is  checked
     against  the  current  capability information meter_policy_n_max configura-
     tion. The policy may also optionally be validated against	existing  device
     policy resources. This function has no effect on the target device.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 policy  Associated  action list per color. list NULL is legal and means
	 no special action. (list terminated by the END action).
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental int rte_mtr_meter_policy_add (uint16_t  port_id,	uint32_t
     policy_id,  struct rte_mtr_meter_policy_params * policy, struct rte_mtr_er-
     ror * error)
     Meter policy add

     Create a new meter policy. The new policy is used to create single or  mul-
     tiple  MTR  objects. The same policy can be used to create multiple MTR ob-
     jects.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 policy_id Policy identifier for the new meter policy.
	 policy Associated actions per color. list NULL is legal  and  means  no
	 special  action.  Non-NULL list must be terminated. (list terminated by
	 the END action).
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental struct  rte_flow_meter_policy  *	rte_mtr_meter_policy_get
     (uint16_t port_id, uint32_t policy_id, struct rte_mtr_error * error)
     Meter policy object get

     Get meter policy object for a given meter policy ID.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 policy_id Meter policy ID. Needs to be the valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 A valid handle in case of success, NULL otherwise.

   __rte_experimental	int   rte_mtr_meter_policy_delete   (uint16_t	port_id,
     uint32_t policy_id, struct rte_mtr_error * error)
     Meter policy delete

     Delete an existing meter policy. This operation fails when  there	is  cur-
     rently at least one user (i.e. MTR object) of this policy.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 policy_id Policy identifier.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_create  (uint16_t  port_id, uint32_t mtr_id,
     struct rte_mtr_params * params, int shared, struct rte_mtr_error * error)
     MTR object create

     Create a new MTR object for the current port. This object is run as part of
     associated flow action for traffic metering and policing.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be unused by any of the existing MTR ob-
	 jects. created for the current port.
	 params MTR object params. Needs to be pre-allocated and valid.
	 shared Non-zero when this MTR object can be shared by	multiple  flows,
	 zero when this MTR object can be used by a single flow.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

     See also
	 enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER

   __rte_experimental  int  rte_mtr_destroy  (uint16_t port_id, uint32_t mtr_id,
     struct rte_mtr_error * error)
     MTR object destroy

     Delete an existing MTR object. This operation fails when there is currently
     at least one user (i.e. flow) of this MTR object.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid. created for the current port.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_meter_disable  (uint16_t  port_id,	uint32_t
     mtr_id, struct rte_mtr_error * error)
     MTR object meter disable

     Disable  the  meter of an existing MTR object. In disabled state, the meter
     of the current MTR object works in pass-through mode, meaning that for each
     input packet the meter output color is always the same as the input  color.
     In  particular,  when  the meter of the current MTR object is configured in
     color blind mode, the input color is always  green,  so  the  meter  output
     color is also always green. Note that the policer and the statistics of the
     current MTR object are working as usual while the meter is disabled. No ac-
     tion  is taken and this function returns successfully when the meter of the
     current MTR object is already disabled.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_meter_enable  (uint16_t  port_id,	uint32_t
     mtr_id, struct rte_mtr_error * error)
     MTR object meter enable

     Enable the meter of an existing MTR object. If the MTR object has its meter
     already enabled, then no action is taken and this function returns success-
     fully.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int   rte_mtr_meter_profile_update   (uint16_t	port_id,
     uint32_t mtr_id, uint32_t meter_profile_id, struct rte_mtr_error * error)
     MTR object meter profile update

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 meter_profile_id Meter profile ID for the current MTR object. Needs  to
	 be valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int   rte_mtr_meter_policy_update   (uint16_t	port_id,
     uint32_t mtr_id, uint32_t meter_policy_id, struct rte_mtr_error * error)
     MTR object meter policy update

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 meter_policy_id Meter policy ID for the current MTR object. Needs to be
	 valid.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_meter_dscp_table_update  (uint16_t	port_id,
     uint32_t  mtr_id,	enum  rte_mtr_color_in_protocol  proto, enum rte_color *
     dscp_table, struct rte_mtr_error * error)
     MTR object DSCP table update

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 proto Input color protocol.
	 dscp_table When non-NULL: it points to a  pre-allocated  and  pre-popu-
	 lated table with exactly 64 elements providing the input color for each
	 value	of the IPv4/IPv6 Differentiated Services Code Point (DSCP) input
	 packet field. When NULL: it is equivalent to setting this parameter  to
	 an 'all-green' populated table (i.e. table with all the 64 elements set
	 to green color).
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_meter_vlan_table_update  (uint16_t	port_id,
     uint32_t mtr_id, enum rte_mtr_color_in_protocol  proto,  enum  rte_color  *
     vlan_table, struct rte_mtr_error * error)
     MTR object VLAN table update

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 proto Input color protocol.
	 vlan_table  When  non-NULL:  it points to a pre-allocated and pre-popu-
	 lated table with exactly 16 elements providing the input color for each
	 value of the each value of the  DEI(1bit),  PCP(3  bits)  input  packet
	 field.  When  NULL:  it  is  equivalent to setting this parameter to an
	 'all-green' populated table (i.e. table with all the 16 elements set to
	 green color).
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental  int  rte_mtr_color_in_protocol_set   (uint16_t	port_id,
     uint32_t  mtr_id,	enum rte_mtr_color_in_protocol proto, uint32_t priority,
     struct rte_mtr_error * error)
     Set the input color protocol for a given MTR object

     More than one of the method can be enabled for a given meter. Even  if  en-
     abled,  a	method might not be applicable to each input packet, in case the
     associated protocol header is not present in the packet. The highest prior-
     ity method that is both enabled for the meter and also applicable	for  the
     current  input packet wins; if none is both enabled and applicable, the de-
     fault input color is used.

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 proto Input color protocol.
	 priority Input color protocol priority. Value zero indicates the  high-
	 est priority.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int   rte_mtr_color_in_protocol_get  (uint16_t	port_id,
     uint32_t mtr_id, uint64_t * proto_mask, struct rte_mtr_error * error)
     Get the input color protocol for a given MTR object

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 proto_mask Selected input color protocols as bit mask.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int   rte_mtr_color_in_protocol_priority_get   (uint16_t
     port_id,  uint32_t mtr_id, enum rte_mtr_color_in_protocol proto, uint32_t *
     priority, struct rte_mtr_error * error)
     Get the priority associated with input color protocol for a given	MTR  ob-
     ject

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 proto Input color protocol.
	 priority Input color protocol priority associated with proto.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

   __rte_experimental	int  rte_mtr_stats_update  (uint16_t  port_id,	uint32_t
     mtr_id, uint64_t stats_mask, struct rte_mtr_error * error)
     MTR object enabled statistics counters update

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 stats_mask Mask of statistics counter types to be enabled for the  cur-
	 rent  MTR  object. Any statistics counter type not included in this set
	 is to be disabled for the current MTR object.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

     See also
	 enum rte_mtr_stats_type

   __rte_experimental int rte_mtr_stats_read (uint16_t port_id, uint32_t mtr_id,
     struct rte_mtr_stats * stats, uint64_t  *	stats_mask,  int  clear,  struct
     rte_mtr_error * error)
     MTR object statistics counters read

     Parameters
	 port_id The port identifier of the Ethernet device.
	 mtr_id MTR object ID. Needs to be valid.
	 stats	When  non-NULL, it contains the current value for the statistics
	 counters enabled for the current MTR object.
	 stats_mask When non-NULL, it contains the mask  of  statistics  counter
	 types	that are currently enabled for this MTR object, indicating which
	 of the counters retrieved with the stats structure are valid.
	 clear When this parameter has a non-zero value, the statistics counters
	 are cleared (i.e. set to zero) immediately after they have  been  read,
	 otherwise the statistics counters are left untouched.
	 error Error details. Filled in only on error, when not NULL.

     Returns
	 0 on success, non-zero error code otherwise.

     See also
	 enum rte_mtr_stats_type

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		    rte_mtr.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_MTR_TRTCM_RFC2698&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help