On 2024-08-24 22:41, Pathak, Pravin wrote:


-----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.


Sounds good and better than my attempt.


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>

Reply via email to