From patchwork Fri Nov 10 08:19:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "lihuisong (C)" X-Patchwork-Id: 134081 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E9832432F0; Fri, 10 Nov 2023 09:19:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1987642DD3; Fri, 10 Nov 2023 09:19:19 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 4D3564026D for ; Fri, 10 Nov 2023 09:19:14 +0100 (CET) Received: from kwepemm000004.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4SRWtn5MzKzWh1L; Fri, 10 Nov 2023 16:18:57 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by kwepemm000004.china.huawei.com (7.193.23.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Fri, 10 Nov 2023 16:19:12 +0800 From: Huisong Li To: , , Aman Singh , Yuying Zhang , Shahaf Shuler , Wenzhuo Lu CC: , , Subject: [PATCH v1 3/3] app/testpmd: fix unnecessary change when set tunnel TSO Date: Fri, 10 Nov 2023 16:19:25 +0800 Message-ID: <20231110081925.14142-4-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20231110081925.14142-1-lihuisong@huawei.com> References: <20231110081925.14142-1-lihuisong@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm000004.china.huawei.com (7.193.23.18) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Currently, there are two conditions to set tunnel TSO, like "parse tunnel" and "outer IP checksum". If these conditions are not satisfied, testpmd should not change their configuration, like tx_offloads on port and per queue, and no need to request "reconfig device". Fixes: 597f9fafe13b ("app/testpmd: convert to new Tx offloads API") Cc: stable@dpdk.org Signed-off-by: Huisong Li --- app/test-pmd/cmdline.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index d3243d016b..33e66d1d93 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -5093,17 +5093,6 @@ cmd_tunnel_tso_set_parsed(void *parsed_result, res->port_id); return; } - check_tunnel_tso_nic_support(res->port_id, dev_info.tx_offload_capa); - } - - if (ports[res->port_id].tunnel_tso_segsz == 0) { - ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso; - printf("TSO for tunneled packets is disabled\n"); - } else { - ports[res->port_id].dev_conf.txmode.offloads |= - (all_tunnel_tso & dev_info.tx_offload_capa); - printf("TSO segment size for tunneled packets is %d\n", - ports[res->port_id].tunnel_tso_segsz); /* Below conditions are needed to make it work: * (1) tunnel TSO is supported by the NIC; @@ -5116,14 +5105,29 @@ cmd_tunnel_tso_set_parsed(void *parsed_result, * is not necessary for IPv6 tunneled pkts because there's no * checksum in IP header anymore. */ - - if (!ports[res->port_id].parse_tunnel) + if (!ports[res->port_id].parse_tunnel) { fprintf(stderr, - "Warning: csum parse_tunnel must be set so that tunneled packets are recognized\n"); + "Error: csum parse_tunnel must be set so that tunneled packets are recognized\n"); + return; + } if (!(ports[res->port_id].dev_conf.txmode.offloads & - RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)) + RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)) { fprintf(stderr, - "Warning: csum set outer-ip must be set to hw if outer L3 is IPv4; not necessary for IPv6\n"); + "Error: csum set outer-ip must be set to hw if outer L3 is IPv4; not necessary for IPv6\n"); + return; + } + + check_tunnel_tso_nic_support(res->port_id, dev_info.tx_offload_capa); + } + + if (ports[res->port_id].tunnel_tso_segsz == 0) { + ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso; + printf("TSO for tunneled packets is disabled\n"); + } else { + ports[res->port_id].dev_conf.txmode.offloads |= + (all_tunnel_tso & dev_info.tx_offload_capa); + printf("TSO segment size for tunneled packets is %d\n", + ports[res->port_id].tunnel_tso_segsz); } cmd_config_queue_tx_offloads(&ports[res->port_id]);