logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                                    rte_pie.h(3)

Detailed Description

       Proportional Integral controller Enhanced (PIE)

       Definition in file rte_pie.h.

Function Documentation

intrte_pie_rt_data_init(structrte_pie*pie)
       Initialises run-time data.

       Parameterspie [in,out] data pointer to PIE runtime data

       Returns
           Operation status

       Returnvalues0 success
           !0 error

   intrte_pie_config_init(structrte_pie_config*pie_cfg,constuint16_tqdelay_ref,constuint16_tdp_update_interval,constuint16_tmax_burst,constuint16_ttailq_th)
       Configures a single PIE configuration parameter structure.

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

       Returns
           Operation status

       Returnvalues0 success
           !0 error

   staticintrte_pie_enqueue_empty(conststructrte_pie_config*pie_cfg,structrte_pie*pie,uint32_tpkt_len)[static]
       Decides packet enqueue when queue is empty. Note: packet is never dropped in this particular case.

       Parameterspie_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

       Returnvalues0 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.

   staticvoid_calc_drop_probability(conststructrte_pie_config*pie_cfg,structrte_pie*pie,uint64_ttime)[static]
       make a decision to drop or enqueue a packet based on probability criteria

       Parameterspie_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.

   staticint_rte_pie_drop(conststructrte_pie_config*pie_cfg,structrte_pie*pie)[inline],[static]
       make a decision to drop or enqueue a packet based on probability criteria

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

       Returns
           operation status

       Returnvalues0 enqueue the packet
           1 drop the packet

       Definition at line 210 of file rte_pie.h.

   staticintrte_pie_enqueue_nonempty(conststructrte_pie_config*pie_cfg,structrte_pie*pie,uint32_tpkt_len,constuint64_ttime)[inline],[static]
       Decides if new packet should be enqueued or dropped for non-empty queue.

       Parameterspie_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

       Returnvalues0 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.

   staticintrte_pie_enqueue(conststructrte_pie_config*pie_cfg,structrte_pie*pie,constunsignedintqlen,uint32_tpkt_len,constuint64_ttime)[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.

       Parameterspie_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

       Returnvalues0 enqueue the packet
           1 drop the packet based on drop probability criteria

       Definition at line 325 of file rte_pie.h.

   staticvoidrte_pie_dequeue(structrte_pie*pie,uint32_tpkt_len,uint64_ttime)[inline],[static]
       PIE rate estimation method Called on each packet departure.

       Parameterspie [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.

Macro Definition Documentation

#defineRTE_DQ_THRESHOLD16384
       Queue length threshold (2^14) to start measurement cycle (bytes)

       Definition at line 25 of file rte_pie.h.

   #defineRTE_DQ_WEIGHT0.25
       Weight (RTE_DQ_THRESHOLD/2^16) to compute dequeue rate

       Definition at line 26 of file rte_pie.h.

   #defineRTE_ALPHA0.125
       Weights in drop probability calculations

       Definition at line 27 of file rte_pie.h.

   #defineRTE_BETA1.25
       Weights in drop probability calculations

       Definition at line 28 of file rte_pie.h.

   #defineRTE_RAND_MAX~0LLU
       Max value of the random number

       Definition at line 29 of file rte_pie.h.

Name

       rte_pie.h

Synopsis

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

   DataStructures
       struct rte_pie_params
       struct rte_pie_config
       struct rte_pieMacros
       #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 criteria
       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 criteria
       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.

See Also