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 A0E0AA0555 for ; Wed, 25 May 2022 18:29:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8FE9842B82; Wed, 25 May 2022 18:29:51 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 059F242B75 for ; Wed, 25 May 2022 18:29:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1653496189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mWOtjqiVZHii+nDeBNpZ00uCo2dJ5YB7DbNbU+ftOkg=; b=YqBm8L5ZHsnC58fgJIIX0zhvGcyyQrhYCIydxt6OVYKi6G6AvtpdH2h1I/Ucuuxc8hFZiH jriYczB20rt2a8Kh6Ccg4+RmuO4lgSvg5H/BhuG+UN5m75DL+RPZBMv5cIZWoBvIFTDj0y ozT9kU3u+Q6Hmo7eSrQ8a15SCa4sdD4= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-654-djeLK9QPPqGHWZUx9SwqfQ-1; Wed, 25 May 2022 12:29:46 -0400 X-MC-Unique: djeLK9QPPqGHWZUx9SwqfQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CB9A629324B4; Wed, 25 May 2022 16:29:37 +0000 (UTC) Received: from rh.Home (unknown [10.39.193.216]) by smtp.corp.redhat.com (Postfix) with ESMTP id 581CC2026D64; Wed, 25 May 2022 16:29:36 +0000 (UTC) From: Kevin Traynor To: Huisong Li Cc: Min Hu , Ferruh Yigit , dpdk stable Subject: patch 'app/testpmd: fix MTU verification' has been queued to stable release 21.11.2 Date: Wed, 25 May 2022 17:28:21 +0100 Message-Id: <20220525162847.711753-29-ktraynor@redhat.com> In-Reply-To: <20220525162847.711753-1-ktraynor@redhat.com> References: <20220525162847.711753-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true 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 Hi, FYI, your patch has been queued to stable release 21.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/30/22. 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/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/caf428f0a08dfc30a815d486366901c063772354 Thanks. Kevin --- >From caf428f0a08dfc30a815d486366901c063772354 Mon Sep 17 00:00:00 2001 From: Huisong Li Date: Wed, 6 Apr 2022 16:45:37 +0800 Subject: [PATCH] app/testpmd: fix MTU verification [ upstream commit f0b3966a5072bd0a6c7f7e8652aef793afa4f4d0 ] The macro RTE_ETHER_MIN_LEN isn't the minimum value of MTU. But testpmd used it when execute 'port config mtu 0 xx' cmd. This patch fixes it. Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length") Signed-off-by: Huisong Li Signed-off-by: Min Hu (Connor) Acked-by: Ferruh Yigit --- app/test-pmd/cmdline.c | 4 --- app/test-pmd/config.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 6f995905f6..0b5bece513 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2046,8 +2046,4 @@ cmd_config_mtu_parsed(void *parsed_result, struct cmd_config_mtu_result *res = parsed_result; - if (res->value < RTE_ETHER_MIN_LEN) { - fprintf(stderr, "mtu cannot be less than %d\n", RTE_ETHER_MIN_LEN); - return; - } port_mtu_set(res->port_id, res->value); } diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 38f268423b..face2f805f 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1254,4 +1254,55 @@ port_reg_set(portid_t port_id, uint32_t reg_off, uint32_t reg_v) } +static uint32_t +eth_dev_get_overhead_len(uint32_t max_rx_pktlen, uint16_t max_mtu) +{ + uint32_t overhead_len; + + if (max_mtu != UINT16_MAX && max_rx_pktlen > max_mtu) + overhead_len = max_rx_pktlen - max_mtu; + else + overhead_len = RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; + + return overhead_len; +} + +static int +eth_dev_validate_mtu(uint16_t port_id, uint16_t mtu) +{ + struct rte_eth_dev_info dev_info; + uint32_t overhead_len; + uint32_t frame_size; + int ret; + + ret = rte_eth_dev_info_get(port_id, &dev_info); + if (ret != 0) + return ret; + + if (mtu < dev_info.min_mtu) { + fprintf(stderr, + "MTU (%u) < device min MTU (%u) for port_id %u\n", + mtu, dev_info.min_mtu, port_id); + return -EINVAL; + } + if (mtu > dev_info.max_mtu) { + fprintf(stderr, + "MTU (%u) > device max MTU (%u) for port_id %u\n", + mtu, dev_info.max_mtu, port_id); + return -EINVAL; + } + + overhead_len = eth_dev_get_overhead_len(dev_info.max_rx_pktlen, + dev_info.max_mtu); + frame_size = mtu + overhead_len; + if (frame_size > dev_info.max_rx_pktlen) { + fprintf(stderr, + "Frame size (%u) > device max frame size (%u) for port_id %u\n", + frame_size, dev_info.max_rx_pktlen, port_id); + return -EINVAL; + } + + return 0; +} + void port_mtu_set(portid_t port_id, uint16_t mtu) @@ -1263,4 +1314,8 @@ port_mtu_set(portid_t port_id, uint16_t mtu) return; + diag = eth_dev_validate_mtu(port_id, mtu); + if (diag != 0) + return; + if (port->need_reconfig == 0) { diag = rte_eth_dev_set_mtu(port_id, mtu); -- 2.34.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-05-25 17:26:59.280555169 +0100 +++ 0029-app-testpmd-fix-MTU-verification.patch 2022-05-25 17:26:58.607828390 +0100 @@ -1 +1 @@ -From f0b3966a5072bd0a6c7f7e8652aef793afa4f4d0 Mon Sep 17 00:00:00 2001 +From caf428f0a08dfc30a815d486366901c063772354 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit f0b3966a5072bd0a6c7f7e8652aef793afa4f4d0 ] + @@ -10 +11,0 @@ -Cc: stable@dpdk.org @@ -21 +22 @@ -index 6ffea8e21a..91e4090582 100644 +index 6f995905f6..0b5bece513 100644 @@ -24 +25 @@ -@@ -2051,8 +2051,4 @@ cmd_config_mtu_parsed(void *parsed_result, +@@ -2046,8 +2046,4 @@ cmd_config_mtu_parsed(void *parsed_result, @@ -34 +35 @@ -index bd689f9f86..1b1e738f83 100644 +index 38f268423b..face2f805f 100644 @@ -37 +38 @@ -@@ -1255,4 +1255,55 @@ port_reg_set(portid_t port_id, uint32_t reg_off, uint32_t reg_v) +@@ -1254,4 +1254,55 @@ port_reg_set(portid_t port_id, uint32_t reg_off, uint32_t reg_v) @@ -93 +94 @@ -@@ -1264,4 +1315,8 @@ port_mtu_set(portid_t port_id, uint16_t mtu) +@@ -1263,4 +1314,8 @@ port_mtu_set(portid_t port_id, uint16_t mtu)