From: Huisong Li <lihuisong@huawei.com>
To: <dev@dpdk.org>, <ferruh.yigit@amd.com>,
Aman Singh <aman.deep.singh@intel.com>,
Yuying Zhang <yuying.zhang@intel.com>,
Wenzhuo Lu <wenzhuo.lu@intel.com>,
Shahaf Shuler <shahafs@nvidia.com>
Cc: <andrew.rybchenko@oktetlabs.ru>, <liuyonglong@huawei.com>,
<lihuisong@huawei.com>
Subject: [PATCH v2 2/3] app/testpmd: add the explicit check for tunnel TSO offload
Date: Sat, 11 Nov 2023 12:59:42 +0800 [thread overview]
Message-ID: <20231111045944.46378-3-lihuisong@huawei.com> (raw)
In-Reply-To: <20231111045944.46378-1-lihuisong@huawei.com>
If port don't support TSO of tunnel packets, tell user in advance and
no need to change other configuration of this port in case of fault spread.
In addition, if some tunnel offloads don't support, which is not an error
case, the log about this shouldn't be to stderr.
Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
app/test-pmd/cmdline.c | 55 ++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 31 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 25462bdbfc..7a85cb0024 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -5039,28 +5039,22 @@ static void
check_tunnel_tso_nic_support(portid_t port_id, uint64_t tx_offload_capa)
{
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO))
- fprintf(stderr,
- "Warning: VXLAN TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: VXLAN TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO))
- fprintf(stderr,
- "Warning: GRE TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: GRE TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO))
- fprintf(stderr,
- "Warning: IPIP TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: IPIP TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO))
- fprintf(stderr,
- "Warning: GENEVE TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: GENEVE TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_IP_TNL_TSO))
- fprintf(stderr,
- "Warning: IP TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: IP TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO))
- fprintf(stderr,
- "Warning: UDP TUNNEL TSO not supported therefore not enabled for port %d\n",
+ printf("Warning: UDP TUNNEL TSO not supported therefore not enabled for port %d\n",
port_id);
}
@@ -5071,6 +5065,12 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
{
struct cmd_tunnel_tso_set_result *res = parsed_result;
struct rte_eth_dev_info dev_info;
+ uint64_t all_tunnel_tso = RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
+ RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
+ RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
+ RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
+ RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
+ RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO;
int ret;
if (port_id_is_invalid(res->port_id, ENABLED_WARN))
@@ -5083,30 +5083,23 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
if (!strcmp(res->mode, "set"))
ports[res->port_id].tunnel_tso_segsz = res->tso_segsz;
- ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
- if (ret != 0)
- 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 &=
- ~(RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO);
+ ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso;
printf("TSO for tunneled packets is disabled\n");
} else {
- uint64_t tso_offloads = (RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
- RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO);
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
+
+ if ((all_tunnel_tso & dev_info.tx_offload_capa) == 0) {
+ fprintf(stderr, "Error: port=%u don't support tunnel TSO offloads.\n",
+ res->port_id);
+ return;
+ }
+ check_tunnel_tso_nic_support(res->port_id, dev_info.tx_offload_capa);
ports[res->port_id].dev_conf.txmode.offloads |=
- (tso_offloads & dev_info.tx_offload_capa);
+ (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);
--
2.33.0
next prev parent reply other threads:[~2023-11-11 4:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-10 8:19 [PATCH v1 0/3] app/testpmd: fix the command to set tunnel TSO Huisong Li
2023-11-10 8:19 ` [PATCH v1 1/3] app/testpmd: fix random value " Huisong Li
2023-11-10 11:42 ` Ivan Malov
2023-11-11 1:17 ` lihuisong (C)
2023-11-11 3:22 ` Ferruh Yigit
2023-11-10 8:19 ` [PATCH v1 2/3] app/testpmd: add the explicit check for tunnel TSO offload Huisong Li
2023-11-11 3:30 ` Ferruh Yigit
2023-11-11 4:27 ` lihuisong (C)
2023-11-10 8:19 ` [PATCH v1 3/3] app/testpmd: fix unnecessary change when set tunnel TSO Huisong Li
2023-11-11 3:37 ` Ferruh Yigit
2023-11-11 4:28 ` lihuisong (C)
2023-11-11 4:59 ` [PATCH v2 0/3] app/testpmd: fix the command to " Huisong Li
2023-11-11 4:59 ` [PATCH v2 1/3] app/testpmd: fix random value " Huisong Li
2023-11-11 4:59 ` Huisong Li [this message]
2023-11-11 4:59 ` [PATCH v2 3/3] app/testpmd: fix unnecessary change when " Huisong Li
2023-11-11 5:59 ` [PATCH v2 0/3] app/testpmd: fix the command to " Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231111045944.46378-3-lihuisong@huawei.com \
--to=lihuisong@huawei.com \
--cc=aman.deep.singh@intel.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=liuyonglong@huawei.com \
--cc=shahafs@nvidia.com \
--cc=wenzhuo.lu@intel.com \
--cc=yuying.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).