DPDK patches and discussions
 help / color / mirror / Atom feed
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


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