From: Jerin Jacob <jerinj@marvell.com>
To: Abdullah Sevincer <abdullah.sevincer@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>
Cc: "bruce.richardson@intel.com" <bruce.richardson@intel.com>,
"pravin.pathak@intel.com" <pravin.pathak@intel.com>,
"mattias.ronnblom@ericsson.com" <mattias.ronnblom@ericsson.com>,
"manish.aggarwal@intel.com" <manish.aggarwal@intel.com>
Subject: RE: [EXTERNAL] [PATCH v12 2/3] event/dlb2: add support for independent enqueue
Date: Thu, 19 Sep 2024 10:49:05 +0000 [thread overview]
Message-ID: <BY3PR18MB4785581543D4E0E547846E76C8632@BY3PR18MB4785.namprd18.prod.outlook.com> (raw)
In-Reply-To: <20240909160506.2655354-3-abdullah.sevincer@intel.com>
> -----Original Message-----
> From: Abdullah Sevincer <abdullah.sevincer@intel.com>
> Sent: Monday, September 9, 2024 9:35 PM
> To: dev@dpdk.org
> Cc: Jerin Jacob <jerinj@marvell.com>; bruce.richardson@intel.com;
> pravin.pathak@intel.com; mattias.ronnblom@ericsson.com;
> manish.aggarwal@intel.com; Abdullah Sevincer <abdullah.sevincer@intel.com>
> Subject: [EXTERNAL] [PATCH v12 2/3] event/dlb2: add support for independent
> enqueue
>
> DLB devices need events to be enqueued in the same order they are dequeued.
> Applications are not suppose to change event order between dequeue and to
> enqueue. Since Eventdev standard does not add such restrictions independent
> enqueue support
> DLB devices need events to be enqueued in the same order they are dequeued.
> Applications are not suppose to change event order between dequeue and to
> enqueue. Since Eventdev standard does not add such restrictions independent
> enqueue support is needed for DLB PMD so that it restores dequeue order on
> enqueue if applications happen to change it. It also adds missing releases in
> places where events are dropped by the application and it expects implicit
> release to handle it.
>
> By default the feature will be off on all DLB ports and they will behave the same
> as older releases. To enable reordering feature, applications need to add the
> flag RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ
> to port configuration if only the device advertises the capability
> RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ.
>
> Signed-off-by: Abdullah Sevincer <abdullah.sevincer@intel.com>
> Acked-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> ---
> doc/guides/eventdevs/dlb2.rst | 41 +++
> doc/guides/rel_notes/release_24_11.rst | 6 +
> drivers/event/dlb2/dlb2.c | 492 ++++++++++++++++---------
> drivers/event/dlb2/dlb2_avx512.c | 27 +-
> drivers/event/dlb2/dlb2_inline_fns.h | 8 +
> drivers/event/dlb2/dlb2_priv.h | 25 +-
> drivers/event/dlb2/rte_pmd_dlb2.h | 10 +
> 7 files changed, 419 insertions(+), 190 deletions(-)
>
> diff --git a/doc/guides/eventdevs/dlb2.rst b/doc/guides/eventdevs/dlb2.rst
> index 2532d92888..8b973cf81e 100644
> --- a/doc/guides/eventdevs/dlb2.rst
> +++ b/doc/guides/eventdevs/dlb2.rst
> @@ -456,6 +456,47 @@ Example command to enable QE Weight feature:
>
> --allow ea:00.0,enable_cq_weight=<y/Y>
>
> +Independent Enqueue Capability
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +DLB2 hardware device expects all forwarded events to be enqueued in the
> +same order as they are dequeued. For dropped events, their releases
> +should come at the same location as the original event was expected.
> +Hardware has this restriction as it uses the order to retrieve
> +information about the original event that was sent to the CPU. This
> +contains information like atomic flow ID to release the flow lock and
> +ordered events sequence number to restore the original order.
> +
> +Some applications, like those based on the DPDK dispatcher library,
> +want enqueue order independence. To support this, DLB2 PMD supports the
> +``RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ`` capability.
> +
> +This capability applies to Eventdevs supporting burst mode. On ports
> +where the application is going to change enqueue order,
> +``RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ`` support should be enabled.
> +
> +Example code to inform PMD that the application plans to use
> +independent enqueue order on a port:
> +
> + .. code-block:: c
> +
> + if (capability & RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ)
> + port_config = port_config |
> + RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ;
A lot of thing in this is generic, update and move that to doc/guides/prog_guide/eventdev/eventdev.rst
And add DLB2 specific items here.
> +
> +This code example enables enqueue event reordering inside DLB2 PMD
> +before the events are sent to the DLB2 hardware. If the application is
> +not going to change the enqueue order, this flag should not be enabled
> +to get better performance. DLB2 PMD saves ordering information inside
> +the impl_opaque field of the event, and this field should be preserved
> +for all FORWARD or RELEASE events. Following MACROs are provided to get
> +and set this field inside the event in case the same event is not used
> +for forwarding (e.g., a new RELEASE event is created when the original event is
> dropped instead of reusing the same event).
> +
> + .. code-block:: c
> +
> + #define RTE_EVENT_GET_IMPL_OPAQUE(ev) (ev->impl_opaque)
> + #define RTE_EVENT_SET_IMPL_OPAQUE(ev, val) (ev->impl_opaque =
> + val)
Don’t add public RTE_EVENT_ symbol as example macro, use some other prefix like DLB2.
> +
> Running Eventdev Applications with DLB Device
> ---------------------------------------------
>
> diff --git a/doc/guides/rel_notes/release_24_11.rst
> b/doc/guides/rel_notes/release_24_11.rst
> index 89c6a67e6a..61796f24e6 100644
> --- a/doc/guides/rel_notes/release_24_11.rst
> +++ b/doc/guides/rel_notes/release_24_11.rst
> @@ -60,6 +60,12 @@ New Features
> * Added support for independent enqueue feature. Updated Event Device and
> PMD feature list.
>
> +* **Updated DLB2 Driver for independent enqueue feature**
Driver->driver
> +
> + Added support for DLB independent enqueue feature. Applications
> + should use ``RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ`` to enable the
> + feature if the capability ``RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ`` exists.
Next patch add one more item to release notes. Instead, IMO, it better to update the generic section.
for this PMD support. I.e. add one item under
"*Updated eventdev to support independent enqueue feature" section. As add DLB2 support.
>
> #include <rte_compat.h>
>
> +/**
> + * Macros to get/set QID depth and QE weight from rte_event metadata.
> + * Currently 'rsvd' field is used for these. Lower 2 bits are used to
> +store
> + * QID depth while the upper 2 bits are used for QER weight.
> + */
> +#define RTE_PMD_DLB2_GET_QID_DEPTH(x) ((x)->rsvd & 0x3) #define
> +RTE_PMD_DLB2_SET_QID_DEPTH(x, v) ((x)->rsvd = ((x)->rsvd & ~0x3) | (v &
> +0x3)) #define RTE_PMD_DLB2_GET_QE_WEIGHT(x) (((x)->rsvd >> 2) & 0x3)
> +#define RTE_PMD_DLB2_SET_QE_WEIGHT(x, v) ((x)->rsvd = ((x)->rsvd & 0x3)
> +| ((v & 0x3) << 2))
All of the above MACROs are public symbols, Add Doxygen comment for each of them.
> +
> /**
> * @warning
> * @b EXPERIMENTAL: this API may change, or be removed, without prior
> notice
> --
> 2.25.1
next prev parent reply other threads:[~2024-09-19 10:49 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 20:12 [PATCH v1 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 20:12 ` [PATCH v1 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 20:51 ` [PATCH v2 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 20:51 ` [PATCH v2 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 20:51 ` [PATCH v2 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer
2024-06-21 22:24 ` [PATCH v3 0/2] DLB Enqueue Reorder Support Abdullah Sevincer
2024-06-21 22:24 ` [PATCH v3 1/2] event/dlb2: add support for enqueue reordering Abdullah Sevincer
2024-06-21 22:24 ` [PATCH v3 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer
2024-06-24 8:28 ` Jerin Jacob
2024-06-26 18:31 ` Sevincer, Abdullah
2024-06-27 13:13 ` Jerin Jacob
2024-07-01 8:24 ` Mattias Rönnblom
2024-07-01 8:50 ` Mattias Rönnblom
2024-07-02 17:25 ` Pathak, Pravin
2024-07-11 3:20 ` Pathak, Pravin
2024-07-10 1:20 ` [PATCH v4 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-10 1:20 ` [PATCH v4 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-10 1:20 ` [PATCH v4 2/3] eventdev: " Abdullah Sevincer
2024-07-10 1:20 ` [PATCH v4 3/3] event/dsw: add capability " Abdullah Sevincer
2024-07-10 6:33 ` [PATCH v5 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-10 6:33 ` [PATCH v5 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-10 6:33 ` [PATCH v5 2/3] eventdev: " Abdullah Sevincer
2024-07-10 6:33 ` [PATCH v5 3/3] event/dsw: add capability " Abdullah Sevincer
2024-07-11 19:54 ` [PATCH v6 0/3] Independent Enqueue Support Abdullah Sevincer
2024-07-11 19:54 ` [PATCH v6 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-07-11 19:54 ` [PATCH v6 2/3] eventdev: " Abdullah Sevincer
2024-07-23 6:40 ` Mattias Rönnblom
2024-07-29 13:49 ` Pathak, Pravin
2024-08-13 15:00 ` Sevincer, Abdullah
2024-08-20 16:48 ` Sevincer, Abdullah
2024-08-12 18:41 ` [PATCH v7 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-12 18:41 ` [PATCH v7 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-12 18:41 ` [PATCH v7 2/3] eventdev: " Abdullah Sevincer
2024-08-12 18:41 ` [PATCH v7 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-12 20:00 ` [PATCH v8 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-12 20:00 ` [PATCH v8 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-12 20:00 ` [PATCH v8 2/3] eventdev: " Abdullah Sevincer
2024-08-23 11:02 ` Mattias Rönnblom
2024-08-24 20:41 ` Pathak, Pravin
2024-08-27 18:33 ` Sevincer, Abdullah
2024-08-28 16:45 ` Mattias Rönnblom
2024-08-28 16:59 ` Sevincer, Abdullah
2024-08-29 12:51 ` Jerin Jacob
2024-08-31 18:38 ` Sevincer, Abdullah
2024-08-29 17:36 ` [PATCH v9 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-29 17:36 ` [PATCH v9 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-08-29 17:36 ` [PATCH v9 2/3] eventdev: " Abdullah Sevincer
2024-08-29 17:36 ` [PATCH v9 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-30 16:23 ` [PATCH v10 0/3] Independent Enqueue Support Abdullah Sevincer
2024-08-30 16:23 ` [PATCH v10 1/3] event/dlb2: add support for independent enqueue Abdullah Sevincer
2024-09-09 1:47 ` fengchengwen
2024-09-16 17:51 ` Sevincer, Abdullah
2024-09-09 15:52 ` [PATCH v11 0/3] Independent Enqueue Support Abdullah Sevincer
2024-09-09 15:52 ` [PATCH v11 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-09-19 10:32 ` Jerin Jacob
2024-09-09 15:52 ` [PATCH v11 2/3] event/dlb2: " Abdullah Sevincer
2024-09-09 15:52 ` [PATCH v11 3/3] event/dsw: add capability " Abdullah Sevincer
2024-09-09 16:05 ` [PATCH v12 0/3] Independent Enqueue Support Abdullah Sevincer
2024-09-09 16:05 ` [PATCH v12 1/3] eventdev: add support for independent enqueue Abdullah Sevincer
2024-09-09 16:05 ` [PATCH v12 2/3] event/dlb2: " Abdullah Sevincer
2024-09-19 10:49 ` Jerin Jacob [this message]
2024-09-09 16:05 ` [PATCH v12 3/3] event/dsw: add capability " Abdullah Sevincer
2024-09-19 10:49 ` Jerin Jacob
2024-08-30 16:23 ` [PATCH v10 2/3] eventdev: add support " Abdullah Sevincer
2024-08-30 16:23 ` [PATCH v10 3/3] event/dsw: add capability " Abdullah Sevincer
2024-08-12 20:00 ` [PATCH v8 " Abdullah Sevincer
2024-08-23 11:03 ` Mattias Rönnblom
2024-07-11 19:54 ` [PATCH v6 " Abdullah Sevincer
2024-07-23 6:41 ` Mattias Rönnblom
2024-06-21 20:12 ` [PATCH v1 2/2] eventdev: add support for enqueue reorder Abdullah Sevincer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BY3PR18MB4785581543D4E0E547846E76C8632@BY3PR18MB4785.namprd18.prod.outlook.com \
--to=jerinj@marvell.com \
--cc=abdullah.sevincer@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=manish.aggarwal@intel.com \
--cc=mattias.ronnblom@ericsson.com \
--cc=pravin.pathak@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).