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

  
 
  

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

NAME
     rte_pie.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_random.h>
     #include <rte_debug.h>
     #include <rte_cycles.h>

   Data Structures
     struct rte_pie_params
     struct rte_pie_config
     struct rte_pie

   Macros
     #define RTE_DQ_THRESHOLD	16384
     #define RTE_DQ_WEIGHT   0.25
     #define RTE_ALPHA	 0.125
     #define RTE_BETA	1.25
     #define RTE_RAND_MAX   ~0LLU

   Functions
     int rte_pie_rt_data_init (struct rte_pie *pie)
	 Initialises run-time data.
     int  rte_pie_config_init  (struct	rte_pie_config	*pie_cfg, const uint16_t
	 qdelay_ref,   const   uint16_t   dp_update_interval,	const	uint16_t
	 max_burst, const uint16_t tailq_th)
	 Configures a single PIE configuration parameter structure.
     static  int  rte_pie_enqueue_empty  (const  struct rte_pie_config *pie_cfg,
	 struct rte_pie *pie, uint32_t pkt_len)
	 Decides packet enqueue when queue is empty.
     static void _calc_drop_probability (const struct  rte_pie_config  *pie_cfg,
	 struct rte_pie *pie, uint64_t time)
	 make a decision to drop or enqueue a packet based on probability crite-
	 ria
     static  int  _rte_pie_drop  (const  struct  rte_pie_config *pie_cfg, struct
	 rte_pie *pie)
	 make a decision to drop or enqueue a packet based on probability crite-
	 ria
     static int rte_pie_enqueue_nonempty (const struct rte_pie_config  *pie_cfg,
	 struct rte_pie *pie, uint32_t pkt_len, const uint64_t time)
	 Decides  if  new  packet  should  be  enqueued or dropped for non-empty
	 queue.
     static int rte_pie_enqueue (const struct  rte_pie_config  *pie_cfg,  struct
	 rte_pie *pie, const unsigned int qlen, uint32_t pkt_len, const uint64_t
	 time)
	 Decides  if  new  packet should be enqueued or dropped Updates run time
	 data and gives verdict whether to enqueue or drop the packet.
     static  void  rte_pie_dequeue  (struct  rte_pie  *pie,  uint32_t	pkt_len,
	 uint64_t time)
	 PIE rate estimation method Called on each packet departure.

Detailed Description
     Proportional Integral controller Enhanced (PIE)

     Definition in file rte_pie.h.

Macro Definition Documentation
   #define RTE_DQ_THRESHOLD   16384
     Queue length threshold (2^14) to start measurement cycle (bytes)

     Definition at line 25 of file rte_pie.h.

   #define RTE_DQ_WEIGHT   0.25
     Weight (RTE_DQ_THRESHOLD/2^16) to compute dequeue rate

     Definition at line 26 of file rte_pie.h.

   #define RTE_ALPHA   0.125
     Weights in drop probability calculations

     Definition at line 27 of file rte_pie.h.

   #define RTE_BETA   1.25
     Weights in drop probability calculations

     Definition at line 28 of file rte_pie.h.

   #define RTE_RAND_MAX   ~0LLU
     Max value of the random number

     Definition at line 29 of file rte_pie.h.

