patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Gregory Etelson <getelson@nvidia.com>
Cc: Huisong Li <lihuisong@huawei.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'app/testpmd: fix MAC header in checksum forward engine' has been queued to stable release 21.11.3
Date: Wed, 23 Nov 2022 18:03:15 +0000	[thread overview]
Message-ID: <20221123180413.733554-2-ktraynor@redhat.com> (raw)
In-Reply-To: <20221123180413.733554-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 21.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/28/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/185674ed26176597c820c136cbb133e9ab477b03

Thanks.

Kevin

---
From 185674ed26176597c820c136cbb133e9ab477b03 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 26 Oct 2022 14:07:20 +0300
Subject: [PATCH] app/testpmd: fix MAC header in checksum forward engine

[ upstream commit 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 ]

MLX5 SR-IOV Tx engine will not transmit Ethernet frame
if destination MAC address matched local port address. The frame ether
looped-back to Rx or dropped, depending on the port configuration.

Application running over MLX5 SR-IOV port cannot transmit packet
polled from Rx queue as is. The packet Ethernet destination address
must be changed.

Add new run-time configuration parameter to the `csum` forwarding
engine to control MAC addresses configuration:

testpmd> csum mac-swap on|off <port_id>

`mac-swap on`  replace MAC addresses.
`mac-swap off` keep Ethernet header unchanged.

Fixes: 9b4ea7ae77fa ("app/testpmd: revert MAC update in checksum forwarding")

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Huisong Li <lihuisong@huawei.com>
---
 app/test-pmd/cmdline.c  | 50 +++++++++++++++++++++++++++++++++++++++++
 app/test-pmd/csumonly.c |  6 +++++
 app/test-pmd/testpmd.c  |  5 +++--
 app/test-pmd/testpmd.h  |  3 ++-
 4 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 82386c02ee..2e8fec3552 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -4898,4 +4898,53 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
 };
 
+struct cmd_csum_mac_swap_result {
+	cmdline_fixed_string_t csum;
+	cmdline_fixed_string_t parse;
+	cmdline_fixed_string_t onoff;
+	portid_t port_id;
+};
+
+static void
+cmd_csum_mac_swap_parsed(void *parsed_result,
+		       __rte_unused struct cmdline *cl,
+		       __rte_unused void *data)
+{
+	struct cmd_csum_mac_swap_result *res = parsed_result;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+	if (strcmp(res->onoff, "on") == 0)
+		ports[res->port_id].fwd_mac_swap = 1;
+	else
+		ports[res->port_id].fwd_mac_swap = 0;
+}
+
+static cmdline_parse_token_string_t cmd_csum_mac_swap_csum =
+	TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result,
+				 csum, "csum");
+static cmdline_parse_token_string_t cmd_csum_mac_swap_parse =
+	TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result,
+				 parse, "mac-swap");
+static cmdline_parse_token_string_t cmd_csum_mac_swap_onoff =
+	TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result,
+				 onoff, "on#off");
+static cmdline_parse_token_num_t cmd_csum_mac_swap_portid =
+	TOKEN_NUM_INITIALIZER(struct cmd_csum_mac_swap_result,
+			      port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_csum_mac_swap = {
+	.f = cmd_csum_mac_swap_parsed,
+	.data = NULL,
+	.help_str = "csum mac-swap on|off <port_id>: "
+		    "Enable/Disable forward mac address swap",
+	.tokens = {
+		(void *)&cmd_csum_mac_swap_csum,
+		(void *)&cmd_csum_mac_swap_parse,
+		(void *)&cmd_csum_mac_swap_onoff,
+		(void *)&cmd_csum_mac_swap_portid,
+		NULL,
+	},
+};
+
 /* *** ENABLE HARDWARE SEGMENTATION IN TX NON-TUNNELED PACKETS *** */
 struct cmd_tso_set_result {
@@ -17762,4 +17811,5 @@ cmdline_parse_ctx_t main_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_csum_show,
 	(cmdline_parse_inst_t *)&cmd_csum_tunnel,
+	(cmdline_parse_inst_t *)&cmd_csum_mac_swap,
 	(cmdline_parse_inst_t *)&cmd_tso_set,
 	(cmdline_parse_inst_t *)&cmd_tso_show,
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index d661e21e02..0a72690c37 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -907,4 +907,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
 
 		eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
+		if (ports[fs->tx_port].fwd_mac_swap) {
+			rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr],
+					    &eth_hdr->dst_addr);
+			rte_ether_addr_copy(&ports[fs->tx_port].eth_addr,
+					    &eth_hdr->src_addr);
+		}
 		parse_ethernet(eth_hdr, &info);
 		l3_hdr = (char *)eth_hdr + info.l2_len;
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 3a8eef48e4..b8b311f982 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -4198,8 +4198,9 @@ init_port(void)
 				RTE_MAX_ETHPORTS);
 	}
