From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8AE1C4558F; Wed, 10 Jul 2024 03:21:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 50872427BF; Wed, 10 Jul 2024 03:20:56 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by mails.dpdk.org (Postfix) with ESMTP id B25E940EE4 for ; Wed, 10 Jul 2024 03:20:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1720574454; x=1752110454; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=j/cFfVVUieN6qhoniAJGxO6DEBW3BO5ZrLOS9z74LeI=; b=DHmr02OkrQHLbCGVQirtUPMSv/fZq7rTcTd+/8hAnH5OJr9Nhaa+SLrB ZimXVO9LqvVNryw5hL444xV1lOhq/sHfAV0OECXW5WudGuyebglu/aZ3w GASX+vkUOajdZcnZir17Bj6jUCzAOq/IbV0VorC2PhvDr1mysb0LcdAcq akhbCDk4B6zvy/UHZ5+Xl/7xepmSfk55JqCZKRriOEcQhR6MJ2uB+BQpZ rmK55CXFyd4kRydnXMPrPgsLQIq45Hjc+9t0XtTDPNbFg0MnQyVrwzWQo zZQ4p7hWWrDhzVQ2jW83arqEgFfYMxmbHhiQS2TypFa9apjKC/L/3Tgj8 w==; X-CSE-ConnectionGUID: 4eh33lSbTVycgym8rB1xfg== X-CSE-MsgGUID: W7M31udIT6CnU0D+/2KbyA== X-IronPort-AV: E=McAfee;i="6700,10204,11128"; a="35299788" X-IronPort-AV: E=Sophos;i="6.09,196,1716274800"; d="scan'208";a="35299788" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jul 2024 18:20:54 -0700 X-CSE-ConnectionGUID: 2fMs1LM2QMqfdqaeHgzE/Q== X-CSE-MsgGUID: suFCUF53SYG0LwkY1Qes9g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,196,1716274800"; d="scan'208";a="48125444" Received: from txanpdk02.an.intel.com ([10.123.117.76]) by orviesa009.jf.intel.com with ESMTP; 09 Jul 2024 18:20:53 -0700 From: Abdullah Sevincer To: dev@dpdk.org Cc: jerinj@marvell.com, bruce.richardson@intel.com, pravin.pathak@intel.com, mattias.ronnblom@ericsson.com, manish.aggarwal@intel.com, Abdullah Sevincer Subject: [PATCH v4 2/3] eventdev: add support for independent enqueue Date: Tue, 9 Jul 2024 20:20:45 -0500 Message-Id: <20240710012046.2509681-3-abdullah.sevincer@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240710012046.2509681-1-abdullah.sevincer@intel.com> References: <20240621222408.583464-3-abdullah.sevincer@intel.com> <20240710012046.2509681-1-abdullah.sevincer@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 order. 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 --- doc/guides/eventdevs/features/default.ini | 1 + doc/guides/eventdevs/features/dlb2.ini | 1 + doc/guides/rel_notes/release_24_07.rst | 4 +++- lib/eventdev/rte_eventdev.h | 21 +++++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) 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_07.rst b/doc/guides/rel_notes/release_24_07.rst index d018bcd0d5..6ad43c679d 100644 --- a/doc/guides/rel_notes/release_24_07.rst +++ b/doc/guides/rel_notes/release_24_07.rst @@ -161,7 +161,9 @@ 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..106b18fe28 100644 --- a/lib/eventdev/rte_eventdev.h +++ b/lib/eventdev/rte_eventdev.h @@ -446,6 +446,17 @@ struct rte_event; * @see RTE_SCHED_TYPE_PARALLEL */ +#define RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ (1ULL << 16) +/**< Event device is capable of independent enqueue. + * When this flag is set, the application can enqueue to PMD in any order even + * the underlined hardware device needs enqueues in a strict dequeue order. + * PMD will reorder enqueued events based on their dequeue order when the feature + * is enabled on an Eventdev port. The capability supports applications that sort + * received bursts based on criteria like flow-id or receive QID and process them + * in smaller groups. Each processed group is enqueued separately, changing the + * dequeue order. + */ + /* Event device priority levels */ #define RTE_EVENT_DEV_PRIORITY_HIGHEST 0 /**< Highest priority level for events and queues. @@ -1072,6 +1083,16 @@ 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. + * + * @see rte_event_port_setup() + */ /** Event port configuration structure */ struct rte_event_port_conf { -- 2.25.1