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
>
next prev parent 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).