-	for (i = 0; i < RTE_MAX_ETHPORTS; i++)
+	for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
+		ports[i].fwd_mac_swap = 1;
 		ports[i].xstats_info.allocated = false;
-	for (i = 0; i < RTE_MAX_ETHPORTS; i++)
 		LIST_INIT(&ports[i].flow_tunnel_list);
+	}
 	/* Initialize ports NUMA structures */
 	memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 8f3a89e9be..e53320e630 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -262,5 +262,6 @@ struct rte_port {
 	uint32_t                mc_addr_nb; /**< nb. of addr. in mc_addr_pool */
 	uint8_t                 slave_flag : 1, /**< bonding slave port */
-				bond_flag : 1; /**< port is bond device */
+				bond_flag : 1, /**< port is bond device */
+				fwd_mac_swap : 1; /**< swap packet MAC before forward */
 	struct port_flow        *flow_list; /**< Associated flows. */
 	struct port_indirect_action *actions_list;
-- 
2.38.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-23 09:55:57.167794705 +0000
+++ 0002-app-testpmd-fix-MAC-header-in-checksum-forward-engin.patch	2022-11-23 09:55:57.003149140 +0000
@@ -1 +1 @@
-From 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 Mon Sep 17 00:00:00 2001
+From 185674ed26176597c820c136cbb133e9ab477b03 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 8dc60e9388..3fbcb6ca8f 100644
+index 82386c02ee..2e8fec3552 100644
@@ -38 +39 @@
-@@ -4794,4 +4794,53 @@ static cmdline_parse_inst_t cmd_csum_tunnel = {
+@@ -4898,4 +4898,53 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
@@ -92 +93 @@
-@@ -12629,4 +12678,5 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
+@@ -17762,4 +17811,5 @@ cmdline_parse_ctx_t main_ctx[] = {
@@ -99 +100 @@
-index 144f28819c..1c24598515 100644
+index d661e21e02..0a72690c37 100644
@@ -102 +103 @@
-@@ -916,4 +916,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
+@@ -907,4 +907,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
@@ -114 +115 @@
-index aa7ea29f15..bf589c4e8d 100644
+index 3a8eef48e4..b8b311f982 100644
@@ -117 +118 @@
-@@ -4215,8 +4215,9 @@ init_port(void)
+@@ -4198,8 +4198,9 @@ init_port(void)
@@ -130 +131 @@
-index 349f02e18a..93fdb9d331 100644
+index 8f3a89e9be..e53320e630 100644
@@ -133,2 +134,2 @@
-@@ -317,5 +317,6 @@ struct rte_port {
- 	uint32_t                queue_sz; /**< size of a queue for flow rules */
+@@ -262,5 +262,6 @@ struct rte_port {
+ 	uint32_t                mc_addr_nb; /**< nb. of addr. in mc_addr_pool */
@@ -139,2 +140,2 @@
- 	struct port_template    *pattern_templ_list; /**< Pattern templates. */
- 	struct port_template    *actions_templ_list; /**< Actions templates. */
+ 	struct port_flow        *flow_list; /**< Associated flows. */
+ 	struct port_indirect_action *actions_list;


  reply	other threads:[~2022-11-23 18:04 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 18:03 patch 'net/bonding: fix slave device Rx/Tx offload configuration' " Kevin Traynor
2022-11-23 18:03 ` Kevin Traynor [this message]
2022-11-23 18:03 ` patch 'net/bonding: fix dropping valid MAC packets' " Kevin Traynor
2022-11-23 18:03 ` patch 'app/testpmd: make quit flag volatile' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/bonding: fix mbuf fast free handling' " Kevin Traynor
2022-11-23 18:03 ` patch 'eal: fix doxygen comments for UUID' " Kevin Traynor
2022-11-23 18:03 ` patch 'power: fix some doxygen comments' " Kevin Traynor
2022-11-23 18:03 ` patch 'hash: fix RCU configuration memory leak' " Kevin Traynor
2022-11-23 18:03 ` patch 'test/hash: remove dead code in extendable bucket test' " Kevin Traynor
2022-11-23 18:03 ` patch 'test/hash: fix bulk lookup check' " Kevin Traynor
2022-11-23 18:03 ` patch 'bus/auxiliary: prevent device from being probed again' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix action flag data type' " Kevin Traynor
2022-11-23 18:03 ` patch 'common/mlx5: fix shared mempool subscription' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix shared Rx queue config reuse' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix hairpin split with set VLAN VID action' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix first segment inline length' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix indexed pool local cache crash' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix port initialization with small LRO' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix drop action validation' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice/base: fix duplicate flow rules' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/iavf: fix VLAN offload' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/i40e: fix pctype configuration for X722' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix scalar Rx path segment' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix scalar Tx " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix interrupt handler unregister' " Kevin Traynor
2022-11-23 18:03 ` patch 'ci: bump versions of actions in GHA' " Kevin Traynor
2022-11-23 18:03 ` patch 'ci: update to new API for step outputs " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix event timer adapter guide' " Kevin Traynor
2022-11-23 18:03 ` patch 'event/cnxk: fix mbuf offset calculation' " Kevin Traynor
2022-11-23 18:03 ` patch 'app/eventdev: fix limits in error message' " Kevin Traynor
2022-11-23 18:03 ` patch 'event/cnxk: fix missing mempool cookie marking' " Kevin Traynor
2022-11-23 18:03 ` patch 'examples/fips_validation: fix typo in error log' " Kevin Traynor
2022-11-23 18:03 ` patch 'mempool/cnxk: fix destroying empty pool' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix application name in procinfo guide' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: document device dump " Kevin Traynor
2022-11-23 18:03 ` patch 'test/crypto: fix bitwise operator in a SNOW3G case' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix typo depreciated instead of deprecated' " Kevin Traynor
2022-11-23 18:03 ` patch 'drivers: fix typos found by Lintian' " Kevin Traynor
2022-11-23 18:03 ` patch 'ring: fix description' " Kevin Traynor
2022-11-23 18:03 ` patch 'ring: remove leftover comment about watermark' " Kevin Traynor
2022-11-23 18:03 ` patch 'vdpa/ifc: handle data path update failure' " Kevin Traynor
2022-11-23 18:03 ` patch 'service: fix build with clang 15' " Kevin Traynor
2022-11-23 18:03 ` patch 'vhost: " Kevin Traynor
2022-11-23 18:03 ` patch 'bus/dpaa: " Kevin Traynor
2022-11-23 18:03 ` patch 'net/atlantic: " Kevin Traynor
2022-11-23 18:03 ` patch 'net/dpaa2: " Kevin Traynor
2022-11-23 18:04 ` patch 'app/testpmd: " Kevin Traynor
2022-11-23 18:04 ` patch 'app/testpmd: fix build with clang 15 in flow code' " Kevin Traynor
2022-11-23 18:04 ` patch 'test/efd: fix build with clang 15' " Kevin Traynor
2022-11-23 18:04 ` patch 'test/member: " Kevin Traynor
2022-11-23 18:04 ` patch 'test/event: " Kevin Traynor
2022-11-23 18:04 ` patch 'net/ixgbevf: fix promiscuous and allmulti' " Kevin Traynor
2022-11-23 18:04 ` patch 'net/mlx5: fix maximum LRO message size' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: add LRO size limitation in mlx5 guide' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix underlines in testpmd " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix colons in testpmd aged flow rules' " Kevin Traynor
2022-11-23 18:04 ` patch 'net/nfp: fix Rx descriptor DMA address' " Kevin Traynor
2022-11-23 18:04 ` patch 'drivers: remove unused build variable' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix maximum packet size of virtio driver' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: avoid meson deprecation in setup' " Kevin Traynor

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=20221123180413.733554-2-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=getelson@nvidia.com \
    --cc=lihuisong@huawei.com \
    --cc=stable@dpdk.org \
    /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).