From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 07053C7C2 for ; Wed, 29 Apr 2015 12:41:51 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 29 Apr 2015 03:39:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,670,1422950400"; d="scan'208";a="720973203" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga002.jf.intel.com with ESMTP; 29 Apr 2015 03:39:49 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.178]) by IRSMSX106.ger.corp.intel.com ([169.254.8.204]) with mapi id 14.03.0224.002; Wed, 29 Apr 2015 11:39:49 +0100 From: "Ananyev, Konstantin" To: Olivier MATZ , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] test-pmd fix default mbuf size Thread-Index: AQHQgbOhrjMOcP/eHUaxRrvgMhStJJ1jsOKAgAAU03A= Date: Wed, 29 Apr 2015 10:39:48 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258214225EB@irsmsx105.ger.corp.intel.com> References: <1430226150-30057-1-git-send-email-konstantin.ananyev@intel.com> <5540AA67.5050809@6wind.com> In-Reply-To: <5540AA67.5050809@6wind.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] test-pmd fix default mbuf size 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: Wed, 29 Apr 2015 10:41:52 -0000 Hi Olivier, > -----Original Message----- > From: Olivier MATZ [mailto:olivier.matz@6wind.com] > Sent: Wednesday, April 29, 2015 10:55 AM > To: Ananyev, Konstantin; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH] test-pmd fix default mbuf size >=20 > Hi Konstantin, >=20 > On 04/28/2015 03:02 PM, Konstantin Ananyev wrote: > > Latest mbuf changes (priv_size addition and related fixes) > > exposed small problem with testpmd default config: > > testpmd default mbuf size is exaclty 2KB, that causes > > ixgbe PMD to select scattered RX even for configs with 'normal' > > max packet length (max_rx_pkt_len =3D=3D ETHER_MAX_LEN). > > > > Signed-off-by: Konstantin Ananyev > > --- > > app/test-pmd/testpmd.h | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > > index 389fc24..037e7ec 100644 > > --- a/app/test-pmd/testpmd.h > > +++ b/app/test-pmd/testpmd.h > > @@ -48,7 +48,8 @@ > > * Default size of the mbuf data buffer to receive standard 1518-byte > > * Ethernet frames in a mono-segment memory buffer. > > */ > > -#define DEFAULT_MBUF_DATA_SIZE 2048 /**< Default size of mbuf data buf= fer. */ > > +#define DEFAULT_MBUF_DATA_SIZE (2048 + RTE_PKTMBUF_HEADROOM) > > +/**< Default size of mbuf data buffer. */ > > > > /* > > * The maximum number of segments per packet is used when creating > > >=20 > Indeed, this regression is introduced by one of my recent > patch: > http://dpdk.org/browse/dpdk/commit/?id=3Ddfb03bbe2b39156f0e42e7f29e09c1e6= b6def265 >=20 > Before, m->buf_len was initialized to RTE_PKTMBUF_HEADROOM + 2048. > Now it is set to 2048. >=20 > Maybe a line like this should be added in the commit log: > Fixes: dfb03bbe2b ("app/testpmd: use standard functions to initialize > mbufs and mbuf pool") >=20 > Just one question Konstantin: could you just confirm that the > reason of the bug? From what I understand: > - buf_len is 2048 > - the rx data size when receiving a packet is 2048 - hdroom =3D 1920 > - at init, the ixgbe driver configures the hw to set the max rx > data size, but it has to be a power of 2, so 1024 is chosen At ixgbe_dev_rx_init(), we need to setup SRRCTL[rqx_id]. BSIZEPACKET value= : "BSIZEPACKET 4:0 0x2 Receive Buffer Size for Packet Buffer. The value is in 1 KB resolution. Value can be from 1 KB to 16 KB. Default b= uffer size is 2 KB. This field should not be set to 0x0. This field should be greater or = equal to 0x2 in queues where RSC is enabled." As it is it in 1KB units, our 1920 B are rounded down to 1K, and we have to= enable scatter RX mode.=20 As I understand, same story for igb devices. I40e seems doesn't have such limitation. > - then the initialization code check if a packet of ETHER_MAX_LEN > fits in max rx size, and if not, it selects the scatter mode. >=20 > It makes me wondering 2 things: > - should we add a comment in the test-pmd to explain that? (maybe > not, as it is driver-specific, and it is just an optimization) Might be, or probably somewhere to the docs? > - should we check the other examples to see if the same problem > exists? Good point. I did a quick check, and yes it seems few other sample apps are also affect= ed: examples/qos_sched/main.h:#define MBUF_DATA_SIZE (1528 + RTE_PKTMBUF_HEADRO= OM) examples/skeleton/basicfwd.c:#define MBUF_DATA_SIZE (1600 + RTE_PKTMBUF_HEA= DROOM) examples/packet_ordering/main.c:#define MBUF_DATA_SIZE (1600 + RTE_PKTMBUF_= HEADROOM) examples/rxtx_callbacks/main.c:#define MBUF_DATA_SIZE (1600 + RTE_PKTMBUF_H= EADROOM) I suppose, have to make v2 to include all of the above... What probably is more beneficial - inside rte_mbuf.h: #define RTE_MBUF_DEFAULT_DATA_SIZE (2048 + RTE_PKTMBUF_HEADROOM) With some good comments for it, and make all appropriate examples to use it= . Again, then it would appear in the API reference automatically. Konstantin >=20 > If my understanding is correct, > Acked-by: Olivier Matz >=20 > Regards, > Olivier