From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id EDE3A2A07 for ; Tue, 25 Oct 2016 15:15:10 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP; 25 Oct 2016 06:15:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,545,1473145200"; d="scan'208";a="777397736" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.210.150]) by FMSMGA003.fm.intel.com with SMTP; 25 Oct 2016 06:15:07 -0700 Received: by (sSMTP sendmail emulation); Tue, 25 Oct 2016 14:15:07 +0100 Date: Tue, 25 Oct 2016 14:15:07 +0100 From: Bruce Richardson To: Olivier Matz Cc: Morten =?iso-8859-1?Q?Br=F8rup?= , "Ananyev, Konstantin" , "Wiles, Keith" , dev@dpdk.org Message-ID: <20161025131506.GA60208@bricha3-MOBL3.ger.corp.intel.com> References: <98CBD80474FA8B44BF855DF32C47DC359EA8B1@smartserver.smartshare.dk> <7910CF2F-7087-4307-A9AC-DE0287104185@intel.com> <20161024162538.GA34988@bricha3-MOBL3.ger.corp.intel.com> <98CBD80474FA8B44BF855DF32C47DC359EA8B2@smartserver.smartshare.dk> <20161025085353.GA33668@bricha3-MOBL3.ger.corp.intel.com> <2601191342CEEE43887BDE71AB9772583F0CC6A7@irsmsx105.ger.corp.intel.com> <98CBD80474FA8B44BF855DF32C47DC359EA8B8@smartserver.smartshare.dk> <39b70924-0e66-478c-36ea-dd18d27ed8a6@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <39b70924-0e66-478c-36ea-dd18d27ed8a6@6wind.com> Organization: Intel Research and =?iso-8859-1?Q?De=ACvel?= =?iso-8859-1?Q?opment?= Ireland Ltd. User-Agent: Mutt/1.7.1 (2016-10-04) Subject: Re: [dpdk-dev] mbuf changes 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, 25 Oct 2016 13:15:11 -0000 On Tue, Oct 25, 2016 at 03:00:39PM +0200, Olivier Matz wrote: > Hi, > > On 10/25/2016 12:22 PM, Morten Brørup wrote: > > Comments inline (at the end). > > > >> -----Original Message----- > >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ananyev, > >> Konstantin > >> Sent: Tuesday, October 25, 2016 12:03 PM > >> To: Richardson, Bruce; Morten Brørup > >> Cc: Wiles, Keith; dev@dpdk.org; Olivier Matz > >> Subject: Re: [dpdk-dev] mbuf changes > >> > >> Hi everyone, > >> > >>> -----Original Message----- > >>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson > >>> Sent: Tuesday, October 25, 2016 9:54 AM > >>> To: Morten Brørup > >>> Cc: Wiles, Keith ; dev@dpdk.org; Olivier Matz > >>> > >>> Subject: Re: [dpdk-dev] mbuf changes > >>> > >>> On Mon, Oct 24, 2016 at 11:47:16PM +0200, Morten Brørup wrote: > >>>> Comments inline. > >>>> > >>>> Med venlig hilsen / kind regards > >>>> - Morten Brørup > >>>> > >>>>> -----Original Message----- > >>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce > >>>>> Richardson > >>>>> Sent: Monday, October 24, 2016 6:26 PM > >>>>> To: Wiles, Keith > >>>>> Cc: Morten Brørup; dev@dpdk.org; Olivier Matz > >>>>> Subject: Re: [dpdk-dev] mbuf changes > >>>>> > >>>>> On Mon, Oct 24, 2016 at 04:11:33PM +0000, Wiles, Keith wrote: > >>>>>> > >>>>>>> On Oct 24, 2016, at 10:49 AM, Morten Brørup > >>>>>>> > >>>>> wrote: > >>>>>>> > >>>>>>> 2. > >>>>>>> > >>>>>>> There seemed to be consensus that the size of m->refcnt > >> should > >>>>>>> match > >>>>> the size of m->port because a packet could be duplicated on all > >>>>> physical ports for L3 multicast and L2 flooding. > >>>>>>> > >>>>>>> Furthermore, although a single physical machine (i.e. a > >> single > >>>>>>> server) > >>>>> with 255 physical ports probably doesn’t exist, it might contain > >>>>> more than > >>>>> 255 virtual machines with a virtual port each, so it makes sense > >>>>> extending these mbuf fields from 8 to 16 bits. > >>>>>> > >>>>>> I thought we also talked about removing the m->port from the > >>>>>> mbuf as it > >>>>> is not really needed. > >>>>>> > >>>>> Yes, this was mentioned, and also the option of moving the port > >>>>> value to the second cacheline, but it appears that NXP are using > >>>>> the port value in their NIC drivers for passing in metadata, so > >>>>> we'd need their agreement on any move (or removal). > >>>>> > >>>> If a single driver instance services multiple ports, so the ports > >>>> are not polled individually, the m->port member will be required to > >>>> identify > >>> the port. In that case, it might also used elsewhere in the ingress > >> path, and thus appropriate having in the first cache line. > >> > >> Ok, but these days most of devices have multiple rx queues. > >> So identify the RX source properly you need not only port, but > >> port+queue (at least 3 bytes). > >> But I suppose better to wait for NXP input here. > >> > >>> So yes, this needs > >>> further discussion with NXP. > > > > It seems that this concept might be somewhat similar to the Flow Director information, which already has plenty of bits in the first cache line. You should consider if this can be somehow folded into the m->hash union. > > > I'll tend to agree with Morten. > > First, I think that having more than 255 virtual links is possible, > so increasing the port size to 16 bits is not a bad idea. > > I think the port information is more useful for a network stack > than the queue_id, but it may not be the case for all applications. > On the other hand, the queue_id (or something else providing the same > level of information) could led in the flow director structure. > > Now, the question is: do we really need the port to be inside the mbuf? > Indeed, the application can already associate a bulk of packet with a > port id. > > The reason why I'll prefer to keep it is because I'm pretty sure that > some applications use it. At least in the examples/ directory, we can > find distributor, dpdk_qat, ipv4_multicast, load_balancer, > packet_ordering. I did not check these apps in detail, but it makes me > feel that other external applications could make use of the port field. > Yes, judging from the reaction at Userspace and here on list, it appears that port needs to be kept in the mbuf, and since it's present it should be filled in by the drivers on RX, so it needs to stay where it is, I think. /Bruce