DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jerin Jacob <jerinjacobk@gmail.com>
To: Nipun Gupta <nipun.gupta@nxp.com>
Cc: dpdk-dev <dev@dpdk.org>, Jerin Jacob <jerinj@marvell.com>,
	aconole@redhat.com, Pavan Nikhilesh <pbhagavatula@marvell.com>,
	Sunil Kumar Kori <skori@marvell.com>,
	 Hemant Agrawal <hemant.agrawal@nxp.com>,
	"Richardson, Bruce" <bruce.richardson@intel.com>,
	 Marko Kovacevic <marko.kovacevic@intel.com>,
	Ori Kam <orika@mellanox.com>,
	 Radu Nicolau <radu.nicolau@intel.com>,
	Tomasz Kantecki <tomasz.kantecki@intel.com>,
	 "Van Haaren, Harry" <harry.van.haaren@intel.com>,
	"Rao, Nikhil" <nikhil.rao@intel.com>,
	 Ray Kinsella <mdr@ashroe.eu>,
	Thomas Monjalon <thomas@monjalon.net>,
	techboard@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] eventdev: flag to identify same destined packets enqueue
Date: Fri, 4 Oct 2019 13:51:51 +0530	[thread overview]
Message-ID: <CALBAE1OVb7zLc05-DgMq0HkeMMSpMNiFKwb0HVpxRdEVY5QF9A@mail.gmail.com> (raw)
In-Reply-To: <20191004065546.11942-1-nipun.gupta@nxp.com>

On Fri, Oct 4, 2019 at 12:41 PM Nipun Gupta <nipun.gupta@nxp.com> wrote:
>
> This patch introduces a `flag` in the Eth TX adapter enqueue API.
> Some drivers may support burst functionality only with the packets
> having same destination device and queue.
>
> The flag `RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST` can be used
> to indicate this so the underlying driver, for drivers to utilize
> burst functionality appropriately.
>
> Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
> ---
>
> Changes in v2:
>  - have separate internal API in tx adapter for sending burst packets to
>    same eth dev, queue pair on the basis of the passed flag
>  - fix compilation of examples/eventdev_pipeline/
>
>  app/test-eventdev/test_pipeline_common.h      |  6 +++---
>  .../prog_guide/event_ethernet_tx_adapter.rst  |  3 ++-
>  .../eventdev_pipeline/pipeline_worker_tx.c    |  2 +-
>  .../rte_event_eth_tx_adapter.h                | 19 +++++++++++++++++--
>  lib/librte_eventdev/rte_eventdev.c            | 12 ++++++++++++
>  lib/librte_eventdev/rte_eventdev.h            |  9 +++++++++

It is an ABI change so please update

a) lib/librte_eventdev/Makefile
b) lib/librte_eventdev/meson.build
c) doc/guides/rel_notes/release_19_11.rst

Please see c2189c907dd191b909ce1f18487d46410782e370 as reference.

If anyone has any objection for treating this ABI change as an
exception(ABI change without depreciation notice in advance)
then please shout.



>  6 files changed, 44 insertions(+), 7 deletions(-)
>

