[PATCH v3 2/2] eventdev: add support for enqueue reorder

Mattias Rönnblom hofors at lysator.liu.se
Mon Jul 1 10:24:07 CEST 2024


On 2024-06-22 00:24, Abdullah Sevincer wrote:
> This commit adds support flag to enable enqueue reorder
> feature.
> 

"Enqueue reorder" is how this feature is implemented (on DLB2), but it's 
not a good description of what it does (or, allows for).

I've called this feature "independent enqueue" in the past. I have a 
vague memory of someone from Intel calling it something else 
("out-of-order enqueue" maybe?), but I can't seem to be able to find 
that e-mail.

> When this flag is enabled in the port configuration PMD
> restores dequeue order on enqueue if applications happen to
> change it.
> 

If this feature is enabled, the application is free to enqueue events in 
any order, while still maintaining ordered/atomic semantics. That's how 
I would characterize it.

You may also want to note that the DPDK dispatcher library depends on 
this flag to function properly on burst-capable event devices.

This patch set should also include a patch to DSW, where it advertises 
this capability.

Ideally, you should also include a patch to the dispatcher library, 
which checks for this flag on RTE_EVENT_DEV_CAP_BURST_MODE event devices.

> 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.
> + *
> + *  @see rte_event_port_setup()
> + */
> +
>   /** Event port configuration structure */
>   struct rte_event_port_conf {
>   	int32_t new_event_threshold;


More information about the dev mailing list