DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Neil Horman <nhorman@tuxdriver.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>,
	John McNamara <john.mcnamara@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	Reshma Pattan <reshma.pattan@intel.com>,
	dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v5] ethdev: return named opaque type instead of void pointer
Date: Fri, 23 Mar 2018 17:00:34 +0000	[thread overview]
Message-ID: <20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <20180321130401.GA3225@hmswarspite.think-freely.org>

On Wed, Mar 21, 2018 at 09:04:01AM -0400, Neil Horman wrote:
> On Tue, Mar 20, 2018 at 04:34:04PM +0000, Ferruh Yigit wrote:
> > "struct rte_eth_rxtx_callback" is defined as internal data structure and
> > used as named opaque type.
> > 
> > So the functions that are adding callbacks can return objects in this
> > type instead of void pointer.
> > 
> > Also const qualifier added to "struct rte_eth_rxtx_callback *" to
> > protect it better from application modification.
> > 
> > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> > ---
> > v2:
> > * keep using struct * in parameters, instead add callback functions
> > return struct rte_eth_rxtx_callback pointer.
> > 
> > v4:
> > * Remove deprecation notice. LIBABIVER already increased in this release
> > 
> > v5:
> > * add const qualifier to rte_eth_rxtx_callback
> I still wish we could find a way to remove the inline functions and truly
> protect that struct, but a const is definately better than nothing
> 
> Acked-by: Neil Horman <nhorman@tuxdriver.com>
> 
Actually, I think we should do exactly that - convert the rx and tx burst
calls into actual function calls (and consider any other inlined functions
too). The cost would be the overhead of making an additional function call
per-burst, which is likely to be pretty minimal for most common burst sizes
e.g. 32.

We did some quick tests here with the i40e driver, and for a burst size of
32 saw less than 1% perf drop, and for even a small burst of 8 saw less
than 5% drop. Note that this is testing with testpmd, which has nothing but
I/O in the datapath. A real-world app is likely to do far more with the
packets and therefore see proportionally far less perf hit.

Thoughts?

/Bruce

