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 6ED48A09F0; Thu, 17 Dec 2020 10:28:52 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4B4B0CA00; Thu, 17 Dec 2020 10:28:51 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 2FC35C9FC for ; Thu, 17 Dec 2020 10:28:48 +0100 (CET) IronPort-SDR: Ba4pGYzWo9RvaG6qOPJLRkYO2sAofPfC6vD80CCTz14Oz4N3VqoQIh1w4TocRgx8P6wETWxVGW xoI9sk8NfU+w== X-IronPort-AV: E=McAfee;i="6000,8403,9837"; a="172650490" X-IronPort-AV: E=Sophos;i="5.78,426,1599548400"; d="scan'208";a="172650490" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2020 01:28:46 -0800 IronPort-SDR: UIbjj9aXlB19D2Q0+WFoNHnFfIU+C2Bv6XK8FQ9Qh2X97yH9WHOAniTOdnfAU17RccbbnhB2ex 56H4umGFPGXA== X-IronPort-AV: E=Sophos;i="5.78,426,1599548400"; d="scan'208";a="369745979" Received: from intel-npg-odc-srv01.cd.intel.com ([10.240.178.136]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2020 01:28:22 -0800 From: Steve Yang To: dev@dpdk.org Cc: wenzhuo.lu@intel.com, beilei.xing@intel.com, bernard.iremonger@intel.com, asomalap@amd.com, rahul.lakkireddy@chelsio.com, hemant.agrawal@nxp.com, sachin.saxena@oss.nxp.com, jia.guo@intel.com, haiyue.wang@intel.com, g.singh@nxp.com, xuanziyang2@huawei.com, cloud.wangxiaoyun@huawei.com, zhouguoyang@huawei.com, xavier.huwei@huawei.com, humin29@huawei.com, yisen.zhuang@huawei.com, oulijun@huawei.com, jingjing.wu@intel.com, qiming.yang@intel.com, qi.z.zhang@intel.com, rosen.xu@intel.com, sthotton@marvell.com, srinivasan@marvell.com, heinrich.kuhn@netronome.com, hkalra@marvell.com, jerinj@marvell.com, ndabilpuram@marvell.com, kirankumark@marvell.com, rmody@marvell.com, shshaikh@marvell.com, andrew.rybchenko@oktetlabs.ru, mczekaj@marvell.com, thomas@monjalon.net, ferruh.yigit@intel.com, ivan.boule@6wind.com, konstantin.ananyev@intel.com, samuel.gauthier@6wind.com, david.marchand@6wind.com, shahafs@mellanox.com, stephen@networkplumber.org, maxime.coquelin@redhat.com, olivier.matz@6wind.com, lihuisong@huawei.com, shreyansh.jain@nxp.com, wei.dai@intel.com, fengchunsong@huawei.com, chenhao164@huawei.com, tangchengchang@hisilicon.com, helin.zhang@intel.com, yanglong.wu@intel.com, xiaolong.ye@intel.com, ting.xu@intel.com, xiaoyun.li@intel.com, dan.wei@intel.com, andy.pei@intel.com, vattunuru@marvell.com, skori@marvell.com, sony.chacko@qlogic.com, bruce.richardson@intel.com, ivan.malov@oktetlabs.ru, rad@semihalf.com, slawomir.rosek@semihalf.com, kamil.rytarowski@caviumnetworks.com, wei.zhao1@intel.com, junyux.jiang@intel.com, kumaras@chelsio.com, girish.nandibasappa@amd.com, rolf.neugebauer@netronome.com, alejandro.lucero@netronome.com, Steve Yang Date: Thu, 17 Dec 2020 09:22:52 +0000 Message-Id: <20201217092312.27033-3-stevex.yang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201217092312.27033-1-stevex.yang@intel.com> References: <20201209031628.29572-1-stevex.yang@intel.com> <20201217092312.27033-1-stevex.yang@intel.com> Subject: [dpdk-dev] [PATCH v2 02/22] app/testpmd: fix max rx packet length for VLAN packets 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" When the max rx packet length is smaller than the sum of mtu size and ether overhead size, it should be enlarged, otherwise the VLAN packets will be dropped. Removed the rx_offloads assignment for jumbo frame during command line parsing, and set the correct jumbo frame flag if MTU size is larger than the default value 'RTE_ETHER_MTU' within 'init_config()'. Fixes: 384161e00627 ("app/testpmd: adjust on the fly VLAN configuration") Fixes: 35b2d13fd6fd ("net: add rte prefix to ether defines") Fixes: ce17eddefc20 ("ethdev: introduce Rx queue offloads API") Fixes: 150c9ac2df13 ("app/testpmd: update Rx offload after setting MTU") Signed-off-by: Steve Yang --- app/test-pmd/cmdline.c | 6 ------ app/test-pmd/config.c | 2 +- app/test-pmd/parameters.c | 7 ++----- app/test-pmd/testpmd.c | 20 ++++++++++++++++++++ 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 2ccbaa039e..65042fcff5 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1886,7 +1886,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, RTE_ETH_FOREACH_DEV(pid) { struct rte_port *port = &ports[pid]; - uint64_t rx_offloads = port->dev_conf.rxmode.offloads; if (!strcmp(res->name, "max-pkt-len")) { if (res->value < RTE_ETHER_MIN_LEN) { @@ -1898,11 +1897,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, return; port->dev_conf.rxmode.max_rx_pkt_len = res->value; - if (res->value > RTE_ETHER_MAX_LEN) - rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; - else - rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; - port->dev_conf.rxmode.offloads = rx_offloads; } else { printf("Unknown parameter\n"); return; diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 3f6c8642b1..1195f054f3 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1434,7 +1434,7 @@ port_mtu_set(portid_t port_id, uint16_t mtu) * device supports jumbo frame. */ eth_overhead = dev_info.max_rx_pktlen - dev_info.max_mtu; - if (mtu > RTE_ETHER_MAX_LEN - eth_overhead) { + if (mtu > RTE_ETHER_MTU) { rte_port->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; rte_port->dev_conf.rxmode.max_rx_pkt_len = diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 414a0068fb..df5eb10d84 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -834,12 +834,9 @@ launch_args_parse(int argc, char** argv) } if (!strcmp(lgopts[opt_idx].name, "max-pkt-len")) { n = atoi(optarg); - if (n >= RTE_ETHER_MIN_LEN) { + if (n >= RTE_ETHER_MIN_LEN) rx_mode.max_rx_pkt_len = (uint32_t) n; - if (n > RTE_ETHER_MAX_LEN) - rx_offloads |= - DEV_RX_OFFLOAD_JUMBO_FRAME; - } else + else rte_exit(EXIT_FAILURE, "Invalid max-pkt-len=%d - should be > %d\n", n, RTE_ETHER_MIN_LEN); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 33a060dffd..fdb5c3c38b 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1410,6 +1410,7 @@ init_config(void) struct rte_gro_param gro_param; uint32_t gso_types; uint16_t data_size; + uint16_t eth_overhead; bool warning = 0; int k; int ret; @@ -1446,6 +1447,25 @@ init_config(void) rte_exit(EXIT_FAILURE, "rte_eth_dev_info_get() failed\n"); + /* Update the max_rx_pkt_len to have MTU as RTE_ETHER_MTU */ + if (port->dev_info.max_mtu && + port->dev_info.max_mtu != UINT16_MAX && + port->dev_info.max_rx_pktlen && + port->dev_info.max_rx_pktlen > port->dev_info.max_mtu) + eth_overhead = port->dev_info.max_rx_pktlen - + port->dev_info.max_mtu; + else + eth_overhead = + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; + + if (port->dev_conf.rxmode.max_rx_pkt_len <= + (uint32_t)(RTE_ETHER_MTU + eth_overhead)) + port->dev_conf.rxmode.max_rx_pkt_len = + RTE_ETHER_MTU + eth_overhead; + else + port->dev_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_JUMBO_FRAME; + if (!(port->dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)) port->dev_conf.txmode.offloads &= -- 2.17.1