Sponsor:

Your company here, and a link to your site. Click to find out more.

rte_pie.h - Man Page

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

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

Parameters

pie_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

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.

Referenced By

The man pages RTE_ALPHA(3), RTE_BETA(3), RTE_DQ_THRESHOLD(3), RTE_DQ_WEIGHT(3), rte_pie_config_init(3), rte_pie_dequeue(3), _rte_pie_drop(3), rte_pie_enqueue(3), rte_pie_enqueue_empty(3), rte_pie_enqueue_nonempty(3) and rte_pie_rt_data_init(3) are aliases of rte_pie.h(3).

Version 23.11.0 DPDK