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 96F58A0542; Thu, 13 Feb 2020 10:27:58 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 32ECD2BE9; Thu, 13 Feb 2020 10:27:57 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id AE7FD1B53; Thu, 13 Feb 2020 10:27:54 +0100 (CET) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2020 01:27:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,436,1574150400"; d="scan'208";a="227177328" Received: from yexl-server.sh.intel.com (HELO localhost) ([10.67.117.17]) by orsmga008.jf.intel.com with ESMTP; 13 Feb 2020 01:27:52 -0800 Date: Thu, 13 Feb 2020 17:26:30 +0800 From: Ye Xiaolong To: Ciara Loftus Cc: dev@dpdk.org, stable@dpdk.org Message-ID: <20200213092630.GR80720@intel.com> References: <20200213084914.54755-1-ciara.loftus@intel.com> <20200213084914.54755-4-ciara.loftus@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200213084914.54755-4-ciara.loftus@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [dpdk-dev] [PATCH v4 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" On 02/13, 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 = 256) and DPDK (frame headroom >= 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 a0edfc3cd3..06124ba789 100644 >--- a/drivers/net/af_xdp/rte_eth_af_xdp.c >+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c >@@ -58,13 +58,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 >@@ -601,7 +594,14 @@ eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) > dev_info->max_tx_queues = internals->queue_cnt; > > dev_info->min_mtu = RTE_ETHER_MIN_MTU; >- dev_info->max_mtu = ETH_AF_XDP_FRAME_SIZE - ETH_AF_XDP_DATA_HEADROOM; >+#if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG) >+ dev_info->max_mtu = getpagesize() - >+ sizeof(struct rte_mempool_objhdr) - >+ sizeof(struct rte_mbuf) - >+ RTE_PKTMBUF_HEADROOM - XDP_PACKET_HEADROOM; >+#else >+ dev_info->max_mtu = ETH_AF_XDP_FRAME_SIZE - XDP_PACKET_HEADROOM; >+#endif > > dev_info->default_rxportconf.nb_queues = 1; > dev_info->default_txportconf.nb_queues = 1; >@@ -803,7 +803,7 @@ xsk_umem_info *xdp_umem_configure(struct pmd_internals *internals, > .fill_size = ETH_AF_XDP_DFLT_NUM_DESCS, > .comp_size = ETH_AF_XDP_DFLT_NUM_DESCS, > .frame_size = ETH_AF_XDP_FRAME_SIZE, >- .frame_headroom = ETH_AF_XDP_DATA_HEADROOM }; >+ .frame_headroom = 0 }; > char ring_name[RTE_RING_NAMESIZE]; > char mz_name[RTE_MEMZONE_NAMESIZE]; > int ret; >@@ -828,8 +828,7 @@ xsk_umem_info *xdp_umem_configure(struct pmd_internals *internals, > > for (i = 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); >@@ -938,7 +937,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, > /* Now get the space available for data in the mbuf */ > buf_size = rte_pktmbuf_data_room_size(mb_pool) - > RTE_PKTMBUF_HEADROOM; >- data_size = ETH_AF_XDP_FRAME_SIZE - ETH_AF_XDP_DATA_HEADROOM; >+ data_size = 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 > Reviewed-by: Xiaolong Ye