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 C52314588A; Wed, 28 Aug 2024 18:45:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 52D2842686; Wed, 28 Aug 2024 18:45:29 +0200 (CEST) Received: from mail.lysator.liu.se (mail.lysator.liu.se [130.236.254.3]) by mails.dpdk.org (Postfix) with ESMTP id 068EB402CA for ; Wed, 28 Aug 2024 18:45:28 +0200 (CEST) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id 24647408E for ; Wed, 28 Aug 2024 18:45:27 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 17E0F3FD4; Wed, 28 Aug 2024 18:45:27 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on hermod.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,AWL, T_SCC_BODY_TEXT_LINE autolearn=disabled version=4.0.0 X-Spam-Score: -1.2 Received: from [192.168.1.86] (h-62-63-215-114.A163.priv.bahnhof.se [62.63.215.114]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id 166B13FD3; Wed, 28 Aug 2024 18:45:24 +0200 (CEST) Message-ID: Date: Wed, 28 Aug 2024 18:45:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v8 2/3] eventdev: add support for independent enqueue To: "Pathak, Pravin" , "Sevincer, Abdullah" , "dev@dpdk.org" Cc: "jerinj@marvell.com" , "Richardson, Bruce" , "mattias.ronnblom@ericsson.com" , "Aggarwal, Manish" References: <20240711195444.2627373-3-abdullah.sevincer@intel.com> <20240812200030.988314-1-abdullah.sevincer@intel.com> <20240812200030.988314-3-abdullah.sevincer@intel.com> <8a4f637b-7daa-4fd0-8d0a-08e6e2b0563e@lysator.liu.se> Content-Language: en-US From: =?UTF-8?Q?Mattias_R=C3=B6nnblom?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP 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 On 2024-08-24 22:41, Pathak, Pravin wrote: > > >> -----Original Message----- >> From: Mattias Rönnblom >> Sent: Friday, August 23, 2024 7:03 AM >> To: Sevincer, Abdullah ; dev@dpdk.org >> Cc: jerinj@marvell.com; Richardson, Bruce ; >> Pathak, Pravin ; mattias.ronnblom@ericsson.com; >> Aggarwal, Manish >> 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 >>> --- >>> 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