> diff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.h b/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> index c848261c4..f552b6023 100644
> --- a/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> +++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> @@ -300,6 +300,11 @@ rte_event_eth_tx_adapter_txq_get(struct rte_mbuf *pkt)
>  int
>  rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
>
> +#define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST     0x1
> +/**< This flag is used when all the packets enqueued in the tx adapter are
> + * destined for the same Ethernet device, queue pair.

I would say "Ethernet port and Tx queue"

> + */
> +
>  /**
>   * Enqueue a burst of events objects or an event object supplied in *rte_event*
>   * structure on an  event device designated by its *dev_id* through the event
> @@ -324,6 +329,10 @@ rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
>   *  The number of event objects to enqueue, typically number of
>   *  rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...)
>   *  available for this port.
> + * @param flags
> + *  See RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_ flags.

Change to @see

> + *  #RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST signifies that all the packets
> + *  which are enqueued are destined for the same Ethernet device, queue pair.

Same as above. Please check generated doxgen API output.

>   *
>   * @return
>   *   The number of event objects actually enqueued on the event device. The
> @@ -343,7 +352,8 @@ static inline uint16_t
>  rte_event_eth_tx_adapter_enqueue(uint8_t dev_id,
>                                 uint8_t port_id,
>                                 struct rte_event ev[],
> -                               uint16_t nb_events)
> +                               uint16_t nb_events,
> +                               const uint8_t flags)
>  {
>         const struct rte_eventdev *dev = &rte_eventdevs[dev_id];
>
> @@ -359,7 +369,12 @@ rte_event_eth_tx_adapter_enqueue(uint8_t dev_id,
>                 return 0;
>         }
>  #endif
> -       return dev->txa_enqueue(dev->data->ports[port_id], ev, nb_events);
> +       if (flags)
> +               return dev->txa_enqueue_same_dest(dev->data->ports[port_id],
> +                                                 ev, nb_events, flags);
> +       else
> +               return dev->txa_enqueue(dev->data->ports[port_id], ev,
> +                                       nb_events);
>  }
>
>  /**
> diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
> index f44c869cb..7c8ffdfef 100644
> --- a/lib/librte_eventdev/rte_eventdev.c
> +++ b/lib/librte_eventdev/rte_eventdev.c
> @@ -1330,6 +1330,16 @@ rte_event_tx_adapter_enqueue(__rte_unused void *port,
>         return 0;
>  }
>
> +static uint16_t
> +rte_event_tx_adapter_enqueue_same_dest(__rte_unused void *port,
> +                       __rte_unused struct rte_event ev[],
> +                       __rte_unused uint16_t nb_events,
> +                       __rte_unused const uint8_t flags)
> +{
> +       rte_errno = ENOTSUP;
> +       return 0;
> +}
> +
>  struct rte_eventdev *
>  rte_event_pmd_allocate(const char *name, int socket_id)
>  {
> @@ -1351,6 +1361,8 @@ rte_event_pmd_allocate(const char *name, int socket_id)
>         eventdev = &rte_eventdevs[dev_id];
>
>         eventdev->txa_enqueue = rte_event_tx_adapter_enqueue;
> +       eventdev->txa_enqueue_same_dest =
> +                       rte_event_tx_adapter_enqueue_same_dest;
>
>         if (eventdev->data == NULL) {
>                 struct rte_eventdev_data *eventdev_data = NULL;
> diff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h
> index 5044a13d0..ea61f52f6 100644
> --- a/lib/librte_eventdev/rte_eventdev.h
> +++ b/lib/librte_eventdev/rte_eventdev.h
> @@ -1230,6 +1230,13 @@ typedef uint16_t (*event_tx_adapter_enqueue)(void *port,
>                                 struct rte_event ev[], uint16_t nb_events);
>  /**< @internal Enqueue burst of events on port of a device */
>
> +typedef uint16_t (*event_tx_adapter_enqueue_same_dest)(void *port,
> +               struct rte_event ev[], uint16_t nb_events,
> +               const uint8_t flags);
> +/**< @internal Enqueue burst of events on port of a device supporting flag to
> + * indicate burst having same dest eth port and queue.

s/queue/Tx queue

> + */
> +
>  #define RTE_EVENTDEV_NAME_MAX_LEN      (64)
>  /**< @internal Max length of name of event PMD */
>
> @@ -1292,6 +1299,8 @@ struct rte_eventdev {
>         /**< Pointer to PMD dequeue function. */
>         event_dequeue_burst_t dequeue_burst;
>         /**< Pointer to PMD dequeue burst function. */
> +       event_tx_adapter_enqueue_same_dest txa_enqueue_same_dest;
> +       /**< Pointer to PMD eth Tx adapter enqueue burst function. */

Is it really burst function? enqueue supports already support burst.
Please change the description.

>         event_tx_adapter_enqueue txa_enqueue;
>         /**< Pointer to PMD eth Tx adapter enqueue function. */
>         struct rte_eventdev_data *data;
> --
> 2.17.1
>

  reply	other threads:[~2019-10-04  8:22 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-01  6:46 [dpdk-dev] [PATCH] " Nipun Gupta
2019-10-01  7:44 ` Jerin Jacob
2019-10-01 11:41   ` Nipun Gupta
2019-10-01 13:09     ` Jerin Jacob
2019-10-01 14:02       ` Nipun Gupta
2019-10-01 14:20         ` Jerin Jacob
2019-10-01 15:06           ` Nipun Gupta
2019-10-01 15:35             ` Jerin Jacob
2019-10-02  3:08               ` Hemant Agrawal
2019-10-02  7:54                 ` Jerin Jacob
2019-10-03  6:12                   ` Rao, Nikhil
2019-10-03  6:45                     ` Hemant Agrawal
2019-10-03 10:26                       ` Jerin Jacob
2019-10-21 11:35                         ` Rao, Nikhil
2019-10-22  8:45                           ` Jerin Jacob
2019-10-22  9:42                             ` Rao, Nikhil
2019-10-23  4:53                               ` Jerin Jacob
2019-10-01 14:42 ` Aaron Conole
2019-10-01 15:15   ` Nipun Gupta
2019-10-04  6:55 ` [dpdk-dev] [PATCH v2] " Nipun Gupta
2019-10-04  8:21   ` Jerin Jacob [this message]
2019-10-04 10:47 ` [dpdk-dev] [PATCH v3] " Nipun Gupta
2019-10-05 16:23   ` Jerin Jacob
2019-10-09  7:32 ` [dpdk-dev] [PATCH v4] " Nipun Gupta
2019-10-10 10:06   ` Rao, Nikhil
2019-10-10 12:43     ` Nipun Gupta
2019-10-11  6:14       ` Jerin Jacob
2019-10-11 13:03 ` [dpdk-dev] [PATCH v5] " Nipun Gupta
2019-10-16  6:41   ` Hemant Agrawal
2019-10-16  7:19   ` Jerin Jacob

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=CALBAE1OVb7zLc05-DgMq0HkeMMSpMNiFKwb0HVpxRdEVY5QF9A@mail.gmail.com \
    --to=jerinjacobk@gmail.com \
    --cc=aconole@redhat.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=harry.van.haaren@intel.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=jerinj@marvell.com \
    --cc=marko.kovacevic@intel.com \
    --cc=mdr@ashroe.eu \
    --cc=nikhil.rao@intel.com \
    --cc=nipun.gupta@nxp.com \
    --cc=orika@mellanox.com \
    --cc=pbhagavatula@marvell.com \
    --cc=radu.nicolau@intel.com \
    --cc=skori@marvell.com \
    --cc=techboard@dpdk.org \
    --cc=thomas@monjalon.net \
    --cc=tomasz.kantecki@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).