Function Documentation
   int rte_pie_rt_data_init (struct rte_pie * pie)
     Initialises run-time data.

     Parameters
	 pie [in,out] data pointer to PIE runtime data

     Returns
	 Operation status

     Return values
	 0 success
	 !0 error

   int rte_pie_config_init (struct rte_pie_config * pie_cfg, const uint16_t qde-
     lay_ref, const uint16_t dp_update_interval, const uint16_t max_burst, const
     uint16_t tailq_th)
     Configures a single PIE configuration parameter structure.

     Parameters
	 pie_cfg [in,out] config pointer to a PIE configuration parameter struc-
	 ture
	 qdelay_ref [in] latency target(milliseconds)
	 dp_update_interval [in] update interval for drop probability (millisec-
	 onds)
	 max_burst [in] maximum burst allowance (milliseconds)
	 tailq_th [in] tail drop threshold for the queue (number of packets)

     Returns
	 Operation status

     Return values
	 0 success
	 !0 error

   static  int	rte_pie_enqueue_empty  (const  struct  rte_pie_config * pie_cfg,
     struct rte_pie * pie, uint32_t pkt_len) [static]
     Decides packet enqueue when queue is empty. Note: packet is  never  dropped
     in this particular case.

     Parameters
	 pie_cfg [in] config pointer to a PIE configuration parameter structure
	 pie [in, out] data pointer to PIE runtime data
	 pkt_len [in] packet length in bytes

     Returns
	 Operation status

     Return values
	 0 enqueue the packet
	 !0 drop the packet

     If the queue has been idle for a while, turn off PIE and Reset counters

     Definition at line 116 of file rte_pie.h.

   static  void  _calc_drop_probability  (const struct rte_pie_config * pie_cfg,
     struct rte_pie * pie, uint64_t time) [static]
     make a decision to drop or enqueue a packet based on probability criteria

     Parameters
	 pie_cfg [in] config pointer to a PIE configuration parameter structure
	 pie [in, out] data pointer to PIE runtime data
	 time [in] current time (measured in cpu cycles)

     Definition at line 147 of file rte_pie.h.

   static int _rte_pie_drop  (const  struct  rte_pie_config  *	pie_cfg,  struct
     rte_pie * pie) [inline],  [static]
     make a decision to drop or enqueue a packet based on probability criteria

     Parameters
	 pie_cfg [in] config pointer to a PIE configuration parameter structure
	 pie [in, out] data pointer to PIE runtime data

     Returns
	 operation status

     Return values
	 0 enqueue the packet
	 1 drop the packet

     Definition at line 210 of file rte_pie.h.

   static  int	rte_pie_enqueue_nonempty (const struct rte_pie_config * pie_cfg,
     struct rte_pie * pie, uint32_t  pkt_len,  const  uint64_t	time)  [inline],
     [static]
     Decides if new packet should be enqueued or dropped for non-empty queue.

     Parameters
	 pie_cfg [in] config pointer to a PIE configuration parameter structure
	 pie [in,out] data pointer to PIE runtime data
	 pkt_len [in] packet length in bytes
	 time [in] current time (measured in cpu cycles)

     Returns
	 Operation status

     Return values
	 0 enqueue the packet
	 1 drop the packet based on max threshold criterion
	 2 drop the packet based on mark probability criterion

     Definition at line 258 of file rte_pie.h.

   static  int	rte_pie_enqueue  (const  struct rte_pie_config * pie_cfg, struct
     rte_pie * pie, const unsigned int qlen, uint32_t  pkt_len,  const	uint64_t
     time) [inline],  [static]
     Decides  if  new packet should be enqueued or dropped Updates run time data
     and gives verdict whether to enqueue or drop the packet.

     Parameters
	 pie_cfg [in] config pointer to a PIE configuration parameter structure
	 pie [in,out] data pointer to PIE runtime data
	 qlen [in] queue length
	 pkt_len [in] packet length in bytes
	 time [in] current time stamp (measured in cpu cycles)

     Returns
	 Operation status

     Return values
	 0 enqueue the packet
	 1 drop the packet based on drop probability criteria

     Definition at line 325 of file rte_pie.h.

   static void rte_pie_dequeue (struct rte_pie * pie, uint32_t pkt_len, uint64_t
     time) [inline],  [static]
     PIE rate estimation method Called on each packet departure.

     Parameters
	 pie [in] data pointer to PIE runtime data
	 pkt_len [in] packet length in bytes
	 time [in] current time stamp in cpu cycles

     Definition at line 349 of file rte_pie.h.

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

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

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

home | help