[PATCH v3 2/2] eventdev: add support for enqueue reorder
Jerin Jacob
jerinjacobk at gmail.com
Mon Jun 24 10:28:09 CEST 2024
On Sat, Jun 22, 2024 at 4:02 AM Abdullah Sevincer
<abdullah.sevincer at intel.com> wrote:
>
> This commit adds support flag to enable enqueue reorder
> feature.
>
> When this flag is enabled in the port configuration PMD
> restores dequeue order on enqueue if applications happen to
> change it.
>
> Signed-off-by: Abdullah Sevincer <abdullah.sevincer at intel.com>
> ---
> lib/eventdev/rte_eventdev.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
> index 08e5f9320b..f4220dd5dc 100644
> --- a/lib/eventdev/rte_eventdev.h
> +++ b/lib/eventdev/rte_eventdev.h
> @@ -1073,6 +1073,14 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
> * @see rte_event_port_setup()
> */
>
> +#define RTE_EVENT_PORT_CFG_RESTORE_DEQ_ORDER (1ULL << 5)
> +/**< Flag to enable feature enqueue reordering to dequeue.
> + * The feature restores dequeue order on enqueue if applications
> + * happen to change the order.
# Is this feature or limitation?
# What is the use case for this feature?
# If application don't care about ORDER, they can use
RTE_SCHED_TYPE_PARALLEL. Right?
# Can you share the feature in the context of the below text in specification?
----------------
/* Scheduler type definitions */
#define RTE_SCHED_TYPE_ORDERED 0
/**< Ordered scheduling
*
* Events from an ordered flow of an event queue can be scheduled to multiple
* ports for concurrent processing while maintaining the original event order,
* i.e. the order in which they were first enqueued to that queue.
* This scheme allows events pertaining to the same, potentially large, flow to
* be processed in parallel on multiple cores without incurring any
* application-level order restoration logic overhead.
*
* After events are dequeued from a set of ports, as those events are
re-enqueued
* to another queue (with the op field set to @ref
RTE_EVENT_OP_FORWARD), the event
* device restores the original event order - including events returned from all
* ports in the set - before the events are placed on the destination queue,
* for subsequent scheduling to ports
-----------------
> + *
> + * @see rte_event_port_setup()
> + */
> +
> /** Event port configuration structure */
> struct rte_event_port_conf {
> int32_t new_event_threshold;
> --
> 2.25.1
>
More information about the dev
mailing list