Sync some bugfix from upstreaming about testpmd and doc, modifies are as follow: - support set RSS hash algorithm - ethdev: add new API to get RSS hash algorithm by name - doc: fix description of RSS features - doc: fix RSS flow description in hns3 guide - doc: update features in hns3 guide - doc: fix hns3 build option about max queue number - app/testpmd: check port and queue Rx/Tx offloads - app/testpmd: fix Tx offload command - app/testpmd: allow offload config for all ports - app/testpmd: fix tunnel TSO configuration - app/testpmd: add explicit check for tunnel TSO - app/testpmd: fix tunnel TSO capability check - app/testpmd: remove useless check in TSO command Signed-off-by: Dengdui Huang <huangdengdui@huawei.com> (cherry picked from commit 7868d4e3ae469277d4b47241e84c77f53e09423b)
96 lines
3.5 KiB
Diff
96 lines
3.5 KiB
Diff
From 0ff1a5865fb7e5f11f174cb0cf10eff3a0a90f25 Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Sat, 11 Nov 2023 12:59:41 +0800
|
|
Subject: [PATCH 399/410] app/testpmd: fix tunnel TSO capability check
|
|
|
|
[ upstream commit 6d4def820aa7d118f1ebdebf7af8ba6299ac20ee ]
|
|
|
|
Currently, testpmd set tunnel TSO offload even if fail to get dev_info.
|
|
In this case, the 'tx_offload_capa' in dev_info is a random value,
|
|
|
|
Fixes: 6f51deb903b2 ("app/testpmd: check status of getting ethdev info")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.com>
|
|
---
|
|
app/test-pmd/cmdline.c | 29 ++++++++++++++---------------
|
|
1 file changed, 14 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
|
|
index 88fd296bbc..9164f02932 100644
|
|
--- a/app/test-pmd/cmdline.c
|
|
+++ b/app/test-pmd/cmdline.c
|
|
@@ -5018,39 +5018,33 @@ struct cmd_tunnel_tso_set_result {
|
|
portid_t port_id;
|
|
};
|
|
|
|
-static struct rte_eth_dev_info
|
|
-check_tunnel_tso_nic_support(portid_t port_id)
|
|
+static void
|
|
+check_tunnel_tso_nic_support(portid_t port_id, uint64_t tx_offload_capa)
|
|
{
|
|
- struct rte_eth_dev_info dev_info;
|
|
-
|
|
- if (eth_dev_info_get_print_err(port_id, &dev_info) != 0)
|
|
- return dev_info;
|
|
-
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IP_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO))
|
|
+ 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",
|
|
port_id);
|
|
- return dev_info;
|
|
}
|
|
|
|
static void
|
|
@@ -5060,6 +5054,7 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
|
|
{
|
|
struct cmd_tunnel_tso_set_result *res = parsed_result;
|
|
struct rte_eth_dev_info dev_info;
|
|
+ int ret;
|
|
|
|
if (port_id_is_invalid(res->port_id, ENABLED_WARN))
|
|
return;
|
|
@@ -5071,7 +5066,11 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
|
|
if (!strcmp(res->mode, "set"))
|
|
ports[res->port_id].tunnel_tso_segsz = res->tso_segsz;
|
|
|
|
- dev_info = check_tunnel_tso_nic_support(res->port_id);
|
|
+ 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 |
|
|
--
|
|
2.33.0
|
|
|