PS: This un-inlining could probably be applied to other device types too,
e.g. cryptodev (though probably not eventdev as it tends to have smaller
bursts in some use-cases).

  reply	other threads:[~2018-03-23 17:00 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01  2:29 [dpdk-dev] [PATCH 1/7] ethdev: remove unused flag from header Ferruh Yigit
2017-12-01  2:29 ` [dpdk-dev] [PATCH 2/7] ethdev: fix port id storage Ferruh Yigit
2017-12-01  9:01   ` Hemant Agrawal
2017-12-01 23:52   ` Ferruh Yigit
2017-12-01  2:29 ` [dpdk-dev] [PATCH 3/7] ethdev: separate driver APIs Ferruh Yigit
2017-12-01  6:24   ` Shreyansh Jain
2017-12-01  8:59   ` Hemant Agrawal
2017-12-01 23:51     ` Ferruh Yigit
2017-12-01  2:29 ` [dpdk-dev] [PATCH 4/7] ethdev: separate internal structures into own header Ferruh Yigit
2017-12-01  5:44   ` Hemant Agrawal
2017-12-01  2:29 ` [dpdk-dev] [PATCH 5/7] ethdev: reorder inline functions Ferruh Yigit
2017-12-01  2:29 ` [dpdk-dev] [PATCH 6/7] ethdev: rename function parameter for consistency Ferruh Yigit
2017-12-01  2:29 ` [dpdk-dev] [PATCH 7/7] ethdev: use opaque user callback object Ferruh Yigit
2017-12-01 10:33   ` Bruce Richardson
2017-12-01 11:22     ` Ananyev, Konstantin
2017-12-01 13:17       ` Bruce Richardson
2017-12-01 23:51         ` Ferruh Yigit
2017-12-04 10:31           ` Bruce Richardson
2017-12-04 17:49             ` Ferruh Yigit
     [not found] ` <49eb13f1-e12f-071a-b58b-1cd4852b7c8b@scylladb.com>
2017-12-01 22:30   ` [dpdk-dev] [PATCH 1/7] ethdev: remove unused flag from header Vlad Zolotarov
2017-12-01 23:51   ` Ferruh Yigit
2017-12-02  2:22     ` Vlad Zolotarov
2017-12-04 17:54       ` Ferruh Yigit
2017-12-04 19:37         ` Vlad Zolotarov
2018-01-09 16:23 ` [dpdk-dev] [PATCH v2 1/6] ethdev: fix port id storage Ferruh Yigit
2018-01-09 16:23   ` [dpdk-dev] [PATCH v2 2/6] ethdev: separate driver APIs Ferruh Yigit
2018-01-09 19:19     ` Andrew Rybchenko
2018-01-09 16:23   ` [dpdk-dev] [PATCH v2 3/6] ethdev: separate internal structures into own header Ferruh Yigit
2018-01-09 16:23   ` [dpdk-dev] [PATCH v2 4/6] ethdev: reorder inline functions Ferruh Yigit
2018-01-09 16:23   ` [dpdk-dev] [PATCH v2 5/6] ethdev: rename function parameter for consistency Ferruh Yigit
2018-01-09 16:23   ` [dpdk-dev] [PATCH v2 6/6] ethdev: return named opaque type instead of void pointer Ferruh Yigit
2018-01-09 18:55     ` Stephen Hemminger
2018-01-09 18:58     ` Stephen Hemminger
2018-01-17 21:57   ` [dpdk-dev] [PATCH v3 1/6] ethdev: fix port id storage Ferruh Yigit
2018-01-17 21:57     ` [dpdk-dev] [PATCH v3 2/6] ethdev: return named opaque type instead of void pointer Ferruh Yigit
2018-01-17 22:11       ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-01-18 10:09         ` Ferruh Yigit
2018-03-09 11:25       ` [dpdk-dev] [PATCH v4] " Ferruh Yigit
     [not found]         ` <20180309123651.GB19004@hmswarspite.think-freely.org>
2018-03-09 13:00           ` Ferruh Yigit
2018-03-09 15:16             ` Neil Horman
2018-03-09 15:45               ` Ferruh Yigit
2018-03-09 19:06                 ` Neil Horman
2018-03-20 15:51                   ` Ferruh Yigit
2018-03-20 16:34         ` [dpdk-dev] [PATCH v5] " Ferruh Yigit
2018-03-21 13:04           ` Neil Horman
2018-03-23 17:00             ` Bruce Richardson [this message]
2018-03-24  2:08               ` Neil Horman
2018-03-26  8:47                 ` Ananyev, Konstantin
2018-03-27 19:10             ` Ferruh Yigit
2018-01-17 21:57     ` [dpdk-dev] [PATCH v3 3/6] ethdev: separate driver APIs Ferruh Yigit
2018-01-17 21:58     ` [dpdk-dev] [PATCH v3 4/6] ethdev: separate internal structures into own header Ferruh Yigit
2018-01-17 22:24       ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-01-18 10:09         ` Ferruh Yigit
2018-01-17 21:58     ` [dpdk-dev] [PATCH v3 5/6] ethdev: reorder inline functions Ferruh Yigit
2018-01-17 21:58     ` [dpdk-dev] [PATCH v3 6/6] ethdev: rename function parameter for consistency Ferruh Yigit
2018-01-17 22:09     ` [dpdk-dev] [PATCH v3 1/6] ethdev: fix port id storage Thomas Monjalon
2018-01-17 22:19       ` Thomas Monjalon
2018-01-18 10:15         ` Ferruh Yigit
2018-01-18 11:29           ` Thomas Monjalon
2018-01-20 16:57     ` [dpdk-dev] [PATCH v4 1/4] ethdev: separate driver APIs Ferruh Yigit
2018-01-20 16:57       ` [dpdk-dev] [PATCH v4 2/4] ethdev: separate internal structures into own header Ferruh Yigit
2018-01-20 16:57       ` [dpdk-dev] [PATCH v4 3/4] ethdev: reorder inline functions Ferruh Yigit
2018-01-20 16:57       ` [dpdk-dev] [PATCH v4 4/4] ethdev: rename function parameter for consistency Ferruh Yigit
2018-01-21 23:12       ` [dpdk-dev] [PATCH v4 1/4] ethdev: separate driver APIs Thomas Monjalon
2018-01-21 23:35       ` [dpdk-dev] [PATCH v5 " Ferruh Yigit
2018-01-21 23:35         ` [dpdk-dev] [PATCH v5 2/4] ethdev: separate internal structures into own header Ferruh Yigit
2018-01-21 23:35         ` [dpdk-dev] [PATCH v5 3/4] ethdev: reorder inline functions Ferruh Yigit
2018-01-21 23:35         ` [dpdk-dev] [PATCH v5 4/4] ethdev: rename function parameter for consistency Ferruh Yigit
2018-01-22  0:16         ` [dpdk-dev] [PATCH v6 1/4] ethdev: separate driver APIs Ferruh Yigit
2018-01-22  0:16           ` [dpdk-dev] [PATCH v6 2/4] ethdev: separate internal structures into own header Ferruh Yigit
2018-01-22  0:16           ` [dpdk-dev] [PATCH v6 3/4] ethdev: reorder inline functions Ferruh Yigit
2018-01-22  0:16           ` [dpdk-dev] [PATCH v6 4/4] ethdev: rename function parameter for consistency Ferruh Yigit
2018-01-22  0:51           ` [dpdk-dev] [PATCH v6 1/4] ethdev: separate driver APIs Thomas Monjalon
2018-03-09 11:27     ` [dpdk-dev] [PATCH v4] ethdev: fix port id storage Ferruh Yigit
2018-03-09 12:58       ` Thomas Monjalon
2018-03-26 20:25         ` Ferruh Yigit

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=20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=nhorman@tuxdriver.com \
    --cc=reshma.pattan@intel.com \
    --cc=thomas@monjalon.net \
    /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).