From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Horman Subject: Re: [PATCH v5] ethdev: return named opaque type instead of void pointer Date: Fri, 23 Mar 2018 22:08:32 -0400 Message-ID: <20180324020832.GA28338@neilslaptop.think-freely.org> References: <20180309112531.292163-1-ferruh.yigit@intel.com> <20180320163404.7780-1-ferruh.yigit@intel.com> <20180321130401.GA3225@hmswarspite.think-freely.org> <20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Ferruh Yigit , John McNamara , Marko Kovacevic , Thomas Monjalon , Reshma Pattan , dev@dpdk.org To: Bruce Richardson Return-path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 8B25044CF for ; Sat, 24 Mar 2018 03:09:20 +0100 (CET) Content-Disposition: inline In-Reply-To: <20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Mar 23, 2018 at 05:00:34PM +0000, Bruce Richardson wrote: > 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 > > > --- > > > 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 > > > 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). > I would be 1000% on board with this conversion. Best Neil