From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 3A6FA2906 for ; Tue, 22 Mar 2016 11:19:46 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 22 Mar 2016 03:19:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,376,1455004800"; d="scan'208";a="916285097" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.220.103]) by orsmga001.jf.intel.com with SMTP; 22 Mar 2016 03:19:43 -0700 Received: by (sSMTP sendmail emulation); Tue, 22 Mar 2016 10:19:42 +0025 Date: Tue, 22 Mar 2016 10:19:42 +0000 From: Bruce Richardson To: "Qiu, Michael" Cc: Kyle Larose , Thomas Monjalon , "Zhang, Helin" , Stephen Hemminger , "dev@dpdk.org" Message-ID: <20160322101941.GB19268@bricha3-MOBL3> References: <20160318101611.2df26ef6@xeon-e3> <10753400.05iPBPOT6f@xps13> <29795767.yLuRT7a5hO@xps13> <20160321145249.GA16732@bricha3-MOBL3> <533710CFB86FA344BFBF2D6802E6028622F70D9D@SHSMSX101.ccr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <533710CFB86FA344BFBF2D6802E6028622F70D9D@SHSMSX101.ccr.corp.intel.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] DPDK and HW offloads X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Mar 2016 10:19:46 -0000 On Tue, Mar 22, 2016 at 05:50:28AM +0000, Qiu, Michael wrote: > On 3/21/2016 11:27 PM, Kyle Larose wrote: > > On Mon, Mar 21, 2016 at 10:52 AM, Bruce Richardson > > wrote: > >> On Sun, Mar 20, 2016 at 08:18:57PM +0100, Thomas Monjalon wrote: > >>> 2016-03-20 14:17, Zhang, Helin: > >>>> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > >>>>> 2016-03-18 10:16, Stephen Hemminger: > >>>>>> Right now, all those offload features are pretty much unusable in a > >>>>>> real product without lots and lots of extra codes and huge bug > >>>>>> surface. It bothers me enough that I would recommend removing much of the > >>>>> filter/offload/ptype stuff from DPDK! > >>>>> > >>>>> One of the biggest challenge is to think about a good filtering API. > >>>>> The offloading has some interaction with the mbuf struct. > >>>>> > >>>>> I would like to suggest rewriting ethdev API by keeping it as is for some time for > >>>>> compatibility while creating a new one. What about the prefix dpdk_netdev_ to > >>>>> progressively replace rte_eth_dev? > >>>> I totally agree with to add new and generic APIs for user applications. But I don't > >>>> think we need to remove all current APIs. Generic APIs may not support all advanced > >>>> hardware features, while specific APIs can. Why not support all? One generic APIs for > >>>> common users, and others APIs for advanced users. > >>> Yes we cannot access to every features of a device through generic API. > >>> Until now we were trying to add an ethdev API for every features even if it > >>> is used by only one driver. > >>> I think we should allow a direct access to the driver by the applications and > >>> work on generic API only for common features. > >> Definite +1. > >> I think that we need to start pushing driver-specific functionality to get exposed > >> via a driver's header files. That allow users who want to extract the max > >> functionality from a particular NIC to do so via those APIs calls, while not > >> polluting the generic ethdev layer. > >> > > What sort of requirements on ABI/API compatibility would this place on > > the drivers? I would hope that it would be treated like any other > > public API within DPDK. I don't think this would be too onerous, but > > it would require that the drivers be designed to deal with it. (I.e. > > don't just expose any old internal driver function). > > Why not to implement one simple API with variable arguments, just like > syscall ioctl() does. And drivers implement it's specific hardware > features with a feature bit param, and other needed variable arguments. > > Thanks, > Michael A very much dislike that idea. * It makes the code much harder to read as you have to closely examine all the parameters to work out what a function call is actually meant to do. * It makes it much harder to see that you have an implicit dependency on a specific device. Having to include a driver specific header file e.g. i40e.h, and call a function named e.g. i40e_do_magic_stuff(), makes it pretty explicit that you have a dependency on i40e-based hardware * It prevents the compiler from doing type-checking on parameters and informing you of little inconsistencies. For all these reasons, I prefer the device-specific functions option. However, at the same time, we also need to ensure we have a reasonable set of generic APIs so that the cases where users are forced to drop down to the lower-level device-specific primitives are reduced. Regards, /Bruce > >> On the other hand, I don't like the idea of dpdk_netdev. I think we can work > >> within the existing rte_eth_dev framework. > >> > >> /Bruce > >> > >