From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 09906A0524 for ; Thu, 4 Feb 2021 12:35:50 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0055824073A; Thu, 4 Feb 2021 12:35:49 +0100 (CET) Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) by mails.dpdk.org (Postfix) with ESMTP id 4F37024073A for ; Thu, 4 Feb 2021 12:35:49 +0100 (CET) Received: from 2.general.paelzer.uk.vpn ([10.172.196.173] helo=localhost.localdomain) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1l7cvN-0005QV-3x; Thu, 04 Feb 2021 11:35:49 +0000 From: Christian Ehrhardt To: Steve Yang Cc: Ferruh Yigit , dpdk stable Date: Thu, 4 Feb 2021 12:28:31 +0100 Message-Id: <20210204112954.2488123-56-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210204112954.2488123-1-christian.ehrhardt@canonical.com> References: <20210204112954.2488123-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'app/testpmd: fix max Rx packet length for VLAN packets' has been queued to stable release 19.11.7 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/06/21. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/cpaelzer/dpdk-stable-queue This queued commit can be viewed at: https://github.com/cpaelzer/dpdk-stable-queue/commit/a709e6b1df9bd90d7fe7a6f75f1448730b268848 Thanks. Christian Ehrhardt --- >From a709e6b1df9bd90d7fe7a6f75f1448730b268848 Mon Sep 17 00:00:00 2001 From: Steve Yang Date: Mon, 18 Jan 2021 07:04:08 +0000 Subject: [PATCH] app/testpmd: fix max Rx packet length for VLAN packets [ upstream commit 761c4d66900fd7db6927f57eb610f543cc0908e4 ] 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 Reviewed-by: Ferruh Yigit --- app/test-pmd/cmdline.c | 6 ------ app/test-pmd/config.c | 2 +- app/test-pmd/parameters.c | 7 ++----- app/test-pmd/testpmd.c | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 9287fa3ea4..7e1ced7c59 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1983,7 +1983,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) { @@ -1995,11 +1994,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 5f8905c06a..e14ff42745 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1287,7 +1287,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 0eb7844783..a1c08a411a 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -884,12 +884,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 8d3b7b2a3b..f93e459ccf 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1301,6 +1301,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; @@ -1337,6 +1338,23 @@ 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 != UINT16_MAX && + 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.30.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-02-04 12:04:30.409753391 +0100 +++ 0056-app-testpmd-fix-max-Rx-packet-length-for-VLAN-packet.patch 2021-02-04 12:04:28.010789709 +0100 @@ -1 +1 @@ -From 761c4d66900fd7db6927f57eb610f543cc0908e4 Mon Sep 17 00:00:00 2001 +From a709e6b1df9bd90d7fe7a6f75f1448730b268848 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 761c4d66900fd7db6927f57eb610f543cc0908e4 ] + @@ -18 +19,0 @@ -Cc: stable@dpdk.org @@ -30 +31 @@ -index 855dbc2dec..89034c8b72 100644 +index 9287fa3ea4..7e1ced7c59 100644 @@ -33 +34 @@ -@@ -1886,7 +1886,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, +@@ -1983,7 +1983,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, @@ -41 +42 @@ -@@ -1898,11 +1897,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, +@@ -1995,11 +1994,6 @@ cmd_config_max_pkt_len_parsed(void *parsed_result, @@ -54 +55 @@ -index a6a5baa4e1..0e2b9f7d3c 100644 +index 5f8905c06a..e14ff42745 100644 @@ -57 +58 @@ -@@ -1434,7 +1434,7 @@ port_mtu_set(portid_t port_id, uint16_t mtu) +@@ -1287,7 +1287,7 @@ port_mtu_set(portid_t port_id, uint16_t mtu) @@ -67 +68 @@ -index 414a0068fb..df5eb10d84 100644 +index 0eb7844783..a1c08a411a 100644 @@ -70 +71 @@ -@@ -834,12 +834,9 @@ launch_args_parse(int argc, char** argv) +@@ -884,12 +884,9 @@ launch_args_parse(int argc, char** argv) @@ -86 +87 @@ -index 2b60f6c5d3..c256e719ae 100644 +index 8d3b7b2a3b..f93e459ccf 100644 @@ -89 +90 @@ -@@ -1410,6 +1410,7 @@ init_config(void) +@@ -1301,6 +1301,7 @@ init_config(void) @@ -97 +98 @@ -@@ -1446,6 +1447,23 @@ init_config(void) +@@ -1337,6 +1338,23 @@ init_config(void)