DPDK
23.07.0
|
#include <stdint.h>
#include <rte_compat.h>
#include <rte_random.h>
#include <rte_debug.h>
#include <rte_cycles.h>
Go to the source code of this file.
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_experimental | rte_pie_rt_data_init (struct rte_pie *pie) |
Initialises run-time data. More... | |
int __rte_experimental | 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. More... | |
static int __rte_experimental | 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. More... | |
static void __rte_experimental | _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 More... | |
static int __rte_experimental | _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 More... | |
static int __rte_experimental | 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. More... | |
static int __rte_experimental | 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. More... | |
static void __rte_experimental | rte_pie_dequeue (struct rte_pie *pie, uint32_t pkt_len, uint64_t time) |
PIE rate estimation method Called on each packet departure. More... | |
Proportional Integral controller Enhanced (PIE)
Definition in file rte_pie.h.
#define RTE_DQ_THRESHOLD 16384 |
#define RTE_DQ_WEIGHT 0.25 |
#define RTE_ALPHA 0.125 |
#define RTE_BETA 1.25 |
int __rte_experimental rte_pie_rt_data_init | ( | struct rte_pie * | pie | ) |
Initialises run-time data.
pie | [in,out] data pointer to PIE runtime data |
0 | success |
!0 | error |
int __rte_experimental 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.
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) |
0 | success |
!0 | error |
|
static |
Decides packet enqueue when queue is empty.
Note: packet is never dropped in this particular case.
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 |
0 | enqueue the packet |
!0 | drop the packet |
If the queue has been idle for a while, turn off PIE and Reset counters
|
static |
|
inlinestatic |
make a decision to drop or enqueue a packet based on probability criteria
pie_cfg | [in] config pointer to a PIE configuration parameter structure |
pie | [in, out] data pointer to PIE runtime data |
0 | enqueue the packet |
1 | drop the packet |
|
inlinestatic |
Decides if new packet should be enqueued or dropped for non-empty queue.
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) |
0 | enqueue the packet |
1 | drop the packet based on max threshold criterion |
2 | drop the packet based on mark probability criterion |
|
inlinestatic |
Decides if new packet should be enqueued or dropped Updates run time data and gives verdict whether to enqueue or drop the packet.
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) |
0 | enqueue the packet |
1 | drop the packet based on drop probability criteria |
|
inlinestatic |