From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Richardson Subject: Re: [PATCH v5] ethdev: return named opaque type instead of void pointer Date: Fri, 23 Mar 2018 17:00:34 +0000 Message-ID: <20180323170034.GA8888@bricha3-MOBL.ger.corp.intel.com> References: <20180309112531.292163-1-ferruh.yigit@intel.com> <20180320163404.7780-1-ferruh.yigit@intel.com> <20180321130401.GA3225@hmswarspite.think-freely.org> 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: Neil Horman Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 8C8445F4D for ; Fri, 23 Mar 2018 18:00:40 +0100 (CET) Content-Disposition: inline In-Reply-To: <20180321130401.GA3225@hmswarspite.think-freely.org> 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 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).