From mboxrd@z Thu Jan 1 00:00:00 1970 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) Received: from cpe-2606-a000-111b-40b7-215-ff-fecc-4872.dyn6.twc.com ([2606:a000:111b:40b7:215:ff:fecc:4872] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1ezYcF-00066s-NG; Fri, 23 Mar 2018 22:09:10 -0400 Date: Fri, 23 Mar 2018 22:08:32 -0400 From: Neil Horman To: Bruce Richardson Cc: Ferruh Yigit , John McNamara , Marko Kovacevic , Thomas Monjalon , Reshma Pattan , dev@dpdk.org 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 Content-Disposition: inline In-Reply-To: <20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com> User-Agent: Mutt/1.9.2 (2017-12-15) X-Spam-Score: -2.9 (--) X-Spam-Status: No Subject: Re: [dpdk-dev] [PATCH v5] ethdev: return named opaque type instead of void pointer X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Mar 2018 02:09:20 -0000 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