patch 'net/ena: fix checksum flag for L4' has been queued to stable release 19.11.12

christian.ehrhardt at canonical.com christian.ehrhardt at canonical.com
Wed Mar 9 12:00:53 CET 2022


Hi,

FYI, your patch has been queued to stable release 19.11.12

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

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

Thanks.

Christian Ehrhardt <christian.ehrhardt at canonical.com>

---
>From 1e9ddbec02163de2dc48f9fbffba77c190c8416c Mon Sep 17 00:00:00 2001
From: Michal Krawczyk <mk at semihalf.com>
Date: Wed, 23 Feb 2022 13:19:43 +0100
Subject: [PATCH] net/ena: fix checksum flag for L4

[ upstream commit b2d2f1cf89a6c3661e68b750364e4a7018f954ba ]

Some HW may invalidly set checksum error bit for the valid L4 checksum.
To avoid drop of the packets in that situation, do not indicate bad
checksum for L4 Rx csum offloads. Instead, set it as unknown, so the
application will re-verify this value.

The statistics counters will still work as previously.

Fixes: 05817057faba ("net/ena: fix indication of bad L4 Rx checksums")

Signed-off-by: Michal Krawczyk <mk at semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 5d5111e2c7..7601d2fa25 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -297,7 +297,13 @@ static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf,
 		ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
 	else
 		if (unlikely(ena_rx_ctx->l4_csum_err))
-			ol_flags |= PKT_RX_L4_CKSUM_BAD;
+			/*
+			 * For the L4 Rx checksum offload the HW may indicate
+			 * bad checksum although it's valid. Because of that,
+			 * we're setting the UNKNOWN flag to let the app
+			 * re-verify the checksum.
+			 */
+			ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
 		else
 			ol_flags |= PKT_RX_L4_CKSUM_GOOD;
 
-- 
2.35.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-03-09 11:57:44.524809903 +0100
+++ 0022-net-ena-fix-checksum-flag-for-L4.patch	2022-03-09 11:57:43.368938231 +0100
@@ -1 +1 @@
-From b2d2f1cf89a6c3661e68b750364e4a7018f954ba Mon Sep 17 00:00:00 2001
+From 1e9ddbec02163de2dc48f9fbffba77c190c8416c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b2d2f1cf89a6c3661e68b750364e4a7018f954ba ]
+
@@ -14 +15,0 @@
-Cc: stable at dpdk.org
@@ -22 +23 @@
-index 151c688eec..4b58dcda74 100644
+index 5d5111e2c7..7601d2fa25 100644
@@ -25,5 +26,5 @@
-@@ -583,7 +583,13 @@ static inline void ena_rx_mbuf_prepare(struct ena_ring *rx_ring,
- 	} else {
- 		if (unlikely(ena_rx_ctx->l4_csum_err)) {
- 			++rx_stats->l4_csum_bad;
--			ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
+@@ -297,7 +297,13 @@ static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf,
+ 		ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
+ 	else
+ 		if (unlikely(ena_rx_ctx->l4_csum_err))
+-			ol_flags |= PKT_RX_L4_CKSUM_BAD;
@@ -36,4 +37,4 @@
-+			ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_UNKNOWN;
- 		} else {
- 			++rx_stats->l4_csum_good;
- 			ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
++			ol_flags |= PKT_RX_L4_CKSUM_UNKNOWN;
+ 		else
+ 			ol_flags |= PKT_RX_L4_CKSUM_GOOD;
+ 


More information about the stable mailing list