patch 'net/dpaa2: fix L3/L4 checksum offload flags' has been queued to stable release 23.11.7
Shani Peretz
shperetz at nvidia.com
Wed Apr 15 12:00:29 CEST 2026
Hi,
FYI, your patch has been queued to stable release 23.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 04/19/26. 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/shanipr/dpdk-stable
This queued commit can be viewed at:
https://github.com/shanipr/dpdk-stable/commit/fd376572c7a1b0985b84fbff58b20cdc53241968
Thanks.
Shani
---
>From fd376572c7a1b0985b84fbff58b20cdc53241968 Mon Sep 17 00:00:00 2001
From: Maxime Leroy <maxime at leroys.fr>
Date: Wed, 25 Mar 2026 21:45:37 +0100
Subject: [PATCH] net/dpaa2: fix L3/L4 checksum offload flags
[ upstream commit 6435a1d00a149dc32020a3fcf8268401c733c0f0 ]
The WRIOP FAS (Frame Annotation Status) field provides independent
bits for L3/L4 checksum validation (L3CV/L4CV) and error (L3CE/L4CE).
Two problems:
1. The driver used 'else if' between the L3 and L4 error checks, so
when both checksums were bad only the L3 error was reported and
the L4 error was silently lost. Use two independent 'if' statements
instead, matching how other drivers (i40e, ixgbe, bnxt) handle this.
2. The driver never reported GOOD checksums. When validation was
performed (L3CV/L4CV set) but no error was flagged (L3CE/L4CE
clear), report RTE_MBUF_F_RX_IP_CKSUM_GOOD /
RTE_MBUF_F_RX_L4_CKSUM_GOOD.
Fix both issues in dpaa2_dev_rx_parse_slow() and dpaa2_dev_rx_parse().
Not tested, found by code review.
Fixes: 870354264644 ("net/dpaa2: fix L3/L4 checksum results")
Signed-off-by: Maxime Leroy <maxime at leroys.fr>
Acked-by: Hemant Agrawal <hemant.agrawal at nxp.com>
---
drivers/net/dpaa2/dpaa2_rxtx.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index 2aa321706b..b1fb45a094 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -198,8 +198,13 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CV))
+ mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
+
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CV))
+ mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_FIRST_FRAGMENT |
L3_IP_1_MORE_FRAGMENT |
@@ -235,8 +240,13 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CV))
+ mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
+
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CV))
+ mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (dpaa2_enable_ts[mbuf->port]) {
*dpaa2_timestamp_dynfield(mbuf) = annotation->word2;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-04-14 14:44:37.064361018 +0300
+++ 0088-net-dpaa2-fix-L3-L4-checksum-offload-flags.patch 2026-04-14 14:44:28.886453000 +0300
@@ -1 +1 @@
-From 6435a1d00a149dc32020a3fcf8268401c733c0f0 Mon Sep 17 00:00:00 2001
+From fd376572c7a1b0985b84fbff58b20cdc53241968 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6435a1d00a149dc32020a3fcf8268401c733c0f0 ]
+
@@ -26 +27,0 @@
-Cc: stable at dpdk.org
@@ -35 +36 @@
-index 9c908f87b1..689e5e7ee7 100644
+index 2aa321706b..b1fb45a094 100644
@@ -38 +39 @@
-@@ -203,8 +203,13 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
+@@ -198,8 +198,13 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
@@ -53 +54 @@
-@@ -240,8 +245,13 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
+@@ -235,8 +240,13 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
@@ -66,2 +67,2 @@
- if (unlikely(dpaa2_print_parser_result))
- dpaa2_print_parse_result(annotation);
+ if (dpaa2_enable_ts[mbuf->port]) {
+ *dpaa2_timestamp_dynfield(mbuf) = annotation->word2;
More information about the stable
mailing list