[dpdk-stable] patch 'app/testpmd: fix IP checksum calculation' has been queued to stable release 19.11.7

Christian Ehrhardt christian.ehrhardt at canonical.com
Thu Feb 4 12:28:46 CET 2021


Hi,

FYI, your patch has been queued to stable release 19.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/06/21. 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/cpaelzer/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/cpaelzer/dpdk-stable-queue/commit/d687db50e6917a6aa37b7a8c980ec8f15f0b067c

Thanks.

Christian Ehrhardt <christian.ehrhardt at canonical.com>

---
>From d687db50e6917a6aa37b7a8c980ec8f15f0b067c Mon Sep 17 00:00:00 2001
From: George Prekas <prekageo at amazon.com>
Date: Thu, 7 Jan 2021 14:42:28 -0600
Subject: [PATCH] app/testpmd: fix IP checksum calculation

[ upstream commit d841ef857dac00657aeff0a764947e064f86f550 ]

Strict-aliasing rules are violated by cast to uint16_t* in flowgen.c and
the calculated IP checksum is wrong. Use attribute __may_alias__ to fix
the problem.

Fixes: e9e23a617eb8 ("app/testpmd: add flowgen forwarding engine")

Signed-off-by: George Prekas <prekageo at amazon.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
 app/test-pmd/flowgen.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c
index 68931fdea6..3e1335b627 100644
--- a/app/test-pmd/flowgen.c
+++ b/app/test-pmd/flowgen.c
@@ -53,8 +53,11 @@ static struct rte_ether_addr cfg_ether_dst =
 
 #define IP_DEFTTL  64   /* from RFC 1340. */
 
+/* Use this type to inform GCC that ip_sum violates aliasing rules. */
+typedef unaligned_uint16_t alias_int16_t __attribute__((__may_alias__));
+
 static inline uint16_t
-ip_sum(const unaligned_uint16_t *hdr, int hdr_len)
+ip_sum(const alias_int16_t *hdr, int hdr_len)
 {
 	uint32_t sum = 0;
 
@@ -156,7 +159,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)
 							   next_flow);
 		ip_hdr->total_length	= RTE_CPU_TO_BE_16(pkt_size -
 							   sizeof(*eth_hdr));
-		ip_hdr->hdr_checksum	= ip_sum((unaligned_uint16_t *)ip_hdr,
+		ip_hdr->hdr_checksum	= ip_sum((const alias_int16_t *)ip_hdr,
 						 sizeof(*ip_hdr));
 
 		/* Initialize UDP header. */
-- 
2.30.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-02-04 12:04:31.063209505 +0100
+++ 0071-app-testpmd-fix-IP-checksum-calculation.patch	2021-02-04 12:04:28.070789767 +0100
@@ -1 +1 @@
-From d841ef857dac00657aeff0a764947e064f86f550 Mon Sep 17 00:00:00 2001
+From d687db50e6917a6aa37b7a8c980ec8f15f0b067c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d841ef857dac00657aeff0a764947e064f86f550 ]
+
@@ -11 +12,0 @@
-Cc: stable at dpdk.org
@@ -20 +21 @@
-index acf3e24605..cabfc688ff 100644
+index 68931fdea6..3e1335b627 100644
@@ -36 +37 @@
-@@ -150,7 +153,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)
+@@ -156,7 +159,7 @@ pkt_burst_flow_gen(struct fwd_stream *fs)


More information about the stable mailing list