> -----Original Message----- > From: Mattias Rönnblom <hof...@lysator.liu.se> > Sent: Friday, August 23, 2024 7:03 AM > To: Sevincer, Abdullah <abdullah.sevin...@intel.com>; dev@dpdk.org > Cc: jer...@marvell.com; Richardson, Bruce <bruce.richard...@intel.com>; > Pathak, Pravin <pravin.pat...@intel.com>; mattias.ronnb...@ericsson.com; > Aggarwal, Manish <manish.aggar...@intel.com> > Subject: Re: [PATCH v8 2/3] eventdev: add support for independent enqueue > > On 2024-08-12 22:00, Abdullah Sevincer wrote: > > This commit adds support for independent enqueue feature and updates > > Event Device and PMD feature list. > > > > A new capability RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ is introduced to > > support independent enqueue to support PMD to enqueue in any order > > even the underlined hardware device needs enqueues in a strict dequeue > > This sentence needs to be rephrased. > > My attempt: > "A new capability RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ is introduced. An > application may, on an event device where independent enqueue is supported, > using an event port where it is enabled, enqueue RTE_EVENT_OP_FORWARD or > RELEASE type events in any order." > > > order.
Will this work: A new capability, RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ, is introduced. It allows out-of-order enqueuing of RTE_EVENT_OP_FORWARD or RELEASE type events on an event port where this capability is enabled. > > > > To use this capability applications need to set flag > > RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ during port setup only if the > > capability RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ exists. > > > > Signed-off-by: Abdullah Sevincer <abdullah.sevin...@intel.com> > > --- > > doc/guides/eventdevs/features/default.ini | 1 + > > doc/guides/eventdevs/features/dlb2.ini | 1 + > > doc/guides/rel_notes/release_24_11.rst | 5 +++ > > lib/eventdev/rte_eventdev.h | 37 +++++++++++++++++++++++ > > 4 files changed, 44 insertions(+) > > > > diff --git a/doc/guides/eventdevs/features/default.ini > > b/doc/guides/eventdevs/features/default.ini > > index 1cc4303fe5..7c4ee99238 100644 > > --- a/doc/guides/eventdevs/features/default.ini > > +++ b/doc/guides/eventdevs/features/default.ini > > @@ -22,6 +22,7 @@ carry_flow_id = > > maintenance_free = > > runtime_queue_attr = > > profile_links = > > +independent_enq = > > > > ; > > ; Features of a default Ethernet Rx adapter. > > diff --git a/doc/guides/eventdevs/features/dlb2.ini > > b/doc/guides/eventdevs/features/dlb2.ini > > index 7b80286927..c7193b47c1 100644 > > --- a/doc/guides/eventdevs/features/dlb2.ini > > +++ b/doc/guides/eventdevs/features/dlb2.ini > > @@ -15,6 +15,7 @@ implicit_release_disable = Y > > runtime_port_link = Y > > multiple_queue_port = Y > > maintenance_free = Y > > +independent_enq = Y > > > > [Eth Rx adapter Features] > > > > diff --git a/doc/guides/rel_notes/release_24_11.rst > > b/doc/guides/rel_notes/release_24_11.rst > > index f0ec07c263..04f389876a 100644 > > --- a/doc/guides/rel_notes/release_24_11.rst > > +++ b/doc/guides/rel_notes/release_24_11.rst > > @@ -30,6 +30,11 @@ New Features > > ``RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ`` to enable the feature if the > capability > > ``RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ`` exists. > > > > +* **Updated Event Device Library for independent enqueue feature** > > + > > + * Added support for independent enqueue feature. Updated Event Device > and > > + PMD feature list. > > + > > > > Removed Items > > ------------- > > diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h > > index 08e5f9320b..48e6eadda9 100644 > > --- a/lib/eventdev/rte_eventdev.h > > +++ b/lib/eventdev/rte_eventdev.h > > @@ -446,6 +446,31 @@ struct rte_event; > > * @see RTE_SCHED_TYPE_PARALLEL > > */ > > > > +#define RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ (1ULL << 16) /**< Event > > +device is capable of independent enqueue. > > + * A new capability, RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ, will indicate > > +that Eventdev > > + * supports the enqueue in any order or specifically in a different > > +order than the > > + * dequeue. Eventdev PMD can either transmit events in the changed > > +order in which > > + * they are enqueued or restore the original order before sending > > +them to the > > + * underlying hardware device. A flag is provided during the port > > +configuration to > > + * inform Eventdev PMD that the application intends to use an > > +independent enqueue > > + * order on a particular port. Note that this capability only matters > > +for Eventdevs > > + * supporting burst mode. > > + * > > + * To Inform PMD that the application plans to use independent > > +enqueue order on a port > > + * this code example can be used: > > + * > > + * if (capability & RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ) > > + * port_config = port_config | > RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ; > > + * > > + * When an implicit release is enabled on a port, Eventdev PMD will > > +also handle > > + * the insertion of RELEASE events in place of dropped events. The > > +independent enqueue > > + * feature only applies to FORWARD and RELEASE events. New events > > +(op=RTE_EVENT_OP_NEW) > > + * will be transmitted in the order the application enqueues them and > > +do not maintain > > + * any order relative to FORWARD/RELEASE events. FORWARD vs NEW > > +relaxed ordering > > + * only applies to ports that have enabled independent enqueue feature. > > + */ > > + > > /* Event device priority levels */ > > #define RTE_EVENT_DEV_PRIORITY_HIGHEST 0 > > /**< Highest priority level for events and queues. > > @@ -1072,6 +1097,18 @@ 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_INDEPENDENT_ENQ (1ULL << 5) > > +/**< Flag to enable independent enqueue. Must not be set if the > > +device > > + * is not RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ capable. This feature > > + * allows an application to enqueue RTE_EVENT_OP_FORWARD or > > + * RTE_EVENT_OP_RELEASE in an order different than the order the > > + * events were dequeued from the event device, while maintaining > > + * RTE_SCHED_TYPE_ATOMIC or RTE_SCHED_TYPE_ORDERED semantics. > > + * > > + * Note that this flag only matters for Eventdevs supporting burst mode. > > + * > > + * @see rte_event_port_setup() > > + */ > > > > /** Event port configuration structure */ > > struct rte_event_port_conf { > > Acked-by: Mattias Rönnblom <mattias.ronnb...@ericsson.com>