From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8B95EA0542; Thu, 13 Feb 2020 09:43:17 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 77C301DB9; Thu, 13 Feb 2020 09:43:16 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 68D43F72; Thu, 13 Feb 2020 09:43:13 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2020 00:43:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,436,1574150400"; d="scan'208";a="222578198" Received: from irsmsx101.ger.corp.intel.com ([163.33.3.153]) by orsmga007.jf.intel.com with ESMTP; 13 Feb 2020 00:43:11 -0800 Received: from irsmsx106.ger.corp.intel.com ([169.254.8.31]) by IRSMSX101.ger.corp.intel.com ([169.254.1.218]) with mapi id 14.03.0439.000; Thu, 13 Feb 2020 08:43:09 +0000 From: "Loftus, Ciara" To: "Ye, Xiaolong" CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v3 3/3] net/af_xdp: fix maximum MTU value Thread-Index: AQHV4Aa7WIsg05mXMkKpFqi4E4WuGqgYdPqAgABeCVA= Date: Thu, 13 Feb 2020 08:43:08 +0000 Message-ID: <74F120C019F4A64C9B78E802F6AD4CC27932B471@IRSMSX106.ger.corp.intel.com> References: <20200210114009.49590-1-ciara.loftus@intel.com> <20200210114009.49590-4-ciara.loftus@intel.com> <20200213030559.GO80720@intel.com> In-Reply-To: <20200213030559.GO80720@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action 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 v3 3/3] net/af_xdp: fix maximum MTU value 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > Subject: Re: [dpdk-dev] [PATCH v3 3/3] net/af_xdp: fix maximum MTU value >=20 > On 02/10, Ciara Loftus wrote: > >The maximum MTU for af_xdp zero copy is equal to the page size less the > >frame overhead introduced by AF_XDP (XDP HR =3D 256) and DPDK (frame > headroom > >=3D 320). The patch updates this value to reflect this. > > > >This change also makes it possible to remove unneeded constants for both > >zero-copy and copy mode. > > > >Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks") > >Cc: stable@dpdk.org > > > >Signed-off-by: Ciara Loftus > >--- > > drivers/net/af_xdp/rte_eth_af_xdp.c | 23 +++++++++++------------ > > 1 file changed, 11 insertions(+), 12 deletions(-) > > > >diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c > b/drivers/net/af_xdp/rte_eth_af_xdp.c > >index 1e98cd44f..75f037c3e 100644 > >--- a/drivers/net/af_xdp/rte_eth_af_xdp.c > >+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c > >@@ -59,13 +59,6 @@ static int af_xdp_logtype; > > > > #define ETH_AF_XDP_FRAME_SIZE 2048 > > #define ETH_AF_XDP_NUM_BUFFERS 4096 > >-#ifdef XDP_UMEM_UNALIGNED_CHUNK_FLAG > >-#define ETH_AF_XDP_MBUF_OVERHEAD 128 /* sizeof(struct > rte_mbuf) */ > >-#define ETH_AF_XDP_DATA_HEADROOM \ > >- (ETH_AF_XDP_MBUF_OVERHEAD + RTE_PKTMBUF_HEADROOM) > >-#else > >-#define ETH_AF_XDP_DATA_HEADROOM 0 > >-#endif > > #define ETH_AF_XDP_DFLT_NUM_DESCS > XSK_RING_CONS__DEFAULT_NUM_DESCS > > #define ETH_AF_XDP_DFLT_START_QUEUE_IDX 0 > > #define ETH_AF_XDP_DFLT_QUEUE_COUNT 1 > >@@ -602,7 +595,14 @@ eth_dev_info(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > > dev_info->max_tx_queues =3D internals->queue_cnt; > > > > dev_info->min_mtu =3D RTE_ETHER_MIN_MTU; > >- dev_info->max_mtu =3D ETH_AF_XDP_FRAME_SIZE - > ETH_AF_XDP_DATA_HEADROOM; > >+#if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG) > >+ dev_info->max_mtu =3D getpagesize() - > >+ sizeof(struct rte_mempool_objhdr) - > >+ sizeof(struct rte_mbuf) - > >+ RTE_PKTMBUF_HEADROOM - > XDP_PACKET_HEADROOM; > >+#else > >+ dev_info->max_mtu =3D ETH_AF_XDP_FRAME_SIZE; >=20 > Do we need to subtract XDP_PACKET_HEADROOM for copy mode as well? Good catch. I'll add this and spin a v4. Thanks for the reviews. Ciara >=20 > Thanks, > Xiaolong >=20 > >+#endif > > > > dev_info->default_rxportconf.nb_queues =3D 1; > > dev_info->default_txportconf.nb_queues =3D 1; > >@@ -804,7 +804,7 @@ xsk_umem_info *xdp_umem_configure(struct > pmd_internals *internals, > > .fill_size =3D ETH_AF_XDP_DFLT_NUM_DESCS, > > .comp_size =3D ETH_AF_XDP_DFLT_NUM_DESCS, > > .frame_size =3D ETH_AF_XDP_FRAME_SIZE, > >- .frame_headroom =3D ETH_AF_XDP_DATA_HEADROOM }; > >+ .frame_headroom =3D 0 }; > > char ring_name[RTE_RING_NAMESIZE]; > > char mz_name[RTE_MEMZONE_NAMESIZE]; > > int ret; > >@@ -829,8 +829,7 @@ xsk_umem_info *xdp_umem_configure(struct > pmd_internals *internals, > > > > for (i =3D 0; i < ETH_AF_XDP_NUM_BUFFERS; i++) > > rte_ring_enqueue(umem->buf_ring, > >- (void *)(i * ETH_AF_XDP_FRAME_SIZE + > >- ETH_AF_XDP_DATA_HEADROOM)); > >+ (void *)(i * ETH_AF_XDP_FRAME_SIZE)); > > > > snprintf(mz_name, sizeof(mz_name), "af_xdp_umem_%s_%u", > > internals->if_name, rxq->xsk_queue_idx); > >@@ -939,7 +938,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, > > /* Now get the space available for data in the mbuf */ > > buf_size =3D rte_pktmbuf_data_room_size(mb_pool) - > > RTE_PKTMBUF_HEADROOM; > >- data_size =3D ETH_AF_XDP_FRAME_SIZE - > ETH_AF_XDP_DATA_HEADROOM; > >+ data_size =3D ETH_AF_XDP_FRAME_SIZE; > > > > if (data_size > buf_size) { > > AF_XDP_LOG(ERR, "%s: %d bytes will not fit in mbuf (%d > bytes)\n", > >-- > >2.17.1 > >