patch 'examples/ipsec-secgw: fix zero address in ethernet header' has been queued to stable release 22.11.3

Xueming Li xuemingl at nvidia.com
Sun Jun 25 08:34:52 CEST 2023


Hi,

FYI, your patch has been queued to stable release 22.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 06/27/23. 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://git.dpdk.org/dpdk-stable/log/?h=22.11-staging

This queued commit can be viewed at:
https://git.dpdk.org/dpdk-stable/commit/?h=22.11-staging&id=400a3302ded367ba87527110e5fdee422c9f7af5

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From 400a3302ded367ba87527110e5fdee422c9f7af5 Mon Sep 17 00:00:00 2001
From: Rahul Bhansali <rbhansali at marvell.com>
Date: Thu, 30 Mar 2023 15:39:06 +0530
Subject: [PATCH] examples/ipsec-secgw: fix zero address in ethernet header
Cc: Xueming Li <xuemingl at nvidia.com>

[ upstream commit fbe585801b90519cd16247dd14ed945d3223dbe3 ]

During port init, src address stored in ethaddr_tbl is typecast
which violates the strict-aliasing rule and not reflecting
the updated source address in processed packets too.

Fixes: 6eb3ba0399 ("examples/ipsec-secgw: support poll mode NEON LPM lookup")

Signed-off-by: Rahul Bhansali <rbhansali at marvell.com>
Acked-by: Akhil Goyal <gakhil at marvell.com>
---
 examples/ipsec-secgw/ipsec-secgw.c | 20 ++++++++++----------
 examples/ipsec-secgw/ipsec-secgw.h |  2 +-
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index a64a26c992..ea662797a8 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -99,10 +99,10 @@ uint32_t qp_desc_nb = 2048;
 #define MTU_TO_FRAMELEN(x)	((x) + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN)
 
 struct ethaddr_info ethaddr_tbl[RTE_MAX_ETHPORTS] = {
-	{ 0, ETHADDR(0x00, 0x16, 0x3e, 0x7e, 0x94, 0x9a) },
-	{ 0, ETHADDR(0x00, 0x16, 0x3e, 0x22, 0xa1, 0xd9) },
-	{ 0, ETHADDR(0x00, 0x16, 0x3e, 0x08, 0x69, 0x26) },
-	{ 0, ETHADDR(0x00, 0x16, 0x3e, 0x49, 0x9e, 0xdd) }
+	{ {{0}}, {{0x00, 0x16, 0x3e, 0x7e, 0x94, 0x9a}} },
+	{ {{0}}, {{0x00, 0x16, 0x3e, 0x22, 0xa1, 0xd9}} },
+	{ {{0}}, {{0x00, 0x16, 0x3e, 0x08, 0x69, 0x26}} },
+	{ {{0}}, {{0x00, 0x16, 0x3e, 0x49, 0x9e, 0xdd}} }
 };
 
 struct offloads tx_offloads;
@@ -1427,9 +1427,8 @@ add_dst_ethaddr(uint16_t port, const struct rte_ether_addr *addr)
 	if (port >= RTE_DIM(ethaddr_tbl))
 		return -EINVAL;
 
-	ethaddr_tbl[port].dst = ETHADDR_TO_UINT64(addr);
-	rte_ether_addr_copy((struct rte_ether_addr *)&ethaddr_tbl[port].dst,
-			    (struct rte_ether_addr *)(val_eth + port));
+	rte_ether_addr_copy(addr, &ethaddr_tbl[port].dst);
+	rte_ether_addr_copy(addr, (struct rte_ether_addr *)(val_eth + port));
 	return 0;
 }
 
@@ -1907,11 +1906,12 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads,
 			"Error getting MAC address (port %u): %s\n",
 			portid, rte_strerror(-ret));
 
-	ethaddr_tbl[portid].src = ETHADDR_TO_UINT64(&ethaddr);
+	rte_ether_addr_copy(&ethaddr, &ethaddr_tbl[portid].src);
 
-	rte_ether_addr_copy((struct rte_ether_addr *)&ethaddr_tbl[portid].dst,
+	rte_ether_addr_copy(&ethaddr_tbl[portid].dst,
 			    (struct rte_ether_addr *)(val_eth + portid));
-	rte_ether_addr_copy((struct rte_ether_addr *)&ethaddr_tbl[portid].src,
+
+	rte_ether_addr_copy(&ethaddr_tbl[portid].src,
 			    (struct rte_ether_addr *)(val_eth + portid) + 1);
 
 	print_ethaddr("Address: ", &ethaddr);
diff --git a/examples/ipsec-secgw/ipsec-secgw.h b/examples/ipsec-secgw/ipsec-secgw.h
index 0e0012d058..53665adf03 100644
--- a/examples/ipsec-secgw/ipsec-secgw.h
+++ b/examples/ipsec-secgw/ipsec-secgw.h
@@ -84,7 +84,7 @@ struct ipsec_traffic_nb {
 
 /* port/source ethernet addr and destination ethernet addr */
 struct ethaddr_info {
-	uint64_t src, dst;
+	struct rte_ether_addr src, dst;
 };
 
 struct ipsec_spd_stats {
-- 
2.25.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-06-25 14:32:00.494455400 +0800
+++ 0074-examples-ipsec-secgw-fix-zero-address-in-ethernet-he.patch	2023-06-25 14:31:58.445773900 +0800
@@ -1 +1 @@
-From fbe585801b90519cd16247dd14ed945d3223dbe3 Mon Sep 17 00:00:00 2001
+From 400a3302ded367ba87527110e5fdee422c9f7af5 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit fbe585801b90519cd16247dd14ed945d3223dbe3 ]
@@ -11 +13,0 @@
-Cc: stable at dpdk.org
@@ -21 +23 @@
-index d2d9d85b4a..029749e522 100644
+index a64a26c992..ea662797a8 100644


More information about the stable mailing list