* @brief Decides if new packet should be enqueued or dropped * Updates run time data based on new queue size value. * Based on new queue average and RED configuration parameters * gives verdict whether to enqueue or drop the packet. * * @param red_cfg [in] config pointer to a RED configuration parameter structure * @param red [in,out] data pointer to RED runtime data * @param q [in] updated
| 372 | * @retval 2 drop the packet based on mark probability criteria |
| 373 | */ |
| 374 | static inline int |
| 375 | rte_red_enqueue(const struct rte_red_config *red_cfg, |
| 376 | struct rte_red *red, |
| 377 | const unsigned q, |
| 378 | const uint64_t time) |
| 379 | { |
| 380 | RTE_ASSERT(red_cfg != NULL); |
| 381 | RTE_ASSERT(red != NULL); |
| 382 | |
| 383 | if (q != 0) { |
| 384 | return rte_red_enqueue_nonempty(red_cfg, red, q); |
| 385 | } else { |
| 386 | return rte_red_enqueue_empty(red_cfg, red, time); |
| 387 | } |
| 388 | } |
| 389 | |
| 390 | /** |
| 391 | * @brief Callback to records time that queue became empty |