On Sat, Jun 22, 2024 at 4:02 AM Abdullah Sevincer <abdullah.sevin...@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.sevin...@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 >