* patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6
@ 2025-12-21 14:55 Shani Peretz
2025-12-21 14:55 ` patch 'eal: fix plugin dir walk' " Shani Peretz
` (91 more replies)
0 siblings, 92 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Marat Khalili, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/e4ff17107632015dd5e69d2823e445c1dad73d01
Thanks.
Shani
---
From e4ff17107632015dd5e69d2823e445c1dad73d01 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 18 Jun 2025 17:01:32 +0200
Subject: [PATCH] test/telemetry: fix test calling all commands
[ upstream commit 720ab398e4 ]
This test was doing nothing as it could not find the telemetry client
script following the test suite rework.
Caught while looking at UNH unit test logs:
/root/workspace/Generic-Unit-Test-DPDK/dpdk/app/test/suites/test_telemetry.sh:
18: /root/workspace/Generic-Unit-Test-DPDK/dpdk/app/usertools/dpdk-telemetry.py:
not found
Fixes: 9da71dc4f96e ("test: add test case for scripted telemetry commands")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Marat Khalili <marat.khalili@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
.mailmap | 1 +
app/test/suites/test_telemetry.sh | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 06dce5e9cf..be1dcd0a64 100644
--- a/.mailmap
+++ b/.mailmap
@@ -884,6 +884,7 @@ Manish Chopra <manishc@marvell.com>
Manish Kurup <manish.kurup@broadcom.com>
Manish Tomar <manish.tomar@nxp.com>
Mao Jiang <maox.jiang@intel.com>
+Marat Khalili <marat.khalili@huawei.com>
Marcel Apfelbaum <marcel@redhat.com>
Marcel Cornu <marcel.d.cornu@intel.com>
Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
diff --git a/app/test/suites/test_telemetry.sh b/app/test/suites/test_telemetry.sh
index ca6abe266e..20806b43e4 100755
--- a/app/test/suites/test_telemetry.sh
+++ b/app/test/suites/test_telemetry.sh
@@ -7,7 +7,7 @@ which jq || {
exit 77
}
-rootdir=$(readlink -f $(dirname $(readlink -f $0))/../..)
+rootdir=$(readlink -f $(dirname $(readlink -f $0))/../../..)
tmpoutput=$(mktemp -t dpdk.test_telemetry.XXXXXX)
trap "cat $tmpoutput; rm -f $tmpoutput" EXIT
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.485027804 +0200
+++ 0001-test-telemetry-fix-test-calling-all-commands.patch 2025-12-21 16:54:16.612066000 +0200
@@ -1 +1 @@
-From 720ab398e4b77ed6c2f2574b33c2d5065716dacc Mon Sep 17 00:00:00 2001
+From e4ff17107632015dd5e69d2823e445c1dad73d01 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 720ab398e4 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 34a99f93a1..d4c04f3b81 100644
+index 06dce5e9cf..be1dcd0a64 100644
@@ -31 +32 @@
-@@ -955,6 +955,7 @@ Manish Chopra <manishc@marvell.com>
+@@ -884,6 +884,7 @@ Manish Chopra <manishc@marvell.com>
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eal: fix plugin dir walk' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'cmdline: fix port list parsing' " Shani Peretz
` (90 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9ed60c52de55fdc201bff92088090d7e99fba448
Thanks.
Shani
---
From 9ed60c52de55fdc201bff92088090d7e99fba448 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 20 Dec 2024 09:34:31 +0100
Subject: [PATCH] eal: fix plugin dir walk
[ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ]
For '.' and '..' directories (or any short file name),
a out of bound issue occurs.
Caught by UBSan:
EAL: Detected shared linkage of DPDK
../lib/eal/common/eal_common_options.c:420:15: runtime error: index -2
out of bounds for type 'char[256]'
#0 0x7f867eedf206 in eal_plugindir_init
eal_common_options.c
#1 0x7f867eede58a in eal_plugins_init
(build/lib/librte_eal.so.25+0xde58a)
(BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c)
#2 0x7f867efb8587 in rte_eal_init
(build/lib/librte_eal.so.25+0x1b8587)
(BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c)
#3 0x55b62360861e in main
(/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x9e061e)
(BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd)
#4 0x7f8667429d8f in __libc_start_call_main
csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#5 0x7f8667429e3f in __libc_start_main
csu/../csu/libc-start.c:392:3
#6 0x55b622d9d444 in _start
(/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x175444)
(BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/eal/common/eal_common_options.c:420:15 in
../lib/eal/common/eal_common_options.c:421:15:
runtime error: index 18446744073709551609 out of bounds
for type 'char[256]'
Fixes: c57f6e5c604a ("eal: fix plugin loading")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eal/common/eal_common_options.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index 0044f26411..b817544b39 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -398,12 +398,21 @@ eal_plugins_init(void)
}
#else
+static bool
+ends_with(const char *str, const char *tail)
+{
+ size_t tail_len = strlen(tail);
+ size_t str_len = strlen(str);
+
+ return str_len >= tail_len && strcmp(&str[str_len - tail_len], tail) == 0;
+}
+
static int
eal_plugindir_init(const char *path)
{
- DIR *d = NULL;
struct dirent *dent = NULL;
char sopath[PATH_MAX];
+ DIR *d = NULL;
if (path == NULL || *path == '\0')
return 0;
@@ -417,12 +426,8 @@ eal_plugindir_init(const char *path)
while ((dent = readdir(d)) != NULL) {
struct stat sb;
- int nlen = strnlen(dent->d_name, sizeof(dent->d_name));
- /* check if name ends in .so or .so.ABI_VERSION */
- if (strcmp(&dent->d_name[nlen - 3], ".so") != 0 &&
- strcmp(&dent->d_name[nlen - 4 - strlen(ABI_VERSION)],
- ".so."ABI_VERSION) != 0)
+ if (!ends_with(dent->d_name, ".so") && !ends_with(dent->d_name, ".so."ABI_VERSION))
continue;
snprintf(sopath, sizeof(sopath), "%s/%s", path, dent->d_name);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.534155189 +0200
+++ 0002-eal-fix-plugin-dir-walk.patch 2025-12-21 16:54:16.619030000 +0200
@@ -1 +1 @@
-From c32e203ee23473ccf3c8526d12e1c59f17c50eab Mon Sep 17 00:00:00 2001
+From 9ed60c52de55fdc201bff92088090d7e99fba448 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ]
+
@@ -39 +40,0 @@
-Cc: stable@dpdk.org
@@ -49 +50 @@
-index 3169dd069f..2f91b96190 100644
+index 0044f26411..b817544b39 100644
@@ -52 +53 @@
-@@ -399,12 +399,21 @@ eal_plugins_init(void)
+@@ -398,12 +398,21 @@ eal_plugins_init(void)
@@ -75 +76 @@
-@@ -418,12 +427,8 @@ eal_plugindir_init(const char *path)
+@@ -417,12 +426,8 @@ eal_plugindir_init(const char *path)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'cmdline: fix port list parsing' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
2025-12-21 14:55 ` patch 'eal: fix plugin dir walk' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'cmdline: fix highest bit " Shani Peretz
` (89 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Marat Khalili, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9208e72b2e1d57d53c64d1cbf24bb5669597b00e
Thanks.
Shani
---
From 9208e72b2e1d57d53c64d1cbf24bb5669597b00e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:47:33 +0100
Subject: [PATCH] cmdline: fix port list parsing
[ upstream commit 48e03475262798e6758b9c767e87e2f88375072c ]
Doing arithmetic with the NULL pointer is undefined.
Caught by UBSan:
../lib/cmdline/cmdline_parse_portlist.c:40:19: runtime error:
applying non-zero offset 1 to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/cmdline/cmdline_parse_portlist.c:40:19 in
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Marat Khalili <marat.khalili@huawei.com>
---
lib/cmdline/cmdline_parse_portlist.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/lib/cmdline/cmdline_parse_portlist.c b/lib/cmdline/cmdline_parse_portlist.c
index 2e2294553a..290e61f211 100644
--- a/lib/cmdline/cmdline_parse_portlist.c
+++ b/lib/cmdline/cmdline_parse_portlist.c
@@ -31,15 +31,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
static int
parse_ports(cmdline_portlist_t *pl, const char *str)
{
+ const char *first = str;
size_t ps, pe;
- const char *first, *last;
char *end;
- for (first = str, last = first;
- first != NULL && last != NULL;
- first = last + 1) {
-
- last = strchr(first, ',');
+ while (first != NULL) {
+ const char *last = strchr(first, ',');
errno = 0;
ps = strtoul(first, &end, 10);
@@ -63,6 +60,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
return -1;
parse_set_list(pl, ps, pe);
+ first = (last == NULL ? NULL : last + 1);
}
return 0;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.585670427 +0200
+++ 0003-cmdline-fix-port-list-parsing.patch 2025-12-21 16:54:16.623058000 +0200
@@ -1 +1 @@
-From 48e03475262798e6758b9c767e87e2f88375072c Mon Sep 17 00:00:00 2001
+From 9208e72b2e1d57d53c64d1cbf24bb5669597b00e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 48e03475262798e6758b9c767e87e2f88375072c ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index ef6ce223b5..549f6d9671 100644
+index 2e2294553a..290e61f211 100644
@@ -29 +30 @@
-@@ -33,15 +33,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
+@@ -31,15 +31,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
@@ -48 +49 @@
-@@ -65,6 +62,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
+@@ -63,6 +60,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'cmdline: fix highest bit port list parsing' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
2025-12-21 14:55 ` patch 'eal: fix plugin dir walk' " Shani Peretz
2025-12-21 14:55 ` patch 'cmdline: fix port list parsing' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'tailq: fix lookup macro' " Shani Peretz
` (88 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Marat Khalili, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/23ef753da8479237bb6e0748a304f030ec4bab10
Thanks.
Shani
---
From 23ef753da8479237bb6e0748a304f030ec4bab10 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:50:48 +0100
Subject: [PATCH] cmdline: fix highest bit port list parsing
[ upstream commit f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 ]
pl->map is a uint32_t.
Caught by UBSan:
../lib/cmdline/cmdline_parse_portlist.c:27:17: runtime error:
left shift of 1 by 31 places cannot be represented in type 'int'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/cmdline/cmdline_parse_portlist.c:27:17 in
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Marat Khalili <marat.khalili@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/cmdline/cmdline_parse_portlist.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/cmdline/cmdline_parse_portlist.c b/lib/cmdline/cmdline_parse_portlist.c
index 290e61f211..6b7096579e 100644
--- a/lib/cmdline/cmdline_parse_portlist.c
+++ b/lib/cmdline/cmdline_parse_portlist.c
@@ -9,7 +9,9 @@
#include <string.h>
#include <errno.h>
+#include <rte_bitops.h>
#include <rte_string_fns.h>
+
#include "cmdline_parse.h"
#include "cmdline_parse_portlist.h"
@@ -24,7 +26,8 @@ static void
parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
{
do {
- pl->map |= (1 << low++);
+ pl->map |= RTE_BIT32(low);
+ low++;
} while (low <= high);
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.629504646 +0200
+++ 0004-cmdline-fix-highest-bit-port-list-parsing.patch 2025-12-21 16:54:16.627055000 +0200
@@ -1 +1 @@
-From f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 Mon Sep 17 00:00:00 2001
+From 23ef753da8479237bb6e0748a304f030ec4bab10 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 549f6d9671..3efe4143e3 100644
+index 290e61f211..6b7096579e 100644
@@ -30 +31,2 @@
-@@ -10,7 +10,9 @@
+@@ -9,7 +9,9 @@
+ #include <string.h>
@@ -33 +34,0 @@
- #include <eal_export.h>
@@ -40 +41 @@
-@@ -26,7 +28,8 @@ static void
+@@ -24,7 +26,8 @@ static void
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'tailq: fix lookup macro' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (2 preceding siblings ...)
2025-12-21 14:55 ` patch 'cmdline: fix highest bit " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'hash: fix unaligned access in predictable RSS' " Shani Peretz
` (87 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/14cfbecd120c0dcf437e5eb81ca492b9170f015f
Thanks.
Shani
---
From 14cfbecd120c0dcf437e5eb81ca492b9170f015f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 17:09:54 +0100
Subject: [PATCH] tailq: fix lookup macro
[ upstream commit 5d2d4033abe5bb17f6e328fad1a615553573abd5 ]
Doing arithmetic with the NULL pointer is undefined.
Caught by UBSan:
../app/test/test_tailq.c:111:9: runtime error:
member access within null pointer of type 'struct rte_tailq_head'
Fixes: f6b4f6c9c123 ("tailq: use a single cast macro")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eal/include/rte_tailq.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib/eal/include/rte_tailq.h b/lib/eal/include/rte_tailq.h
index 931d549e59..8bb576b5ed 100644
--- a/lib/eal/include/rte_tailq.h
+++ b/lib/eal/include/rte_tailq.h
@@ -69,11 +69,12 @@ struct rte_tailq_elem {
* @return
* The return value from rte_eal_tailq_lookup, typecast to the appropriate
* structure pointer type.
- * NULL on error, since the tailq_head is the first
- * element in the rte_tailq_head structure.
+ * NULL on error.
*/
-#define RTE_TAILQ_LOOKUP(name, struct_name) \
- RTE_TAILQ_CAST(rte_eal_tailq_lookup(name), struct_name)
+#define RTE_TAILQ_LOOKUP(name, struct_name) __extension__ ({ \
+ struct rte_tailq_head *head = rte_eal_tailq_lookup(name); \
+ head == NULL ? NULL : RTE_TAILQ_CAST(head, struct_name); \
+})
/**
* Dump tail queues to a file.
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.670125892 +0200
+++ 0005-tailq-fix-lookup-macro.patch 2025-12-21 16:54:16.633085000 +0200
@@ -1 +1 @@
-From 5d2d4033abe5bb17f6e328fad1a615553573abd5 Mon Sep 17 00:00:00 2001
+From 14cfbecd120c0dcf437e5eb81ca492b9170f015f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5d2d4033abe5bb17f6e328fad1a615553573abd5 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 89f7ef2134..e7caed6812 100644
+index 931d549e59..8bb576b5ed 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'hash: fix unaligned access in predictable RSS' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (3 preceding siblings ...)
2025-12-21 14:55 ` patch 'tailq: fix lookup macro' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'graph: fix unaligned access in stats' " Shani Peretz
` (86 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Vladimir Medvedkin, Konstantin Ananyev,
Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f8bbc018d3c4f66e50e6879b1fd711f39fe8beea
Thanks.
Shani
---
From f8bbc018d3c4f66e50e6879b1fd711f39fe8beea Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 18 Jun 2025 17:33:38 +0200
Subject: [PATCH] hash: fix unaligned access in predictable RSS
[ upstream commit b70d04d8ac6d47b221500d418df1de2b2c65b50a ]
Caught by UBSan:
../lib/hash/rte_thash.c:421:8: runtime error: load of misaligned address
0x0001816c2da3 for type 'uint32_t' (aka 'unsigned int'),
which requires 4 byte alignment
Fixes: 28ebff11c2dc ("hash: add predictable RSS")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/hash/rte_thash.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c
index a952006686..9747a65dfa 100644
--- a/lib/hash/rte_thash.c
+++ b/lib/hash/rte_thash.c
@@ -437,10 +437,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
static inline uint32_t
get_subvalue(struct rte_thash_ctx *ctx, uint32_t offset)
{
- uint32_t *tmp, val;
+ uint32_t tmp, val;
- tmp = (uint32_t *)(&ctx->hash_key[offset >> 3]);
- val = rte_be_to_cpu_32(*tmp);
+ tmp = *(unaligned_uint32_t *)&ctx->hash_key[offset >> 3];
+ val = rte_be_to_cpu_32(tmp);
val >>= (TOEPLITZ_HASH_LEN - ((offset & (CHAR_BIT - 1)) +
ctx->reta_sz_log));
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.718390564 +0200
+++ 0006-hash-fix-unaligned-access-in-predictable-RSS.patch 2025-12-21 16:54:16.639047000 +0200
@@ -1 +1 @@
-From b70d04d8ac6d47b221500d418df1de2b2c65b50a Mon Sep 17 00:00:00 2001
+From f8bbc018d3c4f66e50e6879b1fd711f39fe8beea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b70d04d8ac6d47b221500d418df1de2b2c65b50a ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 6c662bf14f..0f9ed20d0d 100644
+index a952006686..9747a65dfa 100644
@@ -28 +29 @@
-@@ -415,10 +415,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
+@@ -437,10 +437,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'graph: fix unaligned access in stats' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (4 preceding siblings ...)
2025-12-21 14:55 ` patch 'hash: fix unaligned access in predictable RSS' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'eventdev: fix listing timer adapters with telemetry' " Shani Peretz
` (85 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Kiran Kumar K, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/4a3753e107816c12d19f906f4c06863da27144c8
Thanks.
Shani
---
From 4a3753e107816c12d19f906f4c06863da27144c8 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 4 Jul 2025 11:15:03 +0200
Subject: [PATCH] graph: fix unaligned access in stats
[ upstream commit 826af93a68f358f8eb4f363e42d114b93fde0d69 ]
UBSan reports:
../lib/graph/graph_stats.c:208:13: runtime error:
member access within misaligned address 0x000054742c50
for type 'struct rte_graph_cluster_stats',
which requires 64 byte alignment
../lib/graph/graph_stats.c:257:12: runtime error:
member access within misaligned address 0x00002219fd30
for type 'struct rte_graph_cluster_stats',
which requires 64 byte alignment
The current code goes into various complex (non aligned) reallocations /
memset / memcpy.
Simplify this by computing how many nodes are present in the
cluster of graphes.
Then directly call rte_malloc for the whole stats object.
As a bonus, this change also fixes leaks:
- if any error occurred before call to rte_malloc, since the xstats
objects stored in the glibc allocated stats object were not freed,
- if an allocation failure occurs, with constructs using
ptr = realloc(ptr, sz), since the original ptr is lost,
Fixes: af1ae8b6a32c ("graph: implement stats")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kiran Kumar K <kirankumark@marvell.com>
---
lib/graph/graph_stats.c | 96 +++++++++++++++++++++++------------------
1 file changed, 55 insertions(+), 41 deletions(-)
diff --git a/lib/graph/graph_stats.c b/lib/graph/graph_stats.c
index e99e8cf68a..b94ae8fb29 100644
--- a/lib/graph/graph_stats.c
+++ b/lib/graph/graph_stats.c
@@ -36,7 +36,6 @@ struct rte_graph_cluster_stats {
int socket_id;
bool dispatch;
void *cookie;
- size_t sz;
struct cluster_node clusters[];
} __rte_cache_aligned;
@@ -155,15 +154,55 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
return graph_cluster_stats_cb(true, is_first, is_last, cookie, stat);
};
+static uint32_t
+cluster_count_nodes(const struct cluster *cluster)
+{
+ rte_node_t *nodes = NULL;
+ uint32_t max_nodes = 0;
+
+ for (unsigned int i = 0; i < cluster->nb_graphs; i++) {
+ struct graph_node *graph_node;
+
+ STAILQ_FOREACH(graph_node, &cluster->graphs[i]->node_list, next) {
+ rte_node_t *new_nodes;
+ unsigned int n;
+
+ for (n = 0; n < max_nodes; n++) {
+ if (nodes[n] != graph_node->node->id)
+ continue;
+ break;
+ }
+ if (n != max_nodes)
+ continue;
+
+ max_nodes++;
+ new_nodes = realloc(nodes, max_nodes * sizeof(nodes[0]));
+ if (new_nodes == NULL) {
+ free(nodes);
+ return 0;
+ }
+ nodes = new_nodes;
+ nodes[n] = graph_node->node->id;
+ }
+ }
+ free(nodes);
+
+ return max_nodes;
+}
+
static struct rte_graph_cluster_stats *
stats_mem_init(struct cluster *cluster,
const struct rte_graph_cluster_stats_param *prm)
{
- size_t sz = sizeof(struct rte_graph_cluster_stats);
struct rte_graph_cluster_stats *stats;
rte_graph_cluster_stats_cb_t fn;
int socket_id = prm->socket_id;
uint32_t cluster_node_size;
+ uint32_t max_nodes;
+
+ max_nodes = cluster_count_nodes(cluster);
+ if (max_nodes == 0)
+ return NULL;
/* Fix up callback */
fn = prm->fn;
@@ -180,25 +219,23 @@ stats_mem_init(struct cluster *cluster,
cluster_node_size += cluster->nb_graphs * sizeof(struct rte_node *);
cluster_node_size = RTE_ALIGN(cluster_node_size, RTE_CACHE_LINE_SIZE);
- stats = realloc(NULL, sz);
+ stats = rte_zmalloc_socket(NULL, sizeof(struct rte_graph_cluster_stats) +
+ max_nodes * cluster_node_size, 0, socket_id);
if (stats) {
- memset(stats, 0, sz);
stats->fn = fn;
stats->cluster_node_size = cluster_node_size;
stats->max_nodes = 0;
stats->socket_id = socket_id;
stats->cookie = prm->cookie;
- stats->sz = sz;
}
return stats;
}
static int
-stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+stats_mem_populate(struct rte_graph_cluster_stats *stats,
struct rte_graph *graph, struct graph_node *graph_node)
{
- struct rte_graph_cluster_stats *stats = *stats_in;
rte_node_t id = graph_node->node->id;
struct cluster_node *cluster;
struct rte_node *node;
@@ -223,41 +260,22 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
cluster = RTE_PTR_ADD(cluster, stats->cluster_node_size);
}
- /* Hey, it is a new node, allocate space for it in the reel */
- stats = realloc(stats, stats->sz + stats->cluster_node_size);
- if (stats == NULL)
- SET_ERR_JMP(ENOMEM, err, "Realloc failed");
- *stats_in = NULL;
-
- /* Clear the new struct cluster_node area */
- cluster = RTE_PTR_ADD(stats, stats->sz),
- memset(cluster, 0, stats->cluster_node_size);
memcpy(cluster->stat.name, graph_node->node->name, RTE_NODE_NAMESIZE);
cluster->stat.id = graph_node->node->id;
cluster->stat.hz = rte_get_timer_hz();
node = graph_node_id_to_ptr(graph, id);
if (node == NULL)
- SET_ERR_JMP(ENOENT, free, "Failed to find node %s in graph %s",
+ SET_ERR_JMP(ENOENT, err, "Failed to find node %s in graph %s",
graph_node->node->name, graph->name);
cluster->nodes[cluster->nb_nodes++] = node;
- stats->sz += stats->cluster_node_size;
stats->max_nodes++;
- *stats_in = stats;
return 0;
-free:
- free(stats);
err:
return -rte_errno;
}
-static void
-stats_mem_fini(struct rte_graph_cluster_stats *stats)
-{
- free(stats);
-}
-
static void
cluster_init(struct cluster *cluster)
{
@@ -326,10 +344,7 @@ struct rte_graph_cluster_stats *
rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
{
struct rte_graph_cluster_stats *stats, *rc = NULL;
- struct graph_node *graph_node;
struct cluster cluster;
- struct graph *graph;
- const char *pattern;
rte_graph_t i;
/* Sanity checks */
@@ -347,37 +362,36 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
graph_spinlock_lock();
/* Expand graph pattern and add the graph to the cluster */
for (i = 0; i < prm->nb_graph_patterns; i++) {
- pattern = prm->graph_patterns[i];
- if (expand_pattern_to_cluster(&cluster, pattern))
+ if (expand_pattern_to_cluster(&cluster, prm->graph_patterns[i]))
goto bad_pattern;
}
/* Alloc the stats memory */
stats = stats_mem_init(&cluster, prm);
if (stats == NULL)
- SET_ERR_JMP(ENOMEM, bad_pattern, "Failed alloc stats memory");
+ SET_ERR_JMP(ENOMEM, bad_pattern, "Failed rte_malloc for stats memory");
/* Iterate over M(Graph) x N (Nodes in graph) */
for (i = 0; i < cluster.nb_graphs; i++) {
+ struct graph_node *graph_node;
+ struct graph *graph;
+
graph = cluster.graphs[i];
STAILQ_FOREACH(graph_node, &graph->node_list, next) {
struct rte_graph *graph_fp = graph->graph;
- if (stats_mem_populate(&stats, graph_fp, graph_node))
+ if (stats_mem_populate(stats, graph_fp, graph_node))
goto realloc_fail;
}
if (graph->graph->model == RTE_GRAPH_MODEL_MCORE_DISPATCH)
stats->dispatch = true;
}
- /* Finally copy to hugepage memory to avoid pressure on rte_realloc */
- rc = rte_malloc_socket(NULL, stats->sz, 0, stats->socket_id);
- if (rc)
- rte_memcpy(rc, stats, stats->sz);
- else
- SET_ERR_JMP(ENOMEM, realloc_fail, "rte_malloc failed");
+ rc = stats;
+ stats = NULL;
realloc_fail:
- stats_mem_fini(stats);
+ if (stats != NULL)
+ rte_graph_cluster_stats_destroy(stats);
bad_pattern:
graph_spinlock_unlock();
cluster_fini(&cluster);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.765773798 +0200
+++ 0007-graph-fix-unaligned-access-in-stats.patch 2025-12-21 16:54:16.645028000 +0200
@@ -1 +1 @@
-From 826af93a68f358f8eb4f363e42d114b93fde0d69 Mon Sep 17 00:00:00 2001
+From 4a3753e107816c12d19f906f4c06863da27144c8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 826af93a68f358f8eb4f363e42d114b93fde0d69 ]
+
@@ -32 +33,0 @@
-Cc: stable@dpdk.org
@@ -37,2 +38,2 @@
- lib/graph/graph_stats.c | 102 +++++++++++++++++++++++-----------------
- 1 file changed, 58 insertions(+), 44 deletions(-)
+ lib/graph/graph_stats.c | 96 +++++++++++++++++++++++------------------
+ 1 file changed, 55 insertions(+), 41 deletions(-)
@@ -41 +42 @@
-index 583ad8dbd5..e0fc8fd25c 100644
+index e99e8cf68a..b94ae8fb29 100644
@@ -44 +45 @@
-@@ -37,7 +37,6 @@ struct __rte_cache_aligned rte_graph_cluster_stats {
+@@ -36,7 +36,6 @@ struct rte_graph_cluster_stats {
@@ -51,2 +52,2 @@
- };
-@@ -178,15 +177,55 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
+ } __rte_cache_aligned;
+@@ -155,15 +154,55 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
@@ -109 +110 @@
-@@ -203,25 +242,23 @@ stats_mem_init(struct cluster *cluster,
+@@ -180,25 +219,23 @@ stats_mem_init(struct cluster *cluster,
@@ -138 +139 @@
-@@ -247,21 +284,12 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -223,41 +260,22 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -160,30 +160,0 @@
- if (graph_node->node->xstats) {
-@@ -270,7 +298,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- sizeof(uint64_t) * graph_node->node->xstats->nb_xstats,
- RTE_CACHE_LINE_SIZE, stats->socket_id);
- if (cluster->stat.xstat_count == NULL)
-- SET_ERR_JMP(ENOMEM, free, "Failed to allocate memory node %s graph %s",
-+ SET_ERR_JMP(ENOMEM, err, "Failed to allocate memory node %s graph %s",
- graph_node->node->name, graph->name);
-
- cluster->stat.xstat_desc = rte_zmalloc_socket(NULL,
-@@ -278,7 +306,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- RTE_CACHE_LINE_SIZE, stats->socket_id);
- if (cluster->stat.xstat_desc == NULL) {
- rte_free(cluster->stat.xstat_count);
-- SET_ERR_JMP(ENOMEM, free, "Failed to allocate memory node %s graph %s",
-+ SET_ERR_JMP(ENOMEM, err, "Failed to allocate memory node %s graph %s",
- graph_node->node->name, graph->name);
- }
-
-@@ -288,30 +316,20 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- RTE_NODE_XSTAT_DESC_SIZE) < 0) {
- rte_free(cluster->stat.xstat_count);
- rte_free(cluster->stat.xstat_desc);
-- SET_ERR_JMP(E2BIG, free,
-+ SET_ERR_JMP(E2BIG, err,
- "Error description overflow node %s graph %s",
- graph_node->node->name, graph->name);
- }
- }
- }
@@ -211 +182 @@
-@@ -381,10 +399,7 @@ struct rte_graph_cluster_stats *
+@@ -326,10 +344,7 @@ struct rte_graph_cluster_stats *
@@ -222 +193 @@
-@@ -402,37 +417,36 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -347,37 +362,36 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eventdev: fix listing timer adapters with telemetry' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (5 preceding siblings ...)
2025-12-21 14:55 ` patch 'graph: fix unaligned access in stats' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'cfgfile: fix section count with no name' " Shani Peretz
` (84 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/21194951848d37e2df3a76bc153be056a053e75b
Thanks.
Shani
---
From 21194951848d37e2df3a76bc153be056a053e75b Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 4 Jul 2025 14:58:25 +0200
Subject: [PATCH] eventdev: fix listing timer adapters with telemetry
[ upstream commit 94b2ff7ee1976f80dd4822dab090bbbf693d12ca ]
If no timer adapter is created, listing with telemetry can lead to crash
and is reported by UBSan as an undefined behavior:
../lib/eventdev/rte_event_timer_adapter.c:1418:13:
runtime error: applying zero offset to null pointer
../lib/eventdev/rte_event_timer_adapter.c:1464:13:
runtime error: applying zero offset to null pointer
Fixes: 791dfec24d00 ("eventdev/timer: add telemetry")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eventdev/rte_event_timer_adapter.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eventdev/rte_event_timer_adapter.c b/lib/eventdev/rte_event_timer_adapter.c
index 3f22e85173..b85ebd5263 100644
--- a/lib/eventdev/rte_event_timer_adapter.c
+++ b/lib/eventdev/rte_event_timer_adapter.c
@@ -1395,7 +1395,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
adapter_id = atoi(params);
- if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
+ if (adapters == NULL || adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id);
return -EINVAL;
}
@@ -1441,7 +1441,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
adapter_id = atoi(params);
- if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
+ if (adapters == NULL || adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id);
return -EINVAL;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.806642000 +0200
+++ 0008-eventdev-fix-listing-timer-adapters-with-telemetry.patch 2025-12-21 16:54:16.650059000 +0200
@@ -1 +1 @@
-From 94b2ff7ee1976f80dd4822dab090bbbf693d12ca Mon Sep 17 00:00:00 2001
+From 21194951848d37e2df3a76bc153be056a053e75b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 94b2ff7ee1976f80dd4822dab090bbbf693d12ca ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 06ce478d90..af98b1d9f6 100644
+index 3f22e85173..b85ebd5263 100644
@@ -28 +29 @@
-@@ -1410,7 +1410,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
+@@ -1395,7 +1395,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
@@ -37 +38 @@
-@@ -1456,7 +1456,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
+@@ -1441,7 +1441,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'cfgfile: fix section count with no name' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (6 preceding siblings ...)
2025-12-21 14:55 ` patch 'eventdev: fix listing timer adapters with telemetry' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'net/gve: do not write zero-length descriptors' " Shani Peretz
` (83 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Cristian Dumitrescu, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/37cc8cb726f37d9ca35142d10f54f324c9b0e4b2
Thanks.
Shani
---
From 37cc8cb726f37d9ca35142d10f54f324c9b0e4b2 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:33:19 +0100
Subject: [PATCH] cfgfile: fix section count with no name
[ upstream commit 02bce2f1e938b409bb6f85391510a2a33ecc1443 ]
Passing a NULL to strncmp is incorrect.
+ ------------------------------------------------------- +
+ Test Suite : Test Cfgfile Unit Test Suite
+ ------------------------------------------------------- +
../lib/cfgfile/rte_cfgfile.c:475:7: runtime error: null pointer passed as
argument 2, which is declared to never be null
On the other hand, it seems the intent was to count all sections, so
skip the whole loop and section name comparisons.
Fixes: c54e7234bc9e ("test/cfgfile: add basic unit tests")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/cfgfile/rte_cfgfile.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/cfgfile/rte_cfgfile.c b/lib/cfgfile/rte_cfgfile.c
index 2f9cc0722a..a0c1322f43 100644
--- a/lib/cfgfile/rte_cfgfile.c
+++ b/lib/cfgfile/rte_cfgfile.c
@@ -467,10 +467,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
int
rte_cfgfile_num_sections(struct rte_cfgfile *cfg, const char *sectionname,
-size_t length)
+ size_t length)
{
- int i;
int num_sections = 0;
+ int i;
+
+ if (sectionname == NULL)
+ return cfg->num_sections;
+
for (i = 0; i < cfg->num_sections; i++) {
if (strncmp(cfg->sections[i].name, sectionname, length) == 0)
num_sections++;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.853725306 +0200
+++ 0009-cfgfile-fix-section-count-with-no-name.patch 2025-12-21 16:54:16.655130000 +0200
@@ -1 +1 @@
-From 02bce2f1e938b409bb6f85391510a2a33ecc1443 Mon Sep 17 00:00:00 2001
+From 37cc8cb726f37d9ca35142d10f54f324c9b0e4b2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 02bce2f1e938b409bb6f85391510a2a33ecc1443 ]
+
@@ -28 +30 @@
-index 8bbdcf146e..9723ec756f 100644
+index 2f9cc0722a..a0c1322f43 100644
@@ -31,2 +33,2 @@
-@@ -477,10 +477,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
- RTE_EXPORT_SYMBOL(rte_cfgfile_num_sections)
+@@ -467,10 +467,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
+
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/gve: do not write zero-length descriptors' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (7 preceding siblings ...)
2025-12-21 14:55 ` patch 'cfgfile: fix section count with no name' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:55 ` patch 'net/gve: validate Tx packet before sending' " Shani Peretz
` (82 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/5bc6eb49fd28e2a51e1fa84a4aadd6eb96f6829d
Thanks.
Shani
---
From 5bc6eb49fd28e2a51e1fa84a4aadd6eb96f6829d Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:07 -0700
Subject: [PATCH] net/gve: do not write zero-length descriptors
[ upstream commit 671d15dad5f41cda4887ca3bb73afafc1b9768e3 ]
Writing zero-length descriptors to the hardware can cause the hardware
to reject that packet and stop transmitting altogether.
Fixes: 4022f9999f56 ("net/gve: support basic Tx data path for DQO")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Ankit Garg <nktgrg@google.com>
---
drivers/net/gve/gve_tx_dqo.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index ce3681b6c6..b9914fb799 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -124,6 +124,10 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
if (sw_ring[sw_id] != NULL)
PMD_DRV_LOG(DEBUG, "Overwriting an entry in sw_ring");
+ /* Skip writing descriptor if mbuf has no data. */
+ if (!tx_pkt->data_len)
+ goto finish_mbuf;
+
txd = &txr[tx_id];
sw_ring[sw_id] = tx_pkt;
@@ -137,13 +141,15 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
/* size of desc_ring and sw_ring could be different */
tx_id = (tx_id + 1) & mask;
+finish_mbuf:
sw_id = (sw_id + 1) & sw_mask;
bytes += tx_pkt->data_len;
tx_pkt = tx_pkt->next;
} while (tx_pkt);
- /* fill the last descriptor with End of Packet (EOP) bit */
+ /* fill the last written descriptor with End of Packet (EOP) bit */
+ txd = &txr[(tx_id - 1) & mask];
txd->pkt.end_of_packet = 1;
txq->nb_free -= nb_used;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.895407132 +0200
+++ 0010-net-gve-do-not-write-zero-length-descriptors.patch 2025-12-21 16:54:16.661093000 +0200
@@ -1 +1 @@
-From 671d15dad5f41cda4887ca3bb73afafc1b9768e3 Mon Sep 17 00:00:00 2001
+From 5bc6eb49fd28e2a51e1fa84a4aadd6eb96f6829d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 671d15dad5f41cda4887ca3bb73afafc1b9768e3 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -15,2 +16,2 @@
- drivers/net/gve/gve_tx_dqo.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
+ drivers/net/gve/gve_tx_dqo.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
@@ -19 +20 @@
-index 652a0e5175..b2e5aae634 100644
+index ce3681b6c6..b9914fb799 100644
@@ -22 +23 @@
-@@ -168,6 +168,11 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -124,6 +124,10 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
@@ -30 +31 @@
-+ txd = &txr[tx_id];
+ txd = &txr[tx_id];
@@ -33,4 +34 @@
- /* fill Tx descriptors */
-@@ -189,12 +194,14 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
- tx_id = (tx_id + 1) & mask;
- }
+@@ -137,13 +141,15 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
@@ -37,0 +36,2 @@
+ /* size of desc_ring and sw_ring could be different */
+ tx_id = (tx_id + 1) & mask;
@@ -39,0 +40 @@
+
@@ -49 +50 @@
- txq->nb_free -= nb_descs;
+ txq->nb_free -= nb_used;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/gve: validate Tx packet before sending' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (8 preceding siblings ...)
2025-12-21 14:55 ` patch 'net/gve: do not write zero-length descriptors' " Shani Peretz
@ 2025-12-21 14:55 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Shani Peretz
` (81 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:55 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/fb86f067ccce9322e3bdf063271f8abf28757e1a
Thanks.
Shani
---
From fb86f067ccce9322e3bdf063271f8abf28757e1a Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:08 -0700
Subject: [PATCH] net/gve: validate Tx packet before sending
[ upstream commit f33ce4445ee6bc8f6d2ea4d894511f5446e9e3a2 ]
The hardware assumes that a mismatch between the reported packet length
and the total amount of data in the descriptors is caused by a malicious
driver, leading the hardware to disable transmission altogether. To
avoid such a scenario, use rte_mbuf_check to validate that the mbuf is
correctly formed before processing.
Fixes: 4022f9999f56 ("net/gve: support basic Tx data path for DQO")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Ankit Garg <nktgrg@google.com>
---
drivers/net/gve/gve_tx_dqo.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index b9914fb799..9550fe58c7 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -84,13 +84,14 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
struct rte_mbuf *tx_pkt;
uint16_t mask, sw_mask;
uint16_t nb_to_clean;
+ uint16_t first_sw_id;
+ const char *reason;
uint16_t nb_tx = 0;
uint64_t ol_flags;
uint16_t nb_used;
uint16_t tx_id;
uint16_t sw_id;
uint64_t bytes;
- uint16_t first_sw_id;
uint8_t csum;
sw_ring = txq->sw_ring;
@@ -114,6 +115,12 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
if (txq->nb_free < tx_pkt->nb_segs)
break;
+
+ if (rte_mbuf_check(tx_pkt, true, &reason)) {
+ PMD_DRV_LOG(DEBUG, "Invalid mbuf: %s", reason);
+ break;
+ }
+
ol_flags = tx_pkt->ol_flags;
nb_used = tx_pkt->nb_segs;
first_sw_id = sw_id;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.936223891 +0200
+++ 0011-net-gve-validate-Tx-packet-before-sending.patch 2025-12-21 16:54:16.669063000 +0200
@@ -1 +1 @@
-From f33ce4445ee6bc8f6d2ea4d894511f5446e9e3a2 Mon Sep 17 00:00:00 2001
+From fb86f067ccce9322e3bdf063271f8abf28757e1a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f33ce4445ee6bc8f6d2ea4d894511f5446e9e3a2 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index b2e5aae634..7e03e75b20 100644
+index b9914fb799..9550fe58c7 100644
@@ -25,2 +26 @@
-@@ -113,13 +113,14 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
- struct rte_mbuf **sw_ring;
+@@ -84,13 +84,14 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
@@ -28,0 +29 @@
+ uint16_t nb_to_clean;
@@ -33 +34 @@
- uint16_t nb_descs;
+ uint16_t nb_used;
@@ -38 +38,0 @@
- uint8_t tso;
@@ -41,3 +41,4 @@
-@@ -139,6 +140,12 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
- gve_tx_clean_descs_dqo(txq, DQO_TX_MULTIPLIER *
- txq->rs_thresh);
+ sw_ring = txq->sw_ring;
+@@ -114,6 +115,12 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+ if (txq->nb_free < tx_pkt->nb_segs)
+ break;
@@ -51,0 +53 @@
+ nb_used = tx_pkt->nb_segs;
@@ -53 +54,0 @@
-
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/vmxnet3: fix mapping of mempools to queues' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (9 preceding siblings ...)
2025-12-21 14:55 ` patch 'net/gve: validate Tx packet before sending' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: increase size of set cores list command' " Shani Peretz
` (80 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Ronak Doshi; +Cc: Jochen Behrens, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/5825eb0e0b2e03ef1a3bb2a4a849ffa7c3506c95
Thanks.
Shani
---
From 5825eb0e0b2e03ef1a3bb2a4a849ffa7c3506c95 Mon Sep 17 00:00:00 2001
From: Ronak Doshi <ronak.doshi@broadcom.com>
Date: Wed, 9 Jul 2025 21:29:03 +0000
Subject: [PATCH] net/vmxnet3: fix mapping of mempools to queues
[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ]
Index bitmask variable used was uint8_t, too small for bitmask with
9 or more queues. This patch changes it to uint16_t for now, to be
same as in the Vmxnet3_MemoryRegion structure. This way txQueues
can be lesser than rxQueues and have correct mapping of memory regions.
Also, the patch fixes memory region check as 16 queues are allowed on
both RX and TX.
Fixes: 6a113992060e ("net/vmxnet3: add cmd to register memory region")
Signed-off-by: Ronak Doshi <ronak.doshi@broadcom.com>
Acked-by: Jochen Behrens <jochen.behrens@broadcom.com>
---
drivers/net/vmxnet3/base/vmxnet3_defs.h | 3 +++
drivers/net/vmxnet3/vmxnet3_ethdev.c | 23 ++++++++++++++---------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/drivers/net/vmxnet3/base/vmxnet3_defs.h b/drivers/net/vmxnet3/base/vmxnet3_defs.h
index a6bb281d8d..15d4d88c5c 100644
--- a/drivers/net/vmxnet3/base/vmxnet3_defs.h
+++ b/drivers/net/vmxnet3/base/vmxnet3_defs.h
@@ -598,6 +598,9 @@ enum vmxnet3_intr_type {
/* addition 1 for events */
#define VMXNET3_MAX_INTRS 25
+/* Max number of queues that can request memreg, for both RX and TX. */
+#define VMXNET3_MAX_MEMREG_QUEUES 16
+
/* Version 6 and later will use below macros */
#define VMXNET3_EXT_MAX_TX_QUEUES 32
#define VMXNET3_EXT_MAX_RX_QUEUES 32
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index 8305c27d15..d4e20800b4 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -800,14 +800,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
Vmxnet3_DriverShared *shared = hw->shared;
Vmxnet3_CmdInfo *cmdInfo;
struct rte_mempool *mp[VMXNET3_MAX_RX_QUEUES];
- uint8_t index[VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES];
- uint32_t num, i, j, size;
+ uint16_t index[VMXNET3_MAX_MEMREG_QUEUES];
+ uint16_t tx_index_mask;
+ uint32_t num, tx_num, i, j, size;
if (hw->memRegsPA == 0) {
const struct rte_memzone *mz;
size = sizeof(Vmxnet3_MemRegs) +
- (VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES) *
+ (2 * VMXNET3_MAX_MEMREG_QUEUES) *
sizeof(Vmxnet3_MemoryRegion);
mz = gpa_zone_reserve(dev, size, "memRegs", rte_socket_id(), 8,
@@ -821,7 +822,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
hw->memRegsPA = mz->iova;
}
- num = hw->num_rx_queues;
+ num = RTE_MIN(hw->num_rx_queues, VMXNET3_MAX_MEMREG_QUEUES);
+ tx_num = RTE_MIN(hw->num_tx_queues, VMXNET3_MAX_MEMREG_QUEUES);
+ tx_index_mask = (uint16_t)((1UL << tx_num) - 1);
for (i = 0; i < num; i++) {
vmxnet3_rx_queue_t *rxq = dev->data->rx_queues[i];
@@ -856,13 +859,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
(uintptr_t)STAILQ_FIRST(&mp[i]->mem_list)->iova;
mr->length = STAILQ_FIRST(&mp[i]->mem_list)->len <= INT32_MAX ?
STAILQ_FIRST(&mp[i]->mem_list)->len : INT32_MAX;
- mr->txQueueBits = index[i];
mr->rxQueueBits = index[i];
+ /* tx uses same pool, but there may be fewer tx queues */
+ mr->txQueueBits = index[i] & tx_index_mask;
PMD_INIT_LOG(INFO,
"index: %u startPA: %" PRIu64 " length: %u, "
- "rxBits: %x",
- j, mr->startPA, mr->length, mr->rxQueueBits);
+ "rxBits: %x, txBits: %x",
+ j, mr->startPA, mr->length,
+ mr->rxQueueBits, mr->txQueueBits);
j++;
}
hw->memRegs->numRegs = j;
@@ -1086,8 +1091,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
}
/* Check memregs restrictions first */
- if (dev->data->nb_rx_queues <= VMXNET3_MAX_RX_QUEUES &&
- dev->data->nb_tx_queues <= VMXNET3_MAX_TX_QUEUES) {
+ if (dev->data->nb_rx_queues <= VMXNET3_MAX_MEMREG_QUEUES &&
+ dev->data->nb_tx_queues <= VMXNET3_MAX_MEMREG_QUEUES) {
ret = vmxnet3_dev_setup_memreg(dev);
if (ret == 0) {
VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:17.976721846 +0200
+++ 0012-net-vmxnet3-fix-mapping-of-mempools-to-queues.patch 2025-12-21 16:54:16.678079000 +0200
@@ -1 +1 @@
-From 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 Mon Sep 17 00:00:00 2001
+From 5825eb0e0b2e03ef1a3bb2a4a849ffa7c3506c95 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -39 +40 @@
-index 15ca25b187..e19aa43888 100644
+index 8305c27d15..d4e20800b4 100644
@@ -42 +43 @@
-@@ -801,14 +801,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -800,14 +800,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -61 +62 @@
-@@ -822,7 +823,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -821,7 +822,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -72 +73 @@
-@@ -857,13 +860,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -856,13 +859,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -91 +92 @@
-@@ -1087,8 +1092,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
+@@ -1086,8 +1091,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: increase size of set cores list command' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (10 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/dpaa2: fix shaper rate' " Shani Peretz
` (79 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dengdui Huang; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f01ca7e91c6fb640156bd2724091092b9d569873
Thanks.
Shani
---
From f01ca7e91c6fb640156bd2724091092b9d569873 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Jul 2025 20:51:59 +0800
Subject: [PATCH] app/testpmd: increase size of set cores list command
[ upstream commit d0f4f0779898e41a940e9a6f83f782750ffbfbb7 ]
The cmdline_fixed_string_t has a length of only 128, which will
become insufficient when there are many cores, so it should be
replaced with a cmdline_multi_string_t of larger capacity.
Fixes: af75078fece3 ("first public release")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/cmdline.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 553fd8c422..8ecfc0666a 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -3565,7 +3565,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
value = 0;
nb_item = 0;
value_ok = 0;
- for (i = 0; i < strnlen(str, STR_TOKEN_SIZE); i++) {
+ for (i = 0; i < strnlen(str, STR_MULTI_TOKEN_SIZE); i++) {
c = str[i];
if ((c >= '0') && (c <= '9')) {
value = (unsigned int) (value * 10 + (c - '0'));
@@ -3616,7 +3616,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
struct cmd_set_list_result {
cmdline_fixed_string_t cmd_keyword;
cmdline_fixed_string_t list_name;
- cmdline_fixed_string_t list_of_items;
+ cmdline_multi_string_t list_of_items;
};
static void cmd_set_list_parsed(void *parsed_result,
@@ -3665,7 +3665,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
"corelist#portlist");
static cmdline_parse_token_string_t cmd_set_list_of_items =
TOKEN_STRING_INITIALIZER(struct cmd_set_list_result, list_of_items,
- NULL);
+ TOKEN_STRING_MULTI);
static cmdline_parse_inst_t cmd_set_fwd_list = {
.f = cmd_set_list_parsed,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.030164387 +0200
+++ 0013-app-testpmd-increase-size-of-set-cores-list-command.patch 2025-12-21 16:54:16.694070000 +0200
@@ -1 +1 @@
-From d0f4f0779898e41a940e9a6f83f782750ffbfbb7 Mon Sep 17 00:00:00 2001
+From f01ca7e91c6fb640156bd2724091092b9d569873 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d0f4f0779898e41a940e9a6f83f782750ffbfbb7 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 7b4e27eddf..801dee4456 100644
+index 553fd8c422..8ecfc0666a 100644
@@ -23 +24 @@
-@@ -4063,7 +4063,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
+@@ -3565,7 +3565,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
@@ -32 +33 @@
-@@ -4114,7 +4114,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
+@@ -3616,7 +3616,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
@@ -41 +42 @@
-@@ -4163,7 +4163,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
+@@ -3665,7 +3665,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: fix shaper rate' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (11 preceding siblings ...)
2025-12-21 14:56 ` patch 'app/testpmd: increase size of set cores list command' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: monitor state of primary process' " Shani Peretz
` (78 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/8d75fd96c6c66d97fe1eb34f99f6cebf511dd39d
Thanks.
Shani
---
From 8d75fd96c6c66d97fe1eb34f99f6cebf511dd39d Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <g.singh@nxp.com>
Date: Wed, 2 Jul 2025 15:21:41 +0530
Subject: [PATCH] net/dpaa2: fix shaper rate
[ upstream commit 953b5576093dcd148b674bd2d53e5482970c1270 ]
This patch fixes the shaper rate by configuring the
user given rate in bytes. Earlier driver was considering
the user given rate value in bits.
Fixes: ac624068ee25 ("net/dpaa2: support traffic management")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa2/dpaa2_tm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_tm.c b/drivers/net/dpaa2/dpaa2_tm.c
index c4efdf0af8..23c68be5be 100644
--- a/drivers/net/dpaa2/dpaa2_tm.c
+++ b/drivers/net/dpaa2/dpaa2_tm.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021 NXP
+ * Copyright 2020-2024 NXP
*/
#include <rte_ethdev.h>
@@ -726,12 +726,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
tx_cr_shaper.max_burst_size =
node->profile->params.committed.size;
tx_cr_shaper.rate_limit =
- node->profile->params.committed.rate /
- (1024 * 1024);
+ (node->profile->params.committed.rate /
+ (1024 * 1024)) * 8;
tx_er_shaper.max_burst_size =
node->profile->params.peak.size;
tx_er_shaper.rate_limit =
- node->profile->params.peak.rate / (1024 * 1024);
+ (node->profile->params.peak.rate / (1024 * 1024)) * 8;
/* root node */
if (node->parent == NULL) {
DPAA2_PMD_DEBUG("LNI S.rate = %u, burst =%u",
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.092141515 +0200
+++ 0014-net-dpaa2-fix-shaper-rate.patch 2025-12-21 16:54:16.701146000 +0200
@@ -1 +1 @@
-From 953b5576093dcd148b674bd2d53e5482970c1270 Mon Sep 17 00:00:00 2001
+From 8d75fd96c6c66d97fe1eb34f99f6cebf511dd39d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 953b5576093dcd148b674bd2d53e5482970c1270 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f91392b092..dbf66c756e 100644
+index c4efdf0af8..23c68be5be 100644
@@ -24 +25 @@
-- * Copyright 2020-2023 NXP
+- * Copyright 2020-2021 NXP
@@ -29 +30 @@
-@@ -733,12 +733,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
+@@ -726,12 +726,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: monitor state of primary process' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (12 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/dpaa2: fix shaper rate' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/gve: fix disabling interrupts on DQ' " Shani Peretz
` (77 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/dbfa8cc202c0101608318ad423e392bb31643352
Thanks.
Shani
---
From dbfa8cc202c0101608318ad423e392bb31643352 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Mon, 4 Aug 2025 07:33:22 -0400
Subject: [PATCH] app/testpmd: monitor state of primary process
[ upstream commit 7628f5bbb7e882e57c956d98731cac12a436c9a7 ]
In secondary processes, accessing device after primary has exited
will cause crash.
This patch adds a mechanism in testpmd to monitor the primary process
from the secondary process.
When primary process exits it forces secondary to exit avoiding
issues from cleanup logic.
Fixes: a550baf24af9 ("app/testpmd: support multi-process")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test-pmd/testpmd.c | 47 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 9e4e99e53b..d7db1d6afb 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -101,12 +101,14 @@
uint16_t verbose_level = 0; /**< Silent by default. */
int testpmd_logtype; /**< Log type for testpmd logs */
+/* Maximum delay for exiting after primary process. */
+#define MONITOR_INTERVAL (500 * 1000)
+
/* use main core for command line ? */
uint8_t interactive = 0;
uint8_t auto_start = 0;
uint8_t tx_first;
char cmdline_filename[PATH_MAX] = {0};
-
/*
* NUMA support configuration.
* When set, the NUMA support attempts to dispatch the allocation of the
@@ -4524,6 +4526,38 @@ signal_handler(int signum __rte_unused)
prompt_exit();
}
+#ifndef RTE_EXEC_ENV_WINDOWS
+/* Alarm signal handler, used to check that primary process */
+static void
+monitor_primary(void *arg __rte_unused)
+{
+ if (rte_eal_primary_proc_alive(NULL)) {
+ rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+ } else {
+ /*
+ * If primary process exits, then all the device information
+ * is no longer valid. Calling any cleanup code is going to
+ * run into use after free.
+ */
+ fprintf(stderr, "\nPrimary process is no longer active, exiting...\n");
+ exit(EXIT_FAILURE);
+ }
+}
+
+/* Setup handler to check when primary exits. */
+static int
+enable_primary_monitor(void)
+{
+ return rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+}
+
+static void
+disable_primary_monitor(void)
+{
+ rte_eal_alarm_cancel(monitor_primary, NULL);
+}
+#endif
+
int
main(int argc, char** argv)
{
@@ -4555,6 +4589,12 @@ main(int argc, char** argv)
rte_exit(EXIT_FAILURE, "Cannot init EAL: %s\n",
rte_strerror(rte_errno));
+#ifndef RTE_EXEC_ENV_WINDOWS
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
+ enable_primary_monitor() < 0)
+ rte_exit(EXIT_FAILURE, "Cannot setup primary monitor");
+#endif
+
/* allocate port structures, and init them */
init_port();
@@ -4756,6 +4796,11 @@ main(int argc, char** argv)
}
}
+#ifndef RTE_EXEC_ENV_WINDOWS
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY)
+ disable_primary_monitor();
+#endif
+
pmd_test_exit();
#ifdef RTE_LIB_PDUMP
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.139306261 +0200
+++ 0015-app-testpmd-monitor-state-of-primary-process.patch 2025-12-21 16:54:16.710076000 +0200
@@ -1 +1 @@
-From 7628f5bbb7e882e57c956d98731cac12a436c9a7 Mon Sep 17 00:00:00 2001
+From dbfa8cc202c0101608318ad423e392bb31643352 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7628f5bbb7e882e57c956d98731cac12a436c9a7 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index db52ed22f1..0f58a31eb5 100644
+index 9e4e99e53b..d7db1d6afb 100644
@@ -27 +28 @@
-@@ -102,13 +102,15 @@
+@@ -101,12 +101,14 @@
@@ -39 +39,0 @@
- bool echo_cmdline_file;
@@ -44 +44 @@
-@@ -4363,6 +4365,38 @@ signal_handler(int signum __rte_unused)
+@@ -4524,6 +4526,38 @@ signal_handler(int signum __rte_unused)
@@ -83 +83 @@
-@@ -4394,6 +4428,12 @@ main(int argc, char** argv)
+@@ -4555,6 +4589,12 @@ main(int argc, char** argv)
@@ -96 +96 @@
-@@ -4587,6 +4627,11 @@ main(int argc, char** argv)
+@@ -4756,6 +4796,11 @@ main(int argc, char** argv)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/gve: fix disabling interrupts on DQ' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (13 preceding siblings ...)
2025-12-21 14:56 ` patch 'app/testpmd: monitor state of primary process' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: fix conntrack action query' " Shani Peretz
` (76 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Joshua Washington; +Cc: Praveen Kaligineedi, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/777a100ca784394be1a363b3f40c29914e2ab8fb
Thanks.
Shani
---
From 777a100ca784394be1a363b3f40c29914e2ab8fb Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 4 Aug 2025 13:50:24 -0700
Subject: [PATCH] net/gve: fix disabling interrupts on DQ
[ upstream commit 8a6418e11a4d9e3554d592b1b3e3957fea8e7cee ]
When starting Rx and Tx queues in the DQ queue format, the driver was
erroneously writing GVE_IRQ_MASK to the IRQ doorbell. GQ and DQ have
different interrupt register layouts, so writing this bit is incorrect.
Update the register write to properly enable NO_INT_MODE for DQO.
Fixes: b044845bb015 ("net/gve: support queue start/stop")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
---
drivers/net/gve/base/gve_desc_dqo.h | 4 ++++
drivers/net/gve/gve_rx_dqo.c | 4 +++-
drivers/net/gve/gve_tx_dqo.c | 4 +++-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/net/gve/base/gve_desc_dqo.h b/drivers/net/gve/base/gve_desc_dqo.h
index bb4a18d4d1..71d9d60bb9 100644
--- a/drivers/net/gve/base/gve_desc_dqo.h
+++ b/drivers/net/gve/base/gve_desc_dqo.h
@@ -248,4 +248,8 @@ GVE_CHECK_STRUCT_LEN(32, gve_rx_compl_desc_dqo);
*/
#define GVE_RX_BUF_THRESH_DQO 32
+/* GVE IRQ */
+#define GVE_NO_INT_MODE_DQO BIT(30)
+#define GVE_ITR_NO_UPDATE_DQO (3 << 3)
+
#endif /* _GVE_DESC_DQO_H_ */
diff --git a/drivers/net/gve/gve_rx_dqo.c b/drivers/net/gve/gve_rx_dqo.c
index 3f694a4d9a..bf8b3dbd36 100644
--- a/drivers/net/gve/gve_rx_dqo.c
+++ b/drivers/net/gve/gve_rx_dqo.c
@@ -355,7 +355,9 @@ gve_rx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t rx_queue_id)
rxq->qrx_tail = &hw->db_bar2[rte_be_to_cpu_32(rxq->qres->db_index)];
- rte_write32(rte_cpu_to_be_32(GVE_IRQ_MASK), rxq->ntfy_addr);
+ rte_write32(rte_cpu_to_le_32(GVE_NO_INT_MODE_DQO |
+ GVE_ITR_NO_UPDATE_DQO),
+ rxq->ntfy_addr);
ret = gve_rxq_mbufs_alloc_dqo(rxq);
if (ret != 0) {
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 9550fe58c7..95a02bab17 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -408,7 +408,9 @@ gve_tx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t tx_queue_id)
txq->qtx_head =
&hw->cnt_array[rte_be_to_cpu_32(txq->qres->counter_index)];
- rte_write32(rte_cpu_to_be_32(GVE_IRQ_MASK), txq->ntfy_addr);
+ rte_write32(rte_cpu_to_le_32(GVE_NO_INT_MODE_DQO |
+ GVE_ITR_NO_UPDATE_DQO),
+ txq->ntfy_addr);
dev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.183464625 +0200
+++ 0016-net-gve-fix-disabling-interrupts-on-DQ.patch 2025-12-21 16:54:16.720046000 +0200
@@ -1 +1 @@
-From 8a6418e11a4d9e3554d592b1b3e3957fea8e7cee Mon Sep 17 00:00:00 2001
+From 777a100ca784394be1a363b3f40c29914e2ab8fb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8a6418e11a4d9e3554d592b1b3e3957fea8e7cee ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -36 +37 @@
-index 285c6ddd61..0103add985 100644
+index 3f694a4d9a..bf8b3dbd36 100644
@@ -39 +40 @@
-@@ -415,7 +415,9 @@ gve_rx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t rx_queue_id)
+@@ -355,7 +355,9 @@ gve_rx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t rx_queue_id)
@@ -51 +52 @@
-index 169c40d5b0..c36c215b94 100644
+index 9550fe58c7..95a02bab17 100644
@@ -54 +55 @@
-@@ -531,7 +531,9 @@ gve_tx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t tx_queue_id)
+@@ -408,7 +408,9 @@ gve_tx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t tx_queue_id)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: fix conntrack action query' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (14 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/gve: fix disabling interrupts on DQ' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Shani Peretz
` (75 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Khadem Ullah, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/1950010cffcb42a00ffc9cbe3cb846186f362041
Thanks.
Shani
---
From 1950010cffcb42a00ffc9cbe3cb846186f362041 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 12 Aug 2025 11:43:23 +0200
Subject: [PATCH] app/testpmd: fix conntrack action query
[ upstream commit d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 ]
RTE_FLOW_ACTION_TYPE_CONNTRACK handling was missing in a switch case
which filtered action types which have action query support in testpmd.
This prevented the conntrack query to succeed.
Fixes: 4d07cbefe3ba ("app/testpmd: add commands for conntrack")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/test-pmd/config.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 25a4ec04a4..55637ba643 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -2083,6 +2083,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
case RTE_FLOW_ACTION_TYPE_AGE:
case RTE_FLOW_ACTION_TYPE_COUNT:
case RTE_FLOW_ACTION_TYPE_QUOTA:
+ case RTE_FLOW_ACTION_TYPE_CONNTRACK:
break;
default:
fprintf(stderr,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.225516667 +0200
+++ 0017-app-testpmd-fix-conntrack-action-query.patch 2025-12-21 16:54:16.730021000 +0200
@@ -1 +1 @@
-From d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 Mon Sep 17 00:00:00 2001
+From 1950010cffcb42a00ffc9cbe3cb846186f362041 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 85f148a174..c1bd6921ea 100644
+index 25a4ec04a4..55637ba643 100644
@@ -24 +25 @@
-@@ -2171,6 +2171,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
+@@ -2083,6 +2083,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: add conntrack state inspect command to testpmd guide' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (15 preceding siblings ...)
2025-12-21 14:56 ` patch 'app/testpmd: fix conntrack action query' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Shani Peretz
` (74 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/c7f35b49f6d572c997bd68a1683cb165a2b66a56
Thanks.
Shani
---
From c7f35b49f6d572c997bd68a1683cb165a2b66a56 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Fri, 15 Aug 2025 07:15:14 -0400
Subject: [PATCH] doc: add conntrack state inspect command to testpmd guide
[ upstream commit 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 ]
Add command in testpmd user guide to inspect conntrack states.
The conntract possible CT states are:
SYN_RECV, ESTABLISHED, FIN_WAIT, CLOSE_WAIT, LAST_ACK and
TIME_WAIT.
Fixes: 4d07cbefe3ba0 ("app/testpmd: add commands for conntrack")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 9a0dd2e5d8..493ac7c0af 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -5221,6 +5221,10 @@ rules like above for the peer port.
testpmd> flow indirect_action 0 update 0 action conntrack_update dir / end
+Inspect the conntrack action state through the following command::
+
+ testpmd> flow indirect_action 0 query <action ID>
+
Sample meter with policy rules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.269526759 +0200
+++ 0018-doc-add-conntrack-state-inspect-command-to-testpmd-g.patch 2025-12-21 16:54:16.738092000 +0200
@@ -1 +1 @@
-From 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 Mon Sep 17 00:00:00 2001
+From c7f35b49f6d572c997bd68a1683cb165a2b66a56 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index ea0ab9bcab..fefcf5b419 100644
+index 9a0dd2e5d8..493ac7c0af 100644
@@ -24 +25 @@
-@@ -5392,6 +5392,10 @@ rules like above for the peer port.
+@@ -5221,6 +5221,10 @@ rules like above for the peer port.
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/gve: free Rx mbufs if allocation fails on ring setup' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (16 preceding siblings ...)
2025-12-21 14:56 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Shani Peretz
` (73 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, Ziwei Xiao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/d2a825390dc8437192bcb6b78e850a74bc7dce88
Thanks.
Shani
---
From d2a825390dc8437192bcb6b78e850a74bc7dce88 Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 25 Aug 2025 17:03:34 -0700
Subject: [PATCH] net/gve: free Rx mbufs if allocation fails on ring setup
[ upstream commit fa48f964253ba018b4a3054246a6e26b31b5c8b0 ]
When creating new RX rings, one less than the number of buffers in the
ring need to be allocated. It is possible that only a part of the
allocation is successful, resulting in a failure to create the rings.
In this case, the driver should free the buffers which were successfully
allocated to avoid a memory leak in case the application does not
automatically exit.
Fixes: 265daac8a53a ("net/gve: fix mbuf allocation memory leak for DQ Rx")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Ankit Garg <nktgrg@google.com>
Reviewed-by: Ziwei Xiao <ziweixiao@google.com>
---
drivers/net/gve/gve_rx_dqo.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/net/gve/gve_rx_dqo.c b/drivers/net/gve/gve_rx_dqo.c
index bf8b3dbd36..d5c770d7af 100644
--- a/drivers/net/gve/gve_rx_dqo.c
+++ b/drivers/net/gve/gve_rx_dqo.c
@@ -316,14 +316,13 @@ gve_rxq_mbufs_alloc_dqo(struct gve_rx_queue *rxq)
rxq->stats.no_mbufs_bulk++;
for (i = 0; i < rx_mask; i++) {
nmb = rte_pktmbuf_alloc(rxq->mpool);
- if (!nmb)
- break;
+ if (!nmb) {
+ rxq->stats.no_mbufs++;
+ gve_release_rxq_mbufs_dqo(rxq);
+ return -ENOMEM;
+ }
rxq->sw_ring[i] = nmb;
}
- if (i < rxq->nb_rx_desc - 1) {
- rxq->stats.no_mbufs += rx_mask - i;
- return -ENOMEM;
- }
}
for (i = 0; i < rx_mask; i++) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.318106610 +0200
+++ 0019-net-gve-free-Rx-mbufs-if-allocation-fails-on-ring-se.patch 2025-12-21 16:54:16.745086000 +0200
@@ -1 +1 @@
-From fa48f964253ba018b4a3054246a6e26b31b5c8b0 Mon Sep 17 00:00:00 2001
+From d2a825390dc8437192bcb6b78e850a74bc7dce88 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fa48f964253ba018b4a3054246a6e26b31b5c8b0 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 0103add985..cd85d90bb6 100644
+index bf8b3dbd36..d5c770d7af 100644
@@ -27 +28 @@
-@@ -376,14 +376,13 @@ gve_rxq_mbufs_alloc_dqo(struct gve_rx_queue *rxq)
+@@ -316,14 +316,13 @@ gve_rxq_mbufs_alloc_dqo(struct gve_rx_queue *rxq)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: validate DSCP and VLAN for meter creation' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (17 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix min and max MTU reporting' " Shani Peretz
` (72 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/c5f6a63d8abe7a665bbd9e98e42a02e0a41ace9d
Thanks.
Shani
---
From c5f6a63d8abe7a665bbd9e98e42a02e0a41ace9d Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Thu, 28 Aug 2025 01:29:01 -0400
Subject: [PATCH] app/testpmd: validate DSCP and VLAN for meter creation
[ upstream commit 00092e969aad2fb2a2017b7eec86f033d4527950 ]
Add validation mechanism for meter creation. The maximum
possible entries are
[<dscp_tbl_entry0> <dscp_tbl_entry1> ...<dscp_tbl_entry63>]
[<vlan_tbl_entry0> <vlan_tbl_entry1> ... <vlan_tbl_entry15>].
Currently, testpmd allows any input table entries for DSCP
and VLAN tables.
This patch validates the maximum possible DSCP and VLAN table
entries for meter creation.
Fixes: 9f5488e326d3b ("app/testpmd: support different input color method")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/test-pmd/cmdline_mtr.c | 30 +++++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/app/test-pmd/cmdline_mtr.c b/app/test-pmd/cmdline_mtr.c
index e16c5b268f..0c5897ada8 100644
--- a/app/test-pmd/cmdline_mtr.c
+++ b/app/test-pmd/cmdline_mtr.c
@@ -85,15 +85,35 @@ parse_uint(uint64_t *value, const char *str)
return 0;
}
+static int
+validate_input_color_table_entries(char *str)
+{
+ char *saveptr;
+ char *token = strtok_r(str, PARSE_DELIMITER, &saveptr);
+ for (int i = 0; token != NULL; i++) {
+ if (i > ((MAX_DSCP_TABLE_ENTRIES + MAX_VLAN_TABLE_ENTRIES) - 1))
+ return -1;
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
+ }
+ return 0;
+}
+
static int
parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
enum rte_color **vlan_table)
{
enum rte_color *vlan, *dscp;
- char *token;
+ char *token, *saveptr;
+ char *temp_str = strdup(str);
int i = 0;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ if (validate_input_color_table_entries(temp_str)) {
+ free(temp_str);
+ return -1;
+ }
+ free(temp_str);
+
+ token = strtok_r(str, PARSE_DELIMITER, &saveptr);
if (token == NULL)
return 0;
@@ -117,7 +137,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
if (i == MAX_DSCP_TABLE_ENTRIES)
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(dscp);
return -1;
@@ -126,7 +146,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
*dscp_table = dscp;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL)
return 0;
@@ -154,7 +174,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
if (i == MAX_VLAN_TABLE_ENTRIES)
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(vlan);
free(*dscp_table);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.361896464 +0200
+++ 0020-app-testpmd-validate-DSCP-and-VLAN-for-meter-creatio.patch 2025-12-21 16:54:16.750089000 +0200
@@ -1 +1 @@
-From 00092e969aad2fb2a2017b7eec86f033d4527950 Mon Sep 17 00:00:00 2001
+From c5f6a63d8abe7a665bbd9e98e42a02e0a41ace9d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 00092e969aad2fb2a2017b7eec86f033d4527950 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix min and max MTU reporting' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (18 preceding siblings ...)
2025-12-21 14:56 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix storage of shared Rx queues' " Shani Peretz
` (71 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9400a790b28c55b6ed0d94a8e666bce1fd5cd985
Thanks.
Shani
---
From 9400a790b28c55b6ed0d94a8e666bce1fd5cd985 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 4 Nov 2025 18:27:15 +0100
Subject: [PATCH] net/mlx5: fix min and max MTU reporting
[ upstream commit 44d657109216a32e8718446f20f91272e10575dd ]
mlx5 PMD used hardcoded and incorrect values when reporting
maximum MTU and maximum Rx packet length through rte_eth_dev_info_get().
This patch adds support for querying OS for minimum and maximum
allowed MTU values. Maximum Rx packet length is then calculated
based on these values.
On Linux, these values are queried through netlink,
using IFLA_MIN_MTU and IFLA_MAX_MTU attributes added in Linux 4.18.
Windows API unfortunately does not expose minimum and maximum
allowed MTU values. In this case, fallback hardcoded values
(working on currently supported HW) will be used.
Bugzilla ID: 1719
Fixes: e60fbd5b24fc ("mlx5: add device configure/start/stop")
Cc: stable@dpdk.org
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/common/mlx5/linux/mlx5_nl.c | 108 ++++++++++++++++++++++
drivers/common/mlx5/linux/mlx5_nl.h | 3 +
drivers/common/mlx5/version.map | 1 +
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 30 ++++++
drivers/net/mlx5/linux/mlx5_os.c | 2 +
drivers/net/mlx5/mlx5.h | 13 +++
drivers/net/mlx5/mlx5_ethdev.c | 42 ++++++++-
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 28 ++++++
drivers/net/mlx5/windows/mlx5_os.c | 2 +
9 files changed, 228 insertions(+), 1 deletion(-)
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index 28a1f56dba..15304bbfca 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -2032,3 +2032,111 @@ mlx5_nl_devlink_esw_multiport_get(int nlsk_fd, int family_id, const char *pci_ad
*enable ? "en" : "dis", pci_addr);
return ret;
}
+
+struct mlx5_mtu {
+ uint32_t min_mtu;
+ bool min_mtu_set;
+ uint32_t max_mtu;
+ bool max_mtu_set;
+};
+
+static int
+mlx5_nl_get_mtu_bounds_cb(struct nlmsghdr *nh, void *arg)
+{
+ size_t off = NLMSG_LENGTH(sizeof(struct ifinfomsg));
+ struct mlx5_mtu *out = arg;
+
+ while (off < nh->nlmsg_len) {
+ struct rtattr *ra = RTE_PTR_ADD(nh, off);
+ uint32_t *payload;
+
+ switch (ra->rta_type) {
+ case IFLA_MIN_MTU:
+ payload = RTA_DATA(ra);
+ out->min_mtu = *payload;
+ out->min_mtu_set = true;
+ break;
+ case IFLA_MAX_MTU:
+ payload = RTA_DATA(ra);
+ out->max_mtu = *payload;
+ out->max_mtu_set = true;
+ break;
+ default:
+ /* Nothing to do for other attributes. */
+ break;
+ }
+ off += RTA_ALIGN(ra->rta_len);
+ }
+
+ return 0;
+}
+
+/**
+ * Query minimum and maximum allowed MTU values for given Linux network interface.
+ *
+ * This function queries the following interface attributes exposed in netlink since Linux 4.18:
+ *
+ * - IFLA_MIN_MTU - minimum allowed MTU
+ * - IFLA_MAX_MTU - maximum allowed MTU
+ *
+ * @param[in] nl
+ * Netlink socket of the ROUTE kind (NETLINK_ROUTE).
+ * @param[in] ifindex
+ * Linux network device index.
+ * @param[out] min_mtu
+ * Pointer to minimum allowed MTU. Populated only if both minimum and maximum MTU was queried.
+ * @param[out] max_mtu
+ * Pointer to maximum allowed MTU. Populated only if both minimum and maximum MTU was queried.
+ *
+ * @return
+ * 0 on success, negative on error and rte_errno is set.
+ *
+ * Known errors:
+ *
+ * - (-EINVAL) - either @p min_mtu or @p max_mtu is NULL.
+ * - (-ENOENT) - either minimum or maximum allowed MTU was not found in interface attributes.
+ */
+int
+mlx5_nl_get_mtu_bounds(int nl, unsigned int ifindex, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ struct mlx5_mtu out = { 0 };
+ struct {
+ struct nlmsghdr nh;
+ struct ifinfomsg info;
+ } req = {
+ .nh = {
+ .nlmsg_len = NLMSG_LENGTH(sizeof(req.info)),
+ .nlmsg_type = RTM_GETLINK,
+ .nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK,
+ },
+ .info = {
+ .ifi_family = AF_UNSPEC,
+ .ifi_index = ifindex,
+ },
+ };
+ uint32_t sn = MLX5_NL_SN_GENERATE;
+ int ret;
+
+ if (min_mtu == NULL || max_mtu == NULL) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+
+ ret = mlx5_nl_send(nl, &req.nh, sn);
+ if (ret < 0)
+ return ret;
+
+ ret = mlx5_nl_recv(nl, sn, mlx5_nl_get_mtu_bounds_cb, &out);
+ if (ret < 0)
+ return ret;
+
+ if (!out.min_mtu_set || !out.max_mtu_set) {
+ rte_errno = ENOENT;
+ return -rte_errno;
+ }
+
+ *min_mtu = out.min_mtu;
+ *max_mtu = out.max_mtu;
+
+ return ret;
+}
diff --git a/drivers/common/mlx5/linux/mlx5_nl.h b/drivers/common/mlx5/linux/mlx5_nl.h
index 580de3b769..34306258ec 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.h
+++ b/drivers/common/mlx5/linux/mlx5_nl.h
@@ -87,4 +87,7 @@ __rte_internal
int mlx5_nl_devlink_esw_multiport_get(int nlsk_fd, int family_id,
const char *pci_addr, int *enable);
+__rte_internal
+int mlx5_nl_get_mtu_bounds(int nl, unsigned int ifindex, uint16_t *min_mtu, uint16_t *max_mtu);
+
#endif /* RTE_PMD_MLX5_NL_H_ */
diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
index 074eed46fd..e43164235e 100644
--- a/drivers/common/mlx5/version.map
+++ b/drivers/common/mlx5/version.map
@@ -142,6 +142,7 @@ INTERNAL {
mlx5_nl_vf_mac_addr_modify; # WINDOWS_NO_EXPORT
mlx5_nl_vlan_vmwa_create; # WINDOWS_NO_EXPORT
mlx5_nl_vlan_vmwa_delete; # WINDOWS_NO_EXPORT
+ mlx5_nl_get_mtu_bounds; # WINDOWS_NO_EXPORT
mlx5_os_umem_dereg;
mlx5_os_umem_reg;
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index 1d999ef66b..4d126751a2 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -242,6 +242,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
return mlx5_ifreq_by_ifname(ifname, req, ifr);
}
+/**
+ * Get device minimum and maximum allowed MTU values.
+ *
+ * @param dev
+ * Pointer to Ethernet device.
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ *
+ * @return
+ * 0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+int
+mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ struct mlx5_priv *priv = dev->data->dev_private;
+ int nl_route;
+ int ret;
+
+ nl_route = mlx5_nl_init(NETLINK_ROUTE, 0);
+ if (nl_route < 0)
+ return nl_route;
+
+ ret = mlx5_nl_get_mtu_bounds(nl_route, priv->if_index, min_mtu, max_mtu);
+
+ close(nl_route);
+ return ret;
+}
+
/**
* Get device MTU.
*
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index c6e5e7b425..d1ccec71e9 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1521,6 +1521,8 @@ err_secondary:
eth_dev->data->mac_addrs = priv->mac;
eth_dev->device = dpdk_dev;
eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+ /* Fetch minimum and maximum allowed MTU from the device. */
+ mlx5_get_mtu_bounds(eth_dev, &priv->min_mtu, &priv->max_mtu);
/* Configure the first MAC address by default. */
if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
DRV_LOG(ERR,
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 75b822785b..1b784b109a 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -74,6 +74,15 @@
/* Maximal number of field/field parts to map into sample registers .*/
#define MLX5_FLEX_ITEM_MAPPING_NUM 32
+/* Number of bytes not included in MTU. */
+#define MLX5_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + RTE_VLAN_HLEN + RTE_ETHER_CRC_LEN)
+
+/* Minimum allowed MTU to be reported whenever PMD cannot query it from OS. */
+#define MLX5_ETH_MIN_MTU (RTE_ETHER_MIN_MTU)
+
+/* Maximum allowed MTU to be reported whenever PMD cannot query it from OS. */
+#define MLX5_ETH_MAX_MTU (9978)
+
enum mlx5_ipool_index {
#if defined(HAVE_IBV_FLOW_DV_SUPPORT) || !defined(HAVE_INFINIBAND_VERBS_H)
MLX5_IPOOL_DECAP_ENCAP = 0, /* Pool for encap/decap resource. */
@@ -1840,6 +1849,8 @@ struct mlx5_priv {
unsigned int vlan_filter_n; /* Number of configured VLAN filters. */
/* Device properties. */
uint16_t mtu; /* Configured MTU. */
+ uint16_t min_mtu; /* Minimum MTU allowed on the NIC. */
+ uint16_t max_mtu; /* Maximum MTU allowed on the NIC. */
unsigned int isolated:1; /* Whether isolated mode is enabled. */
unsigned int representor:1; /* Device is a port representor. */
unsigned int master:1; /* Device is a E-Switch master. */
@@ -2133,6 +2144,7 @@ eth_rx_burst_t mlx5_select_rx_function(struct rte_eth_dev *dev);
struct mlx5_priv *mlx5_port_to_eswitch_info(uint16_t port, bool valid);
struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
int mlx5_dev_configure_rss_reta(struct rte_eth_dev *dev);
+void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu);
/* mlx5_ethdev_os.c */
@@ -2171,6 +2183,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
uint16_t *n_stats, uint16_t *n_stats_sec);
void mlx5_os_stats_init(struct rte_eth_dev *dev);
int mlx5_get_flag_dropless_rq(struct rte_eth_dev *dev);
+int mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu);
/* mlx5_mac.c */
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index dbfd46ce1c..39506680a2 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -352,9 +352,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
unsigned int max;
uint16_t max_wqe;
+ info->min_mtu = priv->min_mtu;
+ info->max_mtu = priv->max_mtu;
+ info->max_rx_pktlen = info->max_mtu + MLX5_ETH_OVERHEAD;
/* FIXME: we should ask the device for these values. */
info->min_rx_bufsize = 32;
- info->max_rx_pktlen = 65536;
info->max_lro_pkt_size = MLX5_MAX_LRO_SIZE;
/*
* Since we need one CQ per QP, the limit is the minimum number
@@ -836,3 +838,41 @@ mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
cap->tx_cap.rte_memory = hca_attr->hairpin_sq_wq_in_host_mem;
return 0;
}
+
+/**
+ * Query minimum and maximum allowed MTU value on the device.
+ *
+ * This functions will always return valid MTU bounds.
+ * In case platform-specific implementation fails or current platform does not support it,
+ * the fallback default values will be used.
+ *
+ * @param[in] dev
+ * Pointer to Ethernet device
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ */
+void
+mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ int ret;
+
+ MLX5_ASSERT(min_mtu != NULL);
+ MLX5_ASSERT(max_mtu != NULL);
+
+ ret = mlx5_os_get_mtu_bounds(dev, min_mtu, max_mtu);
+ if (ret < 0) {
+ if (ret != -ENOTSUP)
+ DRV_LOG(INFO, "port %u failed to query MTU bounds, using fallback values",
+ dev->data->port_id);
+ *min_mtu = MLX5_ETH_MIN_MTU;
+ *max_mtu = MLX5_ETH_MAX_MTU;
+
+ /* This function does not fail. Clear rte_errno. */
+ rte_errno = 0;
+ }
+
+ DRV_LOG(INFO, "port %u minimum MTU is %u", dev->data->port_id, *min_mtu);
+ DRV_LOG(INFO, "port %u maximum MTU is %u", dev->data->port_id, *max_mtu);
+}
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 49f750be68..4f43b95a09 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -71,6 +71,34 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
return 0;
}
+/**
+ * Get device minimum and maximum allowed MTU.
+ *
+ * Windows API does not expose minimum and maximum allowed MTU.
+ * In this case, this just returns (-ENOTSUP) to allow platform-independent code
+ * to fallback to default values.
+ *
+ * @param dev
+ * Pointer to Ethernet device.
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ *
+ * @return
+ * (-ENOTSUP) - not supported on Windows
+ */
+int
+mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ RTE_SET_USED(dev);
+ RTE_SET_USED(min_mtu);
+ RTE_SET_USED(max_mtu);
+
+ rte_errno = ENOTSUP;
+ return -rte_errno;
+}
+
/**
* Get device MTU.
*
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index a9614b125b..4cb9df1d5f 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -475,6 +475,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
eth_dev->data->mac_addrs = priv->mac;
eth_dev->device = dpdk_dev;
eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+ /* Fetch minimum and maximum allowed MTU from the device. */
+ mlx5_get_mtu_bounds(eth_dev, &priv->min_mtu, &priv->max_mtu);
/* Configure the first MAC address by default. */
if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
DRV_LOG(ERR,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.404105051 +0200
+++ 0021-net-mlx5-fix-min-and-max-MTU-reporting.patch 2025-12-21 16:54:16.776070000 +0200
@@ -1 +1 @@
-From 44d657109216a32e8718446f20f91272e10575dd Mon Sep 17 00:00:00 2001
+From 9400a790b28c55b6ed0d94a8e666bce1fd5cd985 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Wed, 16 Jul 2025 12:25:45 +0200
+Date: Tue, 4 Nov 2025 18:27:15 +0100
@@ -5,0 +6,2 @@
+[ upstream commit 44d657109216a32e8718446f20f91272e10575dd ]
+
@@ -27 +29 @@
- drivers/common/mlx5/linux/mlx5_nl.c | 109 ++++++++++++++++++++++
+ drivers/common/mlx5/linux/mlx5_nl.c | 108 ++++++++++++++++++++++
@@ -28,0 +31 @@
+ drivers/common/mlx5/version.map | 1 +
@@ -35 +38 @@
- 8 files changed, 228 insertions(+), 1 deletion(-)
+ 9 files changed, 228 insertions(+), 1 deletion(-)
@@ -38 +41 @@
-index 86166e92d0..dd69e229e3 100644
+index 28a1f56dba..15304bbfca 100644
@@ -41,3 +44,3 @@
-@@ -2247,3 +2247,112 @@ mlx5_nl_rdma_monitor_cap_get(int nl, uint8_t *cap)
- }
- return 0;
+@@ -2032,3 +2032,111 @@ mlx5_nl_devlink_esw_multiport_get(int nlsk_fd, int family_id, const char *pci_ad
+ *enable ? "en" : "dis", pci_addr);
+ return ret;
@@ -109 +111,0 @@
-+RTE_EXPORT_INTERNAL_SYMBOL(mlx5_nl_get_mtu_bounds)
@@ -155 +157 @@
-index e32080fa63..26923a88fd 100644
+index 580de3b769..34306258ec 100644
@@ -158,3 +160,3 @@
-@@ -117,4 +117,7 @@ void mlx5_nl_rdma_monitor_info_get(struct nlmsghdr *hdr, struct mlx5_nl_port_inf
- __rte_internal
- int mlx5_nl_rdma_monitor_cap_get(int nl, uint8_t *cap);
+@@ -87,4 +87,7 @@ __rte_internal
+ int mlx5_nl_devlink_esw_multiport_get(int nlsk_fd, int family_id,
+ const char *pci_addr, int *enable);
@@ -165,0 +168,12 @@
+diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
+index 074eed46fd..e43164235e 100644
+--- a/drivers/common/mlx5/version.map
++++ b/drivers/common/mlx5/version.map
+@@ -142,6 +142,7 @@ INTERNAL {
+ mlx5_nl_vf_mac_addr_modify; # WINDOWS_NO_EXPORT
+ mlx5_nl_vlan_vmwa_create; # WINDOWS_NO_EXPORT
+ mlx5_nl_vlan_vmwa_delete; # WINDOWS_NO_EXPORT
++ mlx5_nl_get_mtu_bounds; # WINDOWS_NO_EXPORT
+
+ mlx5_os_umem_dereg;
+ mlx5_os_umem_reg;
@@ -167 +181 @@
-index 9daeda5435..a371c2c747 100644
+index 1d999ef66b..4d126751a2 100644
@@ -170 +184 @@
-@@ -159,6 +159,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
+@@ -242,6 +242,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
@@ -208 +222 @@
-index 696a3e12c7..2bc8ca9284 100644
+index c6e5e7b425..d1ccec71e9 100644
@@ -211 +225 @@
-@@ -1562,6 +1562,8 @@ err_secondary:
+@@ -1521,6 +1521,8 @@ err_secondary:
@@ -221 +235 @@
-index c08894cd03..53f0a27445 100644
+index 75b822785b..1b784b109a 100644
@@ -240 +254 @@
-@@ -1981,6 +1990,8 @@ struct mlx5_priv {
+@@ -1840,6 +1849,8 @@ struct mlx5_priv {
@@ -249 +263,3 @@
-@@ -2333,6 +2344,7 @@ struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
+@@ -2133,6 +2144,7 @@ eth_rx_burst_t mlx5_select_rx_function(struct rte_eth_dev *dev);
+ struct mlx5_priv *mlx5_port_to_eswitch_info(uint16_t port, bool valid);
+ struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
@@ -251,2 +266,0 @@
- uint64_t mlx5_get_restore_flags(struct rte_eth_dev *dev,
- enum rte_eth_dev_operation op);
@@ -257 +271 @@
-@@ -2372,6 +2384,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
+@@ -2171,6 +2183,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
@@ -266 +280 @@
-index 68d1c1bfa7..7747b0c869 100644
+index dbfd46ce1c..39506680a2 100644
@@ -269 +283 @@
-@@ -360,9 +360,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
+@@ -352,9 +352,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
@@ -282,2 +296,2 @@
-@@ -863,3 +865,41 @@ mlx5_get_restore_flags(__rte_unused struct rte_eth_dev *dev,
- /* mlx5 PMD does not require any configuration restore. */
+@@ -836,3 +838,41 @@ mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
+ cap->tx_cap.rte_memory = hca_attr->hairpin_sq_wq_in_host_mem;
@@ -364 +378 @@
-index d583730066..c4e3430bdc 100644
+index a9614b125b..4cb9df1d5f 100644
@@ -367 +381 @@
-@@ -477,6 +477,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -475,6 +475,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix storage of shared Rx queues' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (19 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix min and max MTU reporting' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
` (70 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/0f31adb42ed2b5f73c43f06664c48be924fcadc9
Thanks.
Shani
---
From 0f31adb42ed2b5f73c43f06664c48be924fcadc9 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Thu, 31 Jul 2025 13:41:38 +0300
Subject: [PATCH] net/mlx5: fix storage of shared Rx queues
[ upstream commit a0a7903376f2252b06ae272b2c3b69e9b939de04 ]
The MLX5 PMD maintains 2 lists for Rx queues:
- mlx5_priv::rxqsctrl - for non-shared and shared Rx queues
- mlx5_dev_ctx_shared::shared_rxqs - for shared Rx queues only
The PMD used the `rxqsctrl` as the primary list for Rx queues
maintenance.
The PMD wipes out port mlx5_priv object after an application closed
the port.
If PMD shared Rx queues between the transfer proxy port and
representor ports and closed the transfer proxy port before
representor, the representor port cannot iterate its shared Rx queues
because Rx queues list head was wiped out.
The patch separates Rx queue storage list according to the list type:
- shared Rx queues are stored in the `shared_rxqs` only
- non-shared Rx queues are stored in the `rxqsctrl` list only.
Fixes: 6886b5f39d66 ("net/mlx5: fix hairpin queue release")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 13 ++++++++++---
drivers/net/mlx5/mlx5_flow.c | 6 ++++++
drivers/net/mlx5/mlx5_rxq.c | 6 ++++--
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index d1ccec71e9..326b7b7329 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -718,13 +718,20 @@ void
mlx5_os_free_shared_dr(struct mlx5_priv *priv)
{
struct mlx5_dev_ctx_shared *sh = priv->sh;
-#ifdef HAVE_MLX5DV_DR
- int i;
-#endif
+ struct mlx5_rxq_ctrl *rxq_ctrl;
+ int i = 0;
MLX5_ASSERT(sh && sh->refcnt);
if (sh->refcnt > 1)
return;
+ LIST_FOREACH(rxq_ctrl, &sh->shared_rxqs, next) {
+ DRV_LOG(DEBUG, "port %u Rx Queue %u still referenced",
+ priv->dev_data->port_id, rxq_ctrl->rxq.idx);
+ ++i;
+ }
+ if (i > 0)
+ DRV_LOG(WARNING, "port %u some Rx queues still remain %d",
+ priv->dev_data->port_id, i);
MLX5_ASSERT(LIST_EMPTY(&sh->shared_rxqs));
#ifdef HAVE_MLX5DV_DR
if (sh->rx_domain) {
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 229c55b536..5d9e92fcc2 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1751,12 +1751,18 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
LIST_FOREACH(rxq_ctrl, &opriv->rxqsctrl, next) {
rxq_ctrl->rxq.mark = 1;
}
+ LIST_FOREACH(rxq_ctrl, &opriv->sh->shared_rxqs, next) {
+ rxq_ctrl->rxq.mark = 1;
+ }
opriv->mark_enabled = 1;
}
} else {
LIST_FOREACH(rxq_ctrl, &priv->rxqsctrl, next) {
rxq_ctrl->rxq.mark = 1;
}
+ LIST_FOREACH(rxq_ctrl, &priv->sh->shared_rxqs, next) {
+ rxq_ctrl->rxq.mark = 1;
+ }
priv->mark_enabled = 1;
}
priv->sh->shared_mark_enabled = 1;
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index fb2d9869b6..a3c7f4a96c 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1979,8 +1979,9 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
tmpl->share_group = conf->share_group;
tmpl->share_qid = conf->share_qid;
LIST_INSERT_HEAD(&priv->sh->shared_rxqs, tmpl, share_entry);
+ } else {
+ LIST_INSERT_HEAD(&priv->rxqsctrl, tmpl, next);
}
- LIST_INSERT_HEAD(&priv->rxqsctrl, tmpl, next);
rte_atomic_store_explicit(&tmpl->ctrl_ref, 1, rte_memory_order_relaxed);
return tmpl;
error:
@@ -2311,7 +2312,8 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
(&rxq_ctrl->rxq.mr_ctrl.cache_bh);
if (rxq_ctrl->rxq.shared)
LIST_REMOVE(rxq_ctrl, share_entry);
- LIST_REMOVE(rxq_ctrl, next);
+ else
+ LIST_REMOVE(rxq_ctrl, next);
mlx5_free(rxq_ctrl->rxq.rq_win_data);
mlx5_free(rxq_ctrl);
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.464588925 +0200
+++ 0022-net-mlx5-fix-storage-of-shared-Rx-queues.patch 2025-12-21 16:54:16.799105000 +0200
@@ -1 +1 @@
-From a0a7903376f2252b06ae272b2c3b69e9b939de04 Mon Sep 17 00:00:00 2001
+From 0f31adb42ed2b5f73c43f06664c48be924fcadc9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a0a7903376f2252b06ae272b2c3b69e9b939de04 ]
+
@@ -26 +27,0 @@
-Cc: stable@dpdk.org
@@ -37 +38 @@
-index 2bc8ca9284..85b3fabaf5 100644
+index d1ccec71e9..326b7b7329 100644
@@ -40 +41 @@
-@@ -747,13 +747,20 @@ void
+@@ -718,13 +718,20 @@ void
@@ -65 +66 @@
-index 7c6811b523..cc9ec73dfe 100644
+index 229c55b536..5d9e92fcc2 100644
@@ -68 +69 @@
-@@ -1652,12 +1652,18 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
+@@ -1751,12 +1751,18 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
@@ -88 +89 @@
-index 77c5848c37..1425886a22 100644
+index fb2d9869b6..a3c7f4a96c 100644
@@ -91 +92 @@
-@@ -2033,8 +2033,9 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1979,8 +1979,9 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
@@ -102 +103 @@
-@@ -2365,7 +2366,8 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2311,7 +2312,8 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/hws: fix ESP header match in strict mode' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (20 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix storage of shared Rx queues' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix unsupported flow rule port action' " Shani Peretz
` (69 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9b29d486fba5e060afa77b626dc169f9e8e68769
Thanks.
Shani
---
From 9b29d486fba5e060afa77b626dc169f9e8e68769 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Mon, 4 Aug 2025 08:05:14 +0300
Subject: [PATCH] net/mlx5/hws: fix ESP header match in strict mode
[ upstream commit f2f75ffe14a521ee3000be2b5286ff3047f3958c ]
The pattern like "eth / ipv6 / esp / end" matched on any IPv6
packet in strict mode, because there was no impicit match on the
IP.proto forced.
This patch adds the implicit match on IP.proto with value 50 (ESP)
and adds implicit match on UDP.dport with value 4500 for the case
ESP over UDP.
Fixes: 18ca4a4ec73a ("net/mlx5: support ESP SPI match and RSS hash")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 36 +++++++++++++++++++++++++--
1 file changed, 34 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 69a99d6785..51917f01a0 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -11,6 +11,7 @@
#define UDP_GTPU_PORT 2152
#define UDP_VXLAN_PORT 4789
#define UDP_PORT_MPLS 6635
+#define UDP_ESP_PORT 4500
#define UDP_ROCEV2_PORT 4791
#define DR_FLOW_LAYER_TUNNEL_NO_MPLS (MLX5_FLOW_LAYER_TUNNEL & ~MLX5_FLOW_LAYER_MPLS)
@@ -183,6 +184,8 @@ struct mlx5dr_definer_conv_data {
X(SET_BE32, gre_opt_seq, v->sequence.sequence, rte_flow_item_gre_opt) \
X(SET_BE16, gre_opt_checksum, v->checksum_rsvd.checksum, rte_flow_item_gre_opt) \
X(SET, meter_color, rte_col_2_mlx5_col(v->color), rte_flow_item_meter_color) \
+ X(SET, ipsec_protocol, IPPROTO_ESP, rte_flow_item_esp) \
+ X(SET, ipsec_udp_port, UDP_ESP_PORT, rte_flow_item_esp) \
X(SET_BE32, ipsec_spi, v->hdr.spi, rte_flow_item_esp) \
X(SET_BE32, ipsec_sequence_number, v->hdr.seq, rte_flow_item_esp) \
X(SET, ib_l4_udp_port, UDP_ROCEV2_PORT, rte_flow_item_ib_bth) \
@@ -2118,7 +2121,9 @@ mlx5dr_definer_conv_item_meter_color(struct mlx5dr_definer_conv_data *cd,
}
static struct mlx5dr_definer_fc *
-mlx5dr_definer_get_flex_parser_fc(struct mlx5dr_definer_conv_data *cd, uint32_t byte_off)
+mlx5dr_definer_get_flex_parser_fc(struct mlx5dr_definer_conv_data *cd,
+ uint32_t byte_off,
+ int item_idx)
{
uint32_t byte_off_fp7 = MLX5_BYTE_OFF(definer_hl, flex_parser.flex_parser_7);
uint32_t byte_off_fp0 = MLX5_BYTE_OFF(definer_hl, flex_parser.flex_parser_0);
@@ -2130,6 +2135,33 @@ mlx5dr_definer_get_flex_parser_fc(struct mlx5dr_definer_conv_data *cd, uint32_t
rte_errno = EINVAL;
return NULL;
}
+
+ /* To match on ESP we must match on ip_protocol and optionally on l4_dport */
+ if (!cd->relaxed) {
+ bool over_udp;
+
+ fc = &cd->fc[DR_CALC_FNAME(IP_PROTOCOL, false)];
+ over_udp = fc->tag_set == &mlx5dr_definer_udp_protocol_set;
+
+ if (over_udp) {
+ fc = &cd->fc[DR_CALC_FNAME(L4_DPORT, false)];
+ if (!fc->tag_set) {
+ fc->item_idx = item_idx;
+ fc->tag_mask_set = &mlx5dr_definer_ones_set;
+ fc->tag_set = &mlx5dr_definer_ipsec_udp_port_set;
+ DR_CALC_SET(fc, eth_l4, destination_port, false);
+ }
+ } else {
+ fc = &cd->fc[DR_CALC_FNAME(IP_PROTOCOL, false)];
+ if (!fc->tag_set) {
+ fc->item_idx = item_idx;
+ fc->tag_set = &mlx5dr_definer_ipsec_protocol_set;
+ fc->tag_mask_set = &mlx5dr_definer_ones_set;
+ DR_CALC_SET(fc, eth_l3, protocol_next_header, false);
+ }
+ }
+ }
+
idx = (byte_off_fp0 - byte_off) / (sizeof(uint32_t));
fname += (enum mlx5dr_definer_fname)idx;
fc = &cd->fc[fname];
@@ -2181,7 +2213,7 @@ mlx5dr_definer_conv_item_ipv6_routing_ext(struct mlx5dr_definer_conv_data *cd,
if (m->hdr.next_hdr || m->hdr.type || m->hdr.segments_left) {
byte_off = flow_hw_get_srh_flex_parser_byte_off_from_ctx(cd->ctx);
- fc = mlx5dr_definer_get_flex_parser_fc(cd, byte_off);
+ fc = mlx5dr_definer_get_flex_parser_fc(cd, byte_off, item_idx);
if (!fc)
return rte_errno;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.516529621 +0200
+++ 0023-net-mlx5-hws-fix-ESP-header-match-in-strict-mode.patch 2025-12-21 16:54:16.808067000 +0200
@@ -1 +1 @@
-From f2f75ffe14a521ee3000be2b5286ff3047f3958c Mon Sep 17 00:00:00 2001
+From 9b29d486fba5e060afa77b626dc169f9e8e68769 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f2f75ffe14a521ee3000be2b5286ff3047f3958c ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20,2 +21,2 @@
- drivers/net/mlx5/hws/mlx5dr_definer.c | 38 ++++++++++++++++++++++++---
- 1 file changed, 35 insertions(+), 3 deletions(-)
+ drivers/net/mlx5/hws/mlx5dr_definer.c | 36 +++++++++++++++++++++++++--
+ 1 file changed, 34 insertions(+), 2 deletions(-)
@@ -24 +25 @@
-index 7464d95373..113feae291 100644
+index 69a99d6785..51917f01a0 100644
@@ -27,4 +28,4 @@
-@@ -14,6 +14,7 @@
- #define UDP_VXLAN_PORT 4789
- #define UDP_VXLAN_GPE_PORT 4790
- #define UDP_GTPU_PORT 2152
+@@ -11,6 +11,7 @@
+ #define UDP_GTPU_PORT 2152
+ #define UDP_VXLAN_PORT 4789
+ #define UDP_PORT_MPLS 6635
@@ -32,2 +32,0 @@
- #define UDP_PORT_MPLS 6635
- #define UDP_GENEVE_PORT 6081
@@ -35,3 +34,5 @@
-@@ -231,6 +232,8 @@ struct mlx5dr_definer_conv_data {
- X(SET_BE16, nvgre_protocol, v->protocol, rte_flow_item_nvgre) \
- X(SET_BE32P, nvgre_dw1, &v->tni[0], rte_flow_item_nvgre) \
+ #define DR_FLOW_LAYER_TUNNEL_NO_MPLS (MLX5_FLOW_LAYER_TUNNEL & ~MLX5_FLOW_LAYER_MPLS)
+
+@@ -183,6 +184,8 @@ struct mlx5dr_definer_conv_data {
+ X(SET_BE32, gre_opt_seq, v->sequence.sequence, rte_flow_item_gre_opt) \
+ X(SET_BE16, gre_opt_checksum, v->checksum_rsvd.checksum, rte_flow_item_gre_opt) \
@@ -44 +45 @@
-@@ -2481,7 +2484,9 @@ mlx5dr_definer_conv_item_meter_color(struct mlx5dr_definer_conv_data *cd,
+@@ -2118,7 +2121,9 @@ mlx5dr_definer_conv_item_meter_color(struct mlx5dr_definer_conv_data *cd,
@@ -55 +56 @@
-@@ -2493,6 +2498,33 @@ mlx5dr_definer_get_flex_parser_fc(struct mlx5dr_definer_conv_data *cd, uint32_t
+@@ -2130,6 +2135,33 @@ mlx5dr_definer_get_flex_parser_fc(struct mlx5dr_definer_conv_data *cd, uint32_t
@@ -89 +90 @@
-@@ -2544,7 +2576,7 @@ mlx5dr_definer_conv_item_ipv6_routing_ext(struct mlx5dr_definer_conv_data *cd,
+@@ -2181,7 +2213,7 @@ mlx5dr_definer_conv_item_ipv6_routing_ext(struct mlx5dr_definer_conv_data *cd,
@@ -95,9 +95,0 @@
- if (!fc)
- return rte_errno;
-
-@@ -2666,7 +2698,7 @@ mlx5dr_definer_conv_item_ecpri(struct mlx5dr_definer_conv_data *cd,
- if (!mask)
- continue;
- mask = htobe32(mask);
-- fc = mlx5dr_definer_get_flex_parser_fc(cd, byte_off[i]);
-+ fc = mlx5dr_definer_get_flex_parser_fc(cd, byte_off[i], item_idx);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix unsupported flow rule port action' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (21 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix non-template age rules flush' " Shani Peretz
` (68 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, Ivan Malov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/6dacb61571c8a8df1cd40f3af8d46e821c868715
Thanks.
Shani
---
From 6dacb61571c8a8df1cd40f3af8d46e821c868715 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 7 Aug 2025 12:12:47 +0300
Subject: [PATCH] net/mlx5: fix unsupported flow rule port action
[ upstream commit c040e9a85a1fbce46528e9bc15d1ce4bbc911346 ]
When dv_flow_en=2, the port ID action is not supported.
Although a rule can be created successfully in non-template mode,
the specified action will be silently ignored and not applied.
To prevent this ambiguous behavior, explicitly return an error
when a port ID action is used with dv_flow_en=2,
and recommend using a represented port action instead.
Fixes: f1fecffa88df ("net/mlx5: support Direct Rules action template API")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Ivan Malov <ivan.malov@arknetworks.am>
---
drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 540828008b..923ced68c8 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2478,6 +2478,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_END:
actions_end = true;
break;
+ case RTE_FLOW_ACTION_TYPE_PORT_ID:
+ DRV_LOG(ERR, "RTE_FLOW_ACTION_TYPE_PORT_ID action is not supported. "
+ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.");
+ goto err;
default:
break;
}
@@ -6178,6 +6182,10 @@ flow_hw_dr_actions_template_create(struct rte_eth_dev *dev,
at->dr_off[i] = curr_off;
action_types[curr_off++] = MLX5DR_ACTION_TYP_MISS;
break;
+ case RTE_FLOW_ACTION_TYPE_PORT_ID:
+ DRV_LOG(ERR, "RTE_FLOW_ACTION_TYPE_PORT_ID action is not supported. "
+ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.");
+ return NULL;
default:
type = mlx5_hw_dr_action_types[at->actions[i].type];
at->dr_off[i] = curr_off;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.561727702 +0200
+++ 0024-net-mlx5-fix-unsupported-flow-rule-port-action.patch 2025-12-21 16:54:16.825029000 +0200
@@ -1 +1 @@
-From c040e9a85a1fbce46528e9bc15d1ce4bbc911346 Mon Sep 17 00:00:00 2001
+From 6dacb61571c8a8df1cd40f3af8d46e821c868715 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c040e9a85a1fbce46528e9bc15d1ce4bbc911346 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -21,2 +22,2 @@
- drivers/net/mlx5/mlx5_flow_hw.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
@@ -25 +26 @@
-index 016370f68b..0c3f554479 100644
+index 540828008b..923ced68c8 100644
@@ -28 +29 @@
-@@ -2913,6 +2913,10 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2478,6 +2478,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
@@ -39,2 +40 @@
-@@ -7648,7 +7652,11 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
- case MLX5_RTE_FLOW_ACTION_TYPE_MIRROR:
+@@ -6178,6 +6182,10 @@ flow_hw_dr_actions_template_create(struct rte_eth_dev *dev,
@@ -42,3 +42,2 @@
- action_types[curr_off++] = MLX5DR_ACTION_TYP_DEST_ARRAY;
-- break;
-+ break;
+ action_types[curr_off++] = MLX5DR_ACTION_TYP_MISS;
+ break;
@@ -48 +47 @@
-+ return -EINVAL;
++ return NULL;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix non-template age rules flush' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (22 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix unsupported flow rule port action' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix connection tracking state item validation' " Shani Peretz
` (67 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/bb50186e8f10bc5f658b7dc36216770f343e28d8
Thanks.
Shani
---
From bb50186e8f10bc5f658b7dc36216770f343e28d8 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 10 Aug 2025 09:47:31 +0300
Subject: [PATCH] net/mlx5: fix non-template age rules flush
[ upstream commit 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac ]
When a user creates a non-template rule with both age and counter actions,
both actions share the same counter.
If a flow flush occurs, the rule is destroyed and the counter is released.
However, the age sampling callback may still access the age/counter during
the free, leading to a panic on assertion in debug mode.
This creates a race condition: one thread samples the age while another
releases the age/counter info used by the age action.
The fix is to ignore this case where the age is
free and counter not freed yet,
or the counter was freed during the age check.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index a47ac098cb..abdf32dd86 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -163,10 +163,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
break;
case HWS_AGE_FREE:
/*
- * AGE parameter with state "FREE" couldn't be pointed
- * by any counter since counter is destroyed first.
- * Fall-through.
+ * Since this check is async, we may reach a race condition
+ * where the age and counter are used in the same rule,
+ * using the same counter index,
+ * age was freed first, and counter was not freed yet.
+ * Aging check can be safely ignored in that case.
*/
+ continue;
default:
MLX5_ASSERT(0);
continue;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.616810225 +0200
+++ 0025-net-mlx5-fix-non-template-age-rules-flush.patch 2025-12-21 16:54:16.831117000 +0200
@@ -1 +1 @@
-From 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac Mon Sep 17 00:00:00 2001
+From bb50186e8f10bc5f658b7dc36216770f343e28d8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index fce7a7e815..5c738f38ca 100644
+index a47ac098cb..abdf32dd86 100644
@@ -31 +32 @@
-@@ -170,10 +170,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
+@@ -163,10 +163,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix connection tracking state item validation' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (23 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix non-template age rules flush' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Shani Peretz
` (66 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f1fc1a11494e073dc633b67ee6519cf9fe343e0b
Thanks.
Shani
---
From f1fc1a11494e073dc633b67ee6519cf9fe343e0b Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Thu, 14 Aug 2025 06:16:01 -0400
Subject: [PATCH] net/mlx5: fix connection tracking state item validation
[ upstream commit 179e70fd7ad2027705b42e7416d436d299eca78c ]
This patch validate a connection tracking state when matching
'conntrack is' in rte_flow rules. Since conntrack item flags
is a bitmap, then any combination of RTE_FLOW_CONNTRACK_PKT_STATE_*
flags is a valid value to match on.
This patch validate the CT state item.
Fixes: aca19061e4b9 ("net/mlx5: validate connection tracking item")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 5 +++++
drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 9d18a576ae..3a39b77cb1 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -93,6 +93,11 @@ enum mlx5_indirect_type {
#define MLX5_INDIRECT_ACT_CT_GET_IDX(index) \
((index) & ((1 << MLX5_INDIRECT_ACT_CT_OWNER_SHIFT) - 1))
+#define MLX5_FLOW_CONNTRACK_PKT_STATE_ALL \
+ (RTE_FLOW_CONNTRACK_PKT_STATE_VALID | RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED | \
+ RTE_FLOW_CONNTRACK_PKT_STATE_INVALID | RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED | \
+ RTE_FLOW_CONNTRACK_PKT_STATE_BAD)
+
#define MLX5_ACTION_CTX_CT_GET_IDX MLX5_INDIRECT_ACT_CT_GET_IDX
#define MLX5_ACTION_CTX_CT_GET_OWNER MLX5_INDIRECT_ACT_CT_GET_OWNER
#define MLX5_ACTION_CTX_CT_GEN_IDX MLX5_INDIRECT_ACT_CT_GEN_IDX
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 3d93ab640c..dded76196c 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -3050,6 +3050,11 @@ flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM, NULL,
"Conflict status bits");
+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ NULL,
+ "Invalid CT item flags");
/* State change also needs to be considered. */
*item_flags |= MLX5_FLOW_LAYER_ASO_CT;
return 0;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.658593576 +0200
+++ 0026-net-mlx5-fix-connection-tracking-state-item-validati.patch 2025-12-21 16:54:16.856068000 +0200
@@ -1 +1 @@
-From 179e70fd7ad2027705b42e7416d436d299eca78c Mon Sep 17 00:00:00 2001
+From f1fc1a11494e073dc633b67ee6519cf9fe343e0b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 179e70fd7ad2027705b42e7416d436d299eca78c ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19,4 +20,3 @@
- drivers/net/mlx5/mlx5_flow.h | 5 +++++
- drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
- drivers/net/mlx5/mlx5_flow_hw.c | 10 ++++++++++
- 3 files changed, 20 insertions(+)
+ drivers/net/mlx5/mlx5_flow.h | 5 +++++
+ drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
+ 2 files changed, 10 insertions(+)
@@ -25 +25 @@
-index e890e732c3..ed0c1fcfd2 100644
+index 9d18a576ae..3a39b77cb1 100644
@@ -28 +28 @@
-@@ -100,6 +100,11 @@ enum mlx5_indirect_type {
+@@ -93,6 +93,11 @@ enum mlx5_indirect_type {
@@ -37,3 +37,3 @@
- /*
- * When HW steering flow engine is used, the CT action handles are encoded in a following way:
- * - bits 31:29 - type
+ #define MLX5_ACTION_CTX_CT_GET_IDX MLX5_INDIRECT_ACT_CT_GET_IDX
+ #define MLX5_ACTION_CTX_CT_GET_OWNER MLX5_INDIRECT_ACT_CT_GET_OWNER
+ #define MLX5_ACTION_CTX_CT_GEN_IDX MLX5_INDIRECT_ACT_CT_GEN_IDX
@@ -41 +41 @@
-index 7b9e5018b8..f673637e7d 100644
+index 3d93ab640c..dded76196c 100644
@@ -44,10 +44,9 @@
-@@ -3289,6 +3289,11 @@ mlx5_flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
- RTE_FLOW_ERROR_TYPE_ITEM,
- NULL,
- "Conflict status bits");
-+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
-+ return rte_flow_error_set(error, EINVAL,
-+ RTE_FLOW_ERROR_TYPE_ITEM,
-+ NULL,
-+ "Invalid CT item flags");
- }
+@@ -3050,6 +3050,11 @@ flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM, NULL,
+ "Conflict status bits");
++ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
++ return rte_flow_error_set(error, EINVAL,
++ RTE_FLOW_ERROR_TYPE_ITEM,
++ NULL,
++ "Invalid CT item flags");
@@ -56,28 +55 @@
-diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
-index 3da8d93454..bca396a9ab 100644
---- a/drivers/net/mlx5/mlx5_flow_hw.c
-+++ b/drivers/net/mlx5/mlx5_flow_hw.c
-@@ -17010,6 +17010,7 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
- switch (items->type) {
- const struct rte_flow_item_ethdev *ethdev;
- const struct rte_flow_item_tx_queue *tx_queue;
-+ const struct rte_flow_item_conntrack *spec;
- struct mlx5_txq_ctrl *txq;
-
- case RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT:
-@@ -17030,6 +17031,15 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
- RTE_FLOW_ERROR_TYPE_ITEM_SPEC, items,
- "Invalid Tx queue");
- mlx5_txq_release(dev, tx_queue->tx_queue);
-+ break;
-+ case RTE_FLOW_ITEM_TYPE_CONNTRACK:
-+ spec = items->spec;
-+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
-+ return rte_flow_error_set(error, EINVAL,
-+ RTE_FLOW_ERROR_TYPE_ITEM,
-+ NULL,
-+ "Invalid CT item flags");
-+ break;
- default:
- break;
- }
+ return 0;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/hws: fix TIR action support in FDB' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (24 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix connection tracking state item validation' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow age action handling' " Shani Peretz
` (65 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Suanming Mou, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9c194ec9d07448a90f0a4e715848ab2c96c704ae
Thanks.
Shani
---
From 9c194ec9d07448a90f0a4e715848ab2c96c704ae Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Thu, 14 Aug 2025 15:20:02 +0200
Subject: [PATCH] net/mlx5/hws: fix TIR action support in FDB
[ upstream commit 1fca53b789db81921389efb47cde3afbc1205e8e ]
TIR action was not added as an allowed action in FDB domain.
This prevented the usage of RSS flow action in transfer flow rules
with HW Steering flow engine.
Fixes: 1f8fc88d4d31 ("net/mlx5/hws: allow jump to TIR over FDB")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_action.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c
index 6ffb79c254..2f5b03140b 100644
--- a/drivers/net/mlx5/hws/mlx5dr_action.c
+++ b/drivers/net/mlx5/hws/mlx5dr_action.c
@@ -82,6 +82,7 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
BIT(MLX5DR_ACTION_TYP_REFORMAT_L2_TO_TNL_L3),
BIT(MLX5DR_ACTION_TYP_TBL) |
BIT(MLX5DR_ACTION_TYP_MISS) |
+ BIT(MLX5DR_ACTION_TYP_TIR) |
BIT(MLX5DR_ACTION_TYP_VPORT) |
BIT(MLX5DR_ACTION_TYP_DROP) |
BIT(MLX5DR_ACTION_TYP_DEST_ROOT) |
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.729102517 +0200
+++ 0027-net-mlx5-hws-fix-TIR-action-support-in-FDB.patch 2025-12-21 16:54:16.865064000 +0200
@@ -1 +1 @@
-From 1fca53b789db81921389efb47cde3afbc1205e8e Mon Sep 17 00:00:00 2001
+From 9c194ec9d07448a90f0a4e715848ab2c96c704ae Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1fca53b789db81921389efb47cde3afbc1205e8e ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 5e2b845985..69c61fc165 100644
+index 6ffb79c254..2f5b03140b 100644
@@ -24 +25 @@
-@@ -93,6 +93,7 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
+@@ -82,6 +82,7 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix indirect flow age action handling' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (25 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Shani Peretz
` (64 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Raslan Darawsheh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f5da58f50801af0aeb12985bd388840601da9c71
Thanks.
Shani
---
From f5da58f50801af0aeb12985bd388840601da9c71 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 19 Aug 2025 13:27:42 +0200
Subject: [PATCH] net/mlx5: fix indirect flow age action handling
[ upstream commit 8bc72d9f277593f6d8b27278bad3a5bb92e7347f ]
Indirect AGE flow actions can be created either through synchronous
or asynchronous flow API.
mlx5 PMD stores the queue used to create that action to support
strict queueing. When action is created through synchronous API
invalid queue index is stored instead.
Whenever a flow rule is created with indirect AGE and
direct COUNT flow actions, PMD allocates a HW counter for ageing
that flow rule during rule creation.
During allocation of the counter a queue index is needed
to select a proper counter pool cache.
In case when indirect AGE action created through synchronous API
was used in that case, the associated queue index was used
to select pool cache. Since queue index was invalid, PMD crashed.
Counter can be allocated using the index of currently used queue and
it does not have to match the queue used to create AGE action.
This patch fixes the crash by using the index of currently used queue
for counter allocation.
This patch also adds missing validation for synchronous
and asynchronous AGE flow action creation:
- If strict queueing is disabled, only synchronous creation is allowed.
- If strict queueing is enabled, only asynchronous creation is allowed.
PMD documentation is updated accordingly.
It also updates validation of synchronous query
of aged flow rules in regards to strict queueing.
When strict queueing is enabled, synchronous query is rejected.
This aligns PMD behavior with API description.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Raslan Darawsheh <rasland@nvidia.com>
---
doc/guides/nics/mlx5.rst | 5 +++++
drivers/net/mlx5/mlx5_flow_hw.c | 24 +++++++++++++++++-------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 7c9e0350d4..01133a5898 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -615,6 +615,11 @@ Limitations
in addition to flow rules using only age (without count action).
- ``nb_aging_objects`` is the number of flow rules containing age action.
+#. With strict queueing enabled
+ (``RTE_FLOW_PORT_FLAG_STRICT_QUEUE`` passed to ``rte_flow_configure()``),
+ indirect age actions can be created only through asynchronous flow API.
+
+
- IPv6 header item 'proto' field, indicating the next header protocol, should
not be set as extension header.
In case the next header is an extension header, it should not be specified in
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 923ced68c8..c9d8d42874 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2670,6 +2670,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
uint32_t idx = act_idx &
((1u << MLX5_INDIRECT_ACTION_TYPE_OFFSET) - 1);
uint64_t item_flags;
+ uint32_t *cnt_queue;
cnt_id_t age_cnt;
memset(&act_data, 0, sizeof(act_data));
@@ -2718,9 +2719,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
if (param == NULL)
return -1;
if (action_flags & MLX5_FLOW_ACTION_COUNT) {
- if (mlx5_hws_cnt_pool_get(priv->hws_cpool,
- ¶m->queue_id, &age_cnt,
- idx) < 0)
+ cnt_queue = mlx5_hws_cnt_get_queue(priv, &queue);
+ if (mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &age_cnt, idx) < 0)
return -1;
flow->cnt_id = age_cnt;
param->nb_cnts++;
@@ -10737,6 +10737,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
const struct rte_flow_action *action,
struct rte_flow_error *err)
{
+ struct mlx5_priv *priv = dev->data->dev_private;
+
+ if (action->type == RTE_FLOW_ACTION_TYPE_AGE && priv->hws_strict_queue) {
+ rte_flow_error_set(err, EINVAL, RTE_FLOW_ERROR_TYPE_STATE, NULL,
+ "Cannot create age action synchronously with strict queueing");
+ return NULL;
+ }
+
return flow_hw_action_handle_create(dev, MLX5_HW_INV_QUEUE,
NULL, conf, action, NULL, err);
}
@@ -10955,6 +10963,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, "No aging initialized");
if (priv->hws_strict_queue) {
+ /* Queue is invalid in sync query. Sync query and strict queueing is disallowed. */
+ MLX5_ASSERT(queue_id != MLX5_HW_INV_QUEUE);
if (queue_id >= age_info->hw_q_age->nb_rings)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
@@ -11008,10 +11018,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
struct mlx5_priv *priv = dev->data->dev_private;
if (priv->hws_strict_queue)
- DRV_LOG(WARNING,
- "port %u get aged flows called in strict queue mode.",
- dev->data->port_id);
- return flow_hw_get_q_aged_flows(dev, 0, contexts, nb_contexts, error);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_STATE, NULL,
+ "Cannot get aged flows synchronously with strict queueing");
+
+ return flow_hw_get_q_aged_flows(dev, MLX5_HW_INV_QUEUE, contexts, nb_contexts, error);
}
static void
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.771711984 +0200
+++ 0028-net-mlx5-fix-indirect-flow-age-action-handling.patch 2025-12-21 16:54:16.888070000 +0200
@@ -1 +1 @@
-From 8bc72d9f277593f6d8b27278bad3a5bb92e7347f Mon Sep 17 00:00:00 2001
+From f5da58f50801af0aeb12985bd388840601da9c71 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8bc72d9f277593f6d8b27278bad3a5bb92e7347f ]
+
@@ -42 +43,0 @@
-Cc: stable@dpdk.org
@@ -48 +49 @@
- doc/guides/nics/mlx5.rst | 4 ++++
+ doc/guides/nics/mlx5.rst | 5 +++++
@@ -50 +51 @@
- 2 files changed, 21 insertions(+), 7 deletions(-)
+ 2 files changed, 22 insertions(+), 7 deletions(-)
@@ -53 +54 @@
-index 761dcad542..20056f61d6 100644
+index 7c9e0350d4..01133a5898 100644
@@ -56,3 +57,3 @@
-@@ -2740,6 +2740,10 @@ With :ref:`HW steering <mlx5_hws>`,
- in addition to flow rules using only age (without count action).
- - ``nb_aging_objects`` is the number of flow rules containing age action.
+@@ -615,6 +615,11 @@ Limitations
+ in addition to flow rules using only age (without count action).
+ - ``nb_aging_objects`` is the number of flow rules containing age action.
@@ -64,3 +65,4 @@
-
- .. _mlx5_quota:
-
++
+ - IPv6 header item 'proto' field, indicating the next header protocol, should
+ not be set as extension header.
+ In case the next header is an extension header, it should not be specified in
@@ -68 +70 @@
-index 84f39c467e..c84ae726a7 100644
+index 923ced68c8..c9d8d42874 100644
@@ -71,2 +73 @@
-@@ -3180,6 +3180,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
- uint32_t type = act_idx >> MLX5_INDIRECT_ACTION_TYPE_OFFSET;
+@@ -2670,6 +2670,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -74,0 +76 @@
+ uint64_t item_flags;
@@ -79 +81 @@
-@@ -3230,9 +3231,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
+@@ -2718,9 +2719,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -89 +90,0 @@
- flow->flags |= MLX5_FLOW_HW_FLOW_FLAG_CNT_ID;
@@ -91 +92,2 @@
-@@ -13142,6 +13142,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
+ param->nb_cnts++;
+@@ -10737,6 +10737,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
@@ -106 +108 @@
-@@ -13361,6 +13369,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
+@@ -10955,6 +10963,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
@@ -115 +117 @@
-@@ -13414,10 +13424,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
+@@ -11008,10 +11018,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
@@ -128,2 +130,2 @@
- /**
- * Initialization function for non template API which calls
+
+ static void
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix Direct Verbs counter offset detection' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (26 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow age action handling' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix interface name parameter definition' " Shani Peretz
` (63 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Andre Muezerie, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/a6604789b10f7ba2db4f63ecd21bc37c817ce80a
Thanks.
Shani
---
From a6604789b10f7ba2db4f63ecd21bc37c817ce80a Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 20 Aug 2025 10:45:21 +0200
Subject: [PATCH] net/mlx5: fix Direct Verbs counter offset detection
[ upstream commit d953431da8e1ece042e33ba71650a3ba6b1e27c1 ]
This patch fixes a bug in
mlx5_flow_dv_discover_counter_offset_support()
uncovered by a warning reported by MSVC:
../drivers/net/mlx5/mlx5_flow_dv.c(19636): warning C5287:
operands are different enum types 'ibv_flow_attr_type' and
'ibv_flow_flags';
use an explicit cast to silence this warning
IBV_FLOW_ATTR_FLAGS_EGRESS was incorrectly passed in to
type field of mlx5dv_flow_matcher_attr struct,
instead of flags field.
As a result counter offset support discovery returned a false positive
result on application with old rdma-core.
Bugzilla ID: 1758
Fixes: 4fd5e1484887 ("net/mlx5: fix counter offset detection")
Reported-by: Andre Muezerie <andremue@linux.microsoft.com>
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Andre Muezerie <andremue@linux.microsoft.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index dded76196c..0a070bf51c 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -18971,7 +18971,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
.size = sizeof(value.buf),
};
struct mlx5dv_flow_matcher_attr dv_attr = {
- .type = IBV_FLOW_ATTR_NORMAL | IBV_FLOW_ATTR_FLAGS_EGRESS,
+ .type = IBV_FLOW_ATTR_NORMAL,
+ .flags = IBV_FLOW_ATTR_FLAGS_EGRESS,
.priority = 0,
.match_criteria_enable = 0,
.match_mask = (void *)&mask,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.831871061 +0200
+++ 0029-net-mlx5-fix-Direct-Verbs-counter-offset-detection.patch 2025-12-21 16:54:16.910086000 +0200
@@ -1 +1 @@
-From d953431da8e1ece042e33ba71650a3ba6b1e27c1 Mon Sep 17 00:00:00 2001
+From a6604789b10f7ba2db4f63ecd21bc37c817ce80a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d953431da8e1ece042e33ba71650a3ba6b1e27c1 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index f673637e7d..abfd54da1a 100644
+index dded76196c..0a070bf51c 100644
@@ -36 +37 @@
-@@ -19657,7 +19657,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
+@@ -18971,7 +18971,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix interface name parameter definition' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (27 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/iavf: fix Tx vector path selection logic' " Shani Peretz
` (62 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/bbadc2d263a47ef5903fee94d0ca00682504f345
Thanks.
Shani
---
From bbadc2d263a47ef5903fee94d0ca00682504f345 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Sun, 10 Aug 2025 16:22:59 +0300
Subject: [PATCH] net/mlx5: fix interface name parameter definition
[ upstream commit 9e58a50c059f3760c51ddee16073496c6e1d510a ]
The patch fixes `ifname` parameter as a character buffer.
Fixes: 1256805dd54d ("net/mlx5: move Linux-specific functions")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 11 +++++------
drivers/net/mlx5/linux/mlx5_os.c | 2 +-
drivers/net/mlx5/mlx5.h | 3 +--
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 4 ++--
4 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index 4d126751a2..ea89ce8e05 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -156,7 +156,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE])
{
struct mlx5_priv *priv = dev->data->dev_private;
unsigned int ifindex;
@@ -170,12 +170,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
ifindex = mlx5_ifindex(dev);
if (!ifindex) {
if (!priv->representor)
- return mlx5_get_ifname_sysfs(priv->sh->ibdev_path,
- *ifname);
+ return mlx5_get_ifname_sysfs(priv->sh->ibdev_path, ifname);
rte_errno = ENXIO;
return -rte_errno;
}
- if (if_indextoname(ifindex, &(*ifname)[0]))
+ if (if_indextoname(ifindex, ifname))
return 0;
rte_errno = errno;
return -rte_errno;
@@ -233,10 +232,10 @@ error:
static int
mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
{
- char ifname[sizeof(ifr->ifr_name)];
+ char ifname[MLX5_NAMESIZE];
int ret;
- ret = mlx5_get_ifname(dev, &ifname);
+ ret = mlx5_get_ifname(dev, ifname);
if (ret)
return -rte_errno;
return mlx5_ifreq_by_ifname(ifname, req, ifr);
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 326b7b7329..3aa500e6a4 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1546,7 +1546,7 @@ err_secondary:
{
char ifname[MLX5_NAMESIZE];
- if (mlx5_get_ifname(eth_dev, &ifname) == 0)
+ if (mlx5_get_ifname(eth_dev, ifname) == 0)
DRV_LOG(DEBUG, "port %u ifname is \"%s\"",
eth_dev->data->port_id, ifname);
else
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 1b784b109a..a5dde56ed9 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -2148,8 +2148,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
/* mlx5_ethdev_os.c */
-int mlx5_get_ifname(const struct rte_eth_dev *dev,
- char (*ifname)[MLX5_NAMESIZE]);
+int mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE]);
unsigned int mlx5_ifindex(const struct rte_eth_dev *dev);
int mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[RTE_ETHER_ADDR_LEN]);
int mlx5_get_mtu(struct rte_eth_dev *dev, uint16_t *mtu);
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 4f43b95a09..32a9f599b2 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -56,7 +56,7 @@ mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[RTE_ETHER_ADDR_LEN])
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE])
{
struct mlx5_priv *priv;
mlx5_context_st *context_obj;
@@ -67,7 +67,7 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
}
priv = dev->data->dev_private;
context_obj = (mlx5_context_st *)priv->sh->cdev->ctx;
- strncpy(*ifname, context_obj->mlx5_dev.name, MLX5_NAMESIZE);
+ strncpy(ifname, context_obj->mlx5_dev.name, MLX5_NAMESIZE);
return 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.884271739 +0200
+++ 0030-net-mlx5-fix-interface-name-parameter-definition.patch 2025-12-21 16:54:16.926091000 +0200
@@ -1 +1 @@
-From 9e58a50c059f3760c51ddee16073496c6e1d510a Mon Sep 17 00:00:00 2001
+From bbadc2d263a47ef5903fee94d0ca00682504f345 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9e58a50c059f3760c51ddee16073496c6e1d510a ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a371c2c747..4acaaca9ca 100644
+index 4d126751a2..ea89ce8e05 100644
@@ -24 +25 @@
-@@ -73,7 +73,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
+@@ -156,7 +156,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
@@ -33 +34 @@
-@@ -87,12 +87,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+@@ -170,12 +170,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
@@ -48 +49 @@
-@@ -150,10 +149,10 @@ error:
+@@ -233,10 +232,10 @@ error:
@@ -62 +63 @@
-index 85b3fabaf5..3d87aec5bc 100644
+index 326b7b7329..3aa500e6a4 100644
@@ -65 +66 @@
-@@ -1587,7 +1587,7 @@ err_secondary:
+@@ -1546,7 +1546,7 @@ err_secondary:
@@ -75 +76 @@
-index 53f0a27445..93e298d648 100644
+index 1b784b109a..a5dde56ed9 100644
@@ -78 +79 @@
-@@ -2348,8 +2348,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
+@@ -2148,8 +2148,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/iavf: fix Tx vector path selection logic' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (28 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix interface name parameter definition' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Shani Peretz
` (61 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9dca96d059a3bd5670a030298043a1db26afdd44
Thanks.
Shani
---
From 9dca96d059a3bd5670a030298043a1db26afdd44 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Thu, 19 Jun 2025 13:36:57 +0000
Subject: [PATCH] net/iavf: fix Tx vector path selection logic
[ upstream commit ecdccc79cf3296bb3cb6d53d87ad85d13828677b ]
Prior to this change, it was possible the scalar path would be selected
even if the AVX-512 path was available. This was due to the ordering of
the logic in the iavf_set_tx_function function. Support for all three
vector paths (sse, AVX2 and AVX-512) was first established and then in
that order, the tx_burst_type was set to the appropriate type. If all
three paths were supported, then the burst type would be first set to
sse, then AVX2 then AVX-512. However, in the AVX2 logic, if an error
was encountered then the burst type was set to a fallback option of the
scalar path. This is not desired behaviour because the AVX-512 path
should be selected over the scalar path when it is available.
This commit fixes this issue by only checking for AVX2 support after
deeming that AVX-512 is not supported.
Fixes: 77b19d1d4b2e ("net/iavf: fix mbuf release path selection")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/iavf/iavf_rxtx.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index c4bd128043..9237f65936 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -3999,16 +3999,16 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
if (check_ret == IAVF_VECTOR_PATH) {
use_sse = true;
}
- if ((rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1 ||
- rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1) &&
- rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
- use_avx2 = true;
#ifdef CC_AVX512_SUPPORT
if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512BW) == 1 &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512)
use_avx512 = true;
#endif
+ if (!use_avx512 && (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1 ||
+ rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1) &&
+ rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
+ use_avx2 = true;
if (!use_sse && !use_avx2 && !use_avx512)
goto normal;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.933880596 +0200
+++ 0031-net-iavf-fix-Tx-vector-path-selection-logic.patch 2025-12-21 16:54:16.935032000 +0200
@@ -1 +1 @@
-From ecdccc79cf3296bb3cb6d53d87ad85d13828677b Mon Sep 17 00:00:00 2001
+From 9dca96d059a3bd5670a030298043a1db26afdd44 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ecdccc79cf3296bb3cb6d53d87ad85d13828677b ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
- drivers/net/intel/iavf/iavf_rxtx.c | 8 ++++----
+ drivers/net/iavf/iavf_rxtx.c | 8 ++++----
@@ -29,5 +30,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index 740876756b..5f5e3f047a 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -4227,16 +4227,16 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index c4bd128043..9237f65936 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -3999,16 +3999,16 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix vector Rx VLAN offload flags' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (29 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/iavf: fix Tx vector path selection logic' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/intel: fix assumption about tag placement order' " Shani Peretz
` (60 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/a3a433269d6ffb6e0e39a334096945b42bfc4e1a
Thanks.
Shani
---
From a3a433269d6ffb6e0e39a334096945b42bfc4e1a Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Thu, 7 Aug 2025 12:08:43 +0100
Subject: [PATCH] net/ice: fix vector Rx VLAN offload flags
[ upstream commit cf454a5794bf4e3c18cd8a4e449c3d8ded5b30e6 ]
The vector PMD datapaths for ice do not support QinQ, so we need to
update the vector offload flags to not use the general RX_OFFLOAD_VLAN
flag (which sets all vlan-related options) and replace it with the
individually supported VLAN options.
Fixes: 808a17b3c1e6 ("net/ice: add Rx AVX512 offload path")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/ice/ice_rxtx_vec_common.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
index 4b73465af5..d745eda567 100644
--- a/drivers/net/ice/ice_rxtx_vec_common.h
+++ b/drivers/net/ice/ice_rxtx_vec_common.h
@@ -268,7 +268,8 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
#define ICE_RX_VECTOR_OFFLOAD ( \
RTE_ETH_RX_OFFLOAD_CHECKSUM | \
RTE_ETH_RX_OFFLOAD_SCTP_CKSUM | \
- RTE_ETH_RX_OFFLOAD_VLAN | \
+ RTE_ETH_RX_OFFLOAD_VLAN_STRIP | \
+ RTE_ETH_RX_OFFLOAD_VLAN_FILTER | \
RTE_ETH_RX_OFFLOAD_RSS_HASH)
#define ICE_VECTOR_PATH 0
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:18.984829951 +0200
+++ 0032-net-ice-fix-vector-Rx-VLAN-offload-flags.patch 2025-12-21 16:54:16.939092000 +0200
@@ -1 +1 @@
-From cf454a5794bf4e3c18cd8a4e449c3d8ded5b30e6 Mon Sep 17 00:00:00 2001
+From a3a433269d6ffb6e0e39a334096945b42bfc4e1a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cf454a5794bf4e3c18cd8a4e449c3d8ded5b30e6 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_rxtx_vec_common.h | 3 ++-
+ drivers/net/ice/ice_rxtx_vec_common.h | 3 ++-
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_rxtx_vec_common.h b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-index 9430a99ba5..e41fd8fc7c 100644
---- a/drivers/net/intel/ice/ice_rxtx_vec_common.h
-+++ b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-@@ -72,7 +72,8 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
+diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
+index 4b73465af5..d745eda567 100644
+--- a/drivers/net/ice/ice_rxtx_vec_common.h
++++ b/drivers/net/ice/ice_rxtx_vec_common.h
+@@ -268,7 +268,8 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/intel: fix assumption about tag placement order' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (30 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Shani Peretz
` (59 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/da7ede080e148b05a6c3ba0dd6a30805557ffe22
Thanks.
Shani
---
From da7ede080e148b05a6c3ba0dd6a30805557ffe22 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 18 Jul 2025 16:43:12 +0100
Subject: [PATCH] net/intel: fix assumption about tag placement order
[ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ]
The specific placement of outer/inner VLAN tags in NIC descriptors
is configurable. Therefore, remove the assumption that if the L2Tag2
field is filled in, that the L2Tag1 must also be. Instead, check the
existing mbuf VLAN flags, and move tags and set flags as appropriate.
This fixes an issue where, with QinQ packets with different Tag ethtypes
(0x88a8 vs 0x8100), we get an mbuf reporting two valid tags, but only
having had one tag stripped.
Fixes: cc9d0456b870 ("i40e: support double vlan stripping and insertion")
Fixes: 1e728b01120c ("net/iavf: rework Tx path")
Fixes: e0dcf94a0d7f ("net/ice: support VLAN ops")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/i40e/i40e_rxtx.c | 10 +++++++---
drivers/net/iavf/iavf_rxtx.c | 12 +++++++-----
drivers/net/ice/ice_rxtx.c | 10 +++++++---
3 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 4dafc23bc1..338d6304c5 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.qword2.ext_status) &
(1 << I40E_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_2);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_1),
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 9237f65936..73418f2830 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -1200,11 +1200,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
#ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.status_error1) &
(1 << IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED |
- RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED |
- RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.l2tag2_1st),
diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index 6af16f9aed..9c7d82b8f4 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -1659,9 +1659,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
#ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.status_error1) &
(1 << ICE_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.l2tag2_1st),
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.039875124 +0200
+++ 0033-net-intel-fix-assumption-about-tag-placement-order.patch 2025-12-21 16:54:16.959044000 +0200
@@ -1 +1 @@
-From 21168355589ea9edfcb2925f4952ecb05470f92f Mon Sep 17 00:00:00 2001
+From da7ede080e148b05a6c3ba0dd6a30805557ffe22 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -22,3 +23,3 @@
- drivers/net/intel/i40e/i40e_rxtx.c | 10 +++++++---
- drivers/net/intel/iavf/iavf_rxtx.c | 12 +++++++-----
- drivers/net/intel/ice/ice_rxtx.c | 10 +++++++---
+ drivers/net/i40e/i40e_rxtx.c | 10 +++++++---
+ drivers/net/iavf/iavf_rxtx.c | 12 +++++++-----
+ drivers/net/ice/ice_rxtx.c | 10 +++++++---
@@ -27,6 +28,6 @@
-diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
-index b149a4c127..50b74149e3 100644
---- a/drivers/net/intel/i40e/i40e_rxtx.c
-+++ b/drivers/net/intel/i40e/i40e_rxtx.c
-@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_desc *rxdp)
- #ifndef RTE_NET_INTEL_USE_16BYTE_DESC
+diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
+index 4dafc23bc1..338d6304c5 100644
+--- a/drivers/net/i40e/i40e_rxtx.c
++++ b/drivers/net/i40e/i40e_rxtx.c
+@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
+ #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
@@ -48,6 +49,6 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index 50adc7ea1a..982e16f929 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -1184,11 +1184,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
-
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index 9237f65936..73418f2830 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -1200,11 +1200,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
+ #ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC
@@ -71,6 +72,6 @@
-diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
-index 5e72c231f7..aa8b838955 100644
---- a/drivers/net/intel/ice/ice_rxtx.c
-+++ b/drivers/net/intel/ice/ice_rxtx.c
-@@ -1835,9 +1835,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_flex_desc *rxdp)
- #ifndef RTE_NET_INTEL_USE_16BYTE_DESC
+diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
+index 6af16f9aed..9c7d82b8f4 100644
+--- a/drivers/net/ice/ice_rxtx.c
++++ b/drivers/net/ice/ice_rxtx.c
+@@ -1659,9 +1659,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
+ #ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix VLAN tag reporting on Rx' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (31 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/intel: fix assumption about tag placement order' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix adding special words' " Shani Peretz
` (58 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/6c6757f46a247ab11993744fe22aefcfcf68b8f0
Thanks.
Shani
---
From 6c6757f46a247ab11993744fe22aefcfcf68b8f0 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Thu, 7 Aug 2025 20:08:26 +0100
Subject: [PATCH] net/ice: fix VLAN tag reporting on Rx
[ upstream commit fba64e026d03f4926e1ddc15a2128b8447b73d69 ]
The ice driver expects the first, or outer, VLAN tag in a packet to be
written to the L2TAG1 field of the descriptor, as configured by the
l2tsel field when configuring the queue context initially for the
device. However, when configuring the actual VLAN or QinQ strip
behaviour, that l2tsel field was changed, sending the single/outer vlan
tag to the L2TAG2 field in the descriptor. This meant that it was not
getting picked up correctly by the Rx paths.
This issue has been around for a long time, but was previously
partially hidden by the issue fixed in [1], since due to that bug,
the l2tsel field was not getting overridden in the single-queue case
(since the single queue was the final queue).
Fix the issue by just removing the code updating the l2tsel field, and
leave it as set by default in the initial queue configuration.
[1] commit 4cd8c72f661c ("net/ice: fix inconsistency in Rx queue VLAN tag placement")
Fixes: de5da9d16430 ("net/ice: support double VLAN")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/ice/ice_ethdev.c | 83 ++----------------------------------
1 file changed, 3 insertions(+), 80 deletions(-)
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index be826d3108..91609b948d 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -57,14 +57,6 @@ static const char * const ice_valid_args[] = {
/* Maximum number of VSI */
#define ICE_MAX_NUM_VSIS (768UL)
-/* The 119 bit offset of the LAN Rx queue context is the L2TSEL control bit. */
-#define ICE_L2TSEL_QRX_CONTEXT_REG_IDX 3
-#define ICE_L2TSEL_BIT_OFFSET 23
-enum ice_l2tsel {
- ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND,
- ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1,
-};
-
struct proto_xtr_ol_flag {
const struct rte_mbuf_dynflag param;
bool required;
@@ -4721,49 +4713,12 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
return ret;
}
-/**
- * ice_vsi_update_l2tsel - update l2tsel field for all Rx rings on this VSI
- * @vsi: VSI used to update l2tsel on
- * @l2tsel: l2tsel setting requested
- *
- * Use the l2tsel setting to update all of the Rx queue context bits for l2tsel.
- * This will modify which descriptor field the first offloaded VLAN will be
- * stripped into.
- */
-static void ice_vsi_update_l2tsel(struct ice_vsi *vsi, enum ice_l2tsel l2tsel)
-{
- struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
- struct ice_pf *pf = ICE_VSI_TO_PF(vsi);
- struct rte_eth_dev_data *dev_data = pf->dev_data;
- u32 l2tsel_bit;
- uint16_t i;
-
- if (l2tsel == ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND)
- l2tsel_bit = 0;
- else
- l2tsel_bit = BIT(ICE_L2TSEL_BIT_OFFSET);
-
- for (i = 0; i < dev_data->nb_rx_queues; i++) {
- u32 qrx_context_offset;
- u32 regval;
-
- qrx_context_offset =
- QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, i);
-
- regval = rd32(hw, qrx_context_offset);
- regval &= ~BIT(ICE_L2TSEL_BIT_OFFSET);
- regval |= l2tsel_bit;
- wr32(hw, qrx_context_offset, regval);
- }
-}
-
/* Configure outer vlan stripping on or off in QinQ mode */
static int
ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
{
uint16_t outer_ethertype = vsi->adapter->pf.outer_ethertype;
struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
- int err = 0;
if (vsi->vsi_id >= ICE_MAX_NUM_VSIS) {
PMD_DRV_LOG(ERR, "VSI ID exceeds the maximum");
@@ -4775,41 +4730,9 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
return -EOPNOTSUPP;
}
- if (on) {
- err = ice_vsi_ena_outer_stripping(vsi, outer_ethertype);
- if (!err) {
- enum ice_l2tsel l2tsel =
- ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG2_2ND;
-
- /* PF tells the VF that the outer VLAN tag is always
- * extracted to VIRTCHNL_VLAN_TAG_LOCATION_L2TAG2_2 and
- * inner is always extracted to
- * VIRTCHNL_VLAN_TAG_LOCATION_L2TAG1. This is needed to
- * support outer stripping so the first tag always ends
- * up in L2TAG2_2ND and the second/inner tag, if
- * enabled, is extracted in L2TAG1.
- */
- ice_vsi_update_l2tsel(vsi, l2tsel);
- }
- } else {
- err = ice_vsi_dis_outer_stripping(vsi);
- if (!err) {
- enum ice_l2tsel l2tsel =
- ICE_L2TSEL_EXTRACT_FIRST_TAG_L2TAG1;
-
- /* PF tells the VF that the outer VLAN tag is always
- * extracted to VIRTCHNL_VLAN_TAG_LOCATION_L2TAG2_2 and
- * inner is always extracted to
- * VIRTCHNL_VLAN_TAG_LOCATION_L2TAG1. This is needed to
- * support inner stripping while outer stripping is
- * disabled so that the first and only tag is extracted
- * in L2TAG1.
- */
- ice_vsi_update_l2tsel(vsi, l2tsel);
- }
- }
-
- return err;
+ return on ?
+ ice_vsi_ena_outer_stripping(vsi, outer_ethertype) :
+ ice_vsi_dis_outer_stripping(vsi);
}
static int
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.096969745 +0200
+++ 0034-net-ice-fix-VLAN-tag-reporting-on-Rx.patch 2025-12-21 16:54:16.969059000 +0200
@@ -1 +1 @@
-From fba64e026d03f4926e1ddc15a2128b8447b73d69 Mon Sep 17 00:00:00 2001
+From 6c6757f46a247ab11993744fe22aefcfcf68b8f0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fba64e026d03f4926e1ddc15a2128b8447b73d69 ]
+
@@ -25 +26,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
- drivers/net/intel/ice/ice_ethdev.c | 83 ++----------------------------
+ drivers/net/ice/ice_ethdev.c | 83 ++----------------------------------
@@ -33,5 +34,5 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
-index 513777e372..6c65a8341a 100644
---- a/drivers/net/intel/ice/ice_ethdev.c
-+++ b/drivers/net/intel/ice/ice_ethdev.c
-@@ -65,14 +65,6 @@ static const char * const ice_valid_args[] = {
+diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
+index be826d3108..91609b948d 100644
+--- a/drivers/net/ice/ice_ethdev.c
++++ b/drivers/net/ice/ice_ethdev.c
+@@ -57,14 +57,6 @@ static const char * const ice_valid_args[] = {
@@ -52 +53 @@
-@@ -4965,49 +4957,12 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
+@@ -4721,49 +4713,12 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
@@ -79 +79,0 @@
-- const struct ci_rx_queue *rxq = dev_data->rx_queues[i];
@@ -83 +83,2 @@
-- qrx_context_offset = QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, rxq->reg_idx);
+- qrx_context_offset =
+- QRX_CONTEXT(ICE_L2TSEL_QRX_CONTEXT_REG_IDX, i);
@@ -102 +103 @@
-@@ -5019,41 +4974,9 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
+@@ -4775,41 +4730,9 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice/base: fix adding special words' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (32 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Shani Peretz
` (57 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Shaiq Wani; +Cc: Jeff Shaw, Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f479205884bfd9a49a4911143dccef2fb213f5e6
Thanks.
Shani
---
From f479205884bfd9a49a4911143dccef2fb213f5e6 Mon Sep 17 00:00:00 2001
From: Shaiq Wani <shaiq.wani@intel.com>
Date: Tue, 2 Sep 2025 18:26:52 +0100
Subject: [PATCH] net/ice/base: fix adding special words
[ upstream commit e563992fba809bcae90b4734f555e354024ec564 ]
The function ice_add_special_words() is meant to add special words (such
as traffic direction) to the rule. The function that
interprets/translates these additional words is ice_get_sw_fv_list().
However, the ice_get_sw_fv_list() is called *before*
ice_add_special_words(), so the "special" words weren't added at that
point yet, hence they're not translated. This results in the driver
ignoring whatever special words that were added. The fix is to call
ice_get_sw_fv_list() *after* ice_add_special_words().
Fixes: ed3066a3b1b0 ("net/ice/base: refactor DDP code")
Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Signed-off-by: Shaiq Wani <shaiq.wani@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_switch.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 7b103e5e34..6321f8a3fc 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -8147,10 +8147,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
*/
ice_get_compat_fv_bitmap(hw, rinfo, fv_bitmap);
- status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
- if (status)
- goto err_unroll;
-
/* Create any special protocol/offset pairs, such as looking at tunnel
* bits by extracting metadata
*/
@@ -8158,6 +8154,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
if (status)
goto err_free_lkup_exts;
+ status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
+ if (status)
+ goto err_unroll;
+
/* Group match words into recipes using preferred recipe grouping
* criteria.
*/
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.144653897 +0200
+++ 0035-net-ice-base-fix-adding-special-words.patch 2025-12-21 16:54:16.982059000 +0200
@@ -1 +1 @@
-From e563992fba809bcae90b4734f555e354024ec564 Mon Sep 17 00:00:00 2001
+From f479205884bfd9a49a4911143dccef2fb213f5e6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e563992fba809bcae90b4734f555e354024ec564 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
- drivers/net/intel/ice/base/ice_switch.c | 8 ++++----
+ drivers/net/ice/base/ice_switch.c | 8 ++++----
@@ -27,5 +28,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_switch.c b/drivers/net/intel/ice/base/ice_switch.c
-index 54cc2e1c07..f16bec044c 100644
---- a/drivers/net/intel/ice/base/ice_switch.c
-+++ b/drivers/net/intel/ice/base/ice_switch.c
-@@ -8287,10 +8287,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
+diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
+index 7b103e5e34..6321f8a3fc 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
+@@ -8147,10 +8147,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
@@ -42 +43 @@
-@@ -8298,6 +8294,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
+@@ -8158,6 +8154,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice/base: fix memory leak in HW profile handling' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (33 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice/base: fix adding special words' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in recipe " Shani Peretz
` (56 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Jacob Keller; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/1c8eb98cc4c9f4b806e43d418c3b152072a22e34
Thanks.
Shani
---
From 1c8eb98cc4c9f4b806e43d418c3b152072a22e34 Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Tue, 2 Sep 2025 18:26:53 +0100
Subject: [PATCH] net/ice/base: fix memory leak in HW profile handling
[ upstream commit bce22ae3a0e61134b5fd19498bd849d1693dadb4 ]
The ice_flow_set_hw_prof() function allocates a params structure with
ice_malloc. It uses this structure to hold some data temporarily while
processing the hardware profile to set.
Static analysis indicated that this memory is not released. Fix this
function to free the memory upon exit.
Fixes: 8ebb93942b2c ("net/ice/base: add function to set HW profile for raw flow")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_flow.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index 7f1490de50..a48c988e99 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -2629,10 +2629,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
status = ice_flow_assoc_hw_prof(hw, blk, dest_vsi_handle,
fdir_vsi_handle, id);
- if (status)
- goto free_params;
-
- return ICE_SUCCESS;
free_params:
ice_free(hw, params);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.194553950 +0200
+++ 0036-net-ice-base-fix-memory-leak-in-HW-profile-handling.patch 2025-12-21 16:54:16.992034000 +0200
@@ -1 +1 @@
-From bce22ae3a0e61134b5fd19498bd849d1693dadb4 Mon Sep 17 00:00:00 2001
+From 1c8eb98cc4c9f4b806e43d418c3b152072a22e34 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bce22ae3a0e61134b5fd19498bd849d1693dadb4 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/net/intel/ice/base/ice_flow.c | 4 ----
+ drivers/net/ice/base/ice_flow.c | 4 ----
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_flow.c b/drivers/net/intel/ice/base/ice_flow.c
-index cdc9ee26c5..7b0ecd54df 100644
---- a/drivers/net/intel/ice/base/ice_flow.c
-+++ b/drivers/net/intel/ice/base/ice_flow.c
-@@ -2632,10 +2632,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
+diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
+index 7f1490de50..a48c988e99 100644
+--- a/drivers/net/ice/base/ice_flow.c
++++ b/drivers/net/ice/base/ice_flow.c
+@@ -2629,10 +2629,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
@@ -34 +35 @@
-- return 0;
+- return ICE_SUCCESS;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice/base: fix memory leak in recipe handling' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (34 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'gro: fix payload corruption in coalescing packets' " Shani Peretz
` (55 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Pandi Kumar Maharajan; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/48c44e36814d0b4ad3a5173ebcc78bdd5a9883d0
Thanks.
Shani
---
From 48c44e36814d0b4ad3a5173ebcc78bdd5a9883d0 Mon Sep 17 00:00:00 2001
From: Pandi Kumar Maharajan <pandi.maharajan@intel.com>
Date: Tue, 2 Sep 2025 18:26:54 +0100
Subject: [PATCH] net/ice/base: fix memory leak in recipe handling
[ upstream commit baf3de23be970346378d5159a81782bfb6eb927b ]
Advanced filter operations (apply/remove GENEVE/VXLAN filters) trigger
the call chain: ice_add_adv_rule()/ice_rem_adv_rule() -> ice_find_recp()
-> ice_get_recp_frm_fw(). Each call to ice_get_recp_frm_fw() creates new
linked list entries for SW recipe tracking without cleaning up previous
entries for the same recipe ID. The linked list then continuously grows
with each filter add/remove operation, leading to excessive heap usage
over time.
Fix the memory leak by adding logic to remove the duplicate entries
before adding new ones for the same recipe ID.
Fixes: fed0c5ca5f19 ("net/ice/base: support programming a new switch recipe")
Signed-off-by: Pandi Kumar Maharajan <pandi.maharajan@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_switch.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 6321f8a3fc..15247ca2f6 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -2435,6 +2435,7 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
bool *refresh_required)
{
ice_declare_bitmap(result_bm, ICE_MAX_FV_WORDS);
+ struct ice_recp_grp_entry *rg, *tmprg_entry;
struct ice_aqc_recipe_data_elem *tmp;
u16 num_recps = ICE_MAX_NUM_RECIPES;
struct ice_prot_lkup_ext *lkup_exts;
@@ -2476,6 +2477,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
*/
lkup_exts = &recps[rid].lkup_exts;
+ /* Remove duplicate entries */
+ LIST_FOR_EACH_ENTRY_SAFE(rg, tmprg_entry, &recps[rid].rg_list,
+ ice_recp_grp_entry, l_entry) {
+ if (rg->rid == rid) {
+ LIST_DEL(&rg->l_entry);
+ ice_free(hw, rg);
+ }
+ }
+
for (sub_recps = 0; sub_recps < num_recps; sub_recps++) {
struct ice_aqc_recipe_data_elem root_bufs = tmp[sub_recps];
struct ice_recp_grp_entry *rg_entry;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.240805608 +0200
+++ 0037-net-ice-base-fix-memory-leak-in-recipe-handling.patch 2025-12-21 16:54:17.009115000 +0200
@@ -1 +1 @@
-From baf3de23be970346378d5159a81782bfb6eb927b Mon Sep 17 00:00:00 2001
+From 48c44e36814d0b4ad3a5173ebcc78bdd5a9883d0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit baf3de23be970346378d5159a81782bfb6eb927b ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
- drivers/net/intel/ice/base/ice_switch.c | 10 ++++++++++
+ drivers/net/ice/base/ice_switch.c | 10 ++++++++++
@@ -27,4 +28,4 @@
-diff --git a/drivers/net/intel/ice/base/ice_switch.c b/drivers/net/intel/ice/base/ice_switch.c
-index f16bec044c..628473f100 100644
---- a/drivers/net/intel/ice/base/ice_switch.c
-+++ b/drivers/net/intel/ice/base/ice_switch.c
+diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
+index 6321f8a3fc..15247ca2f6 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
@@ -39 +40 @@
-@@ -2481,6 +2482,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
+@@ -2476,6 +2477,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'gro: fix payload corruption in coalescing packets' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (35 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in recipe " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Shani Peretz
` (54 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Tathagat Priyadarshi; +Cc: Kumara Parameshwaran, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/da3a55919905bf172a393a4b8e1bee813b5e0cac
Thanks.
Shani
---
From da3a55919905bf172a393a4b8e1bee813b5e0cac Mon Sep 17 00:00:00 2001
From: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Date: Tue, 2 Sep 2025 10:44:51 +0000
Subject: [PATCH] gro: fix payload corruption in coalescing packets
[ upstream commit 33358ccc291fbc39d93b3c3975bebec1c38ab56d ]
In the current implementation when cmp is larger than 0,
the new packet is appended to the original packet. However
the code is operating on the trailing packet to update the tcp flags
which ends up corrupting the payload of the trailing packets.
Fixes: 547f29435769 ("gro: fix reordering of packets")
Signed-off-by: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
Reviewed-by: Kumara Parameshwaran <kumaraparamesh92@gmail.com>
---
lib/gro/gro_tcp.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/gro/gro_tcp.h b/lib/gro/gro_tcp.h
index 2c68b5f23e..3d3295e7ec 100644
--- a/lib/gro/gro_tcp.h
+++ b/lib/gro/gro_tcp.h
@@ -133,7 +133,7 @@ merge_two_tcp_packets(struct gro_tcp_item *item,
pkt_head->nb_segs += pkt_tail->nb_segs;
pkt_head->pkt_len += pkt_tail->pkt_len;
if (tcp_flags != RTE_TCP_ACK_FLAG) {
- tcp_hdr = rte_pktmbuf_mtod_offset(pkt, struct rte_tcp_hdr *,
+ tcp_hdr = rte_pktmbuf_mtod_offset(pkt_head, struct rte_tcp_hdr *,
l2_offset + pkt_head->l2_len + pkt_head->l3_len);
tcp_hdr->tcp_flags |= tcp_flags;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.286392842 +0200
+++ 0038-gro-fix-payload-corruption-in-coalescing-packets.patch 2025-12-21 16:54:17.017034000 +0200
@@ -1 +1 @@
-From 33358ccc291fbc39d93b3c3975bebec1c38ab56d Mon Sep 17 00:00:00 2001
+From da3a55919905bf172a393a4b8e1bee813b5e0cac Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 33358ccc291fbc39d93b3c3975bebec1c38ab56d ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index e9be7b95d1..43383e47e0 100644
+index 2c68b5f23e..3d3295e7ec 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eal: fix DMA mask validation with IOVA mode option' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (36 preceding siblings ...)
2025-12-21 14:56 ` patch 'gro: fix payload corruption in coalescing packets' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'eal: fix MP socket cleanup' " Shani Peretz
` (53 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Shani Peretz; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/3fb6becd148b561613b8bbf643d7b2d0211d30e9
Thanks.
Shani
---
From 3fb6becd148b561613b8bbf643d7b2d0211d30e9 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Thu, 18 Sep 2025 09:47:54 +0300
Subject: [PATCH] eal: fix DMA mask validation with IOVA mode option
[ upstream commit e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 ]
When --iova-mode is explicitly specified in command line, DMA mask
constraints were not being validated, leading to potential runtime
failures when device DMA capabilities are exceeded.
The issue occurred because rte_bus_get_iommu_class() was only called
during IOVA mode auto-detection, but this function has the important
side effect of triggering DMA mask detection (e.g., Intel IOMMU
address width checking via pci_device_iommu_support_va()).
This created an inconsistency, when choosing explicit mode,
the DMA checks are bypassed, but when choosing auto-detection mode,
the constraints are checked and enforced.
The fix moves rte_bus_get_iommu_class() outside the conditional logic
to ensure it's always called during EAL initialization.
Fixes: 4374ebc24bc1 ("malloc: modify error message for DMA mask check")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/freebsd/eal.c | 6 +++++-
lib/eal/linux/eal.c | 5 ++++-
lib/eal/windows/eal.c | 5 ++++-
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index eb62bfdcd3..bf9ff1d5cc 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -693,12 +693,16 @@ rte_eal_init(int argc, char **argv)
* with a message describing the cause.
*/
has_phys_addr = internal_conf->no_hugetlbfs == 0;
+
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
iova_mode = internal_conf->iova_mode;
if (iova_mode == RTE_IOVA_DC) {
RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
if (has_phys_addr) {
RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
if (!RTE_IOVA_IN_MBUF) {
iova_mode = RTE_IOVA_VA;
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index b3b69a090a..b132ebad51 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1067,10 +1067,13 @@ rte_eal_init(int argc, char **argv)
phys_addrs = rte_eal_using_phys_addrs() != 0;
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
/* if no EAL option "--iova-mode=<pa|va>", use bus IOVA scheme */
if (internal_conf->iova_mode == RTE_IOVA_DC) {
/* autodetect the IOVA mapping mode */
- enum rte_iova_mode iova_mode = rte_bus_get_iommu_class();
+ enum rte_iova_mode iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
RTE_LOG(DEBUG, EAL, "Buses did not request a specific IOVA mode.\n");
diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
index 7ec2152211..ede69f120b 100644
--- a/lib/eal/windows/eal.c
+++ b/lib/eal/windows/eal.c
@@ -361,12 +361,15 @@ rte_eal_init(int argc, char **argv)
has_phys_addr = false;
}
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
iova_mode = internal_conf->iova_mode;
if (iova_mode == RTE_IOVA_DC) {
RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
if (has_phys_addr) {
RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
if (!RTE_IOVA_IN_MBUF) {
iova_mode = RTE_IOVA_VA;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.326237567 +0200
+++ 0039-eal-fix-DMA-mask-validation-with-IOVA-mode-option.patch 2025-12-21 16:54:17.029053000 +0200
@@ -1 +1 @@
-From e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 Mon Sep 17 00:00:00 2001
+From 3fb6becd148b561613b8bbf643d7b2d0211d30e9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -34 +35 @@
-index c1ab8d86d2..0f957919d3 100644
+index eb62bfdcd3..bf9ff1d5cc 100644
@@ -37 +38 @@
-@@ -670,12 +670,16 @@ rte_eal_init(int argc, char **argv)
+@@ -693,12 +693,16 @@ rte_eal_init(int argc, char **argv)
@@ -47 +48 @@
- EAL_LOG(DEBUG, "Specific IOVA mode is not requested, autodetecting");
+ RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
@@ -49 +50 @@
- EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
+ RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
@@ -56 +57 @@
-index 52efb8626b..3a0c9c9db6 100644
+index b3b69a090a..b132ebad51 100644
@@ -59 +60 @@
-@@ -1042,10 +1042,13 @@ rte_eal_init(int argc, char **argv)
+@@ -1067,10 +1067,13 @@ rte_eal_init(int argc, char **argv)
@@ -73 +74 @@
- EAL_LOG(DEBUG, "Buses did not request a specific IOVA mode.");
+ RTE_LOG(DEBUG, EAL, "Buses did not request a specific IOVA mode.\n");
@@ -75 +76 @@
-index 4f0a164d9b..2502ec3c3d 100644
+index 7ec2152211..ede69f120b 100644
@@ -78 +79 @@
-@@ -348,12 +348,15 @@ rte_eal_init(int argc, char **argv)
+@@ -361,12 +361,15 @@ rte_eal_init(int argc, char **argv)
@@ -87 +88 @@
- EAL_LOG(DEBUG, "Specific IOVA mode is not requested, autodetecting");
+ RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
@@ -89 +90 @@
- EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
+ RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eal: fix MP socket cleanup' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (37 preceding siblings ...)
2025-12-21 14:56 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Shani Peretz
` (52 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/40de88cf00787ef220b2be188ad9f78be26c55ed
Thanks.
Shani
---
From 40de88cf00787ef220b2be188ad9f78be26c55ed Mon Sep 17 00:00:00 2001
From: Yang Ming <mosesyyoung@gmail.com>
Date: Sat, 19 Jul 2025 23:32:25 +0800
Subject: [PATCH] eal: fix MP socket cleanup
[ upstream commit 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f ]
The secondary process should not close socket file for MP
channel before performing MP request synchronization.
This prevents error logs when the secondary process exits
without any operation on the crypto device while the primary
process starts the device.
Case situation:
eal_bus_cleanup has been added in rte_eal_cleanup. But for the
secondary process, rte_eal_cleanup firstly performs
rte_mp_channel_cleanup, which closes socket file for the MP
channel, making mp_fd invalid. Subsequently, eal_bus_cleanup
triggers vdev_cleanup, which calls mp_request_sync to send a
message via the MP channel. Since mp_fd is invalid, error logs
occur.
Error logs occur as below when the secondary process exit:
EAL: failed to send to (/tmp/dpdk/l2hicu/mp_socket) due to Bad
file descriptor
EAL: Fail to send request /tmp/dpdk/l2hicu/mp_socket:
ipsec_mb_mp_msg
USER1: Create MR request to primary process failed.
Function call trace:
1. rte_eal_cleanup->rte_mp_channel_cleanup->close_socket_fd
2. rte_eal_cleanup->eal_bus_cleanup->vdev_cleanup->
rte_vdev_driver->ipsec_mb_remove->ipsec_mb_qp_release->
ipsec_mb_secondary_qp_op->rte_mp_request_sync->mp_request_sync->
send_msg->sendmsg(mp_fd, &msgh, 0);
Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
Signed-off-by: Yang Ming <mosesyyoung@gmail.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/freebsd/eal.c | 2 +-
lib/eal/linux/eal.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index bf9ff1d5cc..2c9eb3d10e 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -929,8 +929,8 @@ rte_eal_cleanup(void)
struct internal_config *internal_conf =
eal_get_internal_configuration();
rte_service_finalize();
- rte_mp_channel_cleanup();
eal_bus_cleanup();
+ rte_mp_channel_cleanup();
rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index b132ebad51..07a5a93afa 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1369,11 +1369,11 @@ rte_eal_cleanup(void)
rte_memseg_walk(mark_freeable, NULL);
rte_service_finalize();
+ eal_bus_cleanup();
#ifdef VFIO_PRESENT
vfio_mp_sync_cleanup();
#endif
rte_mp_channel_cleanup();
- eal_bus_cleanup();
rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.370557815 +0200
+++ 0040-eal-fix-MP-socket-cleanup.patch 2025-12-21 16:54:17.039085000 +0200
@@ -1 +1 @@
-From 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f Mon Sep 17 00:00:00 2001
+From 40de88cf00787ef220b2be188ad9f78be26c55ed Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f ]
+
@@ -36 +37,0 @@
-Cc: stable@dpdk.org
@@ -46 +47 @@
-index 0f957919d3..1804b4cfd2 100644
+index bf9ff1d5cc..2c9eb3d10e 100644
@@ -49 +50 @@
-@@ -909,8 +909,8 @@ rte_eal_cleanup(void)
+@@ -929,8 +929,8 @@ rte_eal_cleanup(void)
@@ -60 +61 @@
-index 3a0c9c9db6..caf22033d0 100644
+index b132ebad51..07a5a93afa 100644
@@ -63 +64 @@
-@@ -1333,11 +1333,11 @@ rte_eal_cleanup(void)
+@@ -1369,11 +1369,11 @@ rte_eal_cleanup(void)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/ipsec_mb: fix QP release in secondary' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (38 preceding siblings ...)
2025-12-21 14:56 ` patch 'eal: fix MP socket cleanup' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'efd: fix AVX2 support' " Shani Peretz
` (51 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/2ddd67a20a0232b2801c29f16a535420661aa0be
the
Thanks.
Shani
---
From 2ddd67a20a0232b2801c29f16a535420661aa0be Mon Sep 17 00:00:00 2001
From: Yang Ming <mosesyyoung@gmail.com>
Date: Sat, 19 Jul 2025 23:32:26 +0800
Subject: [PATCH] crypto/ipsec_mb: fix QP release in secondary
[ upstream commit 0e03ab647d07cd985a7cac36cefff5195cc3a07d ]
When a secondary process tries to release a queue pair (QP) that
does not belong to it, error logs occur:
CRYPTODEV: ipsec_mb_ipc_request() line 373: Unable to release
qp_id=0
EAL: Message data is too long
EAL: Fail to handle message: ipsec_mb_mp_msg
EAL: Fail to recv reply for request /tmp/dpdk/l2hi/mp_socket:
ipsec_mb_mp_msg
From the code path, cryptodev->data is allocated in the primary
via rte_cryptodev_data_alloc() (inside
ipsec_mb_create-->rte_cryptodev_pmd_create
-->rte_cryptodev_pmd_allocate-->rte_cryptodev_data_alloc).
This memory is placed in a shared memzone
(rte_cryptodev_data_%u), so both primary and secondary processes
reference the same cryptodev->data, including nb_queue_pairs and
queue_pairs[].
As a result, when the secondary process exits, ipsec_mb_remove()
is called (inside
rte_eal_cleanup-->eal_bus_cleanup-->vdev_cleanup
-->rte_vdev_driver-->ipsec_mb_remove-->ipsec_mb_qp_release
-->ipsec_mb_secondary_qp_op) and it loops through all queue
pairs using:
for (qp_id = 0; qp_id < cryptodev->data->nb_queue_pairs; qp_id++)
ipsec_mb_qp_release(cryptodev, qp_id);
This causes the secondary to attempt releasing queue pairs it
doesn't own, triggering the error logs mentioned above.
This patch ensures that a secondary process only frees a QP if
it actually owns it, preventing conflicts and resolving the
issue.
Fixes: b35848bc01f6 ("crypto/ipsec_mb: add multi-process IPC request handler")
Signed-off-by: Yang Ming <mosesyyoung@gmail.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/crypto/ipsec_mb/ipsec_mb_ops.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
index 2a5599b7d8..ccfda2048a 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
@@ -139,6 +139,7 @@ int
ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
{
struct ipsec_mb_qp *qp = dev->data->queue_pairs[qp_id];
+ uint16_t process_id = (uint16_t)getpid();
if (!qp)
return 0;
@@ -158,8 +159,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
rte_free(qp);
dev->data->queue_pairs[qp_id] = NULL;
} else { /* secondary process */
- return ipsec_mb_secondary_qp_op(dev->data->dev_id, qp_id,
- NULL, 0, RTE_IPSEC_MB_MP_REQ_QP_FREE);
+ if (qp->qp_used_by_pid == process_id)
+ return ipsec_mb_secondary_qp_op(dev->data->dev_id,
+ qp_id, NULL, 0,
+ RTE_IPSEC_MB_MP_REQ_QP_FREE);
}
return 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.412757251 +0200
+++ 0041-crypto-ipsec_mb-fix-QP-release-in-secondary.patch 2025-12-21 16:54:17.043087000 +0200
@@ -1 +1 @@
-From 0e03ab647d07cd985a7cac36cefff5195cc3a07d Mon Sep 17 00:00:00 2001
+From 2ddd67a20a0232b2801c29f16a535420661aa0be Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0e03ab647d07cd985a7cac36cefff5195cc3a07d ]
+
@@ -41 +42,0 @@
-Cc: stable@dpdk.org
@@ -50 +51 @@
-index 910efb1a97..50ee140ccd 100644
+index 2a5599b7d8..ccfda2048a 100644
@@ -53 +54 @@
-@@ -138,6 +138,7 @@ int
+@@ -139,6 +139,7 @@ int
@@ -61 +62 @@
-@@ -152,8 +153,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
+@@ -158,8 +159,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'efd: fix AVX2 support' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (39 preceding siblings ...)
2025-12-21 14:56 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/octeon_ep: fix device start' " Shani Peretz
` (50 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/08c3dc2d9f15f063d1544b081d3639d002018744
Thanks.
Shani
---
From 08c3dc2d9f15f063d1544b081d3639d002018744 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 18 Sep 2025 08:36:14 +0200
Subject: [PATCH] efd: fix AVX2 support
[ upstream commit c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 ]
When switching to Meson build, the compilation check on CC_SUPPORT_AVX2
became obsolete, thus the case EFD_LOOKUP_AVX2 became dead.
The function efd_lookup_internal_avx2() was never called,
and its header include rte_efd_x86.h has been removed later.
EFD_LOOKUP_AVX2 is chosen at runtime after checking AVX2 availability,
so the obsolete build-time check for AVX2 can be simply removed,
and the missing include added back.
Fixes: 5b9656b157d3 ("lib: build with meson")
Fixes: 30a1de105a5f ("lib: remove unneeded header includes")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/efd/rte_efd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c
index dad962ce29..c642edbe2d 100644
--- a/lib/efd/rte_efd.c
+++ b/lib/efd/rte_efd.c
@@ -24,6 +24,7 @@
#include "rte_efd.h"
#if defined(RTE_ARCH_X86)
+#include "rte_efd_x86.h"
#elif defined(RTE_ARCH_ARM64)
#include "rte_efd_arm64.h"
#endif
@@ -1267,7 +1268,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
switch (lookup_fn) {
-#if defined(RTE_ARCH_X86) && defined(CC_SUPPORT_AVX2)
+#if defined(RTE_ARCH_X86)
case EFD_LOOKUP_AVX2:
return efd_lookup_internal_avx2(group->hash_idx,
group->lookup_table,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.459858118 +0200
+++ 0042-efd-fix-AVX2-support.patch 2025-12-21 16:54:17.048101000 +0200
@@ -1 +1 @@
-From c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 Mon Sep 17 00:00:00 2001
+From 08c3dc2d9f15f063d1544b081d3639d002018744 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index b0e44e5c51..ebf1e0655f 100644
+index dad962ce29..c642edbe2d 100644
@@ -29 +30 @@
-@@ -26,6 +26,7 @@
+@@ -24,6 +24,7 @@
@@ -37 +38 @@
-@@ -1279,7 +1280,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
+@@ -1267,7 +1268,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/octeon_ep: fix device start' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (40 preceding siblings ...)
2025-12-21 14:56 ` patch 'efd: fix AVX2 support' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'common/cnxk: fix async event handling' " Shani Peretz
` (49 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Vamsi Attunuru; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/6170c4e649b34c6ea40cb3eecd4b3b882084f444
Thanks.
Shani
---
From 6170c4e649b34c6ea40cb3eecd4b3b882084f444 Mon Sep 17 00:00:00 2001
From: Vamsi Attunuru <vattunuru@marvell.com>
Date: Mon, 14 Jul 2025 11:28:49 +0530
Subject: [PATCH] net/octeon_ep: fix device start
[ upstream commit c892964faa605c7884b454b435c4fb663dff0c9e ]
Currently the device start routine clears the TX doorbell and
updates RX doorbell, which causes the device start operation
to fail after a device stop.
Patch corrects the handling of RX & TX doorbell and ensures
that any pending packets in the RX queue are drained and gets
refilled before starting the device.
Fixes: 2c82554c98bd ("net/octeontx_ep: add device start and stop")
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
---
drivers/net/octeon_ep/cnxk_ep_rx.c | 40 +++++++++++++++++++++++++++
drivers/net/octeon_ep/cnxk_ep_vf.c | 32 ++++++++++-----------
drivers/net/octeon_ep/otx2_ep_vf.c | 30 +++++++++-----------
drivers/net/octeon_ep/otx_ep_common.h | 1 +
drivers/net/octeon_ep/otx_ep_ethdev.c | 6 ++++
drivers/net/octeon_ep/otx_ep_rxtx.h | 3 ++
6 files changed, 77 insertions(+), 35 deletions(-)
diff --git a/drivers/net/octeon_ep/cnxk_ep_rx.c b/drivers/net/octeon_ep/cnxk_ep_rx.c
index 74f0011283..41b369bd6b 100644
--- a/drivers/net/octeon_ep/cnxk_ep_rx.c
+++ b/drivers/net/octeon_ep/cnxk_ep_rx.c
@@ -307,3 +307,43 @@ cn9k_ep_recv_pkts_mseg(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pk
return new_pkts;
}
+
+void
+cnxk_ep_drain_rx_pkts(void *rx_queue)
+{
+ struct otx_ep_droq *droq = (struct otx_ep_droq *)rx_queue;
+ struct rte_mbuf *rx_pkt, *next_seg, *seg;
+ uint16_t i, j, nb_pkts;
+
+ if (droq->read_idx == 0 && droq->pkts_pending == 0 && droq->refill_count)
+ return;
+
+ /* Check for pending packets */
+ nb_pkts = cnxk_ep_rx_pkts_to_process(droq, droq->nb_desc);
+
+ /* Drain the pending packets */
+ for (i = 0; i < nb_pkts; i++) {
+ rx_pkt = NULL;
+ cnxk_ep_process_pkts_scalar_mseg(&rx_pkt, droq, 1);
+ if (rx_pkt) {
+ seg = rx_pkt->next;
+ for (j = 1; j < rx_pkt->nb_segs; j++) {
+ next_seg = seg->next;
+ rte_mempool_put(droq->mpool, seg);
+ seg = next_seg;
+ }
+ rx_pkt->nb_segs = 1;
+ rte_mempool_put(droq->mpool, rx_pkt);
+ }
+ }
+
+ cnxk_ep_rx_refill(droq);
+
+ /* Reset the indexes */
+ droq->read_idx = 0;
+ droq->write_idx = 0;
+ droq->refill_idx = 0;
+ droq->refill_count = 0;
+ droq->last_pkt_count = 0;
+ droq->pkts_pending = 0;
+}
diff --git a/drivers/net/octeon_ep/cnxk_ep_vf.c b/drivers/net/octeon_ep/cnxk_ep_vf.c
index 74b63a161f..6e56cb3a73 100644
--- a/drivers/net/octeon_ep/cnxk_ep_vf.c
+++ b/drivers/net/octeon_ep/cnxk_ep_vf.c
@@ -138,6 +138,18 @@ cnxk_ep_vf_setup_iq_regs(struct otx_ep_device *otx_ep, uint32_t iq_no)
return -EIO;
}
+ /* Clear the IQ doorbell */
+ loop = OTX_EP_BUSY_LOOP_COUNT;
+ while ((rte_read64(iq->doorbell_reg) != 0ull) && loop--) {
+ rte_write32(OTX_EP_CLEAR_INSTR_DBELL, iq->doorbell_reg);
+ rte_delay_ms(1);
+ }
+
+ if (loop < 0) {
+ otx_ep_err("INSTR DBELL is not zero");
+ return -EIO;
+ }
+
/* IN INTR_THRESHOLD is set to max(FFFFFFFF) which disable the IN INTR
* to raise
*/
@@ -237,8 +249,8 @@ cnxk_ep_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
droq->pkts_sent_ism =
(uint32_t *)((uint8_t *)otx_ep->ism_buffer_mz->addr
+ CNXK_EP_OQ_ISM_OFFSET(oq_no));
- otx_ep_err("SDP_R[%d] OQ ISM virt: %p dma: 0x%" PRIX64,
- oq_no, (void *)droq->pkts_sent_ism, ism_addr);
+ otx_ep_err("SDP_R[%d] OQ ISM virt: %p dma: 0x%" PRIX64, oq_no,
+ (void *)(uintptr_t)droq->pkts_sent_ism, ism_addr);
*droq->pkts_sent_ism = 0;
droq->pkts_sent_ism_prev = 0;
@@ -266,24 +278,8 @@ cnxk_ep_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
static int
cnxk_ep_vf_enable_iq(struct otx_ep_device *otx_ep, uint32_t q_no)
{
- int loop = OTX_EP_BUSY_LOOP_COUNT;
uint64_t reg_val = 0ull;
- /* Resetting doorbells during IQ enabling also to handle abrupt
- * guest reboot. IQ reset does not clear the doorbells.
- */
- oct_ep_write64(0xFFFFFFFF, otx_ep->hw_addr + CNXK_EP_R_IN_INSTR_DBELL(q_no));
-
- while (((oct_ep_read64(otx_ep->hw_addr +
- CNXK_EP_R_IN_INSTR_DBELL(q_no))) != 0ull) && loop--) {
- rte_delay_ms(1);
- }
-
- if (loop < 0) {
- otx_ep_err("INSTR DBELL not coming back to 0");
- return -EIO;
- }
-
reg_val = oct_ep_read64(otx_ep->hw_addr + CNXK_EP_R_IN_ENABLE(q_no));
reg_val |= 0x1ull;
diff --git a/drivers/net/octeon_ep/otx2_ep_vf.c b/drivers/net/octeon_ep/otx2_ep_vf.c
index fdab542246..203933c7d2 100644
--- a/drivers/net/octeon_ep/otx2_ep_vf.c
+++ b/drivers/net/octeon_ep/otx2_ep_vf.c
@@ -287,6 +287,18 @@ otx2_vf_setup_iq_regs(struct otx_ep_device *otx_ep, uint32_t iq_no)
return -EIO;
}
+ /* Clear the IQ doorbell */
+ loop = OTX_EP_BUSY_LOOP_COUNT;
+ while ((rte_read64(iq->doorbell_reg) != 0ull) && loop--) {
+ rte_write32(OTX_EP_CLEAR_INSTR_DBELL, iq->doorbell_reg);
+ rte_delay_ms(1);
+ }
+
+ if (loop < 0) {
+ otx_ep_err("INSTR DBELL is not zero");
+ return -EIO;
+ }
+
/* IN INTR_THRESHOLD is set to max(FFFFFFFF) which disable the IN INTR
* to raise
*/
@@ -388,7 +400,7 @@ otx2_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
droq->pkts_sent_ism =
(uint32_t *)((uint8_t *)otx_ep->ism_buffer_mz->addr
+ OTX2_EP_OQ_ISM_OFFSET(oq_no));
- otx_ep_err("SDP_R[%d] OQ ISM virt: %p, dma: 0x%x", oq_no,
+ otx_ep_dbg("SDP_R[%d] OQ ISM virt: %p, dma: 0x%x", oq_no,
(void *)droq->pkts_sent_ism,
(unsigned int)ism_addr);
*droq->pkts_sent_ism = 0;
@@ -411,24 +423,8 @@ otx2_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
static int
otx2_vf_enable_iq(struct otx_ep_device *otx_ep, uint32_t q_no)
{
- int loop = SDP_VF_BUSY_LOOP_COUNT;
uint64_t reg_val = 0ull;
- /* Resetting doorbells during IQ enabling also to handle abrupt
- * guest reboot. IQ reset does not clear the doorbells.
- */
- oct_ep_write64(0xFFFFFFFF, otx_ep->hw_addr + SDP_VF_R_IN_INSTR_DBELL(q_no));
-
- while (((oct_ep_read64(otx_ep->hw_addr +
- SDP_VF_R_IN_INSTR_DBELL(q_no))) != 0ull) && loop--) {
- rte_delay_ms(1);
- }
-
- if (loop < 0) {
- otx_ep_err("INSTR DBELL not coming back to 0");
- return -EIO;
- }
-
reg_val = oct_ep_read64(otx_ep->hw_addr + SDP_VF_R_IN_ENABLE(q_no));
reg_val |= 0x1ull;
diff --git a/drivers/net/octeon_ep/otx_ep_common.h b/drivers/net/octeon_ep/otx_ep_common.h
index 938c51b35d..ccd4483058 100644
--- a/drivers/net/octeon_ep/otx_ep_common.h
+++ b/drivers/net/octeon_ep/otx_ep_common.h
@@ -579,6 +579,7 @@ int otx_ep_delete_oqs(struct otx_ep_device *otx_ep, uint32_t oq_no);
#define OTX_EP_CLEAR_ISIZE_BSIZE 0x7FFFFFULL
#define OTX_EP_CLEAR_OUT_INT_LVLS 0x3FFFFFFFFFFFFFULL
#define OTX_EP_CLEAR_IN_INT_LVLS 0xFFFFFFFF
+#define OTX_EP_CLEAR_INSTR_DBELL 0xFFFFFFFF
#define OTX_EP_CLEAR_SDP_IN_INT_LVLS 0x3FFFFFFFFFFFFFUL
#define OTX_EP_DROQ_BUFSZ_MASK 0xFFFF
#define OTX_EP_CLEAR_SLIST_DBELL 0xFFFFFFFF
diff --git a/drivers/net/octeon_ep/otx_ep_ethdev.c b/drivers/net/octeon_ep/otx_ep_ethdev.c
index c0298a56ac..51e3ed6576 100644
--- a/drivers/net/octeon_ep/otx_ep_ethdev.c
+++ b/drivers/net/octeon_ep/otx_ep_ethdev.c
@@ -177,6 +177,12 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
int ret;
otx_epvf = (struct otx_ep_device *)OTX_EP_DEV(eth_dev);
+
+ for (q = 0; q < otx_epvf->nb_rx_queues; q++) {
+ cnxk_ep_drain_rx_pkts(otx_epvf->droq[q]);
+ otx_epvf->fn_list.setup_oq_regs(otx_epvf, q);
+ }
+
/* Enable IQ/OQ for this device */
ret = otx_epvf->fn_list.enable_io_queues(otx_epvf);
if (ret) {
diff --git a/drivers/net/octeon_ep/otx_ep_rxtx.h b/drivers/net/octeon_ep/otx_ep_rxtx.h
index cb68ef3b41..9a63974094 100644
--- a/drivers/net/octeon_ep/otx_ep_rxtx.h
+++ b/drivers/net/octeon_ep/otx_ep_rxtx.h
@@ -30,6 +30,9 @@ otx_ep_incr_index(uint32_t index, uint32_t count, uint32_t max)
return ((index + count) & (max - 1));
}
+void
+cnxk_ep_drain_rx_pkts(void *rx_queue);
+
uint16_t
otx_ep_xmit_pkts(void *tx_queue, struct rte_mbuf **pkts, uint16_t nb_pkts);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.501857701 +0200
+++ 0043-net-octeon_ep-fix-device-start.patch 2025-12-21 16:54:17.062099000 +0200
@@ -1 +1 @@
-From c892964faa605c7884b454b435c4fb663dff0c9e Mon Sep 17 00:00:00 2001
+From 6170c4e649b34c6ea40cb3eecd4b3b882084f444 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c892964faa605c7884b454b435c4fb663dff0c9e ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index a10e9c536e..9678cec90b 100644
+index 74f0011283..41b369bd6b 100644
@@ -31 +32 @@
-@@ -151,3 +151,43 @@ cn9k_ep_recv_pkts_mseg(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pk
+@@ -307,3 +307,43 @@ cn9k_ep_recv_pkts_mseg(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pk
@@ -76 +77 @@
-index ca84cac962..a1d9f65f38 100644
+index 74b63a161f..6e56cb3a73 100644
@@ -100 +101 @@
- (uint32_t __rte_atomic *)((uint8_t *)otx_ep->ism_buffer_mz->addr
+ (uint32_t *)((uint8_t *)otx_ep->ism_buffer_mz->addr
@@ -103,3 +104,3 @@
-- oq_no, (void *)(uintptr_t)droq->pkts_sent_ism, ism_addr);
-+ otx_ep_dbg("SDP_R[%d] OQ ISM virt: %p dma: 0x%" PRIX64, oq_no,
-+ (void *)(uintptr_t)droq->pkts_sent_ism, ism_addr);
+- oq_no, (void *)droq->pkts_sent_ism, ism_addr);
++ otx_ep_err("SDP_R[%d] OQ ISM virt: %p dma: 0x%" PRIX64, oq_no,
++ (void *)(uintptr_t)droq->pkts_sent_ism, ism_addr);
@@ -107 +108 @@
- droq->pkts_sent_prev = 0;
+ droq->pkts_sent_ism_prev = 0;
@@ -135 +136 @@
-index a482f4266e..00f723a5a8 100644
+index fdab542246..203933c7d2 100644
@@ -159 +160 @@
- (uint32_t __rte_atomic *)((uint8_t *)otx_ep->ism_buffer_mz->addr
+ (uint32_t *)((uint8_t *)otx_ep->ism_buffer_mz->addr
@@ -163 +164 @@
- (void *)(uintptr_t)droq->pkts_sent_ism,
+ (void *)droq->pkts_sent_ism,
@@ -192 +193 @@
-index 122926cd40..53de8b18d6 100644
+index 938c51b35d..ccd4483058 100644
@@ -195 +196 @@
-@@ -589,6 +589,7 @@ int otx_ep_delete_oqs(struct otx_ep_device *otx_ep, uint32_t oq_no);
+@@ -579,6 +579,7 @@ int otx_ep_delete_oqs(struct otx_ep_device *otx_ep, uint32_t oq_no);
@@ -204 +205 @@
-index 10f2f8a2e0..cd8e4bad3b 100644
+index c0298a56ac..51e3ed6576 100644
@@ -207 +208 @@
-@@ -232,6 +232,12 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
+@@ -177,6 +177,12 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
@@ -221 +222 @@
-index 6b3abe21b1..384e4fb412 100644
+index cb68ef3b41..9a63974094 100644
@@ -224 +225 @@
-@@ -32,6 +32,9 @@ otx_ep_incr_index(uint32_t index, uint32_t count, uint32_t max)
+@@ -30,6 +30,9 @@ otx_ep_incr_index(uint32_t index, uint32_t count, uint32_t max)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'common/cnxk: fix async event handling' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (41 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/octeon_ep: fix device start' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix feature list of ice driver' " Shani Peretz
` (48 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Tomasz Duszynski; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/930b906cf0d10baa4e5601cb9aa4adb0503426a8
Thanks.
Shani
---
From 930b906cf0d10baa4e5601cb9aa4adb0503426a8 Mon Sep 17 00:00:00 2001
From: Tomasz Duszynski <tduszynski@marvell.com>
Date: Wed, 30 Jul 2025 04:51:09 +0200
Subject: [PATCH] common/cnxk: fix async event handling
[ upstream commit 21b631cd0d3670e375151185d74cd5a03888e2bd ]
If async event shows up unexpectedly ack it and continue
until expected event is received.
Fixes: 857721d62d42 ("common/cnxk: add BPHY communication with atf")
Signed-off-by: Tomasz Duszynski <tduszynski@marvell.com>
---
drivers/common/cnxk/roc_bphy_cgx.c | 52 +++++++++++-------------------
1 file changed, 19 insertions(+), 33 deletions(-)
diff --git a/drivers/common/cnxk/roc_bphy_cgx.c b/drivers/common/cnxk/roc_bphy_cgx.c
index 3d674dbe84..befd69430b 100644
--- a/drivers/common/cnxk/roc_bphy_cgx.c
+++ b/drivers/common/cnxk/roc_bphy_cgx.c
@@ -65,8 +65,7 @@ roc_bphy_cgx_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
}
static int
-roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t *scr0)
+roc_bphy_cgx_wait_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0, bool ack)
{
int tries = 5000;
uint64_t scr1;
@@ -75,16 +74,18 @@ roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
*scr0 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH0);
scr1 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH1);
- if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0) == 0)
- break;
-
/* clear async events if any */
- if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) ==
- ETH_EVT_ASYNC &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0))
+ if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) == ETH_EVT_ASYNC &&
+ FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0)) {
roc_bphy_cgx_ack(roc_cgx, lmac, scr0);
+ goto skip;
+ }
+ if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
+ FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0) == ack)
+ break;
+
+skip:
plt_delay_ms(1);
} while (--tries);
@@ -92,29 +93,20 @@ roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
}
static int
-roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t *scr0)
+roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0)
{
- int tries = 5000;
- uint64_t scr1;
-
- do {
- *scr0 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH0);
- scr1 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH1);
-
- if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0))
- break;
-
- plt_delay_ms(1);
- } while (--tries);
+ return roc_bphy_cgx_wait_ack(roc_cgx, lmac, scr0, false);
+}
- return tries ? 0 : -ETIMEDOUT;
+static int
+roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0)
+{
+ return roc_bphy_cgx_wait_ack(roc_cgx, lmac, scr0, true);
}
static int
-roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t scr1, uint64_t *scr0)
+roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t scr1,
+ uint64_t *scr0)
{
uint8_t cmd_id = FIELD_GET(SCR1_ETH_CMD_ID, scr1);
int ret;
@@ -142,12 +134,6 @@ roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
if (cmd_id == ETH_CMD_INTF_SHUTDOWN)
goto out;
- if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) != ETH_EVT_CMD_RESP) {
- plt_err("received async event instead of cmd resp event");
- ret = -EIO;
- goto out;
- }
-
if (FIELD_GET(SCR0_ETH_EVT_STS_S_ID, *scr0) != cmd_id) {
plt_err("received resp for cmd %d expected for cmd %d",
(int)FIELD_GET(SCR0_ETH_EVT_STS_S_ID, *scr0), cmd_id);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.547814355 +0200
+++ 0044-common-cnxk-fix-async-event-handling.patch 2025-12-21 16:54:17.066062000 +0200
@@ -1 +1 @@
-From 21b631cd0d3670e375151185d74cd5a03888e2bd Mon Sep 17 00:00:00 2001
+From 930b906cf0d10baa4e5601cb9aa4adb0503426a8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 21b631cd0d3670e375151185d74cd5a03888e2bd ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index db70bafd9b..1de5195657 100644
+index 3d674dbe84..befd69430b 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: fix feature list of ice driver' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (42 preceding siblings ...)
2025-12-21 14:56 ` patch 'common/cnxk: fix async event handling' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix feature list of iavf " Shani Peretz
` (47 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/1d0552c7956643e2c9a88ff3f022de9b03fe5bfa
Thanks.
Shani
---
From 1d0552c7956643e2c9a88ff3f022de9b03fe5bfa Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Tue, 16 Sep 2025 14:21:06 +0000
Subject: [PATCH] doc: fix feature list of ice driver
[ upstream commit 62b6b612ea272d334ca8b856f1055c8d8fcb1072 ]
The free tx mbuf on demand feature has been supported since commit
ab7cfe1fe3d7 ("net/ice: cleanup Tx buffers"). Update the list of
supported features to reflect this.
Fixes: ab7cfe1fe3d7 ("net/ice: cleanup Tx buffers")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/nics/features/ice.ini | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini
index 62869ef0a0..f203205074 100644
--- a/doc/guides/nics/features/ice.ini
+++ b/doc/guides/nics/features/ice.ini
@@ -13,6 +13,7 @@ Link status = Y
Link status event = Y
Rx interrupt = Y
Fast mbuf free = P
+Free Tx mbuf on demand = Y
Queue start/stop = Y
Burst mode info = Y
Power mgmt address monitor = Y
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.594841836 +0200
+++ 0045-doc-fix-feature-list-of-ice-driver.patch 2025-12-21 16:54:17.072042000 +0200
@@ -1 +1 @@
-From 62b6b612ea272d334ca8b856f1055c8d8fcb1072 Mon Sep 17 00:00:00 2001
+From 1d0552c7956643e2c9a88ff3f022de9b03fe5bfa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 62b6b612ea272d334ca8b856f1055c8d8fcb1072 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 9c8569740a..2703493514 100644
+index 62869ef0a0..f203205074 100644
@@ -23,2 +24,2 @@
-@@ -14,6 +14,7 @@ Link status event = Y
- FEC = Y
+@@ -13,6 +13,7 @@ Link status = Y
+ Link status event = Y
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: fix feature list of iavf driver' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (43 preceding siblings ...)
2025-12-21 14:56 ` patch 'doc: fix feature list of ice driver' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'baseband/acc: fix exported header' " Shani Peretz
` (46 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/c034373056c3625902b66cac187d1b33ce96de84
Thanks.
Shani
---
From c034373056c3625902b66cac187d1b33ce96de84 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Tue, 16 Sep 2025 14:21:08 +0000
Subject: [PATCH] doc: fix feature list of iavf driver
[ upstream commit f3878b615e69a12087a6c5d212723478cfc79c31 ]
The iavf PMD does not report the speed capabilities that the device is
capable of in the speed_capa field of the rte_eth_dev_info struct. The
documentation incorrectly stated this feature as supported. Fix this.
The free tx mbuf on demand feature has been supported since commit
86e44244f95c ("net/iavf: cleanup Tx buffers"). Update the list of
supported features to reflect this.
The burst mode info feature has been supported since commit 0d5a856f5be9
("net/iavf: support Rx/Tx burst mode info"). Update the list of
supported features to reflect this.
The extended statistics feature has been implemented since commit
d38a06bf4367 ("net/iavf: add extended stats"). Update the list of
supported features to reflect this.
Fixes: 48de41ca11f0 ("net/avf: enable link status update")
Fixes: 86e44244f95c ("net/iavf: cleanup Tx buffers")
Fixes: 0d5a856f5be9 ("net/iavf: support Rx/Tx burst mode info")
Fixes: d38a06bf4367 ("net/iavf: add extended stats")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/nics/features/iavf.ini | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini
index ce9860e963..118ac6e642 100644
--- a/doc/guides/nics/features/iavf.ini
+++ b/doc/guides/nics/features/iavf.ini
@@ -7,12 +7,13 @@
; is selected.
;
[Features]
-Speed capabilities = Y
Link status = Y
Rx interrupt = Y
+Free Tx mbuf on demand = Y
Queue start/stop = Y
Runtime Rx queue setup = Y
Runtime Tx queue setup = Y
+Burst mode info = Y
Power mgmt address monitor = Y
MTU update = Y
Scattered Rx = Y
@@ -38,6 +39,7 @@ Packet type parsing = Y
Rx descriptor status = Y
Tx descriptor status = Y
Basic stats = Y
+Extended stats = Y
Multiprocess aware = Y
FreeBSD = Y
Linux = Y
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.639159427 +0200
+++ 0046-doc-fix-feature-list-of-iavf-driver.patch 2025-12-21 16:54:17.078091000 +0200
@@ -1 +1 @@
-From f3878b615e69a12087a6c5d212723478cfc79c31 Mon Sep 17 00:00:00 2001
+From c034373056c3625902b66cac187d1b33ce96de84 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3878b615e69a12087a6c5d212723478cfc79c31 ]
+
@@ -26 +27,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 61c4742197..7695e3ff7c 100644
+index ce9860e963..118ac6e642 100644
@@ -53 +54 @@
-@@ -39,6 +40,7 @@ Packet type parsing = Y
+@@ -38,6 +39,7 @@ Packet type parsing = Y
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'baseband/acc: fix exported header' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (44 preceding siblings ...)
2025-12-21 14:56 ` patch 'doc: fix feature list of iavf " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'eventdev: do not include driver header in DMA adapter' " Shani Peretz
` (45 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/55a523f898d8d5fe64dac6bc7b529419bb86e48e
Thanks.
Shani
---
From 55a523f898d8d5fe64dac6bc7b529419bb86e48e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 20 Nov 2024 15:24:31 +0100
Subject: [PATCH] baseband/acc: fix exported header
[ upstream commit 611d08f11d42dfafbbf954798ea9c917f7d4ef89 ]
rte_acc_cfg.h relies on rte_acc_common_cfg.h.
Fixes: 32e8b7ea35dd ("baseband/acc100: refactor to segregate common code")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/baseband/acc/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/baseband/acc/meson.build b/drivers/baseband/acc/meson.build
index 449d1e176c..d60dc41b7f 100644
--- a/drivers/baseband/acc/meson.build
+++ b/drivers/baseband/acc/meson.build
@@ -26,4 +26,4 @@ deps += ['bus_pci']
sources = files('rte_acc100_pmd.c', 'rte_vrb_pmd.c')
-headers = files('rte_acc_cfg.h')
+headers = files('rte_acc_cfg.h', 'rte_acc_common_cfg.h')
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.680154823 +0200
+++ 0047-baseband-acc-fix-exported-header.patch 2025-12-21 16:54:17.083050000 +0200
@@ -1 +1 @@
-From 611d08f11d42dfafbbf954798ea9c917f7d4ef89 Mon Sep 17 00:00:00 2001
+From 55a523f898d8d5fe64dac6bc7b529419bb86e48e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 611d08f11d42dfafbbf954798ea9c917f7d4ef89 ]
+
@@ -17 +19 @@
-index 4e6d715d7c..9278897f76 100644
+index 449d1e176c..d60dc41b7f 100644
@@ -20 +22 @@
-@@ -46,4 +46,4 @@ deps += ['bus_pci']
+@@ -26,4 +26,4 @@ deps += ['bus_pci']
@@ -22 +24 @@
- sources = files('acc_common.c', 'rte_acc100_pmd.c', 'rte_vrb_pmd.c')
+ sources = files('rte_acc100_pmd.c', 'rte_vrb_pmd.c')
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eventdev: do not include driver header in DMA adapter' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (45 preceding siblings ...)
2025-12-21 14:56 ` patch 'baseband/acc: fix exported header' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'gpudev: fix driver header for Windows' " Shani Peretz
` (44 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: David Marchand; +Cc: Amit Prakash Shukla, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/c81d169f56cad0b6e1187f8726c6f4159e472e22
Thanks.
Shani
---
From c81d169f56cad0b6e1187f8726c6f4159e472e22 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 19 Nov 2024 22:31:12 +0100
Subject: [PATCH] eventdev: do not include driver header in DMA adapter
[ upstream commit faa398f28d7259e42954c04e048ad03398c938e5 ]
The dma adapter header does not require including rte_dmadev_pmd.h which
is a driver header.
Fixes: 66a30a29387a ("eventdev/dma: introduce DMA adapter")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Amit Prakash Shukla <amitprakashs@marvell.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/eventdev/rte_event_dma_adapter.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/eventdev/rte_event_dma_adapter.h b/lib/eventdev/rte_event_dma_adapter.h
index e924ab673d..c7434932e7 100644
--- a/lib/eventdev/rte_event_dma_adapter.h
+++ b/lib/eventdev/rte_event_dma_adapter.h
@@ -144,7 +144,7 @@
#include <stdint.h>
#include <rte_common.h>
-#include <rte_dmadev_pmd.h>
+#include <rte_dmadev.h>
#include <rte_eventdev.h>
#ifdef __cplusplus
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.722182903 +0200
+++ 0048-eventdev-do-not-include-driver-header-in-DMA-adapter.patch 2025-12-21 16:54:17.088066000 +0200
@@ -1 +1 @@
-From faa398f28d7259e42954c04e048ad03398c938e5 Mon Sep 17 00:00:00 2001
+From c81d169f56cad0b6e1187f8726c6f4159e472e22 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit faa398f28d7259e42954c04e048ad03398c938e5 ]
+
@@ -19 +21 @@
-index 5c480b82ff..34142f26db 100644
+index e924ab673d..c7434932e7 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'gpudev: fix driver header for Windows' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (46 preceding siblings ...)
2025-12-21 14:56 ` patch 'eventdev: do not include driver header in DMA adapter' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'drivers: fix some exported headers' " Shani Peretz
` (43 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/6e0c826aec491bfc3db38fb53988ba0b01c880f3
Thanks.
Shani
---
From 6e0c826aec491bfc3db38fb53988ba0b01c880f3 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 24 Sep 2025 18:42:49 +0200
Subject: [PATCH] gpudev: fix driver header for Windows
[ upstream commit bda83ec0bb0c1bfba33843059a244181b46b9907 ]
Use rte_os.h and its RTE_TAILQ_HEAD definition compatible with BSD
sys/queue.h
Fixes: 18cb07563165 ("gpudev: add event notification")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/gpudev/gpudev.c | 1 +
lib/gpudev/gpudev_driver.h | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
index 6845d18b4d..0e2d6f29d4 100644
--- a/lib/gpudev/gpudev.c
+++ b/lib/gpudev/gpudev.c
@@ -3,6 +3,7 @@
*/
#include <stdlib.h>
+#include <sys/queue.h>
#include <rte_eal.h>
#include <rte_tailq.h>
diff --git a/lib/gpudev/gpudev_driver.h b/lib/gpudev/gpudev_driver.h
index 0b1e7f2172..0b70fa987f 100644
--- a/lib/gpudev/gpudev_driver.h
+++ b/lib/gpudev/gpudev_driver.h
@@ -12,11 +12,11 @@
#define RTE_GPUDEV_DRIVER_H
#include <stdint.h>
-#include <sys/queue.h>
#include <dev_driver.h>
#include <rte_compat.h>
+#include <rte_os.h>
#include "rte_gpudev.h"
#ifdef __cplusplus
@@ -80,7 +80,7 @@ struct rte_gpu {
/* Driver functions. */
struct rte_gpu_ops ops;
/* Event callback list. */
- TAILQ_HEAD(rte_gpu_callback_list, rte_gpu_callback) callbacks;
+ RTE_TAILQ_HEAD(rte_gpu_callback_list, rte_gpu_callback) callbacks;
/* Current state (used or not) in the running process. */
enum rte_gpu_state process_state; /* Updated by this library. */
/* Driver-specific private data for the running process. */
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.764021567 +0200
+++ 0049-gpudev-fix-driver-header-for-Windows.patch 2025-12-21 16:54:17.094072000 +0200
@@ -1 +1 @@
-From bda83ec0bb0c1bfba33843059a244181b46b9907 Mon Sep 17 00:00:00 2001
+From 6e0c826aec491bfc3db38fb53988ba0b01c880f3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bda83ec0bb0c1bfba33843059a244181b46b9907 ]
+
@@ -19 +21 @@
-index 0473d9ffb3..4a2335834c 100644
+index 6845d18b4d..0e2d6f29d4 100644
@@ -28 +29,0 @@
- #include <eal_export.h>
@@ -29,0 +31 @@
+ #include <rte_tailq.h>
@@ -31 +33 @@
-index 37b6ae3149..b7621f6e5a 100644
+index 0b1e7f2172..0b70fa987f 100644
@@ -47 +49 @@
-@@ -80,7 +80,7 @@ struct __rte_cache_aligned rte_gpu {
+@@ -80,7 +80,7 @@ struct rte_gpu {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'drivers: fix some exported headers' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (47 preceding siblings ...)
2025-12-21 14:56 ` patch 'gpudev: fix driver header for Windows' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'test/debug: fix crash with mlx5 devices' " Shani Peretz
` (42 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/cca2d5b1cd36ef322da523ea51eed0bda8581b7a
Thanks.
Shani
---
From cca2d5b1cd36ef322da523ea51eed0bda8581b7a Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 20 Nov 2024 11:45:09 +0100
Subject: [PATCH] drivers: fix some exported headers
[ upstream commit cae7430fcc712623ebbf52b0e8f232788a5e4679 ]
Those headers could not be included individually as they were not
including their dependencies, were subject to some build warnings,
or were not compiling on Windows.
Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Fixes: 5b2a1a02dcaf ("crypto/cnxk: fix experimental version for PMD API")
Fixes: e5abbeeeefa5 ("crypto/cnxk: add PMD API for getting CPTR")
Fixes: 3ca607402c4d ("crypto/cnxk: add PMD API to flush CTX")
Fixes: 8c3495f5d2dd ("net/dpaa: support loopback API")
Fixes: 12b435bf8f2f ("net/iavf: support flex desc metadata extraction")
Fixes: 23f627e0ed28 ("net/mlx5: add flow sync API")
Fixes: f5177bdc8b76 ("net/mlx5: add GENEVE TLV options parser API")
Fixes: 53c71586c789 ("raw/dpaa2_cmdif: support enqueue/dequeue operations")
Fixes: c39d1e082a4b ("raw/ntb: setup queues")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/bus/vmbus/rte_vmbus_reg.h | 6 ++++++
drivers/net/dpaa/rte_pmd_dpaa.h | 2 ++
drivers/net/iavf/rte_pmd_iavf.h | 6 ++++++
drivers/net/mlx5/rte_pmd_mlx5.h | 3 +++
drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h | 2 ++
drivers/raw/ntb/rte_pmd_ntb.h | 2 ++
6 files changed, 21 insertions(+)
diff --git a/drivers/bus/vmbus/rte_vmbus_reg.h b/drivers/bus/vmbus/rte_vmbus_reg.h
index 6257774f29..57afec2038 100644
--- a/drivers/bus/vmbus/rte_vmbus_reg.h
+++ b/drivers/bus/vmbus/rte_vmbus_reg.h
@@ -6,6 +6,12 @@
#ifndef _VMBUS_REG_H_
#define _VMBUS_REG_H_
+#include <stdint.h>
+
+#include <rte_common.h>
+#include <rte_stdatomic.h>
+#include <rte_uuid.h>
+
/*
* Hyper-V SynIC message format.
*/
diff --git a/drivers/net/dpaa/rte_pmd_dpaa.h b/drivers/net/dpaa/rte_pmd_dpaa.h
index ec45633ba2..0a57e2097a 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa.h
+++ b/drivers/net/dpaa/rte_pmd_dpaa.h
@@ -5,6 +5,8 @@
#ifndef _PMD_DPAA_H_
#define _PMD_DPAA_H_
+#include <stdint.h>
+
/**
* @file rte_pmd_dpaa.h
*
diff --git a/drivers/net/iavf/rte_pmd_iavf.h b/drivers/net/iavf/rte_pmd_iavf.h
index 56d453fc4c..04b86a5dd7 100644
--- a/drivers/net/iavf/rte_pmd_iavf.h
+++ b/drivers/net/iavf/rte_pmd_iavf.h
@@ -15,6 +15,7 @@
*/
#include <stdio.h>
+
#include <rte_compat.h>
#include <rte_mbuf.h>
#include <rte_mbuf_dyn.h>
@@ -184,6 +185,7 @@ __rte_experimental
static inline void
rte_pmd_ifd_dump_proto_xtr_metadata(struct rte_mbuf *m)
{
+#ifdef ALLOW_EXPERIMENTAL_API
union rte_pmd_ifd_proto_xtr_metadata data;
if (!rte_pmd_ifd_dynf_proto_xtr_metadata_avail())
@@ -243,6 +245,10 @@ rte_pmd_ifd_dump_proto_xtr_metadata(struct rte_mbuf *m)
else if (m->ol_flags & RTE_IAVF_PKT_RX_DYNF_PROTO_XTR_IP_OFFSET)
printf(" - Flexible descriptor's Extraction: ip_offset=%u",
data.ip_ofs);
+#else
+ RTE_SET_USED(m);
+ RTE_VERIFY(false);
+#endif
}
#ifdef __cplusplus
diff --git a/drivers/net/mlx5/rte_pmd_mlx5.h b/drivers/net/mlx5/rte_pmd_mlx5.h
index 654dd3cff3..cc9340f71e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5.h
+++ b/drivers/net/mlx5/rte_pmd_mlx5.h
@@ -5,6 +5,9 @@
#ifndef RTE_PMD_PRIVATE_MLX5_H_
#define RTE_PMD_PRIVATE_MLX5_H_
+#include <stdint.h>
+
+#include <rte_byteorder.h>
#include <rte_compat.h>
/**
diff --git a/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h b/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
index 483b66eaae..7731fc6363 100644
--- a/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
+++ b/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
@@ -12,6 +12,8 @@
*
*/
+#include <stdint.h>
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/drivers/raw/ntb/rte_pmd_ntb.h b/drivers/raw/ntb/rte_pmd_ntb.h
index 6591ce7931..76da3be026 100644
--- a/drivers/raw/ntb/rte_pmd_ntb.h
+++ b/drivers/raw/ntb/rte_pmd_ntb.h
@@ -5,6 +5,8 @@
#ifndef _RTE_PMD_NTB_H_
#define _RTE_PMD_NTB_H_
+#include <stdint.h>
+
/* App needs to set/get these attrs */
#define NTB_QUEUE_SZ_NAME "queue_size"
#define NTB_QUEUE_NUM_NAME "queue_num"
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.806434365 +0200
+++ 0050-drivers-fix-some-exported-headers.patch 2025-12-21 16:54:17.106058000 +0200
@@ -1 +1 @@
-From cae7430fcc712623ebbf52b0e8f232788a5e4679 Mon Sep 17 00:00:00 2001
+From cca2d5b1cd36ef322da523ea51eed0bda8581b7a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cae7430fcc712623ebbf52b0e8f232788a5e4679 ]
+
@@ -25 +26,0 @@
- drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h | 2 ++
@@ -27 +28 @@
- drivers/net/intel/iavf/rte_pmd_iavf.h | 6 ++++++
+ drivers/net/iavf/rte_pmd_iavf.h | 6 ++++++
@@ -31 +32 @@
- 7 files changed, 23 insertions(+)
+ 6 files changed, 21 insertions(+)
@@ -34 +35 @@
-index fb7e3043ec..6370a07f95 100644
+index 6257774f29..57afec2038 100644
@@ -50,15 +50,0 @@
-diff --git a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-index 46861ab2cf..70c019e94c 100644
---- a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-+++ b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-@@ -11,8 +11,10 @@
- #ifndef _PMD_CNXK_CRYPTO_H_
- #define _PMD_CNXK_CRYPTO_H_
-
-+#include <stdbool.h>
- #include <stdint.h>
-
-+#include <rte_compat.h>
- #include <rte_crypto.h>
- #include <rte_security.h>
-
@@ -78 +64 @@
-diff --git a/drivers/net/intel/iavf/rte_pmd_iavf.h b/drivers/net/intel/iavf/rte_pmd_iavf.h
+diff --git a/drivers/net/iavf/rte_pmd_iavf.h b/drivers/net/iavf/rte_pmd_iavf.h
@@ -80,2 +66,2 @@
---- a/drivers/net/intel/iavf/rte_pmd_iavf.h
-+++ b/drivers/net/intel/iavf/rte_pmd_iavf.h
+--- a/drivers/net/iavf/rte_pmd_iavf.h
++++ b/drivers/net/iavf/rte_pmd_iavf.h
@@ -110 +96 @@
-index fdd2f65888..f2c6aebe0b 100644
+index 654dd3cff3..cc9340f71e 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test/debug: fix crash with mlx5 devices' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (48 preceding siblings ...)
2025-12-21 14:56 ` patch 'drivers: fix some exported headers' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'bus/pci: fix build with MinGW 13' " Shani Peretz
` (41 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/58ff3711baf9be7037876eb5851043a44fdc3003
Thanks.
Shani
---
From 58ff3711baf9be7037876eb5851043a44fdc3003 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Thu, 2 Oct 2025 17:36:50 +0200
Subject: [PATCH] test/debug: fix crash with mlx5 devices
[ upstream commit 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 ]
Running rte_exit() in a forked process means that shared memory will be
released by the child process before the parent process does the same.
This issue has been seen recently when some GHA virtual machine (with
some mlx5 devices) runs the debug_autotest unit test.
Instead, run rte_panic() and rte_exit() from a new DPDK process spawned
like for other recursive unit tests.
Bugzilla ID: 1796
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
app/test/process.h | 2 +-
app/test/test.c | 2 +
app/test/test.h | 2 +
app/test/test_debug.c | 92 ++++++++++++++++++++++++++++++-------------
4 files changed, 69 insertions(+), 29 deletions(-)
diff --git a/app/test/process.h b/app/test/process.h
index 9fb2bf481c..8e11d0b059 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -203,7 +203,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
* tests attempting to use this function on FreeBSD.
*/
#ifdef RTE_EXEC_ENV_LINUX
-static char *
+static inline char *
get_current_prefix(char *prefix, int size)
{
char path[PATH_MAX] = {0};
diff --git a/app/test/test.c b/app/test/test.c
index 7b882a59de..da31d05e21 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -82,6 +82,8 @@ do_recursive_call(void)
{ "test_memory_flags", no_action },
{ "test_file_prefix", no_action },
{ "test_no_huge_flag", no_action },
+ { "test_panic", test_panic },
+ { "test_exit", test_exit },
#ifdef RTE_LIB_TIMER
#ifndef RTE_EXEC_ENV_WINDOWS
{ "timer_secondary_spawn_wait", test_timer_secondary },
diff --git a/app/test/test.h b/app/test/test.h
index 15e23d297f..fd8cc10b53 100644
--- a/app/test/test.h
+++ b/app/test/test.h
@@ -174,7 +174,9 @@ extern const char *prgname;
int commands_init(void);
int command_valid(const char *cmd);
+int test_exit(void);
int test_mp_secondary(void);
+int test_panic(void);
int test_timer_secondary(void);
int test_set_rxtx_conf(cmdline_fixed_string_t mode);
diff --git a/app/test/test_debug.c b/app/test/test_debug.c
index 8ad6d40fcb..fe5dd5b02d 100644
--- a/app/test/test_debug.c
+++ b/app/test/test_debug.c
@@ -8,6 +8,18 @@
#include <stdint.h>
#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_panic(void)
+{
+ printf("debug not supported on Windows, skipping test\n");
+ return TEST_SKIPPED;
+}
+int
+test_exit(void)
+{
+ printf("debug not supported on Windows, skipping test\n");
+ return TEST_SKIPPED;
+}
static int
test_debug(void)
{
@@ -25,34 +37,31 @@ test_debug(void)
#include <rte_debug.h>
#include <rte_common.h>
#include <rte_eal.h>
-#include <rte_service_component.h>
+#include <rte_lcore.h>
+
+#include "process.h"
/*
* Debug test
* ==========
*/
-/* use fork() to test rte_panic() */
-static int
+static const char *test_args[7];
+
+int
test_panic(void)
{
- int pid;
int status;
- pid = fork();
-
- if (pid == 0) {
+ if (getenv(RECURSIVE_ENV_VAR) != NULL) {
struct rlimit rl;
/* No need to generate a coredump when panicking. */
rl.rlim_cur = rl.rlim_max = 0;
setrlimit(RLIMIT_CORE, &rl);
rte_panic("Test Debug\n");
- } else if (pid < 0) {
- printf("Fork Failed\n");
- return -1;
}
- wait(&status);
+ status = process_dup(test_args, RTE_DIM(test_args), "test_panic");
if(status == 0){
printf("Child process terminated normally!\n");
return -1;
@@ -62,27 +71,16 @@ test_panic(void)
return 0;
}
-/* use fork() to test rte_exit() */
static int
test_exit_val(int exit_val)
{
- int pid;
+ char buf[5];
int status;
- /* manually cleanup EAL memory, as the fork() below would otherwise
- * cause the same hugepages to be free()-ed multiple times.
- */
- rte_service_finalize();
-
- pid = fork();
-
- if (pid == 0)
- rte_exit(exit_val, __func__);
- else if (pid < 0){
- printf("Fork Failed\n");
- return -1;
- }
- wait(&status);
+ sprintf(buf, "%d", exit_val);
+ if (setenv("TEST_DEBUG_EXIT_VAL", buf, 1) == -1)
+ rte_panic("Failed to set exit value in env\n");
+ status = process_dup(test_args, RTE_DIM(test_args), "test_exit");
printf("Child process status: %d\n", status);
if(!WIFEXITED(status) || WEXITSTATUS(status) != (uint8_t)exit_val){
printf("Child process terminated with incorrect status (expected = %d)!\n",
@@ -92,11 +90,22 @@ test_exit_val(int exit_val)
return 0;
}
-static int
+int
test_exit(void)
{
int test_vals[] = { 0, 1, 2, 255, -1 };
unsigned i;
+
+ if (getenv(RECURSIVE_ENV_VAR) != NULL) {
+ int exit_val;
+
+ if (!getenv("TEST_DEBUG_EXIT_VAL"))
+ rte_panic("No exit value set in env\n");
+
+ exit_val = strtol(getenv("TEST_DEBUG_EXIT_VAL"), NULL, 0);
+ rte_exit(exit_val, __func__);
+ }
+
for (i = 0; i < RTE_DIM(test_vals); i++) {
if (test_exit_val(test_vals[i]) < 0)
return -1;
@@ -128,6 +137,33 @@ test_usage(void)
static int
test_debug(void)
{
+#ifdef RTE_EXEC_ENV_FREEBSD
+ /* BSD target doesn't support prefixes at this point, and we also need to
+ * run another primary process here.
+ */
+ const char * prefix = "--no-shconf";
+#else
+ const char * prefix = "--file-prefix=debug";
+#endif
+ char core[10];
+
+ sprintf(core, "%d", rte_get_main_lcore());
+
+ test_args[0] = prgname;
+ test_args[1] = prefix;
+ test_args[2] = "-l";
+ test_args[3] = core;
+
+ if (rte_eal_has_hugepages()) {
+ test_args[4] = "";
+ test_args[5] = "";
+ test_args[6] = "";
+ } else {
+ test_args[4] = "--no-huge";
+ test_args[5] = "-m";
+ test_args[6] = "2048";
+ }
+
rte_dump_stack();
if (test_panic() < 0)
return -1;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.869475164 +0200
+++ 0051-test-debug-fix-crash-with-mlx5-devices.patch 2025-12-21 16:54:17.112063000 +0200
@@ -1 +1 @@
-From 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 Mon Sep 17 00:00:00 2001
+From 58ff3711baf9be7037876eb5851043a44fdc3003 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -42 +43 @@
-index fd653cbbfd..8a4598baee 100644
+index 7b882a59de..da31d05e21 100644
@@ -45 +46 @@
-@@ -80,6 +80,8 @@ do_recursive_call(void)
+@@ -82,6 +82,8 @@ do_recursive_call(void)
@@ -55 +56 @@
-index ebc4864bf8..c6d7d23313 100644
+index 15e23d297f..fd8cc10b53 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'bus/pci: fix build with MinGW 13' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (49 preceding siblings ...)
2025-12-21 14:56 ` patch 'test/debug: fix crash with mlx5 devices' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: " Shani Peretz
` (40 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/767b2d290c61af7d921d756f7ee72d00259b4402
Thanks.
Shani
---
From 767b2d290c61af7d921d756f7ee72d00259b4402 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 25 Jul 2025 20:23:59 +0200
Subject: [PATCH] bus/pci: fix build with MinGW 13
[ upstream commit 73e0c90c48ea393b2725263b32515f668f8f4839 ]
After an upgrade to MinGW version 13, some compilation errors appear:
drivers/bus/pci/windows/pci.c:362:58:
error: 'GUID_DEVCLASS_NETUIO' undeclared
drivers/bus/pci/windows/pci_netuio.c:57:39:
error: 'GUID_DEVINTERFACE_NETUIO' undeclared
The cause is MinGW has set NTDDI_VERSION to the highest version
without defining the expected NetUIO constants.
The case MinGW64 is added to define NetUIO constants.
Some comments are improved to better track includes requirements.
Fixes: 6605c7f02e24 ("bus/pci: fix build with Windows SDK >= 10.0.20253")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/bus/pci/windows/pci.c | 11 ++++++-----
drivers/bus/pci/windows/pci_netuio.h | 6 +++---
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
index 45a12bcb52..8deac2b35d 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -11,18 +11,19 @@
#include <rte_memory.h>
#include <rte_bus_pci.h>
-#include "private.h"
-#include "pci_netuio.h"
-
+/* DEVPKEY_Device_Numa_Node should be defined in devpkey.h */
#include <devpkey.h>
-#include <regstr.h>
-
#if defined RTE_TOOLCHAIN_GCC && (__MINGW64_VERSION_MAJOR < 8)
#include <devpropdef.h>
DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 3);
#endif
+#include <regstr.h>
+
+#include "private.h"
+#include "pci_netuio.h"
+
/*
* This code is used to simulate a PCI probe by parsing information in
* the registry hive for PCI devices.
diff --git a/drivers/bus/pci/windows/pci_netuio.h b/drivers/bus/pci/windows/pci_netuio.h
index 2f6c97ea73..8ac914920f 100644
--- a/drivers/bus/pci/windows/pci_netuio.h
+++ b/drivers/bus/pci/windows/pci_netuio.h
@@ -5,12 +5,12 @@
#ifndef _PCI_NETUIO_H_
#define _PCI_NETUIO_H_
-#if !defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE
-/* GUID definition for device class netUIO */
+#if !defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE || defined(__MINGW64__)
+/* GUID_DEVCLASS_NETUIO should be defined in devguid.h */
DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
0xa3, 0x29, 0xf3, 0x22, 0xeb, 0xad, 0xbe, 0x0f);
-/* GUID definition for the netuio device interface */
+/* GUID_DEVINTERFACE_NETUIO should be defined in ndisguid.h */
DEFINE_GUID(GUID_DEVINTERFACE_NETUIO, 0x08336f60, 0x0679, 0x4c6c,
0x85, 0xd2, 0xae, 0x7c, 0xed, 0x65, 0xff, 0xf7);
#endif
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.914381988 +0200
+++ 0052-bus-pci-fix-build-with-MinGW-13.patch 2025-12-21 16:54:17.118046000 +0200
@@ -1 +1 @@
-From 73e0c90c48ea393b2725263b32515f668f8f4839 Mon Sep 17 00:00:00 2001
+From 767b2d290c61af7d921d756f7ee72d00259b4402 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 73e0c90c48ea393b2725263b32515f668f8f4839 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index e7e449306e..6f6f368cb7 100644
+index 45a12bcb52..8deac2b35d 100644
@@ -34 +35 @@
-@@ -12,18 +12,19 @@
+@@ -11,18 +11,19 @@
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix build with MinGW 13' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (50 preceding siblings ...)
2025-12-21 14:56 ` patch 'bus/pci: fix build with MinGW 13' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'dma/hisilicon: fix stop with pending transfers' " Shani Peretz
` (39 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Dariusz Sosnowski, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/ba10de1e46a771897e54afd1364af14137feecc3
Thanks.
Shani
---
From ba10de1e46a771897e54afd1364af14137feecc3 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 25 Jul 2025 21:28:09 +0200
Subject: [PATCH] net/mlx5: fix build with MinGW 13
[ upstream commit a333afabed3b659ea28a92470565bbd5a98b5b53 ]
After an upgrade to MinGW version 13, compilation breaks:
drivers/net/mlx5/windows/mlx5_ethdev_os.c:285:69: error:
'dev_link.<U1000>.<Uaf00>.link_autoneg' may be used uninitialized
This is because link_autoneg is never set in mlx5_link_update().
It can be set to the previous value (no change).
Also it does not make sense to check this value to return the update status
as it does not change.
Fixes: 6fbd73709ee4 ("net/mlx5: support link update on Windows")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 32a9f599b2..e24ff367af 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -311,11 +311,11 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
dev_link.link_duplex = 1;
if (dev->data->dev_link.link_speed != dev_link.link_speed ||
dev->data->dev_link.link_duplex != dev_link.link_duplex ||
- dev->data->dev_link.link_autoneg != dev_link.link_autoneg ||
dev->data->dev_link.link_status != dev_link.link_status)
ret = 1;
else
ret = 0;
+ dev_link.link_autoneg = dev->data->dev_link.link_autoneg;
dev->data->dev_link = dev_link;
return ret;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:19.960178007 +0200
+++ 0053-net-mlx5-fix-build-with-MinGW-13.patch 2025-12-21 16:54:17.124037000 +0200
@@ -1 +1 @@
-From a333afabed3b659ea28a92470565bbd5a98b5b53 Mon Sep 17 00:00:00 2001
+From ba10de1e46a771897e54afd1364af14137feecc3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a333afabed3b659ea28a92470565bbd5a98b5b53 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'dma/hisilicon: fix stop with pending transfers' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (51 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'test/dma: fix failure condition' " Shani Peretz
` (38 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/36e492501873d8e692c050692c499e58b040b0b6
Thanks.
Shani
---
From 36e492501873d8e692c050692c499e58b040b0b6 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Mon, 13 Oct 2025 17:22:11 +0800
Subject: [PATCH] dma/hisilicon: fix stop with pending transfers
[ upstream commit 8aa458f1c44b9f6e73f75047aca77191dc79746f ]
Stop dmadev may fail if there are pending DMA transfers, we need make
sure there are no pending DMA transfers when stop.
This commit uses following scheme:
1. flag stop proc so that new request will not process.
2. setting drop flag for all descriptor to quick complete.
3. waiting dmadev to complete.
Fixes: 3c5f5f03a047 ("dma/hisilicon: add control path")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
drivers/dma/hisilicon/hisi_dmadev.c | 45 ++++++++++++++++++++++++-----
drivers/dma/hisilicon/hisi_dmadev.h | 2 ++
2 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/drivers/dma/hisilicon/hisi_dmadev.c b/drivers/dma/hisilicon/hisi_dmadev.c
index 8bc076f5d5..cc171fa75c 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.c
+++ b/drivers/dma/hisilicon/hisi_dmadev.c
@@ -378,6 +378,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
hw->cq_head = 0;
hw->cqs_completed = 0;
hw->cqe_vld = 1;
+ hw->stop_proc = 0;
hw->submitted = 0;
hw->completed = 0;
hw->errors = 0;
@@ -389,12 +390,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
return 0;
}
-static int
-hisi_dma_stop(struct rte_dma_dev *dev)
-{
- return hisi_dma_reset_hw(dev->data->dev_private);
-}
-
static int
hisi_dma_close(struct rte_dma_dev *dev)
{
@@ -456,6 +451,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
return 0;
}
+static int
+hisi_dma_stop(struct rte_dma_dev *dev)
+{
+#define MAX_WAIT_MSEC 10
+ struct hisi_dma_dev *hw = dev->data->dev_private;
+ enum rte_dma_vchan_status status;
+ uint32_t i;
+
+ /* Flag stop processing new requests. */
+ hw->stop_proc = 1;
+ rte_delay_ms(1);
+
+ /* Force set drop flag so that the hardware can quickly complete. */
+ for (i = 0; i <= hw->sq_depth_mask; i++)
+ hw->sqe[i].dw0 |= SQE_DROP_FLAG;
+
+ i = 0;
+ do {
+ hisi_dma_vchan_status(dev, 0, &status);
+ if (status != RTE_DMA_VCHAN_ACTIVE)
+ break;
+ rte_delay_ms(1);
+ } while (i++ < MAX_WAIT_MSEC);
+ if (status == RTE_DMA_VCHAN_ACTIVE) {
+ HISI_DMA_ERR(hw, "dev is still active!");
+ return -EBUSY;
+ }
+
+ return hisi_dma_reset_hw(dev->data->dev_private);
+}
+
static void
hisi_dma_dump_range(struct hisi_dma_dev *hw, FILE *f, uint32_t start,
uint32_t end)
@@ -550,14 +576,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
" revision: 0x%x queue_id: %u ring_size: %u\n"
" ridx: %u cridx: %u\n"
" sq_head: %u sq_tail: %u cq_sq_head: %u\n"
- " cq_head: %u cqs_completed: %u cqe_vld: %u\n"
+ " cq_head: %u cqs_completed: %u cqe_vld: %u stop_proc: %u\n"
" submitted: %" PRIu64 " completed: %" PRIu64 " errors: %"
PRIu64 " qfulls: %" PRIu64 "\n",
hw->revision, hw->queue_id,
hw->sq_depth_mask > 0 ? hw->sq_depth_mask + 1 : 0,
hw->ridx, hw->cridx,
hw->sq_head, hw->sq_tail, hw->cq_sq_head,
- hw->cq_head, hw->cqs_completed, hw->cqe_vld,
+ hw->cq_head, hw->cqs_completed, hw->cqe_vld, hw->stop_proc,
hw->submitted, hw->completed, hw->errors, hw->qfulls);
hisi_dma_dump_queue(hw, f);
hisi_dma_dump_common(hw, f);
@@ -575,6 +601,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
RTE_SET_USED(vchan);
+ if (unlikely(hw->stop_proc > 0))
+ return -EPERM;
+
if (((hw->sq_tail + 1) & hw->sq_depth_mask) == hw->sq_head) {
hw->qfulls++;
return -ENOSPC;
diff --git a/drivers/dma/hisilicon/hisi_dmadev.h b/drivers/dma/hisilicon/hisi_dmadev.h
index a57b5c759a..b9dd172c31 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.h
+++ b/drivers/dma/hisilicon/hisi_dmadev.h
@@ -141,6 +141,7 @@ enum {
struct hisi_dma_sqe {
uint32_t dw0;
+#define SQE_DROP_FLAG BIT(4)
#define SQE_FENCE_FLAG BIT(10)
#define SQE_OPCODE_M2M 0x4
uint32_t dw1;
@@ -211,6 +212,7 @@ struct hisi_dma_dev {
*/
uint16_t cqs_completed;
uint8_t cqe_vld; /**< valid bit for CQE, will change for every round. */
+ volatile uint8_t stop_proc; /**< whether stop processing new requests. */
uint64_t submitted;
uint64_t completed;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.000907476 +0200
+++ 0054-dma-hisilicon-fix-stop-with-pending-transfers.patch 2025-12-21 16:54:17.129037000 +0200
@@ -1 +1 @@
-From 8aa458f1c44b9f6e73f75047aca77191dc79746f Mon Sep 17 00:00:00 2001
+From 36e492501873d8e692c050692c499e58b040b0b6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8aa458f1c44b9f6e73f75047aca77191dc79746f ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 019c4a8189..7575fb12d9 100644
+index 8bc076f5d5..cc171fa75c 100644
@@ -27 +28 @@
-@@ -376,6 +376,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
+@@ -378,6 +378,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
@@ -35 +36 @@
-@@ -387,12 +388,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
+@@ -389,12 +390,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
@@ -48 +49 @@
-@@ -454,6 +449,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
+@@ -456,6 +451,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
@@ -86 +87 @@
-@@ -548,14 +574,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
+@@ -550,14 +576,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
@@ -103 +104 @@
-@@ -573,6 +599,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
+@@ -575,6 +601,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
@@ -114 +115 @@
-index 90301e6b00..aab87c40be 100644
+index a57b5c759a..b9dd172c31 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test/dma: fix failure condition' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (52 preceding siblings ...)
2025-12-21 14:56 ` patch 'dma/hisilicon: fix stop with pending transfers' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'eal/x86: enable timeout in AMD power monitor' " Shani Peretz
` (37 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/ed2ea5b4c7c4b483129efc669f635969dc741dc5
Thanks.
Shani
---
From ed2ea5b4c7c4b483129efc669f635969dc741dc5 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Wed, 27 Aug 2025 09:28:28 +0800
Subject: [PATCH] test/dma: fix failure condition
[ upstream commit fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e ]
In the runtest() function, it will return error if the test return
value is less than 0.
But the 'copy' and 'error_handling' testcase may return 1 if failed
because its internal use or(||) operation.
This commit fix it by treating non-zero as error in runtest() function.
Fixes: 1b86a66a30c2 ("test/dma: add more comprehensive copy tests")
Fixes: 99d7ec4be237 ("test/dma: add failure handling tests")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_dmadev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c
index 7581fc2b4c..e47bb57058 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -72,7 +72,7 @@ runtest(const char *printable, int (*test_fn)(int16_t dev_id, uint16_t vchan), i
printf("DMA Dev %d: Running %s Tests %s\n", dev_id, printable,
check_err_stats ? " " : "(errors expected)");
for (i = 0; i < iterations; i++) {
- if (test_fn(dev_id, vchan) < 0)
+ if (test_fn(dev_id, vchan) != 0)
return -1;
rte_dma_stats_get(dev_id, 0, &stats);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.051946412 +0200
+++ 0055-test-dma-fix-failure-condition.patch 2025-12-21 16:54:17.134050000 +0200
@@ -1 +1 @@
-From fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e Mon Sep 17 00:00:00 2001
+From ed2ea5b4c7c4b483129efc669f635969dc741dc5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index e9a62a0ddf..950bb28ec9 100644
+index 7581fc2b4c..e47bb57058 100644
@@ -27 +28 @@
-@@ -92,7 +92,7 @@ runtest(const void *args)
+@@ -72,7 +72,7 @@ runtest(const char *printable, int (*test_fn)(int16_t dev_id, uint16_t vchan), i
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eal/x86: enable timeout in AMD power monitor' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (53 preceding siblings ...)
2025-12-21 14:56 ` patch 'test/dma: fix failure condition' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'fib6: fix tbl8 allocation check logic' " Shani Peretz
` (36 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Sivaprasad Tummala; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/2dff74fa35102ddd7443e119e73aa5dc22d822af
Thanks.
Shani
---
From 2dff74fa35102ddd7443e119e73aa5dc22d822af Mon Sep 17 00:00:00 2001
From: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Date: Mon, 13 Oct 2025 05:51:57 +0000
Subject: [PATCH] eal/x86: enable timeout in AMD power monitor
[ upstream commit 1213a8895be3bf883f10b3ba60ee84099b5ff75a ]
Previously, the AMD power monitor implementation did not enable the
timeout, causing the lcore to remain in a wait state until an external
monitoring event occurred or an interrupt was received.
This patch enables the timeout-based exit condition, allowing
the lcore to automatically wake up after the specified period.
The maximum supported timeout value is 2^32 - 1.
Fixes: c7ed1ce04704 ("eal/x86: add power intrinsics for AMD")
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/x86/rte_power_intrinsics.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/eal/x86/rte_power_intrinsics.c b/lib/eal/x86/rte_power_intrinsics.c
index 532a2e646b..96643fe7f0 100644
--- a/lib/eal/x86/rte_power_intrinsics.c
+++ b/lib/eal/x86/rte_power_intrinsics.c
@@ -74,14 +74,14 @@ static void amd_monitorx(volatile void *addr)
static void amd_mwaitx(const uint64_t timeout)
{
- RTE_SET_USED(timeout);
#if defined(RTE_TOOLCHAIN_MSVC) || defined(__MWAITX__)
- _mm_mwaitx(0, 0, 0);
+ _mm_mwaitx(2, 0, (uint32_t)timeout);
#else
asm volatile(".byte 0x0f, 0x01, 0xfb;"
: /* ignore rflags */
: "a"(0), /* enter C1 */
- "c"(0)); /* no time-out */
+ "b"((uint32_t)timeout),
+ "c"(2)); /* enable time-out */
#endif
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.093089328 +0200
+++ 0056-eal-x86-enable-timeout-in-AMD-power-monitor.patch 2025-12-21 16:54:17.139071000 +0200
@@ -1 +1 @@
-From 1213a8895be3bf883f10b3ba60ee84099b5ff75a Mon Sep 17 00:00:00 2001
+From 2dff74fa35102ddd7443e119e73aa5dc22d822af Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1213a8895be3bf883f10b3ba60ee84099b5ff75a ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 489ad3983f..8a5f222aea 100644
+index 532a2e646b..96643fe7f0 100644
@@ -27 +28 @@
-@@ -89,14 +89,14 @@ static void amd_monitorx(volatile void *addr)
+@@ -74,14 +74,14 @@ static void amd_monitorx(volatile void *addr)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'fib6: fix tbl8 allocation check logic' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (54 preceding siblings ...)
2025-12-21 14:56 ` patch 'eal/x86: enable timeout in AMD power monitor' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Shani Peretz
` (35 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Vladimir Medvedkin; +Cc: Robin Jarry, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/3f827108b099e3b4c76a1d15b96eb37ad484ae3f
Thanks.
Shani
---
From 3f827108b099e3b4c76a1d15b96eb37ad484ae3f Mon Sep 17 00:00:00 2001
From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Date: Tue, 14 Oct 2025 18:17:55 +0000
Subject: [PATCH] fib6: fix tbl8 allocation check logic
[ upstream commit f0db0f659a1f4192a4aca7ce2a298f272aa3af8f ]
Currently if there were 'n' preallocated tbl8 entries only 'n - 1' were
able to be used. Fix the logic allowing to use all preallocated tbl8
entries.
Fixes: c3e12e0f0354 ("fib: add dataplane algorithm for IPv6")
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Tested-by: Robin Jarry <rjarry@redhat.com>
---
lib/fib/trie.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/fib/trie.c b/lib/fib/trie.c
index ca1c2fe3bc..8937ab46dc 100644
--- a/lib/fib/trie.c
+++ b/lib/fib/trie.c
@@ -570,8 +570,7 @@ trie_modify(struct rte_fib6 *fib, const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE],
return 0;
}
- if ((depth > 24) && (dp->rsvd_tbl8s >=
- dp->number_tbl8s - depth_diff))
+ if ((depth > 24) && (dp->rsvd_tbl8s + depth_diff > dp->number_tbl8s))
return -ENOSPC;
node = rte_rib6_insert(rib, ip_masked, depth);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.133668149 +0200
+++ 0057-fib6-fix-tbl8-allocation-check-logic.patch 2025-12-21 16:54:17.143037000 +0200
@@ -1 +1 @@
-From f0db0f659a1f4192a4aca7ce2a298f272aa3af8f Mon Sep 17 00:00:00 2001
+From 3f827108b099e3b4c76a1d15b96eb37ad484ae3f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f0db0f659a1f4192a4aca7ce2a298f272aa3af8f ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 5a9978b4ca..6427920c58 100644
+index ca1c2fe3bc..8937ab46dc 100644
@@ -23 +24 @@
-@@ -576,8 +576,7 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
+@@ -570,8 +570,7 @@ trie_modify(struct rte_fib6 *fib, const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE],
@@ -32 +33 @@
- node = rte_rib6_insert(rib, &ip_masked, depth);
+ node = rte_rib6_insert(rib, ip_masked, depth);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'vhost: add VDUSE virtqueue ready state polling workaround' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (55 preceding siblings ...)
2025-12-21 14:56 ` patch 'fib6: fix tbl8 allocation check logic' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Shani Peretz
` (34 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/0deaa8dd208d0afda5941aefe1cd76ab7f8ef0fc
Thanks.
Shani
---
From 0deaa8dd208d0afda5941aefe1cd76ab7f8ef0fc Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Tue, 16 Sep 2025 11:35:49 +0200
Subject: [PATCH] vhost: add VDUSE virtqueue ready state polling workaround
[ upstream commit 84350b1f470558836b61ff1347f660e06c81cbf5 ]
Add workaround to poll virtqueue ready states before starting device
when VIRTIO_DEVICE_STATUS_DRIVER_OK is set in vduse_events_handler().
For each virtqueue, poll using VDUSE_VQ_GET_INFO ioctl to check
vq_info->ready state with configurable retry limit. This addresses
timing issues where device start was attempted before all virtqueues
were properly initialized and ready.
A notification mechanism will be introduced in the next version of
the VDUSE uAPI. When it lands, we would only apply this workaround
when the kernel does not support it.
Fixes: a9120db8b98b ("vhost: add VDUSE device startup")
Reviewed-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/vduse.c | 61 +++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 59 insertions(+), 2 deletions(-)
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 3b1a3b008e..d0bd2a537d 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -279,6 +279,55 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
vq->last_avail_idx = 0;
}
+/*
+ * Tests show that virtqueues get ready at the first retry at worst,
+ * but let's be on the safe side and allow more retries.
+ */
+#define VDUSE_VQ_READY_POLL_MAX_RETRIES 100
+
+static int
+vduse_wait_for_virtqueues_ready(struct virtio_net *dev)
+{
+ unsigned int i;
+ int ret;
+
+ for (i = 0; i < dev->nr_vring; i++) {
+ int retry_count = 0;
+
+ while (retry_count < VDUSE_VQ_READY_POLL_MAX_RETRIES) {
+ struct vduse_vq_info vq_info = { 0 };
+
+ vq_info.index = i;
+ ret = ioctl(dev->vduse_dev_fd, VDUSE_VQ_GET_INFO, &vq_info);
+ if (ret) {
+ VHOST_LOG_CONFIG(dev->ifname, ERR,
+ "Failed to get VQ %u info while polling ready state: %s",
+ i, strerror(errno));
+ return -1;
+ }
+
+ if (vq_info.ready) {
+ VHOST_LOG_CONFIG(dev->ifname, DEBUG,
+ "VQ %u is ready after %u retries", i, retry_count);
+ break;
+ }
+
+ retry_count++;
+ usleep(1000);
+ }
+
+ if (retry_count >= VDUSE_VQ_READY_POLL_MAX_RETRIES) {
+ VHOST_LOG_CONFIG(dev->ifname, ERR,
+ "VQ %u ready state polling timeout after %u retries",
+ i, VDUSE_VQ_READY_POLL_MAX_RETRIES);
+ return -1;
+ }
+ }
+
+ VHOST_LOG_CONFIG(dev->ifname, INFO, "All virtqueues are ready after polling");
+ return 0;
+}
+
static void
vduse_device_start(struct virtio_net *dev)
{
@@ -411,10 +460,18 @@ vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
}
if ((old_status ^ dev->status) & VIRTIO_DEVICE_STATUS_DRIVER_OK) {
- if (dev->status & VIRTIO_DEVICE_STATUS_DRIVER_OK)
+ if (dev->status & VIRTIO_DEVICE_STATUS_DRIVER_OK) {
+ /* Poll virtqueues ready states before starting device */
+ ret = vduse_wait_for_virtqueues_ready(dev);
+ if (ret < 0) {
+ VHOST_LOG_CONFIG(dev->ifname, ERR,
+ "Failed to wait for virtqueues ready, aborting device start");
+ return;
+ }
vduse_device_start(dev);
- else
+ } else {
vduse_device_stop(dev);
+ }
}
VHOST_LOG_CONFIG(dev->ifname, INFO, "Request %s (%u) handled successfully\n",
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.174396818 +0200
+++ 0058-vhost-add-VDUSE-virtqueue-ready-state-polling-workar.patch 2025-12-21 16:54:17.148081000 +0200
@@ -1 +1 @@
-From 84350b1f470558836b61ff1347f660e06c81cbf5 Mon Sep 17 00:00:00 2001
+From 0deaa8dd208d0afda5941aefe1cd76ab7f8ef0fc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 84350b1f470558836b61ff1347f660e06c81cbf5 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 2015ae9f21..70fe472624 100644
+index 3b1a3b008e..d0bd2a537d 100644
@@ -31 +32 @@
-@@ -272,6 +272,55 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
+@@ -279,6 +279,55 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
@@ -56 +57 @@
-+ VHOST_CONFIG_LOG(dev->ifname, ERR,
++ VHOST_LOG_CONFIG(dev->ifname, ERR,
@@ -63 +64 @@
-+ VHOST_CONFIG_LOG(dev->ifname, DEBUG,
++ VHOST_LOG_CONFIG(dev->ifname, DEBUG,
@@ -73 +74 @@
-+ VHOST_CONFIG_LOG(dev->ifname, ERR,
++ VHOST_LOG_CONFIG(dev->ifname, ERR,
@@ -80 +81 @@
-+ VHOST_CONFIG_LOG(dev->ifname, INFO, "All virtqueues are ready after polling");
++ VHOST_LOG_CONFIG(dev->ifname, INFO, "All virtqueues are ready after polling");
@@ -85 +86 @@
- vduse_device_start(struct virtio_net *dev, bool reconnect)
+ vduse_device_start(struct virtio_net *dev)
@@ -87 +88 @@
-@@ -414,10 +463,18 @@ vduse_events_handler(int fd, void *arg, int *close __rte_unused)
+@@ -411,10 +460,18 @@ vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
@@ -96 +97 @@
-+ VHOST_CONFIG_LOG(dev->ifname, ERR,
++ VHOST_LOG_CONFIG(dev->ifname, ERR,
@@ -100 +101 @@
- vduse_device_start(dev, false);
+ vduse_device_start(dev);
@@ -107 +108 @@
- VHOST_CONFIG_LOG(dev->ifname, INFO, "Request %s (%u) handled successfully",
+ VHOST_LOG_CONFIG(dev->ifname, INFO, "Request %s (%u) handled successfully\n",
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'vhost: fix virtqueue info init in VDUSE vring setup' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (56 preceding siblings ...)
2025-12-21 14:56 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'vhost: fix double fetch when dequeue offloading' " Shani Peretz
` (33 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/dec8bca88f0c0fac62a16adbe83c6a8f8d00d3be
Thanks.
Shani
---
From dec8bca88f0c0fac62a16adbe83c6a8f8d00d3be Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Tue, 16 Sep 2025 11:35:50 +0200
Subject: [PATCH] vhost: fix virtqueue info init in VDUSE vring setup
[ upstream commit db91578981c6869d4ee476347141c0fccd1d6146 ]
Initialize vduse_vq_info structure to zero to avoid using
uninitialized memory when setting up VDUSE virtual rings.
This ensures all fields start with known values.
Fixes: a9120db8b98b ("vhost: add VDUSE device startup")
Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
lib/vhost/vduse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index d0bd2a537d..9f163de0cc 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -150,7 +150,7 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index)
{
struct vhost_virtqueue *vq = dev->virtqueue[index];
struct vhost_vring_addr *ra = &vq->ring_addrs;
- struct vduse_vq_info vq_info;
+ struct vduse_vq_info vq_info = { 0 };
struct vduse_vq_eventfd vq_efd;
int ret;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.218454800 +0200
+++ 0059-vhost-fix-virtqueue-info-init-in-VDUSE-vring-setup.patch 2025-12-21 16:54:17.154045000 +0200
@@ -1 +1 @@
-From db91578981c6869d4ee476347141c0fccd1d6146 Mon Sep 17 00:00:00 2001
+From dec8bca88f0c0fac62a16adbe83c6a8f8d00d3be Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit db91578981c6869d4ee476347141c0fccd1d6146 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 70fe472624..68e56843fd 100644
+index d0bd2a537d..9f163de0cc 100644
@@ -24 +25 @@
-@@ -141,7 +141,7 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index, bool reconnect)
+@@ -150,7 +150,7 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'vhost: fix double fetch when dequeue offloading' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (57 preceding siblings ...)
2025-12-21 14:56 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix integer overflow on NVM init' " Shani Peretz
` (32 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Yunjian Wang; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/045c3af0cb1282598864ed7b3f65d33343fb7e91
Thanks.
Shani
---
From 045c3af0cb1282598864ed7b3f65d33343fb7e91 Mon Sep 17 00:00:00 2001
From: Yunjian Wang <wangyunjian@huawei.com>
Date: Fri, 10 Oct 2025 16:41:36 +0800
Subject: [PATCH] vhost: fix double fetch when dequeue offloading
[ upstream commit 285e6b8b187485cc69a175261e40d8d2727e20a3 ]
The hdr->csum_start does two successive reads from user space to read a
variable length data structure. The result overflow if the data structure
changes between the two reads.
To fix this, we can prevent double fetch issue by copying virtio_hdr to
the temporary variable.
Fixes: 4dc4e33ffa10 ("net/virtio: fix Rx checksum calculation")
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/virtio_net.c | 50 ++++++++++++++++++++++--------------------
1 file changed, 26 insertions(+), 24 deletions(-)
diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c
index da14271c6d..d41b99812b 100644
--- a/lib/vhost/virtio_net.c
+++ b/lib/vhost/virtio_net.c
@@ -2872,25 +2872,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
}
}
-static __rte_noinline void
+static __rte_always_inline int
copy_vnet_hdr_from_desc(struct virtio_net_hdr *hdr,
- struct buf_vector *buf_vec)
+ const struct buf_vector *buf_vec,
+ uint16_t nr_vec)
{
- uint64_t len;
- uint64_t remain = sizeof(struct virtio_net_hdr);
- uint64_t src;
- uint64_t dst = (uint64_t)(uintptr_t)hdr;
+ size_t remain = sizeof(struct virtio_net_hdr);
+ uint8_t *dst = (uint8_t *)hdr;
- while (remain) {
- len = RTE_MIN(remain, buf_vec->buf_len);
- src = buf_vec->buf_addr;
- rte_memcpy((void *)(uintptr_t)dst,
- (void *)(uintptr_t)src, len);
+ while (remain > 0) {
+ size_t len = RTE_MIN(remain, buf_vec->buf_len);
+ const void *src = (const void *)(uintptr_t)buf_vec->buf_addr;
+ if (unlikely(nr_vec == 0))
+ return -1;
+
+ memcpy(dst, src, len);
remain -= len;
dst += len;
buf_vec++;
+ --nr_vec;
}
+ return 0;
}
static __rte_always_inline int
@@ -2919,16 +2922,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
*/
if (virtio_net_with_host_offload(dev)) {
- if (unlikely(buf_vec[0].buf_len < sizeof(struct virtio_net_hdr))) {
- /*
- * No luck, the virtio-net header doesn't fit
- * in a contiguous virtual area.
- */
- copy_vnet_hdr_from_desc(&tmp_hdr, buf_vec);
- hdr = &tmp_hdr;
- } else {
- hdr = (struct virtio_net_hdr *)((uintptr_t)buf_vec[0].buf_addr);
- }
+ if (unlikely(copy_vnet_hdr_from_desc(&tmp_hdr, buf_vec, nr_vec) != 0))
+ return -1;
+
+ /* ensure that compiler does not delay copy */
+ rte_compiler_barrier();
+ hdr = &tmp_hdr;
}
for (vec_idx = 0; vec_idx < nr_vec; vec_idx++) {
@@ -3370,7 +3369,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
{
uint16_t avail_idx = vq->last_avail_idx;
uint32_t buf_offset = sizeof(struct virtio_net_hdr_mrg_rxbuf);
- struct virtio_net_hdr *hdr;
uintptr_t desc_addrs[PACKED_BATCH_SIZE];
uint16_t ids[PACKED_BATCH_SIZE];
uint16_t i;
@@ -3389,8 +3387,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
if (virtio_net_with_host_offload(dev)) {
vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) {
- hdr = (struct virtio_net_hdr *)(desc_addrs[i]);
- vhost_dequeue_offload(dev, hdr, pkts[i], legacy_ol_flags);
+ struct virtio_net_hdr hdr;
+
+ memcpy(&hdr, (void *)desc_addrs[i], sizeof(struct virtio_net_hdr));
+ rte_compiler_barrier();
+
+ vhost_dequeue_offload(dev, &hdr, pkts[i], legacy_ol_flags);
}
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.259525614 +0200
+++ 0060-vhost-fix-double-fetch-when-dequeue-offloading.patch 2025-12-21 16:54:17.160114000 +0200
@@ -1 +1 @@
-From 285e6b8b187485cc69a175261e40d8d2727e20a3 Mon Sep 17 00:00:00 2001
+From 045c3af0cb1282598864ed7b3f65d33343fb7e91 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 285e6b8b187485cc69a175261e40d8d2727e20a3 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 77545d0a4d..0658b81de5 100644
+index da14271c6d..d41b99812b 100644
@@ -26 +27 @@
-@@ -2870,25 +2870,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
+@@ -2872,25 +2872,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
@@ -66 +67 @@
-@@ -2917,16 +2920,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -2919,16 +2922,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
@@ -89 +90 @@
-@@ -3372,7 +3371,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3370,7 +3369,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
@@ -97 +98 @@
-@@ -3391,8 +3389,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3389,8 +3387,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice/base: fix integer overflow on NVM init' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (58 preceding siblings ...)
2025-12-21 14:56 ` patch 'vhost: fix double fetch when dequeue offloading' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix display of commands in cpfl guide' " Shani Peretz
` (31 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Chinh Cao; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/cfe6e6752ef806b8266d56d44157737a1f69e649
Thanks.
Shani
---
From cfe6e6752ef806b8266d56d44157737a1f69e649 Mon Sep 17 00:00:00 2001
From: Chinh Cao <chinh.t.cao@intel.com>
Date: Wed, 1 Oct 2025 13:29:04 +0100
Subject: [PATCH] net/ice/base: fix integer overflow on NVM init
[ upstream commit 96b1a23f3ea5614e5795307295234c15e0e99a1e ]
The shadow RAM size is defined as 16-bit unsigned, which may result in
overflows under certain scenarios. Fix the value to be 32-bit.
Fixes: a240ff50505b ("net/ice/base: add basic structures")
Signed-off-by: Chinh Cao <chinh.t.cao@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_type.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
index 9d442e7e98..ba42e755e4 100644
--- a/drivers/net/ice/base/ice_type.h
+++ b/drivers/net/ice/base/ice_type.h
@@ -843,7 +843,7 @@ struct ice_flash_info {
struct ice_orom_info orom; /* Option ROM version info */
struct ice_nvm_info nvm; /* NVM version information */
struct ice_bank_info banks; /* Flash Bank information */
- u16 sr_words; /* Shadow RAM size in words */
+ u32 sr_words; /* Shadow RAM size in words */
u32 flash_size; /* Size of available flash in bytes */
u8 blank_nvm_mode; /* is NVM empty (no FW present) */
};
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.303737954 +0200
+++ 0061-net-ice-base-fix-integer-overflow-on-NVM-init.patch 2025-12-21 16:54:17.168026000 +0200
@@ -1 +1 @@
-From 96b1a23f3ea5614e5795307295234c15e0e99a1e Mon Sep 17 00:00:00 2001
+From cfe6e6752ef806b8266d56d44157737a1f69e649 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 96b1a23f3ea5614e5795307295234c15e0e99a1e ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/ice/base/ice_type.h | 2 +-
+ drivers/net/ice/base/ice_type.h | 2 +-
@@ -19,5 +20,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_type.h b/drivers/net/intel/ice/base/ice_type.h
-index ae3b944d6e..5f1f1a2f13 100644
---- a/drivers/net/intel/ice/base/ice_type.h
-+++ b/drivers/net/intel/ice/base/ice_type.h
-@@ -982,7 +982,7 @@ struct ice_flash_info {
+diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
+index 9d442e7e98..ba42e755e4 100644
+--- a/drivers/net/ice/base/ice_type.h
++++ b/drivers/net/ice/base/ice_type.h
+@@ -843,7 +843,7 @@ struct ice_flash_info {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: fix display of commands in cpfl guide' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (59 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice/base: fix integer overflow on NVM init' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix initialization with 8 ports' " Shani Peretz
` (30 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Praveen Shetty, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/8d2f78a3ae3e54d60ca8cf8413172dea221cd055
Thanks.
Shani
---
From 8d2f78a3ae3e54d60ca8cf8413172dea221cd055 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 3 Oct 2025 15:58:48 +0100
Subject: [PATCH] doc: fix display of commands in cpfl guide
[ upstream commit 484451b27293f2745baf6793e5c4a3c3224f50f5 ]
The literal text of the commands to use were not displayed properly
because of a double ":" at the end of the preceding text, meaning that
the ".. code-block" marker got recognised as the literal text to
include. Change the double colon to single, and also indent the line
continuation in the multi-line flow-create command.
Fixes: 03f976012304 ("net/cpfl: adapt FXP to flow engine")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Praveen Shetty <praveen.shetty@intel.com>
---
doc/guides/nics/cpfl.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/guides/nics/cpfl.rst b/doc/guides/nics/cpfl.rst
index 9b7a99c894..cc9f4320f8 100644
--- a/doc/guides/nics/cpfl.rst
+++ b/doc/guides/nics/cpfl.rst
@@ -206,14 +206,14 @@ low level hardware resources.
dpdk-testpmd -c 0x3 -n 4 -a 0000:af:00.6,vport=[0-1],flow_parser="refpkg.json" -- -i
#. Create one flow to forward ETH-IPV4-TCP from I/O port to a local(CPF's) vport. Flow should be created on
- vport X. Group M should match fxp module. Action port_representor Y means forward packet to local vport Y::
+ vport X. Group M should match fxp module. Action port_representor Y means forward packet to local vport Y:
.. code-block:: console
flow create X ingress group M pattern eth dst is 00:01:00:00:03:14 / ipv4 src is 192.168.0.1 \
- dst is 192.168.0.2 / tcp / end actions port_representor port_id Y / end
+ dst is 192.168.0.2 / tcp / end actions port_representor port_id Y / end
-#. Send a matched packet, and it should be displayed on PMD::
+#. Send a matched packet, and it should be displayed on PMD:
.. code-block:: console
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.345169804 +0200
+++ 0062-doc-fix-display-of-commands-in-cpfl-guide.patch 2025-12-21 16:54:17.172097000 +0200
@@ -1 +1 @@
-From 484451b27293f2745baf6793e5c4a3c3224f50f5 Mon Sep 17 00:00:00 2001
+From 8d2f78a3ae3e54d60ca8cf8413172dea221cd055 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 484451b27293f2745baf6793e5c4a3c3224f50f5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 54a3015aa0..bc42c524ea 100644
+index 9b7a99c894..cc9f4320f8 100644
@@ -25,2 +26,2 @@
-@@ -218,14 +218,14 @@ low level hardware resources.
- dpdk-testpmd -l 0,1 -a 0000:af:00.6,vport=[0-1],flow_parser="refpkg.json" -- -i
+@@ -206,14 +206,14 @@ low level hardware resources.
+ dpdk-testpmd -c 0x3 -n 4 -a 0000:af:00.6,vport=[0-1],flow_parser="refpkg.json" -- -i
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix initialization with 8 ports' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (60 preceding siblings ...)
2025-12-21 14:56 ` patch 'doc: fix display of commands in cpfl guide' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: remove indirection for FDIR filters' " Shani Peretz
` (29 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Kirill Rybalchenko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/3c706a10812dbcd5f3be245c7bd2a1b50483d6b4
Thanks.
Shani
---
From 3c706a10812dbcd5f3be245c7bd2a1b50483d6b4 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 30 Sep 2025 15:28:50 +0100
Subject: [PATCH] net/ice: fix initialization with 8 ports
[ upstream commit 17a8fc206178c6b354a8fde04c23cf29db044961 ]
When initializing an 8-port device, the ACL configuration
failed with the adminq returning an ENOMEM status from the
sixth port onwards. Fix this issue by halving the depth, and
therefore the space required, when using a device with >4 PFs.
Fixes: 40d466fa9f76 ("net/ice: support ACL filter in DCF")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
---
drivers/net/ice/ice_acl_filter.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c
index 63a525b363..bf07d69924 100644
--- a/drivers/net/ice/ice_acl_filter.c
+++ b/drivers/net/ice/ice_acl_filter.c
@@ -113,7 +113,10 @@ ice_acl_setup(struct ice_pf *pf)
else
params.width = ICE_AQC_ACL_KEY_WIDTH_BYTES * 3;
- params.depth = ICE_AQC_ACL_TCAM_DEPTH;
+ if (pf_num > 4)
+ params.depth = ICE_AQC_ACL_TCAM_DEPTH / 2;
+ else
+ params.depth = ICE_AQC_ACL_TCAM_DEPTH;
params.entry_act_pairs = 1;
params.concurr = false;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.389528420 +0200
+++ 0063-net-ice-fix-initialization-with-8-ports.patch 2025-12-21 16:54:17.177093000 +0200
@@ -1 +1 @@
-From 17a8fc206178c6b354a8fde04c23cf29db044961 Mon Sep 17 00:00:00 2001
+From 3c706a10812dbcd5f3be245c7bd2a1b50483d6b4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 17a8fc206178c6b354a8fde04c23cf29db044961 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_acl_filter.c | 5 ++++-
+ drivers/net/ice/ice_acl_filter.c | 5 ++++-
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_acl_filter.c b/drivers/net/intel/ice/ice_acl_filter.c
-index 83cb3e36f9..38e30a4f62 100644
---- a/drivers/net/intel/ice/ice_acl_filter.c
-+++ b/drivers/net/intel/ice/ice_acl_filter.c
-@@ -114,7 +114,10 @@ ice_acl_setup(struct ice_pf *pf)
+diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c
+index 63a525b363..bf07d69924 100644
+--- a/drivers/net/ice/ice_acl_filter.c
++++ b/drivers/net/ice/ice_acl_filter.c
+@@ -113,7 +113,10 @@ ice_acl_setup(struct ice_pf *pf)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: remove indirection for FDIR filters' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (61 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice: fix initialization with 8 ports' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix memory leak in raw pattern parse' " Shani Peretz
` (28 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/dd4ef3ace4b67da74defa75eade23cb62f0c5996
Thanks.
Shani
---
From dd4ef3ace4b67da74defa75eade23cb62f0c5996 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 10 Oct 2025 14:13:19 +0100
Subject: [PATCH] net/ice: remove indirection for FDIR filters
[ upstream commit f1dd6c3fdf974810e9a0d57920a4aa66fa16342e ]
Currently, when filters are created for FDIR, they are allocated
dynamically using `ice_malloc()`. Not only this is inconsistent with hash
filter code paths (hash uses embedded structures), this is also creating
unnecessary indirection and complexity, and creates a memory leak where,
if something fails during raw pattern parse, the profile memory isn't
deallocated.
Since there is no actual reason for why FDIR filter profile must use
indirection, instead of fixing the memory leak just avoid it altogether
by making the filter profile an embedded struct. When parsing begins, the
entire scratch filter structure is zeroed out anyway, so there is no need
to add any additional zero-initialization code.
Fixes: 25be39cc1760 ("net/ice: enable protocol agnostic flow offloading in FDIR")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_ethdev.h | 2 +-
drivers/net/ice/ice_fdir_filter.c | 30 +++++++++++-------------------
2 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index d607f028e0..b7086c590a 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -345,7 +345,7 @@ struct ice_fdir_filter_conf {
uint64_t input_set_i; /* only for tunnel inner fields */
uint32_t mark_flag;
- struct ice_parser_profile *prof;
+ struct ice_parser_profile prof;
bool parser_ena;
u8 *pkt_buf;
u8 pkt_len;
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 0d7b3fe164..2320d49d4f 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1307,7 +1307,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (filter->parser_ena) {
struct ice_hw *hw = ICE_PF_TO_HW(pf);
- int id = ice_find_first_bit(filter->prof->ptypes, UINT16_MAX);
+ int id = ice_find_first_bit(filter->prof.ptypes, UINT16_MAX);
int ptg = hw->blk[ICE_BLK_FD].xlt1.t[id];
u16 ctrl_vsi = pf->fdir.fdir_vsi->idx;
u16 main_vsi = pf->main_vsi->idx;
@@ -1317,11 +1317,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (pi->fdir_actived_cnt != 0) {
for (i = 0; i < ICE_MAX_FV_WORDS; i++)
if (pi->prof.fv[i].proto_id !=
- filter->prof->fv[i].proto_id ||
+ filter->prof.fv[i].proto_id ||
pi->prof.fv[i].offset !=
- filter->prof->fv[i].offset ||
+ filter->prof.fv[i].offset ||
pi->prof.fv[i].msk !=
- filter->prof->fv[i].msk)
+ filter->prof.fv[i].msk)
break;
if (i == ICE_MAX_FV_WORDS) {
fv_found = true;
@@ -1331,7 +1331,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (!fv_found) {
ret = ice_flow_set_hw_prof(hw, main_vsi, ctrl_vsi,
- filter->prof, ICE_BLK_FD);
+ &filter->prof, ICE_BLK_FD);
if (ret)
goto error;
}
@@ -1341,12 +1341,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
goto error;
if (!fv_found) {
- for (i = 0; i < filter->prof->fv_num; i++) {
+ for (i = 0; i < filter->prof.fv_num; i++) {
pi->prof.fv[i].proto_id =
- filter->prof->fv[i].proto_id;
+ filter->prof.fv[i].proto_id;
pi->prof.fv[i].offset =
- filter->prof->fv[i].offset;
- pi->prof.fv[i].msk = filter->prof->fv[i].msk;
+ filter->prof.fv[i].offset;
+ pi->prof.fv[i].msk = filter->prof.fv[i].msk;
}
pi->fdir_actived_cnt = 1;
}
@@ -1444,7 +1444,6 @@ free_entry:
return -rte_errno;
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
return -rte_errno;
}
@@ -1466,7 +1465,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
if (filter->parser_ena) {
struct ice_hw *hw = ICE_PF_TO_HW(pf);
- int id = ice_find_first_bit(filter->prof->ptypes, UINT16_MAX);
+ int id = ice_find_first_bit(filter->prof.ptypes, UINT16_MAX);
int ptg = hw->blk[ICE_BLK_FD].xlt1.t[id];
u16 ctrl_vsi = pf->fdir.fdir_vsi->idx;
u16 main_vsi = pf->main_vsi->idx;
@@ -1494,7 +1493,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
flow->rule = NULL;
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(filter);
@@ -1921,13 +1919,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
if (!tmp_mask)
return -rte_errno;
- filter->prof = (struct ice_parser_profile *)
- ice_malloc(&ad->hw, sizeof(*filter->prof));
- if (!filter->prof)
- return -ENOMEM;
-
if (ice_parser_profile_init(&rslt, tmp_spec, tmp_mask,
- pkt_len, ICE_BLK_FD, true, filter->prof))
+ pkt_len, ICE_BLK_FD, true, &filter->prof))
return -rte_errno;
u8 *pkt_buf = (u8 *)ice_malloc(&ad->hw, pkt_len + 1);
@@ -2483,7 +2476,6 @@ ice_fdir_parse(struct ice_adapter *ad,
rte_free(item);
return ret;
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(item);
return ret;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.430710428 +0200
+++ 0064-net-ice-remove-indirection-for-FDIR-filters.patch 2025-12-21 16:54:17.187035000 +0200
@@ -1 +1 @@
-From f1dd6c3fdf974810e9a0d57920a4aa66fa16342e Mon Sep 17 00:00:00 2001
+From dd4ef3ace4b67da74defa75eade23cb62f0c5996 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1dd6c3fdf974810e9a0d57920a4aa66fa16342e ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -25,2 +26,2 @@
- drivers/net/intel/ice/ice_ethdev.h | 2 +-
- drivers/net/intel/ice/ice_fdir_filter.c | 30 +++++++++----------------
+ drivers/net/ice/ice_ethdev.h | 2 +-
+ drivers/net/ice/ice_fdir_filter.c | 30 +++++++++++-------------------
@@ -29,5 +30,5 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.h b/drivers/net/intel/ice/ice_ethdev.h
-index a0d2082206..6478d6dfbd 100644
---- a/drivers/net/intel/ice/ice_ethdev.h
-+++ b/drivers/net/intel/ice/ice_ethdev.h
-@@ -379,7 +379,7 @@ struct ice_fdir_filter_conf {
+diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
+index d607f028e0..b7086c590a 100644
+--- a/drivers/net/ice/ice_ethdev.h
++++ b/drivers/net/ice/ice_ethdev.h
+@@ -345,7 +345,7 @@ struct ice_fdir_filter_conf {
@@ -42,5 +43,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index d41d223d52..d593624792 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -1314,7 +1314,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 0d7b3fe164..2320d49d4f 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1307,7 +1307,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -55 +56 @@
-@@ -1324,11 +1324,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1317,11 +1317,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -70 +71 @@
-@@ -1338,7 +1338,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1331,7 +1331,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -79 +80 @@
-@@ -1348,12 +1348,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1341,12 +1341,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -96 +97 @@
-@@ -1451,7 +1451,6 @@ free_entry:
+@@ -1444,7 +1444,6 @@ free_entry:
@@ -104 +105 @@
-@@ -1473,7 +1472,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1466,7 +1465,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -113 +114 @@
-@@ -1501,7 +1500,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1494,7 +1493,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -121 +122 @@
-@@ -1928,13 +1926,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1921,13 +1919,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -136 +137 @@
-@@ -2495,7 +2488,6 @@ ice_fdir_parse(struct ice_adapter *ad,
+@@ -2483,7 +2476,6 @@ ice_fdir_parse(struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix memory leak in raw pattern parse' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (62 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice: remove indirection for FDIR filters' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Shani Peretz
` (27 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/c19bf0a9689460d7951d53f09f836ef8f1128914
Thanks.
Shani
---
From c19bf0a9689460d7951d53f09f836ef8f1128914 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 10 Oct 2025 14:13:20 +0100
Subject: [PATCH] net/ice: fix memory leak in raw pattern parse
[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]
Currently, when parsing rte_flow raw type items, we allocate some
internal structures, but if errors happen down the line we just quit and
never free the memory we just allocated. Fix this by adding an error
cleanup section.
Fixes: 848de9572c83 ("net/ice: fix raw flow input pattern parsing")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 2320d49d4f..0445c5b480 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1858,7 +1858,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
uint16_t tmp_val = 0;
uint16_t pkt_len = 0;
uint8_t tmp = 0;
- int i, j;
+ int i, j, ret_val;
pkt_len = strlen((char *)(uintptr_t)raw_spec->pattern);
if (strlen((char *)(uintptr_t)raw_mask->pattern) !=
@@ -1913,19 +1913,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
pkt_len /= 2;
- if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt))
- return -rte_errno;
-
- if (!tmp_mask)
- return -rte_errno;
+ if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt)) {
+ ret_val = -rte_errno;
+ goto raw_error;
+ }
if (ice_parser_profile_init(&rslt, tmp_spec, tmp_mask,
- pkt_len, ICE_BLK_FD, true, &filter->prof))
- return -rte_errno;
+ pkt_len, ICE_BLK_FD, true, &filter->prof)) {
+ ret_val = -rte_errno;
+ goto raw_error;
+ }
u8 *pkt_buf = (u8 *)ice_malloc(&ad->hw, pkt_len + 1);
- if (!pkt_buf)
- return -ENOMEM;
+ if (!pkt_buf) {
+ ret_val = -ENOMEM;
+ goto raw_error;
+ }
rte_memcpy(pkt_buf, tmp_spec, pkt_len);
filter->pkt_buf = pkt_buf;
@@ -1936,6 +1939,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
rte_free(tmp_spec);
rte_free(tmp_mask);
break;
+
+raw_error:
+ rte_free(tmp_spec);
+ rte_free(tmp_mask);
+ return ret_val;
}
case RTE_FLOW_ITEM_TYPE_ETH:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.473149189 +0200
+++ 0065-net-ice-fix-memory-leak-in-raw-pattern-parse.patch 2025-12-21 16:54:17.194097000 +0200
@@ -1 +1 @@
-From 3938eeec989181216ea3f9cc8eee931a2915ca5d Mon Sep 17 00:00:00 2001
+From c19bf0a9689460d7951d53f09f836ef8f1128914 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_fdir_filter.c | 28 ++++++++++++++++---------
+ drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index d593624792..9dfe5c02cb 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -1865,7 +1865,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 2320d49d4f..0445c5b480 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1858,7 +1858,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -33 +34 @@
-@@ -1920,19 +1920,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1913,19 +1913,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -65 +66 @@
-@@ -1943,6 +1946,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1936,6 +1939,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (63 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/ice: fix memory leak in raw pattern parse' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
` (26 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Anurag Mandal; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/a9367ac8f0ca5875f4c95a4468c2d2cb8a168695
Thanks.
Shani
---
From a9367ac8f0ca5875f4c95a4468c2d2cb8a168695 Mon Sep 17 00:00:00 2001
From: Anurag Mandal <anurag.mandal@intel.com>
Date: Wed, 15 Oct 2025 23:41:50 +0530
Subject: [PATCH] net/i40e: fix symmetric Toeplitz hashing for SCTP
[ upstream commit 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c ]
When symmetric toeplitz is configured for SCTP, packets belonging
to the same SCTP session are getting distributed to multiple queues
due to improper hash computation.
Removed SCTP Verification Tag from hash computation of symmetric toeplitz
as it changes for same SCTP session.
Tested the following with the fix & enabling symmetric toeplitz for
SCTP:
1. Packets belonging to the same SCTP session getting into the same
queue.
2. Packets belonging to the different SCTP sessions getting
distributed to multiple queues.
Fixes: ef4c16fd9148 ("net/i40e: refactor RSS flow")
Signed-off-by: Anurag Mandal <anurag.mandal@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
.mailmap | 1 +
drivers/net/i40e/i40e_hash.c | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index be1dcd0a64..4e0f227d0d 100644
--- a/.mailmap
+++ b/.mailmap
@@ -126,6 +126,7 @@ Anthony Fee <anthonyx.fee@intel.com>
Antonio Fischetti <antonio.fischetti@intel.com>
Anup Prabhu <aprabhu@marvell.com>
Anupam Kapoor <anupam.kapoor@gmail.com>
+Anurag Mandal <anurag.mandal@intel.com>
Apeksha Gupta <apeksha.gupta@nxp.com>
Archana Muniganti <marchana@marvell.com> <muniganti.archana@caviumnetworks.com>
Archit Pandey <architpandeynitk@gmail.com>
diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c
index 02e1457d80..3149682197 100644
--- a/drivers/net/i40e/i40e_hash.c
+++ b/drivers/net/i40e/i40e_hash.c
@@ -561,7 +561,7 @@ i40e_hash_get_pattern_pctypes(const struct rte_eth_dev *dev,
}
static uint64_t
-i40e_hash_get_inset(uint64_t rss_types)
+i40e_hash_get_inset(uint64_t rss_types, bool symmetric_enable)
{
uint64_t mask, inset = 0;
int i;
@@ -608,6 +608,17 @@ i40e_hash_get_inset(uint64_t rss_types)
I40E_INSET_IPV4_SRC | I40E_INSET_IPV6_SRC);
}
+ /* SCTP Verification Tag is not required in hash computation for SYMMETRIC_TOEPLITZ */
+ if (symmetric_enable) {
+ mask = rss_types & RTE_ETH_RSS_NONFRAG_IPV4_SCTP;
+ if (mask == RTE_ETH_RSS_NONFRAG_IPV4_SCTP)
+ inset &= ~I40E_INSET_SCTP_VT;
+
+ mask = rss_types & RTE_ETH_RSS_NONFRAG_IPV6_SCTP;
+ if (mask == RTE_ETH_RSS_NONFRAG_IPV6_SCTP)
+ inset &= ~I40E_INSET_SCTP_VT;
+ }
+
return inset;
}
@@ -1113,6 +1124,7 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
NULL,
"RSS Queues not supported when pattern specified");
+ rss_conf->symmetric_enable = false; /* by default, symmetric is disabled */
switch (rss_act->func) {
case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ:
@@ -1140,7 +1152,7 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev,
rss_conf->conf.func = rss_act->func;
rss_conf->conf.types = rss_act->types;
- rss_conf->inset = i40e_hash_get_inset(rss_act->types);
+ rss_conf->inset = i40e_hash_get_inset(rss_act->types, rss_conf->symmetric_enable);
return i40e_hash_get_pattern_pctypes(dev, pattern, rss_act,
rss_conf, error);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.514754589 +0200
+++ 0066-net-i40e-fix-symmetric-Toeplitz-hashing-for-SCTP.patch 2025-12-21 16:54:17.204124000 +0200
@@ -1 +1 @@
-From 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c Mon Sep 17 00:00:00 2001
+From a9367ac8f0ca5875f4c95a4468c2d2cb8a168695 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -26,2 +27,2 @@
- .mailmap | 1 +
- drivers/net/intel/i40e/i40e_hash.c | 16 ++++++++++++++--
+ .mailmap | 1 +
+ drivers/net/i40e/i40e_hash.c | 16 ++++++++++++++--
@@ -31 +32 @@
-index c14288e1c7..adce7ee286 100644
+index be1dcd0a64..4e0f227d0d 100644
@@ -34 +35 @@
-@@ -136,6 +136,7 @@ Anthony Harivel <aharivel@redhat.com>
+@@ -126,6 +126,7 @@ Anthony Fee <anthonyx.fee@intel.com>
@@ -42 +43 @@
-diff --git a/drivers/net/intel/i40e/i40e_hash.c b/drivers/net/intel/i40e/i40e_hash.c
+diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c
@@ -44,2 +45,2 @@
---- a/drivers/net/intel/i40e/i40e_hash.c
-+++ b/drivers/net/intel/i40e/i40e_hash.c
+--- a/drivers/net/i40e/i40e_hash.c
++++ b/drivers/net/i40e/i40e_hash.c
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/hws: fix ESP header match in strict mode' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (64 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Shani Peretz
` (25 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/0c4f922ab130afd87fe2437ea013ca64f9f02071
Thanks.
Shani
---
From 0c4f922ab130afd87fe2437ea013ca64f9f02071 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 9 Sep 2025 09:28:51 +0300
Subject: [PATCH] net/mlx5/hws: fix ESP header match in strict mode
[ upstream commit 4237d1efa6e3f7f18ba809aa2073640fb034ae8d ]
The pattern like "eth / ipv6 / esp / end" matched on any IPv6
packet in strict mode, because there was no implicit match on the
IP.proto forced.
This patch adds the implicit match on IP.proto with value 50 (ESP)
and adds implicit match on UDP.dport with value 4500 for the case
ESP over UDP.
Fixes: 81cf20a25abf ("net/mlx5/hws: support match on ESP item")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 51917f01a0..4afe124769 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -2290,6 +2290,32 @@ mlx5dr_definer_conv_item_esp(struct mlx5dr_definer_conv_data *cd,
const struct rte_flow_item_esp *m = item->mask;
struct mlx5dr_definer_fc *fc;
+ /* To match on ESP we must match on ip_protocol and optionally on l4_dport */
+ if (!cd->relaxed) {
+ bool over_udp;
+
+ fc = &cd->fc[DR_CALC_FNAME(IP_PROTOCOL, false)];
+ over_udp = fc->tag_set == &mlx5dr_definer_udp_protocol_set;
+
+ if (over_udp) {
+ fc = &cd->fc[DR_CALC_FNAME(L4_DPORT, false)];
+ if (!fc->tag_set) {
+ fc->item_idx = item_idx;
+ fc->tag_mask_set = &mlx5dr_definer_ones_set;
+ fc->tag_set = &mlx5dr_definer_ipsec_udp_port_set;
+ DR_CALC_SET(fc, eth_l4, destination_port, false);
+ }
+ } else {
+ fc = &cd->fc[DR_CALC_FNAME(IP_PROTOCOL, false)];
+ if (!fc->tag_set) {
+ fc->item_idx = item_idx;
+ fc->tag_set = &mlx5dr_definer_ipsec_protocol_set;
+ fc->tag_mask_set = &mlx5dr_definer_ones_set;
+ DR_CALC_SET(fc, eth_l3, protocol_next_header, false);
+ }
+ }
+ }
+
if (!m)
return 0;
if (m->hdr.spi) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.557967130 +0200
+++ 0067-net-mlx5-hws-fix-ESP-header-match-in-strict-mode.patch 2025-12-21 16:54:17.213050000 +0200
@@ -1 +1 @@
-From 4237d1efa6e3f7f18ba809aa2073640fb034ae8d Mon Sep 17 00:00:00 2001
+From 0c4f922ab130afd87fe2437ea013ca64f9f02071 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4237d1efa6e3f7f18ba809aa2073640fb034ae8d ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 113feae291..1c6b3e38c4 100644
+index 51917f01a0..4afe124769 100644
@@ -27 +28 @@
-@@ -2962,6 +2962,32 @@ mlx5dr_definer_conv_item_esp(struct mlx5dr_definer_conv_data *cd,
+@@ -2290,6 +2290,32 @@ mlx5dr_definer_conv_item_esp(struct mlx5dr_definer_conv_data *cd,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix ESP header match after UDP for group 0' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (65 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix multicast' " Shani Peretz
` (24 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/9f90b07dc4eb496de9fbac8660e58a5f06b4843e
Thanks.
Shani
---
From 9f90b07dc4eb496de9fbac8660e58a5f06b4843e Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Wed, 12 Nov 2025 11:12:45 +0200
Subject: [PATCH] net/mlx5: fix ESP header match after UDP for group 0
[ upstream commit ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 ]
The ESP item translation routine always forced the match
on IP next protocol to be 50 (ESP). This prevented on
matching ESP packets over UDP.
The patch checks if UDP header is expected, and also forces
match on UDP destination port 4500 if it is not set
by the caller yet.
Fixes: 18ca4a4ec73a ("net/mlx5: support ESP SPI match and RSS hash")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_flow_os.c | 6 -----
drivers/net/mlx5/mlx5_flow.h | 3 +++
drivers/net/mlx5/mlx5_flow_dv.c | 34 ++++++++++++++++-----------
3 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_flow_os.c b/drivers/net/mlx5/linux/mlx5_flow_os.c
index 2767b11708..2851b05f6a 100644
--- a/drivers/net/mlx5/linux/mlx5_flow_os.c
+++ b/drivers/net/mlx5/linux/mlx5_flow_os.c
@@ -23,18 +23,12 @@ mlx5_flow_os_validate_item_esp(const struct rte_flow_item *item,
const int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
const uint64_t l3m = tunnel ? MLX5_FLOW_LAYER_INNER_L3 :
MLX5_FLOW_LAYER_OUTER_L3;
- const uint64_t l4m = tunnel ? MLX5_FLOW_LAYER_INNER_L4 :
- MLX5_FLOW_LAYER_OUTER_L4;
int ret;
if (!(item_flags & l3m))
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM, item,
"L3 is mandatory to filter on L4");
- if (item_flags & l4m)
- return rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ITEM, item,
- "multiple L4 layers not supported");
if (target_protocol != 0xff && target_protocol != IPPROTO_ESP)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM, item,
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 3a39b77cb1..3303065f87 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -434,6 +434,9 @@ enum mlx5_feature_name {
/* UDP port numbers for GENEVE. */
#define MLX5_UDP_PORT_GENEVE 6081
+/* UDP port numbers for ESP. */
+#define MLX5_UDP_PORT_ESP 4500
+
/* Lowest priority indicator. */
#define MLX5_FLOW_LOWEST_PRIO_INDICATOR ((uint32_t)-1)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 0a070bf51c..07dacae868 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -9350,29 +9350,35 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item,
*/
static void
flow_dv_translate_item_esp(void *key, const struct rte_flow_item *item,
- int inner, uint32_t key_type)
+ int inner, uint32_t key_type, uint64_t item_flags)
{
const struct rte_flow_item_esp *esp_m;
const struct rte_flow_item_esp *esp_v;
void *headers_v;
char *spi_v;
+ bool over_udp = item_flags & (inner ? MLX5_FLOW_LAYER_INNER_L4_UDP :
+ MLX5_FLOW_LAYER_OUTER_L4_UDP);
headers_v = inner ? MLX5_ADDR_OF(fte_match_param, key, inner_headers) :
- MLX5_ADDR_OF(fte_match_param, key, outer_headers);
- if (key_type & MLX5_SET_MATCHER_M)
- MLX5_SET(fte_match_set_lyr_2_4, headers_v,
- ip_protocol, 0xff);
- else
- MLX5_SET(fte_match_set_lyr_2_4, headers_v,
- ip_protocol, IPPROTO_ESP);
+ MLX5_ADDR_OF(fte_match_param, key, outer_headers);
+ if (key_type & MLX5_SET_MATCHER_M) {
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol, 0xff);
+ if (over_udp && !MLX5_GET16(fte_match_set_lyr_2_4, headers_v, udp_dport))
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, udp_dport, 0xFFFF);
+ } else {
+ if (!over_udp)
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol, IPPROTO_ESP);
+ else
+ if (!MLX5_GET16(fte_match_set_lyr_2_4, headers_v, udp_dport))
+ MLX5_SET(fte_match_set_lyr_2_4, headers_v, udp_dport,
+ MLX5_UDP_PORT_ESP);
+ }
if (MLX5_ITEM_VALID(item, key_type))
return;
- MLX5_ITEM_UPDATE(item, key_type, esp_v, esp_m,
- &rte_flow_item_esp_mask);
+ MLX5_ITEM_UPDATE(item, key_type, esp_v, esp_m, &rte_flow_item_esp_mask);
headers_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters);
- spi_v = inner ? MLX5_ADDR_OF(fte_match_set_misc, headers_v,
- inner_esp_spi) : MLX5_ADDR_OF(fte_match_set_misc
- , headers_v, outer_esp_spi);
+ spi_v = inner ? MLX5_ADDR_OF(fte_match_set_misc, headers_v, inner_esp_spi) :
+ MLX5_ADDR_OF(fte_match_set_misc, headers_v, outer_esp_spi);
*(uint32_t *)spi_v = esp_m->hdr.spi & esp_v->hdr.spi;
}
@@ -13747,7 +13753,7 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
switch (item_type) {
case RTE_FLOW_ITEM_TYPE_ESP:
- flow_dv_translate_item_esp(key, items, tunnel, key_type);
+ flow_dv_translate_item_esp(key, items, tunnel, key_type, wks->item_flags);
wks->priority = MLX5_PRIORITY_MAP_L4;
last_item = MLX5_FLOW_ITEM_ESP;
break;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.601099034 +0200
+++ 0068-net-mlx5-fix-ESP-header-match-after-UDP-for-group-0.patch 2025-12-21 16:54:17.240089000 +0200
@@ -1 +1 @@
-From ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 Mon Sep 17 00:00:00 2001
+From 9f90b07dc4eb496de9fbac8660e58a5f06b4843e Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Tue, 9 Sep 2025 09:28:53 +0300
+Date: Wed, 12 Nov 2025 11:12:45 +0200
@@ -5,0 +6,2 @@
+[ upstream commit ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 ]
+
@@ -26 +28 @@
-index 777125e9a8..f5eee46e44 100644
+index 2767b11708..2851b05f6a 100644
@@ -29 +31 @@
-@@ -25,8 +25,6 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
+@@ -23,18 +23,12 @@ mlx5_flow_os_validate_item_esp(const struct rte_flow_item *item,
@@ -35,7 +37,6 @@
- static const struct rte_flow_item_esp mlx5_flow_item_esp_mask = {
- .hdr = {
- .spi = RTE_BE32(0xffffffff),
-@@ -41,10 +39,6 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
- RTE_FLOW_ERROR_TYPE_ITEM,
- item, "L3 is mandatory to filter on L4");
- }
+ int ret;
+
+ if (!(item_flags & l3m))
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM, item,
+ "L3 is mandatory to filter on L4");
@@ -50 +51 @@
-index 367dacc277..ff61706054 100644
+index 3a39b77cb1..3303065f87 100644
@@ -53 +54 @@
-@@ -489,6 +489,9 @@ struct mlx5_mirror {
+@@ -434,6 +434,9 @@ enum mlx5_feature_name {
@@ -64 +65 @@
-index 18d0d29377..bcce1597e2 100644
+index 0a070bf51c..07dacae868 100644
@@ -67 +68 @@
-@@ -9713,29 +9713,35 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item,
+@@ -9350,29 +9350,35 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item,
@@ -116 +117 @@
-@@ -14224,7 +14230,7 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
+@@ -13747,7 +13753,7 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix multicast' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (66 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow action memory leak' " Shani Peretz
` (23 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Gavin Li; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/185230a002bab6826040e65729cbe1650f62f6fa
Thanks.
Shani
---
From 185230a002bab6826040e65729cbe1650f62f6fa Mon Sep 17 00:00:00 2001
From: Gavin Li <gavinl@nvidia.com>
Date: Fri, 29 Aug 2025 12:08:30 +0300
Subject: [PATCH] net/mlx5: fix multicast
[ upstream commit 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 ]
Device multicast MAC addresses are managed using the mac_addr_add and
mac_addr_remove APIs.
In the mlx5_dev_spawn function, devices such as PF, VFs, and SFs obtain
the MAC addresses configured in netdev via netlink and store them in the
PMD device data, which also includes multicast MAC addresses. Default
rules are created for each MAC address to filter traffic accordingly.
Previously, multicast MAC address flows were mistakenly disabled, which
caused mac_addr_add to stop functioning for multicast MAC addresses,
resulting in missed multicast traffic.
To address this, default rules for multicast MAC addresses created by
PMD should now be set up within mlx5_traffic_enable to properly update
and manage multicast MAC address rules.
Fixes: 2d0665a7f771 ("net/mlx5: align PF and VF/SF MAC address handling")
Signed-off-by: Gavin Li <gavinl@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_trigger.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 6643fe7eea..f870aaf797 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1705,7 +1705,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
for (i = 0; i != MLX5_MAX_MAC_ADDRESSES; ++i) {
struct rte_ether_addr *mac = &dev->data->mac_addrs[i];
- if (!memcmp(mac, &cmp, sizeof(*mac)) || rte_is_multicast_ether_addr(mac))
+ /* Add flows for unicast and multicast mac addresses added by API. */
+ if (!memcmp(mac, &cmp, sizeof(*mac)) ||
+ !BITFIELD_ISSET(priv->mac_own, i) ||
+ (dev->data->all_multicast && rte_is_multicast_ether_addr(mac)))
continue;
memcpy(&unicast.hdr.dst_addr.addr_bytes,
mac->addr_bytes,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.657692145 +0200
+++ 0069-net-mlx5-fix-multicast.patch 2025-12-21 16:54:17.247067000 +0200
@@ -1 +1 @@
-From 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 Mon Sep 17 00:00:00 2001
+From 185230a002bab6826040e65729cbe1650f62f6fa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index b104ca9f52..916ac03c16 100644
+index 6643fe7eea..f870aaf797 100644
@@ -35 +36 @@
-@@ -1835,7 +1835,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
+@@ -1705,7 +1705,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix indirect flow action memory leak' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (67 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix multicast' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix MTU initialization' " Shani Peretz
` (22 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Rongwei Liu; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/36bbad5f5b10ccd0867078812e99480fd09a7c0e
Thanks.
Shani
---
From 36bbad5f5b10ccd0867078812e99480fd09a7c0e Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Wed, 17 Sep 2025 13:26:03 +0300
Subject: [PATCH] net/mlx5: fix indirect flow action memory leak
[ upstream commit a7aeb6ac678c6a0bd45584091529ac6fa6ac58b1 ]
There is a handle that is not freed when using
indirect action list to manipulate legacy action.
Fixes: e26f50adbf38 ("net/mlx5: support indirect list meter mark action")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index c9d8d42874..eff4d36f8f 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -11620,6 +11620,7 @@ flow_hw_async_action_list_handle_destroy
legacy->handle,
user_data, error);
mlx5_indirect_list_remove_entry(&legacy->indirect);
+ mlx5_free(legacy);
goto end;
}
if (attr) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.700790721 +0200
+++ 0070-net-mlx5-fix-indirect-flow-action-memory-leak.patch 2025-12-21 16:54:17.263105000 +0200
@@ -1 +1 @@
-From a7aeb6ac678c6a0bd45584091529ac6fa6ac58b1 Mon Sep 17 00:00:00 2001
+From 36bbad5f5b10ccd0867078812e99480fd09a7c0e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a7aeb6ac678c6a0bd45584091529ac6fa6ac58b1 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index ee8f8c35e5..9a0aa1827e 100644
+index c9d8d42874..eff4d36f8f 100644
@@ -22 +23 @@
-@@ -14959,6 +14959,7 @@ flow_hw_async_action_list_handle_destroy
+@@ -11620,6 +11620,7 @@ flow_hw_async_action_list_handle_destroy
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix MTU initialization' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (68 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow action memory leak' " Shani Peretz
@ 2025-12-21 14:56 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/mlx5: fix leak of flow indexed pools' " Shani Peretz
` (21 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:56 UTC (permalink / raw)
To: Shani Peretz; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/dc0a79d38533a4b7d3795beb8eec86f93e1f182c
Thanks.
Shani
---
From dc0a79d38533a4b7d3795beb8eec86f93e1f182c Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Thu, 18 Sep 2025 08:43:25 +0300
Subject: [PATCH] net/mlx5: fix MTU initialization
[ upstream commit ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 ]
Currently with mlx5 PMD, rte_eth_dev_get_mtu() doesn't return
the MTU the device was set with, but the default one.
It happens because mlx5_dev_spawn() is not setting the eth_dev->data->mtu
field after getting the actual MTU from the driver,
so the default value is kept.
This patch fixes the issue by retrieving setting the value of priv->mtu
to eth_dev->data->mtu.
Bugzilla ID: 1768
Fixes: 2eb4d0107acc ("net/mlx5: refactor PCI probing on Linux")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 1 +
drivers/net/mlx5/windows/mlx5_os.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 3aa500e6a4..722a7e2691 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1560,6 +1560,7 @@ err_secondary:
err = rte_errno;
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
priv->mtu);
/* Initialize burst functions to prevent crashes before link-up. */
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index 4cb9df1d5f..67a8c94f5f 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -507,6 +507,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
err = rte_errno;
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u.", eth_dev->data->port_id,
priv->mtu);
/* Initialize burst functions to prevent crashes before link-up. */
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.752183913 +0200
+++ 0071-net-mlx5-fix-MTU-initialization.patch 2025-12-21 16:54:17.276048000 +0200
@@ -1 +1 @@
-From ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 Mon Sep 17 00:00:00 2001
+From dc0a79d38533a4b7d3795beb8eec86f93e1f182c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 8c37c047bb..8d11b1ac3a 100644
+index 3aa500e6a4..722a7e2691 100644
@@ -29 +30 @@
-@@ -1601,6 +1601,7 @@ err_secondary:
+@@ -1560,6 +1560,7 @@ err_secondary:
@@ -38 +39 @@
-index c4e3430bdc..4eadc872a5 100644
+index 4cb9df1d5f..67a8c94f5f 100644
@@ -41 +42 @@
-@@ -509,6 +509,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -507,6 +507,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix leak of flow indexed pools' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (69 preceding siblings ...)
2025-12-21 14:56 ` patch 'net/mlx5: fix MTU initialization' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix inconsistent lock' " Shani Peretz
` (20 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Roi Dayan; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/2908da5c49894b8321f73e0d9f0f0c73d59cafcd
Thanks.
Shani
---
From 2908da5c49894b8321f73e0d9f0f0c73d59cafcd Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Sun, 5 Oct 2025 10:23:45 +0300
Subject: [PATCH] net/mlx5: fix leak of flow indexed pools
[ upstream commit eefec46eeb89672815afd6c2497d21b928d77c54 ]
The cited commit allocated indexed pools but those pools
were never released. Fix it.
Fixes: b4edeaf3efd5 ("net/mlx5: replace flow list with indexed pool")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/mlx5.c | 13 +++++++++++++
2 files changed, 14 insertions(+)
diff --git a/.mailmap b/.mailmap
index 4e0f227d0d..ce743b9dea 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1245,6 +1245,7 @@ Rob Miller <rob.miller@broadcom.com>
Rob Scheepens <rob.scheepens@nutanix.com>
Roger Melton <rmelton@cisco.com>
Rohit Raj <rohit.raj@nxp.com>
+Roi Dayan <roid@nvidia.com>
Roland Qi <roland.qi@ucloud.cn>
Rolf Neugebauer <rolf.neugebauer@netronome.com>
Romain Delhomel <romain.delhomel@6wind.com>
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 584a51b393..c42a0ad7ff 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2210,6 +2210,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
dev->process_private = NULL;
}
+static void
+mlx5_flow_pools_destroy(struct mlx5_priv *priv)
+{
+ int i;
+
+ for (i = 0; i < MLX5_FLOW_TYPE_MAXI; i++) {
+ if (!priv->flows[i])
+ continue;
+ mlx5_ipool_destroy(priv->flows[i]);
+ }
+}
+
/**
* DPDK callback to close the device.
*
@@ -2386,6 +2398,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
if (!c)
claim_zero(rte_eth_switch_domain_free(priv->domain_id));
}
+ mlx5_flow_pools_destroy(priv);
memset(priv, 0, sizeof(*priv));
priv->domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID;
/*
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.796113811 +0200
+++ 0072-net-mlx5-fix-leak-of-flow-indexed-pools.patch 2025-12-21 16:54:17.287038000 +0200
@@ -1 +1 @@
-From eefec46eeb89672815afd6c2497d21b928d77c54 Mon Sep 17 00:00:00 2001
+From 2908da5c49894b8321f73e0d9f0f0c73d59cafcd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit eefec46eeb89672815afd6c2497d21b928d77c54 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index aef57a4c32..ff13bf09fb 100644
+index 4e0f227d0d..ce743b9dea 100644
@@ -23,2 +24,2 @@
-@@ -1361,6 +1361,7 @@ Rob Scheepens <rob.scheepens@nutanix.com>
- Rogelio Domínguez Hernández <rogelio.dominguez@gmail.com>
+@@ -1245,6 +1245,7 @@ Rob Miller <rob.miller@broadcom.com>
+ Rob Scheepens <rob.scheepens@nutanix.com>
@@ -32 +33 @@
-index ece29fb216..b018a4f0e2 100644
+index 584a51b393..c42a0ad7ff 100644
@@ -35 +36 @@
-@@ -2318,6 +2318,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
+@@ -2210,6 +2210,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
@@ -54 +55 @@
-@@ -2507,6 +2519,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2386,6 +2398,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/hns3: fix inconsistent lock' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (70 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/mlx5: fix leak of flow indexed pools' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN resources freeing' " Shani Peretz
` (19 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/35af6bfb998bf12395bfdc4df534f592434c6422
Thanks.
Shani
---
From 35af6bfb998bf12395bfdc4df534f592434c6422 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Wed, 13 Aug 2025 15:33:15 +0800
Subject: [PATCH] net/hns3: fix inconsistent lock
[ upstream commit d441169bd20415691ea86707e7bf852eb6fcda46 ]
The hns3 driver supports configuring RSS through both ops API and
rte_flow API. The ops API uses spin lock, while the rte_flow API uses
pthread mutex. When concurrent calls occur, issues may arise.
This patch replaces the lock in the flow API with spin lock.
With the pthread mutex no longer needed, the pthread attributes
can also be removed.
Fixes: 1bdcca8006e4 ("net/hns3: fix flow director lock")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.h | 2 --
drivers/net/hns3/hns3_fdir.c | 13 --------
drivers/net/hns3/hns3_flow.c | 60 +++++++++++++---------------------
3 files changed, 22 insertions(+), 53 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 0ce4974da6..1b105dc5ca 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -5,7 +5,6 @@
#ifndef HNS3_ETHDEV_H
#define HNS3_ETHDEV_H
-#include <pthread.h>
#include <ethdev_driver.h>
#include <rte_byteorder.h>
#include <rte_io.h>
@@ -680,7 +679,6 @@ struct hns3_hw {
struct hns3_port_base_vlan_config port_base_vlan_cfg;
- pthread_mutex_t flows_lock; /* rte_flow ops lock */
struct hns3_fdir_rule_list flow_fdir_list; /* flow fdir rule list */
struct hns3_rss_filter_list flow_rss_list; /* flow RSS rule list */
struct hns3_flow_mem_list flow_list;
diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 75a200c713..5a7d9192da 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -1076,17 +1076,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
if (hns->is_vf)
return 0;
- /*
- * This API is called in the reset recovery process, the parent function
- * must hold hw->lock.
- * There maybe deadlock if acquire hw->flows_lock directly because rte
- * flow driver ops first acquire hw->flows_lock and then may acquire
- * hw->lock.
- * So here first release the hw->lock and then acquire the
- * hw->flows_lock to avoid deadlock.
- */
- rte_spinlock_unlock(&hw->lock);
- pthread_mutex_lock(&hw->flows_lock);
TAILQ_FOREACH(fdir_filter, &fdir_info->fdir_list, entries) {
ret = hns3_config_action(hw, &fdir_filter->fdir_conf);
if (!ret)
@@ -1097,8 +1086,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
break;
}
}
- pthread_mutex_unlock(&hw->flows_lock);
- rte_spinlock_lock(&hw->lock);
if (err) {
hns3_err(hw, "Fail to restore FDIR filter, ret = %d", ret);
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index b5a46e5ff1..f28ed48a7f 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -2032,18 +2032,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
return 0;
}
-static int
-hns3_restore_rss_filter(struct hns3_hw *hw)
-{
- int ret;
-
- pthread_mutex_lock(&hw->flows_lock);
- ret = hns3_reconfig_all_rss_filter(hw);
- pthread_mutex_unlock(&hw->flows_lock);
-
- return ret;
-}
-
int
hns3_restore_filter(struct hns3_adapter *hns)
{
@@ -2054,7 +2042,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
if (ret != 0)
return ret;
- return hns3_restore_rss_filter(hw);
+ return hns3_reconfig_all_rss_filter(hw);
}
static int
@@ -2446,10 +2434,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
struct hns3_filter_info filter_info = {0};
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_validate(dev, attr, pattern, actions, error,
&filter_info);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2463,9 +2451,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
struct rte_flow *flow;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
flow = hns3_flow_create(dev, attr, pattern, actions, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return flow;
}
@@ -2477,9 +2465,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_destroy(dev, flow, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2490,9 +2478,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_flush(dev, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2505,9 +2493,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_query(dev, flow, actions, data, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2555,7 +2543,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
if (hns3_check_indir_action(conf, action, error))
return NULL;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
act_count = (const struct rte_flow_action_count *)action->conf;
if (act_count->id >= pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1]) {
@@ -2580,11 +2568,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
handle.indirect_type = HNS3_INDIRECT_ACTION_TYPE_COUNT;
handle.counter_id = counter->id;
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return (struct rte_flow_action_handle *)handle.val64;
err_exit:
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return NULL;
}
@@ -2597,11 +2585,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
struct rte_flow_action_handle indir;
struct hns3_flow_counter *counter;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
indir.val64 = (uint64_t)handle;
if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Invalid indirect type");
@@ -2609,14 +2597,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
counter = hns3_counter_lookup(dev, indir.counter_id);
if (counter == NULL) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Counter id not exist");
}
if (counter->ref_cnt > 1) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EBUSY,
RTE_FLOW_ERROR_TYPE_HANDLE,
handle, "Counter id in use");
@@ -2624,7 +2612,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
(void)hns3_counter_release(dev, indir.counter_id);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return 0;
}
@@ -2639,11 +2627,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
struct rte_flow flow;
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
indir.val64 = (uint64_t)handle;
if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Invalid indirect type");
@@ -2653,7 +2641,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
flow.counter_id = indir.counter_id;
ret = hns3_counter_query(dev, &flow,
(struct rte_flow_query_count *)data, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2687,14 +2675,10 @@ void
hns3_flow_init(struct rte_eth_dev *dev)
{
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
- pthread_mutexattr_t attr;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return;
- pthread_mutexattr_init(&attr);
- pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
- pthread_mutex_init(&hw->flows_lock, &attr);
dev->data->dev_flags |= RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE;
TAILQ_INIT(&hw->flow_fdir_list);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.842116218 +0200
+++ 0073-net-hns3-fix-inconsistent-lock.patch 2025-12-21 16:54:17.298026000 +0200
@@ -1 +1 @@
-From d441169bd20415691ea86707e7bf852eb6fcda46 Mon Sep 17 00:00:00 2001
+From 35af6bfb998bf12395bfdc4df534f592434c6422 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d441169bd20415691ea86707e7bf852eb6fcda46 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index d602bfa02f..f6bb1b5d43 100644
+index 0ce4974da6..1b105dc5ca 100644
@@ -36 +37 @@
-@@ -679,7 +678,6 @@ struct hns3_hw {
+@@ -680,7 +679,6 @@ struct hns3_hw {
@@ -45 +46 @@
-index aacad40e61..50572ae430 100644
+index 75a200c713..5a7d9192da 100644
@@ -48 +49 @@
-@@ -1145,17 +1145,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
+@@ -1076,17 +1076,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
@@ -66 +67 @@
-@@ -1166,8 +1155,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
+@@ -1097,8 +1086,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
@@ -76 +77 @@
-index c0238d2bfa..f2d1e4ec3a 100644
+index b5a46e5ff1..f28ed48a7f 100644
@@ -79 +80 @@
-@@ -2210,18 +2210,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
+@@ -2032,18 +2032,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
@@ -98 +99 @@
-@@ -2232,7 +2220,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
+@@ -2054,7 +2042,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
@@ -107 +108 @@
-@@ -2624,10 +2612,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
+@@ -2446,10 +2434,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
@@ -120 +121 @@
-@@ -2641,9 +2629,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -2463,9 +2451,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
@@ -132 +133 @@
-@@ -2655,9 +2643,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
+@@ -2477,9 +2465,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
@@ -144 +145 @@
-@@ -2668,9 +2656,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
+@@ -2490,9 +2478,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
@@ -156 +157 @@
-@@ -2683,9 +2671,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
+@@ -2505,9 +2493,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
@@ -168 +169 @@
-@@ -2733,7 +2721,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
+@@ -2555,7 +2543,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
@@ -177 +178 @@
-@@ -2758,11 +2746,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
+@@ -2580,11 +2568,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
@@ -191 +192 @@
-@@ -2775,11 +2763,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2597,11 +2585,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -205 +206 @@
-@@ -2787,14 +2775,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2609,14 +2597,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -222 +223 @@
-@@ -2802,7 +2790,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2624,7 +2612,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -231 +232 @@
-@@ -2817,11 +2805,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
+@@ -2639,11 +2627,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
@@ -245 +246 @@
-@@ -2831,7 +2819,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
+@@ -2653,7 +2641,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
@@ -254 +255 @@
-@@ -2865,14 +2853,10 @@ void
+@@ -2687,14 +2675,10 @@ void
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/hns3: fix VLAN resources freeing' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (71 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/hns3: fix inconsistent lock' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Shani Peretz
` (18 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/45cdf598ec773e441d5146c78ee306be7b1dd42f
Thanks.
Shani
---
From 45cdf598ec773e441d5146c78ee306be7b1dd42f Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Fri, 22 Aug 2025 14:04:28 +0800
Subject: [PATCH] net/hns3: fix VLAN resources freeing
[ upstream commit 4816b1005bd650b4a1e10af913c497bec860bec5 ]
In the initialization process, it is necessary to release VLAN resources
on the failure branch.
Additionally, encapsulate a function hns3_uninit_hardware() to release
the resources allocated by the hns3_init_hardware() function.
Fixes: 411d23b9eafb ("net/hns3: support VLAN")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index f14fb61cbb..c82d7d84cb 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -4432,25 +4432,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
ret = hns3_dcb_init(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init dcb: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_init_fd_config(hns);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init flow director: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_config_tso(hw, HNS3_TSO_MSS_MIN, HNS3_TSO_MSS_MAX);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config tso: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_config_gro(hw, false);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config gro: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
/*
@@ -4462,22 +4462,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
ret = hns3_init_ring_with_vector(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init ring intr vector: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_ptp_init(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init PTP, ret = %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
return 0;
-
+rm_vlan_table:
+ hns3_rm_all_vlan_table(hns, true);
err_mac_init:
hns3_uninit_umv_space(hw);
return ret;
}
+static void
+hns3_uninit_hardware(struct hns3_hw *hw)
+{
+ struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
+
+ (void)hns3_uninit_umv_space(hw);
+ hns3_ptp_uninit(hw);
+ hns3_rm_all_vlan_table(hns, true);
+}
+
static int
hns3_clear_hw(struct hns3_hw *hw)
{
@@ -4689,8 +4700,7 @@ err_supported_speed:
err_enable_intr:
hns3_fdir_filter_uninit(hns);
err_fdir:
- hns3_uninit_umv_space(hw);
- hns3_ptp_uninit(hw);
+ hns3_uninit_hardware(hw);
err_init_hw:
hns3_stats_uninit(hw);
err_get_config:
@@ -4725,8 +4735,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
hns3_promisc_uninit(hw);
hns3_flow_uninit(eth_dev);
hns3_fdir_filter_uninit(hns);
- hns3_uninit_umv_space(hw);
- hns3_ptp_uninit(hw);
+ hns3_uninit_hardware(hw);
hns3_stats_uninit(hw);
hns3_config_mac_tnl_int(hw, false);
hns3_pf_disable_irq0(hw);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.892845310 +0200
+++ 0074-net-hns3-fix-VLAN-resources-freeing.patch 2025-12-21 16:54:17.308070000 +0200
@@ -1 +1 @@
-From 4816b1005bd650b4a1e10af913c497bec860bec5 Mon Sep 17 00:00:00 2001
+From 45cdf598ec773e441d5146c78ee306be7b1dd42f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4816b1005bd650b4a1e10af913c497bec860bec5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a809a47423..b2eab7e1c5 100644
+index f14fb61cbb..c82d7d84cb 100644
@@ -24 +25 @@
-@@ -4366,25 +4366,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4432,25 +4432,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -54 +55 @@
-@@ -4396,22 +4396,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4462,22 +4462,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -91 +92 @@
-@@ -4623,8 +4634,7 @@ err_supported_speed:
+@@ -4689,8 +4700,7 @@ err_supported_speed:
@@ -101 +102 @@
-@@ -4659,8 +4669,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
+@@ -4725,8 +4735,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/hns3: fix overwrite mbuf in vector path' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (72 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN resources freeing' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/af_packet: fix crash in secondary process' " Shani Peretz
` (17 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Dengdui Huang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/cf2b0f1550bb5e12eb23a7dc903c2b4673fed535
Thanks.
Shani
---
From cf2b0f1550bb5e12eb23a7dc903c2b4673fed535 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Fri, 22 Aug 2025 14:04:29 +0800
Subject: [PATCH] net/hns3: fix overwrite mbuf in vector path
[ upstream commit 06b296a2264fcd1fe2d167f2d90a58607f5e81f5 ]
The vector path processes multiple descriptors at a time and modifies
the corresponding mbufs accordingly. When the mbufs cannot be applied
for, the previous patch [1] only clears the first descriptor's valid
bit, which is not enough. In this patch, the mbufs points to the
fake_mbuf to prevent overwrite.
[1] commit 01843ab2f2fc ("net/hns3: fix crash for NEON and SVE")
Fixes: a3d4f4d291d7 ("net/hns3: support NEON Rx")
Fixes: 01843ab2f2fc ("net/hns3: fix crash for NEON and SVE")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_rxtx_vec.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/hns3/hns3_rxtx_vec.h b/drivers/net/hns3/hns3_rxtx_vec.h
index 9018e79c2f..6afa2fb814 100644
--- a/drivers/net/hns3/hns3_rxtx_vec.h
+++ b/drivers/net/hns3/hns3_rxtx_vec.h
@@ -109,8 +109,12 @@ hns3_rxq_rearm_mbuf(struct hns3_rx_queue *rxq)
/*
* Clear VLD bit for the first descriptor rearmed in case
* of going to receive packets later.
+ * And also point mbufs to fake_mbuf to prevent modification
+ * of the mbuf field during vector packet receiving.
*/
rxdp[0].rx.bd_base_info = 0;
+ for (i = 0; i < HNS3_VECTOR_RX_OFFSET_TABLE_LEN; i++)
+ rxep[i].mbuf = &rxq->fake_mbuf;
rte_eth_devices[rxq->port_id].data->rx_mbuf_alloc_failed++;
return;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.937853460 +0200
+++ 0075-net-hns3-fix-overwrite-mbuf-in-vector-path.patch 2025-12-21 16:54:17.313081000 +0200
@@ -1 +1 @@
-From 06b296a2264fcd1fe2d167f2d90a58607f5e81f5 Mon Sep 17 00:00:00 2001
+From cf2b0f1550bb5e12eb23a7dc903c2b4673fed535 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 06b296a2264fcd1fe2d167f2d90a58607f5e81f5 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/af_packet: fix crash in secondary process' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (73 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/ark: remove double mbuf free' " Shani Peretz
` (16 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Kerem Aksu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/2f6b55f82e4242d6f3232d07cbbb9de0935bd389
Thanks.
Shani
---
From 2f6b55f82e4242d6f3232d07cbbb9de0935bd389 Mon Sep 17 00:00:00 2001
From: Kerem Aksu <kerem.aksu@i2i-systems.com>
Date: Fri, 12 Sep 2025 14:35:25 +0300
Subject: [PATCH] net/af_packet: fix crash in secondary process
[ upstream commit d57124f60ef60b24cd39e895cf6d211b93b897ae ]
dumpcap crashes when trying to capture from af_packet devices. This is
caused by allocating interface name with
strdup (i.e. malloc). Interface name is not accessible from secondary
process and causes segmentation fault. Use rte_malloc instead of
strdup to fix the issue.
Bugzilla ID: 1786
Fixes: 1b93c2aa81b4 ("net/af_packet: add interface name to internals")
Signed-off-by: Kerem Aksu <kerem.aksu@i2i-systems.com>
---
.mailmap | 1 +
drivers/net/af_packet/rte_eth_af_packet.c | 7 ++++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/.mailmap b/.mailmap
index ce743b9dea..0755666658 100644
--- a/.mailmap
+++ b/.mailmap
@@ -764,6 +764,7 @@ Kefu Chai <tchaikov@gmail.com>
Keiichi Watanabe <keiichiw@chromium.org>
Keith Wiles <keith.wiles@intel.com> <keith.wiles@windriver.com>
Kent Wires <kent.wires@intel.com>
+Kerem Aksu <kerem.aksu@i2i-systems.com>
Keunhong Lee <dlrmsghd@gmail.com>
Kevin Laatz <kevin.laatz@intel.com>
Kevin Lampis <klampis@solarflare.com>
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 0b059bfd0b..6803502c74 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -462,7 +462,7 @@ eth_dev_close(struct rte_eth_dev *dev)
rte_free(internals->rx_queue[q].rd);
rte_free(internals->tx_queue[q].rd);
}
- free(internals->if_name);
+ rte_free(internals->if_name);
rte_free(internals->rx_queue);
rte_free(internals->tx_queue);
@@ -752,9 +752,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
PMD_LOG_ERRNO(ERR, "%s: ioctl failed (SIOCGIFINDEX)", name);
goto free_internals;
}
- (*internals)->if_name = strdup(pair->value);
+ (*internals)->if_name = rte_malloc_socket(name, ifnamelen + 1, 0, numa_node);
if ((*internals)->if_name == NULL)
goto free_internals;
+ strlcpy((*internals)->if_name, pair->value, ifnamelen + 1);
(*internals)->if_index = ifr.ifr_ifindex;
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1) {
@@ -941,7 +942,7 @@ error:
free_internals:
rte_free((*internals)->rx_queue);
rte_free((*internals)->tx_queue);
- free((*internals)->if_name);
+ rte_free((*internals)->if_name);
rte_free(*internals);
return -1;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:20.979849290 +0200
+++ 0076-net-af_packet-fix-crash-in-secondary-process.patch 2025-12-21 16:54:17.321086000 +0200
@@ -1 +1 @@
-From d57124f60ef60b24cd39e895cf6d211b93b897ae Mon Sep 17 00:00:00 2001
+From 2f6b55f82e4242d6f3232d07cbbb9de0935bd389 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d57124f60ef60b24cd39e895cf6d211b93b897ae ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index ff13bf09fb..ff873856cb 100644
+index ce743b9dea..0755666658 100644
@@ -26 +27 @@
-@@ -830,6 +830,7 @@ Kefu Chai <tchaikov@gmail.com>
+@@ -764,6 +764,7 @@ Kefu Chai <tchaikov@gmail.com>
@@ -35 +36 @@
-index 85bc1201b4..de7ff63527 100644
+index 0b059bfd0b..6803502c74 100644
@@ -38 +39 @@
-@@ -525,7 +525,7 @@ eth_dev_close(struct rte_eth_dev *dev)
+@@ -462,7 +462,7 @@ eth_dev_close(struct rte_eth_dev *dev)
@@ -47 +48 @@
-@@ -875,9 +875,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
+@@ -752,9 +752,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
@@ -59 +60 @@
-@@ -1063,7 +1064,7 @@ error:
+@@ -941,7 +942,7 @@ error:
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ark: remove double mbuf free' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (74 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/af_packet: fix crash in secondary process' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'app/testpmd: stop forwarding in secondary process' " Shani Peretz
` (15 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: John Miller; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/d93af0a98ca9414b0b106c6ec93689dca063c96f
Thanks.
Shani
---
From d93af0a98ca9414b0b106c6ec93689dca063c96f Mon Sep 17 00:00:00 2001
From: John Miller <john.miller@atomicrules.com>
Date: Mon, 15 Sep 2025 11:02:02 -0400
Subject: [PATCH] net/ark: remove double mbuf free
[ upstream commit f8c85054cc9cb160ca12e1bf96b569e654f96c74 ]
Fixes: 8b154b690266 ("net/ark: add Rx initial version")
Signed-off-by: John Miller <john.miller@atomicrules.com>
---
drivers/net/ark/ark_ethdev_rx.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c
index 24f1c65690..89aa9320f1 100644
--- a/drivers/net/ark/ark_ethdev_rx.c
+++ b/drivers/net/ark/ark_ethdev_rx.c
@@ -538,7 +538,6 @@ void
eth_ark_dev_rx_queue_release(void *vqueue)
{
struct ark_rx_queue *queue;
- uint32_t i;
queue = (struct ark_rx_queue *)vqueue;
if (queue == 0)
@@ -551,9 +550,6 @@ eth_ark_dev_rx_queue_release(void *vqueue)
/* Need to clear out mbufs here, dropping packets along the way */
eth_ark_rx_queue_drain(queue);
- for (i = 0; i < queue->queue_size; ++i)
- rte_pktmbuf_free(queue->reserve_q[i]);
-
rte_free(queue->reserve_q);
rte_free(queue->paddress_q);
rte_free(queue);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.030311591 +0200
+++ 0077-net-ark-remove-double-mbuf-free.patch 2025-12-21 16:54:17.327028000 +0200
@@ -1 +1 @@
-From f8c85054cc9cb160ca12e1bf96b569e654f96c74 Mon Sep 17 00:00:00 2001
+From d93af0a98ca9414b0b106c6ec93689dca063c96f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f8c85054cc9cb160ca12e1bf96b569e654f96c74 ]
+
@@ -7 +8,0 @@
-Cc: stable@dpdk.org
@@ -15 +16 @@
-index 2fff0ffded..ce458a5a96 100644
+index 24f1c65690..89aa9320f1 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: stop forwarding in secondary process' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (75 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/ark: remove double mbuf free' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/tap: fix build with LTO' " Shani Peretz
` (14 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/2d8360178973a9edbe57b909daca36b023637420
Thanks.
Shani
---
From 2d8360178973a9edbe57b909daca36b023637420 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Wed, 17 Sep 2025 23:47:03 -0700
Subject: [PATCH] app/testpmd: stop forwarding in secondary process
[ upstream commit f96273c8e9d39e472bb07acc05e493b1e712e51b ]
When the secondary process testpmd application running any fwd_engine
and after that primary has exited will cause a crash.
This patch forces secondary process forwarding lcores
in fwd_engine to stop before the primary process exits.
Fixes: a550baf24af90f ("app/testpmd: support multi-process")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test-pmd/testpmd.c | 103 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 99 insertions(+), 4 deletions(-)
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index d7db1d6afb..bbd8ad2c2d 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -3778,6 +3778,83 @@ detach_devargs(char *identifier)
rte_devargs_reset(&da);
}
+#ifndef RTE_EXEC_ENV_WINDOWS
+
+enum testpmd_req_type {
+ TESTPMD_REQ_TYPE_EXIT,
+};
+
+struct testpmd_mp_req {
+ enum testpmd_req_type t;
+};
+
+struct testpmd_mp_resp {
+ int result;
+};
+
+#define TESTPMD_MP "mp_testpmd"
+
+/* Send reply to this peer when testpmd exits */
+static RTE_ATOMIC(const char *) primary_name;
+
+static void
+reply_to_primary(const char *peer, int result)
+{
+ struct rte_mp_msg reply = { };
+ struct testpmd_mp_resp *resp = (struct testpmd_mp_resp *) &reply.param;
+
+ strlcpy(reply.name, TESTPMD_MP, RTE_MP_MAX_NAME_LEN);
+ reply.len_param = sizeof(*resp);
+ resp->result = result;
+
+ printf("Replying %d to primary\n", result);
+ fflush(stdout);
+
+ if (rte_mp_reply(&reply, peer) < 0)
+ printf("Failed to send response to primary:%s", strerror(rte_errno));
+}
+
+/* Primary process is exiting, stop secondary process */
+static void
+pmd_notify_secondary(void)
+{
+ struct testpmd_mp_req request = {
+ .t = TESTPMD_REQ_TYPE_EXIT,
+ };
+ struct rte_mp_msg mp_req = {
+ .name = TESTPMD_MP,
+ .len_param = sizeof(request),
+ };
+ struct rte_mp_reply reply;
+ struct timespec ts = {.tv_sec = 5, .tv_nsec = 0};
+
+ printf("\nPrimary: Sending 'stop_req' request to secondary...\n");
+ fflush(stdout);
+
+ memcpy(mp_req.param, &request, sizeof(request));
+ rte_mp_request_sync(&mp_req, &reply, &ts);
+}
+
+static int
+handle_testpmd_request(const struct rte_mp_msg *request, const void *peer)
+{
+ const struct testpmd_mp_req *req = (const struct testpmd_mp_req *)request->param;
+
+ if (req->t == TESTPMD_REQ_TYPE_EXIT) {
+ printf("\nReceived notification of primary exiting\n");
+ fflush(stdout);
+
+ /* Response is sent after forwarding loop exits */
+ rte_atomic_store_explicit(&primary_name, peer, rte_memory_order_relaxed);
+
+ kill(getpid(), SIGINT);
+ } else {
+ reply_to_primary(peer, -EINVAL);
+ }
+ return 0;
+}
+#endif
+
void
pmd_test_exit(void)
{
@@ -3789,6 +3866,10 @@ pmd_test_exit(void)
stop_packet_forwarding();
#ifndef RTE_EXEC_ENV_WINDOWS
+ /* Tell secondary to exit */
+ if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+ pmd_notify_secondary();
+
for (i = 0 ; i < RTE_DIM(mempools) ; i++) {
if (mempools[i]) {
if (mp_alloc_type == MP_ALLOC_ANON)
@@ -4590,9 +4671,12 @@ main(int argc, char** argv)
rte_strerror(rte_errno));
#ifndef RTE_EXEC_ENV_WINDOWS
- if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
- enable_primary_monitor() < 0)
- rte_exit(EXIT_FAILURE, "Cannot setup primary monitor");
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
+ if (enable_primary_monitor() < 0)
+ rte_exit(EXIT_FAILURE, "Cannot setup primary monitor");
+ if (rte_mp_action_register(TESTPMD_MP, handle_testpmd_request) < 0)
+ rte_exit(EXIT_FAILURE, "Failed to register message action\n");
+ }
#endif
/* allocate port structures, and init them */
@@ -4797,12 +4881,23 @@ main(int argc, char** argv)
}
#ifndef RTE_EXEC_ENV_WINDOWS
- if (rte_eal_process_type() == RTE_PROC_SECONDARY)
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
disable_primary_monitor();
+ rte_mp_action_unregister(TESTPMD_MP);
+ }
#endif
pmd_test_exit();
+#ifndef RTE_EXEC_ENV_WINDOWS
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
+ const char *peer = rte_atomic_exchange_explicit(&primary_name, NULL,
+ rte_memory_order_relaxed);
+ if (peer)
+ reply_to_primary(peer, 0);
+ }
+#endif
+
#ifdef RTE_LIB_PDUMP
/* uninitialize packet capture framework */
rte_pdump_uninit();
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.070781000 +0200
+++ 0078-app-testpmd-stop-forwarding-in-secondary-process.patch 2025-12-21 16:54:17.335110000 +0200
@@ -1 +1 @@
-From f96273c8e9d39e472bb07acc05e493b1e712e51b Mon Sep 17 00:00:00 2001
+From 2d8360178973a9edbe57b909daca36b023637420 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f96273c8e9d39e472bb07acc05e493b1e712e51b ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 1a48b00e93..2360da3a48 100644
+index d7db1d6afb..bbd8ad2c2d 100644
@@ -25 +26 @@
-@@ -3610,6 +3610,83 @@ detach_devargs(char *identifier)
+@@ -3778,6 +3778,83 @@ detach_devargs(char *identifier)
@@ -109 +110 @@
-@@ -3621,6 +3698,10 @@ pmd_test_exit(void)
+@@ -3789,6 +3866,10 @@ pmd_test_exit(void)
@@ -120 +121 @@
-@@ -4430,9 +4511,12 @@ main(int argc, char** argv)
+@@ -4590,9 +4671,12 @@ main(int argc, char** argv)
@@ -136 +137 @@
-@@ -4634,12 +4718,23 @@ main(int argc, char** argv)
+@@ -4797,12 +4881,23 @@ main(int argc, char** argv)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/tap: fix build with LTO' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (76 preceding siblings ...)
2025-12-21 14:57 ` patch 'app/testpmd: stop forwarding in secondary process' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Shani Peretz
` (13 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: David Marchand; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/4f83e9a5d1a8051ce5837585c983a1ace8a35090
Thanks.
Shani
---
From 4f83e9a5d1a8051ce5837585c983a1ace8a35090 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 29 Oct 2025 15:27:50 +0100
Subject: [PATCH] net/tap: fix build with LTO
[ upstream commit adb95cc6644103d055609f5bcae5df91afea02ab ]
The compiler has trouble understanding that the code is actually pointing
at the data in the message past the nh struct.
Update the tap_nlattr_add* helpers and the NLMSG_TAIL macro passing a
pointer to msg.
Bugzilla ID: 1511
Fixes: 7c25284e30c2 ("net/tap: add netlink back-end for flow API")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/tap/tap_flow.c | 124 +++++++++++++---------------------
drivers/net/tap/tap_netlink.c | 24 +++----
drivers/net/tap/tap_netlink.h | 10 +--
drivers/net/tap/tap_tcmsgs.c | 6 +-
4 files changed, 68 insertions(+), 96 deletions(-)
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index 79cd6a12ca..b32ad7eaa5 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -539,20 +539,16 @@ tap_flow_create_eth(const struct rte_flow_item *item, void *data)
return 0;
msg = &flow->msg;
if (!rte_is_zero_ether_addr(&mask->hdr.dst_addr)) {
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_DST,
- RTE_ETHER_ADDR_LEN,
- &spec->hdr.dst_addr.addr_bytes);
- tap_nlattr_add(&msg->nh,
- TCA_FLOWER_KEY_ETH_DST_MASK, RTE_ETHER_ADDR_LEN,
- &mask->hdr.dst_addr.addr_bytes);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_ETH_DST, RTE_ETHER_ADDR_LEN,
+ &spec->hdr.dst_addr.addr_bytes);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_ETH_DST_MASK, RTE_ETHER_ADDR_LEN,
+ &mask->hdr.dst_addr.addr_bytes);
}
if (!rte_is_zero_ether_addr(&mask->hdr.src_addr)) {
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_ETH_SRC,
- RTE_ETHER_ADDR_LEN,
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_ETH_SRC, RTE_ETHER_ADDR_LEN,
&spec->hdr.src_addr.addr_bytes);
- tap_nlattr_add(&msg->nh,
- TCA_FLOWER_KEY_ETH_SRC_MASK, RTE_ETHER_ADDR_LEN,
- &mask->hdr.src_addr.addr_bytes);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_ETH_SRC_MASK, RTE_ETHER_ADDR_LEN,
+ &mask->hdr.src_addr.addr_bytes);
}
return 0;
}
@@ -608,11 +604,9 @@ tap_flow_create_vlan(const struct rte_flow_item *item, void *data)
uint8_t vid = VLAN_ID(tci);
if (prio)
- tap_nlattr_add8(&msg->nh,
- TCA_FLOWER_KEY_VLAN_PRIO, prio);
+ tap_nlattr_add8(msg, TCA_FLOWER_KEY_VLAN_PRIO, prio);
if (vid)
- tap_nlattr_add16(&msg->nh,
- TCA_FLOWER_KEY_VLAN_ID, vid);
+ tap_nlattr_add16(msg, TCA_FLOWER_KEY_VLAN_ID, vid);
}
return 0;
}
@@ -655,20 +649,15 @@ tap_flow_create_ipv4(const struct rte_flow_item *item, void *data)
if (!spec)
return 0;
if (mask->hdr.dst_addr) {
- tap_nlattr_add32(&msg->nh, TCA_FLOWER_KEY_IPV4_DST,
- spec->hdr.dst_addr);
- tap_nlattr_add32(&msg->nh, TCA_FLOWER_KEY_IPV4_DST_MASK,
- mask->hdr.dst_addr);
+ tap_nlattr_add32(msg, TCA_FLOWER_KEY_IPV4_DST, spec->hdr.dst_addr);
+ tap_nlattr_add32(msg, TCA_FLOWER_KEY_IPV4_DST_MASK, mask->hdr.dst_addr);
}
if (mask->hdr.src_addr) {
- tap_nlattr_add32(&msg->nh, TCA_FLOWER_KEY_IPV4_SRC,
- spec->hdr.src_addr);
- tap_nlattr_add32(&msg->nh, TCA_FLOWER_KEY_IPV4_SRC_MASK,
- mask->hdr.src_addr);
+ tap_nlattr_add32(msg, TCA_FLOWER_KEY_IPV4_SRC, spec->hdr.src_addr);
+ tap_nlattr_add32(msg, TCA_FLOWER_KEY_IPV4_SRC_MASK, mask->hdr.src_addr);
}
if (spec->hdr.next_proto_id)
- tap_nlattr_add8(&msg->nh, TCA_FLOWER_KEY_IP_PROTO,
- spec->hdr.next_proto_id);
+ tap_nlattr_add8(msg, TCA_FLOWER_KEY_IP_PROTO, spec->hdr.next_proto_id);
return 0;
}
@@ -711,20 +700,19 @@ tap_flow_create_ipv6(const struct rte_flow_item *item, void *data)
if (!spec)
return 0;
if (memcmp(mask->hdr.dst_addr, empty_addr, 16)) {
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_IPV6_DST,
- sizeof(spec->hdr.dst_addr), &spec->hdr.dst_addr);
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_IPV6_DST_MASK,
- sizeof(mask->hdr.dst_addr), &mask->hdr.dst_addr);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_IPV6_DST, sizeof(spec->hdr.dst_addr),
+ &spec->hdr.dst_addr);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_IPV6_DST_MASK, sizeof(mask->hdr.dst_addr),
+ &mask->hdr.dst_addr);
}
if (memcmp(mask->hdr.src_addr, empty_addr, 16)) {
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_IPV6_SRC,
- sizeof(spec->hdr.src_addr), &spec->hdr.src_addr);
- tap_nlattr_add(&msg->nh, TCA_FLOWER_KEY_IPV6_SRC_MASK,
- sizeof(mask->hdr.src_addr), &mask->hdr.src_addr);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_IPV6_SRC, sizeof(spec->hdr.src_addr),
+ &spec->hdr.src_addr);
+ tap_nlattr_add(msg, TCA_FLOWER_KEY_IPV6_SRC_MASK, sizeof(mask->hdr.src_addr),
+ &mask->hdr.src_addr);
}
if (spec->hdr.proto)
- tap_nlattr_add8(&msg->nh,
- TCA_FLOWER_KEY_IP_PROTO, spec->hdr.proto);
+ tap_nlattr_add8(msg, TCA_FLOWER_KEY_IP_PROTO, spec->hdr.proto);
return 0;
}
@@ -762,15 +750,13 @@ tap_flow_create_udp(const struct rte_flow_item *item, void *data)
if (!flow)
return 0;
msg = &flow->msg;
- tap_nlattr_add8(&msg->nh, TCA_FLOWER_KEY_IP_PROTO, IPPROTO_UDP);
+ tap_nlattr_add8(msg, TCA_FLOWER_KEY_IP_PROTO, IPPROTO_UDP);
if (!spec)
return 0;
if (mask->hdr.dst_port)
- tap_nlattr_add16(&msg->nh, TCA_FLOWER_KEY_UDP_DST,
- spec->hdr.dst_port);
+ tap_nlattr_add16(msg, TCA_FLOWER_KEY_UDP_DST, spec->hdr.dst_port);
if (mask->hdr.src_port)
- tap_nlattr_add16(&msg->nh, TCA_FLOWER_KEY_UDP_SRC,
- spec->hdr.src_port);
+ tap_nlattr_add16(msg, TCA_FLOWER_KEY_UDP_SRC, spec->hdr.src_port);
return 0;
}
@@ -808,15 +794,13 @@ tap_flow_create_tcp(const struct rte_flow_item *item, void *data)
if (!flow)
return 0;
msg = &flow->msg;
- tap_nlattr_add8(&msg->nh, TCA_FLOWER_KEY_IP_PROTO, IPPROTO_TCP);
+ tap_nlattr_add8(msg, TCA_FLOWER_KEY_IP_PROTO, IPPROTO_TCP);
if (!spec)
return 0;
if (mask->hdr.dst_port)
- tap_nlattr_add16(&msg->nh, TCA_FLOWER_KEY_TCP_DST,
- spec->hdr.dst_port);
+ tap_nlattr_add16(msg, TCA_FLOWER_KEY_TCP_DST, spec->hdr.dst_port);
if (mask->hdr.src_port)
- tap_nlattr_add16(&msg->nh, TCA_FLOWER_KEY_TCP_SRC,
- spec->hdr.src_port);
+ tap_nlattr_add16(msg, TCA_FLOWER_KEY_TCP_SRC, spec->hdr.src_port);
return 0;
}
@@ -924,35 +908,27 @@ add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
if (tap_nlattr_nested_start(msg, (*act_index)++) < 0)
return -1;
- tap_nlattr_add(&msg->nh, TCA_ACT_KIND,
- strlen(adata->id) + 1, adata->id);
+ tap_nlattr_add(msg, TCA_ACT_KIND, strlen(adata->id) + 1, adata->id);
if (tap_nlattr_nested_start(msg, TCA_ACT_OPTIONS) < 0)
return -1;
if (strcmp("gact", adata->id) == 0) {
- tap_nlattr_add(&msg->nh, TCA_GACT_PARMS, sizeof(adata->gact),
- &adata->gact);
+ tap_nlattr_add(msg, TCA_GACT_PARMS, sizeof(adata->gact), &adata->gact);
} else if (strcmp("mirred", adata->id) == 0) {
if (adata->mirred.eaction == TCA_EGRESS_MIRROR)
adata->mirred.action = TC_ACT_PIPE;
else /* REDIRECT */
adata->mirred.action = TC_ACT_STOLEN;
- tap_nlattr_add(&msg->nh, TCA_MIRRED_PARMS,
- sizeof(adata->mirred),
- &adata->mirred);
+ tap_nlattr_add(msg, TCA_MIRRED_PARMS, sizeof(adata->mirred), &adata->mirred);
} else if (strcmp("skbedit", adata->id) == 0) {
- tap_nlattr_add(&msg->nh, TCA_SKBEDIT_PARMS,
- sizeof(adata->skbedit.skbedit),
- &adata->skbedit.skbedit);
- tap_nlattr_add16(&msg->nh, TCA_SKBEDIT_QUEUE_MAPPING,
- adata->skbedit.queue);
+ tap_nlattr_add(msg, TCA_SKBEDIT_PARMS, sizeof(adata->skbedit.skbedit),
+ &adata->skbedit.skbedit);
+ tap_nlattr_add16(msg, TCA_SKBEDIT_QUEUE_MAPPING, adata->skbedit.queue);
} else if (strcmp("bpf", adata->id) == 0) {
- tap_nlattr_add32(&msg->nh, TCA_ACT_BPF_FD, adata->bpf.bpf_fd);
- tap_nlattr_add(&msg->nh, TCA_ACT_BPF_NAME,
- strlen(adata->bpf.annotation) + 1,
- adata->bpf.annotation);
- tap_nlattr_add(&msg->nh, TCA_ACT_BPF_PARMS,
- sizeof(adata->bpf.bpf),
- &adata->bpf.bpf);
+ tap_nlattr_add32(msg, TCA_ACT_BPF_FD, adata->bpf.bpf_fd);
+ tap_nlattr_add(msg, TCA_ACT_BPF_NAME, strlen(adata->bpf.annotation) + 1,
+ adata->bpf.annotation);
+ tap_nlattr_add(msg, TCA_ACT_BPF_PARMS, sizeof(adata->bpf.bpf),
+ &adata->bpf.bpf);
} else {
return -1;
}
@@ -1082,7 +1058,7 @@ priv_flow_process(struct pmd_internals *pmd,
TC_H_MAKE(MULTIQ_MAJOR_HANDLE, 0);
}
/* use flower filter type */
- tap_nlattr_add(&flow->msg.nh, TCA_KIND, sizeof("flower"), "flower");
+ tap_nlattr_add(&flow->msg, TCA_KIND, sizeof("flower"), "flower");
if (tap_nlattr_nested_start(&flow->msg, TCA_OPTIONS) < 0) {
rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_ACTION,
actions, "could not allocated netlink msg");
@@ -1122,15 +1098,11 @@ priv_flow_process(struct pmd_internals *pmd,
}
if (flow) {
if (data.vlan) {
- tap_nlattr_add16(&flow->msg.nh, TCA_FLOWER_KEY_ETH_TYPE,
- htons(ETH_P_8021Q));
- tap_nlattr_add16(&flow->msg.nh,
- TCA_FLOWER_KEY_VLAN_ETH_TYPE,
- data.eth_type ?
- data.eth_type : htons(ETH_P_ALL));
+ tap_nlattr_add16(&flow->msg, TCA_FLOWER_KEY_ETH_TYPE, htons(ETH_P_8021Q));
+ tap_nlattr_add16(&flow->msg, TCA_FLOWER_KEY_VLAN_ETH_TYPE,
+ data.eth_type ? data.eth_type : htons(ETH_P_ALL));
} else if (data.eth_type) {
- tap_nlattr_add16(&flow->msg.nh, TCA_FLOWER_KEY_ETH_TYPE,
- data.eth_type);
+ tap_nlattr_add16(&flow->msg, TCA_FLOWER_KEY_ETH_TYPE, data.eth_type);
}
}
if (mirred && flow) {
@@ -1923,13 +1895,13 @@ static int rss_enable(struct pmd_internals *pmd,
msg->t.tcm_info = TC_H_MAKE(prio << 16, msg->t.tcm_info);
msg->t.tcm_parent = TC_H_MAKE(MULTIQ_MAJOR_HANDLE, 0);
- tap_nlattr_add(&msg->nh, TCA_KIND, sizeof("bpf"), "bpf");
+ tap_nlattr_add(msg, TCA_KIND, sizeof("bpf"), "bpf");
if (tap_nlattr_nested_start(msg, TCA_OPTIONS) < 0)
return -1;
- tap_nlattr_add32(&msg->nh, TCA_BPF_FD, pmd->bpf_fd[i]);
+ tap_nlattr_add32(msg, TCA_BPF_FD, pmd->bpf_fd[i]);
snprintf(annotation, sizeof(annotation), "[%s%d]",
SEC_NAME_CLS_Q, i);
- tap_nlattr_add(&msg->nh, TCA_BPF_NAME, strlen(annotation) + 1,
+ tap_nlattr_add(msg, TCA_BPF_NAME, strlen(annotation) + 1,
annotation);
/* Actions */
{
diff --git a/drivers/net/tap/tap_netlink.c b/drivers/net/tap/tap_netlink.c
index c1f7ff56da..98f48a399a 100644
--- a/drivers/net/tap/tap_netlink.c
+++ b/drivers/net/tap/tap_netlink.c
@@ -292,18 +292,18 @@ retry:
* The data to append.
*/
void
-tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
+tap_nlattr_add(struct nlmsg *msg, unsigned short type,
unsigned int data_len, const void *data)
{
/* see man 3 rtnetlink */
struct rtattr *rta;
- rta = (struct rtattr *)NLMSG_TAIL(nh);
+ rta = (struct rtattr *)NLMSG_TAIL(msg);
rta->rta_len = RTA_LENGTH(data_len);
rta->rta_type = type;
if (data_len > 0)
memcpy(RTA_DATA(rta), data, data_len);
- nh->nlmsg_len = NLMSG_ALIGN(nh->nlmsg_len) + RTA_ALIGN(rta->rta_len);
+ msg->nh.nlmsg_len = NLMSG_ALIGN(msg->nh.nlmsg_len) + RTA_ALIGN(rta->rta_len);
}
/**
@@ -317,9 +317,9 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
* The data to append.
*/
void
-tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data)
+tap_nlattr_add8(struct nlmsg *msg, unsigned short type, uint8_t data)
{
- tap_nlattr_add(nh, type, sizeof(uint8_t), &data);
+ tap_nlattr_add(msg, type, sizeof(uint8_t), &data);
}
/**
@@ -333,9 +333,9 @@ tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data)
* The data to append.
*/
void
-tap_nlattr_add16(struct nlmsghdr *nh, unsigned short type, uint16_t data)
+tap_nlattr_add16(struct nlmsg *msg, unsigned short type, uint16_t data)
{
- tap_nlattr_add(nh, type, sizeof(uint16_t), &data);
+ tap_nlattr_add(msg, type, sizeof(uint16_t), &data);
}
/**
@@ -349,9 +349,9 @@ tap_nlattr_add16(struct nlmsghdr *nh, unsigned short type, uint16_t data)
* The data to append.
*/
void
-tap_nlattr_add32(struct nlmsghdr *nh, unsigned short type, uint32_t data)
+tap_nlattr_add32(struct nlmsg *msg, unsigned short type, uint32_t data)
{
- tap_nlattr_add(nh, type, sizeof(uint32_t), &data);
+ tap_nlattr_add(msg, type, sizeof(uint32_t), &data);
}
/**
@@ -378,9 +378,9 @@ tap_nlattr_nested_start(struct nlmsg *msg, uint16_t type)
return -1;
}
- tail->tail = (struct rtattr *)NLMSG_TAIL(&msg->nh);
+ tail->tail = (struct rtattr *)NLMSG_TAIL(msg);
- tap_nlattr_add(&msg->nh, type, 0, NULL);
+ tap_nlattr_add(msg, type, 0, NULL);
tail->prev = msg->nested_tails;
@@ -403,7 +403,7 @@ tap_nlattr_nested_finish(struct nlmsg *msg)
{
struct nested_tail *tail = msg->nested_tails;
- tail->tail->rta_len = (char *)NLMSG_TAIL(&msg->nh) - (char *)tail->tail;
+ tail->tail->rta_len = (char *)NLMSG_TAIL(msg) - (char *)tail->tail;
if (tail->prev)
msg->nested_tails = tail->prev;
diff --git a/drivers/net/tap/tap_netlink.h b/drivers/net/tap/tap_netlink.h
index faa73ba163..c1493b6bf0 100644
--- a/drivers/net/tap/tap_netlink.h
+++ b/drivers/net/tap/tap_netlink.h
@@ -23,7 +23,7 @@ struct nlmsg {
struct nested_tail *nested_tails;
};
-#define NLMSG_TAIL(nlh) (void *)((char *)(nlh) + NLMSG_ALIGN((nlh)->nlmsg_len))
+#define NLMSG_TAIL(msg) (void *)((char *)(msg) + NLMSG_ALIGN((msg)->nh.nlmsg_len))
int tap_nl_init(uint32_t nl_groups);
int tap_nl_final(int nlsk_fd);
@@ -31,11 +31,11 @@ int tap_nl_send(int nlsk_fd, struct nlmsghdr *nh);
int tap_nl_recv(int nlsk_fd, int (*callback)(struct nlmsghdr *, void *),
void *arg);
int tap_nl_recv_ack(int nlsk_fd);
-void tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
+void tap_nlattr_add(struct nlmsg *msg, unsigned short type,
unsigned int data_len, const void *data);
-void tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data);
-void tap_nlattr_add16(struct nlmsghdr *nh, unsigned short type, uint16_t data);
-void tap_nlattr_add32(struct nlmsghdr *nh, unsigned short type, uint32_t data);
+void tap_nlattr_add8(struct nlmsg *msg, unsigned short type, uint8_t data);
+void tap_nlattr_add16(struct nlmsg *msg, unsigned short type, uint16_t data);
+void tap_nlattr_add32(struct nlmsg *msg, unsigned short type, uint32_t data);
int tap_nlattr_nested_start(struct nlmsg *msg, uint16_t type);
void tap_nlattr_nested_finish(struct nlmsg *msg);
diff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c
index 24a0423a0e..f811deef24 100644
--- a/drivers/net/tap/tap_tcmsgs.c
+++ b/drivers/net/tap/tap_tcmsgs.c
@@ -123,8 +123,8 @@ qdisc_add_multiq(int nlsk_fd, unsigned int ifindex)
NLM_F_REQUEST | NLM_F_ACK | NLM_F_EXCL | NLM_F_CREATE);
msg.t.tcm_handle = TC_H_MAKE(MULTIQ_MAJOR_HANDLE, 0);
msg.t.tcm_parent = TC_H_ROOT;
- tap_nlattr_add(&msg.nh, TCA_KIND, sizeof("multiq"), "multiq");
- tap_nlattr_add(&msg.nh, TCA_OPTIONS, sizeof(opt), &opt);
+ tap_nlattr_add(&msg, TCA_KIND, sizeof("multiq"), "multiq");
+ tap_nlattr_add(&msg, TCA_OPTIONS, sizeof(opt), &opt);
if (tap_nl_send(nlsk_fd, &msg.nh) < 0)
return -1;
if (tap_nl_recv_ack(nlsk_fd) < 0)
@@ -152,7 +152,7 @@ qdisc_add_ingress(int nlsk_fd, unsigned int ifindex)
NLM_F_REQUEST | NLM_F_ACK | NLM_F_EXCL | NLM_F_CREATE);
msg.t.tcm_handle = TC_H_MAKE(TC_H_INGRESS, 0);
msg.t.tcm_parent = TC_H_INGRESS;
- tap_nlattr_add(&msg.nh, TCA_KIND, sizeof("ingress"), "ingress");
+ tap_nlattr_add(&msg, TCA_KIND, sizeof("ingress"), "ingress");
if (tap_nl_send(nlsk_fd, &msg.nh) < 0)
return -1;
if (tap_nl_recv_ack(nlsk_fd) < 0)
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.113834822 +0200
+++ 0079-net-tap-fix-build-with-LTO.patch 2025-12-21 16:54:17.344060000 +0200
@@ -1 +1 @@
-From adb95cc6644103d055609f5bcae5df91afea02ab Mon Sep 17 00:00:00 2001
+From 4f83e9a5d1a8051ce5837585c983a1ace8a35090 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Mon, 22 Sep 2025 09:30:43 +0200
+Date: Wed, 29 Oct 2025 15:27:50 +0100
@@ -5,0 +6,2 @@
+[ upstream commit adb95cc6644103d055609f5bcae5df91afea02ab ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/tap/tap_flow.c | 117 +++++++++++++---------------------
+ drivers/net/tap/tap_flow.c | 124 +++++++++++++---------------------
@@ -23 +24 @@
- 4 files changed, 65 insertions(+), 92 deletions(-)
+ 4 files changed, 68 insertions(+), 96 deletions(-)
@@ -26 +27 @@
-index 373b773e2d..9d4ef27a8a 100644
+index 79cd6a12ca..b32ad7eaa5 100644
@@ -29 +30 @@
-@@ -430,20 +430,16 @@ tap_flow_create_eth(const struct rte_flow_item *item, struct convert_data *info)
+@@ -539,20 +539,16 @@ tap_flow_create_eth(const struct rte_flow_item *item, void *data)
@@ -57 +58 @@
-@@ -498,11 +494,9 @@ tap_flow_create_vlan(const struct rte_flow_item *item, struct convert_data *info
+@@ -608,11 +604,9 @@ tap_flow_create_vlan(const struct rte_flow_item *item, void *data)
@@ -71 +72 @@
-@@ -544,20 +538,15 @@ tap_flow_create_ipv4(const struct rte_flow_item *item, struct convert_data *info
+@@ -655,20 +649,15 @@ tap_flow_create_ipv4(const struct rte_flow_item *item, void *data)
@@ -97 +98 @@
-@@ -599,20 +588,19 @@ tap_flow_create_ipv6(const struct rte_flow_item *item, struct convert_data *info
+@@ -711,20 +700,19 @@ tap_flow_create_ipv6(const struct rte_flow_item *item, void *data)
@@ -100 +101 @@
- if (memcmp(&mask->hdr.dst_addr, empty_addr, 16)) {
+ if (memcmp(mask->hdr.dst_addr, empty_addr, 16)) {
@@ -110 +111 @@
- if (memcmp(&mask->hdr.src_addr, empty_addr, 16)) {
+ if (memcmp(mask->hdr.src_addr, empty_addr, 16)) {
@@ -127 +128 @@
-@@ -649,15 +637,13 @@ tap_flow_create_udp(const struct rte_flow_item *item, struct convert_data *info)
+@@ -762,15 +750,13 @@ tap_flow_create_udp(const struct rte_flow_item *item, void *data)
@@ -146 +147 @@
-@@ -694,15 +680,13 @@ tap_flow_create_tcp(const struct rte_flow_item *item, struct convert_data *info)
+@@ -808,15 +794,13 @@ tap_flow_create_tcp(const struct rte_flow_item *item, void *data)
@@ -165 +166 @@
-@@ -810,37 +794,30 @@ add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
+@@ -924,35 +908,27 @@ add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
@@ -189 +190,4 @@
-- sizeof(adata->skbedit.skbedit), &adata->skbedit.skbedit);
+- sizeof(adata->skbedit.skbedit),
+- &adata->skbedit.skbedit);
+- tap_nlattr_add16(&msg->nh, TCA_SKBEDIT_QUEUE_MAPPING,
+- adata->skbedit.queue);
@@ -192,6 +196 @@
- if (adata->skbedit.mark)
-- tap_nlattr_add32(&msg->nh, TCA_SKBEDIT_MARK, adata->skbedit.mark);
-+ tap_nlattr_add32(msg, TCA_SKBEDIT_MARK, adata->skbedit.mark);
- else
-- tap_nlattr_add16(&msg->nh, TCA_SKBEDIT_QUEUE_MAPPING, adata->skbedit.queue);
-+ tap_nlattr_add16(msg, TCA_SKBEDIT_QUEUE_MAPPING, adata->skbedit.queue);
++ tap_nlattr_add16(msg, TCA_SKBEDIT_QUEUE_MAPPING, adata->skbedit.queue);
@@ -199 +197,0 @@
- #ifdef HAVE_BPF_RSS
@@ -210,3 +208,3 @@
-+ tap_nlattr_add(msg, TCA_ACT_BPF_PARMS, sizeof(adata->bpf.bpf), &adata->bpf.bpf);
- #else
- TAP_LOG(ERR, "Internal error: bpf requested but not supported");
++ tap_nlattr_add(msg, TCA_ACT_BPF_PARMS, sizeof(adata->bpf.bpf),
++ &adata->bpf.bpf);
+ } else {
@@ -214 +212,2 @@
-@@ -975,7 +952,7 @@ priv_flow_process(struct pmd_internals *pmd,
+ }
+@@ -1082,7 +1058,7 @@ priv_flow_process(struct pmd_internals *pmd,
@@ -223 +222 @@
-@@ -1015,15 +992,11 @@ priv_flow_process(struct pmd_internals *pmd,
+@@ -1122,15 +1098,11 @@ priv_flow_process(struct pmd_internals *pmd,
@@ -242,0 +242,17 @@
+@@ -1923,13 +1895,13 @@ static int rss_enable(struct pmd_internals *pmd,
+ msg->t.tcm_info = TC_H_MAKE(prio << 16, msg->t.tcm_info);
+ msg->t.tcm_parent = TC_H_MAKE(MULTIQ_MAJOR_HANDLE, 0);
+
+- tap_nlattr_add(&msg->nh, TCA_KIND, sizeof("bpf"), "bpf");
++ tap_nlattr_add(msg, TCA_KIND, sizeof("bpf"), "bpf");
+ if (tap_nlattr_nested_start(msg, TCA_OPTIONS) < 0)
+ return -1;
+- tap_nlattr_add32(&msg->nh, TCA_BPF_FD, pmd->bpf_fd[i]);
++ tap_nlattr_add32(msg, TCA_BPF_FD, pmd->bpf_fd[i]);
+ snprintf(annotation, sizeof(annotation), "[%s%d]",
+ SEC_NAME_CLS_Q, i);
+- tap_nlattr_add(&msg->nh, TCA_BPF_NAME, strlen(annotation) + 1,
++ tap_nlattr_add(msg, TCA_BPF_NAME, strlen(annotation) + 1,
+ annotation);
+ /* Actions */
+ {
@@ -244 +260 @@
-index 8a57c9242c..5ff60f41d4 100644
+index c1f7ff56da..98f48a399a 100644
@@ -247 +263 @@
-@@ -293,18 +293,18 @@ retry:
+@@ -292,18 +292,18 @@ retry:
@@ -252 +268 @@
-+tap_nlattr_add(struct tap_nlmsg *msg, unsigned short type,
++tap_nlattr_add(struct nlmsg *msg, unsigned short type,
@@ -269 +285 @@
-@@ -318,9 +318,9 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
+@@ -317,9 +317,9 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
@@ -274 +290 @@
-+tap_nlattr_add8(struct tap_nlmsg *msg, unsigned short type, uint8_t data)
++tap_nlattr_add8(struct nlmsg *msg, unsigned short type, uint8_t data)
@@ -281 +297 @@
-@@ -334,9 +334,9 @@ tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data)
+@@ -333,9 +333,9 @@ tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data)
@@ -286 +302 @@
-+tap_nlattr_add16(struct tap_nlmsg *msg, unsigned short type, uint16_t data)
++tap_nlattr_add16(struct nlmsg *msg, unsigned short type, uint16_t data)
@@ -293 +309 @@
-@@ -350,9 +350,9 @@ tap_nlattr_add16(struct nlmsghdr *nh, unsigned short type, uint16_t data)
+@@ -349,9 +349,9 @@ tap_nlattr_add16(struct nlmsghdr *nh, unsigned short type, uint16_t data)
@@ -298 +314 @@
-+tap_nlattr_add32(struct tap_nlmsg *msg, unsigned short type, uint32_t data)
++tap_nlattr_add32(struct nlmsg *msg, unsigned short type, uint32_t data)
@@ -305 +321 @@
-@@ -379,9 +379,9 @@ tap_nlattr_nested_start(struct tap_nlmsg *msg, uint16_t type)
+@@ -378,9 +378,9 @@ tap_nlattr_nested_start(struct nlmsg *msg, uint16_t type)
@@ -317 +333 @@
-@@ -404,7 +404,7 @@ tap_nlattr_nested_finish(struct tap_nlmsg *msg)
+@@ -403,7 +403,7 @@ tap_nlattr_nested_finish(struct nlmsg *msg)
@@ -327 +343 @@
-index 466c47a6d7..5eff6edbb1 100644
+index faa73ba163..c1493b6bf0 100644
@@ -330 +346 @@
-@@ -23,7 +23,7 @@ struct tap_nlmsg {
+@@ -23,7 +23,7 @@ struct nlmsg {
@@ -344 +360 @@
-+void tap_nlattr_add(struct tap_nlmsg *msg, unsigned short type,
++void tap_nlattr_add(struct nlmsg *msg, unsigned short type,
@@ -349,5 +365,5 @@
-+void tap_nlattr_add8(struct tap_nlmsg *msg, unsigned short type, uint8_t data);
-+void tap_nlattr_add16(struct tap_nlmsg *msg, unsigned short type, uint16_t data);
-+void tap_nlattr_add32(struct tap_nlmsg *msg, unsigned short type, uint32_t data);
- int tap_nlattr_nested_start(struct tap_nlmsg *msg, uint16_t type);
- void tap_nlattr_nested_finish(struct tap_nlmsg *msg);
++void tap_nlattr_add8(struct nlmsg *msg, unsigned short type, uint8_t data);
++void tap_nlattr_add16(struct nlmsg *msg, unsigned short type, uint16_t data);
++void tap_nlattr_add32(struct nlmsg *msg, unsigned short type, uint32_t data);
+ int tap_nlattr_nested_start(struct nlmsg *msg, uint16_t type);
+ void tap_nlattr_nested_finish(struct nlmsg *msg);
@@ -356 +372 @@
-index caca9445c8..c32f0ff815 100644
+index 24a0423a0e..f811deef24 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/hns3: fix VLAN tag loss for short tunnel frame' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (77 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/tap: fix build with LTO' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'ethdev: fix VLAN filter parameter description' " Shani Peretz
` (12 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Xingui Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/f6369cf96143d89a2fa00584b4a2a5da54abf421
Thanks.
Shani
---
From f6369cf96143d89a2fa00584b4a2a5da54abf421 Mon Sep 17 00:00:00 2001
From: Xingui Yang <yangxingui@huawei.com>
Date: Mon, 29 Sep 2025 19:35:53 +0800
Subject: [PATCH] net/hns3: fix VLAN tag loss for short tunnel frame
[ upstream commit 2262fc29485bd863db55e820a194bf1e4be8a87c ]
When the hardware handles short tunnel frames below 65 bytes, the VLAN tag
will be lost if VLAN insert or QinQ insert is enabled. Therefore, the
packet size of the tunnel frame is padded to 65 bytes to fix this issue.
Fixes: de620754a109 ("net/hns3: fix sending packets less than 60 bytes")
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.h | 1 +
drivers/net/hns3/hns3_rxtx.c | 48 +++++++++++++++++++++++-----------
2 files changed, 34 insertions(+), 15 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 1b105dc5ca..d856285505 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -78,6 +78,7 @@
#define HNS3_DEFAULT_MTU 1500UL
#define HNS3_DEFAULT_FRAME_LEN (HNS3_DEFAULT_MTU + HNS3_ETH_OVERHEAD)
#define HNS3_HIP08_MIN_TX_PKT_LEN 33
+#define HNS3_MIN_TUN_PKT_LEN 65
#define HNS3_BITS_PER_BYTE 8
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 909f69fbfe..dc21b7dd6f 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -4246,6 +4246,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
}
}
+static bool
+hns3_tx_pktmbuf_append(struct hns3_tx_queue *txq,
+ struct rte_mbuf *tx_pkt)
+{
+ uint16_t add_len = 0;
+ uint32_t ptype;
+ char *appended;
+
+ if (unlikely(tx_pkt->ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ) &&
+ rte_pktmbuf_pkt_len(tx_pkt) < HNS3_MIN_TUN_PKT_LEN)) {
+ ptype = rte_net_get_ptype(tx_pkt, NULL, RTE_PTYPE_L2_MASK |
+ RTE_PTYPE_L3_MASK | RTE_PTYPE_L4_MASK |
+ RTE_PTYPE_TUNNEL_MASK);
+ if (ptype & RTE_PTYPE_TUNNEL_MASK)
+ add_len = HNS3_MIN_TUN_PKT_LEN - rte_pktmbuf_pkt_len(tx_pkt);
+ } else if (unlikely(rte_pktmbuf_pkt_len(tx_pkt) < txq->min_tx_pkt_len)) {
+ add_len = txq->min_tx_pkt_len - rte_pktmbuf_pkt_len(tx_pkt);
+ }
+
+ if (unlikely(add_len > 0)) {
+ appended = rte_pktmbuf_append(tx_pkt, add_len);
+ if (appended == NULL) {
+ txq->dfx_stats.pkt_padding_fail_cnt++;
+ return false;
+ }
+ memset(appended, 0, add_len);
+ }
+
+ return true;
+}
+
uint16_t
hns3_xmit_pkts_simple(void *tx_queue,
struct rte_mbuf **tx_pkts,
@@ -4323,21 +4354,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
* by hardware in Tx direction, driver need to pad it to avoid
* error.
*/
- if (unlikely(rte_pktmbuf_pkt_len(tx_pkt) <
- txq->min_tx_pkt_len)) {
- uint16_t add_len;
- char *appended;
-
- add_len = txq->min_tx_pkt_len -
- rte_pktmbuf_pkt_len(tx_pkt);
- appended = rte_pktmbuf_append(tx_pkt, add_len);
- if (appended == NULL) {
- txq->dfx_stats.pkt_padding_fail_cnt++;
- break;
- }
-
- memset(appended, 0, add_len);
- }
+ if (!hns3_tx_pktmbuf_append(txq, tx_pkt))
+ break;
m_seg = tx_pkt;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.162155139 +0200
+++ 0080-net-hns3-fix-VLAN-tag-loss-for-short-tunnel-frame.patch 2025-12-21 16:54:17.357039000 +0200
@@ -1 +1 @@
-From 2262fc29485bd863db55e820a194bf1e4be8a87c Mon Sep 17 00:00:00 2001
+From f6369cf96143d89a2fa00584b4a2a5da54abf421 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2262fc29485bd863db55e820a194bf1e4be8a87c ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index f6bb1b5d43..209b042816 100644
+index 1b105dc5ca..d856285505 100644
@@ -23 +24 @@
-@@ -75,6 +75,7 @@
+@@ -78,6 +78,7 @@
@@ -32 +33 @@
-index aa7ee6f3e8..df703134be 100644
+index 909f69fbfe..dc21b7dd6f 100644
@@ -35 +36 @@
-@@ -4219,6 +4219,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
+@@ -4246,6 +4246,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
@@ -73 +74 @@
-@@ -4296,21 +4327,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -4323,21 +4354,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'ethdev: fix VLAN filter parameter description' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (78 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix file descriptor leak on read error' " Shani Peretz
` (11 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/93d63628fbe4ce56faa847a83f08bdf45a6883a2
Thanks.
Shani
---
From 93d63628fbe4ce56faa847a83f08bdf45a6883a2 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 3 Oct 2025 12:09:44 +0100
Subject: [PATCH] ethdev: fix VLAN filter parameter description
[ upstream commit f7eaa9063561a130badc978f2dfe49536904c907 ]
The description of the rx_queue_id parameter was copy-pasted from the
queue mapping function without being updated. Fix the text.
Fixes: 81f9db8ecc2c ("ethdev: add vlan offload support")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/ethdev/rte_ethdev.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index 089bf3626d..df162abbc7 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -3583,7 +3583,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
* @param port_id
* The port identifier of the Ethernet device.
* @param rx_queue_id
- * The index of the receive queue for which a queue stats mapping is required.
+ * The index of the receive queue on which to enable/disable VLAN stripping.
* The value must be in the range [0, nb_rx_queue - 1] previously supplied
* to rte_eth_dev_configure().
* @param on
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.210052742 +0200
+++ 0081-ethdev-fix-VLAN-filter-parameter-description.patch 2025-12-21 16:54:17.367100000 +0200
@@ -1 +1 @@
-From f7eaa9063561a130badc978f2dfe49536904c907 Mon Sep 17 00:00:00 2001
+From 93d63628fbe4ce56faa847a83f08bdf45a6883a2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f7eaa9063561a130badc978f2dfe49536904c907 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 091e0dad6e..2b7b195756 100644
+index 089bf3626d..df162abbc7 100644
@@ -21 +22 @@
-@@ -3771,7 +3771,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
+@@ -3583,7 +3583,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix file descriptor leak on read error' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (79 preceding siblings ...)
2025-12-21 14:57 ` patch 'ethdev: fix VLAN filter parameter description' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Shani Peretz
` (10 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/a3476cd26fb5301f31a77fb18fc31e19be731aa2
Thanks.
Shani
---
From a3476cd26fb5301f31a77fb18fc31e19be731aa2 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:00 +0530
Subject: [PATCH] net/enetfec: fix file descriptor leak on read error
[ upstream commit 2e503215692e8ab50e473e963ec58d5ab714a375 ]
The file descriptor was not closed when a read error occurred while
reading the first line from a UIO device file. This could lead to
resource leakage. The patch ensures the descriptor is closed in
case of read failure.
Fixes: b84fdd39638b ("net/enetfec: support UIO")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_uio.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/enetfec/enet_uio.c b/drivers/net/enetfec/enet_uio.c
index 9f4e896985..23cb4e7e93 100644
--- a/drivers/net/enetfec/enet_uio.c
+++ b/drivers/net/enetfec/enet_uio.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021 NXP
+ * Copyright 2021,2024 NXP
*/
#include <stdbool.h>
@@ -66,13 +66,16 @@ file_read_first_line(const char root[], const char subdir[],
"%s/%s/%s", root, subdir, filename);
fd = open(absolute_file_name, O_RDONLY);
- if (fd <= 0)
+ if (fd < 0) {
ENETFEC_PMD_ERR("Error opening file %s", absolute_file_name);
+ return fd;
+ }
/* read UIO device name from first line in file */
ret = read(fd, line, FEC_UIO_MAX_DEVICE_FILE_NAME_LENGTH);
if (ret <= 0) {
ENETFEC_PMD_ERR("Error reading file %s", absolute_file_name);
+ close(fd);
return ret;
}
close(fd);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.259275984 +0200
+++ 0082-net-enetfec-fix-file-descriptor-leak-on-read-error.patch 2025-12-21 16:54:17.372078000 +0200
@@ -1 +1 @@
-From 2e503215692e8ab50e473e963ec58d5ab714a375 Mon Sep 17 00:00:00 2001
+From a3476cd26fb5301f31a77fb18fc31e19be731aa2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2e503215692e8ab50e473e963ec58d5ab714a375 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix out-of-bounds access in UIO mapping' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (80 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix file descriptor leak on read error' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Shani Peretz
` (9 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Vanshika Shukla; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/77183e708c0b60ce5ae5472af176e05cd5c98909
Thanks.
Shani
---
From 77183e708c0b60ce5ae5472af176e05cd5c98909 Mon Sep 17 00:00:00 2001
From: Vanshika Shukla <vanshika.shukla@nxp.com>
Date: Mon, 6 Oct 2025 13:34:01 +0530
Subject: [PATCH] net/enetfec: fix out-of-bounds access in UIO mapping
[ upstream commit 22b0837bd93a777b8ca7fcf234985175e456a4f5 ]
NXP internal Coverity flagged a potential out-of-bounds
access due to invalid mapping size. This patch adds a check to
ensure the mapping size is within valid bounds before proceeding
with memory mapping.
Fixes: b84fdd39638b ("net/enetfec: support UIO")
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_uio.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_uio.c b/drivers/net/enetfec/enet_uio.c
index 23cb4e7e93..f32d5e1b1e 100644
--- a/drivers/net/enetfec/enet_uio.c
+++ b/drivers/net/enetfec/enet_uio.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021,2024 NXP
+ * Copyright 2021,2024-2025 NXP
*/
#include <stdbool.h>
@@ -142,6 +142,10 @@ uio_map_mem(int uio_device_fd, int uio_device_id,
}
/* Read mapping size and physical address expressed in hexa(base 16) */
uio_map_size = strtol(uio_map_size_str, NULL, 16);
+ if (uio_map_size <= 0 || uio_map_size > INT_MAX) {
+ ENETFEC_PMD_ERR("Invalid mapping size: %u.", uio_map_size);
+ return NULL;
+ }
uio_map_p_addr = strtol(uio_map_p_addr_str, NULL, 16);
if (uio_map_id == 0) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.304962322 +0200
+++ 0083-net-enetfec-fix-out-of-bounds-access-in-UIO-mapping.patch 2025-12-21 16:54:17.377096000 +0200
@@ -1 +1 @@
-From 22b0837bd93a777b8ca7fcf234985175e456a4f5 Mon Sep 17 00:00:00 2001
+From 77183e708c0b60ce5ae5472af176e05cd5c98909 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 22b0837bd93a777b8ca7fcf234985175e456a4f5 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix buffer descriptor size configuration' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (81 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix Tx queue free' " Shani Peretz
` (8 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/8b8aa4347b5042ae5bf5420683d2dac165e89461
Thanks.
Shani
---
From 8b8aa4347b5042ae5bf5420683d2dac165e89461 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:02 +0530
Subject: [PATCH] net/enetfec: fix buffer descriptor size configuration
[ upstream commit f034c096b86ed79345cc1f83c6191713b2814fb0 ]
The driver previously allowed arbitrary descriptor counts, which could
lead to misaligned buffer allocations. This patch enforces the use of
fixed descriptor ring sizes for both RX and TX queues, ensuring proper
buffer allocation and avoiding potential runtime issues.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index 10620aed86..eab0e34f07 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -389,7 +389,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
}
- if (nb_desc > MAX_TX_BD_RING_SIZE) {
+ if (nb_desc != MAX_TX_BD_RING_SIZE) {
nb_desc = MAX_TX_BD_RING_SIZE;
ENETFEC_PMD_WARN("modified the nb_desc to MAX_TX_BD_RING_SIZE");
}
@@ -473,7 +473,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
}
- if (nb_rx_desc > MAX_RX_BD_RING_SIZE) {
+ if (nb_rx_desc != MAX_RX_BD_RING_SIZE) {
nb_rx_desc = MAX_RX_BD_RING_SIZE;
ENETFEC_PMD_WARN("modified the nb_desc to MAX_RX_BD_RING_SIZE");
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.355258089 +0200
+++ 0084-net-enetfec-fix-buffer-descriptor-size-configuration.patch 2025-12-21 16:54:17.384167000 +0200
@@ -1 +1 @@
-From f034c096b86ed79345cc1f83c6191713b2814fb0 Mon Sep 17 00:00:00 2001
+From 8b8aa4347b5042ae5bf5420683d2dac165e89461 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f034c096b86ed79345cc1f83c6191713b2814fb0 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 7c2926409e..f7a45fcd4d 100644
+index 10620aed86..eab0e34f07 100644
@@ -24 +25 @@
-@@ -384,7 +384,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -389,7 +389,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
@@ -33 +34 @@
-@@ -462,7 +462,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -473,7 +473,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix Tx queue free' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (82 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix checksum flag handling and error return' " Shani Peretz
` (7 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/88ff720de188654416308995eb03ec9eb1b97ed7
Thanks.
Shani
---
From 88ff720de188654416308995eb03ec9eb1b97ed7 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:03 +0530
Subject: [PATCH] net/enetfec: fix Tx queue free
[ upstream commit f0aa80200d87e38a613af1181a2b1048bd512c76 ]
The TX queue cleanup mistakenly freed RX queue pointers instead of TX
queue pointers. This patch corrects the loop to free the correct memory.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index eab0e34f07..06624717ff 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -349,7 +349,7 @@ enet_free_queue(struct rte_eth_dev *dev)
for (i = 0; i < dev->data->nb_rx_queues; i++)
rte_free(fep->rx_queues[i]);
for (i = 0; i < dev->data->nb_tx_queues; i++)
- rte_free(fep->rx_queues[i]);
+ rte_free(fep->tx_queues[i]);
}
static const unsigned short offset_des_active_rxq[] = {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.396246441 +0200
+++ 0085-net-enetfec-fix-Tx-queue-free.patch 2025-12-21 16:54:17.391056000 +0200
@@ -1 +1 @@
-From f0aa80200d87e38a613af1181a2b1048bd512c76 Mon Sep 17 00:00:00 2001
+From 88ff720de188654416308995eb03ec9eb1b97ed7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f0aa80200d87e38a613af1181a2b1048bd512c76 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f7a45fcd4d..16f36a53f1 100644
+index eab0e34f07..06624717ff 100644
@@ -22 +23 @@
-@@ -350,7 +350,7 @@ enet_free_queue(struct rte_eth_dev *dev)
+@@ -349,7 +349,7 @@ enet_free_queue(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix checksum flag handling and error return' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (83 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix Tx queue free' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: reject multi-queue configuration' " Shani Peretz
` (6 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/071e43f525df7567bfeda3eb15e39d8acec55e6d
Thanks.
Shani
---
From 071e43f525df7567bfeda3eb15e39d8acec55e6d Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:04 +0530
Subject: [PATCH] net/enetfec: fix checksum flag handling and error return
[ upstream commit b35089c52802378ed267717f069aa57cb8dce5d2 ]
- Corrects the logic for setting RX checksum flags based on error.
- Updates TX checksum offload condition to check for TX flags.
- Fixes incorrect error return in RX queue setup by replacing `errno`
with `-ENOMEM`.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_rxtx.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/enetfec/enet_rxtx.c b/drivers/net/enetfec/enet_rxtx.c
index 0aea8b240d..ea2c28a26b 100644
--- a/drivers/net/enetfec/enet_rxtx.c
+++ b/drivers/net/enetfec/enet_rxtx.c
@@ -121,10 +121,11 @@ enetfec_recv_pkts(void *rxq1, struct rte_mbuf **rx_pkts,
(rxq->fep->flag_csum & RX_FLAG_CSUM_EN)) {
if ((rte_read32(&ebdp->bd_esc) &
rte_cpu_to_le_32(RX_FLAG_CSUM_ERR)) == 0) {
- /* don't check it */
- mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_BAD;
- } else {
+ /* No checksum error - checksum is good */
mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_GOOD;
+ } else {
+ /* Checksum error detected */
+ mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_BAD;
}
}
@@ -238,7 +239,8 @@ enetfec_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
if (txq->fep->bufdesc_ex) {
struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
- if (mbuf->ol_flags == RTE_MBUF_F_RX_IP_CKSUM_GOOD)
+ if (mbuf->ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_TCP_CKSUM |
+ RTE_MBUF_F_TX_UDP_CKSUM | RTE_MBUF_F_TX_SCTP_CKSUM))
estatus |= TX_BD_PINS | TX_BD_IINS;
rte_write32(0, &ebdp->bd_bdu);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.437518910 +0200
+++ 0086-net-enetfec-fix-checksum-flag-handling-and-error-ret.patch 2025-12-21 16:54:17.396079000 +0200
@@ -1 +1 @@
-From b35089c52802378ed267717f069aa57cb8dce5d2 Mon Sep 17 00:00:00 2001
+From 071e43f525df7567bfeda3eb15e39d8acec55e6d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b35089c52802378ed267717f069aa57cb8dce5d2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: reject multi-queue configuration' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (84 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix checksum flag handling and error return' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Shani Peretz
` (5 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/d3d9402482a3e46c8e74c374f30408d84161b643
Thanks.
Shani
---
From d3d9402482a3e46c8e74c374f30408d84161b643 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:05 +0530
Subject: [PATCH] net/enetfec: reject multi-queue configuration
[ upstream commit b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 ]
The enetfec PMD currently supports only a single TX queue. This patch
adds a check to prevent users from configuring more than one queue,
ensuring predictable behavior and avoiding unsupported configurations.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index 06624717ff..dbc3bf0822 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021 NXP
+ * Copyright 2020-2021,2023 NXP
*/
#include <inttypes.h>
@@ -382,6 +382,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -EINVAL;
}
+ if (queue_idx > 0) {
+ ENETFEC_PMD_ERR("Multi queue not supported");
+ return -EINVAL;
+ }
+
/* allocate transmit queue */
txq = rte_zmalloc(NULL, sizeof(*txq), RTE_CACHE_LINE_SIZE);
if (txq == NULL) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.477682731 +0200
+++ 0087-net-enetfec-reject-multi-queue-configuration.patch 2025-12-21 16:54:17.403080000 +0200
@@ -1 +1 @@
-From b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 Mon Sep 17 00:00:00 2001
+From d3d9402482a3e46c8e74c374f30408d84161b643 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 16f36a53f1..bcecab828e 100644
+index 06624717ff..dbc3bf0822 100644
@@ -30,3 +31,3 @@
-@@ -377,6 +377,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
- sizeof(struct bufdesc);
- unsigned int dsize_log2 = rte_fls_u64(dsize) - 1;
+@@ -382,6 +382,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+ return -EINVAL;
+ }
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: fix memory leak in Rx buffer cleanup' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (85 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: reject multi-queue configuration' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: reject Tx deferred queue' " Shani Peretz
` (4 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/630bbade65b566d92c2e7d58cfe7288b00d96767
Thanks.
Shani
---
From 630bbade65b566d92c2e7d58cfe7288b00d96767 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:06 +0530
Subject: [PATCH] net/enetfec: fix memory leak in Rx buffer cleanup
[ upstream commit 979d00728b01a77f8f67f46c7cb06e2628542d29 ]
The RX buffer cleanup logic did not check for NULL before freeing mbufs,
which could lead to undefined behavior. This patch adds a NULL check
before freeing each mbuf.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index dbc3bf0822..43e831cc78 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021,2023 NXP
+ * Copyright 2020-2021,2023-2024 NXP
*/
#include <inttypes.h>
@@ -171,8 +171,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
bdp = rxq->bd.base;
for (i = 0; i < rxq->bd.ring_size; i++) {
mbuf = rxq->rx_mbuf[i];
- rxq->rx_mbuf[i] = NULL;
- rte_pktmbuf_free(mbuf);
+ if (mbuf) {
+ rxq->rx_mbuf[i] = NULL;
+ rte_pktmbuf_free(mbuf);
+ }
bdp = enet_get_nextdesc(bdp, &rxq->bd);
}
}
@@ -558,7 +560,7 @@ err_alloc:
}
}
rte_free(rxq);
- return errno;
+ return -ENOMEM;
}
static const struct eth_dev_ops enetfec_ops = {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.518244883 +0200
+++ 0088-net-enetfec-fix-memory-leak-in-Rx-buffer-cleanup.patch 2025-12-21 16:54:17.411034000 +0200
@@ -1 +1 @@
-From 979d00728b01a77f8f67f46c7cb06e2628542d29 Mon Sep 17 00:00:00 2001
+From 630bbade65b566d92c2e7d58cfe7288b00d96767 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 979d00728b01a77f8f67f46c7cb06e2628542d29 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index bcecab828e..60bb4f7ebd 100644
+index dbc3bf0822..43e831cc78 100644
@@ -30 +31 @@
-@@ -172,8 +172,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
+@@ -171,8 +171,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
@@ -43 +44 @@
-@@ -547,7 +549,7 @@ err_alloc:
+@@ -558,7 +560,7 @@ err_alloc:
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/enetfec: reject Tx deferred queue' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (86 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/tap: fix interrupt callback crash after failed start' " Shani Peretz
` (3 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/a1fd311b61258b24d83c0f7e6c259052ae801d8d
Thanks.
Shani
---
From a1fd311b61258b24d83c0f7e6c259052ae801d8d Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:07 +0530
Subject: [PATCH] net/enetfec: reject Tx deferred queue
[ upstream commit dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 ]
This patch adds a check to reject configuration of Tx deferred start,
which is not supported by the enetfec PMD. This ensures that unsupported
features are explicitly handled and reported.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index 43e831cc78..2fa7025aac 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -389,6 +389,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -EINVAL;
}
+ /* Tx deferred start is not supported */
+ if (tx_conf->tx_deferred_start) {
+ ENETFEC_PMD_ERR("Tx deferred start not supported");
+ return -EINVAL;
+ }
+
/* allocate transmit queue */
txq = rte_zmalloc(NULL, sizeof(*txq), RTE_CACHE_LINE_SIZE);
if (txq == NULL) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.559584923 +0200
+++ 0089-net-enetfec-reject-Tx-deferred-queue.patch 2025-12-21 16:54:17.417070000 +0200
@@ -1 +1 @@
-From dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 Mon Sep 17 00:00:00 2001
+From a1fd311b61258b24d83c0f7e6c259052ae801d8d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 60bb4f7ebd..6d4d3e0fc2 100644
+index 43e831cc78..2fa7025aac 100644
@@ -23 +24 @@
-@@ -384,6 +384,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -389,6 +389,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/tap: fix interrupt callback crash after failed start' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (87 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/enetfec: reject Tx deferred queue' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Shani Peretz
` (2 subsequent siblings)
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Robin Jarry; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/d9aac4ce84415a42fca9a14bc39b80ca2ff7d0cb
Thanks.
Shani
---
From d9aac4ce84415a42fca9a14bc39b80ca2ff7d0cb Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Fri, 17 Oct 2025 14:19:47 +0200
Subject: [PATCH] net/tap: fix interrupt callback crash after failed start
[ upstream commit c44ed082917316257dbeb2454414932d39f9c321 ]
After moving a tap linux net device to a different namespace,
tap_link_set_up fails with an -ENODEV error. Indeed it relies on an
ioctl call using the interface name as argument:
/* with ifr->ifrn_name = "dtapX" */
ioctl(pmd->ioctl_sock, SIOCGIFFLAGS, ifr)
This causes rte_eth_dev_stop() to do nothing since the device is not
seen as started. And then, when removing the device, the interrupt
callbacks are left there.
If they are invoked, they will be so with a "freed" device pointer:
Thread 2 "dpdk-intr" hit Breakpoint 1, tap_dev_intr_handler
at ../drivers/net/tap/rte_eth_tap.c:1689
1689 struct pmd_internals *pmd = dev->data->dev_private;
(gdb) p *dev
$2 = {
...
data = 0x0,
...
state = RTE_ETH_DEV_UNUSED,
security_ctx = 0x0
}
This causes a crash when dereferencing the data pointer.
When tap_link_set_up fails, ensure to unregister the interrupt callbacks
that were just reinstalled.
Fixes: c0bddd3a057f ("net/tap: add link status notification")
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
drivers/net/tap/rte_eth_tap.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 93bba3cec1..45970ca0de 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -893,8 +893,10 @@ tap_dev_start(struct rte_eth_dev *dev)
return err;
err = tap_link_set_up(dev);
- if (err)
+ if (err) {
+ tap_intr_handle_set(dev, 0);
return err;
+ }
for (i = 0; i < dev->data->nb_tx_queues; i++)
dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.599860655 +0200
+++ 0090-net-tap-fix-interrupt-callback-crash-after-failed-st.patch 2025-12-21 16:54:17.424060000 +0200
@@ -1 +1 @@
-From c44ed082917316257dbeb2454414932d39f9c321 Mon Sep 17 00:00:00 2001
+From d9aac4ce84415a42fca9a14bc39b80ca2ff7d0cb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c44ed082917316257dbeb2454414932d39f9c321 ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
@@ -45 +46 @@
-index 650ddbd706..58d70f7dd6 100644
+index 93bba3cec1..45970ca0de 100644
@@ -48 +49 @@
-@@ -889,8 +889,10 @@ tap_dev_start(struct rte_eth_dev *dev)
+@@ -893,8 +893,10 @@ tap_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ena: fix PCI BAR mapping on 64K page size' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (88 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/tap: fix interrupt callback crash after failed start' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Shani Peretz
2025-12-21 14:57 ` patch 'net/dpaa2: fix uninitialized variable' " Shani Peretz
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/3b15d3623a511eee0c9dd55fbc9a6e2e13f8f7ef
Thanks.
Shani
---
From 3b15d3623a511eee0c9dd55fbc9a6e2e13f8f7ef Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Wed, 15 Oct 2025 15:09:16 +0300
Subject: [PATCH] net/ena: fix PCI BAR mapping on 64K page size
[ upstream commit c71e3fbee65637084e1e42500e9e6300d50f467b ]
On 64K page systems, DPDK `pci_uio` driver aligns the physical address
to a 64K boundary before assigning a virtual address.
If the original physical BAR address is not 64K-aligned,
this adjustment leads to an incorrect mapping.
This patch ensures the BAR virtual address received in the driver accounts
for both PAGE size and BAR physical offset to correctly map each BAR.
The fix is compatible for every PAGE size, applies to every used BAR,
and supports both 32/64 bit DPDK builds.
Example issue:
- BAR0 physical address: 0x80208000 (not 64K-aligned)
- DPDK aligned physical address: 0x80208000 -> 0x80200000
(masking 0x8000 offset)
- DPDK mapped physical to virtual address: 0x80200000 -> 0x1140000000
- Driver accessed BAR0 virtual address = 0x1140000000
(causing init failure)
- Resolution is to add correct offset to driver BAR0 address:
0x1140000000 + 0x8000
Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Signed-off-by: Amit Bernstein <amitbern@amazon.com>
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index f3962aa76e..50cc4b76d1 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -8,6 +8,7 @@
#include <rte_version.h>
#include <rte_net.h>
#include <rte_kvargs.h>
+#include <rte_eal_paging.h>
#include "ena_ethdev.h"
#include "ena_logs.h"
@@ -2165,6 +2166,24 @@ static int ena_init_once(void)
return 0;
}
+/*
+ * Returns PCI BAR virtual address.
+ * If the physical address is not page-aligned,
+ * adjusts the virtual address by the page offset.
+ * Assumes page size is a power of 2.
+ */
+static void *pci_bar_addr(struct rte_pci_device *dev, uint32_t bar)
+{
+ const struct rte_mem_resource *res = &dev->mem_resource[bar];
+ size_t offset = res->phys_addr % rte_mem_page_size();
+ void *vaddr = RTE_PTR_ADD(res->addr, offset);
+
+ PMD_INIT_LOG(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p",
+ bar, res->phys_addr, res->addr, offset, vaddr);
+
+ return vaddr;
+}
+
static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
{
struct ena_calc_queue_size_ctx calc_queue_ctx = { 0 };
@@ -2209,16 +2228,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
intr_handle = pci_dev->intr_handle;
- adapter->regs = pci_dev->mem_resource[ENA_REGS_BAR].addr;
- adapter->dev_mem_base = pci_dev->mem_resource[ENA_MEM_BAR].addr;
-
+ adapter->regs = pci_bar_addr(pci_dev, ENA_REGS_BAR);
if (!adapter->regs) {
PMD_INIT_LOG(CRIT, "Failed to access registers BAR(%d)\n",
ENA_REGS_BAR);
return -ENXIO;
}
-
ena_dev->reg_bar = adapter->regs;
+
+ /* Memory BAR may be NULL on non LLQ supported devices */
+ adapter->dev_mem_base = pci_bar_addr(pci_dev, ENA_MEM_BAR);
+
/* Pass device data as a pointer which can be passed to the IO functions
* by the ena_com (for example - the memory allocation).
*/
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.642086941 +0200
+++ 0091-net-ena-fix-PCI-BAR-mapping-on-64K-page-size.patch 2025-12-21 16:54:17.432055000 +0200
@@ -1 +1 @@
-From c71e3fbee65637084e1e42500e9e6300d50f467b Mon Sep 17 00:00:00 2001
+From 3b15d3623a511eee0c9dd55fbc9a6e2e13f8f7ef Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c71e3fbee65637084e1e42500e9e6300d50f467b ]
+
@@ -27 +28,0 @@
-Cc: stable@dpdk.org
@@ -33,16 +34,3 @@
- doc/guides/rel_notes/release_25_11.rst | 1 +
- drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++----
- 2 files changed, 25 insertions(+), 4 deletions(-)
-
-diff --git a/doc/guides/rel_notes/release_25_11.rst b/doc/guides/rel_notes/release_25_11.rst
-index 94e5182016..863d111c8d 100644
---- a/doc/guides/rel_notes/release_25_11.rst
-+++ b/doc/guides/rel_notes/release_25_11.rst
-@@ -109,6 +109,7 @@ New Features
- * **Updated Amazon ENA (Elastic Network Adapter) ethernet driver.**
-
- * Added support for retrieving HW timestamps for Rx packets with nanosecond resolution.
-+ * Fixed PCI BAR mapping on 64K page size.
-
- * **Added Huawei hinic3 ethernet driver.**
-
+ drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
@@ -50 +38 @@
-index 5147a754b2..aaa4feb11b 100644
+index f3962aa76e..50cc4b76d1 100644
@@ -53 +41 @@
-@@ -9,6 +9,7 @@
+@@ -8,6 +8,7 @@
@@ -61 +49 @@
-@@ -2364,6 +2365,24 @@ static int ena_init_once(void)
+@@ -2165,6 +2166,24 @@ static int ena_init_once(void)
@@ -77 +65 @@
-+ PMD_INIT_LOG_LINE(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p",
++ PMD_INIT_LOG(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p",
@@ -86 +74 @@
-@@ -2409,16 +2428,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2209,16 +2228,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
@@ -95 +83 @@
- PMD_INIT_LOG_LINE(CRIT, "Failed to access registers BAR(%d)",
+ PMD_INIT_LOG(CRIT, "Failed to access registers BAR(%d)\n",
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ena/base: fix unsafe memcpy on invalid memory' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (89 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-21 14:57 ` patch 'net/dpaa2: fix uninitialized variable' " Shani Peretz
91 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/e77a5fb38b627e5041d01e45bb8c1623d5ed6a66
Thanks.
Shani
---
From e77a5fb38b627e5041d01e45bb8c1623d5ed6a66 Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Wed, 15 Oct 2025 15:12:30 +0300
Subject: [PATCH] net/ena/base: fix unsafe memcpy on invalid memory
[ upstream commit b70db0912a6a181ecf513a4eef61153d1063c0ae ]
The return status check was placed after a memcpy operation,
which could result in copying from an invalid memory region
if the feature fetch failed.
Fixes: b68309be44c0 ("net/ena/base: update communication layer for the ENAv2")
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
drivers/net/ena/base/ena_com.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c
index 2f438597e6..5fea17c989 100644
--- a/drivers/net/ena/base/ena_com.c
+++ b/drivers/net/ena/base/ena_com.c
@@ -2277,13 +2277,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
} else {
rc = ena_com_get_feature(ena_dev, &get_resp,
ENA_ADMIN_MAX_QUEUES_NUM, 0);
+ if (rc)
+ return rc;
+
memcpy(&get_feat_ctx->max_queues, &get_resp.u.max_queue,
sizeof(get_resp.u.max_queue));
ena_dev->tx_max_header_size =
get_resp.u.max_queue.max_header_size;
-
- if (rc)
- return rc;
}
rc = ena_com_get_feature(ena_dev, &get_resp,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.690090212 +0200
+++ 0092-net-ena-base-fix-unsafe-memcpy-on-invalid-memory.patch 2025-12-21 16:54:17.440027000 +0200
@@ -1 +1 @@
-From b70db0912a6a181ecf513a4eef61153d1063c0ae Mon Sep 17 00:00:00 2001
+From e77a5fb38b627e5041d01e45bb8c1623d5ed6a66 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b70db0912a6a181ecf513a4eef61153d1063c0ae ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index ede3c06139..f0936a6262 100644
+index 2f438597e6..5fea17c989 100644
@@ -24 +25 @@
-@@ -2453,13 +2453,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
+@@ -2277,13 +2277,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: fix uninitialized variable' has been queued to stable release 23.11.6
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
` (90 preceding siblings ...)
2025-12-21 14:57 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Shani Peretz
@ 2025-12-21 14:57 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
91 siblings, 1 reply; 195+ messages in thread
From: Shani Peretz @ 2025-12-21 14:57 UTC (permalink / raw)
To: Prashant Gupta; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/26/25. 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/0287d887b0e6b8dc6b832ab354790870bcea281e
Thanks.
Shani
---
From 0287d887b0e6b8dc6b832ab354790870bcea281e Mon Sep 17 00:00:00 2001
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Date: Thu, 16 Oct 2025 15:57:51 +0530
Subject: [PATCH] net/dpaa2: fix uninitialized variable
[ upstream commit 058043d0590f52dd45555a362d31646c7c3ff943 ]
Initialize the kg_cfg structure before use in
rte_pmd_dpaa2_set_custom_hash(). This resolves an issue with
uninitialized memory access.
Fixes: 5f822962498e ("net/dpaa2: support custom hash key")
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
.mailmap | 1 +
drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 0755666658..c691fac4ce 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1161,6 +1161,7 @@ Piotr Pietruszewski <piotr.pietruszewski@intel.com>
Piotr Skajewski <piotrx.skajewski@intel.com>
Pradeep Satyanarayana <pradeep@us.ibm.com>
Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
+Prashant Gupta <prashant.gupta_3@nxp.com>
Prashant Upadhyaya <prashant.upadhyaya@aricent.com> <praupadhyaya@gmail.com>
Prateek Agarwal <prateekag@cse.iitb.ac.in>
Praveen Kaligineedi <pkaligineedi@google.com>
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
index 4d33b51fea..2f3270fe29 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2021 NXP
+ * Copyright 2016-2021,2023-2025 NXP
*
*/
@@ -59,6 +59,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
return -ENOMEM;
}
+ memset(&kg_cfg, 0, sizeof(struct dpkg_profile_cfg));
kg_cfg.extracts[0].type = DPKG_EXTRACT_FROM_DATA;
kg_cfg.extracts[0].extract.from_data.offset = offset;
kg_cfg.extracts[0].extract.from_data.size = size;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-21 16:54:21.733717048 +0200
+++ 0093-net-dpaa2-fix-uninitialized-variable.patch 2025-12-21 16:54:17.448064000 +0200
@@ -1 +1 @@
-From 058043d0590f52dd45555a362d31646c7c3ff943 Mon Sep 17 00:00:00 2001
+From 0287d887b0e6b8dc6b832ab354790870bcea281e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 058043d0590f52dd45555a362d31646c7c3ff943 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 984621f26b..68bebe2ee0 100644
+index 0755666658..c691fac4ce 100644
@@ -23,2 +24,2 @@
-@@ -1266,6 +1266,7 @@ Piotr Skajewski <piotrx.skajewski@intel.com>
- Potnuri Bharat Teja <bharat@chelsio.com>
+@@ -1161,6 +1161,7 @@ Piotr Pietruszewski <piotr.pietruszewski@intel.com>
+ Piotr Skajewski <piotrx.skajewski@intel.com>
@@ -30 +31 @@
- Prathisna Padmasanan <prathisna.padmasanan@intel.com>
+ Praveen Kaligineedi <pkaligineedi@google.com>
@@ -32 +33 @@
-index b1d473429a..13825046d8 100644
+index 4d33b51fea..2f3270fe29 100644
@@ -39 +40 @@
-- * Copyright 2016-2021,2023-2024 NXP
+- * Copyright 2016-2021 NXP
@@ -44 +45 @@
-@@ -60,6 +60,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
+@@ -59,6 +59,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: fix L3/L4 checksum results' has been queued to stable release 23.11.6
2025-12-21 14:57 ` patch 'net/dpaa2: fix uninitialized variable' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: receive packets with additional parse errors' " Shani Peretz
` (100 more replies)
0 siblings, 101 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Brick Yang; +Cc: Gagandeep Singh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/fb4a3f8053c2de63af0f133bd22b7f6215d5bc2d
Thanks.
Shani
---
From fb4a3f8053c2de63af0f133bd22b7f6215d5bc2d Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:53 +0530
Subject: [PATCH] net/dpaa2: fix L3/L4 checksum results
[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
Layer3 and layer4 checksum validation and error
status is part of word1 of annotation area, but
driver is looking into wrong word.
This patch fixes the checksum error status in packet
parsing.
Fixes: 94d31549c380 ("net/dpaa2: support Rx checksum offload in slow parsing")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 10 +++++-----
drivers/net/dpaa2/dpaa2_rxtx.c | 16 ++++------------
2 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
index 7e5e499b6a..4f5ac1a481 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016,2019 NXP
+ * Copyright 2016,2019,2022,2024 NXP
*
*/
@@ -298,13 +298,13 @@ struct dpaa2_faead {
#define DPAA2_ETH_FAS_PHE 0x00000020
#define DPAA2_ETH_FAS_BLE 0x00000010
/* L3 csum validation performed */
-#define DPAA2_ETH_FAS_L3CV 0x00000008
+#define DPAA2_ETH_FAS_L3CV 0x0000000800000000
/* L3 csum error */
-#define DPAA2_ETH_FAS_L3CE 0x00000004
+#define DPAA2_ETH_FAS_L3CE 0x0000000400000000
/* L4 csum validation performed */
-#define DPAA2_ETH_FAS_L4CV 0x00000002
+#define DPAA2_ETH_FAS_L4CV 0x0000000200000000
/* L4 csum error */
-#define DPAA2_ETH_FAS_L4CE 0x00000001
+#define DPAA2_ETH_FAS_L4CE 0x0000000100000000
#ifdef __cplusplus
}
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index f65603aa09..2d5555d585 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -196,14 +196,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
goto parse_done;
}
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- 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 |
@@ -243,14 +239,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
DPAA2_PMD_DP_DEBUG("(fast parse) Annotation = 0x%" PRIx64 "\t",
annotation->word4);
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- 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:
---
--- - 2025-12-25 11:16:36.435501704 +0200
+++ 0001-net-dpaa2-fix-L3-L4-checksum-results.patch 2025-12-25 11:16:35.240902000 +0200
@@ -1 +1 @@
-From 870354264644bc8a2f014571e9a34757258d2ec8 Mon Sep 17 00:00:00 2001
+From fb4a3f8053c2de63af0f133bd22b7f6215d5bc2d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index d156b07087..a670098958 100644
+index 7e5e499b6a..4f5ac1a481 100644
@@ -35 +36 @@
-@@ -304,13 +304,13 @@ struct dpaa2_faead {
+@@ -298,13 +298,13 @@ struct dpaa2_faead {
@@ -54 +55 @@
-index 656a3a423f..da0c06caad 100644
+index f65603aa09..2d5555d585 100644
@@ -57 +58 @@
-@@ -201,14 +201,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
+@@ -196,14 +196,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
@@ -74 +75 @@
-@@ -248,14 +244,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
+@@ -243,14 +239,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
@@ -89,2 +90,2 @@
- if (unlikely(dpaa2_print_parser_result))
- dpaa2_print_parse_result(annotation);
+ if (dpaa2_enable_ts[mbuf->port]) {
+ *dpaa2_timestamp_dynfield(mbuf) = annotation->word2;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: receive packets with additional parse errors' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'crypto/qat: fix ECDH' " Shani Peretz
` (99 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Brick Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9298df72ec266f6d35e018e834da239498f22320
Thanks.
Shani
---
From 9298df72ec266f6d35e018e834da239498f22320 Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:54 +0530
Subject: [PATCH] net/dpaa2: receive packets with additional parse errors
[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
Also receive packets with HW parser length errors.
Thus this option allows HW to not drop packets for any kind of parser
errors.
Fixes: 4690a6114ff6 ("net/dpaa2: enable error queues optionally")
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 873121524f..da3719a373 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1242,7 +1242,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
err_cfg.errors = DPNI_ERROR_L3CE | DPNI_ERROR_L4CE;
/* if packet with parse error are not to be dropped */
- err_cfg.errors |= DPNI_ERROR_PHE;
+ err_cfg.errors |= DPNI_ERROR_PHE | DPNI_ERROR_BLE;
err_cfg.error_action = DPNI_ERROR_ACTION_CONTINUE;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.487030894 +0200
+++ 0002-net-dpaa2-receive-packets-with-additional-parse-erro.patch 2025-12-25 11:16:35.250786000 +0200
@@ -1 +1 @@
-From e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 Mon Sep 17 00:00:00 2001
+From 9298df72ec266f6d35e018e834da239498f22320 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 41678ce09b..0fd577c448 100644
+index 873121524f..da3719a373 100644
@@ -22 +23 @@
-@@ -1240,7 +1240,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
+@@ -1242,7 +1242,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/qat: fix ECDH' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: receive packets with additional parse errors' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'crypto/cnxk: refactor RSA verification' " Shani Peretz
` (98 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/4ab28d40af68b2bffcd1cea2a9ab769e62fea20e
Thanks.
Shani
---
From 4ab28d40af68b2bffcd1cea2a9ab769e62fea20e Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Wed, 27 Aug 2025 09:23:58 +0000
Subject: [PATCH] crypto/qat: fix ECDH
[ upstream commit 25ef596203a94c79b1c9fa8504839c3f41da1a57 ]
Read EC parameters from the xform, not from the asym_op,
where they may not be set.
Fixes: 305e1f856f0c ("crypto/qat: add ECDH key exchange algorithm")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
drivers/crypto/qat/qat_asym.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.c
index 4bc087987f..0a40e69da1 100644
--- a/drivers/crypto/qat/qat_asym.c
+++ b/drivers/crypto/qat/qat_asym.c
@@ -793,13 +793,13 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
qat_func_alignsize = RTE_ALIGN_CEIL(qat_function.bytesize, 8);
if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) {
- SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);
+ SET_PKE_LN(xform->ec.pkey, qat_func_alignsize, 0);
SET_PKE_LN_EC(curve[curve_id], x, 1);
SET_PKE_LN_EC(curve[curve_id], y, 2);
} else {
- SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);
- SET_PKE_LN(asym_op->ecdh.pub_key.x, qat_func_alignsize, 1);
- SET_PKE_LN(asym_op->ecdh.pub_key.y, qat_func_alignsize, 2);
+ SET_PKE_LN(xform->ec.pkey, qat_func_alignsize, 0);
+ SET_PKE_LN(xform->ec.q.x, qat_func_alignsize, 1);
+ SET_PKE_LN(xform->ec.q.y, qat_func_alignsize, 2);
}
SET_PKE_LN_EC(curve[curve_id], a, 3);
SET_PKE_LN_EC(curve[curve_id], b, 4);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.535324842 +0200
+++ 0003-crypto-qat-fix-ECDH.patch 2025-12-25 11:16:35.258969000 +0200
@@ -1 +1 @@
-From 25ef596203a94c79b1c9fa8504839c3f41da1a57 Mon Sep 17 00:00:00 2001
+From 4ab28d40af68b2bffcd1cea2a9ab769e62fea20e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 25ef596203a94c79b1c9fa8504839c3f41da1a57 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 80f7e5cda2..8808337551 100644
+index 4bc087987f..0a40e69da1 100644
@@ -22 +23 @@
-@@ -798,13 +798,13 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
+@@ -793,13 +793,13 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
@@ -30 +31 @@
- } else if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) {
+ } else {
@@ -37,2 +37,0 @@
- } else {
- return -EINVAL;
@@ -39,0 +39,2 @@
+ SET_PKE_LN_EC(curve[curve_id], a, 3);
+ SET_PKE_LN_EC(curve[curve_id], b, 4);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/cnxk: refactor RSA verification' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: receive packets with additional parse errors' " Shani Peretz
2025-12-25 9:17 ` patch 'crypto/qat: fix ECDH' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'test/crypto: fix mbuf handling' " Shani Peretz
` (97 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Sucharitha Sarananaga; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/09f4829c2fa9f6cb3a30ce52184da89894e0fd2d
Thanks.
Shani
---
From 09f4829c2fa9f6cb3a30ce52184da89894e0fd2d Mon Sep 17 00:00:00 2001
From: Sucharitha Sarananaga <ssarananaga@marvell.com>
Date: Mon, 29 Sep 2025 15:13:49 +0530
Subject: [PATCH] crypto/cnxk: refactor RSA verification
[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
This patch avoid copying the decrypted message into
the signature buffer, which is actually an input to the
verify operation. This prevents overwriting the input
buffer unnecessarily.
Fixes: 6661bedf1605 ("crypto/cnxk: add asymmetric datapath")
Signed-off-by: Sucharitha Sarananaga <ssarananaga@marvell.com>
---
drivers/crypto/cnxk/cnxk_ae.h | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index ef9cb5eb91..527b5b9730 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -1173,20 +1173,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
case RTE_CRYPTO_ASYM_OP_VERIFY:
if (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
rsa->sign.length = rsa_ctx->n.length;
- memcpy(rsa->sign.data, rptr, rsa->sign.length);
+ if (memcmp(rptr, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
} else {
/* Get length of signed output */
- rsa->sign.length =
- rte_cpu_to_be_16(*((uint16_t *)rptr));
+ rsa->sign.length = rte_cpu_to_be_16(*((uint16_t *)rptr));
/*
* Offset output data pointer by length field
- * (2 bytes) and copy signed data.
+ * (2 bytes) and compare signed data.
*/
- memcpy(rsa->sign.data, rptr + 2, rsa->sign.length);
- }
- if (memcmp(rsa->sign.data, rsa->message.data,
- rsa->message.length)) {
- cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
+ if (memcmp(rptr + 2, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
}
break;
default:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.581826409 +0200
+++ 0004-crypto-cnxk-refactor-RSA-verification.patch 2025-12-25 11:16:35.267823000 +0200
@@ -1 +1 @@
-From dfd038b97ec3d173ded0f985df39301b7c7662f2 Mon Sep 17 00:00:00 2001
+From 09f4829c2fa9f6cb3a30ce52184da89894e0fd2d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 8508ab8736..912a2a9496 100644
+index ef9cb5eb91..527b5b9730 100644
@@ -23 +24 @@
-@@ -1592,20 +1592,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
+@@ -1173,20 +1173,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
@@ -25 +26 @@
- if (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
+ if (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test/crypto: fix mbuf handling' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (2 preceding siblings ...)
2025-12-25 9:17 ` patch 'crypto/cnxk: refactor RSA verification' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Shani Peretz
` (96 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3f425fa3277c90951e34b60769d9a8e84d86721b
Thanks.
Shani
---
From 3f425fa3277c90951e34b60769d9a8e84d86721b Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Tue, 23 Sep 2025 14:22:54 +0000
Subject: [PATCH] test/crypto: fix mbuf handling
[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
This patch resolves the following mbuf sanity check errors.
- updating nb_segs and pkt_len in the head mbuf after
freeing intermediate nodes in the chain.
- fix incorrect usage of rte_pktmbuf_append by ensuring
the head mbuf is passed instead of an intermediate
node, allowing proper tail detection and metadata
update.
Fixes: dc3f6c5347b2 ("test/crypto: fix wireless auth digest segment")
Fixes: 43220096d66a ("test/crypto: add PDCP cases for scatter gather")
Fixes: dcdd01691f39 ("test/crypto: add GMAC SGL")
Fixes: f3dbf94be60c ("app/test: check SGL on QAT")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
app/test/test_cryptodev.c | 59 ++++++++++++++++++++++++++-------------
1 file changed, 40 insertions(+), 19 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 8b8546622a..ae58af779e 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3114,6 +3114,8 @@ create_wireless_algo_auth_cipher_operation(
uint16_t remaining_off = (auth_offset >> 3) + (auth_len >> 3);
struct rte_mbuf *sgl_buf = (op_mode == IN_PLACE ?
sym_op->m_src : sym_op->m_dst);
+ struct rte_mbuf *sgl_buf_head = sgl_buf;
+
while (remaining_off >= rte_pktmbuf_data_len(sgl_buf)) {
remaining_off -= rte_pktmbuf_data_len(sgl_buf);
sgl_buf = sgl_buf->next;
@@ -3121,11 +3123,18 @@ create_wireless_algo_auth_cipher_operation(
/* The last segment should be large enough to hold full digest */
if (sgl_buf->data_len < auth_tag_len) {
- rte_pktmbuf_free(sgl_buf->next);
- sgl_buf->next = NULL;
- TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(sgl_buf,
- auth_tag_len - sgl_buf->data_len),
- "No room to append auth tag");
+ uint16_t next_data_len = 0;
+ if (sgl_buf->next != NULL) {
+ next_data_len = sgl_buf->next->data_len;
+
+ rte_pktmbuf_free(sgl_buf->next);
+ sgl_buf->next = NULL;
+ sgl_buf_head->nb_segs -= 1;
+ sgl_buf_head->pkt_len -= next_data_len;
+ }
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(
+ sgl_buf_head, auth_tag_len - sgl_buf->data_len),
+ "No room to append auth tag");
}
sym_op->auth.digest.data = rte_pktmbuf_mtod_offset(sgl_buf,
@@ -9377,11 +9386,13 @@ test_pdcp_proto_SGL(int i, int oop,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(ut_params->obuf, "Output buffer not initialized");
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, input_vec + trn_data, to_trn);
trn_data += to_trn;
@@ -9410,7 +9421,7 @@ test_pdcp_proto_SGL(int i, int oop,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
}
@@ -14363,15 +14374,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
memset(rte_pktmbuf_mtod(buf, uint8_t *), 0,
rte_pktmbuf_tailroom(buf));
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
to_trn);
trn_data += to_trn;
- if (trn_data == tdata->plaintext.len)
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ if (trn_data == tdata->plaintext.len) {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->gmac_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append digest data");
+ }
}
ut_params->ibuf->nb_segs = segs;
@@ -15664,23 +15678,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
to_trn);
trn_data += to_trn;
if (trn_data == tdata->plaintext.len) {
if (oop) {
- if (!fragsz_oop)
- digest_mem = rte_pktmbuf_append(buf_oop,
+ if (!fragsz_oop) {
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
- } else
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
+ } else {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
}
}
@@ -15715,16 +15734,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
buf_last_oop = buf_oop->next =
rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ TEST_ASSERT_NOT_NULL(buf_oop->next, "Unexpected end of chain");
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
if (trn_data == tdata->plaintext.len) {
- digest_mem = rte_pktmbuf_append(buf_oop,
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
}
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.628845255 +0200
+++ 0005-test-crypto-fix-mbuf-handling.patch 2025-12-25 11:16:35.286992000 +0200
@@ -1 +1 @@
-From 1ff54c055d95736aae05a40b361427215c318cc1 Mon Sep 17 00:00:00 2001
+From 3f425fa3277c90951e34b60769d9a8e84d86721b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 5229ac2bf6..f092f608a9 100644
+index 8b8546622a..ae58af779e 100644
@@ -30 +31 @@
-@@ -3488,6 +3488,8 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3114,6 +3114,8 @@ create_wireless_algo_auth_cipher_operation(
@@ -39 +40 @@
-@@ -3495,11 +3497,18 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3121,11 +3123,18 @@ create_wireless_algo_auth_cipher_operation(
@@ -63 +64 @@
-@@ -9795,11 +9804,13 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -9377,11 +9386,13 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -79 +80 @@
-@@ -9828,7 +9839,7 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -9410,7 +9421,7 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -88 +89 @@
-@@ -15916,15 +15927,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
+@@ -14363,15 +14374,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
@@ -110 +111 @@
-@@ -17223,23 +17237,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -15664,23 +15678,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
@@ -145 +146 @@
-@@ -17274,16 +17293,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -15715,16 +15734,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/crypto-perf: fix plaintext size exceeds buffer size' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (3 preceding siblings ...)
2025-12-25 9:17 ` patch 'test/crypto: fix mbuf handling' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'test/crypto: fix vector initialization' " Shani Peretz
` (95 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Shani Peretz; +Cc: Kai Ji, Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/efeda91c597a08b418d281a918d8b523010976fb
Thanks.
Shani
---
From efeda91c597a08b418d281a918d8b523010976fb Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Mon, 25 Aug 2025 10:14:50 +0300
Subject: [PATCH] app/crypto-perf: fix plaintext size exceeds buffer size
[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
When test vector plaintext exceeds buffer size, only the first
max_buffer_size bytes are processed, causing incorrect digest
verification (computed vs expected mismatch).
This patch fixes this issue by checking that the plaintext size is
larger than the buffer size and returns an error with a log.
Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Kai Ji <kai.ji@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
.../cperf_test_vector_parsing.c | 47 +++++++++++--------
1 file changed, 27 insertions(+), 20 deletions(-)
diff --git a/app/test-crypto-perf/cperf_test_vector_parsing.c b/app/test-crypto-perf/cperf_test_vector_parsing.c
index 737d61d4af..5665fb425b 100644
--- a/app/test-crypto-perf/cperf_test_vector_parsing.c
+++ b/app/test-crypto-perf/cperf_test_vector_parsing.c
@@ -308,12 +308,19 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
if (strstr(key_token, "plaintext")) {
rte_free(vector->plaintext.data);
vector->plaintext.data = data;
+
+ if (opts->test == CPERF_TEST_TYPE_VERIFY && data_length > opts->max_buffer_size) {
+ printf("Global plaintext (%u) larger than buffer_sz (%u)\n",
+ data_length, opts->max_buffer_size);
+ return -1;
+ }
+
if (tc_found)
vector->plaintext.length = data_length;
else {
if (opts->max_buffer_size > data_length) {
- printf("Global plaintext shorter than "
- "buffer_sz\n");
+ printf("Global plaintext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
vector->plaintext.length = opts->max_buffer_size;
@@ -326,8 +333,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->cipher_key.length = data_length;
else {
if (opts->cipher_key_sz > data_length) {
- printf("Global cipher_key shorter than "
- "cipher_key_sz\n");
+ printf("Global cipher_key (%u) shorter than "
+ "cipher_key_sz (%u)\n", data_length, opts->cipher_key_sz);
return -1;
}
vector->cipher_key.length = opts->cipher_key_sz;
@@ -340,8 +347,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->auth_key.length = data_length;
else {
if (opts->auth_key_sz > data_length) {
- printf("Global auth_key shorter than "
- "auth_key_sz\n");
+ printf("Global auth_key (%u) shorter than "
+ "auth_key_sz (%u)\n", data_length, opts->auth_key_sz);
return -1;
}
vector->auth_key.length = opts->auth_key_sz;
@@ -354,8 +361,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aead_key.length = data_length;
else {
if (opts->aead_key_sz > data_length) {
- printf("Global aead_key shorter than "
- "aead_key_sz\n");
+ printf("Global aead_key (%u) shorter than "
+ "aead_key_sz (%u)\n", data_length, opts->aead_key_sz);
return -1;
}
vector->aead_key.length = opts->aead_key_sz;
@@ -368,8 +375,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->cipher_iv.length = data_length;
else {
if (opts->cipher_iv_sz > data_length) {
- printf("Global cipher iv shorter than "
- "cipher_iv_sz\n");
+ printf("Global cipher iv (%u) shorter than "
+ "cipher_iv_sz (%u)\n", data_length, opts->cipher_iv_sz);
return -1;
}
vector->cipher_iv.length = opts->cipher_iv_sz;
@@ -382,8 +389,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->auth_iv.length = data_length;
else {
if (opts->auth_iv_sz > data_length) {
- printf("Global auth iv shorter than "
- "auth_iv_sz\n");
+ printf("Global auth iv (%u) shorter than "
+ "auth_iv_sz (%u)\n", data_length, opts->auth_iv_sz);
return -1;
}
vector->auth_iv.length = opts->auth_iv_sz;
@@ -396,8 +403,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aead_iv.length = data_length;
else {
if (opts->aead_iv_sz > data_length) {
- printf("Global aead iv shorter than "
- "aead_iv_sz\n");
+ printf("Global aead iv (%u) shorter than "
+ "aead_iv_sz (%u)\n", data_length, opts->aead_iv_sz);
return -1;
}
vector->aead_iv.length = opts->aead_iv_sz;
@@ -410,8 +417,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->ciphertext.length = data_length;
else {
if (opts->max_buffer_size > data_length) {
- printf("Global ciphertext shorter than "
- "buffer_sz\n");
+ printf("Global ciphertext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
vector->ciphertext.length = opts->max_buffer_size;
@@ -425,8 +432,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aad.length = data_length;
else {
if (opts->aead_aad_sz > data_length) {
- printf("Global aad shorter than "
- "aead_aad_sz\n");
+ printf("Global aad (%u) shorter than "
+ "aead_aad_sz (%u)\n", data_length, opts->aead_aad_sz);
return -1;
}
vector->aad.length = opts->aead_aad_sz;
@@ -441,8 +448,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->digest.length = data_length;
else {
if (opts->digest_sz > data_length) {
- printf("Global digest shorter than "
- "digest_sz\n");
+ printf("Global digest (%u) shorter than "
+ "digest_sz (%u)\n", data_length, opts->digest_sz);
return -1;
}
vector->digest.length = opts->digest_sz;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.687799916 +0200
+++ 0006-app-crypto-perf-fix-plaintext-size-exceeds-buffer-si.patch 2025-12-25 11:16:35.292786000 +0200
@@ -1 +1 @@
-From b2988038656b03d1c019114fbe7609018cc16e87 Mon Sep 17 00:00:00 2001
+From efeda91c597a08b418d281a918d8b523010976fb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test/crypto: fix vector initialization' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (4 preceding siblings ...)
2025-12-25 9:17 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'crypto/virtio: fix cookies leak' " Shani Peretz
` (94 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/8f6812563d86eb79c13d3ff74619356b77030fb5
Thanks.
Shani
---
From 8f6812563d86eb79c13d3ff74619356b77030fb5 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Thu, 11 Sep 2025 13:14:38 +0000
Subject: [PATCH] test/crypto: fix vector initialization
[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
For CPU crypto code path make sure all fields in the
rte_crypto_sym_vec struct are initialised.
Fixes: 2a9f232ce60e ("test/crypto: add CPU crypto mode cases")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
app/test/test_cryptodev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index ae58af779e..e20a4a5c77 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -209,7 +209,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
struct rte_crypto_vec data_vec[UINT8_MAX], dest_data_vec[UINT8_MAX];
struct rte_crypto_va_iova_ptr cipher_iv, digest, aad_auth_iv;
union rte_crypto_sym_ofs ofs;
- struct rte_crypto_sym_vec vec;
+ struct rte_crypto_sym_vec vec = {0};
struct rte_crypto_sgl sgl, dest_sgl;
uint32_t max_len;
union rte_cryptodev_session_ctx sess;
@@ -446,7 +446,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
struct rte_crypto_sym_op *sop;
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, aad_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
@@ -492,7 +492,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
struct rte_crypto_sym_op *sop;
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.731917777 +0200
+++ 0007-test-crypto-fix-vector-initialization.patch 2025-12-25 11:16:35.311851000 +0200
@@ -1 +1 @@
-From 78ed9449a63ecc00b059ddc24dd04df8a119f5de Mon Sep 17 00:00:00 2001
+From 8f6812563d86eb79c13d3ff74619356b77030fb5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 50de525897..6e5f308e55 100644
+index ae58af779e..e20a4a5c77 100644
@@ -22 +23 @@
-@@ -289,7 +289,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
+@@ -209,7 +209,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
@@ -31 +32 @@
-@@ -526,7 +526,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
+@@ -446,7 +446,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
@@ -40 +41 @@
-@@ -572,7 +572,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
+@@ -492,7 +492,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/virtio: fix cookies leak' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (5 preceding siblings ...)
2025-12-25 9:17 ` patch 'test/crypto: fix vector initialization' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'bitops: improve power of 2 alignment documentation' " Shani Peretz
` (93 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/5d7657a5374f1f706a02be270fcdec366a0c724b
Thanks.
Shani
---
From 5d7657a5374f1f706a02be270fcdec366a0c724b Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Sat, 11 Oct 2025 10:07:03 +0530
Subject: [PATCH] crypto/virtio: fix cookies leak
[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
Free memory used by virt queue op cookies in dev close.
Fixes: 6f0175ff53e0 ("crypto/virtio: support basic PMD ops")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
drivers/crypto/virtio/virtio_cryptodev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c
index c208e76c7a..9c88f5a4bb 100644
--- a/drivers/crypto/virtio/virtio_cryptodev.c
+++ b/drivers/crypto/virtio/virtio_cryptodev.c
@@ -266,6 +266,7 @@ void
virtio_crypto_queue_release(struct virtqueue *vq)
{
struct virtio_crypto_hw *hw;
+ uint16_t i;
PMD_INIT_FUNC_TRACE();
@@ -276,6 +277,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
rte_memzone_free(vq->mz);
rte_mempool_free(vq->mpool);
+ for (i = 0; i < vq->vq_nentries; i++)
+ rte_free(vq->vq_descx[i].cookie);
+
rte_free(vq);
}
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.786948456 +0200
+++ 0008-crypto-virtio-fix-cookies-leak.patch 2025-12-25 11:16:35.319911000 +0200
@@ -1 +1 @@
-From 8b0d855fd98c6c88665489fdba12f8e603deae21 Mon Sep 17 00:00:00 2001
+From 5d7657a5374f1f706a02be270fcdec366a0c724b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index d661ce8025..6f079f15f6 100644
+index c208e76c7a..9c88f5a4bb 100644
@@ -20 +21 @@
-@@ -68,6 +68,7 @@ void
+@@ -266,6 +266,7 @@ void
@@ -28,2 +29,2 @@
-@@ -79,6 +80,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
- hw->vqs[vq->vq_queue_index] = NULL;
+@@ -276,6 +277,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
+
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'bitops: improve power of 2 alignment documentation' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (6 preceding siblings ...)
2025-12-25 9:17 ` patch 'crypto/virtio: fix cookies leak' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'sched: fix WRR parameter data type' " Shani Peretz
` (92 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Mattias Rönnblom; +Cc: Bruce Richardson, Morten Brørup, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/7b108fc1c4d9d0b934b154cd7ea96c8d2ca193c5
Thanks.
Shani
---
From 7b108fc1c4d9d0b934b154cd7ea96c8d2ca193c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mattias=20R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>
Date: Tue, 22 Jul 2025 09:53:21 +0200
Subject: [PATCH] bitops: improve power of 2 alignment documentation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit f9f773fe2d6f49f1223283dc3e75198f2e6c0664 ]
In the documentation, make clear
rte_align(32|64)prevpow2(<n>) -> <n>, provided <n> is a power of 2.
The original documentation stated the "previous" power of 2 would be
returned, potentially leaving the user to erroneously conclude that,
for example, rte_align32prevpow2(32) -> 16.
The rte_align(32|64)pow2(<n>) documentation, suffering from a similar
issue, is reworded in the same manner.
Fixes: 08f683174e94 ("eal: add functions for previous power of 2 alignment")
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/eal/include/rte_bitops.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/eal/include/rte_bitops.h b/lib/eal/include/rte_bitops.h
index 6bd8bae21a..1337a67b4a 100644
--- a/lib/eal/include/rte_bitops.h
+++ b/lib/eal/include/rte_bitops.h
@@ -615,7 +615,7 @@ rte_is_power_of_2(uint32_t n)
* The integer value to align
*
* @return
- * Input parameter aligned to the next power of 2
+ * The smallest power of 2 which is greater than or equal to @c x.
*/
static inline uint32_t
rte_align32pow2(uint32_t x)
@@ -633,7 +633,7 @@ rte_align32pow2(uint32_t x)
* The integer value to align
*
* @return
- * Input parameter aligned to the previous power of 2
+ * The greatest power of 2 which is smaller than or equal to @c x.
*/
static inline uint32_t
rte_align32prevpow2(uint32_t x)
@@ -650,7 +650,7 @@ rte_align32prevpow2(uint32_t x)
* The 64b value to align
*
* @return
- * Input parameter aligned to the next power of 2
+ * The smallest power of 2 which is greater than or equal to @c v.
*/
static inline uint64_t
rte_align64pow2(uint64_t v)
@@ -668,7 +668,7 @@ rte_align64pow2(uint64_t v)
* The 64b value to align
*
* @return
- * Input parameter aligned to the previous power of 2
+ * The greatest power of 2 which is smaller than or equal to @c v.
*/
static inline uint64_t
rte_align64prevpow2(uint64_t v)
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.835967655 +0200
+++ 0009-bitops-improve-power-of-2-alignment-documentation.patch 2025-12-25 11:16:35.330839000 +0200
@@ -1 +1 @@
-From f9f773fe2d6f49f1223283dc3e75198f2e6c0664 Mon Sep 17 00:00:00 2001
+From 7b108fc1c4d9d0b934b154cd7ea96c8d2ca193c5 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit f9f773fe2d6f49f1223283dc3e75198f2e6c0664 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index b9a6af381b..2d1b9d281c 100644
+index 6bd8bae21a..1337a67b4a 100644
@@ -33 +34 @@
-@@ -1320,7 +1320,7 @@ rte_is_power_of_2(uint32_t n)
+@@ -615,7 +615,7 @@ rte_is_power_of_2(uint32_t n)
@@ -42 +43 @@
-@@ -1338,7 +1338,7 @@ rte_align32pow2(uint32_t x)
+@@ -633,7 +633,7 @@ rte_align32pow2(uint32_t x)
@@ -51 +52 @@
-@@ -1355,7 +1355,7 @@ rte_align32prevpow2(uint32_t x)
+@@ -650,7 +650,7 @@ rte_align32prevpow2(uint32_t x)
@@ -60 +61 @@
-@@ -1373,7 +1373,7 @@ rte_align64pow2(uint64_t v)
+@@ -668,7 +668,7 @@ rte_align64pow2(uint64_t v)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'sched: fix WRR parameter data type' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (7 preceding siblings ...)
2025-12-25 9:17 ` patch 'bitops: improve power of 2 alignment documentation' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'config/arm: enable NUMA for Neoverse N2' " Shani Peretz
` (91 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Megha Ajmera; +Cc: Jasvinder Singh, Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/a268e92287c62d4de69e7ce77dccdc8256dfc86f
Thanks.
Shani
---
From a268e92287c62d4de69e7ce77dccdc8256dfc86f Mon Sep 17 00:00:00 2001
From: Megha Ajmera <megha.ajmera@intel.com>
Date: Thu, 18 Sep 2025 08:16:09 +0530
Subject: [PATCH] sched: fix WRR parameter data type
[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
wrr tokens getting truncated to uint8_t in wrr_store function() due to
type mismatch. This patch changes the data type to uint16_t.
Fixes: e16b06da0908 ("sched: remove WRR from strict priority TC queues")
Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/sched/rte_sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
index 1a6beb14f4..7e3d68ebf1 100644
--- a/lib/sched/rte_sched.c
+++ b/lib/sched/rte_sched.c
@@ -67,7 +67,7 @@ struct rte_sched_pipe {
uint64_t tc_credits[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/* Weighted Round Robin (WRR) */
- uint8_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
+ uint16_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
/* TC oversubscription */
uint64_t tc_ov_credits;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.882416185 +0200
+++ 0010-sched-fix-WRR-parameter-data-type.patch 2025-12-25 11:16:35.338906000 +0200
@@ -1 +1 @@
-From 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 Mon Sep 17 00:00:00 2001
+From a268e92287c62d4de69e7ce77dccdc8256dfc86f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 453f935ac8..daa31e8b99 100644
+index 1a6beb14f4..7e3d68ebf1 100644
@@ -23 +24 @@
-@@ -67,7 +67,7 @@ struct __rte_cache_aligned rte_sched_pipe {
+@@ -67,7 +67,7 @@ struct rte_sched_pipe {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'config/arm: enable NUMA for Neoverse N2' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (8 preceding siblings ...)
2025-12-25 9:17 ` patch 'sched: fix WRR parameter data type' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'bus/pci: fix resource leak in secondary process' " Shani Peretz
` (90 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thierry Herbelot; +Cc: Doug Foster, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/5e855c21c79a00f16d7b19b09579f5c95e21dd03
Thanks.
Shani
---
From 5e855c21c79a00f16d7b19b09579f5c95e21dd03 Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Thu, 16 Oct 2025 10:05:33 +0200
Subject: [PATCH] config/arm: enable NUMA for Neoverse N2
[ upstream commit 6edcec237e31fcdb848cca6c151ee7a5bf057c28 ]
Configuration for hex code '0xd49' enables two NUMA nodes.
Then, the corresponding 'soc_n2' should allow 'numa'.
Fixes: ea85ed1f6882 ("config/arm: increase nodes and cores for Neoverse N2")
Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Acked-by: Doug Foster <doug.foster@arm.com>
---
config/arm/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 37cd870718..0b892fc0a6 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -483,7 +483,7 @@ soc_n2 = {
'description': 'Arm Neoverse N2',
'implementer': '0x41',
'part_number': '0xd49',
- 'numa': false
+ 'numa': true
}
soc_cn9k = {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.928892226 +0200
+++ 0011-config-arm-enable-NUMA-for-Neoverse-N2.patch 2025-12-25 11:16:35.344901000 +0200
@@ -1 +1 @@
-From 6edcec237e31fcdb848cca6c151ee7a5bf057c28 Mon Sep 17 00:00:00 2001
+From 5e855c21c79a00f16d7b19b09579f5c95e21dd03 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6edcec237e31fcdb848cca6c151ee7a5bf057c28 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f2567adf06..ec9e08cb5e 100644
+index 37cd870718..0b892fc0a6 100644
@@ -22 +23 @@
-@@ -602,7 +602,7 @@ soc_n2 = {
+@@ -483,7 +483,7 @@ soc_n2 = {
@@ -30 +31 @@
- soc_n3 = {
+ soc_cn9k = {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'bus/pci: fix resource leak in secondary process' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (9 preceding siblings ...)
2025-12-25 9:17 ` patch 'config/arm: enable NUMA for Neoverse N2' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'test/hash: check memory allocation' " Shani Peretz
` (89 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/d7af410e9a05e2d89f944bd623df6e605a853d64
Thanks.
Shani
---
From d7af410e9a05e2d89f944bd623df6e605a853d64 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:18:24 +0100
Subject: [PATCH] bus/pci: fix resource leak in secondary process
[ upstream commit 6ca08d36ba7310edfe96207b299f79221b7e2d37 ]
Right after setting up VFIO device, we attempt to fill region information.
This operation can fail, and if it does, we do not release the device fd.
Fix the control flow to free the device fd if getting region info failed.
Fixes: 4b741542ecde ("bus/pci: avoid depending on private kernel value")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/bus/pci/linux/pci_vfio.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index baa0b9d9b3..9341560fe5 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -970,7 +970,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
char pci_addr[PATH_MAX] = {0};
int vfio_dev_fd;
struct rte_pci_addr *loc = &dev->addr;
- int i, j, ret;
+ int j, ret, i = 0;
struct mapped_pci_resource *vfio_res = NULL;
struct mapped_pci_res_list *vfio_res_list =
RTE_TAILQ_CAST(rte_vfio_tailq.head, mapped_pci_res_list);
@@ -1009,7 +1009,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
ret = pci_vfio_fill_regions(dev, vfio_dev_fd, &device_info);
if (ret)
- return ret;
+ goto err_vfio_dev_fd;
/* map BARs */
maps = vfio_res->maps;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:36.972943113 +0200
+++ 0012-bus-pci-fix-resource-leak-in-secondary-process.patch 2025-12-25 11:16:35.352898000 +0200
@@ -1 +1 @@
-From 6ca08d36ba7310edfe96207b299f79221b7e2d37 Mon Sep 17 00:00:00 2001
+From d7af410e9a05e2d89f944bd623df6e605a853d64 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6ca08d36ba7310edfe96207b299f79221b7e2d37 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index c63721dd61..8562fdcc6b 100644
+index baa0b9d9b3..9341560fe5 100644
@@ -22 +23 @@
-@@ -932,7 +932,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
+@@ -970,7 +970,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
@@ -31 +32 @@
-@@ -968,7 +968,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
+@@ -1009,7 +1009,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test/hash: check memory allocation' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (10 preceding siblings ...)
2025-12-25 9:17 ` patch 'bus/pci: fix resource leak in secondary process' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'dmadev: fix debug build with tracepoints' " Shani Peretz
` (88 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/e593c2f4728f0b84b31215281b3a0fcbea908670
Thanks.
Shani
---
From e593c2f4728f0b84b31215281b3a0fcbea908670 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 30 Oct 2025 17:03:20 +0100
Subject: [PATCH] test/hash: check memory allocation
[ upstream commit 77e23b2d7ee45d153f588611a3fa479e4cf0c9b6 ]
When reserving a specific memory amount, it was possible to pass
the first allocations and fail on a later allocation
where there was no check, resulting in a crash.
It is fixed by stopping the test if allocation failed.
Fixes: fd368e1982bc ("test/hash: test more corner cases")
Fixes: 9c7d8eed1a45 ("test/hash: add RCU tests")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
app/test/test_hash_readwrite.c | 5 +++++
app/test/test_hash_readwrite_lf_perf.c | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/app/test/test_hash_readwrite.c b/app/test/test_hash_readwrite.c
index 4997a01249..0ee1d64b02 100644
--- a/app/test/test_hash_readwrite.c
+++ b/app/test/test_hash_readwrite.c
@@ -64,6 +64,11 @@ test_hash_readwrite_worker(__rte_unused void *arg)
ret = rte_malloc(NULL, sizeof(int) *
tbl_rw_test_param.num_insert, 0);
+ if (ret == NULL) {
+ printf("allocation failed\n");
+ return -1;
+ }
+
for (i = 0; i < rte_lcore_count(); i++) {
if (worker_core_ids[i] == lcore_id)
break;
diff --git a/app/test/test_hash_readwrite_lf_perf.c b/app/test/test_hash_readwrite_lf_perf.c
index 5d18850e19..5a52038247 100644
--- a/app/test/test_hash_readwrite_lf_perf.c
+++ b/app/test/test_hash_readwrite_lf_perf.c
@@ -1310,6 +1310,10 @@ test_hash_rcu_qsbr_writer_perf(struct rwc_perf *rwc_perf_results, int rwc_lf,
sz = rte_rcu_qsbr_get_memsize(RTE_MAX_LCORE);
rv = (struct rte_rcu_qsbr *)rte_zmalloc(NULL, sz, RTE_CACHE_LINE_SIZE);
+ if (rv == NULL) {
+ printf("allocation failed\n");
+ goto err;
+ }
rcu_config.v = rv;
if (rte_hash_rcu_qsbr_add(tbl_rwc_test_param.h, &rcu_config) < 0) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.018612552 +0200
+++ 0013-test-hash-check-memory-allocation.patch 2025-12-25 11:16:35.362964000 +0200
@@ -1 +1 @@
-From 77e23b2d7ee45d153f588611a3fa479e4cf0c9b6 Mon Sep 17 00:00:00 2001
+From e593c2f4728f0b84b31215281b3a0fcbea908670 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 77e23b2d7ee45d153f588611a3fa479e4cf0c9b6 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 82fe03cc5a..22ccd6df6a 100644
+index 4997a01249..0ee1d64b02 100644
@@ -26 +27 @@
-@@ -70,6 +70,11 @@ test_hash_readwrite_worker(__rte_unused void *arg)
+@@ -64,6 +64,11 @@ test_hash_readwrite_worker(__rte_unused void *arg)
@@ -39 +40 @@
-index 864c3059d9..bef987d29d 100644
+index 5d18850e19..5a52038247 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'dmadev: fix debug build with tracepoints' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (11 preceding siblings ...)
2025-12-25 9:17 ` patch 'test/hash: check memory allocation' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'bus/cdx: fix device name in probing error message' " Shani Peretz
` (87 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9c3bdcaf9c2b94a2d913dfa7ae90c62962bb62c7
Thanks.
Shani
---
From 9c3bdcaf9c2b94a2d913dfa7ae90c62962bb62c7 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon, 27 Oct 2025 09:46:20 -0700
Subject: [PATCH] dmadev: fix debug build with tracepoints
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 1624f34dde105a47e1d22f419a90fd65997c908f ]
Missing definition of errnos causes build failure:
In file included from ../lib/dmadev/rte_dmadev_trace.h:16,
from ../lib/dmadev/rte_dmadev_trace_points.c:8:
../lib/dmadev/rte_dmadev.h: In function ‘rte_dma_copy’:
../lib/dmadev/rte_dmadev.h:1183:25: error: ‘EINVAL’ undeclared
(first use in this function)
1183 | return -EINVAL;
| ^~~~~~
Bugzilla ID: 1814
Fixes: 91e581e5c924 ("dmadev: add data plane API")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/dmadev/rte_dmadev.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 450b81c307..54a65cc816 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -145,6 +145,7 @@
*/
#include <stdint.h>
+#include <errno.h>
#include <rte_bitops.h>
#include <rte_common.h>
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.065312921 +0200
+++ 0014-dmadev-fix-debug-build-with-tracepoints.patch 2025-12-25 11:16:35.369845000 +0200
@@ -1 +1 @@
-From 1624f34dde105a47e1d22f419a90fd65997c908f Mon Sep 17 00:00:00 2001
+From 9c3bdcaf9c2b94a2d913dfa7ae90c62962bb62c7 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 1624f34dde105a47e1d22f419a90fd65997c908f ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 0f4f10ec12..e3d7c9d0ca 100644
+index 450b81c307..54a65cc816 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'bus/cdx: fix device name in probing error message' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (12 preceding siblings ...)
2025-12-25 9:17 ` patch 'dmadev: fix debug build with tracepoints' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'bus/cdx: fix release in probing for secondary process' " Shani Peretz
` (86 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Nipun Gupta, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/0ecbe4610ed359f9e5bec77203fbcb9a63146ecc
Thanks.
Shani
---
From 0ecbe4610ed359f9e5bec77203fbcb9a63146ecc Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:53:09 +0100
Subject: [PATCH] bus/cdx: fix device name in probing error message
[ upstream commit ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 ]
The variable cdx_addr is a stack-allocated zero-initialized char array, but
it is never used anywhere, except as part of error message out. The
intention is to display device name, so fix the code to reflect that.
Fixes: 45ef232af515 ("bus/cdx: introduce AMD CDX bus")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Nipun Gupta <nipun.gupta@amd.com>
---
drivers/bus/cdx/cdx_vfio.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/bus/cdx/cdx_vfio.c b/drivers/bus/cdx/cdx_vfio.c
index 664f267471..2c224bfef0 100644
--- a/drivers/bus/cdx/cdx_vfio.c
+++ b/drivers/bus/cdx/cdx_vfio.c
@@ -385,7 +385,6 @@ static int
cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
{
struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
- char cdx_addr[PATH_MAX] = {0};
static void *cdx_map_addr;
struct mapped_cdx_resource *vfio_res = NULL;
struct mapped_cdx_res_list *vfio_res_list =
@@ -451,7 +450,7 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
ret = cdx_vfio_mmap_resource(vfio_dev_fd, vfio_res, i, 0);
if (ret < 0) {
CDX_BUS_ERR("%s mapping region %i failed: %s",
- cdx_addr, i, strerror(errno));
+ dev_name, i, strerror(errno));
free(reg);
goto err_vfio_res;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.111445204 +0200
+++ 0015-bus-cdx-fix-device-name-in-probing-error-message.patch 2025-12-25 11:16:35.375959000 +0200
@@ -1 +1 @@
-From ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 Mon Sep 17 00:00:00 2001
+From 0ecbe4610ed359f9e5bec77203fbcb9a63146ecc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index c03bc01df7..a3cf53b6a6 100644
+index 664f267471..2c224bfef0 100644
@@ -23 +24 @@
-@@ -389,7 +389,6 @@ static int
+@@ -385,7 +385,6 @@ static int
@@ -31 +32 @@
-@@ -455,7 +454,7 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
+@@ -451,7 +450,7 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'bus/cdx: fix release in probing for secondary process' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (13 preceding siblings ...)
2025-12-25 9:17 ` patch 'bus/cdx: fix device name in probing error message' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Shani Peretz
` (85 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Nipun Gupta, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/f9c7f401e53249f05f055b44cb6d247b7ede861d
Thanks.
Shani
---
From f9c7f401e53249f05f055b44cb6d247b7ede861d Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:53:10 +0100
Subject: [PATCH] bus/cdx: fix release in probing for secondary process
[ upstream commit ad13df8e9379c5f17e6548eca1ae829f71795fde ]
The variable cdx_addr is a stack-allocated zero-initialized char array, but
it is never used anywhere except in an error handler to stand it as a
device bus address for a VFIO device release call. This is incorrect, as it
should have been actual device address, so fix the code to reflect that.
Fixes: 45ef232af515 ("bus/cdx: introduce AMD CDX bus")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Nipun Gupta <nipun.gupta@amd.com>
---
drivers/bus/cdx/cdx_vfio.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/bus/cdx/cdx_vfio.c b/drivers/bus/cdx/cdx_vfio.c
index 2c224bfef0..8f594d6391 100644
--- a/drivers/bus/cdx/cdx_vfio.c
+++ b/drivers/bus/cdx/cdx_vfio.c
@@ -481,7 +481,6 @@ static int
cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
{
struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
- char cdx_addr[PATH_MAX] = {0};
int vfio_dev_fd;
int i, ret;
struct mapped_cdx_resource *vfio_res = NULL;
@@ -532,7 +531,7 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
return 0;
err_vfio_dev_fd:
- rte_vfio_release_device(RTE_CDX_BUS_DEVICES_PATH, cdx_addr, vfio_dev_fd);
+ rte_vfio_release_device(RTE_CDX_BUS_DEVICES_PATH, dev_name, vfio_dev_fd);
return -1;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.155147247 +0200
+++ 0016-bus-cdx-fix-release-in-probing-for-secondary-process.patch 2025-12-25 11:16:35.381881000 +0200
@@ -1 +1 @@
-From ad13df8e9379c5f17e6548eca1ae829f71795fde Mon Sep 17 00:00:00 2001
+From f9c7f401e53249f05f055b44cb6d247b7ede861d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ad13df8e9379c5f17e6548eca1ae829f71795fde ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a3cf53b6a6..11fe3265d2 100644
+index 2c224bfef0..8f594d6391 100644
@@ -24 +25 @@
-@@ -485,7 +485,6 @@ static int
+@@ -481,7 +481,6 @@ static int
@@ -32 +33 @@
-@@ -536,7 +535,7 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
+@@ -532,7 +531,7 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'buildtools/pmdinfogen: fix warning with python 3.14' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (14 preceding siblings ...)
2025-12-25 9:17 ` patch 'bus/cdx: fix release in probing for secondary process' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/iavf: fix build with clang 21' " Shani Peretz
` (84 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Robin Jarry; +Cc: Dmitry Kozlyuk, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/2c546b93bb6012a87d975547bc6b6b44468db4e3
Thanks.
Shani
---
From 2c546b93bb6012a87d975547bc6b6b44468db4e3 Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Wed, 29 Oct 2025 17:46:17 +0100
Subject: [PATCH] buildtools/pmdinfogen: fix warning with python 3.14
[ upstream commit 74019b85e70e6152594768d6d07b8360e39ee70a ]
Fix the following warning seen on Fedora 43 with Python 3.14:
buildtools/pmdinfogen.py:118: DeprecationWarning: Due to '_pack_', the
'rte_pci_id' Structure will use memory layout compatible with MSVC
(Windows). If this is intended, set _layout_ to 'ms'. The implicit
default is dep recated and slated to become an error in Python 3.19.
Use the struct module which is simpler and assumes everything is packed
by default.
There is no change in the output of dpdk-pmdinfo.py before and after
this patch.
Bugzilla ID: 1818
Link: https://docs.python.org/3/library/struct.html
Signed-off-by: Robin Jarry <rjarry@redhat.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
buildtools/pmdinfogen.py | 42 +++++++++++-----------------------------
1 file changed, 11 insertions(+), 31 deletions(-)
diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py
index dfb89500c0..09e34f1524 100755
--- a/buildtools/pmdinfogen.py
+++ b/buildtools/pmdinfogen.py
@@ -4,9 +4,9 @@
# Copyright (c) 2020 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
import argparse
-import ctypes
import json
import re
+import struct
import sys
import tempfile
@@ -110,24 +110,6 @@ class COFFImage:
return None
-def define_rte_pci_id(is_big_endian):
- base_type = ctypes.LittleEndianStructure
- if is_big_endian:
- base_type = ctypes.BigEndianStructure
-
- class rte_pci_id(base_type):
- _pack_ = True
- _fields_ = [
- ("class_id", ctypes.c_uint32),
- ("vendor_id", ctypes.c_uint16),
- ("device_id", ctypes.c_uint16),
- ("subsystem_vendor_id", ctypes.c_uint16),
- ("subsystem_device_id", ctypes.c_uint16),
- ]
-
- return rte_pci_id
-
-
class Driver:
OPTIONS = [
("params", "_param_string_export"),
@@ -166,26 +148,24 @@ class Driver:
if not table_symbol:
raise Exception("PCI table declared but not defined: %d" % table_name)
- rte_pci_id = define_rte_pci_id(image.is_big_endian)
+ if image.is_big_endian:
+ fmt = ">"
+ else:
+ fmt = "<"
+ fmt += "LHHHH"
result = []
while True:
- size = ctypes.sizeof(rte_pci_id)
+ size = struct.calcsize(fmt)
offset = size * len(result)
data = table_symbol.get_value(offset, size)
if not data:
break
- pci_id = rte_pci_id.from_buffer_copy(data)
- if not pci_id.device_id:
+ _, vendor, device, ss_vendor, ss_device = struct.unpack_from(fmt, data)
+ if not device:
break
- result.append(
- [
- pci_id.vendor_id,
- pci_id.device_id,
- pci_id.subsystem_vendor_id,
- pci_id.subsystem_device_id,
- ]
- )
+ result.append((vendor, device, ss_vendor, ss_device))
+
return result
def dump(self, file):
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.199099904 +0200
+++ 0017-buildtools-pmdinfogen-fix-warning-with-python-3.14.patch 2025-12-25 11:16:35.385969000 +0200
@@ -1 +1 @@
-From 74019b85e70e6152594768d6d07b8360e39ee70a Mon Sep 17 00:00:00 2001
+From 2c546b93bb6012a87d975547bc6b6b44468db4e3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 74019b85e70e6152594768d6d07b8360e39ee70a ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 63e0a8b364..4401106f0b 100755
+index dfb89500c0..09e34f1524 100755
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/iavf: fix build with clang 21' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (15 preceding siblings ...)
2025-12-25 9:17 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'test: " Shani Peretz
` (83 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Vladimir Medvedkin, David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3248ebf4ab3ad094ba7c5ba4ac206e86069ae2bd
Thanks.
Shani
---
From 3248ebf4ab3ad094ba7c5ba4ac206e86069ae2bd Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 22:53:22 +0530
Subject: [PATCH] net/iavf: fix build with clang 21
[ upstream commit ffa370cf683a1dd37914a54b243ec38a237b3930 ]
Fix the following error seen with clang 21.1.4
drivers/net/intel/iavf/iavf_vchnl.c:123:38: error: variable
'notify_byte' is uninitialized when passed as a const pointer
argument here [-Werror,-Wuninitialized-const-pointer]
Fixes: cb5c1b91f76f ("net/iavf: add thread for event callbacks")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/iavf/iavf_vchnl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 71be87845a..c0a49a682c 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -102,7 +102,7 @@ iavf_dev_event_post(struct rte_eth_dev *dev,
void *param, size_t param_alloc_size)
{
struct iavf_event_handler *handler = &event_handler;
- char notify_byte;
+ char notify_byte = 0;
struct iavf_event_element *elem = rte_malloc(NULL, sizeof(*elem) + param_alloc_size, 0);
if (!elem)
return;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.242797587 +0200
+++ 0018-net-iavf-fix-build-with-clang-21.patch 2025-12-25 11:16:35.393892000 +0200
@@ -1 +1 @@
-From ffa370cf683a1dd37914a54b243ec38a237b3930 Mon Sep 17 00:00:00 2001
+From 3248ebf4ab3ad094ba7c5ba4ac206e86069ae2bd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ffa370cf683a1dd37914a54b243ec38a237b3930 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/iavf/iavf_vchnl.c | 2 +-
+ drivers/net/iavf/iavf_vchnl.c | 2 +-
@@ -22,4 +23,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_vchnl.c b/drivers/net/intel/iavf/iavf_vchnl.c
-index 460035d772..9ad39300c6 100644
---- a/drivers/net/intel/iavf/iavf_vchnl.c
-+++ b/drivers/net/intel/iavf/iavf_vchnl.c
+diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
+index 71be87845a..c0a49a682c 100644
+--- a/drivers/net/iavf/iavf_vchnl.c
++++ b/drivers/net/iavf/iavf_vchnl.c
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'test: fix build with clang 21' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (16 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/iavf: fix build with clang 21' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'eventdev/crypto: " Shani Peretz
` (82 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Amit Prakash Shukla, David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/5422b1047422d7e9f05dcd7e57a02ce4e4282107
Thanks.
Shani
---
From 5422b1047422d7e9f05dcd7e57a02ce4e4282107 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 22:53:23 +0530
Subject: [PATCH] test: fix build with clang 21
[ upstream commit bec307d512373403a28d447d0d54b191471bc624 ]
Fix the following errors seen with clang 21.1.4
app/test/test_event_dma_adapter.c:532:32: error: variable 'event' is
uninitialized when passed as a const pointer argument here
[-Werror,-Wuninitialized-const-pointer]
app/test/test_trace.c:201:29: error: variable 'tmp' is uninitialized
when passed as a const pointer argument here
[-Werror,-Wuninitialized-const-pointer]
Fixes: 4925e15a1614 ("trace: add trace point emit for blob")
Fixes: a276e7c8fbb3 ("test/event: add DMA adapter auto-test")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Amit Prakash Shukla <amitprakashs@marvell.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test/test_event_dma_adapter.c | 6 ++++--
app/test/test_trace.c | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/app/test/test_event_dma_adapter.c b/app/test/test_event_dma_adapter.c
index de0d671d3f..d4646ee751 100644
--- a/app/test/test_event_dma_adapter.c
+++ b/app/test/test_event_dma_adapter.c
@@ -135,7 +135,6 @@ test_dma_adapter_params(void)
{
struct rte_event_dma_adapter_runtime_params out_params;
struct rte_event_dma_adapter_runtime_params in_params;
- struct rte_event event;
uint32_t cap;
int err, rc;
@@ -143,6 +142,8 @@ test_dma_adapter_params(void)
TEST_ASSERT_SUCCESS(err, "Failed to get adapter capabilities\n");
if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+ struct rte_event event = { .queue_id = 0, };
+
err = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
TEST_DMA_VCHAN_ID, &event);
} else
@@ -527,7 +528,6 @@ test_dma_adapter_create(void)
static int
test_dma_adapter_vchan_add_del(void)
{
- struct rte_event event;
uint32_t cap;
int ret;
@@ -535,6 +535,8 @@ test_dma_adapter_vchan_add_del(void)
TEST_ASSERT_SUCCESS(ret, "Failed to get adapter capabilities\n");
if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+ struct rte_event event = { .queue_id = 0, };
+
ret = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
TEST_DMA_VCHAN_ID, &event);
} else
diff --git a/app/test/test_trace.c b/app/test/test_trace.c
index 00809f433b..d055f0b517 100644
--- a/app/test/test_trace.c
+++ b/app/test/test_trace.c
@@ -179,7 +179,7 @@ static int
test_generic_trace_points(void)
{
uint8_t arr[RTE_TRACE_BLOB_LEN_MAX];
- int tmp;
+ int tmp = 0;
int i;
for (i = 0; i < RTE_TRACE_BLOB_LEN_MAX; i++)
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.289737172 +0200
+++ 0019-test-fix-build-with-clang-21.patch 2025-12-25 11:16:35.402988000 +0200
@@ -1 +1 @@
-From bec307d512373403a28d447d0d54b191471bc624 Mon Sep 17 00:00:00 2001
+From 5422b1047422d7e9f05dcd7e57a02ce4e4282107 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bec307d512373403a28d447d0d54b191471bc624 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index 7f72a4e81d..be1e05af5b 100644
+index de0d671d3f..d4646ee751 100644
@@ -32 +33 @@
-@@ -136,7 +136,6 @@ test_dma_adapter_params(void)
+@@ -135,7 +135,6 @@ test_dma_adapter_params(void)
@@ -40 +41 @@
-@@ -144,6 +143,8 @@ test_dma_adapter_params(void)
+@@ -143,6 +142,8 @@ test_dma_adapter_params(void)
@@ -49 +50 @@
-@@ -520,7 +521,6 @@ test_dma_adapter_create(void)
+@@ -527,7 +528,6 @@ test_dma_adapter_create(void)
@@ -57 +58 @@
-@@ -528,6 +528,8 @@ test_dma_adapter_vchan_add_del(void)
+@@ -535,6 +535,8 @@ test_dma_adapter_vchan_add_del(void)
@@ -67 +68 @@
-index 8ea1443044..52b5ba5cbb 100644
+index 00809f433b..d055f0b517 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'eventdev/crypto: fix build with clang 21' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (17 preceding siblings ...)
2025-12-25 9:17 ` patch 'test: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'rawdev: " Shani Peretz
` (81 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: David Marchand; +Cc: Abhinandan Gujjar, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/57f5ad850fea33e31dd5a0a722c1f256adc9801f
Thanks.
Shani
---
From 57f5ad850fea33e31dd5a0a722c1f256adc9801f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 4 Nov 2025 12:52:22 +0100
Subject: [PATCH] eventdev/crypto: fix build with clang 21
[ upstream commit 9726ac9d903ce8bc76e4c8abde1de64b2827b609 ]
Fix 16-bits formatting issues reported by clang 21 on Fedora 43:
../lib/eventdev/rte_event_crypto_adapter.c:1461:4: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1459 | RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1460 | " cdev %" PRIu8, adapter->eventdev_id,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1461 | adapter->next_cdev_id);
| ^~~~~~~~~~~~~~~~~~~~~~
../lib/eventdev/rte_event_crypto_adapter.c:1592:46: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1592 | RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu8, cdev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../lib/eventdev/rte_event_crypto_adapter.c:1613:45: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1612 | RTE_EDEV_LOG_ERR("Event vectorization is not supported,"
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1613 | "dev %" PRIu8 " cdev %" PRIu8, dev_id, cdev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
Fixes: c1749bc5ee10 ("eventdev: introduce event cryptodev vector type")
Fixes: 04ed18cd41f1 ("eventdev/crypto: support runtime set/get parameters")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
---
lib/eventdev/rte_event_crypto_adapter.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/eventdev/rte_event_crypto_adapter.c b/lib/eventdev/rte_event_crypto_adapter.c
index d11c0d4be8..500601d616 100644
--- a/lib/eventdev/rte_event_crypto_adapter.c
+++ b/lib/eventdev/rte_event_crypto_adapter.c
@@ -1454,7 +1454,7 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
&caps);
if (ret) {
RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8
- " cdev %" PRIu8, adapter->eventdev_id,
+ " cdev %" PRIu16, adapter->eventdev_id,
adapter->next_cdev_id);
return ret;
}
@@ -1581,7 +1581,7 @@ rte_event_crypto_adapter_vector_limits_get(
RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
if (!rte_cryptodev_is_valid_dev(cdev_id)) {
- RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu8, cdev_id);
+ RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu16, cdev_id);
return -EINVAL;
}
@@ -1602,7 +1602,7 @@ rte_event_crypto_adapter_vector_limits_get(
if (!(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_EVENT_VECTOR)) {
RTE_EDEV_LOG_ERR("Event vectorization is not supported,"
- "dev %" PRIu8 " cdev %" PRIu8, dev_id, cdev_id);
+ "dev %" PRIu8 " cdev %" PRIu16, dev_id, cdev_id);
return -ENOTSUP;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.336953778 +0200
+++ 0020-eventdev-crypto-fix-build-with-clang-21.patch 2025-12-25 11:16:35.409940000 +0200
@@ -1 +1 @@
-From 9726ac9d903ce8bc76e4c8abde1de64b2827b609 Mon Sep 17 00:00:00 2001
+From 57f5ad850fea33e31dd5a0a722c1f256adc9801f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9726ac9d903ce8bc76e4c8abde1de64b2827b609 ]
+
@@ -34 +35,0 @@
-Cc: stable@dpdk.org
@@ -43 +44 @@
-index b827a0ffd6..3f9cc7379a 100644
+index d11c0d4be8..500601d616 100644
@@ -46 +47 @@
-@@ -1457,7 +1457,7 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
+@@ -1454,7 +1454,7 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
@@ -55 +56 @@
-@@ -1589,7 +1589,7 @@ rte_event_crypto_adapter_vector_limits_get(
+@@ -1581,7 +1581,7 @@ rte_event_crypto_adapter_vector_limits_get(
@@ -64 +65 @@
-@@ -1610,7 +1610,7 @@ rte_event_crypto_adapter_vector_limits_get(
+@@ -1602,7 +1602,7 @@ rte_event_crypto_adapter_vector_limits_get(
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'rawdev: fix build with clang 21' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (18 preceding siblings ...)
2025-12-25 9:17 ` patch 'eventdev/crypto: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'vdpa/mlx5: remove unused constant' " Shani Peretz
` (80 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: David Marchand; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3870f564e3465ac338f053bc9334c3984bdf41f1
Thanks.
Shani
---
From 3870f564e3465ac338f053bc9334c3984bdf41f1 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 4 Nov 2025 12:52:28 +0100
Subject: [PATCH] rawdev: fix build with clang 21
[ upstream commit 8887f57cd71e47fa487b8d37c421fba897f7c7ee ]
Fix 16-bits formatting issues reported by clang 21 on Fedora 43:
../lib/rawdev/rte_rawdev.c:429:41: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
429 | RTE_RDEV_DEBUG("Start dev_id=%" PRIu8, dev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../lib/rawdev/rte_rawdev.c:435:9: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
434 | RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already started",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435 | dev_id);
| ^~~~~~~
../lib/rawdev/rte_rawdev.c:457:40: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
457 | RTE_RDEV_DEBUG("Stop dev_id=%" PRIu8, dev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../lib/rawdev/rte_rawdev.c:464:4: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
463 | RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already stopped",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
464 | dev_id);
| ^~~~~~~
Fixes: c88b3f2558ed ("rawdev: introduce raw device library")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/rawdev/rte_rawdev.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/rawdev/rte_rawdev.c b/lib/rawdev/rte_rawdev.c
index 4f8897b639..bf81c9b946 100644
--- a/lib/rawdev/rte_rawdev.c
+++ b/lib/rawdev/rte_rawdev.c
@@ -403,12 +403,12 @@ rte_rawdev_start(uint16_t dev_id)
struct rte_rawdev *dev;
int diag;
- RTE_RDEV_DEBUG("Start dev_id=%" PRIu8, dev_id);
+ RTE_RDEV_DEBUG("Start dev_id=%" PRIu16, dev_id);
RTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
dev = &rte_rawdevs[dev_id];
if (dev->started != 0) {
- RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already started",
+ RTE_RDEV_ERR("Device with dev_id=%" PRIu16 "already started",
dev_id);
return 0;
}
@@ -430,13 +430,13 @@ rte_rawdev_stop(uint16_t dev_id)
{
struct rte_rawdev *dev;
- RTE_RDEV_DEBUG("Stop dev_id=%" PRIu8, dev_id);
+ RTE_RDEV_DEBUG("Stop dev_id=%" PRIu16, dev_id);
RTE_RAWDEV_VALID_DEVID_OR_RET(dev_id);
dev = &rte_rawdevs[dev_id];
if (dev->started == 0) {
- RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already stopped",
+ RTE_RDEV_ERR("Device with dev_id=%" PRIu16 "already stopped",
dev_id);
return;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.380313166 +0200
+++ 0021-rawdev-fix-build-with-clang-21.patch 2025-12-25 11:16:35.414012000 +0200
@@ -1 +1 @@
-From 8887f57cd71e47fa487b8d37c421fba897f7c7ee Mon Sep 17 00:00:00 2001
+From 3870f564e3465ac338f053bc9334c3984bdf41f1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8887f57cd71e47fa487b8d37c421fba897f7c7ee ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
@@ -45 +46 @@
-index f21d29114c..d193061842 100644
+index 4f8897b639..bf81c9b946 100644
@@ -48 +49 @@
-@@ -426,12 +426,12 @@ rte_rawdev_start(uint16_t dev_id)
+@@ -403,12 +403,12 @@ rte_rawdev_start(uint16_t dev_id)
@@ -63 +64 @@
-@@ -454,13 +454,13 @@ rte_rawdev_stop(uint16_t dev_id)
+@@ -430,13 +430,13 @@ rte_rawdev_stop(uint16_t dev_id)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'vdpa/mlx5: remove unused constant' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (19 preceding siblings ...)
2025-12-25 9:17 ` patch 'rawdev: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'crypto/mlx5: remove unused constants' " Shani Peretz
` (79 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3bc4e37bcc11da9d5f536b49720b9508d33ca096
Thanks.
Shani
---
From 3bc4e37bcc11da9d5f536b49720b9508d33ca096 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:20:58 +0100
Subject: [PATCH] vdpa/mlx5: remove unused constant
[ upstream commit 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 ]
The constant MLX5_VDPA_DEFAULT_TIMER_DELAY_US is not used anymore.
Fixes: 99f9d799ce21 ("vdpa/mlx5: improve interrupt management")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/vdpa/mlx5/mlx5_vdpa.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.h b/drivers/vdpa/mlx5/mlx5_vdpa.h
index 7b37c98e74..52b872addb 100644
--- a/drivers/vdpa/mlx5/mlx5_vdpa.h
+++ b/drivers/vdpa/mlx5/mlx5_vdpa.h
@@ -38,7 +38,6 @@
#define VIRTIO_F_RING_PACKED 34
#endif
-#define MLX5_VDPA_DEFAULT_TIMER_DELAY_US 0u
#define MLX5_VDPA_DEFAULT_TIMER_STEP_US 1u
struct mlx5_vdpa_cq {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.425997293 +0200
+++ 0022-vdpa-mlx5-remove-unused-constant.patch 2025-12-25 11:16:35.420802000 +0200
@@ -1 +1 @@
-From 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 Mon Sep 17 00:00:00 2001
+From 3bc4e37bcc11da9d5f536b49720b9508d33ca096 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index a398aa22ce..06155d2405 100644
+index 7b37c98e74..52b872addb 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/mlx5: remove unused constants' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (20 preceding siblings ...)
2025-12-25 9:17 ` patch 'vdpa/mlx5: remove unused constant' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'regex/mlx5: remove useless " Shani Peretz
` (78 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/c3193740b1a54d33240841ee5231a68e31e5942b
Thanks.
Shani
---
From c3193740b1a54d33240841ee5231a68e31e5942b Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:25:49 +0100
Subject: [PATCH] crypto/mlx5: remove unused constants
[ upstream commit 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e ]
The constant MLX5_CRYPTO_LOG_NAME was never used.
The constant MLX5_CRYPTO_MAX_SEGS was not used after the fix below.
Fixes: ba707cdb6da2 ("crypto/mlx5: fix queue size configuration")
Fixes: a7c86884f150 ("crypto/mlx5: introduce Mellanox crypto driver")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/crypto/mlx5/mlx5_crypto.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c
index 4bac723c8b..363b8efc1e 100644
--- a/drivers/crypto/mlx5/mlx5_crypto.c
+++ b/drivers/crypto/mlx5/mlx5_crypto.c
@@ -19,9 +19,7 @@
#include "mlx5_crypto.h"
#define MLX5_CRYPTO_DRIVER_NAME crypto_mlx5
-#define MLX5_CRYPTO_LOG_NAME pmd.crypto.mlx5
#define MLX5_CRYPTO_MAX_QPS 128
-#define MLX5_CRYPTO_MAX_SEGS 56
#define MLX5_CRYPTO_FEATURE_FLAGS(wrapped_mode) \
(RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_HW_ACCELERATED | \
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.469126155 +0200
+++ 0023-crypto-mlx5-remove-unused-constants.patch 2025-12-25 11:16:35.426918000 +0200
@@ -1 +1 @@
-From 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e Mon Sep 17 00:00:00 2001
+From c3193740b1a54d33240841ee5231a68e31e5942b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 78a9e3d0fe..6b36a3ece5 100644
+index 4bac723c8b..363b8efc1e 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'regex/mlx5: remove useless constants' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (21 preceding siblings ...)
2025-12-25 9:17 ` patch 'crypto/mlx5: remove unused constants' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'common/mlx5: " Shani Peretz
` (77 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/80c1196f5a3bdffa26f1816b5a8b66bdcafcf2d7
Thanks.
Shani
---
From 80c1196f5a3bdffa26f1816b5a8b66bdcafcf2d7 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:37:54 +0100
Subject: [PATCH] regex/mlx5: remove useless constants
[ upstream commit 9f6da93ec89a60df71f8e4d4748dff108a395595 ]
All these constants were unused since their introduction:
- MLX5_REGEX_WQE_CTRL_OFFSET
- MLX5_REGEX_RXP_ROF2_LINE_LEN
- MLX5_RXP_BF4_ROF_VERSION_STRING
- MLX5_RXP_CTRL_TYPE_*
- MLX5_RXP_CTRL_JOB_DESC_FLAGS
- MLX5_RXP_CTRL_VALID
- MLX5_RXP_INITIALIZATION_TIMEOUT
This constant became unused after supporting combined rule file:
- MLX5_RXP_POLL_CSR_FOR_VALUE_TIMEOUT
All these constants became unused after removing DB and register R/W:
- MLX5_RXP_MAX_ENGINES
- MLX5_RXP_EM_COUNT
- MLX5_RXP_DB_NOT_ASSIGNED
- MLX5_RXP_CSR_NUM_ENTRIES
- MLX5_RXP_CSR_CTRL_DISABLE_L2C
Fixes: 4d4e245ad637 ("regex/mlx5: support enqueue")
Fixes: f324162e8e77 ("regex/mlx5: support combined rule file")
Fixes: ab74680160ba ("regex/mlx5: support combined ROF file")
Fixes: b34d816363b5 ("regex/mlx5: support rules import")
Fixes: ab2e0b0d3531 ("regex/mlx5: remove register read/write")
Fixes: 9fa82d287f65 ("regex/mlx5: move RXP to CrSpace")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/regex/mlx5/mlx5_regex_fastpath.c | 1 -
drivers/regex/mlx5/mlx5_rxp.c | 2 --
drivers/regex/mlx5/mlx5_rxp.h | 20 --------------------
3 files changed, 23 deletions(-)
diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c b/drivers/regex/mlx5/mlx5_regex_fastpath.c
index 8e5f8c9c95..6e21574d29 100644
--- a/drivers/regex/mlx5/mlx5_regex_fastpath.c
+++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c
@@ -27,7 +27,6 @@
#define MLX5_REGEX_MAX_WQE_INDEX 0xffff
#define MLX5_REGEX_METADATA_SIZE ((size_t)64)
#define MLX5_REGEX_MAX_OUTPUT (((size_t)1) << 11)
-#define MLX5_REGEX_WQE_CTRL_OFFSET 12
#define MLX5_REGEX_WQE_METADATA_OFFSET 16
#define MLX5_REGEX_WQE_GATHER_OFFSET 32
#define MLX5_REGEX_WQE_SCATTER_OFFSET 48
diff --git a/drivers/regex/mlx5/mlx5_rxp.c b/drivers/regex/mlx5/mlx5_rxp.c
index 7730e11fb1..dda4a7fdb0 100644
--- a/drivers/regex/mlx5/mlx5_rxp.c
+++ b/drivers/regex/mlx5/mlx5_rxp.c
@@ -24,8 +24,6 @@
#define MLX5_REGEX_MAX_RULES_PER_GROUP UINT32_MAX
#define MLX5_REGEX_MAX_GROUPS MLX5_RXP_MAX_SUBSETS
-#define MLX5_REGEX_RXP_ROF2_LINE_LEN 34
-
const uint64_t combined_rof_tag = 0xff52544424a52475;
/* Private Declarations */
diff --git a/drivers/regex/mlx5/mlx5_rxp.h b/drivers/regex/mlx5/mlx5_rxp.h
index b38b53cc14..1f982f3b61 100644
--- a/drivers/regex/mlx5/mlx5_rxp.h
+++ b/drivers/regex/mlx5/mlx5_rxp.h
@@ -9,27 +9,13 @@
#define MLX5_RXP_BF3_IDENTIFIER 0x1
#define MLX5_RXP_MAX_JOB_LENGTH 16384
#define MLX5_RXP_MAX_SUBSETS 4095
-#define MLX5_RXP_CSR_NUM_ENTRIES 31
#define MLX5_RXP_BF2_ROF_VERSION_STRING 0x07055254
#define MLX5_RXP_BF3_ROF_VERSION_STRING 0x00065254
-#define MLX5_RXP_BF4_ROF_VERSION_STRING 0x00075254
-
-#define MLX5_RXP_CTRL_TYPE_MASK 7
-#define MLX5_RXP_CTRL_TYPE_JOB_DESCRIPTOR 0
-#define MLX5_RXP_CTRL_TYPE_RESPONSE_DESCRIPTOR 1
-#define MLX5_RXP_CTRL_TYPE_MEMORY_WRITE 4
-#define MLX5_RXP_CSR_CTRL_DISABLE_L2C (1 << 7)
#define MLX5_RXP_CTRL_JOB_DESC_SOF 0x0010
#define MLX5_RXP_CTRL_JOB_DESC_EOF 0x0020
#define MLX5_RXP_CTRL_JOB_DESC_HPM_ENABLE 0x0100
#define MLX5_RXP_CTRL_JOB_DESC_ANYMATCH_ENABLE 0x0200
-#define MLX5_RXP_CTRL_JOB_DESC_FLAGS (MLX5_RXP_CTRL_JOB_DESC_SOF | \
- MLX5_RXP_CTRL_JOB_DESC_EOF | \
- MLX5_RXP_CTRL_JOB_DESC_HPM_ENABLE | \
- MLX5_RXP_CTRL_JOB_DESC_ANYMATCH_ENABLE)
-
-#define MLX5_RXP_CTRL_VALID 0x8000
#define MLX5_RXP_RESP_STATUS_MAX_PRI_THREADS (1 << 3)
#define MLX5_RXP_RESP_STATUS_MAX_SEC_THREADS (1 << 4)
@@ -128,12 +114,6 @@ enum mlx5_rxp_program_mode {
MLX5_RXP_PRIVATE_PROG_MODE,
};
-#define MLX5_RXP_POLL_CSR_FOR_VALUE_TIMEOUT 3000 /* Poll timeout in ms. */
-#define MLX5_RXP_INITIALIZATION_TIMEOUT 60000 /* Initialize timeout in ms. */
-#define MLX5_RXP_MAX_ENGINES 2u /* Number of RXP engines. */
-#define MLX5_RXP_EM_COUNT 1u /* Extra External Memories to use. */
-#define MLX5_RXP_DB_NOT_ASSIGNED 0xFF
-
struct mlx5_regex_mkey {
struct mlx5dv_devx_umem *umem;
struct mlx5_devx_obj *mkey;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.513183729 +0200
+++ 0024-regex-mlx5-remove-useless-constants.patch 2025-12-25 11:16:35.432948000 +0200
@@ -1 +1 @@
-From 9f6da93ec89a60df71f8e4d4748dff108a395595 Mon Sep 17 00:00:00 2001
+From 80c1196f5a3bdffa26f1816b5a8b66bdcafcf2d7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9f6da93ec89a60df71f8e4d4748dff108a395595 ]
+
@@ -34 +35,0 @@
-Cc: stable@dpdk.org
@@ -69 +70 @@
-index 08b9a2680b..8ef1541d1a 100644
+index b38b53cc14..1f982f3b61 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'common/mlx5: remove useless constants' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (22 preceding siblings ...)
2025-12-25 9:17 ` patch 'regex/mlx5: remove useless " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/mlx5: " Shani Peretz
` (76 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9761a69764f6954eab0ddafb9fa2006029b861d4
Thanks.
Shani
---
From 9761a69764f6954eab0ddafb9fa2006029b861d4 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:10 +0100
Subject: [PATCH] common/mlx5: remove useless constants
[ upstream commit 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b ]
All these constants were unused since their introduction:
- MLX5_DRV_PROBE_AGAIN
- MLX5_NL_BUF_SIZE
- MLX5DV_FLOW_TABLE_TYPE_RDMA_RX
- IB_QPT_RAW_PACKET
Fixes: ad435d320473 ("common/mlx5: add bus-agnostic layer")
Fixes: ccdcba53a3f4 ("net/mlx5: use Netlink to add/remove MAC addresses")
Fixes: 03e1f7f760d8 ("net/mlx5: create flow matcher object on Windows")
Fixes: 358fbb018310 ("net/mlx5: support multi-packet Rx queue on Windows")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/common/mlx5/linux/mlx5_nl.c | 2 --
drivers/common/mlx5/mlx5_common.h | 3 ---
drivers/common/mlx5/windows/mlx5_win_defs.h | 2 --
3 files changed, 7 deletions(-)
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index 15304bbfca..476ddd7016 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -27,8 +27,6 @@
#endif
-/* Size of the buffer to receive kernel messages */
-#define MLX5_NL_BUF_SIZE (32 * 1024)
/* Send buffer size for the Netlink socket */
#define MLX5_SEND_BUF_SIZE 32768
/* Receive buffer size for the Netlink socket */
diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h
index 9c80277d74..b5acb89628 100644
--- a/drivers/common/mlx5/mlx5_common.h
+++ b/drivers/common/mlx5/mlx5_common.h
@@ -545,9 +545,6 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
*/
typedef int (mlx5_class_driver_remove_t)(struct mlx5_common_device *cdev);
-/** Device already probed can be probed again to check for new ports. */
-#define MLX5_DRV_PROBE_AGAIN 0x0004
-
/**
* A structure describing a mlx5 common class driver.
*/
diff --git a/drivers/common/mlx5/windows/mlx5_win_defs.h b/drivers/common/mlx5/windows/mlx5_win_defs.h
index d60df6fd37..d98725eea8 100644
--- a/drivers/common/mlx5/windows/mlx5_win_defs.h
+++ b/drivers/common/mlx5/windows/mlx5_win_defs.h
@@ -184,7 +184,6 @@ enum mlx5dv_flow_table_type {
#define MLX5DV_FLOW_TABLE_TYPE_NIC_RX MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX
#define MLX5DV_FLOW_TABLE_TYPE_NIC_TX MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX
#define MLX5DV_FLOW_TABLE_TYPE_FDB MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB
-#define MLX5DV_FLOW_TABLE_TYPE_RDMA_RX MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX
struct mlx5dv_flow_match_parameters {
size_t match_sz;
@@ -263,6 +262,5 @@ enum {
#define MLX5_MIN_SINGLE_STRIDE_LOG_NUM_BYTES 6
#define MLX5_MAX_SINGLE_STRIDE_LOG_NUM_BYTES 13
#define MLX5_EXT_MIN_SINGLE_WQE_LOG_NUM_STRIDES 3
-#define IB_QPT_RAW_PACKET 8
#endif /* MLX5_WIN_DEFS_H */
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.559025492 +0200
+++ 0025-common-mlx5-remove-useless-constants.patch 2025-12-25 11:16:35.447810000 +0200
@@ -1 +1 @@
-From 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b Mon Sep 17 00:00:00 2001
+From 9761a69764f6954eab0ddafb9fa2006029b861d4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 8753d3127c..d53543a113 100644
+index 15304bbfca..476ddd7016 100644
@@ -30 +31 @@
-@@ -28,8 +28,6 @@
+@@ -27,8 +27,6 @@
@@ -40 +41 @@
-index b49f0c850e..214ddcb8b3 100644
+index 9c80277d74..b5acb89628 100644
@@ -43 +44 @@
-@@ -575,9 +575,6 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
+@@ -545,9 +545,6 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: remove useless constants' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (23 preceding siblings ...)
2025-12-25 9:17 ` patch 'common/mlx5: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/mlx5: remove unused macros' " Shani Peretz
` (75 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/88c6d25de97b6d7769e1d1bd85d4704d107b9087
Thanks.
Shani
---
From 88c6d25de97b6d7769e1d1bd85d4704d107b9087 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:26 +0100
Subject: [PATCH] net/mlx5: remove useless constants
[ upstream commit 9d3788534cba7cc3424e2a83db6b186211d4e94f ]
- MLX5_VEC_TX_CKSUM_OFFLOAD_CAP became unused when Tx metadata moved
to a dynamic field.
- MLX5_ALARM_TIMEOUT_US became unused when reworking link status wait.
- MLX5_FLOW_SFT_HLIST_ARRAY_SIZE was never used in hash list handling.
- MLX5_FLOW_MIN_ID_POOL_SIZE and MLX5_ID_GENERATION_ARRAY_FACTOR became
unused when the flow ID generator was replaced by ipool.
- MLX5_RSSQ_DEFAULT_NUM was used in the old per-thread flow workspace.
- MLX5_FLOW_TABLE_HWS_POLICY became unused because meter is not supported
in HWS.
- IPPROTO_MPLS became unused because MPLS over IP is not supported.
- MLX5_L4_RSS_TYPES has never been used.
- ETH_TYPE_IPV4/V6_VXLAN were never used in HWS.
- PCI_DRV_FLAGS became unused when migrating to bus-agnostic probing.
Fixes: 9bf26e1318e3 ("ethdev: move egress metadata to dynamic field")
Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to complete")
Fixes: f3020a331dca ("net/mlx5: optimize hash list table allocate on demand")
Fixes: 4ae8825c5085 ("net/mlx5: use indexed pool as id generator")
Fixes: dc7c5e0aa905 ("net/mlx5: fix flow workspace destruction")
Fixes: 645f240d1cd5 ("net/mlx5: remove unsupported flow meter action in HWS")
Fixes: 14ad99d78a46 ("net/mlx5: remove unsupported flow item MPLS over IP")
Fixes: ae67e3c43dd5 ("net/mlx5: support RSS expansion in non-template HWS setup")
Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer")
Fixes: a7f34989e9ad ("net/mlx5: migrate to bus-agnostic common interface")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 2 --
drivers/net/mlx5/mlx5.c | 3 ---
drivers/net/mlx5/mlx5.h | 1 -
drivers/net/mlx5/mlx5_defs.h | 6 ------
drivers/net/mlx5/mlx5_flow.h | 4 ----
drivers/net/mlx5/mlx5_rxtx_vec.h | 7 -------
drivers/net/mlx5/windows/mlx5_os.h | 2 --
7 files changed, 25 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 4afe124769..9162dbeab2 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -6,8 +6,6 @@
#define GTP_PDU_SC 0x85
#define BAD_PORT 0xBAD
-#define ETH_TYPE_IPV4_VXLAN 0x0800
-#define ETH_TYPE_IPV6_VXLAN 0x86DD
#define UDP_GTPU_PORT 2152
#define UDP_VXLAN_PORT 4789
#define UDP_PORT_MPLS 6635
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index c42a0ad7ff..711781ed34 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -384,9 +384,6 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
},
};
-#define MLX5_FLOW_MIN_ID_POOL_SIZE 512
-#define MLX5_ID_GENERATION_ARRAY_FACTOR 16
-
#define MLX5_FLOW_TABLE_HLIST_ARRAY_SIZE 1024
#define MLX5_RXQ_ENH_CQE_COMP_MASK 0x80
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index a5dde56ed9..5157aefe31 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1189,7 +1189,6 @@ struct mlx5_flow_tbl_resource {
#define MLX5_FLOW_TABLE_LEVEL_METER (MLX5_MAX_TABLES - 3)
#define MLX5_FLOW_TABLE_LEVEL_POLICY (MLX5_MAX_TABLES - 4)
#define MLX5_MAX_TABLES_EXTERNAL MLX5_FLOW_TABLE_LEVEL_POLICY
-#define MLX5_FLOW_TABLE_HWS_POLICY (MLX5_MAX_TABLES - 10)
#define MLX5_MAX_TABLES_FDB UINT16_MAX
#define MLX5_FLOW_TABLE_FACTOR 10
diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h
index dc5216cb24..80e3a28687 100644
--- a/drivers/net/mlx5/mlx5_defs.h
+++ b/drivers/net/mlx5/mlx5_defs.h
@@ -46,9 +46,6 @@
/* Maximum number of DCS created per port. */
#define MLX5_HWS_CNT_DCS_NUM 4
-/* Alarm timeout. */
-#define MLX5_ALARM_TIMEOUT_US 100000
-
/* Maximum number of extended statistics counters. */
#define MLX5_MAX_XSTATS 64
@@ -170,9 +167,6 @@
/* Size of the hash table for tag table. */
#define MLX5_TAGS_HLIST_ARRAY_SIZE (1 << 15)
-/* Size fo the hash table for SFT table. */
-#define MLX5_FLOW_SFT_HLIST_ARRAY_SIZE 4096
-
/* Hairpin TX/RX queue configuration parameters. */
#define MLX5_HAIRPIN_QUEUE_STRIDE 6
#define MLX5_HAIRPIN_JUMBO_LOG_SIZE (14 + 2)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 3303065f87..b4d743ea52 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -417,10 +417,6 @@ enum mlx5_feature_name {
#define MLX5_FLOW_XCAP_ACTIONS (MLX5_FLOW_ACTION_ENCAP | MLX5_FLOW_ACTION_DECAP)
-#ifndef IPPROTO_MPLS
-#define IPPROTO_MPLS 137
-#endif
-
/* UDP port number for MPLS */
#define MLX5_UDP_PORT_MPLS 6635
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.h b/drivers/net/mlx5/mlx5_rxtx_vec.h
index 77c3f4efa0..672e301f77 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec.h
@@ -13,13 +13,6 @@
#include "mlx5_autoconf.h"
-/* HW checksum offload capabilities of vectorized Tx. */
-#define MLX5_VEC_TX_CKSUM_OFFLOAD_CAP \
- (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
- RTE_ETH_TX_OFFLOAD_UDP_CKSUM | \
- RTE_ETH_TX_OFFLOAD_TCP_CKSUM | \
- RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)
-
/*
* Compile time sanity check for vectorized functions.
*/
diff --git a/drivers/net/mlx5/windows/mlx5_os.h b/drivers/net/mlx5/windows/mlx5_os.h
index 8b58265687..7085e9b258 100644
--- a/drivers/net/mlx5/windows/mlx5_os.h
+++ b/drivers/net/mlx5/windows/mlx5_os.h
@@ -12,8 +12,6 @@ enum {
MLX5_FS_PATH_MAX = MLX5_DEVX_DEVICE_PNP_SIZE + 1
};
-#define PCI_DRV_FLAGS 0
-
#define MLX5_NAMESIZE MLX5_FS_NAME_MAX
enum mlx5_sw_parsing_offloads {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.607105184 +0200
+++ 0026-net-mlx5-remove-useless-constants.patch 2025-12-25 11:16:35.479935000 +0200
@@ -1 +1 @@
-From 9d3788534cba7cc3424e2a83db6b186211d4e94f Mon Sep 17 00:00:00 2001
+From 88c6d25de97b6d7769e1d1bd85d4704d107b9087 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9d3788534cba7cc3424e2a83db6b186211d4e94f ]
+
@@ -30 +31,0 @@
-Cc: stable@dpdk.org
@@ -34,8 +35,8 @@
- drivers/net/mlx5/hws/mlx5dr_definer.c | 2 --
- drivers/net/mlx5/mlx5.c | 3 ---
- drivers/net/mlx5/mlx5.h | 1 -
- drivers/net/mlx5/mlx5_defs.h | 6 ------
- drivers/net/mlx5/mlx5_flow.h | 10 ----------
- drivers/net/mlx5/mlx5_rxtx_vec.h | 7 -------
- drivers/net/mlx5/windows/mlx5_os.h | 2 --
- 7 files changed, 31 deletions(-)
+ drivers/net/mlx5/hws/mlx5dr_definer.c | 2 --
+ drivers/net/mlx5/mlx5.c | 3 ---
+ drivers/net/mlx5/mlx5.h | 1 -
+ drivers/net/mlx5/mlx5_defs.h | 6 ------
+ drivers/net/mlx5/mlx5_flow.h | 4 ----
+ drivers/net/mlx5/mlx5_rxtx_vec.h | 7 -------
+ drivers/net/mlx5/windows/mlx5_os.h | 2 --
+ 7 files changed, 25 deletions(-)
@@ -44 +45 @@
-index 1c6b3e38c4..afa70bf793 100644
+index 4afe124769..9162dbeab2 100644
@@ -47 +48,2 @@
-@@ -9,8 +9,6 @@
+@@ -6,8 +6,6 @@
+
@@ -50 +51,0 @@
- #define BAD_SQN 0xBAD
@@ -53,3 +54,3 @@
- #define UDP_VXLAN_PORT 4789
- #define UDP_VXLAN_GPE_PORT 4790
- #define UDP_GTPU_PORT 2152
+ #define UDP_GTPU_PORT 2152
+ #define UDP_VXLAN_PORT 4789
+ #define UDP_PORT_MPLS 6635
@@ -57 +58 @@
-index b018a4f0e2..4705c30801 100644
+index c42a0ad7ff..711781ed34 100644
@@ -60 +61 @@
-@@ -394,9 +394,6 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
+@@ -384,9 +384,6 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
@@ -71 +72 @@
-index 07418b0922..233cb416cb 100644
+index a5dde56ed9..5157aefe31 100644
@@ -74 +75 @@
-@@ -1259,7 +1259,6 @@ struct mlx5_flow_tbl_resource {
+@@ -1189,7 +1189,6 @@ struct mlx5_flow_tbl_resource {
@@ -80,2 +81,2 @@
- #define MLX5_FLOW_TABLE_PTYPE_RSS_NUM 1024
- #define MLX5_FLOW_TABLE_PTYPE_RSS_LAST (MLX5_MAX_TABLES - 11)
+ #define MLX5_FLOW_TABLE_FACTOR 10
+
@@ -83 +84 @@
-index d326fec000..b8e5122323 100644
+index dc5216cb24..80e3a28687 100644
@@ -107 +108 @@
-index ff61706054..1dca6e0532 100644
+index 3303065f87..b4d743ea52 100644
@@ -110,11 +111 @@
-@@ -222,9 +222,6 @@ struct mlx5_mirror {
- struct mlx5_mirror_clone clone[MLX5_MIRROR_MAX_CLONES_NUM];
- };
-
--/* Default queue number. */
--#define MLX5_RSSQ_DEFAULT_NUM 16
--
- #define MLX5_FLOW_LAYER_OUTER_L2 (1u << 0)
- #define MLX5_FLOW_LAYER_OUTER_L3_IPV4 (1u << 1)
- #define MLX5_FLOW_LAYER_OUTER_L3_IPV6 (1u << 2)
-@@ -469,10 +466,6 @@ struct mlx5_mirror {
+@@ -417,10 +417,6 @@ enum mlx5_feature_name {
@@ -128,12 +119,2 @@
- #define MLX5_IPV6_HDR_ECN_MASK 0x3
- #define MLX5_IPV6_HDR_DSCP_SHIFT 2
-
-@@ -519,9 +512,6 @@ struct mlx5_mirror {
- RTE_ETH_RSS_NONFRAG_IPV4_TCP | RTE_ETH_RSS_NONFRAG_IPV4_UDP | \
- RTE_ETH_RSS_NONFRAG_IPV4_OTHER)
-
--/* Valid L4 RSS types */
--#define MLX5_L4_RSS_TYPES (RTE_ETH_RSS_L4_SRC_ONLY | RTE_ETH_RSS_L4_DST_ONLY)
--
- /* IBV hash source bits for IPV4. */
- #define MLX5_IPV4_IBV_RX_HASH (IBV_RX_HASH_SRC_IPV4 | IBV_RX_HASH_DST_IPV4)
+ /* UDP port number for MPLS */
+ #define MLX5_UDP_PORT_MPLS 6635
@@ -160 +141 @@
-index fb7198c244..57d147bd8c 100644
+index 8b58265687..7085e9b258 100644
@@ -163,3 +144,3 @@
-@@ -7,8 +7,6 @@
-
- #include "mlx5_win_ext.h"
+@@ -12,8 +12,6 @@ enum {
+ MLX5_FS_PATH_MAX = MLX5_DEVX_DEVICE_PNP_SIZE + 1
+ };
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: remove unused macros' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (24 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/mlx5: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Shani Peretz
` (74 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/0e11c19fb0deaade09bc0d2b04074fa6241991f5
Thanks.
Shani
---
From 0e11c19fb0deaade09bc0d2b04074fa6241991f5 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:26 +0100
Subject: [PATCH] net/mlx5: remove unused macros
[ upstream commit f2638f1f388c9300850d217f9a820c1c40f78a77 ]
- IS_BATCH_CNT became unused when removing flow counter container.
- MLX5_ETHER_TYPE_FROM_HEADER was used in the first integrity item check.
- ERRNO_SAFE was used in the old logging macros.
Fixes: 994829e695c0 ("net/mlx5: remove single counter container")
Fixes: 23b0a8b298b1 ("net/mlx5: fix integrity item validation and translation")
Fixes: a170a30d22a8 ("net/mlx5: use dynamic logging")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/net/mlx5/mlx5.h | 2 --
drivers/net/mlx5/mlx5_flow.h | 7 -------
drivers/net/mlx5/mlx5_utils.h | 3 ---
3 files changed, 12 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 5157aefe31..a20efed3ae 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -452,8 +452,6 @@ struct mlx5_hw_q {
#define MLX5_MAX_PENDING_QUERIES 4
#define MLX5_CNT_MR_ALLOC_BULK 64
#define MLX5_CNT_SHARED_OFFSET 0x80000000
-#define IS_BATCH_CNT(cnt) (((cnt) & (MLX5_CNT_SHARED_OFFSET - 1)) >= \
- MLX5_CNT_BATCH_OFFSET)
#define MLX5_CNT_SIZE (sizeof(struct mlx5_flow_counter))
#define MLX5_AGE_SIZE (sizeof(struct mlx5_age_param))
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index b4d743ea52..805b346d3c 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1550,13 +1550,6 @@ struct rte_flow_template_table {
(((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) || \
((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ_SORT))
-/* extract next protocol type from Ethernet & VLAN headers */
-#define MLX5_ETHER_TYPE_FROM_HEADER(_s, _m, _itm, _prt) do { \
- (_prt) = ((const struct _s *)(_itm)->mask)->_m; \
- (_prt) &= ((const struct _s *)(_itm)->spec)->_m; \
- (_prt) = rte_be_to_cpu_16((_prt)); \
-} while (0)
-
/* array of valid combinations of RX Hash fields for RSS */
static const uint64_t mlx5_rss_hash_fields[] = {
MLX5_RSS_HASH_IPV4,
diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h
index 82e8298781..3981bb7807 100644
--- a/drivers/net/mlx5/mlx5_utils.h
+++ b/drivers/net/mlx5/mlx5_utils.h
@@ -25,9 +25,6 @@
/* Convert a bit number to the corresponding 64-bit mask */
#define MLX5_BITSHIFT(v) (UINT64_C(1) << (v))
-/* Save and restore errno around argument evaluation. */
-#define ERRNO_SAFE(x) ((errno = (int []){ errno, ((x), 0) }[0]))
-
extern int mlx5_logtype;
#define MLX5_NET_LOG_PREFIX "mlx5_net"
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.669149925 +0200
+++ 0027-net-mlx5-remove-unused-macros.patch 2025-12-25 11:16:35.494905000 +0200
@@ -1 +1 @@
-From f2638f1f388c9300850d217f9a820c1c40f78a77 Mon Sep 17 00:00:00 2001
+From 0e11c19fb0deaade09bc0d2b04074fa6241991f5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f2638f1f388c9300850d217f9a820c1c40f78a77 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 233cb416cb..4d9cf6b70b 100644
+index 5157aefe31..a20efed3ae 100644
@@ -26 +27 @@
-@@ -509,8 +509,6 @@ struct __rte_cache_aligned mlx5_hw_q {
+@@ -452,8 +452,6 @@ struct mlx5_hw_q {
@@ -36 +37 @@
-index 1dca6e0532..c525516672 100644
+index b4d743ea52..805b346d3c 100644
@@ -39 +40 @@
-@@ -1888,13 +1888,6 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
+@@ -1550,13 +1550,6 @@ struct rte_flow_template_table {
@@ -54 +55 @@
-index c65839c5d9..95866351c2 100644
+index 82e8298781..3981bb7807 100644
@@ -57,3 +58,3 @@
-@@ -22,9 +22,6 @@
-
- #include "mlx5_defs.h"
+@@ -25,9 +25,6 @@
+ /* Convert a bit number to the corresponding 64-bit mask */
+ #define MLX5_BITSHIFT(v) (UINT64_C(1) << (v))
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: fix NVIDIA bifurcated driver presentation link' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (25 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/mlx5: remove unused macros' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'app/dma-perf: fix use after free' " Shani Peretz
` (73 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Kevin Traynor; +Cc: Andre Muezerie, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/090335dbe795e2bbe01ec59f3ef0c8a01621b70c
Thanks.
Shani
---
From 090335dbe795e2bbe01ec59f3ef0c8a01621b70c Mon Sep 17 00:00:00 2001
From: Kevin Traynor <ktraynor@redhat.com>
Date: Mon, 29 Sep 2025 12:31:10 +0100
Subject: [PATCH] doc: fix NVIDIA bifurcated driver presentation link
[ upstream commit f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 ]
Fix link for Nvidia bifurcated DPDK PMD presentation.
Bugzilla ID: 1793
Fixes: d052a9a7d5f9 ("doc: fix link about bifurcated model in Linux guide")
Reported-by: Andre Muezerie <andremue@linux.microsoft.com>
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
doc/guides/linux_gsg/linux_drivers.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst
index 852a60f5c0..26c05cd8a5 100644
--- a/doc/guides/linux_gsg/linux_drivers.rst
+++ b/doc/guides/linux_gsg/linux_drivers.rst
@@ -384,7 +384,7 @@ Such model has the following benefits:
More about the bifurcated driver can be found in
NVIDIA `bifurcated PMD
-<https://www.dpdk.org/wp-content/uploads/sites/35/2016/10/Day02-Session04-RonyEfraim-Userspace2016.pdf>`_ presentation.
+<https://www.dpdk.org/wp-content/uploads/sites/23/2016/10/Day02-Session04-RonyEfraim-Userspace2016.pdf>`_ presentation.
.. _uio:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.720894728 +0200
+++ 0028-doc-fix-NVIDIA-bifurcated-driver-presentation-link.patch 2025-12-25 11:16:35.500019000 +0200
@@ -1 +1 @@
-From f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 Mon Sep 17 00:00:00 2001
+From 090335dbe795e2bbe01ec59f3ef0c8a01621b70c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 039823d61e..739fc0226c 100644
+index 852a60f5c0..26c05cd8a5 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/dma-perf: fix use after free' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (26 preceding siblings ...)
2025-12-25 9:17 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'app/dma-perf: fix on-flight DMA when verifying data' " Shani Peretz
` (72 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Vamsi Attunuru, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/4053a3ac02b377d16898e47614bc1c5bc40fddda
Thanks.
Shani
---
From 4053a3ac02b377d16898e47614bc1c5bc40fddda Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Mon, 20 Oct 2025 12:10:52 +0800
Subject: [PATCH] app/dma-perf: fix use after free
[ upstream commit e605615db7d4b104f41fc8f409eb569e962710d8 ]
The test_case->eal_args was pointer the entry of cfgfile, it will be
used later, but the cfgfile was closed in load_configs(). This commit
fix it by using strdup.
Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Vamsi Attunuru <vattunuru@marvell.com>
---
app/test-dma-perf/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c
index 544784df50..2039fa4dbc 100644
--- a/app/test-dma-perf/main.c
+++ b/app/test-dma-perf/main.c
@@ -436,6 +436,8 @@ load_configs(const char *path)
section_name, "test_seconds"));
test_case->eal_args = rte_cfgfile_get_entry(cfgfile, section_name, "eal_args");
+ if (test_case->eal_args != NULL)
+ test_case->eal_args = strdup(test_case->eal_args);
test_case->is_valid = true;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.767025892 +0200
+++ 0029-app-dma-perf-fix-use-after-free.patch 2025-12-25 11:16:35.508961000 +0200
@@ -1 +1 @@
-From e605615db7d4b104f41fc8f409eb569e962710d8 Mon Sep 17 00:00:00 2001
+From 4053a3ac02b377d16898e47614bc1c5bc40fddda Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e605615db7d4b104f41fc8f409eb569e962710d8 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 4201cc02a0..64057788c3 100644
+index 544784df50..2039fa4dbc 100644
@@ -23 +24 @@
-@@ -489,6 +489,8 @@ load_configs(const char *path)
+@@ -436,6 +436,8 @@ load_configs(const char *path)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/dma-perf: fix on-flight DMA when verifying data' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (27 preceding siblings ...)
2025-12-25 9:17 ` patch 'app/dma-perf: fix use after free' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Shani Peretz
` (71 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/548e62ca1a3df0b3a832f43dd8889cd908a99e27
Thanks.
Shani
---
From 548e62ca1a3df0b3a832f43dd8889cd908a99e27 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Tue, 25 Nov 2025 09:51:29 +0800
Subject: [PATCH] app/dma-perf: fix on-flight DMA when verifying data
[ upstream commit d1b3b669674a17c58eabf3d631b21aaad7232403 ]
There maybe on-flight DMA when verify_data() because the DMA device
may still working when worker exit.
This commit add wait DMA complete stage before worker exit.
Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-dma-perf/benchmark.c | 45 +++++++++++++++++++++++++++--------
1 file changed, 35 insertions(+), 10 deletions(-)
diff --git a/app/test-dma-perf/benchmark.c b/app/test-dma-perf/benchmark.c
index 9b1f58c78c..084c953b02 100644
--- a/app/test-dma-perf/benchmark.c
+++ b/app/test-dma-perf/benchmark.c
@@ -18,7 +18,6 @@
#define MAX_DMA_CPL_NB 255
#define TEST_WAIT_U_SECOND 10000
-#define POLL_MAX 1000
#define CSV_LINE_DMA_FMT "Scenario %u,%u,%s,%u,%u,%u,%u,%.2lf,%" PRIu64 ",%.3lf,%.3lf\n"
#define CSV_LINE_CPU_FMT "Scenario %u,%u,NA,NA,NA,%u,%u,%.2lf,%" PRIu64 ",%.3lf,%.3lf\n"
@@ -215,6 +214,40 @@ do_dma_submit_and_poll(uint16_t dev_id, uint64_t *async_cnt,
worker_info->total_cpl += nr_cpl;
}
+static int
+do_dma_submit_and_wait_cpl(uint16_t dev_id, uint64_t async_cnt)
+{
+#define MAX_WAIT_MSEC 1000
+#define MAX_POLL 1000
+#define DEQ_SZ 64
+ enum rte_dma_vchan_status st;
+ uint32_t poll_cnt = 0;
+ uint32_t wait_ms = 0;
+ uint16_t nr_cpl;
+
+ rte_dma_submit(dev_id, 0);
+
+ if (rte_dma_vchan_status(dev_id, 0, &st) < 0) {
+ rte_delay_ms(MAX_WAIT_MSEC);
+ goto wait_cpl;
+ }
+
+ while (st == RTE_DMA_VCHAN_ACTIVE && wait_ms++ < MAX_WAIT_MSEC) {
+ rte_delay_ms(1);
+ rte_dma_vchan_status(dev_id, 0, &st);
+ }
+
+wait_cpl:
+ while ((async_cnt > 0) && (poll_cnt++ < MAX_POLL)) {
+ nr_cpl = rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, NULL);
+ async_cnt -= nr_cpl;
+ }
+ if (async_cnt > 0)
+ PRINT_ERR("Error: wait DMA %u failed!\n", dev_id);
+
+ return async_cnt == 0 ? 0 : -1;
+}
+
static inline int
do_dma_mem_copy(void *p)
{
@@ -226,10 +259,8 @@ do_dma_mem_copy(void *p)
const uint32_t buf_size = para->buf_size;
struct rte_mbuf **srcs = para->srcs;
struct rte_mbuf **dsts = para->dsts;
- uint16_t nr_cpl;
uint64_t async_cnt = 0;
uint32_t i;
- uint32_t poll_cnt = 0;
int ret;
worker_info->stop_flag = false;
@@ -260,13 +291,7 @@ dma_copy:
break;
}
- rte_dma_submit(dev_id, 0);
- while ((async_cnt > 0) && (poll_cnt++ < POLL_MAX)) {
- nr_cpl = rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, NULL);
- async_cnt -= nr_cpl;
- }
-
- return 0;
+ return do_dma_submit_and_wait_cpl(dev_id, async_cnt);
}
static inline int
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.814178465 +0200
+++ 0030-app-dma-perf-fix-on-flight-DMA-when-verifying-data.patch 2025-12-25 11:16:35.518105000 +0200
@@ -1 +1 @@
-From d1b3b669674a17c58eabf3d631b21aaad7232403 Mon Sep 17 00:00:00 2001
+From 548e62ca1a3df0b3a832f43dd8889cd908a99e27 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Mon, 20 Oct 2025 12:11:03 +0800
+Date: Tue, 25 Nov 2025 09:51:29 +0800
@@ -5,0 +6,2 @@
+[ upstream commit d1b3b669674a17c58eabf3d631b21aaad7232403 ]
+
@@ -16,2 +18,2 @@
- app/test-dma-perf/benchmark.c | 71 ++++++++++++++++++++++-------------
- 1 file changed, 44 insertions(+), 27 deletions(-)
+ app/test-dma-perf/benchmark.c | 45 +++++++++++++++++++++++++++--------
+ 1 file changed, 35 insertions(+), 10 deletions(-)
@@ -20 +22 @@
-index 6643ccc95f..4ce95d0f7b 100644
+index 9b1f58c78c..084c953b02 100644
@@ -23 +25 @@
-@@ -19,7 +19,6 @@
+@@ -18,7 +18,6 @@
@@ -31 +33 @@
-@@ -293,6 +292,45 @@ do_dma_submit_and_poll(uint16_t dev_id, uint64_t *async_cnt,
+@@ -215,6 +214,40 @@ do_dma_submit_and_poll(uint16_t dev_id, uint64_t *async_cnt,
@@ -36 +38 @@
-+do_dma_submit_and_wait_cpl(uint16_t dev_id, uint64_t async_cnt, bool use_ops)
++do_dma_submit_and_wait_cpl(uint16_t dev_id, uint64_t async_cnt)
@@ -41 +42,0 @@
-+ struct rte_dma_op *op[DEQ_SZ];
@@ -47,2 +48 @@
-+ if (!use_ops)
-+ rte_dma_submit(dev_id, 0);
++ rte_dma_submit(dev_id, 0);
@@ -62,4 +62 @@
-+ if (use_ops)
-+ nr_cpl = rte_dma_dequeue_ops(dev_id, 0, op, DEQ_SZ);
-+ else
-+ nr_cpl = rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, NULL);
++ nr_cpl = rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, NULL);
@@ -75 +72 @@
- do_dma_plain_mem_copy(void *p)
+ do_dma_mem_copy(void *p)
@@ -77 +74 @@
-@@ -304,10 +342,8 @@ do_dma_plain_mem_copy(void *p)
+@@ -226,10 +259,8 @@ do_dma_mem_copy(void *p)
@@ -88,25 +85 @@
-@@ -338,13 +374,7 @@ dma_copy:
- break;
- }
-
-- rte_dma_submit(dev_id, 0);
-- while ((async_cnt > 0) && (poll_cnt++ < POLL_MAX)) {
-- nr_cpl = rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, NULL);
-- async_cnt -= nr_cpl;
-- }
--
-- return 0;
-+ return do_dma_submit_and_wait_cpl(dev_id, async_cnt, false);
- }
-
- static inline int
-@@ -360,8 +390,6 @@ do_dma_sg_mem_copy(void *p)
- const uint16_t dev_id = para->dev_id;
- uint32_t nr_buf = para->nr_buf;
- uint64_t async_cnt = 0;
-- uint32_t poll_cnt = 0;
-- uint16_t nr_cpl;
- uint32_t i, j;
- int ret;
-
-@@ -397,13 +425,7 @@ dma_copy:
+@@ -260,13 +291,7 @@ dma_copy:
@@ -123,28 +96 @@
-+ return do_dma_submit_and_wait_cpl(dev_id, async_cnt, false);
- }
-
- static inline int
-@@ -414,11 +436,11 @@ do_dma_enq_deq_mem_copy(void *p)
- volatile struct worker_info *worker_info = &(para->worker_info);
- struct rte_dma_op **dma_ops = para->dma_ops;
- uint16_t kick_batch = para->kick_batch, sz;
-- uint16_t enq, deq, poll_cnt;
-- uint64_t tenq, tdeq;
- const uint16_t dev_id = para->dev_id;
- uint32_t nr_buf = para->nr_buf;
- struct rte_dma_op *op[DEQ_SZ];
-+ uint64_t tenq, tdeq;
-+ uint16_t enq, deq;
- uint32_t i;
-
- worker_info->stop_flag = false;
-@@ -454,11 +476,7 @@ do_dma_enq_deq_mem_copy(void *p)
- break;
- }
-
-- poll_cnt = 0;
-- while ((tenq != tdeq) && (poll_cnt++ < POLL_MAX))
-- tdeq += rte_dma_dequeue_ops(dev_id, 0, op, DEQ_SZ);
--
-- return 0;
-+ return do_dma_submit_and_wait_cpl(dev_id, tenq - tdeq, true);
++ return do_dma_submit_and_wait_cpl(dev_id, async_cnt);
@@ -154,8 +99,0 @@
-@@ -614,7 +632,6 @@ setup_memory_env(struct test_configure *cfg, uint32_t nr_buf,
- }
-
- if (cfg->use_ops) {
--
- nr_buf /= RTE_MAX(nb_src_sges, nb_dst_sges);
- *dma_ops = rte_zmalloc(NULL, nr_buf * (sizeof(struct rte_dma_op *)),
- RTE_CACHE_LINE_SIZE);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (28 preceding siblings ...)
2025-12-25 9:17 ` patch 'app/dma-perf: fix on-flight DMA when verifying data' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa: fix resource leak' " Shani Peretz
` (70 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Amiya Ranjan Mohakud; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/1c2839881e11988fd7f09f11bed93a623b3c888a
Thanks.
Shani
---
From 1c2839881e11988fd7f09f11bed93a623b3c888a Mon Sep 17 00:00:00 2001
From: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Date: Thu, 23 Oct 2025 14:00:19 +0530
Subject: [PATCH] net/vmxnet3: disable RSS for single queue for ESX8.0+
[ upstream commit 9a219380b148c1837e54eb15cff501cba1ba842a ]
This fixes the issue of v4 RSS configuration failure in
vmxnet3_v4_rss_configure() while writing to BAR register.
It's very specific to single queue configuration.
https://mails.dpdk.org/archives/users/2025-April/008236.html
Bugzilla ID: 1789
Fixes: 52ec00fd1474e8 ("net/vmxnet3: fix RSS setting on v4")
Signed-off-by: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
---
drivers/net/vmxnet3/vmxnet3_ethdev.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index d4e20800b4..845bb7d81e 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -609,6 +609,13 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
PMD_INIT_FUNC_TRACE();
+ /* Disabling RSS for single queue pair */
+ if (dev->data->nb_rx_queues == 1 &&
+ dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) {
+ dev->data->dev_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE;
+ PMD_INIT_LOG(ERR, "WARN: Disabling RSS for single Rx queue");
+ }
+
if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG)
dev->data->dev_conf.rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.861251431 +0200
+++ 0031-net-vmxnet3-disable-RSS-for-single-queue-for-ESX8.0.patch 2025-12-25 11:16:35.528900000 +0200
@@ -1 +1 @@
-From 9a219380b148c1837e54eb15cff501cba1ba842a Mon Sep 17 00:00:00 2001
+From 1c2839881e11988fd7f09f11bed93a623b3c888a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9a219380b148c1837e54eb15cff501cba1ba842a ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index b0c19c5c7c..da9af08207 100644
+index d4e20800b4..845bb7d81e 100644
@@ -25 +26 @@
-@@ -611,6 +611,13 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
+@@ -609,6 +609,13 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa: fix resource leak' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (29 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Shani Peretz
` (69 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Vanshika Shukla; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/2df9f3f2c249b5ede674d3e431114a45eb7bae76
Thanks.
Shani
---
From 2df9f3f2c249b5ede674d3e431114a45eb7bae76 Mon Sep 17 00:00:00 2001
From: Vanshika Shukla <vanshika.shukla@nxp.com>
Date: Fri, 24 Oct 2025 11:49:06 +0530
Subject: [PATCH] net/dpaa: fix resource leak
[ upstream commit e7665de896836e99866ef8016bbaa12223e1cfb7 ]
This patch correct the cleanup order of PCD and
FMan handles to prevent resource leaks reported by
coverity tool.
Coverity issue: 362787
Fixes: 4defbc8cbb6d ("net/dpaa: support FMCless mode")
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/net/dpaa/dpaa_flow.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c
index 690ba6bcb3..4ce8e88d66 100644
--- a/drivers/net/dpaa/dpaa_flow.c
+++ b/drivers/net/dpaa/dpaa_flow.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2017-2019,2021 NXP
+ * Copyright 2017-2019,2021-2025 NXP
*/
/* System headers */
@@ -889,9 +889,9 @@ int dpaa_fm_init(void)
/* FM PCD Enable */
ret = fm_pcd_enable(pcd_handle);
if (ret) {
- fm_close(fman_handle);
- fm_pcd_close(pcd_handle);
DPAA_PMD_ERR("fm_pcd_enable: Failed");
+ fm_pcd_close(pcd_handle);
+ fm_close(fman_handle);
return -1;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.908564344 +0200
+++ 0032-net-dpaa-fix-resource-leak.patch 2025-12-25 11:16:35.534915000 +0200
@@ -1 +1 @@
-From e7665de896836e99866ef8016bbaa12223e1cfb7 Mon Sep 17 00:00:00 2001
+From 2df9f3f2c249b5ede674d3e431114a45eb7bae76 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e7665de896836e99866ef8016bbaa12223e1cfb7 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 2a22b23c8f..417b9b6fbb 100644
+index 690ba6bcb3..4ce8e88d66 100644
@@ -25 +26 @@
-- * Copyright 2017-2019,2021-2024 NXP
+- * Copyright 2017-2019,2021 NXP
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: reduce memory size of ring descriptors' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (30 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/dpaa: fix resource leak' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/ngbe: " Shani Peretz
` (68 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/ef169a015e35f90a9a1ccf9e014d23f8b010dbc3
Thanks.
Shani
---
From ef169a015e35f90a9a1ccf9e014d23f8b010dbc3 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:26 +0800
Subject: [PATCH] net/txgbe: reduce memory size of ring descriptors
[ upstream commit 843c59d1c2cef10a75037ebc73460f2ed28f9839 ]
The memory of ring descriptors was allocated in size of the maximum ring
size. It seems not friendly to our hardware on some domestic platforms.
Change it to allocate in size of the real ring size.
Fixes: 226bf98eda87 ("net/txgbe: add Rx and Tx queues setup and release")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 12d8deb072..89865ec606 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -2335,13 +2335,9 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
if (txq == NULL)
return -ENOMEM;
- /*
- * Allocate TX ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate TX ring hardware descriptors. */
tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
- sizeof(struct txgbe_tx_desc) * TXGBE_RING_DESC_MAX,
+ sizeof(struct txgbe_tx_desc) * nb_desc,
TXGBE_ALIGN, socket_id);
if (tz == NULL) {
txgbe_tx_queue_release(txq);
@@ -2579,6 +2575,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
uint16_t len;
struct txgbe_adapter *adapter = TXGBE_DEV_ADAPTER(dev);
uint64_t offloads;
+ uint32_t size;
PMD_INIT_FUNC_TRACE();
hw = TXGBE_DEV_HW(dev);
@@ -2629,13 +2626,10 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
*/
rxq->pkt_type_mask = TXGBE_PTID_MASK;
- /*
- * Allocate RX ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate RX ring hardware descriptors. */
+ size = (nb_desc + RTE_PMD_TXGBE_RX_MAX_BURST) * sizeof(struct txgbe_rx_desc);
rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
- RX_RING_SZ, TXGBE_ALIGN, socket_id);
+ size, TXGBE_ALIGN, socket_id);
if (rz == NULL) {
txgbe_rx_queue_release(rxq);
return -ENOMEM;
@@ -2645,7 +2639,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
/*
* Zero init all the descriptors in the ring.
*/
- memset(rz->addr, 0, RX_RING_SZ);
+ memset(rz->addr, 0, size);
/*
* Modified to setup VFRDT for Virtual Function
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:37.956554518 +0200
+++ 0033-net-txgbe-reduce-memory-size-of-ring-descriptors.patch 2025-12-25 11:16:35.544846000 +0200
@@ -1 +1 @@
-From 843c59d1c2cef10a75037ebc73460f2ed28f9839 Mon Sep 17 00:00:00 2001
+From ef169a015e35f90a9a1ccf9e014d23f8b010dbc3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 843c59d1c2cef10a75037ebc73460f2ed28f9839 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index c606180741..d77db1efa2 100644
+index 12d8deb072..89865ec606 100644
@@ -22 +23 @@
-@@ -2521,13 +2521,9 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -2335,13 +2335,9 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
@@ -38 +39 @@
-@@ -2781,6 +2777,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2579,6 +2575,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -46 +47 @@
-@@ -2831,13 +2828,10 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2629,13 +2626,10 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -63 +64 @@
-@@ -2847,7 +2841,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2645,7 +2639,7 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ngbe: reduce memory size of ring descriptors' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (31 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Shani Peretz
` (67 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/e668b73ac4a4e4c07eebf19fb15b4506b185deaf
Thanks.
Shani
---
From e668b73ac4a4e4c07eebf19fb15b4506b185deaf Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:27 +0800
Subject: [PATCH] net/ngbe: reduce memory size of ring descriptors
[ upstream commit 22d4fffbbc99ef2a229869e717a12b2e33c68a9c ]
The memory of ring descriptors was allocated in size of the maximum ring
size. It seems not friendly to our hardware on some domestic platforms.
Change it to allocate in size of the real ring size.
Fixes: 43b7e5ea60ac ("net/ngbe: support Rx queue setup/release")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_rxtx.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c
index 4680ff91f1..c5db14a86e 100644
--- a/drivers/net/ngbe/ngbe_rxtx.c
+++ b/drivers/net/ngbe/ngbe_rxtx.c
@@ -1983,13 +1983,9 @@ ngbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
if (txq == NULL)
return -ENOMEM;
- /*
- * Allocate Tx ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate Tx ring hardware descriptors. */
tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
- sizeof(struct ngbe_tx_desc) * NGBE_RING_DESC_MAX,
+ sizeof(struct ngbe_tx_desc) * nb_desc,
NGBE_ALIGN, socket_id);
if (tz == NULL) {
ngbe_tx_queue_release(txq);
@@ -2236,6 +2232,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
uint16_t len;
struct ngbe_adapter *adapter = ngbe_dev_adapter(dev);
uint64_t offloads;
+ uint32_t size;
PMD_INIT_FUNC_TRACE();
hw = ngbe_dev_hw(dev);
@@ -2269,13 +2266,10 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
rxq->rx_deferred_start = rx_conf->rx_deferred_start;
rxq->offloads = offloads;
- /*
- * Allocate Rx ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate Rx ring hardware descriptors. */
+ size = (nb_desc + RTE_PMD_NGBE_RX_MAX_BURST) * sizeof(struct ngbe_rx_desc);
rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
- RX_RING_SZ, NGBE_ALIGN, socket_id);
+ size, NGBE_ALIGN, socket_id);
if (rz == NULL) {
ngbe_rx_queue_release(rxq);
return -ENOMEM;
@@ -2285,7 +2279,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
/*
* Zero init all the descriptors in the ring.
*/
- memset(rz->addr, 0, RX_RING_SZ);
+ memset(rz->addr, 0, size);
rxq->rdt_reg_addr = NGBE_REG_ADDR(hw, NGBE_RXWP(rxq->reg_idx));
rxq->rdh_reg_addr = NGBE_REG_ADDR(hw, NGBE_RXRP(rxq->reg_idx));
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.007475062 +0200
+++ 0034-net-ngbe-reduce-memory-size-of-ring-descriptors.patch 2025-12-25 11:16:35.553001000 +0200
@@ -1 +1 @@
-From 22d4fffbbc99ef2a229869e717a12b2e33c68a9c Mon Sep 17 00:00:00 2001
+From e668b73ac4a4e4c07eebf19fb15b4506b185deaf Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 22d4fffbbc99ef2a229869e717a12b2e33c68a9c ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index a60421293b..03ada844bf 100644
+index 4680ff91f1..c5db14a86e 100644
@@ -22 +23 @@
-@@ -2058,13 +2058,9 @@ ngbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -1983,13 +1983,9 @@ ngbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
@@ -38 +39 @@
-@@ -2324,6 +2320,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2236,6 +2232,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -46 +47 @@
-@@ -2357,13 +2354,10 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2269,13 +2266,10 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -63 +64 @@
-@@ -2373,7 +2367,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2285,7 +2279,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: fix VF Rx buffer size in config register' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (32 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/ngbe: " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: add device arguments for FDIR' " Shani Peretz
` (66 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/d4632a230e917fdfb4b555763aa3f929076931ce
Thanks.
Shani
---
From d4632a230e917fdfb4b555763aa3f929076931ce Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:28 +0800
Subject: [PATCH] net/txgbe: fix VF Rx buffer size in config register
[ upstream commit ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 ]
Refer to commit 8a3ef4b89e6d ("net/txgbe: fix Rx buffer size in
config register").
When round up buffer size to 1K, to configure the register, hardware
will receive packets exceeding the buffer size in LRO mode. It will
cause a segment fault in the receive function.
Fixes: 92144bb36c6f ("net/txgbe: support VF Rx/Tx")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 89865ec606..11df2eeafa 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -4910,7 +4910,7 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
*/
buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) -
RTE_PKTMBUF_HEADROOM);
- buf_size = ROUND_UP(buf_size, 1 << 10);
+ buf_size = ROUND_DOWN(buf_size, 1 << 10);
srrctl |= TXGBE_RXCFG_PKTLEN(buf_size);
/*
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.059444721 +0200
+++ 0035-net-txgbe-fix-VF-Rx-buffer-size-in-config-register.patch 2025-12-25 11:16:35.565812000 +0200
@@ -1 +1 @@
-From ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 Mon Sep 17 00:00:00 2001
+From d4632a230e917fdfb4b555763aa3f929076931ce Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index d77db1efa2..a3472bcf34 100644
+index 89865ec606..11df2eeafa 100644
@@ -25 +26 @@
-@@ -5256,7 +5256,7 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
+@@ -4910,7 +4910,7 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: add device arguments for FDIR' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (33 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Shani Peretz
` (65 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/6b9525772e962e2d051c7dafa1abf60fcfa3c061
Thanks.
Shani
---
From 6b9525772e962e2d051c7dafa1abf60fcfa3c061 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:31 +0800
Subject: [PATCH] net/txgbe: add device arguments for FDIR
[ upstream commit 7e18be9beef25ee60f9c04f757cb4361706ff818 ]
Since FDIR configuration is deprecated in generic ethdev device
configuration and move it into the device private data, there is no way
to configure the FDIR parameters.
Two device arguments "pkt-filter-size" and "pkt-filter-drop-queue" are
added, they just continue to use the previous naming convention.
Fixes: 5007ac13189d ("ethdev: remove deprecated Flow Director configuration")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_type.h | 4 ++++
drivers/net/txgbe/txgbe_ethdev.c | 22 +++++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h
index 3479639ec4..d39894c953 100644
--- a/drivers/net/txgbe/base/txgbe_type.h
+++ b/drivers/net/txgbe/base/txgbe_type.h
@@ -699,6 +699,8 @@ struct txgbe_phy_info {
#define TXGBE_DEVARG_FFE_MAIN "ffe_main"
#define TXGBE_DEVARG_FFE_PRE "ffe_pre"
#define TXGBE_DEVARG_FFE_POST "ffe_post"
+#define TXGBE_DEVARG_FDIR_PBALLOC "pkt-filter-size"
+#define TXGBE_DEVARG_FDIR_DROP_QUEUE "pkt-filter-drop-queue"
static const char * const txgbe_valid_arguments[] = {
TXGBE_DEVARG_BP_AUTO,
@@ -709,6 +711,8 @@ static const char * const txgbe_valid_arguments[] = {
TXGBE_DEVARG_FFE_MAIN,
TXGBE_DEVARG_FFE_PRE,
TXGBE_DEVARG_FFE_POST,
+ TXGBE_DEVARG_FDIR_PBALLOC,
+ TXGBE_DEVARG_FDIR_DROP_QUEUE,
NULL
};
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index f990fec7f1..22fb7fbdfd 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -497,8 +497,12 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
}
static void
-txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+txgbe_parse_devargs(struct rte_eth_dev *dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
+ struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ struct rte_devargs *devargs = pci_dev->device.devargs;
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct rte_kvargs *kvlist;
u16 auto_neg = 1;
u16 poll = 0;
@@ -508,6 +512,9 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
u16 ffe_main = 27;
u16 ffe_pre = 8;
u16 ffe_post = 44;
+ /* FDIR args */
+ u8 pballoc = 0;
+ u8 drop_queue = 127;
if (devargs == NULL)
goto null;
@@ -532,6 +539,10 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
&txgbe_handle_devarg, &ffe_pre);
rte_kvargs_process(kvlist, TXGBE_DEVARG_FFE_POST,
&txgbe_handle_devarg, &ffe_post);
+ rte_kvargs_process(kvlist, TXGBE_DEVARG_FDIR_PBALLOC,
+ &txgbe_handle_devarg, &pballoc);
+ rte_kvargs_process(kvlist, TXGBE_DEVARG_FDIR_DROP_QUEUE,
+ &txgbe_handle_devarg, &drop_queue);
rte_kvargs_free(kvlist);
null:
@@ -543,6 +554,9 @@ null:
hw->phy.ffe_main = ffe_main;
hw->phy.ffe_pre = ffe_pre;
hw->phy.ffe_post = ffe_post;
+
+ fdir_conf->pballoc = pballoc;
+ fdir_conf->drop_queue = drop_queue;
}
static int
@@ -630,7 +644,7 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
hw->isb_dma = TMZ_PADDR(mz);
hw->isb_mem = TMZ_VADDR(mz);
- txgbe_parse_devargs(hw, pci_dev->device.devargs);
+ txgbe_parse_devargs(eth_dev);
/* Initialize the shared code (base driver) */
err = txgbe_init_shared_code(hw);
if (err != 0) {
@@ -5593,7 +5607,9 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
TXGBE_DEVARG_FFE_SET "=<0-4>"
TXGBE_DEVARG_FFE_MAIN "=<uint16>"
TXGBE_DEVARG_FFE_PRE "=<uint16>"
- TXGBE_DEVARG_FFE_POST "=<uint16>");
+ TXGBE_DEVARG_FFE_POST "=<uint16>"
+ TXGBE_DEVARG_FDIR_PBALLOC "=<0|1|2>"
+ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>");
RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_init, init, NOTICE);
RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_driver, driver, NOTICE);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.106546202 +0200
+++ 0036-net-txgbe-add-device-arguments-for-FDIR.patch 2025-12-25 11:16:35.579991000 +0200
@@ -1 +1 @@
-From 7e18be9beef25ee60f9c04f757cb4361706ff818 Mon Sep 17 00:00:00 2001
+From 6b9525772e962e2d051c7dafa1abf60fcfa3c061 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7e18be9beef25ee60f9c04f757cb4361706ff818 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19,2 +20,2 @@
- drivers/net/txgbe/txgbe_ethdev.c | 20 ++++++++++++++++++--
- 2 files changed, 22 insertions(+), 2 deletions(-)
+ drivers/net/txgbe/txgbe_ethdev.c | 22 +++++++++++++++++++---
+ 2 files changed, 23 insertions(+), 3 deletions(-)
@@ -23 +24 @@
-index 07b443c2e0..b5dbc9b755 100644
+index 3479639ec4..d39894c953 100644
@@ -26 +27 @@
-@@ -743,6 +743,8 @@ struct txgbe_phy_info {
+@@ -699,6 +699,8 @@ struct txgbe_phy_info {
@@ -32,4 +33,4 @@
- #define TXGBE_DEVARG_TX_HEAD_WB "tx_headwb"
- #define TXGBE_DEVARG_TX_HEAD_WB_SIZE "tx_headwb_size"
- #define TXGBE_DEVARG_RX_DESC_MERGE "rx_desc_merge"
-@@ -756,6 +758,8 @@ static const char * const txgbe_valid_arguments[] = {
+
+ static const char * const txgbe_valid_arguments[] = {
+ TXGBE_DEVARG_BP_AUTO,
+@@ -709,6 +711,8 @@ static const char * const txgbe_valid_arguments[] = {
@@ -41,3 +42,3 @@
- TXGBE_DEVARG_TX_HEAD_WB,
- TXGBE_DEVARG_TX_HEAD_WB_SIZE,
- TXGBE_DEVARG_RX_DESC_MERGE,
+ NULL
+ };
+
@@ -45 +46 @@
-index cbb2ea815f..e9bbf8ea72 100644
+index f990fec7f1..22fb7fbdfd 100644
@@ -48 +49 @@
-@@ -524,8 +524,12 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
+@@ -497,8 +497,12 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
@@ -62 +63 @@
-@@ -535,6 +539,9 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+@@ -508,6 +512,9 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
@@ -69,4 +70,4 @@
- /* New devargs for amberlite config */
- u16 tx_headwb = 1;
- u16 tx_headwb_size = 16;
-@@ -563,6 +570,10 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+
+ if (devargs == NULL)
+ goto null;
+@@ -532,6 +539,10 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
@@ -80,4 +81,4 @@
- rte_kvargs_process(kvlist, TXGBE_DEVARG_TX_HEAD_WB,
- &txgbe_handle_devarg, &tx_headwb);
- rte_kvargs_process(kvlist, TXGBE_DEVARG_TX_HEAD_WB_SIZE,
-@@ -583,6 +594,9 @@ null:
+ rte_kvargs_free(kvlist);
+
+ null:
+@@ -543,6 +554,9 @@ null:
@@ -93 +94 @@
-@@ -671,7 +685,7 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
+@@ -630,7 +644,7 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
@@ -102 +103,2 @@
-@@ -6034,6 +6048,8 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
+@@ -5593,7 +5607,9 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
+ TXGBE_DEVARG_FFE_SET "=<0-4>"
@@ -105 +107,2 @@
- TXGBE_DEVARG_FFE_POST "=<uint16>"
+- TXGBE_DEVARG_FFE_POST "=<uint16>");
++ TXGBE_DEVARG_FFE_POST "=<uint16>"
@@ -107,4 +110,4 @@
-+ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>"
- TXGBE_DEVARG_TX_HEAD_WB "=<0|1>"
- TXGBE_DEVARG_TX_HEAD_WB_SIZE "=<1|16>"
- TXGBE_DEVARG_RX_DESC_MERGE "=<0|1>");
++ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>");
+
+ RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_init, init, NOTICE);
+ RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_driver, driver, NOTICE);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: fix maximum number of FDIR filters' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (34 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/txgbe: add device arguments for FDIR' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix FDIR mode clearing' " Shani Peretz
` (64 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9fe20672013333dc02b6e2f51ae0fffea3d7b495
Thanks.
Shani
---
From 9fe20672013333dc02b6e2f51ae0fffea3d7b495 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:32 +0800
Subject: [PATCH] net/txgbe: fix maximum number of FDIR filters
[ upstream commit 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 ]
FDIR is determined the maximum value on the hardware based on the
memory space allocated (i.e. fdir_conf.pballoc). But the hash map of
FDIR is created based on TXGBE_MAX_FDIR_FILTER_NUM. These two do not
match. It resulted in the absence of error when creating more FDIR rules
than the maximum allowed by the hardware.
Fixes: 635c21354f9a ("net/txgbe: add flow director filter init and uninit")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 6 ++++--
drivers/net/txgbe/txgbe_fdir.c | 4 +++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 22fb7fbdfd..01d9fdfb82 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -894,11 +894,13 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(eth_dev);
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(eth_dev);
char fdir_hash_name[RTE_HASH_NAMESIZE];
+ u16 max_fdir_num = (1024 << (fdir_conf->pballoc + 1)) - 2;
struct rte_hash_parameters fdir_hash_params = {
.name = fdir_hash_name,
- .entries = TXGBE_MAX_FDIR_FILTER_NUM,
+ .entries = max_fdir_num,
.key_len = sizeof(struct txgbe_atr_input),
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
@@ -915,7 +917,7 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
}
fdir_info->hash_map = rte_zmalloc("txgbe",
sizeof(struct txgbe_fdir_filter *) *
- TXGBE_MAX_FDIR_FILTER_NUM,
+ max_fdir_num,
0);
if (!fdir_info->hash_map) {
PMD_INIT_LOG(ERR,
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 0d12fb9a11..c4cf39997c 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -965,6 +965,7 @@ txgbe_fdir_filter_restore(struct rte_eth_dev *dev)
int
txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(dev);
struct txgbe_fdir_filter *fdir_filter;
struct txgbe_fdir_filter *filter_flag;
@@ -973,7 +974,8 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
/* flush flow director */
rte_hash_reset(fdir_info->hash_handle);
memset(fdir_info->hash_map, 0,
- sizeof(struct txgbe_fdir_filter *) * TXGBE_MAX_FDIR_FILTER_NUM);
+ sizeof(struct txgbe_fdir_filter *) *
+ ((1024 << (fdir_conf->pballoc + 1)) - 2));
filter_flag = TAILQ_FIRST(&fdir_info->fdir_list);
while ((fdir_filter = TAILQ_FIRST(&fdir_info->fdir_list))) {
TAILQ_REMOVE(&fdir_info->fdir_list,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.161331794 +0200
+++ 0037-net-txgbe-fix-maximum-number-of-FDIR-filters.patch 2025-12-25 11:16:35.597901000 +0200
@@ -1 +1 @@
-From 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 Mon Sep 17 00:00:00 2001
+From 9fe20672013333dc02b6e2f51ae0fffea3d7b495 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index e9bbf8ea72..f650c5b7a4 100644
+index 22fb7fbdfd..01d9fdfb82 100644
@@ -25 +26 @@
-@@ -935,11 +935,13 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
+@@ -894,11 +894,13 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
@@ -40 +41 @@
-@@ -956,7 +958,7 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
+@@ -915,7 +917,7 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
@@ -50 +51 @@
-index 0efd43b59a..631dec69e8 100644
+index 0d12fb9a11..c4cf39997c 100644
@@ -53 +54 @@
-@@ -959,6 +959,7 @@ txgbe_fdir_filter_restore(struct rte_eth_dev *dev)
+@@ -965,6 +965,7 @@ txgbe_fdir_filter_restore(struct rte_eth_dev *dev)
@@ -61 +62 @@
-@@ -967,7 +968,8 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
+@@ -973,7 +974,8 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: fix FDIR mode clearing' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (35 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Shani Peretz
@ 2025-12-25 9:17 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Shani Peretz
` (63 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:17 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b37e7cf39d4ce667bed46babfc8a7512b12154a5
Thanks.
Shani
---
From b37e7cf39d4ce667bed46babfc8a7512b12154a5 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:33 +0800
Subject: [PATCH] net/txgbe: fix FDIR mode clearing
[ upstream commit 26048c25942f2579a821a99b78db48fdb2c90c77 ]
When FDIR flow rules are all cleared, FDIR mode is not cleared. This will
cause that creating new FDIR flow rules failed, for their mode are
different from the previously deleted ones.
Fixes: 6bde42fe7fa5 ("net/txgbe: flush all filters")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 1 +
drivers/net/txgbe/txgbe_flow.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index c4cf39997c..8ba42fa8fa 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -976,6 +976,7 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
memset(fdir_info->hash_map, 0,
sizeof(struct txgbe_fdir_filter *) *
((1024 << (fdir_conf->pballoc + 1)) - 2));
+ fdir_conf->mode = RTE_FDIR_MODE_NONE;
filter_flag = TAILQ_FIRST(&fdir_info->fdir_list);
while ((fdir_filter = TAILQ_FIRST(&fdir_info->fdir_list))) {
TAILQ_REMOVE(&fdir_info->fdir_list,
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index a50bdffd62..d53aaaf452 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -3064,6 +3064,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
struct txgbe_fdir_rule_ele *fdir_rule_ptr;
struct txgbe_flow_mem *txgbe_flow_mem_ptr;
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(dev);
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
struct txgbe_rss_conf_ele *rss_filter_ptr;
switch (filter_type) {
@@ -3123,6 +3124,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
fdir_info->mask_added = false;
fdir_info->flex_relative = false;
fdir_info->flex_bytes_offset = 0;
+ fdir_conf->mode = RTE_FDIR_MODE_NONE;
}
}
break;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.212129929 +0200
+++ 0038-net-txgbe-fix-FDIR-mode-clearing.patch 2025-12-25 11:16:35.608943000 +0200
@@ -1 +1 @@
-From 26048c25942f2579a821a99b78db48fdb2c90c77 Mon Sep 17 00:00:00 2001
+From b37e7cf39d4ce667bed46babfc8a7512b12154a5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 26048c25942f2579a821a99b78db48fdb2c90c77 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 631dec69e8..77d0cc4c30 100644
+index c4cf39997c..8ba42fa8fa 100644
@@ -23 +24 @@
-@@ -970,6 +970,7 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
+@@ -976,6 +976,7 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
@@ -32 +33 @@
-index 31af3593ed..25cf0db316 100644
+index a50bdffd62..d53aaaf452 100644
@@ -35 +36 @@
-@@ -3429,6 +3429,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
+@@ -3064,6 +3064,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
@@ -43 +44 @@
-@@ -3488,6 +3489,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
+@@ -3123,6 +3124,7 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: fix FDIR drop action for L4 match packets' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (36 preceding siblings ...)
2025-12-25 9:17 ` patch 'net/txgbe: fix FDIR mode clearing' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 " Shani Peretz
` (62 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/e50aa90e9cd28d381cef1fb99a90317e0b79ea0f
Thanks.
Shani
---
From e50aa90e9cd28d381cef1fb99a90317e0b79ea0f Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:34 +0800
Subject: [PATCH] net/txgbe: fix FDIR drop action for L4 match packets
[ upstream commit 3c858be4997d779a05dd32630ad57c740a2729bc ]
FDIR flow rules support to drop packets without being limited to L3
packets. Remove the redundant limitation.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_flow.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index d53aaaf452..50e4fe76af 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2477,7 +2477,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
int ret;
- struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
ret = txgbe_parse_fdir_filter_normal(dev, attr, pattern,
@@ -2491,12 +2490,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
return ret;
step_next:
-
- if (hw->mac.type == txgbe_mac_raptor &&
- rule->fdirflags == TXGBE_FDIRPICMD_DROP &&
- (rule->input.src_port != 0 || rule->input.dst_port != 0))
- return -ENOTSUP;
-
if (fdir_conf->mode == RTE_FDIR_MODE_NONE) {
fdir_conf->mode = rule->mode;
ret = txgbe_fdir_configure(dev);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.263787854 +0200
+++ 0039-net-txgbe-fix-FDIR-drop-action-for-L4-match-packets.patch 2025-12-25 11:16:35.618806000 +0200
@@ -1 +1 @@
-From 3c858be4997d779a05dd32630ad57c740a2729bc Mon Sep 17 00:00:00 2001
+From e50aa90e9cd28d381cef1fb99a90317e0b79ea0f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3c858be4997d779a05dd32630ad57c740a2729bc ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 25cf0db316..7cf079a1cf 100644
+index d53aaaf452..50e4fe76af 100644
@@ -21 +22 @@
-@@ -2839,7 +2839,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
+@@ -2477,7 +2477,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
@@ -29 +30 @@
-@@ -2853,12 +2852,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
+@@ -2491,12 +2490,6 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
@@ -34 +35 @@
-- if (hw->mac.type == txgbe_mac_sp &&
+- if (hw->mac.type == txgbe_mac_raptor &&
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: fix FDIR rule raw relative for L3 packets' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (37 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Shani Peretz
` (61 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/7e408dc514de87af0f3161ae383e0bf89d290a9d
Thanks.
Shani
---
From 7e408dc514de87af0f3161ae383e0bf89d290a9d Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:37 +0800
Subject: [PATCH] net/txgbe: fix FDIR rule raw relative for L3 packets
[ upstream commit f1cd458035da9066379c457d27488eeb7741af46 ]
Hardware supports FDIR flex field base setting from start of MAC header,
IP header, L4 header, L4 payload. So for IP packet which has no L4 header,
it cannot match the raw bytes with relative offset start from L3 payload.
And FDIR flex bytes rule cannot match L2 packets.
Therefore, we will declare that the relative offset is only used for
matching the L4 packets.
Fixes: aa4974765499 ("net/txgbe: fix raw pattern match for FDIR rule")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 8ba42fa8fa..2544335c4c 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -261,10 +261,7 @@ txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule)
if (rule->input.flow_type & TXGBE_ATR_L4TYPE_MASK)
return TXGBE_FDIRFLEXCFG_BASE_PAY;
- if (rule->input.flow_type & TXGBE_ATR_L3TYPE_MASK)
- return TXGBE_FDIRFLEXCFG_BASE_L3;
-
- return TXGBE_FDIRFLEXCFG_BASE_L2;
+ return TXGBE_FDIRFLEXCFG_BASE_L3;
}
int
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.312817285 +0200
+++ 0040-net-txgbe-fix-FDIR-rule-raw-relative-for-L3-packets.patch 2025-12-25 11:16:35.626830000 +0200
@@ -1 +1 @@
-From f1cd458035da9066379c457d27488eeb7741af46 Mon Sep 17 00:00:00 2001
+From 7e408dc514de87af0f3161ae383e0bf89d290a9d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1cd458035da9066379c457d27488eeb7741af46 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 77d0cc4c30..8d181db33f 100644
+index 8ba42fa8fa..2544335c4c 100644
@@ -26 +27 @@
-@@ -258,10 +258,7 @@ txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule)
+@@ -261,10 +261,7 @@ txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: switch to FDIR when ntuple filter is full' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (38 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: remove unsupported flow action mark' " Shani Peretz
` (60 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/f2dd11d1144493f5825144e94515b0bd13a4deb1
Thanks.
Shani
---
From f2dd11d1144493f5825144e94515b0bd13a4deb1 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:39 +0800
Subject: [PATCH] net/txgbe: switch to FDIR when ntuple filter is full
[ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ]
Using ntuple filter has less performance loss on the hardware compared
to FDIR filter. So when the flow rule both match ntuple filter and FDIR
filter, ntuple filter will be created first. But there are only maximum
128 flow rules can be created on ntuple filter, it is far less than the
requirements of many users. So switch to use FDIR when ntuple filters
are full.
Fixes: 77a72b4d9dc0 ("net/txgbe: support ntuple filter add and delete")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 5 ++++-
drivers/net/txgbe/txgbe_ethdev.h | 1 +
drivers/net/txgbe/txgbe_flow.c | 8 ++++++++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 01d9fdfb82..b20897cc9f 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -852,6 +852,7 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
}
memset(filter_info->fivetuple_mask, 0,
sizeof(uint32_t) * TXGBE_5TUPLE_ARRAY_SIZE);
+ filter_info->ntuple_is_full = false;
return 0;
}
@@ -4165,7 +4166,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
}
}
if (i >= TXGBE_MAX_FTQF_FILTERS) {
- PMD_DRV_LOG(ERR, "5tuple filters are full.");
+ PMD_DRV_LOG(INFO, "5tuple filters are full, switch to FDIR");
+ filter_info->ntuple_is_full = true;
return -ENOSYS;
}
@@ -4193,6 +4195,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
~(1 << (index % (sizeof(uint32_t) * NBBY)));
TAILQ_REMOVE(&filter_info->fivetuple_list, filter, entries);
rte_free(filter);
+ filter_info->ntuple_is_full = false;
wr32(hw, TXGBE_5TFDADDR(index), 0);
wr32(hw, TXGBE_5TFSADDR(index), 0);
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index 34280a146b..56c2b263b4 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -243,6 +243,7 @@ struct txgbe_filter_info {
/* Bit mask for every used 5tuple filter */
uint32_t fivetuple_mask[TXGBE_5TUPLE_ARRAY_SIZE];
struct txgbe_5tuple_filter_list fivetuple_list;
+ bool ntuple_is_full;
/* store the SYN filter info */
uint32_t syn_info;
/* store the rss filter info */
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 50e4fe76af..160439863a 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -580,8 +580,12 @@ txgbe_parse_ntuple_filter(struct rte_eth_dev *dev,
struct rte_eth_ntuple_filter *filter,
struct rte_flow_error *error)
{
+ struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev);
int ret;
+ if (filter_info->ntuple_is_full)
+ return -ENOSYS;
+
ret = cons_parse_ntuple_filter(attr, pattern, actions, filter, error);
if (ret)
@@ -2734,6 +2738,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
struct txgbe_fdir_rule_ele *fdir_rule_ptr;
struct txgbe_rss_conf_ele *rss_filter_ptr;
struct txgbe_flow_mem *txgbe_flow_mem_ptr;
+ struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev);
uint8_t first_mask = FALSE;
flow = rte_zmalloc("txgbe_rte_flow", sizeof(struct rte_flow), 0);
@@ -2779,10 +2784,13 @@ txgbe_flow_create(struct rte_eth_dev *dev,
flow->rule = ntuple_filter_ptr;
flow->filter_type = RTE_ETH_FILTER_NTUPLE;
return flow;
+ } else if (filter_info->ntuple_is_full) {
+ goto next;
}
goto out;
}
+next:
memset(ðertype_filter, 0, sizeof(struct rte_eth_ethertype_filter));
ret = txgbe_parse_ethertype_filter(dev, attr, pattern,
actions, ðertype_filter, error);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.359431028 +0200
+++ 0041-net-txgbe-switch-to-FDIR-when-ntuple-filter-is-full.patch 2025-12-25 11:16:35.642920000 +0200
@@ -1 +1 @@
-From ccac5e093041f255f38a59ea472c6dee493ccc7c Mon Sep 17 00:00:00 2001
+From f2dd11d1144493f5825144e94515b0bd13a4deb1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index f650c5b7a4..21f0711762 100644
+index 01d9fdfb82..b20897cc9f 100644
@@ -27 +28 @@
-@@ -893,6 +893,7 @@ int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
+@@ -852,6 +852,7 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
@@ -35 +36 @@
-@@ -4495,7 +4496,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
+@@ -4165,7 +4166,8 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
@@ -45 +46 @@
-@@ -4526,6 +4528,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
+@@ -4193,6 +4195,7 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
@@ -51,2 +52,2 @@
- if (!txgbe_is_pf(TXGBE_DEV_HW(dev))) {
- txgbevf_remove_5tuple_filter(dev, index);
+ wr32(hw, TXGBE_5TFDADDR(index), 0);
+ wr32(hw, TXGBE_5TFSADDR(index), 0);
@@ -54 +55 @@
-index 053aa1645f..1e7cc5ea80 100644
+index 34280a146b..56c2b263b4 100644
@@ -57 +58 @@
-@@ -245,6 +245,7 @@ struct txgbe_filter_info {
+@@ -243,6 +243,7 @@ struct txgbe_filter_info {
@@ -66 +67 @@
-index d3113b6fc8..cd05ceffed 100644
+index 50e4fe76af..160439863a 100644
@@ -82 +83 @@
-@@ -3200,6 +3204,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -2734,6 +2738,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
@@ -90 +91 @@
-@@ -3245,6 +3250,8 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -2779,10 +2784,13 @@ txgbe_flow_create(struct rte_eth_dev *dev,
@@ -97,3 +97,0 @@
- goto out;
- }
-@@ -3254,6 +3261,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/txgbe: remove unsupported flow action mark' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (39 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/nfp: fix metering cleanup' " Shani Peretz
` (59 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/76fcd4d084993b841388dbd2a6bd0a3fe3beef95
Thanks.
Shani
---
From 76fcd4d084993b841388dbd2a6bd0a3fe3beef95 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:42 +0800
Subject: [PATCH] net/txgbe: remove unsupported flow action mark
[ upstream commit 7224536b051457ce2a9cfd6e433da9d4a7bc97ac ]
Flow action "mark" is not supported, just remove it.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
doc/guides/nics/features/txgbe.ini | 1 -
drivers/net/txgbe/txgbe_flow.c | 23 ++---------------------
2 files changed, 2 insertions(+), 22 deletions(-)
diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini
index be0af3dfad..eda96189d9 100644
--- a/doc/guides/nics/features/txgbe.ini
+++ b/doc/guides/nics/features/txgbe.ini
@@ -70,7 +70,6 @@ vxlan = Y
[rte_flow actions]
drop = Y
-mark = Y
pf = Y
queue = Y
rss = Y
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 160439863a..585882265f 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -1337,7 +1337,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
{
const struct rte_flow_action *act;
const struct rte_flow_action_queue *act_q;
- const struct rte_flow_action_mark *mark;
/* parse attr */
/* must be input direction */
@@ -1402,10 +1401,9 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
rule->fdirflags = TXGBE_FDIRPICMD_DROP;
}
- /* check if the next not void item is MARK */
+ /* nothing else supported */
act = next_no_void_action(actions, act);
- if (act->type != RTE_FLOW_ACTION_TYPE_MARK &&
- act->type != RTE_FLOW_ACTION_TYPE_END) {
+ if (act->type != RTE_FLOW_ACTION_TYPE_END) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION,
@@ -1415,21 +1413,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
rule->soft_id = 0;
- if (act->type == RTE_FLOW_ACTION_TYPE_MARK) {
- mark = (const struct rte_flow_action_mark *)act->conf;
- rule->soft_id = mark->id;
- act = next_no_void_action(actions, act);
- }
-
- /* check if the next not void item is END */
- if (act->type != RTE_FLOW_ACTION_TYPE_END) {
- memset(rule, 0, sizeof(struct txgbe_fdir_rule));
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ACTION,
- act, "Not supported action.");
- return -rte_errno;
- }
-
return 0;
}
@@ -1541,8 +1524,6 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
* The next not void item must be END.
* ACTION:
* The first not void action should be QUEUE or DROP.
- * The second not void optional action should be MARK,
- * mark_id is a uint32_t number.
* The next not void action should be END.
* UDP/TCP/SCTP pattern example:
* ITEM Spec Mask
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.412552477 +0200
+++ 0042-net-txgbe-remove-unsupported-flow-action-mark.patch 2025-12-25 11:16:35.666920000 +0200
@@ -1 +1 @@
-From 7224536b051457ce2a9cfd6e433da9d4a7bc97ac Mon Sep 17 00:00:00 2001
+From 76fcd4d084993b841388dbd2a6bd0a3fe3beef95 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7224536b051457ce2a9cfd6e433da9d4a7bc97ac ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index ef9f0cfa0a..a9f043a04f 100644
+index be0af3dfad..eda96189d9 100644
@@ -21 +22 @@
-@@ -72,7 +72,6 @@ vxlan = Y
+@@ -70,7 +70,6 @@ vxlan = Y
@@ -30 +31 @@
-index 5647165d52..a97588e57a 100644
+index 160439863a..585882265f 100644
@@ -33 +34 @@
-@@ -1358,7 +1358,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1337,7 +1337,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -41 +42 @@
-@@ -1423,10 +1422,9 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1402,10 +1401,9 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -54 +55 @@
-@@ -1436,21 +1434,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1415,21 +1413,6 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -76 +77 @@
-@@ -1562,8 +1545,6 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
+@@ -1541,8 +1524,6 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/nfp: fix metering cleanup' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (40 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/txgbe: remove unsupported flow action mark' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Shani Peretz
` (58 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/588e3f389dcbab61fe63ceeba739286d2a926b1a
Thanks.
Shani
---
From 588e3f389dcbab61fe63ceeba739286d2a926b1a Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon, 3 Nov 2025 21:29:15 -0800
Subject: [PATCH] net/nfp: fix metering cleanup
[ upstream commit 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f ]
The code to cleanup metering was using the objects after calling
rte_free(). Fix by using LISTFOREACH_SAFE
Fixes: 2caf84a71cfd ("net/nfp: add meter options")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/nfp/nfp_mtr.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/net/nfp/nfp_mtr.c b/drivers/net/nfp/nfp_mtr.c
index 255977ec22..377b72534e 100644
--- a/drivers/net/nfp/nfp_mtr.c
+++ b/drivers/net/nfp/nfp_mtr.c
@@ -12,6 +12,13 @@
#include "flower/nfp_flower_representor.h"
#include "nfp_logs.h"
+#ifndef LIST_FOREACH_SAFE
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+#endif
+
#define NFP_MAX_POLICY_CNT NFP_MAX_MTR_CNT
#define NFP_MAX_PROFILE_CNT NFP_MAX_MTR_CNT
@@ -1124,10 +1131,10 @@ nfp_mtr_priv_init(struct nfp_pf_dev *pf_dev)
void
nfp_mtr_priv_uninit(struct nfp_pf_dev *pf_dev)
{
- struct nfp_mtr *mtr;
+ struct nfp_mtr *mtr, *tmp_mtr;
struct nfp_mtr_priv *priv;
- struct nfp_mtr_policy *mtr_policy;
- struct nfp_mtr_profile *mtr_profile;
+ struct nfp_mtr_policy *mtr_policy, *tmp_policy;
+ struct nfp_mtr_profile *mtr_profile, *tmp_profile;
struct nfp_app_fw_flower *app_fw_flower;
app_fw_flower = NFP_PRIV_TO_APP_FW_FLOWER(pf_dev->app_fw_priv);
@@ -1135,17 +1142,17 @@ nfp_mtr_priv_uninit(struct nfp_pf_dev *pf_dev)
rte_eal_alarm_cancel(nfp_mtr_stats_request, (void *)app_fw_flower);
- LIST_FOREACH(mtr, &priv->mtrs, next) {
+ LIST_FOREACH_SAFE(mtr, &priv->mtrs, next, tmp_mtr) {
LIST_REMOVE(mtr, next);
rte_free(mtr);
}
- LIST_FOREACH(mtr_profile, &priv->profiles, next) {
+ LIST_FOREACH_SAFE(mtr_profile, &priv->profiles, next, tmp_profile) {
LIST_REMOVE(mtr_profile, next);
rte_free(mtr_profile);
}
- LIST_FOREACH(mtr_policy, &priv->policies, next) {
+ LIST_FOREACH_SAFE(mtr_policy, &priv->policies, next, tmp_policy) {
LIST_REMOVE(mtr_policy, next);
rte_free(mtr_policy);
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.459616445 +0200
+++ 0043-net-nfp-fix-metering-cleanup.patch 2025-12-25 11:16:35.674021000 +0200
@@ -1 +1 @@
-From 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f Mon Sep 17 00:00:00 2001
+From 588e3f389dcbab61fe63ceeba739286d2a926b1a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index d4f2c4f2f0..4833ebd881 100644
+index 255977ec22..377b72534e 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/bonding: fix MAC address propagation in 802.3ad mode' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (41 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/nfp: fix metering cleanup' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Tx port' " Shani Peretz
` (57 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Shani Peretz; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/4c3ba3b16f85ec87ca5891a620077233cef3297c
Thanks.
Shani
---
From 4c3ba3b16f85ec87ca5891a620077233cef3297c Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Wed, 5 Nov 2025 20:01:35 +0200
Subject: [PATCH] net/bonding: fix MAC address propagation in 802.3ad mode
[ upstream commit 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 ]
When changing the MAC address of a bonding device in 802.3ad mode,
the new MAC was not propagated to the physical member NIC.
This caused the physical NIC to drop all data packets sent to the
new MAC address, resulting in connectivity loss.
It happens because the MAC update function only updated the
LACP layer (actor.system) but not the physical NIC hardware MAC
addresses.
This fix adds a call to rte_eth_dev_default_mac_addr_set() to update
the hardware MAC on each member port.
Bugzilla ID: 1158
Fixes: 46fb43683679 ("bond: add mode 4")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
---
drivers/net/bonding/rte_eth_bond_8023ad.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index 3cca8a07f3..7e7428b2db 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -1185,6 +1185,14 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
continue;
rte_ether_addr_copy(&internals->mode4.mac_addr, &member->actor.system);
+
+ /* Update physical NIC hardware MAC address to match bonding device. */
+ if (rte_eth_dev_default_mac_addr_set(member_id, &internals->mode4.mac_addr) != 0) {
+ RTE_BOND_LOG(ERR,
+ "Failed to update MAC address on member port %u",
+ member_id);
+ }
+
/* Do nothing if this port is not an aggregator. In other case
* Set NTT flag on every port that use this aggregator. */
if (member->aggregator_port_id != member_id)
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.505830510 +0200
+++ 0044-net-bonding-fix-MAC-address-propagation-in-802.3ad-m.patch 2025-12-25 11:16:35.680858000 +0200
@@ -1 +1 @@
-From 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 Mon Sep 17 00:00:00 2001
+From 4c3ba3b16f85ec87ca5891a620077233cef3297c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 1677615435..ba88f6d261 100644
+index 3cca8a07f3..7e7428b2db 100644
@@ -31 +32 @@
-@@ -1186,6 +1186,14 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
+@@ -1185,6 +1185,14 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: fix DCB Tx port' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (42 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Rx queues' " Shani Peretz
` (56 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/854eb325e39aaf2a46282953819292ceba1118aa
Thanks.
Shani
---
From 854eb325e39aaf2a46282953819292ceba1118aa Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 6 Nov 2025 08:29:19 +0800
Subject: [PATCH] app/testpmd: fix DCB Tx port
[ upstream commit 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 ]
The txp maybe invalid (e.g. start with only one port but set with 1),
this commit fix it by get txp from fwd_topology_tx_port_get() function.
An added benefit is that the DCB test also supports '--port-topology'
parameter.
Fixes: 1a572499beb6 ("app/testpmd: setup DCB forwarding based on traffic class")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/config.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 55637ba643..40caba0e45 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -4919,7 +4919,7 @@ dcb_fwd_config_setup(void)
/* reinitialize forwarding streams */
init_fwd_streams();
sm_id = 0;
- txp = 1;
+ txp = fwd_topology_tx_port_get(rxp);
/* get the dcb info on the first RX and TX ports */
(void)rte_eth_dev_get_dcb_info(fwd_ports_ids[rxp], &rxp_dcb_info);
(void)rte_eth_dev_get_dcb_info(fwd_ports_ids[txp], &txp_dcb_info);
@@ -4967,11 +4967,8 @@ dcb_fwd_config_setup(void)
rxp++;
if (rxp >= nb_fwd_ports)
return;
+ txp = fwd_topology_tx_port_get(rxp);
/* get the dcb information on next RX and TX ports */
- if ((rxp & 0x1) == 0)
- txp = (portid_t) (rxp + 1);
- else
- txp = (portid_t) (rxp - 1);
rte_eth_dev_get_dcb_info(fwd_ports_ids[rxp], &rxp_dcb_info);
rte_eth_dev_get_dcb_info(fwd_ports_ids[txp], &txp_dcb_info);
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.550345949 +0200
+++ 0045-app-testpmd-fix-DCB-Tx-port.patch 2025-12-25 11:16:35.692805000 +0200
@@ -1 +1 @@
-From 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 Mon Sep 17 00:00:00 2001
+From 854eb325e39aaf2a46282953819292ceba1118aa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 3ce2a14a1b..0f687018c7 100644
+index 55637ba643..40caba0e45 100644
@@ -24 +25 @@
-@@ -5187,7 +5187,7 @@ dcb_fwd_config_setup(void)
+@@ -4919,7 +4919,7 @@ dcb_fwd_config_setup(void)
@@ -33 +34 @@
-@@ -5235,11 +5235,8 @@ dcb_fwd_config_setup(void)
+@@ -4967,11 +4967,8 @@ dcb_fwd_config_setup(void)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: fix DCB Rx queues' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (43 preceding siblings ...)
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Tx port' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Shani Peretz
` (55 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/05ac11a04f35e0d89176d03d3f6360b74ecc000c
Thanks.
Shani
---
From 05ac11a04f35e0d89176d03d3f6360b74ecc000c Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 6 Nov 2025 08:29:20 +0800
Subject: [PATCH] app/testpmd: fix DCB Rx queues
[ upstream commit 32387caaa00660ebe35be25f2371edb0069cc80a ]
The nb_rx_queue should get from rxp_dcb_info not txp_dcb_info, this
commit fix it.
Fixes: 1a572499beb6 ("app/testpmd: setup DCB forwarding based on traffic class")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/config.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 40caba0e45..9653133052 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -4937,7 +4937,7 @@ dcb_fwd_config_setup(void)
fwd_lcores[lc_id]->stream_idx;
rxq = rxp_dcb_info.tc_queue.tc_rxq[i][tc].base;
txq = txp_dcb_info.tc_queue.tc_txq[i][tc].base;
- nb_rx_queue = txp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue;
+ nb_rx_queue = rxp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue;
nb_tx_queue = txp_dcb_info.tc_queue.tc_txq[i][tc].nb_queue;
for (j = 0; j < nb_rx_queue; j++) {
struct fwd_stream *fs;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.597864641 +0200
+++ 0046-app-testpmd-fix-DCB-Rx-queues.patch 2025-12-25 11:16:35.703027000 +0200
@@ -1 +1 @@
-From 32387caaa00660ebe35be25f2371edb0069cc80a Mon Sep 17 00:00:00 2001
+From 05ac11a04f35e0d89176d03d3f6360b74ecc000c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 32387caaa00660ebe35be25f2371edb0069cc80a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 0f687018c7..8557371488 100644
+index 40caba0e45..9653133052 100644
@@ -21 +22 @@
-@@ -5205,7 +5205,7 @@ dcb_fwd_config_setup(void)
+@@ -4937,7 +4937,7 @@ dcb_fwd_config_setup(void)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/e1000/base: fix crash on init with GCC 13' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (44 preceding siblings ...)
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Rx queues' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/fm10k: fix build with GCC 16' " Shani Peretz
` (54 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Thierry Herbelot, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/431171204f2f97c36cd29b2a4a3ccab2ec0313ac
Thanks.
Shani
---
From 431171204f2f97c36cd29b2a4a3ccab2ec0313ac Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Fri, 10 Oct 2025 12:58:48 +0000
Subject: [PATCH] net/e1000/base: fix crash on init with GCC 13
[ upstream commit 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 ]
The e1000 PMD crashes during initialisation in a Ubuntu 24.04 VM when
compiled with gcc-13 with -O3 optimisations. This patch introduces a
compiler barrier after the register read that was causing the issue.
Bugzilla ID: 1691
Fixes: af75078fece3 ("first public release")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Tested-by: Thierry Herbelot <thierry.herbelot@6wind.com>
---
drivers/net/e1000/base/e1000_mac.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/e1000/base/e1000_mac.c b/drivers/net/e1000/base/e1000_mac.c
index 5bb77d9e09..1ab5db98f2 100644
--- a/drivers/net/e1000/base/e1000_mac.c
+++ b/drivers/net/e1000/base/e1000_mac.c
@@ -1826,6 +1826,7 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
return ret_val;
mac->ledctl_default = E1000_READ_REG(hw, E1000_LEDCTL);
+ rte_compiler_barrier();
mac->ledctl_mode1 = mac->ledctl_default;
mac->ledctl_mode2 = mac->ledctl_default;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.645917123 +0200
+++ 0047-net-e1000-base-fix-crash-on-init-with-GCC-13.patch 2025-12-25 11:16:35.709865000 +0200
@@ -1 +1 @@
-From 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 Mon Sep 17 00:00:00 2001
+From 431171204f2f97c36cd29b2a4a3ccab2ec0313ac Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/e1000/base/e1000_mac.c | 1 +
+ drivers/net/e1000/base/e1000_mac.c | 1 +
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/e1000/base/e1000_mac.c b/drivers/net/intel/e1000/base/e1000_mac.c
-index 2fa97d12a9..41aae86ffe 100644
---- a/drivers/net/intel/e1000/base/e1000_mac.c
-+++ b/drivers/net/intel/e1000/base/e1000_mac.c
-@@ -1842,6 +1842,7 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
+diff --git a/drivers/net/e1000/base/e1000_mac.c b/drivers/net/e1000/base/e1000_mac.c
+index 5bb77d9e09..1ab5db98f2 100644
+--- a/drivers/net/e1000/base/e1000_mac.c
++++ b/drivers/net/e1000/base/e1000_mac.c
+@@ -1826,6 +1826,7 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/fm10k: fix build with GCC 16' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (45 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx4: fix unnecessary comma' " Shani Peretz
` (53 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Vladimir Medvedkin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/581638d81b6183d7ae54ccb3506da0c2cd97480a
Thanks.
Shani
---
From 581638d81b6183d7ae54ccb3506da0c2cd97480a Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 4 Nov 2025 11:15:15 +0000
Subject: [PATCH] net/fm10k: fix build with GCC 16
[ upstream commit 967d5fbb7b23700ccffccb9979d4f6acdac412c8 ]
Build error reported with GCC 16, due to a set but unused variable. Fix
the issue by removing the setting of the var and marking it as unused.
../drivers/net/intel/fm10k/base/fm10k_common.c: In function 'fm10k_unbind_hw_stats_q':
../drivers/net/intel/fm10k/base/fm10k_common.c:480:62: warning:
parameter 'idx' set but not used [-Wunused-but-set-parameter=]
480 | void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count)
Bugzilla ID: 1822
Fixes: 7223d200c227 ("fm10k: add base driver")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/fm10k/base/fm10k_common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fm10k/base/fm10k_common.c b/drivers/net/fm10k/base/fm10k_common.c
index b78d4b575b..677ef87608 100644
--- a/drivers/net/fm10k/base/fm10k_common.c
+++ b/drivers/net/fm10k/base/fm10k_common.c
@@ -477,11 +477,11 @@ void fm10k_update_hw_stats_q(struct fm10k_hw *hw, struct fm10k_hw_stats_q *q,
* Function invalidates the index values for the queues so any updates that
* may have happened are ignored and the base for the queue stats is reset.
**/
-void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count)
+void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx __rte_unused, u32 count)
{
u32 i;
- for (i = 0; i < count; i++, idx++, q++) {
+ for (i = 0; i < count; i++, q++) {
q->rx_stats_idx = 0;
q->tx_stats_idx = 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.691160184 +0200
+++ 0048-net-fm10k-fix-build-with-GCC-16.patch 2025-12-25 11:16:35.713976000 +0200
@@ -1 +1 @@
-From 967d5fbb7b23700ccffccb9979d4f6acdac412c8 Mon Sep 17 00:00:00 2001
+From 581638d81b6183d7ae54ccb3506da0c2cd97480a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 967d5fbb7b23700ccffccb9979d4f6acdac412c8 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
- drivers/net/intel/fm10k/base/fm10k_common.c | 4 ++--
+ drivers/net/fm10k/base/fm10k_common.c | 4 ++--
@@ -24 +25 @@
-diff --git a/drivers/net/intel/fm10k/base/fm10k_common.c b/drivers/net/intel/fm10k/base/fm10k_common.c
+diff --git a/drivers/net/fm10k/base/fm10k_common.c b/drivers/net/fm10k/base/fm10k_common.c
@@ -26,2 +27,2 @@
---- a/drivers/net/intel/fm10k/base/fm10k_common.c
-+++ b/drivers/net/intel/fm10k/base/fm10k_common.c
+--- a/drivers/net/fm10k/base/fm10k_common.c
++++ b/drivers/net/fm10k/base/fm10k_common.c
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx4: fix unnecessary comma' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (46 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/fm10k: fix build with GCC 16' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix unnecessary commas' " Shani Peretz
` (52 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/687a8f05f05c26dfec2ec61c2ca6d1ddb4800ee5
Thanks.
Shani
---
From 687a8f05f05c26dfec2ec61c2ca6d1ddb4800ee5 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 29 Oct 2025 11:55:03 +0200
Subject: [PATCH] net/mlx4: fix unnecessary comma
[ upstream commit fdffa18268a70857865141cd89066eb6e025c0d2 ]
The patch fixes compilation warnings produced by clang -Wcomma option.
Bugzilla ID: 1810
Fixes: ba576975a89b ("net/mlx4: support hardware TSO")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx4/mlx4_rxtx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c
index 059e432a63..7f28ec9944 100644
--- a/drivers/net/mlx4/mlx4_rxtx.c
+++ b/drivers/net/mlx4/mlx4_rxtx.c
@@ -638,7 +638,7 @@ mlx4_tx_burst_fill_tso_hdr(struct rte_mbuf *buf,
thdr.vto = sq->buf;
/* New TXBB, stash the first 32bits for later use. */
pv[*pv_counter].dst = (volatile uint32_t *)thdr.to;
- pv[(*pv_counter)++].val = *(uint32_t *)from,
+ pv[(*pv_counter)++].val = *(uint32_t *)from;
from += sizeof(uint32_t);
thdr.to += sizeof(uint32_t);
remain_size -= txbb_avail_space + sizeof(uint32_t);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.735248493 +0200
+++ 0049-net-mlx4-fix-unnecessary-comma.patch 2025-12-25 11:16:35.719930000 +0200
@@ -1 +1 @@
-From fdffa18268a70857865141cd89066eb6e025c0d2 Mon Sep 17 00:00:00 2001
+From 687a8f05f05c26dfec2ec61c2ca6d1ddb4800ee5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fdffa18268a70857865141cd89066eb6e025c0d2 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 947cae491c..a4df6f7bcb 100644
+index 059e432a63..7f28ec9944 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix unnecessary commas' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (47 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx4: fix unnecessary comma' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix multi-process Tx default rules' " Shani Peretz
` (51 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/4df0e453577b7ad7ace503515501deba5cc50808
Thanks.
Shani
---
From 4df0e453577b7ad7ace503515501deba5cc50808 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 29 Oct 2025 11:55:04 +0200
Subject: [PATCH] net/mlx5: fix unnecessary commas
[ upstream commit 3b769d8389080ef0fd1b34765b9844db8f40729a ]
The patch fixes compilation warnings produced by clang -Wcomma option.
Bugzilla ID: 1810
Fixes: 630a587bfb37 ("net/mlx5: support matching on VXLAN reserved field")
Fixes: 86d259cec852 ("net/mlx5: separate Tx queue object creations")
Fixes: bc1d90a3cf6f ("net/mlx5: fix build with Direct Verbs disabled")
Fixes: 444320186393 ("net/mlx5: support meter creation with policy")
Fixes: 821a6a5cc495 ("net/mlx5: add metadata split for compatibility")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 4 ++--
drivers/net/mlx5/linux/mlx5_verbs.c | 2 +-
drivers/net/mlx5/mlx5_flow.c | 12 ++++++------
drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 722a7e2691..4059a1f52c 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -419,8 +419,8 @@ __mlx5_discovery_misc5_cap(struct mlx5_priv *priv)
DRV_LOG(INFO, "No SW steering support");
return;
}
- dv_attr.type = IBV_FLOW_ATTR_NORMAL,
- dv_attr.match_mask = (void *)&matcher_mask,
+ dv_attr.type = IBV_FLOW_ATTR_NORMAL;
+ dv_attr.match_mask = (void *)&matcher_mask;
dv_attr.match_criteria_enable =
(1 << MLX5_MATCH_CRITERIA_ENABLE_OUTER_BIT) |
(1 << MLX5_MATCH_CRITERIA_ENABLE_MISC5_BIT);
diff --git a/drivers/net/mlx5/linux/mlx5_verbs.c b/drivers/net/mlx5/linux/mlx5_verbs.c
index efe8aa12fb..36e295e391 100644
--- a/drivers/net/mlx5/linux/mlx5_verbs.c
+++ b/drivers/net/mlx5/linux/mlx5_verbs.c
@@ -883,7 +883,7 @@ mlx5_txq_ibv_qp_create(struct rte_eth_dev *dev, uint16_t idx)
* dev_cap.max_sge limit and will still work properly.
*/
qp_attr.cap.max_send_sge = 1;
- qp_attr.qp_type = IBV_QPT_RAW_PACKET,
+ qp_attr.qp_type = IBV_QPT_RAW_PACKET;
/* Do *NOT* enable this, completions events are managed per Tx burst. */
qp_attr.sq_sig_all = 0;
qp_attr.pd = priv->sh->cdev->pd;
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 5d9e92fcc2..412f53d8c8 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -11387,12 +11387,12 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
(error, ENOMEM,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
NULL, "invalid default miss RSS");
- ctx->action_rss.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
- ctx->action_rss.level = 0,
- ctx->action_rss.types = priv->rss_conf.rss_hf,
- ctx->action_rss.key_len = priv->rss_conf.rss_key_len,
- ctx->action_rss.queue_num = priv->reta_idx_n,
- ctx->action_rss.key = priv->rss_conf.rss_key,
+ ctx->action_rss.func = RTE_ETH_HASH_FUNCTION_DEFAULT;
+ ctx->action_rss.level = 0;
+ ctx->action_rss.types = priv->rss_conf.rss_hf;
+ ctx->action_rss.key_len = priv->rss_conf.rss_key_len;
+ ctx->action_rss.queue_num = priv->reta_idx_n;
+ ctx->action_rss.key = priv->rss_conf.rss_key;
ctx->action_rss.queue = ctx->queue;
if (!priv->reta_idx_n || !priv->rxqs_n)
return rte_flow_error_set
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 07dacae868..4c3c4aeffa 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -18219,7 +18219,7 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
}
}
/* Create default matcher in drop table. */
- matcher.tbl = mtrmng->drop_tbl[domain],
+ matcher.tbl = mtrmng->drop_tbl[domain];
tbl_data = container_of(mtrmng->drop_tbl[domain],
struct mlx5_flow_tbl_data_entry, tbl);
if (!mtrmng->def_matcher[domain]) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.780476950 +0200
+++ 0050-net-mlx5-fix-unnecessary-commas.patch 2025-12-25 11:16:35.761811000 +0200
@@ -1 +1 @@
-From 3b769d8389080ef0fd1b34765b9844db8f40729a Mon Sep 17 00:00:00 2001
+From 4df0e453577b7ad7ace503515501deba5cc50808 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3b769d8389080ef0fd1b34765b9844db8f40729a ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23,2 +24 @@
- drivers/net/mlx5/mlx5_nta_split.c | 4 ++--
- 5 files changed, 12 insertions(+), 12 deletions(-)
+ 4 files changed, 10 insertions(+), 10 deletions(-)
@@ -27 +27 @@
-index 8d11b1ac3a..c742e0f282 100644
+index 722a7e2691..4059a1f52c 100644
@@ -30 +30 @@
-@@ -431,8 +431,8 @@ __mlx5_discovery_misc5_cap(struct mlx5_priv *priv)
+@@ -419,8 +419,8 @@ __mlx5_discovery_misc5_cap(struct mlx5_priv *priv)
@@ -42 +42 @@
-index 9011319a3e..01d3d6ae5d 100644
+index efe8aa12fb..36e295e391 100644
@@ -55 +55 @@
-index 1de398982a..f354008a60 100644
+index 5d9e92fcc2..412f53d8c8 100644
@@ -58 +58 @@
-@@ -11132,12 +11132,12 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
+@@ -11387,12 +11387,12 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
@@ -78 +78 @@
-index bcce1597e2..1564bd7cbe 100644
+index 07dacae868..4c3c4aeffa 100644
@@ -81 +81 @@
-@@ -18903,7 +18903,7 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
+@@ -18219,7 +18219,7 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
@@ -90,15 +89,0 @@
-diff --git a/drivers/net/mlx5/mlx5_nta_split.c b/drivers/net/mlx5/mlx5_nta_split.c
-index 6a85ab7fd1..c95da56d72 100644
---- a/drivers/net/mlx5/mlx5_nta_split.c
-+++ b/drivers/net/mlx5/mlx5_nta_split.c
-@@ -345,8 +345,8 @@ flow_nta_mreg_create_cb(void *tool_ctx, void *cb_ctx)
- /* (match REG 'tag') or all. */
- items[1].type = RTE_FLOW_ITEM_TYPE_END;
- /* (Mark) or void + copy to Rx meta + jump to the MREG_ACT_TABLE_GROUP. */
-- actions[1].type = RTE_FLOW_ACTION_TYPE_MODIFY_FIELD,
-- actions[1].conf = &rx_meta,
-+ actions[1].type = RTE_FLOW_ACTION_TYPE_MODIFY_FIELD;
-+ actions[1].conf = &rx_meta;
- actions[2].type = RTE_FLOW_ACTION_TYPE_JUMP;
- actions[2].conf = &jump;
- actions[3].type = RTE_FLOW_ACTION_TYPE_END;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix multi-process Tx default rules' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (48 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix unnecessary commas' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix control flow leakage for external SQ' " Shani Peretz
` (50 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Michael Baum; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9e7df70a2c6cad155f3e7e8917658dc5c1e28b8a
Thanks.
Shani
---
From 9e7df70a2c6cad155f3e7e8917658dc5c1e28b8a Mon Sep 17 00:00:00 2001
From: Michael Baum <michaelba@nvidia.com>
Date: Wed, 29 Oct 2025 17:57:08 +0200
Subject: [PATCH] net/mlx5: fix multi-process Tx default rules
[ upstream commit 2f1bb792ad51aeb2da00198a63422fc478131bd5 ]
When representor matching is disabled, an egress default rule is
inserted which matches all and copies REG_A to REG_C_1 (when dv_xmeta_en
== 4) and jump to group 1. All user rules started from group 1.
When 2 processes are working together, the first one creates this flow
rule and the second one is failed with errno EEXIST. This renders all
user egress rules in 2nd process to be invalid.
This patch changes this default rule match on SQs.
Fixes: 483181f7b6dd ("net/mlx5: support device control of representor matching")
Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 4 +++-
drivers/net/mlx5/mlx5_flow_hw.c | 24 +++++++++++-------------
drivers/net/mlx5/mlx5_trigger.c | 25 +++++++++++++------------
drivers/net/mlx5/mlx5_txq.c | 8 ++++++++
4 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 805b346d3c..219ea462c9 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -2919,7 +2919,9 @@ int mlx5_flow_hw_esw_create_sq_miss_flow(struct rte_eth_dev *dev,
int mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev,
uint32_t sqn);
int mlx5_flow_hw_esw_create_default_jump_flow(struct rte_eth_dev *dev);
-int mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev);
+int mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev,
+ uint32_t sqn,
+ bool external);
int mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external);
int mlx5_flow_hw_lacp_rx_flow(struct rte_eth_dev *dev);
int mlx5_flow_actions_validate(struct rte_eth_dev *dev,
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index eff4d36f8f..41910d801b 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -8413,7 +8413,7 @@ flow_hw_create_tx_default_mreg_copy_table(struct rte_eth_dev *dev,
.priority = MLX5_HW_LOWEST_PRIO_ROOT,
.egress = 1,
},
- .nb_flows = 1, /* One default flow rule for all. */
+ .nb_flows = MLX5_HW_CTRL_FLOW_NB_RULES,
};
struct mlx5_flow_template_table_cfg tx_tbl_cfg = {
.attr = tx_tbl_attr,
@@ -12304,21 +12304,18 @@ mlx5_flow_hw_esw_create_default_jump_flow(struct rte_eth_dev *dev)
}
int
-mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
+mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct rte_flow_item_eth promisc = {
- .hdr.dst_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
- .hdr.src_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
- .hdr.ether_type = 0,
+ struct mlx5_rte_flow_item_sq sq_spec = {
+ .queue = sqn,
};
- struct rte_flow_item eth_all[] = {
- [0] = {
- .type = RTE_FLOW_ITEM_TYPE_ETH,
- .spec = &promisc,
- .mask = &promisc,
+ struct rte_flow_item items[] = {
+ {
+ .type = (enum rte_flow_item_type)MLX5_RTE_FLOW_ITEM_TYPE_SQ,
+ .spec = &sq_spec,
},
- [1] = {
+ {
.type = RTE_FLOW_ITEM_TYPE_END,
},
};
@@ -12348,6 +12345,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
};
struct mlx5_hw_ctrl_flow_info flow_info = {
.type = MLX5_HW_CTRL_FLOW_TYPE_TX_META_COPY,
+ .tx_repr_sq = sqn,
};
MLX5_ASSERT(priv->master);
@@ -12357,7 +12355,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
return 0;
return flow_hw_create_ctrl_flow(dev, dev,
priv->hw_ctrl_fdb->hw_tx_meta_cpy_tbl,
- eth_all, 0, copy_reg_action, 0, &flow_info, false);
+ items, 0, copy_reg_action, 0, &flow_info, external);
}
int
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index f870aaf797..51d848158c 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1479,18 +1479,6 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
unsigned int i;
int ret;
- /*
- * With extended metadata enabled, the Tx metadata copy is handled by default
- * Tx tagging flow rules, so default Tx flow rule is not needed. It is only
- * required when representor matching is disabled.
- */
- if (config->dv_esw_en &&
- !config->repr_matching &&
- config->dv_xmeta_en == MLX5_XMETA_MODE_META32_HWS &&
- priv->master) {
- if (mlx5_flow_hw_create_tx_default_mreg_copy_flow(dev))
- goto error;
- }
for (i = 0; i < priv->txqs_n; ++i) {
struct mlx5_txq_ctrl *txq = mlx5_txq_get(dev, i);
uint32_t queue;
@@ -1512,6 +1500,19 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
goto error;
}
}
+ /*
+ * With extended metadata enabled, the Tx metadata copy is handled by default
+ * Tx tagging flow rules, so default Tx flow rule is not needed. It is only
+ * required when representor matching is disabled.
+ */
+ if (config->dv_esw_en && !config->repr_matching &&
+ config->dv_xmeta_en == MLX5_XMETA_MODE_META32_HWS &&
+ (priv->master || priv->representor)) {
+ if (mlx5_flow_hw_create_tx_default_mreg_copy_flow(dev, queue, false)) {
+ mlx5_txq_release(dev, i);
+ goto error;
+ }
+ }
mlx5_txq_release(dev, i);
}
if (config->fdb_def_rule) {
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 1ddd360a64..3f8d861180 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -1334,6 +1334,14 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num);
return -rte_errno;
}
+
+ if (!priv->sh->config.repr_matching &&
+ priv->sh->config.dv_xmeta_en == MLX5_XMETA_MODE_META32_HWS &&
+ mlx5_flow_hw_create_tx_default_mreg_copy_flow(dev, sq_num, true)) {
+ if (sq_miss_created)
+ mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num);
+ return -rte_errno;
+ }
return 0;
}
#endif
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.849588524 +0200
+++ 0051-net-mlx5-fix-multi-process-Tx-default-rules.patch 2025-12-25 11:16:35.789984000 +0200
@@ -1 +1 @@
-From 2f1bb792ad51aeb2da00198a63422fc478131bd5 Mon Sep 17 00:00:00 2001
+From 9e7df70a2c6cad155f3e7e8917658dc5c1e28b8a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2f1bb792ad51aeb2da00198a63422fc478131bd5 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index c525516672..c5905ebfac 100644
+index 805b346d3c..219ea462c9 100644
@@ -32 +33 @@
-@@ -3565,7 +3565,9 @@ int mlx5_flow_hw_esw_create_sq_miss_flow(struct rte_eth_dev *dev,
+@@ -2919,7 +2919,9 @@ int mlx5_flow_hw_esw_create_sq_miss_flow(struct rte_eth_dev *dev,
@@ -44 +45 @@
-index 491a78a0de..d945c88eb0 100644
+index eff4d36f8f..41910d801b 100644
@@ -47 +48 @@
-@@ -10643,7 +10643,7 @@ flow_hw_create_tx_default_mreg_copy_table(struct rte_eth_dev *dev,
+@@ -8413,7 +8413,7 @@ flow_hw_create_tx_default_mreg_copy_table(struct rte_eth_dev *dev,
@@ -56 +57 @@
-@@ -16004,21 +16004,18 @@ mlx5_flow_hw_esw_create_default_jump_flow(struct rte_eth_dev *dev)
+@@ -12304,21 +12304,18 @@ mlx5_flow_hw_esw_create_default_jump_flow(struct rte_eth_dev *dev)
@@ -65,2 +66,2 @@
-- .hdr.dst_addr.addr_bytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
-- .hdr.src_addr.addr_bytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
+- .hdr.dst_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
+- .hdr.src_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
@@ -86 +87 @@
-@@ -16048,6 +16045,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
+@@ -12348,6 +12345,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
@@ -88,2 +89,2 @@
- struct mlx5_ctrl_flow_info flow_info = {
- .type = MLX5_CTRL_FLOW_TYPE_TX_META_COPY,
+ struct mlx5_hw_ctrl_flow_info flow_info = {
+ .type = MLX5_HW_CTRL_FLOW_TYPE_TX_META_COPY,
@@ -94 +95 @@
-@@ -16057,7 +16055,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
+@@ -12357,7 +12355,7 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev)
@@ -104 +105 @@
-index 916ac03c16..e6acb56d4d 100644
+index f870aaf797..51d848158c 100644
@@ -107 +108 @@
-@@ -1606,18 +1606,6 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
+@@ -1479,18 +1479,6 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
@@ -126 +127 @@
-@@ -1639,6 +1627,19 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
+@@ -1512,6 +1500,19 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
@@ -147 +148 @@
-index b090d8274d..834ca541d5 100644
+index 1ddd360a64..3f8d861180 100644
@@ -150 +151 @@
-@@ -1459,6 +1459,14 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
+@@ -1334,6 +1334,14 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix control flow leakage for external SQ' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (49 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix multi-process Tx default rules' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Shani Peretz
` (49 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/db2a376e8bd7ca39e35b895e4b8427967b1fbf78
Thanks.
Shani
---
From db2a376e8bd7ca39e35b895e4b8427967b1fbf78 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 18 Nov 2025 18:51:58 +0200
Subject: [PATCH] net/mlx5: fix control flow leakage for external SQ
[ upstream commit 3bf9f0f9f0beb8dcd4f3b316c3216a87bc9ab49f ]
There is the private API rte_pmd_mlx5_external_sq_enable(),
that allows application to create the Send Queue (SQ) on its own
and then enable this queue usage as "external SQ".
On this enabling call some implicit flows are created to provide
compliant SQs behavior - copy metadata register, forward queue
originated packet to correct VF, etc.
These implicit flows are marked as "external" ones, and there is
no cleanup on device start and stop for this kind of flows.
Also, PMD has no knowledge if external SQ is still in use by
application and implicit cleanup can not be performed.
As a result, on multiple device start/stop cycles application
re-creates and re-enables many external SQs, causing implicit
flow tables overflow.
To resolve this issue the rte_pmd_mlx5_external_sq_disable()
API is provided, that allows to application to notify PMD
the external SQ is not in usage anymore and related implicit
flows can be dismissed.
Fixes: 26e1eaf2dac4 ("net/mlx5: support device control for E-Switch default rule")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 12 ++--
drivers/net/mlx5/mlx5_flow_hw.c | 106 +++++++++++++++++++++++++++++++-
drivers/net/mlx5/mlx5_trigger.c | 2 +-
drivers/net/mlx5/mlx5_txq.c | 54 ++++++++++++++--
drivers/net/mlx5/rte_pmd_mlx5.h | 18 ++++++
drivers/net/mlx5/version.map | 1 +
6 files changed, 181 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 219ea462c9..1ebf584078 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -2917,12 +2917,16 @@ int mlx5_flow_hw_flush_ctrl_flows(struct rte_eth_dev *dev);
int mlx5_flow_hw_esw_create_sq_miss_flow(struct rte_eth_dev *dev,
uint32_t sqn, bool external);
int mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev,
- uint32_t sqn);
+ uint32_t sqn, bool external);
int mlx5_flow_hw_esw_create_default_jump_flow(struct rte_eth_dev *dev);
int mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev,
- uint32_t sqn,
- bool external);
-int mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external);
+ uint32_t sqn, bool external);
+int mlx5_flow_hw_destroy_tx_default_mreg_copy_flow(struct rte_eth_dev *dev,
+ uint32_t sqn, bool external);
+int mlx5_flow_hw_create_tx_repr_matching_flow(struct rte_eth_dev *dev,
+ uint32_t sqn, bool external);
+int mlx5_flow_hw_destroy_tx_repr_matching_flow(struct rte_eth_dev *dev,
+ uint32_t sqn, bool external);
int mlx5_flow_hw_lacp_rx_flow(struct rte_eth_dev *dev);
int mlx5_flow_actions_validate(struct rte_eth_dev *dev,
const struct rte_flow_actions_template_attr *attr,
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 41910d801b..b66ed53141 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -12197,7 +12197,7 @@ flow_hw_is_matching_sq_miss_flow(struct mlx5_hw_ctrl_flow *cf,
}
int
-mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sqn)
+mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
{
uint16_t port_id = dev->data->port_id;
uint16_t proxy_port_id = dev->data->port_id;
@@ -12224,7 +12224,8 @@ mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sqn)
!proxy_priv->hw_ctrl_fdb->hw_esw_sq_miss_root_tbl ||
!proxy_priv->hw_ctrl_fdb->hw_esw_sq_miss_tbl)
return 0;
- cf = LIST_FIRST(&proxy_priv->hw_ctrl_flows);
+ cf = external ? LIST_FIRST(&proxy_priv->hw_ext_ctrl_flows) :
+ LIST_FIRST(&proxy_priv->hw_ctrl_flows);
while (cf != NULL) {
cf_next = LIST_NEXT(cf, next);
if (flow_hw_is_matching_sq_miss_flow(cf, dev, sqn)) {
@@ -12358,8 +12359,58 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev, uint32_t
items, 0, copy_reg_action, 0, &flow_info, external);
}
+static bool
+flow_hw_is_matching_tx_mreg_copy_flow(struct mlx5_hw_ctrl_flow *cf,
+ struct rte_eth_dev *dev,
+ uint32_t sqn)
+{
+ if (cf->owner_dev != dev)
+ return false;
+ if (cf->info.type == MLX5_HW_CTRL_FLOW_TYPE_TX_META_COPY && cf->info.tx_repr_sq == sqn)
+ return true;
+ return false;
+}
+
+int
+mlx5_flow_hw_destroy_tx_default_mreg_copy_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
+{
+ uint16_t port_id = dev->data->port_id;
+ uint16_t proxy_port_id = dev->data->port_id;
+ struct rte_eth_dev *proxy_dev;
+ struct mlx5_priv *proxy_priv;
+ struct mlx5_hw_ctrl_flow *cf;
+ struct mlx5_hw_ctrl_flow *cf_next;
+ int ret;
+
+ ret = rte_flow_pick_transfer_proxy(port_id, &proxy_port_id, NULL);
+ if (ret) {
+ DRV_LOG(ERR, "Unable to pick transfer proxy port for port %u. Transfer proxy "
+ "port must be present for default SQ miss flow rules to exist.",
+ port_id);
+ return ret;
+ }
+ proxy_dev = &rte_eth_devices[proxy_port_id];
+ proxy_priv = proxy_dev->data->dev_private;
+ if (!proxy_priv->dr_ctx ||
+ !proxy_priv->hw_ctrl_fdb ||
+ !proxy_priv->hw_ctrl_fdb->hw_tx_meta_cpy_tbl)
+ return 0;
+ cf = external ? LIST_FIRST(&proxy_priv->hw_ext_ctrl_flows) :
+ LIST_FIRST(&proxy_priv->hw_ctrl_flows);
+ while (cf != NULL) {
+ cf_next = LIST_NEXT(cf, next);
+ if (flow_hw_is_matching_tx_mreg_copy_flow(cf, dev, sqn)) {
+ claim_zero(flow_hw_destroy_ctrl_flow(proxy_dev, cf->flow));
+ LIST_REMOVE(cf, next);
+ mlx5_free(cf);
+ }
+ cf = cf_next;
+ }
+ return 0;
+}
+
int
-mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
+mlx5_flow_hw_create_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_rte_flow_item_sq sq_spec = {
@@ -12416,6 +12467,55 @@ mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool e
items, 0, actions, 0, &flow_info, external);
}
+static bool
+flow_hw_is_tx_matching_repr_matching_flow(struct mlx5_hw_ctrl_flow *cf,
+ struct rte_eth_dev *dev,
+ uint32_t sqn)
+{
+ if (cf->owner_dev != dev)
+ return false;
+ if (cf->info.type == MLX5_HW_CTRL_FLOW_TYPE_TX_REPR_MATCH && cf->info.tx_repr_sq == sqn)
+ return true;
+ return false;
+}
+
+int
+mlx5_flow_hw_destroy_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool external)
+{
+ uint16_t port_id = dev->data->port_id;
+ uint16_t proxy_port_id = dev->data->port_id;
+ struct rte_eth_dev *proxy_dev;
+ struct mlx5_priv *proxy_priv;
+ struct mlx5_hw_ctrl_flow *cf;
+ struct mlx5_hw_ctrl_flow *cf_next;
+ int ret;
+
+ ret = rte_flow_pick_transfer_proxy(port_id, &proxy_port_id, NULL);
+ if (ret) {
+ DRV_LOG(ERR, "Unable to pick transfer proxy port for port %u. Transfer proxy "
+ "port must be present for default SQ miss flow rules to exist.",
+ port_id);
+ return ret;
+ }
+ proxy_dev = &rte_eth_devices[proxy_port_id];
+ proxy_priv = proxy_dev->data->dev_private;
+ if (!proxy_priv->dr_ctx ||
+ !proxy_priv->hw_tx_repr_tagging_tbl)
+ return 0;
+ cf = external ? LIST_FIRST(&proxy_priv->hw_ext_ctrl_flows) :
+ LIST_FIRST(&proxy_priv->hw_ctrl_flows);
+ while (cf != NULL) {
+ cf_next = LIST_NEXT(cf, next);
+ if (flow_hw_is_tx_matching_repr_matching_flow(cf, dev, sqn)) {
+ claim_zero(flow_hw_destroy_ctrl_flow(proxy_dev, cf->flow));
+ LIST_REMOVE(cf, next);
+ mlx5_free(cf);
+ }
+ cf = cf_next;
+ }
+ return 0;
+}
+
int
mlx5_flow_hw_lacp_rx_flow(struct rte_eth_dev *dev)
{
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 51d848158c..3bda84e963 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1495,7 +1495,7 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
}
}
if (config->dv_esw_en && config->repr_matching) {
- if (mlx5_flow_hw_tx_repr_matching_flow(dev, queue, false)) {
+ if (mlx5_flow_hw_create_tx_repr_matching_flow(dev, queue, false)) {
mlx5_txq_release(dev, i);
goto error;
}
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 3f8d861180..d6f5790983 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -1308,7 +1308,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
priv = dev->data->dev_private;
if ((!priv->representor && !priv->master) ||
!priv->sh->config.dv_esw_en) {
- DRV_LOG(ERR, "Port %u must be represetnor or master port in E-Switch mode.",
+ DRV_LOG(ERR, "Port %u must be representor or master port in E-Switch mode.",
port_id);
rte_errno = EINVAL;
return -rte_errno;
@@ -1329,9 +1329,9 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
}
if (priv->sh->config.repr_matching &&
- mlx5_flow_hw_tx_repr_matching_flow(dev, sq_num, true)) {
+ mlx5_flow_hw_create_tx_repr_matching_flow(dev, sq_num, true)) {
if (sq_miss_created)
- mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num);
+ mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num, true);
return -rte_errno;
}
@@ -1339,7 +1339,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
priv->sh->config.dv_xmeta_en == MLX5_XMETA_MODE_META32_HWS &&
mlx5_flow_hw_create_tx_default_mreg_copy_flow(dev, sq_num, true)) {
if (sq_miss_created)
- mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num);
+ mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num, true);
return -rte_errno;
}
return 0;
@@ -1353,6 +1353,52 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
return -rte_errno;
}
+int
+rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num)
+{
+ struct rte_eth_dev *dev;
+ struct mlx5_priv *priv;
+
+ if (rte_eth_dev_is_valid_port(port_id) < 0) {
+ DRV_LOG(ERR, "There is no Ethernet device for port %u.",
+ port_id);
+ rte_errno = ENODEV;
+ return -rte_errno;
+ }
+ dev = &rte_eth_devices[port_id];
+ priv = dev->data->dev_private;
+ if ((!priv->representor && !priv->master) ||
+ !priv->sh->config.dv_esw_en) {
+ DRV_LOG(ERR, "Port %u must be representor or master port in E-Switch mode.",
+ port_id);
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+ if (sq_num == 0) {
+ DRV_LOG(ERR, "Invalid SQ number.");
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+#ifdef HAVE_MLX5_HWS_SUPPORT
+ if (priv->sh->config.dv_flow_en == 2) {
+ if (priv->sh->config.fdb_def_rule &&
+ mlx5_flow_hw_esw_destroy_sq_miss_flow(dev, sq_num, true))
+ return -rte_errno;
+ if (priv->sh->config.repr_matching &&
+ mlx5_flow_hw_destroy_tx_repr_matching_flow(dev, sq_num, true))
+ return -rte_errno;
+ if (!priv->sh->config.repr_matching &&
+ priv->sh->config.dv_xmeta_en == MLX5_XMETA_MODE_META32_HWS &&
+ mlx5_flow_hw_destroy_tx_default_mreg_copy_flow(dev, sq_num, true))
+ return -rte_errno;
+ return 0;
+ }
+#endif
+ /* Not supported for software steering. */
+ rte_errno = ENOTSUP;
+ return -rte_errno;
+}
+
/**
* Set the Tx queue dynamic timestamp (mask and offset)
*
diff --git a/drivers/net/mlx5/rte_pmd_mlx5.h b/drivers/net/mlx5/rte_pmd_mlx5.h
index cc9340f71e..ee5c4a08e9 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5.h
+++ b/drivers/net/mlx5/rte_pmd_mlx5.h
@@ -232,6 +232,24 @@ enum rte_pmd_mlx5_flow_engine_mode {
__rte_experimental
int rte_pmd_mlx5_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags);
+/**
+ * Disable traffic for external SQ. Should be invoked by application
+ * before destroying the external SQ.
+ *
+ * @param[in] port_id
+ * The port identifier of the Ethernet device.
+ * @param[in] sq_num
+ * SQ HW number.
+ *
+ * @return
+ * 0 on success, a negative errno value otherwise and rte_errno is set.
+ * Possible values for rte_errno:
+ * - EINVAL - invalid sq_number or port type.
+ * - ENODEV - there is no Ethernet device for this port id.
+ */
+__rte_experimental
+int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num);
+
#ifdef __cplusplus
}
#endif
diff --git a/drivers/net/mlx5/version.map b/drivers/net/mlx5/version.map
index 99f5ab754a..3561a1db2a 100644
--- a/drivers/net/mlx5/version.map
+++ b/drivers/net/mlx5/version.map
@@ -17,4 +17,5 @@ EXPERIMENTAL {
rte_pmd_mlx5_external_sq_enable;
# added in 23.03
rte_pmd_mlx5_flow_engine_set_mode;
+ rte_pmd_mlx5_external_sq_disable;
};
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.912054998 +0200
+++ 0052-net-mlx5-fix-control-flow-leakage-for-external-SQ.patch 2025-12-25 11:16:35.824918000 +0200
@@ -1 +1 @@
-From 3bf9f0f9f0beb8dcd4f3b316c3216a87bc9ab49f Mon Sep 17 00:00:00 2001
+From db2a376e8bd7ca39e35b895e4b8427967b1fbf78 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Wed, 29 Oct 2025 17:57:09 +0200
+Date: Tue, 18 Nov 2025 18:51:58 +0200
@@ -5,0 +6,2 @@
+[ upstream commit 3bf9f0f9f0beb8dcd4f3b316c3216a87bc9ab49f ]
+
@@ -37 +39 @@
- drivers/net/mlx5/mlx5_txq.c | 55 +++++++++++++++--
+ drivers/net/mlx5/mlx5_txq.c | 54 ++++++++++++++--
@@ -39 +41,2 @@
- 5 files changed, 181 insertions(+), 12 deletions(-)
+ drivers/net/mlx5/version.map | 1 +
+ 6 files changed, 181 insertions(+), 12 deletions(-)
@@ -42 +45 @@
-index c5905ebfac..6da3c74eb9 100644
+index 219ea462c9..1ebf584078 100644
@@ -45 +48 @@
-@@ -3563,12 +3563,16 @@ int mlx5_flow_hw_flush_ctrl_flows(struct rte_eth_dev *dev);
+@@ -2917,12 +2917,16 @@ int mlx5_flow_hw_flush_ctrl_flows(struct rte_eth_dev *dev);
@@ -67 +70 @@
-index d945c88eb0..eb3dcce59d 100644
+index 41910d801b..b66ed53141 100644
@@ -70 +73 @@
-@@ -15897,7 +15897,7 @@ flow_hw_is_matching_sq_miss_flow(struct mlx5_ctrl_flow_entry *cf,
+@@ -12197,7 +12197,7 @@ flow_hw_is_matching_sq_miss_flow(struct mlx5_hw_ctrl_flow *cf,
@@ -79 +82 @@
-@@ -15924,7 +15924,8 @@ mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sqn)
+@@ -12224,7 +12224,8 @@ mlx5_flow_hw_esw_destroy_sq_miss_flow(struct rte_eth_dev *dev, uint32_t sqn)
@@ -89 +92 @@
-@@ -16058,8 +16059,58 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev, uint32_t
+@@ -12358,8 +12359,58 @@ mlx5_flow_hw_create_tx_default_mreg_copy_flow(struct rte_eth_dev *dev, uint32_t
@@ -94 +97 @@
-+flow_hw_is_matching_tx_mreg_copy_flow(struct mlx5_ctrl_flow_entry *cf,
++flow_hw_is_matching_tx_mreg_copy_flow(struct mlx5_hw_ctrl_flow *cf,
@@ -100 +103 @@
-+ if (cf->info.type == MLX5_CTRL_FLOW_TYPE_TX_META_COPY && cf->info.tx_repr_sq == sqn)
++ if (cf->info.type == MLX5_HW_CTRL_FLOW_TYPE_TX_META_COPY && cf->info.tx_repr_sq == sqn)
@@ -112,2 +115,2 @@
-+ struct mlx5_ctrl_flow_entry *cf;
-+ struct mlx5_ctrl_flow_entry *cf_next;
++ struct mlx5_hw_ctrl_flow *cf;
++ struct mlx5_hw_ctrl_flow *cf_next;
@@ -149 +152 @@
-@@ -16116,6 +16167,55 @@ mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool e
+@@ -12416,6 +12467,55 @@ mlx5_flow_hw_tx_repr_matching_flow(struct rte_eth_dev *dev, uint32_t sqn, bool e
@@ -154 +157 @@
-+flow_hw_is_tx_matching_repr_matching_flow(struct mlx5_ctrl_flow_entry *cf,
++flow_hw_is_tx_matching_repr_matching_flow(struct mlx5_hw_ctrl_flow *cf,
@@ -160 +163 @@
-+ if (cf->info.type == MLX5_CTRL_FLOW_TYPE_TX_REPR_MATCH && cf->info.tx_repr_sq == sqn)
++ if (cf->info.type == MLX5_HW_CTRL_FLOW_TYPE_TX_REPR_MATCH && cf->info.tx_repr_sq == sqn)
@@ -172,2 +175,2 @@
-+ struct mlx5_ctrl_flow_entry *cf;
-+ struct mlx5_ctrl_flow_entry *cf_next;
++ struct mlx5_hw_ctrl_flow *cf;
++ struct mlx5_hw_ctrl_flow *cf_next;
@@ -206 +209 @@
-index e6acb56d4d..6acf398ccc 100644
+index 51d848158c..3bda84e963 100644
@@ -209 +212 @@
-@@ -1622,7 +1622,7 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
+@@ -1495,7 +1495,7 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
@@ -219 +222 @@
-index 834ca541d5..1d258f979c 100644
+index 3f8d861180..d6f5790983 100644
@@ -222 +225 @@
-@@ -1433,7 +1433,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
+@@ -1308,7 +1308,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
@@ -231 +234 @@
-@@ -1454,9 +1454,9 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
+@@ -1329,9 +1329,9 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
@@ -243 +246 @@
-@@ -1464,7 +1464,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
+@@ -1339,7 +1339,7 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
@@ -252 +255 @@
-@@ -1478,6 +1478,53 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
+@@ -1353,6 +1353,52 @@ rte_pmd_mlx5_external_sq_enable(uint16_t port_id, uint32_t sq_num)
@@ -256 +258,0 @@
-+RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_mlx5_external_sq_disable, 25.11)
@@ -307 +309 @@
-index 4d4821afae..31f99e7a78 100644
+index cc9340f71e..ee5c4a08e9 100644
@@ -310,3 +312,3 @@
-@@ -484,6 +484,24 @@ typedef void (*rte_pmd_mlx5_driver_event_callback_t)(uint16_t port_id,
- const void *opaque);
-
+@@ -232,6 +232,24 @@ enum rte_pmd_mlx5_flow_engine_mode {
+ __rte_experimental
+ int rte_pmd_mlx5_flow_engine_set_mode(enum rte_pmd_mlx5_flow_engine_mode mode, uint32_t flags);
@@ -332,3 +334,13 @@
- /**
- * Register mlx5 driver event callback.
- *
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/drivers/net/mlx5/version.map b/drivers/net/mlx5/version.map
+index 99f5ab754a..3561a1db2a 100644
+--- a/drivers/net/mlx5/version.map
++++ b/drivers/net/mlx5/version.map
+@@ -17,4 +17,5 @@ EXPERIMENTAL {
+ rte_pmd_mlx5_external_sq_enable;
+ # added in 23.03
+ rte_pmd_mlx5_flow_engine_set_mode;
++ rte_pmd_mlx5_external_sq_disable;
+ };
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: store MTU at Rx queue allocation time' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (50 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix control flow leakage for external SQ' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect RSS action hash' " Shani Peretz
` (48 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Adrian Schollmeyer; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/8d563f3c6fb0b1b5761ba2c3d14463980a2d405c
Thanks.
Shani
---
From 8d563f3c6fb0b1b5761ba2c3d14463980a2d405c Mon Sep 17 00:00:00 2001
From: Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Date: Thu, 30 Oct 2025 10:13:13 +0100
Subject: [PATCH] net/mlx5: store MTU at Rx queue allocation time
[ upstream commit 4414eb800708475bf1b38794434e590c7204d9d3 ]
For shared Rx queues, equal MTU for all ports sharing queues is enforced
using mlx5_shared_rxq_match() to make sure, the memory allocated in the
Rx buffer is large enough. The check uses the MTU as reported by the
ports' private dev_data structs, which contain the MTU currently set for
the device. In case one port's MTU is altered after Rx queues are
allocated and then a second port joins the shared Rx queue with the old,
yet correct MTU, the check fails despite the fact that the Rx buffer
size is correct for both ports.
This patch adds a new entry to the Rx queue control structure that
captures the MTU at the time the Rx buffer was allocated, since this is
the relevant information that needs to be checked when a port joins a
shared Rx queue.
Fixes: 09c2555303be ("net/mlx5: support shared Rx queue")
Signed-off-by: Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/mlx5_rx.h | 1 +
drivers/net/mlx5/mlx5_rxq.c | 6 +++++-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index c691fac4ce..1296224156 100644
--- a/.mailmap
+++ b/.mailmap
@@ -19,6 +19,7 @@ Adam Ludkiewicz <adam.ludkiewicz@intel.com>
Adham Masarwah <adham@nvidia.com> <adham@mellanox.com>
Adrian Moreno <amorenoz@redhat.com>
Adrian Podlawski <adrian.podlawski@intel.com>
+Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Adrien Mazarguil <adrien.mazarguil@6wind.com>
Ady Agbarih <adypodoman@gmail.com>
Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h
index f9510176a2..1ac95ae78c 100644
--- a/drivers/net/mlx5/mlx5_rx.h
+++ b/drivers/net/mlx5/mlx5_rx.h
@@ -158,6 +158,7 @@ struct mlx5_rxq_data {
/* RX queue control descriptor. */
struct mlx5_rxq_ctrl {
struct mlx5_rxq_data rxq; /* Data path structure. */
+ uint16_t mtu; /* Original MTU that the queue was allocated with. */
LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */
LIST_HEAD(priv, mlx5_rxq_priv) owners; /* Owner rxq list. */
struct mlx5_rxq_obj *obj; /* Verbs/DevX elements. */
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index a3c7f4a96c..e66fe8e310 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -779,7 +779,7 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
dev->data->port_id, idx);
return false;
}
- if (priv->mtu != spriv->mtu) {
+ if (priv->mtu != rxq_ctrl->mtu) {
DRV_LOG(ERR, "port %u queue index %u failed to join shared group: mtu mismatch",
dev->data->port_id, idx);
return false;
@@ -1769,6 +1769,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
}
LIST_INIT(&tmpl->owners);
MLX5_ASSERT(n_seg && n_seg <= MLX5_MAX_RXQ_NSEG);
+ /*
+ * Save the original MTU to check against for shared rx queues.
+ */
+ tmpl->mtu = dev->data->mtu;
/*
* Save the original segment configuration in the shared queue
* descriptor for the later check on the sibling queue creation.
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:38.976469942 +0200
+++ 0053-net-mlx5-store-MTU-at-Rx-queue-allocation-time.patch 2025-12-25 11:16:35.842862000 +0200
@@ -1 +1 @@
-From 4414eb800708475bf1b38794434e590c7204d9d3 Mon Sep 17 00:00:00 2001
+From 8d563f3c6fb0b1b5761ba2c3d14463980a2d405c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4414eb800708475bf1b38794434e590c7204d9d3 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index 1fb3fb5128..50a59a596a 100644
+index c691fac4ce..1296224156 100644
@@ -35 +36,2 @@
-@@ -21,6 +21,7 @@ Adham Masarwah <adham@nvidia.com> <adham@mellanox.com>
+@@ -19,6 +19,7 @@ Adam Ludkiewicz <adam.ludkiewicz@intel.com>
+ Adham Masarwah <adham@nvidia.com> <adham@mellanox.com>
@@ -37 +38,0 @@
- Adrian Pielech <adrian.pielech@intel.com>
@@ -44 +45 @@
-index 7be31066a5..127abe41fb 100644
+index f9510176a2..1ac95ae78c 100644
@@ -47 +48 @@
-@@ -176,6 +176,7 @@ struct __rte_cache_aligned mlx5_rxq_data {
+@@ -158,6 +158,7 @@ struct mlx5_rxq_data {
@@ -56 +57 @@
-index 1425886a22..2264dea877 100644
+index a3c7f4a96c..e66fe8e310 100644
@@ -59 +60 @@
-@@ -780,7 +780,7 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
+@@ -779,7 +779,7 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
@@ -68 +69 @@
-@@ -1812,6 +1812,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1769,6 +1769,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix indirect RSS action hash' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (51 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix external queues access' " Shani Peretz
` (47 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/1ac03026c5fd88808717f979b6a506637884bbd6
Thanks.
Shani
---
From 1ac03026c5fd88808717f979b6a506637884bbd6 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Thu, 30 Oct 2025 18:24:04 +0100
Subject: [PATCH] net/mlx5: fix indirect RSS action hash
[ upstream commit 6b010880a505c5609355180a7f99df940a163385 ]
Whenever indirect RSS flow action is created,
mlx5 PMD creates an hrxq object (abstraction over HW object
used to configure RSS hashing),
for all possible and supported protocols combinations.
For each combination, the hrxq configuration is adjusted
based on RSS hash types provided by the user
(e.g. hash on source L3 address is removed if user passed
RTE_ETH_RSS_L3_SRC_ONLY in hash types).
Function used for adjustment, flow_dv_action_rss_l34_hash_adjust(),
had a bug. If user requested, for example, hashing over both UDP ports
and only IPv6 source address, then RSS hashing was configured
to hash both IPv6 addresses. Adjustment for RTE_ETH_RSS_L3_SRC_ONLY
was skipped.
In HW Steering mode, this resulted in failures to use such indirect
RSS flow action in flow rules created through template flow API.
In this mode, only a single hrxq object is selected during flow rule
creation, based on actual configuration of RSS hash types
in flow action.
Since hrxq was created without applying RTE_ETH_RSS_L3_SRC_ONLY
adjustment and RSS hash types contained RTE_ETH_RSS_L3_SRC_ONLY,
then no matching hrxq could be found, resulting in rule creation failure.
This issue is addressed by the following:
- Missing adjustments are added to flow_dv_action_rss_l34_hash_adjust()
function.
This function is reworked to check each protocol type separately,
instead of using switch case over all combinations.
- Code for setting/looking up hrxq objects based on RSS hash types
is reworked. Separate switch cases for possible combinations in each
function are replaced with a single one.
Additional logging and assertions are added to flag any invalid
or missing combinations.
Beside that, the existing set of protocols combinations set
did not cover RSS hashing only over UDP or TCP ports,
which is a valid configuration.
These combinations are added in this patch
(new elements in mlx5_rss_hash_fields array).
Fixes: 212d17b6a650 ("net/mlx5: fix missing shared RSS hash types")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5.h | 2 -
drivers/net/mlx5/mlx5_flow.c | 15 ++
drivers/net/mlx5/mlx5_flow.h | 39 +--
drivers/net/mlx5/mlx5_flow_dv.c | 410 +++++++++++++++++++-------------
4 files changed, 288 insertions(+), 178 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index a20efed3ae..935eca7570 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1730,8 +1730,6 @@ struct mlx5_obj_ops {
void (*lb_dummy_queue_release)(struct rte_eth_dev *dev);
};
-#define MLX5_RSS_HASH_FIELDS_LEN RTE_DIM(mlx5_rss_hash_fields)
-
enum mlx5_hw_ctrl_flow_type {
MLX5_HW_CTRL_FLOW_TYPE_GENERAL,
MLX5_HW_CTRL_FLOW_TYPE_SQ_MISS_ROOT,
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 412f53d8c8..239ea2be03 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -33,6 +33,21 @@
#include "mlx5_common_os.h"
#include "rte_pmd_mlx5.h"
+const uint64_t mlx5_rss_hash_fields[] = {
+ [MLX5_RSS_HASH_IDX_IPV4] = MLX5_RSS_HASH_IPV4,
+ [MLX5_RSS_HASH_IDX_IPV4_TCP] = MLX5_RSS_HASH_IPV4_TCP,
+ [MLX5_RSS_HASH_IDX_IPV4_UDP] = MLX5_RSS_HASH_IPV4_UDP,
+ [MLX5_RSS_HASH_IDX_IPV4_ESP] = MLX5_RSS_HASH_IPV4_ESP,
+ [MLX5_RSS_HASH_IDX_IPV6] = MLX5_RSS_HASH_IPV6,
+ [MLX5_RSS_HASH_IDX_IPV6_TCP] = MLX5_RSS_HASH_IPV6_TCP,
+ [MLX5_RSS_HASH_IDX_IPV6_UDP] = MLX5_RSS_HASH_IPV6_UDP,
+ [MLX5_RSS_HASH_IDX_IPV6_ESP] = MLX5_RSS_HASH_IPV6_ESP,
+ [MLX5_RSS_HASH_IDX_TCP] = MLX5_TCP_IBV_RX_HASH,
+ [MLX5_RSS_HASH_IDX_UDP] = MLX5_UDP_IBV_RX_HASH,
+ [MLX5_RSS_HASH_IDX_ESP_SPI] = MLX5_RSS_HASH_ESP_SPI,
+ [MLX5_RSS_HASH_IDX_NONE] = MLX5_RSS_HASH_NONE,
+};
+
/*
* Shared array for quick translation between port_id and vport mask/values
* used for HWS rules.
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 1ebf584078..a982e79bdf 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1550,19 +1550,30 @@ struct rte_flow_template_table {
(((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) || \
((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ_SORT))
-/* array of valid combinations of RX Hash fields for RSS */
-static const uint64_t mlx5_rss_hash_fields[] = {
- MLX5_RSS_HASH_IPV4,
- MLX5_RSS_HASH_IPV4_TCP,
- MLX5_RSS_HASH_IPV4_UDP,
- MLX5_RSS_HASH_IPV4_ESP,
- MLX5_RSS_HASH_IPV6,
- MLX5_RSS_HASH_IPV6_TCP,
- MLX5_RSS_HASH_IPV6_UDP,
- MLX5_RSS_HASH_IPV6_ESP,
- MLX5_RSS_HASH_ESP_SPI,
- MLX5_RSS_HASH_NONE,
-};
+
+/**
+ * Each enum variant corresponds to a single valid protocols combination for hrxq configuration
+ * Each variant serves as an index into #mlx5_rss_hash_fields array containing default
+ * bitmaps of ibv_rx_hash_fields flags for given protocols combination.
+ */
+enum {
+ MLX5_RSS_HASH_IDX_IPV4,
+ MLX5_RSS_HASH_IDX_IPV4_TCP,
+ MLX5_RSS_HASH_IDX_IPV4_UDP,
+ MLX5_RSS_HASH_IDX_IPV4_ESP,
+ MLX5_RSS_HASH_IDX_IPV6,
+ MLX5_RSS_HASH_IDX_IPV6_TCP,
+ MLX5_RSS_HASH_IDX_IPV6_UDP,
+ MLX5_RSS_HASH_IDX_IPV6_ESP,
+ MLX5_RSS_HASH_IDX_TCP,
+ MLX5_RSS_HASH_IDX_UDP,
+ MLX5_RSS_HASH_IDX_ESP_SPI,
+ MLX5_RSS_HASH_IDX_NONE,
+ MLX5_RSS_HASH_IDX_MAX,
+};
+
+/** Array of valid combinations of RX Hash fields for RSS. */
+extern const uint64_t mlx5_rss_hash_fields[];
/* Shared RSS action structure */
struct mlx5_shared_action_rss {
@@ -1572,7 +1583,7 @@ struct mlx5_shared_action_rss {
uint8_t key[MLX5_RSS_HASH_KEY_LEN]; /**< RSS hash key. */
struct mlx5_ind_table_obj *ind_tbl;
/**< Hash RX queues (hrxq, hrxq_tunnel fields) indirection table. */
- uint32_t hrxq[MLX5_RSS_HASH_FIELDS_LEN];
+ uint32_t hrxq[MLX5_RSS_HASH_IDX_MAX];
/**< Hash RX queue indexes mapped to mlx5_rss_hash_fields */
rte_spinlock_t action_rss_sl; /**< Shared RSS action spinlock. */
};
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 4c3c4aeffa..d8cfb7cee5 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -15121,6 +15121,145 @@ flow_dv_translate(struct rte_eth_dev *dev,
return 0;
}
+/*
+ * Protocol selector bitmap
+ * Each flag is used as an indicator that given protocol is specified in given RSS hash fields.
+ */
+#define RX_HASH_SELECTOR_IPV4 RTE_BIT32(0)
+#define RX_HASH_SELECTOR_IPV6 RTE_BIT32(1)
+#define RX_HASH_SELECTOR_UDP RTE_BIT32(2)
+#define RX_HASH_SELECTOR_TCP RTE_BIT32(3)
+#define RX_HASH_SELECTOR_ESP_SPI RTE_BIT32(4)
+#define RX_HASH_SELECTOR_NONE (0)
+
+#define RX_HASH_SELECTOR_IPV4_TCP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_TCP)
+#define RX_HASH_SELECTOR_IPV4_UDP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_UDP)
+#define RX_HASH_SELECTOR_IPV4_ESP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_ESP_SPI)
+
+#define RX_HASH_SELECTOR_IPV6_TCP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_TCP)
+#define RX_HASH_SELECTOR_IPV6_UDP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_UDP)
+#define RX_HASH_SELECTOR_IPV6_ESP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_ESP_SPI)
+
+static bool
+rx_hash_selector_has_valid_l3(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on both IPv4 and IPv6 is mutually exclusive. */
+ return !((selectors & RX_HASH_SELECTOR_IPV4) && (selectors & RX_HASH_SELECTOR_IPV6));
+}
+
+static bool
+rx_hash_selector_has_valid_l4(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on both UDP and TCP is mutually exclusive. */
+ return !((selectors & RX_HASH_SELECTOR_UDP) && (selectors & RX_HASH_SELECTOR_TCP));
+}
+
+static bool
+rx_hash_selector_has_valid_esp(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on ESP and other L4 protocol is mutually exclusive. */
+ if (selectors & RX_HASH_SELECTOR_ESP_SPI)
+ return !((selectors & RX_HASH_SELECTOR_UDP) || (selectors & RX_HASH_SELECTOR_TCP));
+
+ return true;
+}
+
+/**
+ * Calculate protocol combination based on provided RSS hashing fields.
+ *
+ * @param[in] hash_fields
+ * Requested RSS hashing fields specified as a flags bitmap, based on ibv_rx_hash_fields.
+ * @param[out] selectors_out
+ * Calculated protocol combination will be written here.
+ * Result will be a bitmap of RX_HASH_SELECTOR_* flags.
+ *
+ * @return
+ * 0 if conversion is successful and protocol combination written to @p selectors_out.
+ * (-EINVAL) otherwise.
+ */
+static int
+rx_hash_calc_selector(const uint64_t hash_fields, uint32_t *selectors_out)
+{
+ const uint64_t filtered_hf = hash_fields & ~IBV_RX_HASH_INNER;
+ uint32_t selectors = 0;
+
+ if (filtered_hf & MLX5_RSS_HASH_IPV4)
+ selectors |= RX_HASH_SELECTOR_IPV4;
+ if (filtered_hf & MLX5_RSS_HASH_IPV6)
+ selectors |= RX_HASH_SELECTOR_IPV6;
+ if (!rx_hash_selector_has_valid_l3(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on both IPv4 and IPv6 is invalid: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ if (filtered_hf & MLX5_UDP_IBV_RX_HASH)
+ selectors |= RX_HASH_SELECTOR_UDP;
+ if (filtered_hf & MLX5_TCP_IBV_RX_HASH)
+ selectors |= RX_HASH_SELECTOR_TCP;
+ if (!rx_hash_selector_has_valid_l4(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on both UDP and TCP is invalid: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ if (filtered_hf & MLX5_RSS_HASH_ESP_SPI)
+ selectors |= RX_HASH_SELECTOR_ESP_SPI;
+ if (!rx_hash_selector_has_valid_esp(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on ESP SPI and UDP or TCP is mutually exclusive: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ *selectors_out = selectors;
+ return 0;
+}
+
+/**
+ * Calculate the hrxq object index based on protocol combination.
+ *
+ * @param[in] selectors
+ * Protocol combination specified as bitmap of RX_HASH_SELECTOR_* flags.
+ *
+ * @return
+ * Index into hrxq array in #mlx5_shared_action_rss based on ginve protocol combination.
+ * (-EINVAL) if given protocol combination is not supported or is invalid.
+ */
+static int
+get_rss_hash_idx(const uint32_t selectors)
+{
+ switch (selectors) {
+ case RX_HASH_SELECTOR_IPV4:
+ return MLX5_RSS_HASH_IDX_IPV4;
+ case RX_HASH_SELECTOR_IPV4_TCP:
+ return MLX5_RSS_HASH_IDX_IPV4_TCP;
+ case RX_HASH_SELECTOR_IPV4_UDP:
+ return MLX5_RSS_HASH_IDX_IPV4_UDP;
+ case RX_HASH_SELECTOR_IPV4_ESP:
+ return MLX5_RSS_HASH_IDX_IPV4_ESP;
+ case RX_HASH_SELECTOR_IPV6:
+ return MLX5_RSS_HASH_IDX_IPV6;
+ case RX_HASH_SELECTOR_IPV6_TCP:
+ return MLX5_RSS_HASH_IDX_IPV6_TCP;
+ case RX_HASH_SELECTOR_IPV6_UDP:
+ return MLX5_RSS_HASH_IDX_IPV6_UDP;
+ case RX_HASH_SELECTOR_IPV6_ESP:
+ return MLX5_RSS_HASH_IDX_IPV6_ESP;
+ case RX_HASH_SELECTOR_TCP:
+ return MLX5_RSS_HASH_IDX_TCP;
+ case RX_HASH_SELECTOR_UDP:
+ return MLX5_RSS_HASH_IDX_UDP;
+ case RX_HASH_SELECTOR_ESP_SPI:
+ return MLX5_RSS_HASH_IDX_ESP_SPI;
+ case RX_HASH_SELECTOR_NONE:
+ return MLX5_RSS_HASH_IDX_NONE;
+ default:
+ DRV_LOG(ERR, "invalid hrxq hash fields combination: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+}
+
/**
* Set hash RX queue by hash fields (see enum ibv_rx_hash_fields)
* and tunnel.
@@ -15128,7 +15267,8 @@ flow_dv_translate(struct rte_eth_dev *dev,
* @param[in, out] action
* Shred RSS action holding hash RX queue objects.
* @param[in] hash_fields
- * Defines combination of packet fields to participate in RX hash.
+ * Defines combination of packet fields to participate in RX hash,
+ * specified as a bitmap of #ibv_rx_hash_fields flags.
* @param[in] tunnel
* Tunnel type
* @param[in] hrxq_idx
@@ -15143,65 +15283,26 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
uint32_t hrxq_idx)
{
uint32_t *hrxqs = action->hrxq;
+ uint32_t selectors = 0;
+ int ret;
- switch (hash_fields & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_SRC_ONLY:
- hrxqs[0] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_SRC_ONLY:
- hrxqs[1] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_SRC_ONLY:
- hrxqs[2] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_SRC_ONLY:
- hrxqs[3] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_SRC_ONLY:
- hrxqs[4] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_SRC_ONLY:
- hrxqs[5] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_NONE:
- hrxqs[6] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_ESP:
- hrxqs[7] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_ESP:
- hrxqs[8] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_ESP_SPI:
- hrxqs[9] = hrxq_idx;
- return 0;
- default:
- return -1;
- }
+ ret = rx_hash_calc_selector(hash_fields, &selectors);
+ /*
+ * Hash fields passed to this function are constructed internally.
+ * If this fails, then this is a PMD bug.
+ */
+ MLX5_ASSERT(ret == 0);
+
+ ret = get_rss_hash_idx(selectors);
+ /*
+ * Based on above assert, selectors should always yield correct index
+ * in mlx5_rss_hash_fields array.
+ * If this fails, then this is a PMD bug.
+ */
+ MLX5_ASSERT(ret >= 0 && ret < MLX5_RSS_HASH_IDX_MAX);
+ hrxqs[ret] = hrxq_idx;
+
+ return 0;
}
/**
@@ -15213,7 +15314,8 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
* @param[in] idx
* Shared RSS action ID holding hash RX queue objects.
* @param[in] hash_fields
- * Defines combination of packet fields to participate in RX hash.
+ * Defines combination of packet fields to participate in RX hash,
+ * specified as a bitmap of #ibv_rx_hash_fields flags.
* @param[in] tunnel
* Tunnel type
*
@@ -15228,56 +15330,26 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
struct mlx5_shared_action_rss *shared_rss =
mlx5_ipool_get(priv->sh->ipool[MLX5_IPOOL_RSS_SHARED_ACTIONS], idx);
const uint32_t *hrxqs = shared_rss->hrxq;
+ uint32_t selectors = 0;
+ int ret;
- switch (hash_fields & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_SRC_ONLY:
- return hrxqs[0];
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_SRC_ONLY:
- return hrxqs[1];
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_SRC_ONLY:
- return hrxqs[2];
- case MLX5_RSS_HASH_IPV6:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_SRC_ONLY:
- return hrxqs[3];
- case MLX5_RSS_HASH_IPV6_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_SRC_ONLY:
- return hrxqs[4];
- case MLX5_RSS_HASH_IPV6_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_SRC_ONLY:
- return hrxqs[5];
- case MLX5_RSS_HASH_NONE:
- return hrxqs[6];
- case MLX5_RSS_HASH_IPV4_ESP:
- return hrxqs[7];
- case MLX5_RSS_HASH_IPV6_ESP:
- return hrxqs[8];
- case MLX5_RSS_HASH_ESP_SPI:
- return hrxqs[9];
- default:
+ ret = rx_hash_calc_selector(hash_fields, &selectors);
+ if (ret < 0) {
+ DRV_LOG(ERR, "port %u Rx hash selector calculation failed: "
+ "rss_act_idx=%u hash_fields=0x%" PRIx64 " selectors=0x%" PRIx32,
+ dev->data->port_id, idx, hash_fields, selectors);
+ return 0;
+ }
+
+ ret = get_rss_hash_idx(selectors);
+ if (ret < 0) {
+ DRV_LOG(ERR, "port %u failed hrxq index lookup: "
+ "rss_act_idx=%u hash_fields=0x%" PRIx64 " selectors=0x%" PRIx32,
+ dev->data->port_id, idx, hash_fields, selectors);
return 0;
}
+ return hrxqs[ret];
}
/**
@@ -15950,7 +16022,7 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
*/
static int
__flow_dv_hrxqs_release(struct rte_eth_dev *dev,
- uint32_t (*hrxqs)[MLX5_RSS_HASH_FIELDS_LEN])
+ uint32_t (*hrxqs)[MLX5_RSS_HASH_IDX_MAX])
{
size_t i;
int remaining = 0;
@@ -15985,6 +16057,62 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
return __flow_dv_hrxqs_release(dev, &shared_rss->hrxq);
}
+static inline void
+filter_ipv4_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & MLX5_IPV4_LAYER_TYPES) {
+ *hash_fields &= ~MLX5_RSS_HASH_IPV4;
+ if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_IPV4;
+ else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_IPV4;
+ else
+ *hash_fields |= MLX5_RSS_HASH_IPV4;
+ }
+}
+
+static inline void
+filter_ipv6_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & MLX5_IPV6_LAYER_TYPES) {
+ *hash_fields &= ~MLX5_RSS_HASH_IPV6;
+ if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_IPV6;
+ else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_IPV6;
+ else
+ *hash_fields |= MLX5_RSS_HASH_IPV6;
+ }
+}
+
+static inline void
+filter_udp_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & RTE_ETH_RSS_UDP) {
+ *hash_fields &= ~MLX5_UDP_IBV_RX_HASH;
+ if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_PORT_UDP;
+ else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_PORT_UDP;
+ else
+ *hash_fields |= MLX5_UDP_IBV_RX_HASH;
+ }
+}
+
+static inline void
+filter_tcp_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & RTE_ETH_RSS_TCP) {
+ *hash_fields &= ~MLX5_TCP_IBV_RX_HASH;
+ if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_PORT_TCP;
+ else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_PORT_TCP;
+ else
+ *hash_fields |= MLX5_TCP_IBV_RX_HASH;
+ }
+}
+
/**
* Adjust L3/L4 hash value of pre-created shared RSS hrxq according to
* user input.
@@ -15996,9 +16124,9 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
* same slot in mlx5_rss_hash_fields.
*
* @param[in] orig_rss_types
- * RSS type as provided in shared RSS action.
+ * RSS type as provided in shared RSS action, specified as a bitmap of RTE_ETH_RSS_* flags.
* @param[in, out] hash_field
- * hash_field variable needed to be adjusted.
+ * hash_field variable needed to be adjusted, specified as a bitmap of #ibv_rx_hash_fields flags.
*
* @return
* void
@@ -16007,60 +16135,18 @@ void
flow_dv_action_rss_l34_hash_adjust(uint64_t orig_rss_types,
uint64_t *hash_field)
{
+ uint64_t hash_field_protos = *hash_field & ~IBV_RX_HASH_INNER;
uint64_t rss_types = rte_eth_rss_hf_refine(orig_rss_types);
- switch (*hash_field & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- if (rss_types & MLX5_IPV4_LAYER_TYPES) {
- *hash_field &= ~MLX5_RSS_HASH_IPV4;
- if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_IPV4;
- else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_IPV4;
- else
- *hash_field |= MLX5_RSS_HASH_IPV4;
- }
- return;
- case MLX5_RSS_HASH_IPV6:
- if (rss_types & MLX5_IPV6_LAYER_TYPES) {
- *hash_field &= ~MLX5_RSS_HASH_IPV6;
- if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_IPV6;
- else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_IPV6;
- else
- *hash_field |= MLX5_RSS_HASH_IPV6;
- }
- return;
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP:
- if (rss_types & RTE_ETH_RSS_UDP) {
- *hash_field &= ~MLX5_UDP_IBV_RX_HASH;
- if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_PORT_UDP;
- else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_PORT_UDP;
- else
- *hash_field |= MLX5_UDP_IBV_RX_HASH;
- }
- return;
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP:
- if (rss_types & RTE_ETH_RSS_TCP) {
- *hash_field &= ~MLX5_TCP_IBV_RX_HASH;
- if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_PORT_TCP;
- else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_PORT_TCP;
- else
- *hash_field |= MLX5_TCP_IBV_RX_HASH;
- }
- return;
- default:
- return;
- }
+ if (hash_field_protos & MLX5_RSS_HASH_IPV4)
+ filter_ipv4_types(rss_types, hash_field);
+ else if (hash_field_protos & MLX5_RSS_HASH_IPV6)
+ filter_ipv6_types(rss_types, hash_field);
+
+ if (hash_field_protos & MLX5_UDP_IBV_RX_HASH)
+ filter_udp_types(rss_types, hash_field);
+ else if (hash_field_protos & MLX5_TCP_IBV_RX_HASH)
+ filter_tcp_types(rss_types, hash_field);
}
/**
@@ -16112,7 +16198,7 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
rss_desc.ind_tbl = shared_rss->ind_tbl;
if (priv->sh->config.dv_flow_en == 2)
rss_desc.hws_flags = MLX5DR_ACTION_FLAG_HWS_RX;
- for (i = 0; i < MLX5_RSS_HASH_FIELDS_LEN; i++) {
+ for (i = 0; i < MLX5_RSS_HASH_IDX_MAX; i++) {
struct mlx5_hrxq *hrxq;
uint64_t hash_fields = mlx5_rss_hash_fields[i];
int tunnel = 0;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.030679298 +0200
+++ 0054-net-mlx5-fix-indirect-RSS-action-hash.patch 2025-12-25 11:16:35.884933000 +0200
@@ -1 +1 @@
-From 6b010880a505c5609355180a7f99df940a163385 Mon Sep 17 00:00:00 2001
+From 1ac03026c5fd88808717f979b6a506637884bbd6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6b010880a505c5609355180a7f99df940a163385 ]
+
@@ -49 +50,0 @@
-Cc: stable@dpdk.org
@@ -61 +62 @@
-index 203cf00596..7e4bfacd11 100644
+index a20efed3ae..935eca7570 100644
@@ -64 +65 @@
-@@ -1842,8 +1842,6 @@ struct mlx5_obj_ops {
+@@ -1730,8 +1730,6 @@ struct mlx5_obj_ops {
@@ -70,3 +71,3 @@
- enum mlx5_ctrl_flow_type {
- MLX5_CTRL_FLOW_TYPE_GENERAL,
- MLX5_CTRL_FLOW_TYPE_SQ_MISS_ROOT,
+ enum mlx5_hw_ctrl_flow_type {
+ MLX5_HW_CTRL_FLOW_TYPE_GENERAL,
+ MLX5_HW_CTRL_FLOW_TYPE_SQ_MISS_ROOT,
@@ -74 +75 @@
-index 098ef9d034..ed67a90a22 100644
+index 412f53d8c8..239ea2be03 100644
@@ -77 +78 @@
-@@ -34,6 +34,21 @@
+@@ -33,6 +33,21 @@
@@ -100 +101 @@
-index ef743fc3cb..2de0f35815 100644
+index 1ebf584078..a982e79bdf 100644
@@ -103 +104 @@
-@@ -1897,19 +1897,30 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
+@@ -1550,19 +1550,30 @@ struct rte_flow_template_table {
@@ -147 +148 @@
-@@ -1919,7 +1930,7 @@ struct mlx5_shared_action_rss {
+@@ -1572,7 +1583,7 @@ struct mlx5_shared_action_rss {
@@ -157 +158 @@
-index 1564bd7cbe..f765f94116 100644
+index 4c3c4aeffa..d8cfb7cee5 100644
@@ -160 +161 @@
-@@ -15788,6 +15788,145 @@ flow_dv_translate(struct rte_eth_dev *dev,
+@@ -15121,6 +15121,145 @@ flow_dv_translate(struct rte_eth_dev *dev,
@@ -306 +307 @@
-@@ -15795,7 +15934,8 @@ flow_dv_translate(struct rte_eth_dev *dev,
+@@ -15128,7 +15267,8 @@ flow_dv_translate(struct rte_eth_dev *dev,
@@ -316 +317 @@
-@@ -15810,65 +15950,26 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
+@@ -15143,65 +15283,26 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
@@ -401 +402 @@
-@@ -15880,7 +15981,8 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
+@@ -15213,7 +15314,8 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
@@ -411 +412 @@
-@@ -15895,56 +15997,26 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
+@@ -15228,56 +15330,26 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
@@ -469,3 +470,3 @@
- return 0;
- }
-
++ return 0;
++ }
++
@@ -477,3 +478,3 @@
-+ return 0;
-+ }
-+
+ return 0;
+ }
+
@@ -484 +485 @@
-@@ -16634,7 +16706,7 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
+@@ -15950,7 +16022,7 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
@@ -493 +494 @@
-@@ -16669,6 +16741,62 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
+@@ -15985,6 +16057,62 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
@@ -556 +557 @@
-@@ -16680,9 +16808,9 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
+@@ -15996,9 +16124,9 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
@@ -568 +569 @@
-@@ -16691,60 +16819,18 @@ void
+@@ -16007,60 +16135,18 @@ void
@@ -639 +640 @@
-@@ -16796,7 +16882,7 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
+@@ -16112,7 +16198,7 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix external queues access' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (52 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect RSS action hash' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix modify field action restriction' " Shani Peretz
` (46 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/4b7f438400546fae4be2fc97d7889ba23d4f650d
Thanks.
Shani
---
From 4b7f438400546fae4be2fc97d7889ba23d4f650d Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Tue, 18 Nov 2025 11:59:00 +0200
Subject: [PATCH] net/mlx5: fix external queues access
[ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ]
mlx5_ext_rxq_get() did not return
NULL value if query index was not referencing external queue.
As a result, calling functions did not expect the NULL on return.
External Rx queue:
- In mlx5_ext_rxq_get() remove assert and return NULL if a queue index
does not point to a valid external queue.
- In mlx5_ext_rxq_verify() validate that probed queue index references
a valid extern queue.
Fixes: 311b17e669ab ("net/mlx5: support queue/RSS actions for external Rx queue")
Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_devx.c | 5 +++++
drivers/net/mlx5/mlx5_rxq.c | 17 ++++++++++-------
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index be9dbf0467..92e4e09002 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -684,6 +684,11 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
struct mlx5_external_rxq *ext_rxq =
mlx5_ext_rxq_get(dev, queues[i]);
+ if (ext_rxq == NULL) {
+ rte_errno = EINVAL;
+ mlx5_free(rqt_attr);
+ return NULL;
+ }
rqt_attr->rq_list[i] = ext_rxq->hw_id;
} else {
struct mlx5_rxq_priv *rxq =
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index e66fe8e310..33dfda185b 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -2162,7 +2162,8 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
{
struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx);
- __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED);
+ if (rxq != NULL)
+ __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED);
return rxq;
}
@@ -2182,7 +2183,9 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
{
struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx);
- return __atomic_fetch_sub(&rxq->refcnt, 1, __ATOMIC_RELAXED) - 1;
+ return rxq != NULL ?
+ __atomic_fetch_sub(&rxq->refcnt, 1, __ATOMIC_RELAXED) :
+ UINT32_MAX - 1;
}
/**
@@ -2201,8 +2204,8 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
{
struct mlx5_priv *priv = dev->data->dev_private;
- MLX5_ASSERT(mlx5_is_external_rxq(dev, idx));
- return &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN];
+ return mlx5_is_external_rxq(dev, idx) ?
+ &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN] : NULL;
}
/**
@@ -2365,7 +2368,6 @@ int
mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_external_rxq *rxq;
uint32_t i;
int ret = 0;
@@ -2373,8 +2375,9 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
return 0;
for (i = RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN; i <= UINT16_MAX ; ++i) {
- rxq = mlx5_ext_rxq_get(dev, i);
- if (rxq->refcnt < 2)
+ struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, i);
+
+ if (rxq == NULL || rxq->refcnt < 2)
continue;
DRV_LOG(DEBUG, "Port %u external RxQ %u still referenced.",
dev->data->port_id, i);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.100416038 +0200
+++ 0055-net-mlx5-fix-external-queues-access.patch 2025-12-25 11:16:35.896996000 +0200
@@ -1 +1 @@
-From d524b58819b46ea47d02338204d24c2f2ba29ee2 Mon Sep 17 00:00:00 2001
+From 4b7f438400546fae4be2fc97d7889ba23d4f650d Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Thu, 30 Oct 2025 11:11:38 +0200
+Date: Tue, 18 Nov 2025 11:59:00 +0200
@@ -6 +6,3 @@
-mlx5_ext_rxq_get() and mlx5_ext_txq_get() functions did not return
+[ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ]
+
+mlx5_ext_rxq_get() did not return
@@ -19,8 +20,0 @@
-External Tx queue:
-
-- In mlx5_ext_txq_get() remove assert and return NULL if a queue index
- does not point to a valid external queue.
-
-- In mlx5_ext_txq_verify() validate that probed queue index references
- a valid extern queue.
-
@@ -34 +27,0 @@
- drivers/net/mlx5/mlx5_flow.h | 2 ++
@@ -36,2 +29 @@
- drivers/net/mlx5/mlx5_txq.c | 10 +++++-----
- 4 files changed, 22 insertions(+), 12 deletions(-)
+ 2 files changed, 15 insertions(+), 7 deletions(-)
@@ -40 +32 @@
-index 673c9f3902..523b53d713 100644
+index be9dbf0467..92e4e09002 100644
@@ -43,2 +35,2 @@
-@@ -761,6 +761,11 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
- struct mlx5_external_q *ext_rxq =
+@@ -684,6 +684,11 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
+ struct mlx5_external_rxq *ext_rxq =
@@ -55,13 +46,0 @@
-diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
-index 2de0f35815..308aeadcc8 100644
---- a/drivers/net/mlx5/mlx5_flow.h
-+++ b/drivers/net/mlx5/mlx5_flow.h
-@@ -2042,6 +2042,8 @@ flow_hw_get_sqn(struct rte_eth_dev *dev, uint16_t tx_queue, uint32_t *sqn)
- }
- if (mlx5_is_external_txq(dev, tx_queue)) {
- ext_txq = mlx5_ext_txq_get(dev, tx_queue);
-+ if (ext_txq == NULL)
-+ return -EINVAL;
- *sqn = ext_txq->hw_id;
- return 0;
- }
@@ -69 +48 @@
-index 2264dea877..9210a92c5f 100644
+index e66fe8e310..33dfda185b 100644
@@ -72 +51 @@
-@@ -2216,7 +2216,8 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2162,7 +2162,8 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
@@ -74 +53 @@
- struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, idx);
+ struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx);
@@ -76 +55 @@
-- rte_atomic_fetch_add_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed);
+- __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED);
@@ -78 +57 @@
-+ rte_atomic_fetch_add_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed);
++ __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED);
@@ -82 +61 @@
-@@ -2236,7 +2237,9 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2182,7 +2183,9 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
@@ -84 +63 @@
- struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, idx);
+ struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx);
@@ -86 +65 @@
-- return rte_atomic_fetch_sub_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed) - 1;
+- return __atomic_fetch_sub(&rxq->refcnt, 1, __ATOMIC_RELAXED) - 1;
@@ -88,2 +67,2 @@
-+ rte_atomic_fetch_sub_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed) - 1 :
-+ UINT32_MAX;
++ __atomic_fetch_sub(&rxq->refcnt, 1, __ATOMIC_RELAXED) :
++ UINT32_MAX - 1;
@@ -93 +72 @@
-@@ -2255,8 +2258,8 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2201,8 +2204,8 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
@@ -100 +79 @@
-+ &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN] : NULL;
++ &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN] : NULL;
@@ -104 +83 @@
-@@ -2419,7 +2422,6 @@ int
+@@ -2365,7 +2368,6 @@ int
@@ -108 +87 @@
-- struct mlx5_external_q *rxq;
+- struct mlx5_external_rxq *rxq;
@@ -112 +91 @@
-@@ -2427,8 +2429,9 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
+@@ -2373,8 +2375,9 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
@@ -118 +97 @@
-+ struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, i);
++ struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, i);
@@ -123,35 +101,0 @@
- dev->data->port_id, i);
-diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
-index e20165d74e..e273486809 100644
---- a/drivers/net/mlx5/mlx5_txq.c
-+++ b/drivers/net/mlx5/mlx5_txq.c
-@@ -1281,8 +1281,8 @@ mlx5_ext_txq_get(struct rte_eth_dev *dev, uint16_t idx)
- {
- struct mlx5_priv *priv = dev->data->dev_private;
-
-- MLX5_ASSERT(mlx5_is_external_txq(dev, idx));
-- return &priv->ext_txqs[idx - MLX5_EXTERNAL_TX_QUEUE_ID_MIN];
-+ return mlx5_is_external_txq(dev, idx) ?
-+ &priv->ext_txqs[idx - MLX5_EXTERNAL_TX_QUEUE_ID_MIN] : NULL;
- }
-
- /**
-@@ -1298,7 +1298,6 @@ int
- mlx5_ext_txq_verify(struct rte_eth_dev *dev)
- {
- struct mlx5_priv *priv = dev->data->dev_private;
-- struct mlx5_external_q *txq;
- uint32_t i;
- int ret = 0;
-
-@@ -1306,8 +1305,9 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
- return 0;
-
- for (i = MLX5_EXTERNAL_TX_QUEUE_ID_MIN; i <= UINT16_MAX ; ++i) {
-- txq = mlx5_ext_txq_get(dev, i);
-- if (txq->refcnt < 2)
-+ struct mlx5_external_q *txq = mlx5_ext_txq_get(dev, i);
-+
-+ if (txq == NULL || txq->refcnt < 2)
- continue;
- DRV_LOG(DEBUG, "Port %u external TxQ %u still referenced.",
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix modify field action restriction' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (53 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix external queues access' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix meter mark allocation' " Shani Peretz
` (45 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/5733bf629fa1a4d20f421da19515ed8681b07e61
Thanks.
Shani
---
From 5733bf629fa1a4d20f421da19515ed8681b07e61 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 5 Nov 2025 10:50:49 +0200
Subject: [PATCH] net/mlx5: fix modify field action restriction
[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
Update DV flow engine modify field validation:
- Reject 'add' and 'sub' operations when source field is not VALUE
or POINTER in DV flow engine.
Update documentation to clarify operation support:
- 'set' operation is supported in all modes
- 'add' operation with VALUE/POINTER source fields is
supported in DV/HWS mode.
- Specify relevant HW supporting packet header as 'src' field.
- List supported 'dst' fields.
Fixes: 641dbe4fb053 ("net/mlx5: support modify field flow action")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
doc/guides/nics/mlx5.rst | 21 ++++++++++++++++++++-
drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 01133a5898..d19de3f871 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -579,7 +579,26 @@ Limitations
- Modify Field flow:
- - Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
+ - Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
+ - Supports the 'add' operation with 'src' field of type
+ ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER`` with both HW steering (``dv_flow_en=2``)
+ and DV flow engine (``dv_flow_en=1``).
+ - HW steering flow engine, starting with ConnectX-7 and BlueField-3,
+ supports packet header fields in 'src' field.
+ 'dst' field can be any of the following:
+
+ - ``RTE_FLOW_FIELD_IPV4_TTL``
+ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
+ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
+ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
+ - ``RTE_FLOW_FIELD_TAG``
+ - ``RTE_FLOW_FIELD_META``
+ - ``RTE_FLOW_FIELD_FLEX_ITEM``
+ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
+ - ``RTE_FLOW_FIELD_IPV4_IHL``
+ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
+ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
+
- Modification of an arbitrary place in a packet via the special ``RTE_FLOW_FIELD_START`` Field ID is not supported.
- Modification of the MPLS header is supported only in HWS and only to copy from,
the encapsulation level is always 0.
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index d8cfb7cee5..56a0beeef6 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -5357,6 +5357,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
}
if (src_data->field != RTE_FLOW_FIELD_VALUE &&
src_data->field != RTE_FLOW_FIELD_POINTER) {
+ if (conf->operation != RTE_FLOW_MODIFY_SET)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION_CONF,
+ &conf->operation,
+ "modify field action type add is not"
+ " supported when src field type is"
+ " not value/pointer");
if (root)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_ACTION, action,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.151846631 +0200
+++ 0056-net-mlx5-fix-modify-field-action-restriction.patch 2025-12-25 11:16:35.925949000 +0200
@@ -1 +1 @@
-From 17082f45e93697dcfbe056da7f90af90362cc6b2 Mon Sep 17 00:00:00 2001
+From 5733bf629fa1a4d20f421da19515ed8681b07e61 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
- doc/guides/nics/mlx5.rst | 23 ++++++++++++++++++++++-
+ doc/guides/nics/mlx5.rst | 21 ++++++++++++++++++++-
@@ -25 +26 @@
- 2 files changed, 29 insertions(+), 1 deletion(-)
+ 2 files changed, 27 insertions(+), 1 deletion(-)
@@ -28 +29 @@
-index 8474ebf601..3eb7817f9a 100644
+index 01133a5898..d19de3f871 100644
@@ -31,3 +32 @@
-@@ -3086,7 +3086,28 @@ DPDK 21.02
- Limitations
- ^^^^^^^^^^^
+@@ -579,7 +579,26 @@ Limitations
@@ -35,9 +34,10 @@
--#. Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
-+#. Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
-+
-+#. Supports the 'add' operation with 'src' field
-+ of type ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER``
-+ with both :ref:`HW steering <mlx5_hws>` and DV flow engine (``dv_flow_en=1``).
-+
-+ HW steering flow engine, starting with ConnectX-7 and BlueField-3,
-+ supports packet header fields in 'src' field.
+ - Modify Field flow:
+
+- - Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
++ - Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
++ - Supports the 'add' operation with 'src' field of type
++ ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER`` with both HW steering (``dv_flow_en=2``)
++ and DV flow engine (``dv_flow_en=1``).
++ - HW steering flow engine, starting with ConnectX-7 and BlueField-3,
++ supports packet header fields in 'src' field.
++ 'dst' field can be any of the following:
@@ -45 +45,11 @@
-+ 'dst' field can be any of the following:
++ - ``RTE_FLOW_FIELD_IPV4_TTL``
++ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
++ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
++ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
++ - ``RTE_FLOW_FIELD_TAG``
++ - ``RTE_FLOW_FIELD_META``
++ - ``RTE_FLOW_FIELD_FLEX_ITEM``
++ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
++ - ``RTE_FLOW_FIELD_IPV4_IHL``
++ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
++ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
@@ -47,14 +57,3 @@
-+ - ``RTE_FLOW_FIELD_IPV4_TTL``
-+ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
-+ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
-+ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
-+ - ``RTE_FLOW_FIELD_TAG``
-+ - ``RTE_FLOW_FIELD_META``
-+ - ``RTE_FLOW_FIELD_FLEX_ITEM``
-+ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
-+ - ``RTE_FLOW_FIELD_IPV4_IHL``
-+ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
-+ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
-
- #. In template tables of group 0, the modify action must be fully masked.
-
+ - Modification of an arbitrary place in a packet via the special ``RTE_FLOW_FIELD_START`` Field ID is not supported.
+ - Modification of the MPLS header is supported only in HWS and only to copy from,
+ the encapsulation level is always 0.
@@ -62 +61 @@
-index f765f94116..95ca57e8c4 100644
+index d8cfb7cee5..56a0beeef6 100644
@@ -65 +64 @@
-@@ -5642,6 +5642,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
+@@ -5357,6 +5357,13 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix meter mark allocation' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (54 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix modify field action restriction' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect meter index leak' " Shani Peretz
` (44 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Rongwei Liu; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/7be56900d8935e1bbd0146b3b4a1e886ddf79e37
Thanks.
Shani
---
From 7be56900d8935e1bbd0146b3b4a1e886ddf79e37 Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Wed, 5 Nov 2025 14:52:00 +0200
Subject: [PATCH] net/mlx5: fix meter mark allocation
[ upstream commit 112facb17b0c0efd90e15501d0830a0f6af7b7c9 ]
When failing to allocate a meter HW resource,
PMD may use an invalid index to release the job.
Fixes: 4359d9d1f76b ("net/mlx5: fix sync meter processing in HWS")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index b66ed53141..a1d711caa5 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1600,6 +1600,8 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
return -1;
aso_mtr = flow_hw_meter_mark_alloc(dev, queue, action, job, true);
if (!aso_mtr) {
+ if (queue == MLX5_HW_INV_QUEUE)
+ queue = CTRL_QUEUE_ID(priv);
flow_hw_job_put(priv, job, queue);
return -1;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.213386305 +0200
+++ 0057-net-mlx5-fix-meter-mark-allocation.patch 2025-12-25 11:16:35.944788000 +0200
@@ -1 +1 @@
-From 112facb17b0c0efd90e15501d0830a0f6af7b7c9 Mon Sep 17 00:00:00 2001
+From 7be56900d8935e1bbd0146b3b4a1e886ddf79e37 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 112facb17b0c0efd90e15501d0830a0f6af7b7c9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index ff68483a40..cd11619b26 100644
+index b66ed53141..a1d711caa5 100644
@@ -22,3 +23,3 @@
-@@ -1934,6 +1934,8 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
- aso_mtr = flow_hw_meter_mark_alloc(dev, queue, action, job,
- true, error);
+@@ -1600,6 +1600,8 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
+ return -1;
+ aso_mtr = flow_hw_meter_mark_alloc(dev, queue, action, job, true);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix indirect meter index leak' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (55 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix meter mark allocation' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Shani Peretz
` (43 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Rongwei Liu; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/82e034edaff9d145e7ae11454b401c4771bec011
Thanks.
Shani
---
From 82e034edaff9d145e7ae11454b401c4771bec011 Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Wed, 5 Nov 2025 14:54:33 +0200
Subject: [PATCH] net/mlx5: fix indirect meter index leak
[ upstream commit e56ebf25074280479141eac8050e1f40a69bdbf9 ]
When destroying the meter_mark indirect action, PMD
didn't recycle the ipool resources.
Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with HWS")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index a1d711caa5..320aa479f6 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -10549,13 +10549,16 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
break;
}
/* Wait for ASO object completion. */
- if (queue == MLX5_HW_INV_QUEUE &&
- mlx5_aso_mtr_wait(priv, aso_mtr, true)) {
- ret = -EINVAL;
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
- NULL, "Unable to wait for ASO meter CQE");
- break;
+ if (queue == MLX5_HW_INV_QUEUE) {
+ if (mlx5_aso_mtr_wait(priv, aso_mtr, true)) {
+ ret = -EINVAL;
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, "Unable to wait for ASO meter CQE");
+ }
+ mlx5_ipool_free(pool->idx_pool, idx);
+ if (ret < 0)
+ break;
}
aso = true;
break;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.270219493 +0200
+++ 0058-net-mlx5-fix-indirect-meter-index-leak.patch 2025-12-25 11:16:35.962902000 +0200
@@ -1 +1 @@
-From e56ebf25074280479141eac8050e1f40a69bdbf9 Mon Sep 17 00:00:00 2001
+From 82e034edaff9d145e7ae11454b401c4771bec011 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e56ebf25074280479141eac8050e1f40a69bdbf9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index cd11619b26..1755f2cffc 100644
+index a1d711caa5..320aa479f6 100644
@@ -22 +23 @@
-@@ -13013,13 +13013,16 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
+@@ -10549,13 +10549,16 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix error reporting on masked indirect actions' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (56 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect meter index leak' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'vhost: fix external buffer in VDUSE' " Shani Peretz
` (42 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/24cc92d2711738927230d5348a38e4234eff3675
Thanks.
Shani
---
From 24cc92d2711738927230d5348a38e4234eff3675 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 5 Nov 2025 17:52:54 +0100
Subject: [PATCH] net/mlx5: fix error reporting on masked indirect actions
[ upstream commit 1d961316d9f541c6679dcd519a40a667f9885f30 ]
Whenever masked indirect actions in actions template were handled
by mlx5 PMD and user passed incorrect action configuration,
the specific errors were not returned through rte_flow_error struct.
Existing logs also used WARNING log level, which made debugging a bit
harder.
This patch fixes error reporting for masked indirect actions,
during flow actions translation done in HWS mode:
- Replace "return -1" with error reporting through rte_flow_error.
- Change log level from WARNING to ERR.
- Add more information to log messages (port index
and action handle).
Fixes: 7ab3962d2d2b ("net/mlx5: add indirect HW steering action")
Fixes: 4d368e1da3a4 ("net/mlx5: support flow counter action for HWS")
Fixes: 463170a7c934 ("net/mlx5: support connection tracking with HWS")
Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 42 +++++++++++++++++++++++----------
1 file changed, 29 insertions(+), 13 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 320aa479f6..59a3e71855 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1012,7 +1012,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
const struct rte_flow_action *action,
struct mlx5_hw_actions *acts,
uint16_t action_src,
- uint16_t action_dst)
+ uint16_t action_dst,
+ struct rte_flow_error *error)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_shared_action_rss *shared_rss;
@@ -1029,8 +1030,10 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
(priv, acts,
(enum rte_flow_action_type)MLX5_RTE_FLOW_ACTION_TYPE_RSS,
action_src, action_dst, idx, shared_rss)) {
- DRV_LOG(WARNING, "Indirect RSS action index %d translate failed", act_idx);
- return -1;
+ DRV_LOG(ERR, "port %u Indirect RSS action (handle %p) translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action, "Indirect RSS action translate failed");
}
break;
case MLX5_INDIRECT_ACTION_TYPE_COUNT:
@@ -1038,15 +1041,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
(enum rte_flow_action_type)
MLX5_RTE_FLOW_ACTION_TYPE_COUNT,
action_src, action_dst, act_idx)) {
- DRV_LOG(WARNING, "Indirect count action translate failed");
- return -1;
+ DRV_LOG(ERR,
+ "port %u Indirect count action (handle %p) "
+ "translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action,
+ "Indirect count action translate failed");
}
break;
case MLX5_INDIRECT_ACTION_TYPE_CT:
if (flow_hw_ct_compile(dev, MLX5_HW_INV_QUEUE,
idx, &acts->rule_acts[action_dst])) {
- DRV_LOG(WARNING, "Indirect CT action translate failed");
- return -1;
+ DRV_LOG(ERR, "port %u Indirect CT action (handle %p) translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action, "Indirect CT action translate failed");
}
break;
case MLX5_INDIRECT_ACTION_TYPE_METER_MARK:
@@ -1054,16 +1064,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
(enum rte_flow_action_type)
MLX5_RTE_FLOW_ACTION_TYPE_METER_MARK,
action_src, action_dst, idx)) {
- DRV_LOG(WARNING, "Indirect meter mark action translate failed");
- return -1;
+ DRV_LOG(ERR,
+ "port %u Indirect meter mark action (handle %p) "
+ "translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action,
+ "Indirect meter mark action translate failed");
}
break;
case MLX5_INDIRECT_ACTION_TYPE_QUOTA:
flow_hw_construct_quota(priv, &acts->rule_acts[action_dst], idx);
break;
default:
- DRV_LOG(WARNING, "Unsupported shared action type:%d", type);
- break;
+ DRV_LOG(ERR, "Unsupported shared action type: %d", type);
+ return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, action,
+ "Unsupported shared action type");
}
return 0;
}
@@ -2162,8 +2178,8 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
goto err;
}
if (actions->conf && masks->conf) {
- if (flow_hw_shared_action_translate
- (dev, actions, acts, src_pos, dr_pos))
+ if (flow_hw_shared_action_translate(dev, actions, acts,
+ src_pos, dr_pos, &sub_error))
goto err;
} else if (__flow_hw_act_data_general_append
(priv, acts, RTE_FLOW_ACTION_TYPE_INDIRECT,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.324406536 +0200
+++ 0059-net-mlx5-fix-error-reporting-on-masked-indirect-acti.patch 2025-12-25 11:16:35.981997000 +0200
@@ -1 +1 @@
-From 1d961316d9f541c6679dcd519a40a667f9885f30 Mon Sep 17 00:00:00 2001
+From 24cc92d2711738927230d5348a38e4234eff3675 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1d961316d9f541c6679dcd519a40a667f9885f30 ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index 1755f2cffc..4d85fffb8f 100644
+index 320aa479f6..59a3e71855 100644
@@ -36 +37 @@
-@@ -1321,7 +1321,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1012,7 +1012,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -46 +47 @@
-@@ -1338,8 +1339,10 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1029,8 +1030,10 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -59 +60 @@
-@@ -1347,15 +1350,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1038,15 +1041,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -86 +87 @@
-@@ -1363,16 +1373,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1054,16 +1064,22 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -113 +114 @@
-@@ -2536,8 +2552,8 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2162,8 +2178,8 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
@@ -122 +123 @@
- } else if (__flow_hw_act_data_indirect_append
+ } else if (__flow_hw_act_data_general_append
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'vhost: fix external buffer in VDUSE' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (57 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net: fix L2 length for GRE packets' " Shani Peretz
` (41 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: David Marchand; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/c05fb2b9c1b3488938635c12300b58a1bc49831c
Thanks.
Shani
---
From c05fb2b9c1b3488938635c12300b58a1bc49831c Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 28 Oct 2025 13:34:53 +0100
Subject: [PATCH] vhost: fix external buffer in VDUSE
[ upstream commit 8ae4f1d511 ]
extbuf and linearbuf features are required for (enhanced) TSO support
in OVS.
VDUSE ports were generating multi-segments mbufs in case of "TSO"
buffers which resulted in OVS generating wrong packets after tunnel
encapsulation.
Enable the missing datapath features.
Fixes: 0adb8eccc6a6 ("vhost: add VDUSE device creation and destruction")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/socket.c | 3 ++-
lib/vhost/vduse.c | 8 +++++++-
lib/vhost/vduse.h | 6 ++++--
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c
index 6cf76eb7ae..3baa204c62 100644
--- a/lib/vhost/socket.c
+++ b/lib/vhost/socket.c
@@ -1197,7 +1197,8 @@ rte_vhost_driver_start(const char *path)
return -1;
if (vsocket->is_vduse)
- return vduse_device_create(path, vsocket->net_compliant_ol_flags);
+ return vduse_device_create(path, vsocket->net_compliant_ol_flags,
+ vsocket->extbuf, vsocket->linearbuf);
if (fdset_tid.opaque_id == 0) {
/**
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 9f163de0cc..8d9486a497 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -479,7 +479,7 @@ vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
}
int
-vduse_device_create(const char *path, bool compliant_ol_flags)
+vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf)
{
int control_fd, dev_fd, vid, ret;
rte_thread_t fdset_tid;
@@ -607,6 +607,12 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
dev->vduse_dev_fd = dev_fd;
vhost_setup_virtio_net(dev->vid, true, compliant_ol_flags, true, true);
+ if (extbuf)
+ vhost_enable_extbuf(dev->vid);
+
+ if (linearbuf)
+ vhost_enable_linearbuf(dev->vid);
+
for (i = 0; i < total_queues; i++) {
struct vduse_vq_config vq_cfg = { 0 };
diff --git a/lib/vhost/vduse.h b/lib/vhost/vduse.h
index 4879b1f900..67b8755a51 100644
--- a/lib/vhost/vduse.h
+++ b/lib/vhost/vduse.h
@@ -11,15 +11,17 @@
#ifdef VHOST_HAS_VDUSE
-int vduse_device_create(const char *path, bool compliant_ol_flags);
+int vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf);
int vduse_device_destroy(const char *path);
#else
static inline int
-vduse_device_create(const char *path, bool compliant_ol_flags)
+vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf)
{
RTE_SET_USED(compliant_ol_flags);
+ RTE_SET_USED(extbuf);
+ RTE_SET_USED(linearbuf);
VHOST_LOG_CONFIG(path, ERR, "VDUSE support disabled at build time\n");
return -1;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.378851915 +0200
+++ 0060-vhost-fix-external-buffer-in-VDUSE.patch 2025-12-25 11:16:35.993990000 +0200
@@ -1 +1 @@
-From 8ae4f1d511226fd65a979e9f8a1e51835281a59b Mon Sep 17 00:00:00 2001
+From c05fb2b9c1b3488938635c12300b58a1bc49831c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8ae4f1d511 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -23,2 +24,2 @@
- lib/vhost/vduse.h | 2 +-
- 3 files changed, 10 insertions(+), 3 deletions(-)
+ lib/vhost/vduse.h | 6 ++++--
+ 3 files changed, 13 insertions(+), 4 deletions(-)
@@ -27 +28 @@
-index 9b4f332f94..ae95e7e6b0 100644
+index 6cf76eb7ae..3baa204c62 100644
@@ -30 +31 @@
-@@ -1194,7 +1194,8 @@ rte_vhost_driver_start(const char *path)
+@@ -1197,7 +1197,8 @@ rte_vhost_driver_start(const char *path)
@@ -38,2 +39,2 @@
- if (vhost_user.fdset == NULL) {
- vhost_user.fdset = fdset_init("vhost-evt");
+ if (fdset_tid.opaque_id == 0) {
+ /**
@@ -41 +42 @@
-index 68e56843fd..897dee9f1b 100644
+index 9f163de0cc..8d9486a497 100644
@@ -44 +45 @@
-@@ -672,7 +672,7 @@ out_err:
+@@ -479,7 +479,7 @@ vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
@@ -52,3 +53,3 @@
- uint32_t i, max_queue_pairs, total_queues;
-@@ -817,6 +817,12 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
-
+ rte_thread_t fdset_tid;
+@@ -607,6 +607,12 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
+ dev->vduse_dev_fd = dev_fd;
@@ -65 +66 @@
- struct vhost_virtqueue *vq;
+
@@ -67 +68 @@
-index 47ca97a064..b2515bb9df 100644
+index 4879b1f900..67b8755a51 100644
@@ -70 +71 @@
-@@ -9,7 +9,7 @@
+@@ -11,15 +11,17 @@
@@ -72 +73 @@
- #define VDUSE_NET_SUPPORTED_FEATURES VIRTIO_NET_SUPPORTED_FEATURES
+ #ifdef VHOST_HAS_VDUSE
@@ -78 +79,12 @@
- #endif /* _VDUSE_H */
+ #else
+
+ static inline int
+-vduse_device_create(const char *path, bool compliant_ol_flags)
++vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf)
+ {
+ RTE_SET_USED(compliant_ol_flags);
++ RTE_SET_USED(extbuf);
++ RTE_SET_USED(linearbuf);
+
+ VHOST_LOG_CONFIG(path, ERR, "VDUSE support disabled at build time\n");
+ return -1;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net: fix L2 length for GRE packets' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (58 preceding siblings ...)
2025-12-25 9:18 ` patch 'vhost: fix external buffer in VDUSE' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'graph: fix updating edge with active graph' " Shani Peretz
` (40 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Dengdui Huang; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/130d79c519c554a713a4578e5d7a545a0e25e29b
Thanks.
Shani
---
From 130d79c519c554a713a4578e5d7a545a0e25e29b Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Wed, 23 Jul 2025 18:47:10 +0800
Subject: [PATCH] net: fix L2 length for GRE packets
[ upstream commit cb699a047d1f2c1cead545db2d266ab5f396b550 ]
The meaning of L2_len in the parsing result of the rte_net_get_ptype()
is the same as the L2_len field in the mbuf. For tunnel packets,
the L2_len should include protocol header of tunnel packets.
Bugzilla ID: 1754
Fixes: d21d855464ff ("net: support GRE in software packet type parser")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/net/rte_net.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/net/rte_net.c b/lib/net/rte_net.c
index d680accc16..5862ed0776 100644
--- a/lib/net/rte_net.c
+++ b/lib/net/rte_net.c
@@ -376,6 +376,7 @@ l3:
pkt_type |= ptype_tunnel(&proto, m, &off);
hdr_lens->tunnel_len = off - prev_off;
+ hdr_lens->inner_l2_len = off - prev_off;
}
/* same job for inner header: we need to duplicate the code
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.428974661 +0200
+++ 0061-net-fix-L2-length-for-GRE-packets.patch 2025-12-25 11:16:36.001921000 +0200
@@ -1 +1 @@
-From cb699a047d1f2c1cead545db2d266ab5f396b550 Mon Sep 17 00:00:00 2001
+From 130d79c519c554a713a4578e5d7a545a0e25e29b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cb699a047d1f2c1cead545db2d266ab5f396b550 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 44fb6c0f51..c70b57fdc0 100644
+index d680accc16..5862ed0776 100644
@@ -24 +25 @@
-@@ -481,6 +481,7 @@ l3:
+@@ -376,6 +376,7 @@ l3:
@@ -26 +27 @@
- pkt_type |= ptype_tunnel_without_udp(&proto, m, &off);
+ pkt_type |= ptype_tunnel(&proto, m, &off);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'graph: fix updating edge with active graph' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (59 preceding siblings ...)
2025-12-25 9:18 ` patch 'net: fix L2 length for GRE packets' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'app/pdump: remove hard-coded memory channels' " Shani Peretz
` (39 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Robin Jarry; +Cc: Jerin Jacob, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3c45ee5556f6bc93422296601fd23e93c360238d
Thanks.
Shani
---
From 3c45ee5556f6bc93422296601fd23e93c360238d Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Fri, 31 Oct 2025 23:13:04 +0100
Subject: [PATCH] graph: fix updating edge with active graph
[ upstream commit eaa11767069f476e13000fc3fec618a40c46ab7e ]
After creating at least one graph and calling rte_node_edge_update to
add a new edge on a node which is in use in the graph, the node memory
is reallocated but the active graph still has a pointer to the freed
memory.
When destroying the graph, it causes a use-after-free error detected by
libasan:
ERROR: AddressSanitizer: heap-use-after-free
READ of size 8 at 0x7c4baa5e4da8 thread T0
#0 0x0000005ad224 in graph_node_fini lib/graph/graph.c:256
#1 0x0000005ae657 in rte_graph_destroy lib/graph/graph.c:504
...
freed by thread T0 here:
#0 0x7f1bac4e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b)
#1 0x0000005ab6d7 in edge_update lib/graph/node.c:271
#2 0x0000005abb1b in rte_node_edge_update lib/graph/node.c:339
...
previously allocated by thread T0 here:
#0 0x7f1bac4e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b)
#1 0x0000005ab6d7 in edge_update lib/graph/node.c:271
#2 0x0000005abb1b in rte_node_edge_update lib/graph/node.c:339
...
Use malloc+memcpy and add an internal function to replace all references
to the old node memory before freeing it.
Fixes: c59dac2ca14a ("graph: implement node operations")
Signed-off-by: Robin Jarry <rjarry@redhat.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
---
lib/graph/graph.c | 14 ++++++++++++++
lib/graph/graph_private.h | 12 ++++++++++++
lib/graph/node.c | 6 +++++-
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/lib/graph/graph.c b/lib/graph/graph.c
index 8ea2109645..c101a37cd5 100644
--- a/lib/graph/graph.c
+++ b/lib/graph/graph.c
@@ -260,6 +260,20 @@ graph_node_fini(struct graph *graph)
graph_node->node->name));
}
+void
+graph_node_replace_all(struct node *old, struct node *new)
+{
+ struct graph_node *graph_node;
+ struct graph *graph;
+
+ STAILQ_FOREACH(graph, &graph_list, next) {
+ STAILQ_FOREACH(graph_node, &graph->node_list, next) {
+ if (graph_node->node == old)
+ graph_node->node = new;
+ }
+ }
+}
+
static struct rte_graph *
graph_mem_fixup_node_ctx(struct rte_graph *graph)
{
diff --git a/lib/graph/graph_private.h b/lib/graph/graph_private.h
index d0ef13b205..f10f894bbe 100644
--- a/lib/graph/graph_private.h
+++ b/lib/graph/graph_private.h
@@ -289,6 +289,18 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
*/
int graph_node_has_loop_edge(struct graph *graph);
+/**
+ * @internal
+ *
+ * Replace all pointers of a given node with another one in all active graphs.
+ *
+ * @param old
+ * Node pointer to replace in all graphs.
+ * @param new
+ * Updated pointer.
+ */
+void graph_node_replace_all(struct node *old, struct node *new);
+
/**
* @internal
*
diff --git a/lib/graph/node.c b/lib/graph/node.c
index 99a9622779..d492e30507 100644
--- a/lib/graph/node.c
+++ b/lib/graph/node.c
@@ -235,11 +235,15 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
need_realloc = max_edges > node->nb_edges;
if (need_realloc) {
sz = sizeof(struct node) + (max_edges * RTE_NODE_NAMESIZE);
- new_node = realloc(node, sz);
+ new_node = malloc(sz);
if (new_node == NULL) {
rte_errno = ENOMEM;
goto restore;
} else {
+ sz = sizeof(*node) + (node->nb_edges * RTE_NODE_NAMESIZE);
+ memcpy(new_node, node, sz);
+ graph_node_replace_all(node, new_node);
+ free(node);
node = new_node;
}
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.473774620 +0200
+++ 0062-graph-fix-updating-edge-with-active-graph.patch 2025-12-25 11:16:36.020952000 +0200
@@ -1 +1 @@
-From eaa11767069f476e13000fc3fec618a40c46ab7e Mon Sep 17 00:00:00 2001
+From 3c45ee5556f6bc93422296601fd23e93c360238d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit eaa11767069f476e13000fc3fec618a40c46ab7e ]
+
@@ -36 +37,0 @@
-Cc: stable@dpdk.org
@@ -47 +48 @@
-index 61159edc72..6911ea8abe 100644
+index 8ea2109645..c101a37cd5 100644
@@ -50 +51 @@
-@@ -277,6 +277,20 @@ graph_node_fini(struct graph *graph)
+@@ -260,6 +260,20 @@ graph_node_fini(struct graph *graph)
@@ -72 +73 @@
-index 21912c0ae6..26cdc66371 100644
+index d0ef13b205..f10f894bbe 100644
@@ -75 +76 @@
-@@ -299,6 +299,18 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
+@@ -289,6 +289,18 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
@@ -95 +96 @@
-index cae1c809ed..e3359fe490 100644
+index 99a9622779..d492e30507 100644
@@ -98 +99 @@
-@@ -325,11 +325,15 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
+@@ -235,11 +235,15 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/pdump: remove hard-coded memory channels' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (60 preceding siblings ...)
2025-12-25 9:18 ` patch 'graph: fix updating edge with active graph' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'pdump: handle primary process exit' " Shani Peretz
` (38 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/923ea1f897d278289f6c051ff87123003dc4c436
Thanks.
Shani
---
From 923ea1f897d278289f6c051ff87123003dc4c436 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 17 Oct 2025 12:06:36 +0100
Subject: [PATCH] app/pdump: remove hard-coded memory channels
[ upstream commit 4a8d8db495f66b22ce0c12055b1c9f704f542152 ]
The pdump main function modifies argc/argv before calling EAL init
function. It needs to do so in order to add the proc-type=secondary
flag, but also adds in "-n4" as parameter. This parameter is unnecessary
and also causes duplicate parameter errors if the user also passes in -n
flag on the commandline. Just remove this flag.
Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
app/pdump/main.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/app/pdump/main.c b/app/pdump/main.c
index 3592f8a865..4631ae2591 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -982,9 +982,8 @@ main(int argc, char **argv)
int ret;
int i;
- char n_flag[] = "-n4";
char mp_flag[] = "--proc-type=secondary";
- char *argp[argc + 2];
+ char *argp[argc + 1];
/* catch ctrl-c so we can cleanup on exit */
sigemptyset(&action.sa_mask);
@@ -996,13 +995,12 @@ main(int argc, char **argv)
sigaction(SIGHUP, &action, NULL);
argp[0] = argv[0];
- argp[1] = n_flag;
- argp[2] = mp_flag;
+ argp[1] = mp_flag;
for (i = 1; i < argc; i++)
- argp[i + 2] = argv[i];
+ argp[i + 1] = argv[i];
- argc += 2;
+ argc += 1;
diag = rte_eal_init(argc, argp);
if (diag < 0)
@@ -1012,7 +1010,7 @@ main(int argc, char **argv)
rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
argc -= diag;
- argv += (diag - 2);
+ argv += (diag - 1);
/* parse app arguments */
if (argc > 1) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.524258006 +0200
+++ 0063-app-pdump-remove-hard-coded-memory-channels.patch 2025-12-25 11:16:36.026864000 +0200
@@ -1 +1 @@
-From 4a8d8db495f66b22ce0c12055b1c9f704f542152 Mon Sep 17 00:00:00 2001
+From 923ea1f897d278289f6c051ff87123003dc4c436 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4a8d8db495f66b22ce0c12055b1c9f704f542152 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index fa85859703..f3ac81cb80 100644
+index 3592f8a865..4631ae2591 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'pdump: handle primary process exit' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (61 preceding siblings ...)
2025-12-25 9:18 ` patch 'app/pdump: remove hard-coded memory channels' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'telemetry: make socket handler typedef private' " Shani Peretz
` (37 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, Khadem Ullah, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/ef77284ccbd0708a6d4df693f669850dcc62236c
Thanks.
Shani
---
From ef77284ccbd0708a6d4df693f669850dcc62236c Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 4 Nov 2025 10:07:05 -0800
Subject: [PATCH] pdump: handle primary process exit
[ upstream commit cefd5edce236e69496693ea0ecbf3e61434ff348 ]
If primary process exits, then it is not possible (or needed)
to cleanup resources. Instead just exit after closing the
capture file.
Bugzilla ID: 1760
Fixes: a99a311ba101 ("app/pdump: exit with primary process")
Fixes: cbb44143be74 ("app/dumpcap: add new packet capture application")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/dumpcap/main.c | 4 ++++
app/pdump/main.c | 12 +++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
index 5eaab6350f..92b363cfff 100644
--- a/app/dumpcap/main.c
+++ b/app/dumpcap/main.c
@@ -1028,6 +1028,10 @@ int main(int argc, char **argv)
else
pcap_dump_close(out.dumper);
+ /* If primary has exited, do not try and communicate with it */
+ if (!rte_eal_primary_proc_alive(NULL))
+ return 0;
+
cleanup_pdump_resources();
rte_ring_free(r);
diff --git a/app/pdump/main.c b/app/pdump/main.c
index 4631ae2591..a2624f2fbf 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -1026,13 +1026,15 @@ main(int argc, char **argv)
dump_packets();
disable_primary_monitor();
- cleanup_pdump_resources();
+
/* dump debug stats */
print_pdump_stats();
- ret = rte_eal_cleanup();
- if (ret)
- printf("Error from rte_eal_cleanup(), %d\n", ret);
+ /* If primary has exited, do not try and communicate with it */
+ if (!rte_eal_primary_proc_alive(NULL))
+ return 0;
- return 0;
+ cleanup_pdump_resources();
+
+ return rte_eal_cleanup() ? EXIT_FAILURE : 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.571487912 +0200
+++ 0064-pdump-handle-primary-process-exit.patch 2025-12-25 11:16:36.035845000 +0200
@@ -1 +1 @@
-From cefd5edce236e69496693ea0ecbf3e61434ff348 Mon Sep 17 00:00:00 2001
+From ef77284ccbd0708a6d4df693f669850dcc62236c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cefd5edce236e69496693ea0ecbf3e61434ff348 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index e5ba36350b..3621c0ebe3 100644
+index 5eaab6350f..92b363cfff 100644
@@ -27 +28 @@
-@@ -1059,6 +1059,10 @@ int main(int argc, char **argv)
+@@ -1028,6 +1028,10 @@ int main(int argc, char **argv)
@@ -39 +40 @@
-index 89347d70dc..7cbf1b8c34 100644
+index 4631ae2591..a2624f2fbf 100644
@@ -42 +43 @@
-@@ -1027,13 +1027,15 @@ main(int argc, char **argv)
+@@ -1026,13 +1026,15 @@ main(int argc, char **argv)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'telemetry: make socket handler typedef private' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (62 preceding siblings ...)
2025-12-25 9:18 ` patch 'pdump: handle primary process exit' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Shani Peretz
` (36 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/71b4fa64e2a414398d8562103f263dfbe040b469
Thanks.
Shani
---
From 71b4fa64e2a414398d8562103f263dfbe040b469 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 7 Nov 2025 09:32:59 +0000
Subject: [PATCH] telemetry: make socket handler typedef private
[ upstream commit 572451f7728711b1c377cb46d885f918be4c7763 ]
The socket handler typedef, just called "handler" does not belong in the
public namespace, especially since it is unprefixed. Rename to
"telemetry_sock_handler" and move to internal header.
Doing so also clears shadowing warnings in dmadev library, when it is
built with -Wshadow.
Fixes: 6dd571fd07c3 ("telemetry: introduce new functionality")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/telemetry/rte_telemetry.h | 11 -----------
lib/telemetry/telemetry.c | 2 +-
lib/telemetry/telemetry_internal.h | 11 +++++++++++
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h
index cab9daa6fe..bdffd28026 100644
--- a/lib/telemetry/rte_telemetry.h
+++ b/lib/telemetry/rte_telemetry.h
@@ -336,17 +336,6 @@ rte_tel_data_add_dict_uint_hex(struct rte_tel_data *d, const char *name,
typedef int (*telemetry_cb)(const char *cmd, const char *params,
struct rte_tel_data *info);
-/**
- * Used for handling data received over a telemetry socket.
- *
- * @param sock_id
- * ID for the socket to be used by the handler.
- *
- * @return
- * Void.
- */
-typedef void * (*handler)(void *sock_id);
-
/**
* Used when registering a command and callback function with telemetry.
*
diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
index f688db7981..b6d60383c4 100644
--- a/lib/telemetry/telemetry.c
+++ b/lib/telemetry/telemetry.c
@@ -44,7 +44,7 @@ struct cmd_callback {
struct socket {
int sock;
char path[sizeof(((struct sockaddr_un *)0)->sun_path)];
- handler fn;
+ telemetry_sock_handler fn;
RTE_ATOMIC(uint16_t) *num_clients;
};
static struct socket v2_socket; /* socket for v2 telemetry */
diff --git a/lib/telemetry/telemetry_internal.h b/lib/telemetry/telemetry_internal.h
index b331e9458f..2fd9fbd7c1 100644
--- a/lib/telemetry/telemetry_internal.h
+++ b/lib/telemetry/telemetry_internal.h
@@ -25,6 +25,17 @@ enum rte_telemetry_legacy_data_req {
DATA_REQ
};
+/**
+ * Used for handling data received over a telemetry socket.
+ *
+ * @param sock_id
+ * ID for the socket to be used by the handler.
+ *
+ * @return
+ * Void.
+ */
+typedef void * (*telemetry_sock_handler)(void *sock_id);
+
/**
* This telemetry callback is used when registering a legacy telemetry command.
* It handles getting and formatting stats to be returned to telemetry when
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.620534995 +0200
+++ 0065-telemetry-make-socket-handler-typedef-private.patch 2025-12-25 11:16:36.043796000 +0200
@@ -1 +1 @@
-From 572451f7728711b1c377cb46d885f918be4c7763 Mon Sep 17 00:00:00 2001
+From 71b4fa64e2a414398d8562103f263dfbe040b469 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 572451f7728711b1c377cb46d885f918be4c7763 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index b9662a5213..0a58e518f7 100644
+index cab9daa6fe..bdffd28026 100644
@@ -28,2 +29,2 @@
-@@ -325,17 +325,6 @@ typedef int (*telemetry_cb)(const char *cmd, const char *params,
- typedef int (*telemetry_arg_cb)(const char *cmd, const char *params, void *arg,
+@@ -336,17 +336,6 @@ rte_tel_data_add_dict_uint_hex(struct rte_tel_data *d, const char *name,
+ typedef int (*telemetry_cb)(const char *cmd, const char *params,
@@ -47 +48 @@
-index 1cbbffbf3f..cf4324421d 100644
+index f688db7981..b6d60383c4 100644
@@ -50 +51 @@
-@@ -47,7 +47,7 @@ struct cmd_callback {
+@@ -44,7 +44,7 @@ struct cmd_callback {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'examples/l3fwd-power: fix telemetry command registration' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (63 preceding siblings ...)
2025-12-25 9:18 ` patch 'telemetry: make socket handler typedef private' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'lib: fix backticks matching in Doxygen comments' " Shani Peretz
` (35 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Sivaprasad Tummala; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/a7837f220adb92bf4b118262b332db8c96d0631d
Thanks.
Shani
---
From a7837f220adb92bf4b118262b332db8c96d0631d Mon Sep 17 00:00:00 2001
From: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Date: Mon, 6 Oct 2025 10:10:58 +0000
Subject: [PATCH] examples/l3fwd-power: fix telemetry command registration
[ upstream commit 44a4784a9710892a9bdaadbe08732000b90c95f3 ]
Telemetry command registration fails if the command name contains
characters other than alphanumeric, underscore (_), and forward
slash (/).
The l3fwd-power example previously used "/l3fwd-power/stats"
as telemetry command, which includes a hyphen (-) and causes
registration failure.
This patch fixes the issue by replacing the hyphen with an
underscore, changing the command to "/l3fwd_power/stats"
Fixes: a35919a1139b ("examples/l3fwd-power: use new telemetry")
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
examples/l3fwd-power/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index b11336e0b9..5674db6ee7 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -2858,7 +2858,7 @@ main(int argc, char **argv)
rte_spinlock_init(&stats[lcore_id].telemetry_lock);
}
rte_timer_init(&telemetry_timer);
- rte_telemetry_register_cmd("/l3fwd-power/stats",
+ rte_telemetry_register_cmd("/l3fwd_power/stats",
handle_app_stats,
"Returns global power stats. Parameters: None");
rte_eal_mp_remote_launch(main_telemetry_loop, NULL,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.668556318 +0200
+++ 0066-examples-l3fwd-power-fix-telemetry-command-registrat.patch 2025-12-25 11:16:36.049905000 +0200
@@ -1 +1 @@
-From 44a4784a9710892a9bdaadbe08732000b90c95f3 Mon Sep 17 00:00:00 2001
+From a7837f220adb92bf4b118262b332db8c96d0631d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 44a4784a9710892a9bdaadbe08732000b90c95f3 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index e27b8531b5..f9ce9e6698 100644
+index b11336e0b9..5674db6ee7 100644
@@ -30 +31 @@
-@@ -2910,7 +2910,7 @@ main(int argc, char **argv)
+@@ -2858,7 +2858,7 @@ main(int argc, char **argv)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'lib: fix backticks matching in Doxygen comments' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (64 preceding siblings ...)
2025-12-25 9:18 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'mcslock: fix memory ordering' " Shani Peretz
` (34 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Stephen Hemminger, Erik Gabriel Carrillo, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/a313f71e48857971ba8bc012bceab1bf7c031952
Thanks.
Shani
---
From a313f71e48857971ba8bc012bceab1bf7c031952 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 19:41:59 +0530
Subject: [PATCH] lib: fix backticks matching in Doxygen comments
[ upstream commit 2f8d3fda56754b13a09098fac1140d781366672f ]
Doxygen 1.15 detects valid errors. Fixing the same.
Example:
lib/eventdev/rte_event_timer_adapter.h:720: error: Reached end of file
while still searching closing '`' of a verbatim block starting at line
569 (warning treated as error, aborting now)
Fixes: a6562f6d6f8e ("eventdev: introduce event timer adapter")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---
lib/eventdev/rte_event_timer_adapter.h | 2 +-
lib/rawdev/rte_rawdev_pmd.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eventdev/rte_event_timer_adapter.h b/lib/eventdev/rte_event_timer_adapter.h
index c133dec760..44b3919968 100644
--- a/lib/eventdev/rte_event_timer_adapter.h
+++ b/lib/eventdev/rte_event_timer_adapter.h
@@ -566,7 +566,7 @@ struct rte_event_timer_adapter {
* Before calling this function, the application allocates
* ``struct rte_event_timer`` objects from mempool or huge page backed
* application buffers of desired size. On successful allocation,
- * application updates the `struct rte_event_timer`` attributes such as
+ * application updates the ``struct rte_event_timer`` attributes such as
* expiry event attributes, timeout ticks from now.
* This function submits the event timer arm requests to the event timer adapter
* and on expiry, the events will be injected to designated event queue.
diff --git a/lib/rawdev/rte_rawdev_pmd.h b/lib/rawdev/rte_rawdev_pmd.h
index 7b9ef1d09f..2992d7116c 100644
--- a/lib/rawdev/rte_rawdev_pmd.h
+++ b/lib/rawdev/rte_rawdev_pmd.h
@@ -481,7 +481,7 @@ typedef int (*rawdev_firmware_version_get_t)(struct rte_rawdev *dev,
* >0, ~0: for successful load
* <0: for failure
*
- * @see Application may use 'firmware_version_get` for ascertaining successful
+ * @see Application may use `firmware_version_get` for ascertaining successful
* load
*/
typedef int (*rawdev_firmware_load_t)(struct rte_rawdev *dev,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.714730702 +0200
+++ 0067-lib-fix-backticks-matching-in-Doxygen-comments.patch 2025-12-25 11:16:36.058029000 +0200
@@ -1 +1 @@
-From 2f8d3fda56754b13a09098fac1140d781366672f Mon Sep 17 00:00:00 2001
+From a313f71e48857971ba8bc012bceab1bf7c031952 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2f8d3fda56754b13a09098fac1140d781366672f ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 256807b3bf..67e65ab849 100644
+index c133dec760..44b3919968 100644
@@ -28 +29 @@
-@@ -566,7 +566,7 @@ struct __rte_cache_aligned rte_event_timer_adapter {
+@@ -566,7 +566,7 @@ struct rte_event_timer_adapter {
@@ -38 +39 @@
-index b810006a46..02351a2a29 100644
+index 7b9ef1d09f..2992d7116c 100644
@@ -41 +42 @@
-@@ -506,7 +506,7 @@ typedef int (*rawdev_firmware_version_get_t)(struct rte_rawdev *dev,
+@@ -481,7 +481,7 @@ typedef int (*rawdev_firmware_version_get_t)(struct rte_rawdev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'mcslock: fix memory ordering' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (65 preceding siblings ...)
2025-12-25 9:18 ` patch 'lib: fix backticks matching in Doxygen comments' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish safe partial order in default mode' " Shani Peretz
` (33 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Wathsala Vithanage; +Cc: Ola Liljedahl, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/c8574ee713af48e689116cad32920e59a52b1034
Thanks.
Shani
---
From c8574ee713af48e689116cad32920e59a52b1034 Mon Sep 17 00:00:00 2001
From: Wathsala Vithanage <wathsala.vithanage@arm.com>
Date: Tue, 11 Nov 2025 17:38:50 +0000
Subject: [PATCH] mcslock: fix memory ordering
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 8357af1cb3a359810bd56eab78ed104495c8094f ]
Fix incorrect memory ordering in the MCS lock implementation by
adding proper synchronizing edges to establish clear happens-before
relationships between threads invoking lock() and unlock(). These
synchronizing edges prevent potential deadlocks caused by improper
ordering and are documented in detail through in-code comments.
The previously relaxed load of the successor’s lock object pointer
in unlock() has been upgraded to a load-acquire operation. This
change ensures that the successor’s initialization does not
overwrite the current lock holder’s update to the locked field,
which could otherwise lead to deadlocks.
Remove two unnecessary fences:
The acquire fence in unlock() had no matching release fence, making
it ineffective for enforcing memory order. The associated comment
suggested it prevented speculative reordering, but such fences (data
memory barriers) only establish memory ordering and do not control
instruction speculation.
The release-acquire fence pair in lock() was previously justified as
preventing reordering between the load-acquire loop of me->locked
and the store-release of prev->next. This is no longer needed, as the
new synchronizing edges ensure a chain of happens-before
relationships between memory operations of threads calling lock() and
unlock().
Fixes: 2173f3333b61d ("mcslock: add MCS queued lock implementation")
Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
---
lib/eal/include/rte_mcslock.h | 100 ++++++++++++++++++++++------------
1 file changed, 64 insertions(+), 36 deletions(-)
diff --git a/lib/eal/include/rte_mcslock.h b/lib/eal/include/rte_mcslock.h
index 2ca967f9c1..faa8829ceb 100644
--- a/lib/eal/include/rte_mcslock.h
+++ b/lib/eal/include/rte_mcslock.h
@@ -57,11 +57,21 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
rte_atomic_store_explicit(&me->locked, 1, rte_memory_order_relaxed);
rte_atomic_store_explicit(&me->next, NULL, rte_memory_order_relaxed);
- /* If the queue is empty, the exchange operation is enough to acquire
- * the lock. Hence, the exchange operation requires acquire semantics.
- * The store to me->next above should complete before the node is
- * visible to other CPUs/threads. Hence, the exchange operation requires
- * release semantics as well.
+ /*
+ * A0/R0: Queue might be empty, perform the exchange (RMW) with both acquire and
+ * release semantics:
+ * A0: Acquire — synchronizes with both R0 and R2.
+ * Must synchronize with R0 to ensure that this thread observes predecessor's
+ * initialization of its lock object or risk them overwriting this thread's
+ * update to the next of the same object via store to prev->next.
+ *
+ * Must synchronize with R2 the releasing CAS in unlock(), this will ensure
+ * that all prior critical-section writes become visible to this thread.
+ *
+ * R0: Release — ensures the successor observes our initialization of me->next;
+ * without it, me->next could be overwritten to NULL after the successor
+ * sets its own address, causing deadlock. This release synchronizes with
+ * A0 above.
*/
prev = rte_atomic_exchange_explicit(msl, me, rte_memory_order_acq_rel);
if (likely(prev == NULL)) {
@@ -70,24 +80,26 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
*/
return;
}
- /* The store to me->next above should also complete before the node is
- * visible to predecessor thread releasing the lock. Hence, the store
- * prev->next also requires release semantics. Note that, for example,
- * on ARM, the release semantics in the exchange operation is not
- * strong as a release fence and is not sufficient to enforce the
- * desired order here.
+
+ /*
+ * R1: With the relaxed memory model of C/C++, it's essential that after
+ * we link ourselves by storing prev->next = me, the owner of prev must
+ * observe our prior initialization of me->locked. Otherwise it could
+ * clear me->locked before we set it to 1, which may deadlock.
+ * Perform a releasing store so the predecessor's acquire loads A2 and A3
+ * observes our initialization, establishing a happens-before from those
+ * writes.
*/
rte_atomic_store_explicit(&prev->next, me, rte_memory_order_release);
- /* The while-load of me->locked should not move above the previous
- * store to prev->next. Otherwise it will cause a deadlock. Need a
- * store-load barrier.
- */
- __rte_atomic_thread_fence(rte_memory_order_acq_rel);
- /* If the lock has already been acquired, it first atomically
+ /*
+ * A1: If the lock has already been acquired, it first atomically
* places the node at the end of the queue and then proceeds
* to spin on me->locked until the previous lock holder resets
- * the me->locked using mcslock_unlock().
+ * the me->locked in rte_mcslock_unlock().
+ * This load must synchronize with store-release R3 to ensure that
+ * all updates to critical section by previous lock holder is visible
+ * to this thread after acquiring the lock.
*/
rte_wait_until_equal_32((uint32_t *)(uintptr_t)&me->locked, 0, rte_memory_order_acquire);
}
@@ -103,30 +115,46 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
static inline void
rte_mcslock_unlock(RTE_ATOMIC(rte_mcslock_t *) *msl, RTE_ATOMIC(rte_mcslock_t *) me)
{
- /* Check if there are more nodes in the queue. */
- if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_relaxed) == NULL)) {
+ /*
+ * A2: Check whether a successor is already queued.
+ * Load me->next with acquire semantics so it can synchronize with the
+ * successor’s release store R1. This guarantees that the successor’s
+ * initialization of its lock object (me) is completed before we observe
+ * it here, preventing a race between this thread’s store-release to
+ * me->next->locked and the successor’s store to me->locked.
+ */
+ if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_acquire) == NULL)) {
/* No, last member in the queue. */
- rte_mcslock_t *save_me = rte_atomic_load_explicit(&me, rte_memory_order_relaxed);
+ rte_mcslock_t *save_me = me;
- /* Release the lock by setting it to NULL */
+ /*
+ * R2: Try to release the lock by swinging *msl from save_me to NULL.
+ * Use release semantics so all critical section writes become
+ * visible to the next lock acquirer.
+ */
if (likely(rte_atomic_compare_exchange_strong_explicit(msl, &save_me, NULL,
rte_memory_order_release, rte_memory_order_relaxed)))
return;
- /* Speculative execution would be allowed to read in the
- * while-loop first. This has the potential to cause a
- * deadlock. Need a load barrier.
- */
- __rte_atomic_thread_fence(rte_memory_order_acquire);
- /* More nodes added to the queue by other CPUs.
- * Wait until the next pointer is set.
+ /*
+ * A3: Another thread was enqueued concurrently, so the CAS and the lock
+ * release failed. Wait until the successor sets our 'next' pointer.
+ * This load must synchronize with the successor’s release store (R1) to
+ * ensure that the successor’s initialization completes before we observe
+ * it here. This ordering prevents a race between this thread’s later
+ * store-release to me->next->locked and the successor’s store to me->locked.
*/
RTE_ATOMIC(uintptr_t) *next;
next = (__rte_atomic uintptr_t *)&me->next;
- RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_relaxed);
+ RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_acquire);
}
- /* Pass lock to next waiter. */
+ /*
+ * R3: Pass the lock to the successor.
+ * Use a release store to synchronize with A1 when clearing me->next->locked
+ * so the successor observes our critical section writes after it sees locked
+ * become 0.
+ */
rte_atomic_store_explicit(&me->next->locked, 0, rte_memory_order_release);
}
@@ -149,11 +177,11 @@ rte_mcslock_trylock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
/* Try to lock */
rte_mcslock_t *expected = NULL;
- /* The lock can be taken only when the queue is empty. Hence,
- * the compare-exchange operation requires acquire semantics.
- * The store to me->next above should complete before the node
- * is visible to other CPUs/threads. Hence, the compare-exchange
- * operation requires release semantics as well.
+ /*
+ * A4/R4: The lock can be acquired only when the queue is empty.
+ * The compare-and-exchange operation must use acquire and release
+ * semantics for the same reasons described in the rte_mcslock_lock()
+ * function’s empty-queue case (see A0/R0 for details).
*/
return rte_atomic_compare_exchange_strong_explicit(msl, &expected, me,
rte_memory_order_acq_rel, rte_memory_order_relaxed);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.760218649 +0200
+++ 0068-mcslock-fix-memory-ordering.patch 2025-12-25 11:16:36.064832000 +0200
@@ -1 +1 @@
-From 8357af1cb3a359810bd56eab78ed104495c8094f Mon Sep 17 00:00:00 2001
+From c8574ee713af48e689116cad32920e59a52b1034 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 8357af1cb3a359810bd56eab78ed104495c8094f ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
@@ -46 +47 @@
-index bb218d2e50..0af7a94a06 100644
+index 2ca967f9c1..faa8829ceb 100644
@@ -102 +103 @@
-- rte_atomic_thread_fence(rte_memory_order_acq_rel);
+- __rte_atomic_thread_fence(rte_memory_order_acq_rel);
@@ -149 +150 @@
-- rte_atomic_thread_fence(rte_memory_order_acquire);
+- __rte_atomic_thread_fence(rte_memory_order_acquire);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'ring: establish safe partial order in default mode' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (66 preceding siblings ...)
2025-12-25 9:18 ` patch 'mcslock: fix memory ordering' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish a safe partial order in hts-ring' " Shani Peretz
` (32 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Wathsala Vithanage
Cc: Ola Liljedahl, Honnappa Nagarahalli, Dhruv Tripathi,
Konstantin Ananyev, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/942163a489126848c2ae10fcb60df2fb59f3aac8
Thanks.
Shani
---
From 942163a489126848c2ae10fcb60df2fb59f3aac8 Mon Sep 17 00:00:00 2001
From: Wathsala Vithanage <wathsala.vithanage@arm.com>
Date: Tue, 2 Dec 2025 20:39:26 +0000
Subject: [PATCH] ring: establish safe partial order in default mode
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit a4ad0eba9def1d1d071da8afe5e96eb2a2e0d71f]
The function __rte_ring_headtail_move_head() assumes that the barrier
(fence) between the load of the head and the load-acquire of the
opposing tail guarantees the following: if a first thread reads tail
and then writes head and a second thread reads the new value of head
and then reads tail, then it should observe the same (or a later)
value of tail.
This assumption is incorrect under the C11 memory model. If the barrier
(fence) is intended to establish a total ordering of ring operations,
it fails to do so. Instead, the current implementation only enforces a
partial ordering, which can lead to unsafe interleavings. In particular,
some partial orders can cause underflows in free slot or available
element computations, potentially resulting in data corruption.
The issue manifests when a CPU first acts as a producer and later as a
consumer. In this scenario, the barrier assumption may fail when another
core takes the consumer role. A Herd7 litmus test in C11 can demonstrate
this violation. The problem has not been widely observed so far because:
(a) on strong memory models (e.g., x86-64) the assumption holds, and
(b) on relaxed models with RCsc semantics the ordering is still strong
enough to prevent hazards.
The problem becomes visible only on weaker models, when load-acquire is
implemented with RCpc semantics (e.g. some AArch64 CPUs which support
the LDAPR and LDAPUR instructions).
Three possible solutions exist:
1. Strengthen ordering by upgrading release/acquire semantics to
sequential consistency. This requires using seq-cst for stores,
loads, and CAS operations. However, this approach introduces a
significant performance penalty on relaxed-memory architectures.
2. Establish a safe partial order by enforcing a pair-wise
happens-before relationship between thread of same role by changing
the CAS and the preceding load of the head by converting them to
release and acquire respectively. This approach makes the original
barrier assumption unnecessary and allows its removal.
3. Retain partial ordering but ensure only safe partial orders are
committed. This can be done by detecting underflow conditions
(producer < consumer) and quashing the update in such cases.
This approach makes the original barrier assumption unnecessary
and allows its removal.
This patch implements solution (2) to preserve the “enqueue always
succeeds” contract expected by dependent libraries (e.g., mempool).
While solution (3) offers higher performance, adopting it now would
break that assumption.
Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
Signed-off-by: Ola Liljedahl <ola.liljedahl@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Dhruv Tripathi <dhruv.tripathi@arm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
lib/ring/rte_ring_c11_pvt.h | 71 ++++++++++++++++++++++++++++---------
1 file changed, 54 insertions(+), 17 deletions(-)
diff --git a/lib/ring/rte_ring_c11_pvt.h b/lib/ring/rte_ring_c11_pvt.h
index 5c10ad88f5..fb00889fdf 100644
--- a/lib/ring/rte_ring_c11_pvt.h
+++ b/lib/ring/rte_ring_c11_pvt.h
@@ -24,7 +24,12 @@ __rte_ring_update_tail(struct rte_ring_headtail *ht, uint32_t old_val,
if (!single)
rte_wait_until_equal_32((uint32_t *)(uintptr_t)&ht->tail, old_val,
rte_memory_order_relaxed);
-
+ /*
+ * R0: Establishes a synchronizing edge with load-acquire of
+ * cons_tail at A1 or prod_tail at A4.
+ * Ensures that memory effects by this thread on ring elements array
+ * is observed by a different thread of the other type.
+ */
rte_atomic_store_explicit(&ht->tail, new_val, rte_memory_order_release);
}
@@ -62,16 +67,24 @@ __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp,
unsigned int max = n;
int success;
- *old_head = rte_atomic_load_explicit(&r->prod.head, rte_memory_order_relaxed);
+ /*
+ * A0: Establishes a synchronizing edge with R1.
+ * Ensure that this thread observes same values
+ * to cons_tail observed by the thread that
+ * updated r->prod.head.
+ * If not, an unsafe partial order may ensue.
+ */
+ *old_head = rte_atomic_load_explicit(&r->prod.head, rte_memory_order_acquire);
do {
/* Reset n to the initial burst count */
n = max;
- /* Ensure the head is read before tail */
- __atomic_thread_fence(rte_memory_order_acquire);
- /* load-acquire synchronize with store-release of ht->tail
- * in update_tail.
+ /*
+ * A1: Establishes a synchronizing edge with R0.
+ * Ensures that other thread's memory effects on
+ * ring elements array is observed by the time
+ * this thread observes its tail update.
*/
cons_tail = rte_atomic_load_explicit(&r->cons.tail,
rte_memory_order_acquire);
@@ -97,10 +110,19 @@ __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp,
success = 1;
} else
/* on failure, *old_head is updated */
+ /*
+ * R1/A2.
+ * R1: Establishes a synchronizing edge with A0 of a
+ * different thread.
+ * A2: Establishes a synchronizing edge with R1 of a
+ * different thread to observe same value for
+ * cons_tail observed by that thread on CAS failure
+ * (to retry with an updated *old_head).
+ */
success = rte_atomic_compare_exchange_strong_explicit(&r->prod.head,
old_head, *new_head,
- rte_memory_order_relaxed,
- rte_memory_order_relaxed);
+ rte_memory_order_release,
+ rte_memory_order_acquire);
} while (unlikely(success == 0));
return n;
}
@@ -138,17 +160,23 @@ __rte_ring_move_cons_head(struct rte_ring *r, int is_sc,
uint32_t prod_tail;
int success;
- /* move cons.head atomically */
- *old_head = rte_atomic_load_explicit(&r->cons.head, rte_memory_order_relaxed);
+ /*
+ * A3: Establishes a synchronizing edge with R2.
+ * Ensure that this thread observes same values
+ * to prod_tail observed by the thread that
+ * updated r->cons.head.
+ * If not, an unsafe partial order may ensue.
+ */
+ *old_head = rte_atomic_load_explicit(&r->cons.head, rte_memory_order_acquire);
do {
/* Restore n as it may change every loop */
n = max;
- /* Ensure the head is read before tail */
- __atomic_thread_fence(rte_memory_order_acquire);
-
- /* this load-acquire synchronize with store-release of ht->tail
- * in update_tail.
+ /*
+ * A4: Establishes a synchronizing edge with R0.
+ * Ensures that other thread's memory effects on
+ * ring elements array is observed by the time
+ * this thread observes its tail update.
*/
prod_tail = rte_atomic_load_explicit(&r->prod.tail,
rte_memory_order_acquire);
@@ -173,10 +201,19 @@ __rte_ring_move_cons_head(struct rte_ring *r, int is_sc,
success = 1;
} else
/* on failure, *old_head will be updated */
+ /*
+ * R2/A5.
+ * R2: Establishes a synchronizing edge with A3 of a
+ * different thread.
+ * A5: Establishes a synchronizing edge with R2 of a
+ * different thread to observe same value for
+ * prod_tail observed by that thread on CAS failure
+ * (to retry with an updated *old_head).
+ */
success = rte_atomic_compare_exchange_strong_explicit(&r->cons.head,
old_head, *new_head,
- rte_memory_order_relaxed,
- rte_memory_order_relaxed);
+ rte_memory_order_release,
+ rte_memory_order_acquire);
} while (unlikely(success == 0));
return n;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.805462717 +0200
+++ 0069-ring-establish-safe-partial-order-in-default-mode.patch 2025-12-25 11:16:36.069837000 +0200
@@ -0,0 +1,194 @@
+From 942163a489126848c2ae10fcb60df2fb59f3aac8 Mon Sep 17 00:00:00 2001
+From: Wathsala Vithanage <wathsala.vithanage@arm.com>
+Date: Tue, 2 Dec 2025 20:39:26 +0000
+Subject: [PATCH] ring: establish safe partial order in default mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+[ upstream commit a4ad0eba9def1d1d071da8afe5e96eb2a2e0d71f]
+
+The function __rte_ring_headtail_move_head() assumes that the barrier
+(fence) between the load of the head and the load-acquire of the
+opposing tail guarantees the following: if a first thread reads tail
+and then writes head and a second thread reads the new value of head
+and then reads tail, then it should observe the same (or a later)
+value of tail.
+
+This assumption is incorrect under the C11 memory model. If the barrier
+(fence) is intended to establish a total ordering of ring operations,
+it fails to do so. Instead, the current implementation only enforces a
+partial ordering, which can lead to unsafe interleavings. In particular,
+some partial orders can cause underflows in free slot or available
+element computations, potentially resulting in data corruption.
+
+The issue manifests when a CPU first acts as a producer and later as a
+consumer. In this scenario, the barrier assumption may fail when another
+core takes the consumer role. A Herd7 litmus test in C11 can demonstrate
+this violation. The problem has not been widely observed so far because:
+ (a) on strong memory models (e.g., x86-64) the assumption holds, and
+ (b) on relaxed models with RCsc semantics the ordering is still strong
+ enough to prevent hazards.
+The problem becomes visible only on weaker models, when load-acquire is
+implemented with RCpc semantics (e.g. some AArch64 CPUs which support
+the LDAPR and LDAPUR instructions).
+
+Three possible solutions exist:
+ 1. Strengthen ordering by upgrading release/acquire semantics to
+ sequential consistency. This requires using seq-cst for stores,
+ loads, and CAS operations. However, this approach introduces a
+ significant performance penalty on relaxed-memory architectures.
+
+ 2. Establish a safe partial order by enforcing a pair-wise
+ happens-before relationship between thread of same role by changing
+ the CAS and the preceding load of the head by converting them to
+ release and acquire respectively. This approach makes the original
+ barrier assumption unnecessary and allows its removal.
+
+ 3. Retain partial ordering but ensure only safe partial orders are
+ committed. This can be done by detecting underflow conditions
+ (producer < consumer) and quashing the update in such cases.
+ This approach makes the original barrier assumption unnecessary
+ and allows its removal.
+
+This patch implements solution (2) to preserve the “enqueue always
+succeeds” contract expected by dependent libraries (e.g., mempool).
+While solution (3) offers higher performance, adopting it now would
+break that assumption.
+
+Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
+Signed-off-by: Ola Liljedahl <ola.liljedahl@arm.com>
+Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
+Reviewed-by: Dhruv Tripathi <dhruv.tripathi@arm.com>
+Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
+Tested-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
+---
+ lib/ring/rte_ring_c11_pvt.h | 71 ++++++++++++++++++++++++++++---------
+ 1 file changed, 54 insertions(+), 17 deletions(-)
+
+diff --git a/lib/ring/rte_ring_c11_pvt.h b/lib/ring/rte_ring_c11_pvt.h
+index 5c10ad88f5..fb00889fdf 100644
+--- a/lib/ring/rte_ring_c11_pvt.h
++++ b/lib/ring/rte_ring_c11_pvt.h
+@@ -24,7 +24,12 @@ __rte_ring_update_tail(struct rte_ring_headtail *ht, uint32_t old_val,
+ if (!single)
+ rte_wait_until_equal_32((uint32_t *)(uintptr_t)&ht->tail, old_val,
+ rte_memory_order_relaxed);
+-
++ /*
++ * R0: Establishes a synchronizing edge with load-acquire of
++ * cons_tail at A1 or prod_tail at A4.
++ * Ensures that memory effects by this thread on ring elements array
++ * is observed by a different thread of the other type.
++ */
+ rte_atomic_store_explicit(&ht->tail, new_val, rte_memory_order_release);
+ }
+
+@@ -62,16 +67,24 @@ __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp,
+ unsigned int max = n;
+ int success;
+
+- *old_head = rte_atomic_load_explicit(&r->prod.head, rte_memory_order_relaxed);
++ /*
++ * A0: Establishes a synchronizing edge with R1.
++ * Ensure that this thread observes same values
++ * to cons_tail observed by the thread that
++ * updated r->prod.head.
++ * If not, an unsafe partial order may ensue.
++ */
++ *old_head = rte_atomic_load_explicit(&r->prod.head, rte_memory_order_acquire);
+ do {
+ /* Reset n to the initial burst count */
+ n = max;
+
+- /* Ensure the head is read before tail */
+- __atomic_thread_fence(rte_memory_order_acquire);
+
+- /* load-acquire synchronize with store-release of ht->tail
+- * in update_tail.
++ /*
++ * A1: Establishes a synchronizing edge with R0.
++ * Ensures that other thread's memory effects on
++ * ring elements array is observed by the time
++ * this thread observes its tail update.
+ */
+ cons_tail = rte_atomic_load_explicit(&r->cons.tail,
+ rte_memory_order_acquire);
+@@ -97,10 +110,19 @@ __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp,
+ success = 1;
+ } else
+ /* on failure, *old_head is updated */
++ /*
++ * R1/A2.
++ * R1: Establishes a synchronizing edge with A0 of a
++ * different thread.
++ * A2: Establishes a synchronizing edge with R1 of a
++ * different thread to observe same value for
++ * cons_tail observed by that thread on CAS failure
++ * (to retry with an updated *old_head).
++ */
+ success = rte_atomic_compare_exchange_strong_explicit(&r->prod.head,
+ old_head, *new_head,
+- rte_memory_order_relaxed,
+- rte_memory_order_relaxed);
++ rte_memory_order_release,
++ rte_memory_order_acquire);
+ } while (unlikely(success == 0));
+ return n;
+ }
+@@ -138,17 +160,23 @@ __rte_ring_move_cons_head(struct rte_ring *r, int is_sc,
+ uint32_t prod_tail;
+ int success;
+
+- /* move cons.head atomically */
+- *old_head = rte_atomic_load_explicit(&r->cons.head, rte_memory_order_relaxed);
++ /*
++ * A3: Establishes a synchronizing edge with R2.
++ * Ensure that this thread observes same values
++ * to prod_tail observed by the thread that
++ * updated r->cons.head.
++ * If not, an unsafe partial order may ensue.
++ */
++ *old_head = rte_atomic_load_explicit(&r->cons.head, rte_memory_order_acquire);
+ do {
+ /* Restore n as it may change every loop */
+ n = max;
+
+- /* Ensure the head is read before tail */
+- __atomic_thread_fence(rte_memory_order_acquire);
+-
+- /* this load-acquire synchronize with store-release of ht->tail
+- * in update_tail.
++ /*
++ * A4: Establishes a synchronizing edge with R0.
++ * Ensures that other thread's memory effects on
++ * ring elements array is observed by the time
++ * this thread observes its tail update.
+ */
+ prod_tail = rte_atomic_load_explicit(&r->prod.tail,
+ rte_memory_order_acquire);
+@@ -173,10 +201,19 @@ __rte_ring_move_cons_head(struct rte_ring *r, int is_sc,
+ success = 1;
+ } else
+ /* on failure, *old_head will be updated */
++ /*
++ * R2/A5.
++ * R2: Establishes a synchronizing edge with A3 of a
++ * different thread.
++ * A5: Establishes a synchronizing edge with R2 of a
++ * different thread to observe same value for
++ * prod_tail observed by that thread on CAS failure
++ * (to retry with an updated *old_head).
++ */
+ success = rte_atomic_compare_exchange_strong_explicit(&r->cons.head,
+ old_head, *new_head,
+- rte_memory_order_relaxed,
+- rte_memory_order_relaxed);
++ rte_memory_order_release,
++ rte_memory_order_acquire);
+ } while (unlikely(success == 0));
+ return n;
+ }
+--
+2.43.0
+
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'ring: establish a safe partial order in hts-ring' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (67 preceding siblings ...)
2025-12-25 9:18 ` patch 'ring: establish safe partial order in default mode' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish safe partial order in RTS mode' " Shani Peretz
` (31 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Wathsala Vithanage; +Cc: Ola Liljedahl, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/60f8d1394655899888f2a17c934ab04d9c62e934
Thanks.
Shani
---
From 60f8d1394655899888f2a17c934ab04d9c62e934 Mon Sep 17 00:00:00 2001
From: Wathsala Vithanage <wathsala.vithanage@arm.com>
Date: Tue, 2 Dec 2025 20:39:27 +0000
Subject: [PATCH] ring: establish a safe partial order in hts-ring
[ upstream commit 66d5f962780694f6aebf000907fc3ce7a72584f9 ]
Enforce a safe partial order by making the CAS and the preceding head
load use release and acquire semantics. This creates a pairwise
happens-before relationship between threads of the same role.
Combine the two load-acquire operations of ht.raw, which were previously
split across the two paths of a conditional branch, into
__rte_ring_hts_head_wait. This simplifies the branching logic and makes
the synchronization behavior easier to understand.
Add comments to explain synchronizes with edges in detail.
Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
Signed-off-by: Ola Liljedahl <ola.liljedahl@arm.com>
---
lib/ring/rte_ring_hts_elem_pvt.h | 96 +++++++++++++++++++++++---------
1 file changed, 71 insertions(+), 25 deletions(-)
diff --git a/lib/ring/rte_ring_hts_elem_pvt.h b/lib/ring/rte_ring_hts_elem_pvt.h
index 91f5eeccb9..3c27197b6b 100644
--- a/lib/ring/rte_ring_hts_elem_pvt.h
+++ b/lib/ring/rte_ring_hts_elem_pvt.h
@@ -32,22 +32,40 @@ __rte_ring_hts_update_tail(struct rte_ring_hts_headtail *ht, uint32_t old_tail,
RTE_SET_USED(enqueue);
tail = old_tail + num;
+
+ /*
+ * R0: Release the tail update. Establishes a synchronization edge with
+ * the load-acquire at A1/A3. This release ensures that all updates to
+ * *ht and the ring array made by this thread become visible to the
+ * opposing thread once the tail value written here is observed.
+ */
rte_atomic_store_explicit(&ht->ht.pos.tail, tail, rte_memory_order_release);
}
/**
- * @internal waits till tail will become equal to head.
- * Means no writer/reader is active for that ring.
- * Suppose to work as serialization point.
+ * @internal
+ * Waits until the tail becomes equal to the head.
+ * This indicates that another thread has finished its transaction, and there
+ * is a chance that we could be the next writer or reader in line.
+ *
+ * Returns ht.raw at this point. The value may be imprecise, since another
+ * thread might change the state before we observe ht.raw, but that does not
+ * matter. The function __rte_ring_hts_move_head() can detect and recall this
+ * function when it reaches the linearization point (CAS).
*/
-static __rte_always_inline void
+static __rte_always_inline union __rte_ring_hts_pos
__rte_ring_hts_head_wait(const struct rte_ring_hts_headtail *ht,
- union __rte_ring_hts_pos *p)
+ int memorder)
{
- while (p->pos.head != p->pos.tail) {
+ union __rte_ring_hts_pos p;
+ p.raw = rte_atomic_load_explicit(&ht->ht.raw, memorder);
+
+ while (p.pos.head != p.pos.tail) {
rte_pause();
- p->raw = rte_atomic_load_explicit(&ht->ht.raw, rte_memory_order_acquire);
+ p.raw = rte_atomic_load_explicit(&ht->ht.raw, memorder);
}
+
+ return p;
}
/**
@@ -58,13 +76,11 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
enum rte_ring_queue_behavior behavior, uint32_t *old_head,
uint32_t *free_entries)
{
- uint32_t n;
+ uint32_t n, cons_tail;
union __rte_ring_hts_pos np, op;
const uint32_t capacity = r->capacity;
- op.raw = rte_atomic_load_explicit(&r->hts_prod.ht.raw, rte_memory_order_acquire);
-
do {
/* Reset n to the initial burst count */
n = num;
@@ -74,7 +90,20 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
* make sure that we read prod head/tail *before*
* reading cons tail.
*/
- __rte_ring_hts_head_wait(&r->hts_prod, &op);
+ /*
+ * A0: Synchronizes with the CAS at R1.
+ * Establishes a happens-before relationship with a thread of the same
+ * type that released the ht.raw, ensuring this thread observes all of
+ * its memory effects needed to maintain a safe partial order.
+ */
+ op = __rte_ring_hts_head_wait(&r->hts_prod, rte_memory_order_acquire);
+
+ /*
+ * A1: Establish a synchronizes-with edge using a store-release at R0.
+ * This ensures that all memory effects from the preceding opposing
+ * thread are observed.
+ */
+ cons_tail = rte_atomic_load_explicit(&r->cons.tail, rte_memory_order_acquire);
/*
* The subtraction is done between two unsigned 32bits value
@@ -82,7 +111,7 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
* *old_head > cons_tail). So 'free_entries' is always between 0
* and capacity (which is < size).
*/
- *free_entries = capacity + r->cons.tail - op.pos.head;
+ *free_entries = capacity + cons_tail - op.pos.head;
/* check that we have enough room in ring */
if (unlikely(n > *free_entries))
@@ -96,13 +125,16 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
np.pos.head = op.pos.head + n;
/*
- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
- * - OOO reads of cons tail value
- * - OOO copy of elems from the ring
+ * R1: Establishes a synchronizes-with edge with the load-acquire
+ * of ht.raw at A0. This makes sure that the store-release to the
+ * tail by this thread, if it was of the opposite type, becomes
+ * visible to another thread of the current type. That thread will
+ * then observe the updates in the same order, keeping a safe
+ * partial order.
*/
} while (rte_atomic_compare_exchange_strong_explicit(&r->hts_prod.ht.raw,
(uint64_t *)(uintptr_t)&op.raw, np.raw,
- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
+ rte_memory_order_release, rte_memory_order_relaxed) == 0);
*old_head = op.pos.head;
return n;
@@ -116,11 +148,9 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
enum rte_ring_queue_behavior behavior, uint32_t *old_head,
uint32_t *entries)
{
- uint32_t n;
+ uint32_t n, prod_tail;
union __rte_ring_hts_pos np, op;
- op.raw = rte_atomic_load_explicit(&r->hts_cons.ht.raw, rte_memory_order_acquire);
-
/* move cons.head atomically */
do {
/* Restore n as it may change every loop */
@@ -131,14 +161,27 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
* make sure that we read cons head/tail *before*
* reading prod tail.
*/
- __rte_ring_hts_head_wait(&r->hts_cons, &op);
+ /*
+ * A2: Synchronizes with the CAS at R2.
+ * Establishes a happens-before relationship with a thread of the same
+ * type that released the ht.raw, ensuring this thread observes all of
+ * its memory effects needed to maintain a safe partial order.
+ */
+ op = __rte_ring_hts_head_wait(&r->hts_cons, rte_memory_order_acquire);
+
+ /*
+ * A3: Establish a synchronizes-with edge using a store-release at R0.
+ * This ensures that all memory effects from the preceding opposing
+ * thread are observed.
+ */
+ prod_tail = rte_atomic_load_explicit(&r->prod.tail, rte_memory_order_acquire);
/* The subtraction is done between two unsigned 32bits value
* (the result is always modulo 32 bits even if we have
* cons_head > prod_tail). So 'entries' is always between 0
* and size(ring)-1.
*/
- *entries = r->prod.tail - op.pos.head;
+ *entries = prod_tail - op.pos.head;
/* Set the actual entries for dequeue */
if (n > *entries)
@@ -151,13 +194,16 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
np.pos.head = op.pos.head + n;
/*
- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
- * - OOO reads of prod tail value
- * - OOO copy of elems from the ring
+ * R2: Establishes a synchronizes-with edge with the load-acquire
+ * of ht.raw at A2. This makes sure that the store-release to the
+ * tail by this thread, if it was of the opposite type, becomes
+ * visible to another thread of the current type. That thread will
+ * then observe the updates in the same order, keeping a safe
+ * partial order.
*/
} while (rte_atomic_compare_exchange_strong_explicit(&r->hts_cons.ht.raw,
(uint64_t *)(uintptr_t)&op.raw, np.raw,
- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
+ rte_memory_order_release, rte_memory_order_relaxed) == 0);
*old_head = op.pos.head;
return n;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.845569579 +0200
+++ 0070-ring-establish-a-safe-partial-order-in-hts-ring.patch 2025-12-25 11:16:36.073824000 +0200
@@ -1 +1 @@
-From 66d5f962780694f6aebf000907fc3ce7a72584f9 Mon Sep 17 00:00:00 2001
+From 60f8d1394655899888f2a17c934ab04d9c62e934 Mon Sep 17 00:00:00 2001
@@ -3,2 +3,4 @@
-Date: Tue, 11 Nov 2025 18:37:18 +0000
-Subject: [PATCH] ring: establish safe partial order in HTS mode
+Date: Tue, 2 Dec 2025 20:39:27 +0000
+Subject: [PATCH] ring: establish a safe partial order in hts-ring
+
+[ upstream commit 66d5f962780694f6aebf000907fc3ce7a72584f9 ]
@@ -17,3 +18,0 @@
-Fixes: 1cc363b8ce06e ("ring: introduce HTS ring mode")
-Cc: stable@dpdk.org
-
@@ -23,2 +22,2 @@
- lib/ring/rte_ring_hts_elem_pvt.h | 66 ++++++++++++++++++++++++--------
- 1 file changed, 49 insertions(+), 17 deletions(-)
+ lib/ring/rte_ring_hts_elem_pvt.h | 96 +++++++++++++++++++++++---------
+ 1 file changed, 71 insertions(+), 25 deletions(-)
@@ -27 +26 @@
-index e2b82dd1e6..a01089d15d 100644
+index 91f5eeccb9..3c27197b6b 100644
@@ -37,3 +36,3 @@
-+ * the load-acquire at A1. This release ensures that all updates to *ht
-+ * and the ring array made by this thread become visible to the opposing
-+ * thread once the tail value written here is observed.
++ * the load-acquire at A1/A3. This release ensures that all updates to
++ * *ht and the ring array made by this thread become visible to the
++ * opposing thread once the tail value written here is observed.
@@ -62 +61 @@
-+ rte_memory_order memorder)
++ int memorder)
@@ -78 +77 @@
-@@ -80,11 +98,9 @@ __rte_ring_hts_move_head(struct rte_ring_hts_headtail *d,
+@@ -58,13 +76,11 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
@@ -80 +79 @@
- uint32_t *entries)
+ uint32_t *free_entries)
@@ -83 +82 @@
-+ uint32_t n, stail;
++ uint32_t n, cons_tail;
@@ -86 +85,3 @@
-- op.raw = rte_atomic_load_explicit(&d->ht.raw, rte_memory_order_acquire);
+ const uint32_t capacity = r->capacity;
+
+- op.raw = rte_atomic_load_explicit(&r->hts_prod.ht.raw, rte_memory_order_acquire);
@@ -91 +92 @@
-@@ -94,7 +110,20 @@ __rte_ring_hts_move_head(struct rte_ring_hts_headtail *d,
+@@ -74,7 +90,20 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
@@ -95 +96 @@
-- __rte_ring_hts_head_wait(d, &op);
+- __rte_ring_hts_head_wait(&r->hts_prod, &op);
@@ -102 +103 @@
-+ op = __rte_ring_hts_head_wait(d, rte_memory_order_acquire);
++ op = __rte_ring_hts_head_wait(&r->hts_prod, rte_memory_order_acquire);
@@ -109 +110 @@
-+ stail = rte_atomic_load_explicit(&s->tail, rte_memory_order_acquire);
++ cons_tail = rte_atomic_load_explicit(&r->cons.tail, rte_memory_order_acquire);
@@ -113,2 +114,2 @@
-@@ -102,7 +131,7 @@ __rte_ring_hts_move_head(struct rte_ring_hts_headtail *d,
- * *old_head > cons_tail). So 'entries' is always between 0
+@@ -82,7 +111,7 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
+ * *old_head > cons_tail). So 'free_entries' is always between 0
@@ -117,2 +118,2 @@
-- *entries = capacity + s->tail - op.pos.head;
-+ *entries = capacity + stail - op.pos.head;
+- *free_entries = capacity + r->cons.tail - op.pos.head;
++ *free_entries = capacity + cons_tail - op.pos.head;
@@ -121,2 +122,2 @@
- if (unlikely(n > *entries))
-@@ -116,14 +145,17 @@ __rte_ring_hts_move_head(struct rte_ring_hts_headtail *d,
+ if (unlikely(n > *free_entries))
+@@ -96,13 +125,16 @@ __rte_ring_hts_move_prod_head(struct rte_ring *r, unsigned int num,
@@ -136 +137,65 @@
- } while (rte_atomic_compare_exchange_strong_explicit(&d->ht.raw,
+ } while (rte_atomic_compare_exchange_strong_explicit(&r->hts_prod.ht.raw,
+ (uint64_t *)(uintptr_t)&op.raw, np.raw,
+- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
++ rte_memory_order_release, rte_memory_order_relaxed) == 0);
+
+ *old_head = op.pos.head;
+ return n;
+@@ -116,11 +148,9 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
+ enum rte_ring_queue_behavior behavior, uint32_t *old_head,
+ uint32_t *entries)
+ {
+- uint32_t n;
++ uint32_t n, prod_tail;
+ union __rte_ring_hts_pos np, op;
+
+- op.raw = rte_atomic_load_explicit(&r->hts_cons.ht.raw, rte_memory_order_acquire);
+-
+ /* move cons.head atomically */
+ do {
+ /* Restore n as it may change every loop */
+@@ -131,14 +161,27 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
+ * make sure that we read cons head/tail *before*
+ * reading prod tail.
+ */
+- __rte_ring_hts_head_wait(&r->hts_cons, &op);
++ /*
++ * A2: Synchronizes with the CAS at R2.
++ * Establishes a happens-before relationship with a thread of the same
++ * type that released the ht.raw, ensuring this thread observes all of
++ * its memory effects needed to maintain a safe partial order.
++ */
++ op = __rte_ring_hts_head_wait(&r->hts_cons, rte_memory_order_acquire);
++
++ /*
++ * A3: Establish a synchronizes-with edge using a store-release at R0.
++ * This ensures that all memory effects from the preceding opposing
++ * thread are observed.
++ */
++ prod_tail = rte_atomic_load_explicit(&r->prod.tail, rte_memory_order_acquire);
+
+ /* The subtraction is done between two unsigned 32bits value
+ * (the result is always modulo 32 bits even if we have
+ * cons_head > prod_tail). So 'entries' is always between 0
+ * and size(ring)-1.
+ */
+- *entries = r->prod.tail - op.pos.head;
++ *entries = prod_tail - op.pos.head;
+
+ /* Set the actual entries for dequeue */
+ if (n > *entries)
+@@ -151,13 +194,16 @@ __rte_ring_hts_move_cons_head(struct rte_ring *r, unsigned int num,
+ np.pos.head = op.pos.head + n;
+
+ /*
+- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
+- * - OOO reads of prod tail value
+- * - OOO copy of elems from the ring
++ * R2: Establishes a synchronizes-with edge with the load-acquire
++ * of ht.raw at A2. This makes sure that the store-release to the
++ * tail by this thread, if it was of the opposite type, becomes
++ * visible to another thread of the current type. That thread will
++ * then observe the updates in the same order, keeping a safe
++ * partial order.
+ */
+ } while (rte_atomic_compare_exchange_strong_explicit(&r->hts_cons.ht.raw,
@@ -138,4 +203,2 @@
-- rte_memory_order_acquire,
-- rte_memory_order_acquire) == 0);
-+ rte_memory_order_release,
-+ rte_memory_order_relaxed) == 0);
+- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
++ rte_memory_order_release, rte_memory_order_relaxed) == 0);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'ring: establish safe partial order in RTS mode' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (68 preceding siblings ...)
2025-12-25 9:18 ` patch 'ring: establish a safe partial order in hts-ring' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'doc: add device arguments in txgbe guide' " Shani Peretz
` (30 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Wathsala Vithanage; +Cc: Ola Liljedahl, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/0916a3572d6e6f5ce60a16390889aabbc48003d0
Thanks.
Shani
---
From 0916a3572d6e6f5ce60a16390889aabbc48003d0 Mon Sep 17 00:00:00 2001
From: Wathsala Vithanage <wathsala.vithanage@arm.com>
Date: Tue, 2 Dec 2025 20:39:28 +0000
Subject: [PATCH] ring: establish safe partial order in RTS mode
[ upstream commit 36b69b5f958e10eb5beb4292ade57199a722a045 ]
Enforce a safe partial order by making the CAS and the preceding head
load use release and acquire semantics. This creates a pairwise
happens-before relationship between threads of the same kind
(i.e. between consumers or between producers).
Combine the two load-acquire operations of ht->head.raw, which were
previously split across the two paths of a conditional branch, into
__rte_ring_rts_head_wait. This simplifies the branching logic and makes
the synchronization behavior easier to understand.
Add comments to explain synchronizes with edges in detail.
Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
Signed-off-by: Ola Liljedahl <ola.liljedahl@arm.com>
---
lib/ring/rte_ring_rts_elem_pvt.h | 96 ++++++++++++++++++++++++--------
1 file changed, 72 insertions(+), 24 deletions(-)
diff --git a/lib/ring/rte_ring_rts_elem_pvt.h b/lib/ring/rte_ring_rts_elem_pvt.h
index 122650346b..867175e15f 100644
--- a/lib/ring/rte_ring_rts_elem_pvt.h
+++ b/lib/ring/rte_ring_rts_elem_pvt.h
@@ -31,6 +31,17 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
* might preceded us, then don't update tail with new value.
*/
+ /*
+ * A0 = {A0.a, A0.b}: Synchronizes with the CAS at R0.
+ * The CAS at R0 in same typed thread establishes a happens-before
+ * relationship with this load acquire. Ensures that this thread
+ * observes the same or later values for h.raw/h.val.cnt
+ * observed by the other thread when it updated ht->tail.raw.
+ * If not, ht->tail.raw may get updated out of sync (e.g. getting
+ * updated to the same value twice). A0.a makes sure this condition
+ * holds when CAS succeeds and A0.b when it fails.
+ */
+ /* A0.a */
ot.raw = rte_atomic_load_explicit(&ht->tail.raw, rte_memory_order_acquire);
do {
@@ -41,6 +52,11 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
if (++nt.val.cnt == h.val.cnt)
nt.val.pos = h.val.pos;
+ /*
+ * R0: Synchronizes with A2 of a different thread of the opposite type and A0.b
+ * of a different thread of the same type.
+ */
+ /* A0.b */
} while (rte_atomic_compare_exchange_strong_explicit(&ht->tail.raw,
(uint64_t *)(uintptr_t)&ot.raw, nt.raw,
rte_memory_order_release, rte_memory_order_acquire) == 0);
@@ -50,18 +66,22 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
* @internal This function waits till head/tail distance wouldn't
* exceed pre-defined max value.
*/
-static __rte_always_inline void
+static __rte_always_inline union __rte_ring_rts_poscnt
__rte_ring_rts_head_wait(const struct rte_ring_rts_headtail *ht,
- union __rte_ring_rts_poscnt *h)
+ int memorder)
{
- uint32_t max;
+ union __rte_ring_rts_poscnt h;
+ uint32_t max = ht->htd_max;
- max = ht->htd_max;
- while (h->val.pos - ht->tail.val.pos > max) {
+ h.raw = rte_atomic_load_explicit(&ht->head.raw, memorder);
+
+ while (h.val.pos - ht->tail.val.pos > max) {
rte_pause();
- h->raw = rte_atomic_load_explicit(&ht->head.raw, rte_memory_order_acquire);
+ h.raw = rte_atomic_load_explicit(&ht->head.raw, memorder);
}
+
+ return h;
}
/**
@@ -72,13 +92,11 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
enum rte_ring_queue_behavior behavior, uint32_t *old_head,
uint32_t *free_entries)
{
- uint32_t n;
+ uint32_t n, cons_tail;
union __rte_ring_rts_poscnt nh, oh;
const uint32_t capacity = r->capacity;
- oh.raw = rte_atomic_load_explicit(&r->rts_prod.head.raw, rte_memory_order_acquire);
-
do {
/* Reset n to the initial burst count */
n = num;
@@ -88,7 +106,20 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
* make sure that we read prod head *before*
* reading cons tail.
*/
- __rte_ring_rts_head_wait(&r->rts_prod, &oh);
+ /*
+ * A1 Synchronizes with the CAS at R1.
+ * Establishes a happens-before relationship with a thread of the same
+ * type that released the ht.raw, ensuring this thread observes all of
+ * its memory effects needed to maintain a safe partial order.
+ */
+ oh = __rte_ring_rts_head_wait(&r->rts_prod, rte_memory_order_acquire);
+
+ /*
+ * A2: Establish a synchronizes-with edge using a store-release at R0.
+ * This ensures that all memory effects from the preceding opposing
+ * thread are observed.
+ */
+ cons_tail = rte_atomic_load_explicit(&r->cons.tail, rte_memory_order_acquire);
/*
* The subtraction is done between two unsigned 32bits value
@@ -96,7 +127,7 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
* *old_head > cons_tail). So 'free_entries' is always between 0
* and capacity (which is < size).
*/
- *free_entries = capacity + r->cons.tail - oh.val.pos;
+ *free_entries = capacity + cons_tail - oh.val.pos;
/* check that we have enough room in ring */
if (unlikely(n > *free_entries))
@@ -110,13 +141,16 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
nh.val.cnt = oh.val.cnt + 1;
/*
- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
- * - OOO reads of cons tail value
- * - OOO copy of elems to the ring
+ * R1: Establishes a synchronizes-with edge with the load-acquire
+ * of ht.raw at A1. Ensures that the store-release to the tail by
+ * this thread, if it was of the opposite type, becomes
+ * visible to another thread of the current type. That thread will
+ * then observe the updates in the same order, keeping a safe
+ * partial order.
*/
} while (rte_atomic_compare_exchange_strong_explicit(&r->rts_prod.head.raw,
(uint64_t *)(uintptr_t)&oh.raw, nh.raw,
- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
+ rte_memory_order_release, rte_memory_order_relaxed) == 0);
*old_head = oh.val.pos;
return n;
@@ -130,11 +164,9 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
enum rte_ring_queue_behavior behavior, uint32_t *old_head,
uint32_t *entries)
{
- uint32_t n;
+ uint32_t n, prod_tail;
union __rte_ring_rts_poscnt nh, oh;
- oh.raw = rte_atomic_load_explicit(&r->rts_cons.head.raw, rte_memory_order_acquire);
-
/* move cons.head atomically */
do {
/* Restore n as it may change every loop */
@@ -145,14 +177,27 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
* make sure that we read cons head *before*
* reading prod tail.
*/
- __rte_ring_rts_head_wait(&r->rts_cons, &oh);
+ /*
+ * A3: Synchronizes with the CAS at R2.
+ * Establishes a happens-before relationship with a thread of the same
+ * type that released the ht.raw, ensuring this thread observes all of
+ * its memory effects needed to maintain a safe partial order.
+ */
+ oh = __rte_ring_rts_head_wait(&r->rts_cons, rte_memory_order_acquire);
+
+ /*
+ * A4: Establish a synchronizes-with edge using a store-release at R0.
+ * This ensures that all memory effects from the preceding opposing
+ * thread are observed.
+ */
+ prod_tail = rte_atomic_load_explicit(&r->prod.tail, rte_memory_order_acquire);
/* The subtraction is done between two unsigned 32bits value
* (the result is always modulo 32 bits even if we have
* cons_head > prod_tail). So 'entries' is always between 0
* and size(ring)-1.
*/
- *entries = r->prod.tail - oh.val.pos;
+ *entries = prod_tail - oh.val.pos;
/* Set the actual entries for dequeue */
if (n > *entries)
@@ -165,13 +210,16 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
nh.val.cnt = oh.val.cnt + 1;
/*
- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
- * - OOO reads of prod tail value
- * - OOO copy of elems from the ring
+ * R2: Establishes a synchronizes-with edge with the load-acquire
+ * of ht.raw at A3. Ensures that the store-release to the tail by
+ * this thread, if it was of the opposite type, becomes
+ * visible to another thread of the current type. That thread will
+ * then observe the updates in the same order, keeping a safe
+ * partial order.
*/
} while (rte_atomic_compare_exchange_strong_explicit(&r->rts_cons.head.raw,
(uint64_t *)(uintptr_t)&oh.raw, nh.raw,
- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
+ rte_memory_order_release, rte_memory_order_relaxed) == 0);
*old_head = oh.val.pos;
return n;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.892313987 +0200
+++ 0071-ring-establish-safe-partial-order-in-RTS-mode.patch 2025-12-25 11:16:36.077854000 +0200
@@ -1 +1 @@
-From 36b69b5f958e10eb5beb4292ade57199a722a045 Mon Sep 17 00:00:00 2001
+From 0916a3572d6e6f5ce60a16390889aabbc48003d0 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Tue, 11 Nov 2025 18:37:19 +0000
+Date: Tue, 2 Dec 2025 20:39:28 +0000
@@ -5,0 +6,2 @@
+[ upstream commit 36b69b5f958e10eb5beb4292ade57199a722a045 ]
+
@@ -18,3 +19,0 @@
-Fixes: e6ba4731c0f3a ("ring: introduce RTS ring mode")
-Cc: stable@dpdk.org
-
@@ -24,2 +23,2 @@
- lib/ring/rte_ring_rts_elem_pvt.h | 67 +++++++++++++++++++++++---------
- 1 file changed, 49 insertions(+), 18 deletions(-)
+ lib/ring/rte_ring_rts_elem_pvt.h | 96 ++++++++++++++++++++++++--------
+ 1 file changed, 72 insertions(+), 24 deletions(-)
@@ -28 +27 @@
-index 96825931f8..0280369b21 100644
+index 122650346b..867175e15f 100644
@@ -49,2 +48 @@
-@@ -40,7 +51,11 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
- nt.raw = ot.raw;
+@@ -41,6 +52,11 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
@@ -53 +51 @@
--
+
@@ -62 +60 @@
-@@ -50,18 +65,21 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
+@@ -50,18 +66,22 @@ __rte_ring_rts_update_tail(struct rte_ring_rts_headtail *ht)
@@ -70 +68 @@
-+ rte_memory_order memorder)
++ int memorder)
@@ -77 +74,0 @@
-+ h.raw = rte_atomic_load_explicit(&ht->head.raw, memorder);
@@ -79,0 +77,2 @@
++ h.raw = rte_atomic_load_explicit(&ht->head.raw, memorder);
++
@@ -90 +89 @@
-@@ -94,12 +112,9 @@ __rte_ring_rts_move_head(struct rte_ring_rts_headtail *d,
+@@ -72,13 +92,11 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
@@ -92 +91 @@
- uint32_t *entries)
+ uint32_t *free_entries)
@@ -95 +94 @@
-+ uint32_t n, stail;
++ uint32_t n, cons_tail;
@@ -98,2 +97,3 @@
-- oh.raw = rte_atomic_load_explicit(&d->head.raw,
-- rte_memory_order_acquire);
+ const uint32_t capacity = r->capacity;
+
+- oh.raw = rte_atomic_load_explicit(&r->rts_prod.head.raw, rte_memory_order_acquire);
@@ -104 +104 @@
-@@ -109,7 +124,20 @@ __rte_ring_rts_move_head(struct rte_ring_rts_headtail *d,
+@@ -88,7 +106,20 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
@@ -108 +108 @@
-- __rte_ring_rts_head_wait(d, &oh);
+- __rte_ring_rts_head_wait(&r->rts_prod, &oh);
@@ -115 +115 @@
-+ oh = __rte_ring_rts_head_wait(d, rte_memory_order_acquire);
++ oh = __rte_ring_rts_head_wait(&r->rts_prod, rte_memory_order_acquire);
@@ -122 +122 @@
-+ stail = rte_atomic_load_explicit(&s->tail, rte_memory_order_acquire);
++ cons_tail = rte_atomic_load_explicit(&r->cons.tail, rte_memory_order_acquire);
@@ -126,2 +126,2 @@
-@@ -117,7 +145,7 @@ __rte_ring_rts_move_head(struct rte_ring_rts_headtail *d,
- * *old_head > cons_tail). So 'entries' is always between 0
+@@ -96,7 +127,7 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
+ * *old_head > cons_tail). So 'free_entries' is always between 0
@@ -130,2 +130,2 @@
-- *entries = capacity + s->tail - oh.val.pos;
-+ *entries = capacity + stail - oh.val.pos;
+- *free_entries = capacity + r->cons.tail - oh.val.pos;
++ *free_entries = capacity + cons_tail - oh.val.pos;
@@ -134,2 +134,2 @@
- if (unlikely(n > *entries))
-@@ -131,14 +159,17 @@ __rte_ring_rts_move_head(struct rte_ring_rts_headtail *d,
+ if (unlikely(n > *free_entries))
+@@ -110,13 +141,16 @@ __rte_ring_rts_move_prod_head(struct rte_ring *r, uint32_t num,
@@ -149 +149,65 @@
- } while (rte_atomic_compare_exchange_strong_explicit(&d->head.raw,
+ } while (rte_atomic_compare_exchange_strong_explicit(&r->rts_prod.head.raw,
+ (uint64_t *)(uintptr_t)&oh.raw, nh.raw,
+- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
++ rte_memory_order_release, rte_memory_order_relaxed) == 0);
+
+ *old_head = oh.val.pos;
+ return n;
+@@ -130,11 +164,9 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
+ enum rte_ring_queue_behavior behavior, uint32_t *old_head,
+ uint32_t *entries)
+ {
+- uint32_t n;
++ uint32_t n, prod_tail;
+ union __rte_ring_rts_poscnt nh, oh;
+
+- oh.raw = rte_atomic_load_explicit(&r->rts_cons.head.raw, rte_memory_order_acquire);
+-
+ /* move cons.head atomically */
+ do {
+ /* Restore n as it may change every loop */
+@@ -145,14 +177,27 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
+ * make sure that we read cons head *before*
+ * reading prod tail.
+ */
+- __rte_ring_rts_head_wait(&r->rts_cons, &oh);
++ /*
++ * A3: Synchronizes with the CAS at R2.
++ * Establishes a happens-before relationship with a thread of the same
++ * type that released the ht.raw, ensuring this thread observes all of
++ * its memory effects needed to maintain a safe partial order.
++ */
++ oh = __rte_ring_rts_head_wait(&r->rts_cons, rte_memory_order_acquire);
++
++ /*
++ * A4: Establish a synchronizes-with edge using a store-release at R0.
++ * This ensures that all memory effects from the preceding opposing
++ * thread are observed.
++ */
++ prod_tail = rte_atomic_load_explicit(&r->prod.tail, rte_memory_order_acquire);
+
+ /* The subtraction is done between two unsigned 32bits value
+ * (the result is always modulo 32 bits even if we have
+ * cons_head > prod_tail). So 'entries' is always between 0
+ * and size(ring)-1.
+ */
+- *entries = r->prod.tail - oh.val.pos;
++ *entries = prod_tail - oh.val.pos;
+
+ /* Set the actual entries for dequeue */
+ if (n > *entries)
+@@ -165,13 +210,16 @@ __rte_ring_rts_move_cons_head(struct rte_ring *r, uint32_t num,
+ nh.val.cnt = oh.val.cnt + 1;
+
+ /*
+- * this CAS(ACQUIRE, ACQUIRE) serves as a hoist barrier to prevent:
+- * - OOO reads of prod tail value
+- * - OOO copy of elems from the ring
++ * R2: Establishes a synchronizes-with edge with the load-acquire
++ * of ht.raw at A3. Ensures that the store-release to the tail by
++ * this thread, if it was of the opposite type, becomes
++ * visible to another thread of the current type. That thread will
++ * then observe the updates in the same order, keeping a safe
++ * partial order.
+ */
+ } while (rte_atomic_compare_exchange_strong_explicit(&r->rts_cons.head.raw,
@@ -151,4 +215,2 @@
-- rte_memory_order_acquire,
-- rte_memory_order_acquire) == 0);
-+ rte_memory_order_release,
-+ rte_memory_order_relaxed) == 0);
+- rte_memory_order_acquire, rte_memory_order_acquire) == 0);
++ rte_memory_order_release, rte_memory_order_relaxed) == 0);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: add device arguments in txgbe guide' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (69 preceding siblings ...)
2025-12-25 9:18 ` patch 'ring: establish safe partial order in RTS mode' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/axgbe: fix build with GCC 16' " Shani Peretz
` (29 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/c1ab06210d60a15ffa9761cbc1a9cb767d13b9aa
Thanks.
Shani
---
From c1ab06210d60a15ffa9761cbc1a9cb767d13b9aa Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Tue, 11 Nov 2025 10:10:30 +0800
Subject: [PATCH] doc: add device arguments in txgbe guide
[ upstream commit a443523d6ddf076c422c9ed1460fb3a4c5c9a05b ]
Add new device arguments "pkt-filter-size" and "pkt-filter-drop-queue"
in txgbe driver.
Fixes: 7e18be9beef2 ("net/txgbe: add device arguments for FDIR")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
doc/guides/nics/txgbe.rst | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst
index c09cc3923f..37cd467b1f 100644
--- a/doc/guides/nics/txgbe.rst
+++ b/doc/guides/nics/txgbe.rst
@@ -139,6 +139,16 @@ Please note that following ``devargs`` are only set for backplane NICs.
PHY parameter used for user debugging. Setting other values to
take effect requires setting the ``ffe_set``.
+- ``pkt-filter-size`` (default **0**)
+
+ Memory allocation for the flow director filter.
+ Default 0 for 64K mode, set 1 for 128K mode, set 2 for 256K mode.
+
+- ``pkt-filter-drop-queue`` (default **127**)
+
+ The drop queue number for packets that match the drop rule in flow director.
+ Valid values are from 0 to 127.
+
Driver compilation and testing
------------------------------
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.940338555 +0200
+++ 0072-doc-add-device-arguments-in-txgbe-guide.patch 2025-12-25 11:16:36.083985000 +0200
@@ -1 +1 @@
-From a443523d6ddf076c422c9ed1460fb3a4c5c9a05b Mon Sep 17 00:00:00 2001
+From c1ab06210d60a15ffa9761cbc1a9cb767d13b9aa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a443523d6ddf076c422c9ed1460fb3a4c5c9a05b ]
+
@@ -17 +19 @@
-index 953a43b139..44b60647a5 100644
+index c09cc3923f..37cd467b1f 100644
@@ -20 +22 @@
-@@ -147,6 +147,16 @@ Please note that following ``devargs`` are only set for backplane NICs.
+@@ -139,6 +139,16 @@ Please note that following ``devargs`` are only set for backplane NICs.
@@ -34 +36,2 @@
- Please note that following ``devargs`` are only set for Amber-Lite NICs.
+ Driver compilation and testing
+ ------------------------------
@@ -36 +38,0 @@
- - ``tx_headwb`` (default **1**)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/axgbe: fix build with GCC 16' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (70 preceding siblings ...)
2025-12-25 9:18 ` patch 'doc: add device arguments in txgbe guide' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/dpaa2: fix duplicate call of close' " Shani Peretz
` (28 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Venkat Kumar Ande; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/139796394d6d72b0aedfb53e415e95310031655e
Thanks.
Shani
---
From 139796394d6d72b0aedfb53e415e95310031655e Mon Sep 17 00:00:00 2001
From: Venkat Kumar Ande <venkatkumar.ande@amd.com>
Date: Thu, 13 Nov 2025 22:11:09 +0530
Subject: [PATCH] net/axgbe: fix build with GCC 16
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit dec46366290076afa65bc6b505b274e10e90f494 ]
Build warning reported for local variable set and not used on GCC-16.
Fix the issue by using the variable for missed register write operation.
../drivers/net/axgbe/axgbe_ethdev.c: In function ‘axgbe_timesync_disable’:
../drivers/net/axgbe/axgbe_ethdev.c:1744:22: warning:
variable ‘mac_tscr’ set but not used [-Wunused-but-set-variable=]
1744 | unsigned int mac_tscr = 0;
| ^~~~~~~~
Bugzilla ID: 1819
Fixes: e04449488fdb ("net/axgbe: support IEEE 1588 PTP")
Signed-off-by: Venkat Kumar Ande <venkatkumar.ande@amd.com>
---
drivers/net/axgbe/axgbe_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
index da45ebf45f..30134f81c1 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -1733,6 +1733,7 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
{
struct axgbe_port *pdata = dev->data->dev_private;
unsigned int mac_tscr = 0;
+ unsigned int value = 0;
/*disable timestamp for all pkts*/
AXGMAC_SET_BITS(mac_tscr, MAC_TSCR, TSENALL, 0);
@@ -1742,6 +1743,11 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
AXGMAC_SET_BITS(mac_tscr, MAC_TSCR, TSCFUPDT, 0);
/*disable time stamp*/
AXGMAC_SET_BITS(mac_tscr, MAC_TSCR, TSENA, 0);
+
+ value = AXGMAC_IOREAD(pdata, MAC_TSCR);
+ value |= mac_tscr;
+ AXGMAC_IOWRITE(pdata, MAC_TSCR, value);
+
return 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:39.986696871 +0200
+++ 0073-net-axgbe-fix-build-with-GCC-16.patch 2025-12-25 11:16:36.091794000 +0200
@@ -1 +1 @@
-From dec46366290076afa65bc6b505b274e10e90f494 Mon Sep 17 00:00:00 2001
+From 139796394d6d72b0aedfb53e415e95310031655e Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit dec46366290076afa65bc6b505b274e10e90f494 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 31d35ff182..cf3b0d9ef5 100644
+index da45ebf45f..30134f81c1 100644
@@ -31 +32 @@
-@@ -1742,6 +1742,7 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
+@@ -1733,6 +1733,7 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
@@ -39 +40 @@
-@@ -1751,6 +1752,11 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
+@@ -1742,6 +1743,11 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: fix duplicate call of close' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (71 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/axgbe: fix build with GCC 16' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix flex item link parsing' " Shani Peretz
` (27 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Maxime Leroy, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/a62ab6ec9095c5656155d16620ded958b60317a8
Thanks.
Shani
---
From a62ab6ec9095c5656155d16620ded958b60317a8 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Fri, 14 Nov 2025 11:54:51 +0530
Subject: [PATCH] net/dpaa2: fix duplicate call of close
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3b8225353ea3b9eb03df5dee94a037582d0d6748 ]
When rte_eth_dev_close() is called, it performs the following actions:
Calls dev->dev_ops->dev_close(), which in this case is dpaa2_dev_close().
Then calls rte_eth_dev_release_port(), which releases all device data
and sets dev->data to NULL.
Later, when rte_dev_remove() is called, the FSLMC bus invokes
dev->remove() — that is, rte_dpaa2_remove().
However, rte_dpaa2_remove() calls dpaa2_dev_close() again. Since dev->data
was already set to NULL by the previous call, this second invocation
causes a crash.
Fixes: 5964d36a2904 ("net/dpaa2: release port upon close")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Tested-by: Maxime Leroy <maxime@leroys.fr>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index da3719a373..a195c6f2ad 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -2945,14 +2945,22 @@ static int
rte_dpaa2_remove(struct rte_dpaa2_device *dpaa2_dev)
{
struct rte_eth_dev *eth_dev;
- int ret;
+ int ret = 0;
+
+ eth_dev = rte_eth_dev_allocated(dpaa2_dev->device.name);
+ if (eth_dev) {
+ ret = dpaa2_dev_close(eth_dev);
+ if (ret)
+ DPAA2_PMD_ERR("dpaa2_dev_close ret= %d", ret);
+
+ ret = rte_eth_dev_release_port(eth_dev);
+ }
- eth_dev = dpaa2_dev->eth_dev;
- dpaa2_dev_close(eth_dev);
dpaa2_valid_dev--;
- if (!dpaa2_valid_dev)
+ if (!dpaa2_valid_dev) {
rte_mempool_free(dpaa2_tx_sg_pool);
- ret = rte_eth_dev_release_port(eth_dev);
+ dpaa2_tx_sg_pool = NULL;
+ }
return ret;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.034835345 +0200
+++ 0074-net-dpaa2-fix-duplicate-call-of-close.patch 2025-12-25 11:16:36.099943000 +0200
@@ -1 +1 @@
-From 3b8225353ea3b9eb03df5dee94a037582d0d6748 Mon Sep 17 00:00:00 2001
+From a62ab6ec9095c5656155d16620ded958b60317a8 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3b8225353ea3b9eb03df5dee94a037582d0d6748 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 7da32ce856..fcda267e0b 100644
+index da3719a373..a195c6f2ad 100644
@@ -34 +35 @@
-@@ -3347,14 +3347,22 @@ static int
+@@ -2945,14 +2945,22 @@ static int
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/testpmd: fix flex item link parsing' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (72 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/dpaa2: fix duplicate call of close' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Shani Peretz
` (26 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Maayan Kashani; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/5acfbf1283c41f32ee8a0faa982025b444ce9cf1
Thanks.
Shani
---
From 5acfbf1283c41f32ee8a0faa982025b444ce9cf1 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 26 Nov 2025 16:13:59 +0200
Subject: [PATCH] app/testpmd: fix flex item link parsing
[ upstream commit 39454e245b ]
The flex_link_item_parse function was using FLEX_MAX_FLOW_PATTERN_LENGTH
for all memcpy operations regardless of the actual flow item type. This
could lead to copying incorrect amounts of data.
This patch enlarge data buffer to avoid the buffer overflow while
continue to report same buffer size to flow parse.
Fixes: 59f3a8a ("app/testpmd: add flex item commands")
Cc: stable@dpdk.org
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
---
app/test-pmd/cmd_flex_item.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/app/test-pmd/cmd_flex_item.c b/app/test-pmd/cmd_flex_item.c
index e6e1cefeb3..a799b31ffd 100644
--- a/app/test-pmd/cmd_flex_item.c
+++ b/app/test-pmd/cmd_flex_item.c
@@ -134,6 +134,7 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
struct rte_flow_attr *attr;
struct rte_flow_item *pattern;
struct rte_flow_action *actions;
+ size_t sz;
sprintf(flow_rule,
"flow create 0 pattern %s / end actions drop / end", src);
@@ -143,21 +144,38 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
if (ret)
return ret;
item->type = pattern->type;
+ switch (item->type) {
+ case RTE_FLOW_ITEM_TYPE_IPV4:
+ sz = sizeof(struct rte_flow_item_ipv4);
+ break;
+ case RTE_FLOW_ITEM_TYPE_IPV6:
+ sz = sizeof(struct rte_flow_item_ipv6);
+ break;
+ case RTE_FLOW_ITEM_TYPE_UDP:
+ sz = sizeof(struct rte_flow_item_udp);
+ break;
+ case RTE_FLOW_ITEM_TYPE_TCP:
+ sz = sizeof(struct rte_flow_item_tcp);
+ break;
+ default:
+ printf("Unsupported item type in specified in link\n");
+ return -EINVAL;
+ }
if (pattern->spec) {
ptr = (void *)(uintptr_t)item->spec;
- memcpy(ptr, pattern->spec, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->spec, sz);
} else {
item->spec = NULL;
}
if (pattern->mask) {
ptr = (void *)(uintptr_t)item->mask;
- memcpy(ptr, pattern->mask, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->mask, sz);
} else {
item->mask = NULL;
}
if (pattern->last) {
ptr = (void *)(uintptr_t)item->last;
- memcpy(ptr, pattern->last, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->last, sz);
} else {
item->last = NULL;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.081713393 +0200
+++ 0075-app-testpmd-fix-flex-item-link-parsing.patch 2025-12-25 11:16:36.104907000 +0200
@@ -1 +1 @@
-From 39454e245b125ae555bc5a3a058cc3c1e1280f82 Mon Sep 17 00:00:00 2001
+From 5acfbf1283c41f32ee8a0faa982025b444ce9cf1 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Sun, 16 Nov 2025 14:14:37 +0200
+Date: Wed, 26 Nov 2025 16:13:59 +0200
@@ -5,0 +6,2 @@
+[ upstream commit 39454e245b ]
+
@@ -10,5 +12,2 @@
-This patch adds a switch statement to determine the correct size based
-on the actual flow item type (IPv4, IPv6, UDP, TCP) and uses that size
-for the memcpy operations on spec, mask, and last fields.
-
-Also adds validation to reject unsupported item types.
+This patch enlarge data buffer to avoid the buffer overflow while
+continue to report same buffer size to flow parse.
@@ -16 +15 @@
-Fixes: 59f3a8acbcdb ("app/testpmd: add flex item commands")
+Fixes: 59f3a8a ("app/testpmd: add flex item commands")
@@ -21,2 +20,2 @@
- app/test-pmd/cmd_flex_item.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
+ app/test-pmd/cmd_flex_item.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
@@ -25 +24 @@
-index e6e1cefeb3..af6c087feb 100644
+index e6e1cefeb3..a799b31ffd 100644
@@ -28 +27,9 @@
-@@ -143,21 +143,22 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
+@@ -134,6 +134,7 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
+ struct rte_flow_attr *attr;
+ struct rte_flow_item *pattern;
+ struct rte_flow_action *actions;
++ size_t sz;
+
+ sprintf(flow_rule,
+ "flow create 0 pattern %s / end actions drop / end", src);
+@@ -143,21 +144,38 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
@@ -32,3 +39,18 @@
-- if (pattern->spec) {
-+ ret = rte_flow_conv(RTE_FLOW_CONV_OP_ITEM_MASK, NULL, 0, item, NULL);
-+ if ((ret > 0) && pattern->spec) {
++ switch (item->type) {
++ case RTE_FLOW_ITEM_TYPE_IPV4:
++ sz = sizeof(struct rte_flow_item_ipv4);
++ break;
++ case RTE_FLOW_ITEM_TYPE_IPV6:
++ sz = sizeof(struct rte_flow_item_ipv6);
++ break;
++ case RTE_FLOW_ITEM_TYPE_UDP:
++ sz = sizeof(struct rte_flow_item_udp);
++ break;
++ case RTE_FLOW_ITEM_TYPE_TCP:
++ sz = sizeof(struct rte_flow_item_tcp);
++ break;
++ default:
++ printf("Unsupported item type in specified in link\n");
++ return -EINVAL;
++ }
+ if (pattern->spec) {
@@ -37 +59 @@
-+ memcpy(ptr, pattern->spec, ret);
++ memcpy(ptr, pattern->spec, sz);
@@ -41,2 +63 @@
-- if (pattern->mask) {
-+ if ((ret > 0) && pattern->mask) {
+ if (pattern->mask) {
@@ -45 +66 @@
-+ memcpy(ptr, pattern->mask, ret);
++ memcpy(ptr, pattern->mask, sz);
@@ -49,2 +70 @@
-- if (pattern->last) {
-+ if ((ret > 0) && pattern->last) {
+ if (pattern->last) {
@@ -53 +73 @@
-+ memcpy(ptr, pattern->last, ret);
++ memcpy(ptr, pattern->last, sz);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix path selection for QinQ Tx offload' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (73 preceding siblings ...)
2025-12-25 9:18 ` patch 'app/testpmd: fix flex item link parsing' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/ice: fix statistics' " Shani Peretz
` (25 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/13c0e5bacbe088bc8912073660e6b6903731c34b
Thanks.
Shani
---
From 13c0e5bacbe088bc8912073660e6b6903731c34b Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Wed, 12 Nov 2025 11:57:26 +0000
Subject: [PATCH] net/ice: fix path selection for QinQ Tx offload
[ upstream commit 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 ]
The capabilities flag for the vector offload path include the QinQ
offload capability, but in fact the offload path lacks any ability to
create context descriptors. This means that it cannot insert multiple
vlan tags for QinQ support, so move the offload from the VECTOR_OFFLOAD
list to the NO_VECTOR list. Similarly, remove any check for the QinQ
mbuf flag in any packets being transmitted, since that offload is
invalid to request if the feature is not enabled.
Fixes: 808a17b3c1e6 ("net/ice: add Rx AVX512 offload path")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/ice/ice_rxtx_vec_common.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
index d745eda567..fa6db8f44f 100644
--- a/drivers/net/ice/ice_rxtx_vec_common.h
+++ b/drivers/net/ice/ice_rxtx_vec_common.h
@@ -249,6 +249,7 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
#define ICE_TX_NO_VECTOR_FLAGS ( \
RTE_ETH_TX_OFFLOAD_MULTI_SEGS | \
+ RTE_ETH_TX_OFFLOAD_QINQ_INSERT | \
RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM | \
RTE_ETH_TX_OFFLOAD_TCP_TSO | \
RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO | \
@@ -259,7 +260,6 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
#define ICE_TX_VECTOR_OFFLOAD ( \
RTE_ETH_TX_OFFLOAD_VLAN_INSERT | \
- RTE_ETH_TX_OFFLOAD_QINQ_INSERT | \
RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
RTE_ETH_TX_OFFLOAD_SCTP_CKSUM | \
RTE_ETH_TX_OFFLOAD_UDP_CKSUM | \
@@ -415,8 +415,8 @@ ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
*txd_hi |= ((uint64_t)td_offset) << ICE_TXD_QW1_OFFSET_S;
- /* Tx VLAN/QINQ insertion Offload */
- if (ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ)) {
+ /* Tx VLAN insertion Offload */
+ if (ol_flags & RTE_MBUF_F_TX_VLAN) {
td_cmd |= ICE_TX_DESC_CMD_IL2TAG1;
*txd_hi |= ((uint64_t)tx_pkt->vlan_tci <<
ICE_TXD_QW1_L2TAG1_S);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.128424489 +0200
+++ 0076-net-ice-fix-path-selection-for-QinQ-Tx-offload.patch 2025-12-25 11:16:36.110780000 +0200
@@ -1 +1 @@
-From 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 Mon Sep 17 00:00:00 2001
+From 13c0e5bacbe088bc8912073660e6b6903731c34b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/net/intel/ice/ice_rxtx_vec_common.h | 6 +++---
+ drivers/net/ice/ice_rxtx_vec_common.h | 6 +++---
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ice/ice_rxtx_vec_common.h b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-index a24694c0b1..39581cb7ae 100644
---- a/drivers/net/intel/ice/ice_rxtx_vec_common.h
-+++ b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-@@ -53,6 +53,7 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
+diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
+index d745eda567..fa6db8f44f 100644
+--- a/drivers/net/ice/ice_rxtx_vec_common.h
++++ b/drivers/net/ice/ice_rxtx_vec_common.h
+@@ -249,6 +249,7 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
@@ -35 +36 @@
-@@ -64,7 +65,6 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
+@@ -259,7 +260,6 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
@@ -43 +44 @@
-@@ -195,8 +195,8 @@ ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
+@@ -415,8 +415,8 @@ ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/ice: fix statistics' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (74 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/idpf: fix queue setup with TSO offload' " Shani Peretz
` (24 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Zhichao Zeng; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9187078df1e0a054b3ea5156abbdf3a02992e82b
Thanks.
Shani
---
From 9187078df1e0a054b3ea5156abbdf3a02992e82b Mon Sep 17 00:00:00 2001
From: Zhichao Zeng <zhichaox.zeng@intel.com>
Date: Thu, 13 Nov 2025 15:47:10 +0800
Subject: [PATCH] net/ice: fix statistics
[ upstream commit 9ac3d9cc61bc70fdc6dff14969a7111a673be932 ]
The statistics contain 40 bits. The lower 32 bits are read first, followed
by the upper 8 bits.
In some cases, after reading the lower 32 bits, a carry occurs from
the lower bits, which causes the final statistics to be incorrect.
This commit fixes this issue.
Fixes: a37bde56314d ("net/ice: support statistics")
Signed-off-by: Zhichao Zeng <zhichaox.zeng@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_ethdev.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 91609b948d..fc6fc1a3e8 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -5710,10 +5710,16 @@ ice_stat_update_40(struct ice_hw *hw,
uint64_t *stat)
{
uint64_t new_data;
+ uint32_t lo_old, hi, lo;
- new_data = (uint64_t)ICE_READ_REG(hw, loreg);
- new_data |= (uint64_t)(ICE_READ_REG(hw, hireg) & ICE_8_BIT_MASK) <<
- ICE_32_BIT_WIDTH;
+ do {
+ lo_old = ICE_READ_REG(hw, loreg);
+ hi = ICE_READ_REG(hw, hireg);
+ lo = ICE_READ_REG(hw, loreg);
+ } while (lo_old > lo);
+
+ new_data = (uint64_t)lo;
+ new_data |= (uint64_t)(hi & ICE_8_BIT_MASK) << ICE_32_BIT_WIDTH;
if (!offset_loaded)
*offset = new_data;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.175420617 +0200
+++ 0077-net-ice-fix-statistics.patch 2025-12-25 11:16:36.123946000 +0200
@@ -1 +1 @@
-From 9ac3d9cc61bc70fdc6dff14969a7111a673be932 Mon Sep 17 00:00:00 2001
+From 9187078df1e0a054b3ea5156abbdf3a02992e82b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9ac3d9cc61bc70fdc6dff14969a7111a673be932 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/net/intel/ice/ice_ethdev.c | 12 +++++++++---
+ drivers/net/ice/ice_ethdev.c | 12 +++++++++---
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
-index c1d92435d1..c721d135f5 100644
---- a/drivers/net/intel/ice/ice_ethdev.c
-+++ b/drivers/net/intel/ice/ice_ethdev.c
-@@ -6417,10 +6417,16 @@ ice_stat_update_40(struct ice_hw *hw,
+diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
+index 91609b948d..fc6fc1a3e8 100644
+--- a/drivers/net/ice/ice_ethdev.c
++++ b/drivers/net/ice/ice_ethdev.c
+@@ -5710,10 +5710,16 @@ ice_stat_update_40(struct ice_hw *hw,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/idpf: fix queue setup with TSO offload' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (75 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/ice: fix statistics' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Shani Peretz
` (23 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Praveen Shetty, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/64a5497ea6a8f61b894d8a6318e915c8a4a41353
Thanks.
Shani
---
From 64a5497ea6a8f61b894d8a6318e915c8a4a41353 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Thu, 13 Nov 2025 14:50:21 +0000
Subject: [PATCH] net/idpf: fix queue setup with TSO offload
[ upstream commit f36df6a25569102afa911b74d8613a5e7267f038 ]
The TCP_TSO Tx offload was missing from the conversion function. This
was effectively taking the request for that offload out of consideration
when selecting the Tx function. As a result a vector path which does not
support TSO could be chosen when that offload was requested, when
instead the scalar path should be chosen which does support that
offload. Fix this by adding the TSO offload to the conversion function.
Fixes: c008a5e740bd ("common/idpf: add queue setup/release")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Praveen Shetty <praveen.shetty@intel.com>
---
drivers/net/idpf/idpf_rxtx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/idpf/idpf_rxtx.c b/drivers/net/idpf/idpf_rxtx.c
index 64f2235580..5dff445a3c 100644
--- a/drivers/net/idpf/idpf_rxtx.c
+++ b/drivers/net/idpf/idpf_rxtx.c
@@ -42,6 +42,8 @@ idpf_tx_offload_convert(uint64_t offload)
ol |= IDPF_TX_OFFLOAD_TCP_CKSUM;
if ((offload & RTE_ETH_TX_OFFLOAD_SCTP_CKSUM) != 0)
ol |= IDPF_TX_OFFLOAD_SCTP_CKSUM;
+ if ((offload & RTE_ETH_TX_OFFLOAD_TCP_TSO) != 0)
+ ol |= IDPF_TX_OFFLOAD_TCP_TSO;
if ((offload & RTE_ETH_TX_OFFLOAD_MULTI_SEGS) != 0)
ol |= IDPF_TX_OFFLOAD_MULTI_SEGS;
if ((offload & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) != 0)
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.224317637 +0200
+++ 0078-net-idpf-fix-queue-setup-with-TSO-offload.patch 2025-12-25 11:16:36.129951000 +0200
@@ -1 +1 @@
-From f36df6a25569102afa911b74d8613a5e7267f038 Mon Sep 17 00:00:00 2001
+From 64a5497ea6a8f61b894d8a6318e915c8a4a41353 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f36df6a25569102afa911b74d8613a5e7267f038 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/idpf/idpf_rxtx.c | 2 ++
+ drivers/net/idpf/idpf_rxtx.c | 2 ++
@@ -22,4 +23,4 @@
-diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
-index 1c725065df..4796d8b862 100644
---- a/drivers/net/intel/idpf/idpf_rxtx.c
-+++ b/drivers/net/intel/idpf/idpf_rxtx.c
+diff --git a/drivers/net/idpf/idpf_rxtx.c b/drivers/net/idpf/idpf_rxtx.c
+index 64f2235580..5dff445a3c 100644
+--- a/drivers/net/idpf/idpf_rxtx.c
++++ b/drivers/net/idpf/idpf_rxtx.c
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/iavf: fix check for PF Rx timestamp support' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (76 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/idpf: fix queue setup with TSO offload' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/iavf: fix Rx timestamp validity check' " Shani Peretz
` (22 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jacob Keller; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b7040000eaaf428f34ae71092a01ad3ae04060df
Thanks.
Shani
---
From b7040000eaaf428f34ae71092a01ad3ae04060df Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Thu, 13 Nov 2025 13:33:44 -0800
Subject: [PATCH] net/iavf: fix check for PF Rx timestamp support
[ upstream commit d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 ]
The iavf driver has support for hardware Rx timestamps since commit
b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor").
To enable this, the VF must first negotiate PTP capabilities with the PF
by sending the VIRTCHNL_OP_1588_PTP_GET_CAPS command, with the requested
capabilities. The PF will respond with the actually supported subset of
capabilities.
The PF may not actually enable Rx timestamping, even if it reports the
overall PTP capability support. If this happens, the iavf driver logic
will incorrectly report that Rx timestamps can be enabled despite being
rejected by the PF.
This is unlikely in practice, as most PFs which support the
VIRTCHNL_VF_CAP_PTP will support Rx timestamping. However, there are
some cases where this may not be true.
Check that the PF actually reports the Rx timestamping capability
instead of assuming it is enabled. Doing so prevents the DPDK
application from attempting to enable Rx timestamps when they won't
actually be enabled.
Fixes: b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 391ba2c812..83125c5f15 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1166,7 +1166,8 @@ iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_CRC)
dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_KEEP_CRC;
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_PTP)
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_PTP &&
+ vf->ptp_caps & VIRTCHNL_1588_PTP_CAP_RX_TSTAMP)
dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_TIMESTAMP;
if (iavf_ipsec_crypto_supported(adapter)) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.268609303 +0200
+++ 0079-net-iavf-fix-check-for-PF-Rx-timestamp-support.patch 2025-12-25 11:16:36.138888000 +0200
@@ -1 +1 @@
-From d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 Mon Sep 17 00:00:00 2001
+From b7040000eaaf428f34ae71092a01ad3ae04060df Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 ]
+
@@ -29 +30,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
- drivers/net/intel/iavf/iavf_ethdev.c | 3 ++-
+ drivers/net/iavf/iavf_ethdev.c | 3 ++-
@@ -36,5 +37,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index 15e49fe248..3ef766de47 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
-@@ -1177,7 +1177,8 @@ iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 391ba2c812..83125c5f15 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
+@@ -1166,7 +1166,8 @@ iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
@@ -49 +50 @@
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN_V2 &&
+ if (iavf_ipsec_crypto_supported(adapter)) {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/iavf: fix Rx timestamp validity check' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (77 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Shani Peretz
` (21 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Jacob Keller; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b8ba8b09a5c1582f94de3d0d7fb1d487e4137554
Thanks.
Shani
---
From b8ba8b09a5c1582f94de3d0d7fb1d487e4137554 Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Thu, 13 Nov 2025 13:33:45 -0800
Subject: [PATCH] net/iavf: fix Rx timestamp validity check
[ upstream commit dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 ]
When reporting an Rx timestamp from the receive descriptor, the iavf
driver does not check the validity bit in the time_stamp_low field. In
the event that hardware does not capture a receive timestamp for any
reason, this valid bit is unset, and the timestamp value in the
descriptor is zeroed out.
The iavf driver ignores this and passes the zero value into the
iavf_tstamp_convert_32b_64b function regardless, and proceeds to treat
the result as a valid timestamp.
Instead of reporting a zero timestamp which users can clearly interpret
as invalid, the raw 0 value from the descriptor is "extended" to the
64-bit timestamp. This results in values which are not immediately
obvious as invalid to users:
timestamp 1760629088881475583
timestamp 1760629088881475583
timestamp 1760629088881475583
First, if the value is printed in base 10 it is not immediately obvious
that the lower 32 bits are zero. Second, multiple packets in sequence
will receive the same "timestamp".
This occurs because of the timestamp extension logic. The receive
descriptor timestamps are 40 bits, with 32 bits of nanosecond precision,
7 bits of subnanosecond precision, and 1 validity bit. The
sub-nanosecond precision bits are discarded. To obtain a 64-bit
timestamp, the upper 32 bits are calculated from the lower 32-bits and a
snapshot of the PHC timer that is captured recently (within ~2 seconds
of the packet timestamp). This enables reporting proper full 64-bit
timestamps without needing to store all 64 bits in the receive
descriptor.
However, when timestamps are not working properly, the raw 'zero' value
is extended regardless of whether hardware indicated it was a valid
timestamp. As a result, users can see what appear at a glance as valid
timestamps. However, they will not match the packet reception time, and
will only update when the upper bits would roll over. This occurs every
2^32 seconds, or approximately once every 4 seconds.
Instead of reporting bogus extended timestamp values which could confuse
user applications, check the validity bit and only report a timestamp of
the valid bit is set. This matches the implementation used in the Linux
PF driver.
Fixes: b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/iavf/iavf_rxtx.c | 9 ++++++---
drivers/net/iavf/iavf_rxtx.h | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 73418f2830..62ca7d1051 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -1622,7 +1622,8 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
rxd_to_pkt_fields_ops[rxq->rxdid](rxq, rxm, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxd.wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high));
@@ -1791,7 +1792,8 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
rxd_to_pkt_fields_ops[rxq->rxdid](rxq, first_seg, &rxd);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxd.wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high));
@@ -2076,7 +2078,8 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq,
stat_err0 = rte_le_to_cpu_16(rxdp[j].wb.status_error0);
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxdp[j].wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxdp[j].wb.flex_ts.ts_high));
diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
index d6731327f6..fccee0811c 100644
--- a/drivers/net/iavf/iavf_rxtx.h
+++ b/drivers/net/iavf/iavf_rxtx.h
@@ -632,6 +632,9 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
/* for iavf_32b_rx_flex_desc.pkt_len member */
#define IAVF_RX_FLX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
+/* Valid indicator bit for the time_stamp_low field */
+#define IAVF_RX_FLX_DESC_TS_VALID (0x1UL)
+
int iavf_dev_rx_queue_setup(struct rte_eth_dev *dev,
uint16_t queue_idx,
uint16_t nb_desc,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.316664508 +0200
+++ 0080-net-iavf-fix-Rx-timestamp-validity-check.patch 2025-12-25 11:16:36.151840000 +0200
@@ -1 +1 @@
-From dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 Mon Sep 17 00:00:00 2001
+From b8ba8b09a5c1582f94de3d0d7fb1d487e4137554 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 ]
+
@@ -52 +53,0 @@
-Cc: stable@dpdk.org
@@ -57,2 +58,2 @@
- drivers/net/intel/iavf/iavf_rxtx.c | 9 ++++++---
- drivers/net/intel/iavf/iavf_rxtx.h | 3 +++
+ drivers/net/iavf/iavf_rxtx.c | 9 ++++++---
+ drivers/net/iavf/iavf_rxtx.h | 3 +++
@@ -61,5 +62,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index ea49059f83..d8662fd815 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -1582,7 +1582,8 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index 73418f2830..62ca7d1051 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -1622,7 +1622,8 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
@@ -75 +76 @@
-@@ -1751,7 +1752,8 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1791,7 +1792,8 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
@@ -85 +86 @@
-@@ -2036,7 +2038,8 @@ iavf_rx_scan_hw_ring_flex_rxd(struct ci_rx_queue *rxq,
+@@ -2076,7 +2078,8 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq,
@@ -95,5 +96,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.h b/drivers/net/intel/iavf/iavf_rxtx.h
-index 5c9339b99f..8efb3bd04e 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.h
-+++ b/drivers/net/intel/iavf/iavf_rxtx.h
-@@ -504,6 +504,9 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
+diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
+index d6731327f6..fccee0811c 100644
+--- a/drivers/net/iavf/iavf_rxtx.h
++++ b/drivers/net/iavf/iavf_rxtx.h
+@@ -632,6 +632,9 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'common/cnxk: fix max number of SQB buffers in clean up' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (78 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/iavf: fix Rx timestamp validity check' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'common/cnxk: fix null SQ access' " Shani Peretz
` (20 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Sunil Kumar Kori; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3c8e59d1805953923dad0747eec43299a9edbc79
Thanks.
Shani
---
From 3c8e59d1805953923dad0747eec43299a9edbc79 Mon Sep 17 00:00:00 2001
From: Sunil Kumar Kori <skori@marvell.com>
Date: Thu, 13 Nov 2025 10:07:57 +0530
Subject: [PATCH] common/cnxk: fix max number of SQB buffers in clean up
[ upstream commit f3c15bb6062475a62451c62ca2c5c9a5e12706c8 ]
By default, SQB pool is created with max (512 buffers) +
extra threshold buffers and aura limit is set to 512 + thr.
But while clean up, aura limit is reset to MAX (512 buffers)
only before destroying the pool.
Hence while destroying the pool, only 512 buffers are cleaned
from aura and extra threshold buffers are left as it is.
At later stage if same SQB pool is created then H/W
throws error for extra threshold buffers that it is already
in pool.
Fixes: 780f90e951a5 ("common/cnxk: restore NIX SQB pool limit before destroy")
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
drivers/common/cnxk/roc_nix_queue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c
index 4ffc3a70da..903a7148e3 100644
--- a/drivers/common/cnxk/roc_nix_queue.c
+++ b/drivers/common/cnxk/roc_nix_queue.c
@@ -1474,7 +1474,7 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
/* Restore limit to max SQB count that the pool was created
* for aura drain to succeed.
*/
- roc_npa_aura_limit_modify(sq->aura_handle, NIX_MAX_SQB);
+ roc_npa_aura_limit_modify(sq->aura_handle, sq->aura_sqb_bufs);
rc |= roc_npa_pool_destroy(sq->aura_handle);
plt_free(sq->fc);
plt_free(sq->sqe_mem);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.365180271 +0200
+++ 0081-common-cnxk-fix-max-number-of-SQB-buffers-in-clean-u.patch 2025-12-25 11:16:36.160882000 +0200
@@ -1 +1 @@
-From f3c15bb6062475a62451c62ca2c5c9a5e12706c8 Mon Sep 17 00:00:00 2001
+From 3c8e59d1805953923dad0747eec43299a9edbc79 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3c15bb6062475a62451c62ca2c5c9a5e12706c8 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index e59cd77538..1de6e51c5e 100644
+index 4ffc3a70da..903a7148e3 100644
@@ -31 +32 @@
-@@ -2057,7 +2057,7 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
+@@ -1474,7 +1474,7 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'common/cnxk: fix null SQ access' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (79 preceding siblings ...)
2025-12-25 9:18 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/cnxk: fix default meter pre-color' " Shani Peretz
` (19 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Satha Rao; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/bcb8184dd878ef68086d56b4781d803fb901bbf5
Thanks.
Shani
---
From bcb8184dd878ef68086d56b4781d803fb901bbf5 Mon Sep 17 00:00:00 2001
From: Satha Rao <skoteshwar@marvell.com>
Date: Thu, 13 Nov 2025 10:08:01 +0530
Subject: [PATCH] common/cnxk: fix null SQ access
[ upstream commit 52ff61c2ca114691d74546f5ce16e8a7ebd164ae ]
Condition to check SQ is non NULL before access. Also pktio locks
are simplified while doing threshold_profile config.
Fixes: 90a903ffa6eb ("common/cnxk: split NIX TM hierarchy enable API")
Signed-off-by: Satha Rao <skoteshwar@marvell.com>
---
drivers/common/cnxk/roc_nix_tm_ops.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/common/cnxk/roc_nix_tm_ops.c b/drivers/common/cnxk/roc_nix_tm_ops.c
index c1b91ad92f..79e1054c36 100644
--- a/drivers/common/cnxk/roc_nix_tm_ops.c
+++ b/drivers/common/cnxk/roc_nix_tm_ops.c
@@ -606,6 +606,13 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
sq_id = node->id;
sq = nix->sqs[sq_id];
+ if (!sq) {
+ plt_err("nb_rxq %d nb_txq %d sq_id %d lvl %d", nix->nb_rx_queues,
+ nix->nb_tx_queues, sq_id, node->lvl);
+ roc_nix_tm_dump(roc_nix, NULL);
+ roc_nix_dump(roc_nix, NULL);
+ return NIX_ERR_TM_INVALID_NODE;
+ }
rc = roc_nix_tm_sq_aura_fc(sq, true);
if (rc) {
plt_err("TM sw xon failed on SQ %u, rc=%d", node->id,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.409892038 +0200
+++ 0082-common-cnxk-fix-null-SQ-access.patch 2025-12-25 11:16:36.168818000 +0200
@@ -1 +1 @@
-From 52ff61c2ca114691d74546f5ce16e8a7ebd164ae Mon Sep 17 00:00:00 2001
+From bcb8184dd878ef68086d56b4781d803fb901bbf5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 52ff61c2ca114691d74546f5ce16e8a7ebd164ae ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 09d014a276..230e9b72f6 100644
+index c1b91ad92f..79e1054c36 100644
@@ -21 +22 @@
-@@ -624,6 +624,13 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
+@@ -606,6 +606,13 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
@@ -32 +33 @@
- rc = roc_nix_sq_ena_dis(sq, true);
+ rc = roc_nix_tm_sq_aura_fc(sq, true);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/cnxk: fix default meter pre-color' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (80 preceding siblings ...)
2025-12-25 9:18 ` patch 'common/cnxk: fix null SQ access' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Shani Peretz
` (18 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Aarnav JP; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/457e991d5e3d1f244747b2a6fa6eb0b11aa22e77
Thanks.
Shani
---
From 457e991d5e3d1f244747b2a6fa6eb0b11aa22e77 Mon Sep 17 00:00:00 2001
From: Aarnav JP <ajp@marvell.com>
Date: Thu, 13 Nov 2025 10:08:08 +0530
Subject: [PATCH] net/cnxk: fix default meter pre-color
[ upstream commit b595d05bf739b5330cbfca00bdb984edea579a57 ]
While converting to HW specific icolor, check for invalid
default pre color.
Fixes: ac35d4bf4cd6 ("net/cnxk: support ingress meter pre-color")
Signed-off-by: Aarnav JP <ajp@marvell.com>
---
drivers/net/cnxk/cnxk_ethdev_mtr.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c
index edeca6dcc3..992e2d446e 100644
--- a/drivers/net/cnxk/cnxk_ethdev_mtr.c
+++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c
@@ -1261,7 +1261,13 @@ nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg)
cfg->alg = alg_map[profile->profile.alg];
cfg->lmode = profile->profile.packet_mode;
- cfg->icolor = color_map[mtr->params.default_input_color];
+ int idx = mtr->params.default_input_color;
+
+ /* Index validation */
+ if (idx >= RTE_COLORS)
+ cfg->icolor = ROC_NIX_BPF_COLOR_GREEN;
+ else
+ cfg->icolor = color_map[idx];
switch (RTE_MTR_COLOR_IN_PROTO_OUTER_IP) {
case RTE_MTR_COLOR_IN_PROTO_OUTER_IP:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.456842156 +0200
+++ 0083-net-cnxk-fix-default-meter-pre-color.patch 2025-12-25 11:16:36.173865000 +0200
@@ -1 +1 @@
-From b595d05bf739b5330cbfca00bdb984edea579a57 Mon Sep 17 00:00:00 2001
+From 457e991d5e3d1f244747b2a6fa6eb0b11aa22e77 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b595d05bf739b5330cbfca00bdb984edea579a57 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'crypto/qat: fix CCM request descriptor hash state size' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (81 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/cnxk: fix default meter pre-color' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Shani Peretz
` (17 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Emma Finn; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3ecb5987cc7b548854f44d5389fad62020c18793
Thanks.
Shani
---
From 3ecb5987cc7b548854f44d5389fad62020c18793 Mon Sep 17 00:00:00 2001
From: Emma Finn <emma.finn@intel.com>
Date: Wed, 12 Nov 2025 10:19:10 +0000
Subject: [PATCH] crypto/qat: fix CCM request descriptor hash state size
[ upstream commit 3ffcfc48040a076643ec58c5f53b77069305afda ]
The hash_state_sz field in the QAT request descriptor for AES-CCM
operations was incorrectly set to the digest length. According to
the QAT firmware specification, this field should contain the
length of AAD in quadwords for CCM operations.
Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")
Signed-off-by: Emma Finn <emma.finn@intel.com>
---
drivers/crypto/qat/qat_sym_session.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index 4002593df6..368702838b 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -2595,7 +2595,8 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
hash->auth_counter.counter = 0;
hash_cd_ctrl->outer_prefix_sz = digestsize;
- auth_param->hash_state_sz = digestsize;
+ auth_param->hash_state_sz = (RTE_ALIGN_CEIL(auth_param->u2.aad_sz,
+ ICP_QAT_HW_CCM_AAD_ALIGNMENT) >> 3);
memcpy(cdesc->cd_cur_ptr + state1_size, authkey, authkeylen);
break;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.503933141 +0200
+++ 0084-crypto-qat-fix-CCM-request-descriptor-hash-state-siz.patch 2025-12-25 11:16:36.182843000 +0200
@@ -1 +1 @@
-From 3ffcfc48040a076643ec58c5f53b77069305afda Mon Sep 17 00:00:00 2001
+From 3ecb5987cc7b548854f44d5389fad62020c18793 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3ffcfc48040a076643ec58c5f53b77069305afda ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 98ab82ffb3..2ba4fc0a3a 100644
+index 4002593df6..368702838b 100644
@@ -23 +24 @@
-@@ -2774,7 +2774,8 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
+@@ -2595,7 +2595,8 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/dpaa2: remove ethdev pointer from bus device' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (82 preceding siblings ...)
2025-12-25 9:18 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'app/flow-perf: fix rules array length' " Shani Peretz
` (16 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: David Marchand; +Cc: Hemant Agrawal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/a0ac9a8e85fc3f4da3e6e36827634e709a335d5b
Thanks.
Shani
---
From a0ac9a8e85fc3f4da3e6e36827634e709a335d5b Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 12 Nov 2025 10:10:46 +0100
Subject: [PATCH] net/dpaa2: remove ethdev pointer from bus device
[ upstream commit 603caa201d7fea95d9272aec5667cb4a23d0886d ]
This code was never used.
This leaves no user of the ethdev field in the fslmc device object.
Fixes: f023d059769f ("net/dpaa2: support recycle loopback port")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/fslmc/bus_fslmc_driver.h | 1 -
drivers/net/dpaa2/dpaa2_ethdev.c | 1 -
drivers/net/dpaa2/dpaa2_ethdev.h | 6 ----
drivers/net/dpaa2/dpaa2_recycle.c | 50 ----------------------------
4 files changed, 58 deletions(-)
diff --git a/drivers/bus/fslmc/bus_fslmc_driver.h b/drivers/bus/fslmc/bus_fslmc_driver.h
index 7ac5fe6ff1..32b4238f98 100644
--- a/drivers/bus/fslmc/bus_fslmc_driver.h
+++ b/drivers/bus/fslmc/bus_fslmc_driver.h
@@ -115,7 +115,6 @@ struct rte_dpaa2_device {
TAILQ_ENTRY(rte_dpaa2_device) next; /**< Next probed DPAA2 device. */
struct rte_device device; /**< Inherit core device */
union {
- struct rte_eth_dev *eth_dev; /**< ethernet device */
struct rte_cryptodev *cryptodev; /**< Crypto Device */
struct rte_dma_dev *dmadev; /**< DMA Device */
struct rte_rawdev *rawdev; /**< Raw Device */
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index a195c6f2ad..fe8689ae05 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -2909,7 +2909,6 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
eth_dev->device = &dpaa2_dev->device;
- dpaa2_dev->eth_dev = eth_dev;
eth_dev->data->rx_mbuf_alloc_failed = 0;
if (dpaa2_drv->drv_flags & RTE_DPAA2_DRV_INTR_LSC)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index 9feb631d5f..befd2dabe6 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -306,10 +306,4 @@ int dpaa2_timesync_read_tx_timestamp(struct rte_eth_dev *dev,
int dpaa2_dev_recycle_config(struct rte_eth_dev *eth_dev);
int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
-int dpaa2_dev_recycle_qp_setup(struct rte_dpaa2_device *dpaa2_dev,
- uint16_t qidx, uint64_t cntx,
- eth_rx_burst_t tx_lpbk, eth_tx_burst_t rx_lpbk,
- struct dpaa2_queue **txq,
- struct dpaa2_queue **rxq);
-
#endif /* _DPAA2_ETHDEV_H */
diff --git a/drivers/net/dpaa2/dpaa2_recycle.c b/drivers/net/dpaa2/dpaa2_recycle.c
index 4fde9b95a0..f68653e0f4 100644
--- a/drivers/net/dpaa2/dpaa2_recycle.c
+++ b/drivers/net/dpaa2/dpaa2_recycle.c
@@ -730,53 +730,3 @@ dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev)
return ret;
}
-
-int
-dpaa2_dev_recycle_qp_setup(struct rte_dpaa2_device *dpaa2_dev,
- uint16_t qidx, uint64_t cntx,
- eth_rx_burst_t tx_lpbk, eth_tx_burst_t rx_lpbk,
- struct dpaa2_queue **txq,
- struct dpaa2_queue **rxq)
-{
- struct rte_eth_dev *dev;
- struct rte_eth_dev_data *data;
- struct dpaa2_queue *txq_tmp;
- struct dpaa2_queue *rxq_tmp;
- struct dpaa2_dev_priv *priv;
-
- dev = dpaa2_dev->eth_dev;
- data = dev->data;
- priv = data->dev_private;
-
- if (!(priv->flags & DPAA2_TX_LOOPBACK_MODE) &&
- (tx_lpbk || rx_lpbk)) {
- DPAA2_PMD_ERR("%s is NOT recycle device!", data->name);
-
- return -EINVAL;
- }
-
- if (qidx >= data->nb_rx_queues || qidx >= data->nb_tx_queues)
- return -EINVAL;
-
- rte_spinlock_lock(&priv->lpbk_qp_lock);
-
- if (tx_lpbk)
- dev->tx_pkt_burst = tx_lpbk;
-
- if (rx_lpbk)
- dev->rx_pkt_burst = rx_lpbk;
-
- txq_tmp = data->tx_queues[qidx];
- txq_tmp->lpbk_cntx = cntx;
- rxq_tmp = data->rx_queues[qidx];
- rxq_tmp->lpbk_cntx = cntx;
-
- if (txq)
- *txq = txq_tmp;
- if (rxq)
- *rxq = rxq_tmp;
-
- rte_spinlock_unlock(&priv->lpbk_qp_lock);
-
- return 0;
-}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.549238775 +0200
+++ 0085-net-dpaa2-remove-ethdev-pointer-from-bus-device.patch 2025-12-25 11:16:36.201835000 +0200
@@ -1 +1 @@
-From 603caa201d7fea95d9272aec5667cb4a23d0886d Mon Sep 17 00:00:00 2001
+From a0ac9a8e85fc3f4da3e6e36827634e709a335d5b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 603caa201d7fea95d9272aec5667cb4a23d0886d ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index efa88754a7..094f885f59 100644
+index 7ac5fe6ff1..32b4238f98 100644
@@ -26 +27 @@
-@@ -98,7 +98,6 @@ struct rte_dpaa2_device {
+@@ -115,7 +115,6 @@ struct rte_dpaa2_device {
@@ -30,0 +32,2 @@
+ struct rte_cryptodev *cryptodev; /**< Crypto Device */
+ struct rte_dma_dev *dmadev; /**< DMA Device */
@@ -32,2 +34,0 @@
- };
- enum rte_dpaa2_dev_type dev_type; /**< Device Type */
@@ -35 +36 @@
-index 1dd4a1e32b..fdf3e0f220 100644
+index a195c6f2ad..fe8689ae05 100644
@@ -38 +39 @@
-@@ -3351,7 +3351,6 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
+@@ -2909,7 +2909,6 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
@@ -47 +48 @@
-index 87a94bc15b..86b3022ddb 100644
+index 9feb631d5f..befd2dabe6 100644
@@ -50,3 +51 @@
-@@ -531,12 +531,6 @@ int dpaa2_dev_recycle_config(struct rte_eth_dev *eth_dev);
- int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
- int dpaa2_soft_parser_loaded(void);
+@@ -306,10 +306,4 @@ int dpaa2_timesync_read_tx_timestamp(struct rte_eth_dev *dev,
@@ -53,0 +53,2 @@
+ int dpaa2_dev_recycle_config(struct rte_eth_dev *eth_dev);
+ int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
@@ -60,3 +61 @@
- void
- dpaa2_dev_mac_setup_stats(struct rte_eth_dev *dev);
-
+ #endif /* _DPAA2_ETHDEV_H */
@@ -64 +63 @@
-index 94a7e2a020..d1e21dd4d1 100644
+index 4fde9b95a0..f68653e0f4 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'app/flow-perf: fix rules array length' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (83 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix spurious CPU wakeups' " Shani Peretz
` (15 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Bing Zhao; +Cc: Dariusz Sosnowski, Wisam Jaddo, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/73b5c0cfe071d4effc25256704d27b6856e19e85
Thanks.
Shani
---
From 73b5c0cfe071d4effc25256704d27b6856e19e85 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Mon, 17 Nov 2025 09:28:58 +0200
Subject: [PATCH] app/flow-perf: fix rules array length
[ upstream commit a0b148048b3d9960788093b3b94c70af8f04136b ]
The array used to save the flow rules pointer was allocated with an
incorrect length. 1 more rule space should be appended but not 1 byte.
Fixes: 070316d01d3e ("app/flow-perf: add multi-core rule insertion and deletion")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Reviewed-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
---
app/test-flow-perf/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c
index e224ef6798..e8e415ef56 100644
--- a/app/test-flow-perf/main.c
+++ b/app/test-flow-perf/main.c
@@ -1404,7 +1404,7 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
global_actions[0] = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_JUMP);
flows_list = rte_zmalloc("flows_list",
- (sizeof(struct rte_flow *) * rules_count_per_core) + 1, 0);
+ (sizeof(struct rte_flow *) * (rules_count_per_core + 1)), 0);
if (flows_list == NULL)
rte_exit(EXIT_FAILURE, "No Memory available!\n");
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.600100792 +0200
+++ 0086-app-flow-perf-fix-rules-array-length.patch 2025-12-25 11:16:36.208854000 +0200
@@ -1 +1 @@
-From a0b148048b3d9960788093b3b94c70af8f04136b Mon Sep 17 00:00:00 2001
+From 73b5c0cfe071d4effc25256704d27b6856e19e85 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a0b148048b3d9960788093b3b94c70af8f04136b ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index b2084b93dd..a8876acf1f 100644
+index e224ef6798..e8e415ef56 100644
@@ -23 +24 @@
-@@ -1487,7 +1487,7 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
+@@ -1404,7 +1404,7 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix spurious CPU wakeups' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (84 preceding siblings ...)
2025-12-25 9:18 ` patch 'app/flow-perf: fix rules array length' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix send to kernel action resources release' " Shani Peretz
` (14 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Sivaprasad Tummala; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/601473b4dffb60a6ff279cdc32000cb681308448
Thanks.
Shani
---
From 601473b4dffb60a6ff279cdc32000cb681308448 Mon Sep 17 00:00:00 2001
From: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Date: Tue, 11 Nov 2025 03:40:57 +0000
Subject: [PATCH] net/mlx5: fix spurious CPU wakeups
[ upstream commit 750f635fc6a7ee287e076c5500ca97d77187676a ]
Previously, the PMD used a common monitor callback to determine
CQE ownership for power-aware polling. However, when a CQE contained
an invalid opcode (MLX5_CQE_INVALID), ownership bit was not reliable.
As a result, the monitor condition could falsely indicate CQE
availability and cause the CPU to wake up unnecessarily during
low traffic periods.
This resulted in spurious wakeups in monitor-wait mode and reduced
the expected power savings, as cores exited the sleep state even
when no valid CQEs were available.
This patch introduces a dedicated callback that skips invalid CQEs
and optimizes power efficiency by preventing false wakeups caused
by hardware-owned or invalid entries.
Fixes: a8f0df6bf98d ("net/mlx5: support power monitoring")
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
---
drivers/net/mlx5/mlx5_rx.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c
index 73d9f23a65..d704d34c75 100644
--- a/drivers/net/mlx5/mlx5_rx.c
+++ b/drivers/net/mlx5/mlx5_rx.c
@@ -294,6 +294,20 @@ mlx5_monitor_callback(const uint64_t value,
return (value & m) == v ? -1 : 0;
}
+static int
+mlx5_monitor_cqe_own_callback(const uint64_t value,
+ const uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ])
+{
+ const uint64_t m = opaque[CLB_MSK_IDX];
+ const uint64_t v = opaque[CLB_VAL_IDX];
+ const uint64_t sw_owned = ((value & m) == v);
+ const uint64_t opcode = MLX5_CQE_OPCODE(value);
+ const uint64_t valid_op = (opcode != MLX5_CQE_INVALID);
+
+ /* ownership bit is not valid for invalid opcode; CQE is HW owned */
+ return -(valid_op & sw_owned);
+}
+
int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
{
struct mlx5_rxq_data *rxq = rx_queue;
@@ -311,12 +325,13 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
pmc->addr = &cqe->validity_iteration_count;
pmc->opaque[CLB_VAL_IDX] = vic;
pmc->opaque[CLB_MSK_IDX] = MLX5_CQE_VIC_INIT;
+ pmc->fn = mlx5_monitor_callback;
} else {
pmc->addr = &cqe->op_own;
pmc->opaque[CLB_VAL_IDX] = !!idx;
pmc->opaque[CLB_MSK_IDX] = MLX5_CQE_OWNER_MASK;
+ pmc->fn = mlx5_monitor_cqe_own_callback;
}
- pmc->fn = mlx5_monitor_callback;
pmc->size = sizeof(uint8_t);
return 0;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.646042101 +0200
+++ 0087-net-mlx5-fix-spurious-CPU-wakeups.patch 2025-12-25 11:16:36.215835000 +0200
@@ -1 +1 @@
-From 750f635fc6a7ee287e076c5500ca97d77187676a Mon Sep 17 00:00:00 2001
+From 601473b4dffb60a6ff279cdc32000cb681308448 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 750f635fc6a7ee287e076c5500ca97d77187676a ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 420a03068d..ac663a978e 100644
+index 73d9f23a65..d704d34c75 100644
@@ -33 +34 @@
-@@ -295,6 +295,20 @@ mlx5_monitor_callback(const uint64_t value,
+@@ -294,6 +294,20 @@ mlx5_monitor_callback(const uint64_t value,
@@ -54 +55 @@
-@@ -312,12 +326,13 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
+@@ -311,12 +325,13 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix send to kernel action resources release' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (85 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix spurious CPU wakeups' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: release representor interrupt handler' " Shani Peretz
` (13 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/413cffe7f2a2192820221c062d7875d736841b0c
Thanks.
Shani
---
From 413cffe7f2a2192820221c062d7875d736841b0c Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 12 Nov 2025 18:24:40 +0200
Subject: [PATCH] net/mlx5: fix send to kernel action resources release
[ upstream commit 472b0994319198090e44a7c2de1e43f0a0e0a270 ]
In the MLX5 PMD hierarchy a flow table is bound to a domain object.
A domain object can be released if it does not reference any flow
tables.
When the PMD creates a send to kernel flow action, it also creates
a dedicated flow table for that action.
The PMD called for Rx, Tx and FDB domain destruction before it
destroyed send to kernel resources - flow action and flow table.
As a result, domain destruction could not be completed.
The patch moves send to kernel actions and tables destruction before
domain destruction.
Fixes: f31a141e6478 ("net/mlx5: add send to kernel action resource holder")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 40 ++++++++++++++++++++------------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 4059a1f52c..bcb127b192 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -708,6 +708,30 @@ error:
return err;
}
+#ifdef HAVE_MLX5DV_DR
+static void
+mlx5_destroy_send_to_kernel_action(struct mlx5_dev_ctx_shared *sh)
+{
+ int i;
+
+ for (i = 0; i < MLX5DR_TABLE_TYPE_MAX; i++) {
+ if (sh->send_to_kernel_action[i].action) {
+ void *action = sh->send_to_kernel_action[i].action;
+
+ mlx5_glue->destroy_flow_action(action);
+ sh->send_to_kernel_action[i].action = NULL;
+ }
+ if (sh->send_to_kernel_action[i].tbl) {
+ struct mlx5_flow_tbl_resource *tbl =
+ sh->send_to_kernel_action[i].tbl;
+
+ flow_dv_tbl_resource_release(sh, tbl);
+ sh->send_to_kernel_action[i].tbl = NULL;
+ }
+ }
+}
+#endif /* HAVE_MLX5DV_DR */
+
/**
* Destroy DR related data within private structure.
*
@@ -734,6 +758,7 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
priv->dev_data->port_id, i);
MLX5_ASSERT(LIST_EMPTY(&sh->shared_rxqs));
#ifdef HAVE_MLX5DV_DR
+ mlx5_destroy_send_to_kernel_action(sh);
if (sh->rx_domain) {
mlx5_glue->dr_destroy_domain(sh->rx_domain);
sh->rx_domain = NULL;
@@ -756,21 +781,6 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
mlx5_glue->destroy_flow_action(sh->pop_vlan_action);
sh->pop_vlan_action = NULL;
}
- for (i = 0; i < MLX5DR_TABLE_TYPE_MAX; i++) {
- if (sh->send_to_kernel_action[i].action) {
- void *action = sh->send_to_kernel_action[i].action;
-
- mlx5_glue->destroy_flow_action(action);
- sh->send_to_kernel_action[i].action = NULL;
- }
- if (sh->send_to_kernel_action[i].tbl) {
- struct mlx5_flow_tbl_resource *tbl =
- sh->send_to_kernel_action[i].tbl;
-
- flow_dv_tbl_resource_release(sh, tbl);
- sh->send_to_kernel_action[i].tbl = NULL;
- }
- }
#endif /* HAVE_MLX5DV_DR */
if (sh->default_miss_action)
mlx5_glue->destroy_flow_action
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.692809026 +0200
+++ 0088-net-mlx5-fix-send-to-kernel-action-resources-release.patch 2025-12-25 11:16:36.225854000 +0200
@@ -1 +1 @@
-From 472b0994319198090e44a7c2de1e43f0a0e0a270 Mon Sep 17 00:00:00 2001
+From 413cffe7f2a2192820221c062d7875d736841b0c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 472b0994319198090e44a7c2de1e43f0a0e0a270 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index dba3b61b68..8026a68702 100644
+index 4059a1f52c..bcb127b192 100644
@@ -33 +34 @@
-@@ -737,6 +737,30 @@ error:
+@@ -708,6 +708,30 @@ error:
@@ -64 +65 @@
-@@ -763,6 +787,7 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
+@@ -734,6 +758,7 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
@@ -72 +73 @@
-@@ -785,21 +810,6 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
+@@ -756,21 +781,6 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: release representor interrupt handler' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (86 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix send to kernel action resources release' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'common/mlx5: release unused mempool entries' " Shani Peretz
` (12 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Roi Dayan; +Cc: Suanming Mou, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/1142ffbc01477ff667251a0b6d4981eb3e51a1b1
Thanks.
Shani
---
From 1142ffbc01477ff667251a0b6d4981eb3e51a1b1 Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Wed, 12 Nov 2025 09:40:15 +0200
Subject: [PATCH] net/mlx5: release representor interrupt handler
[ upstream commit dbaed15366cb9aa66d7e0a580462a042ecfb602f ]
The cited commit removed the representor interrupt
handler cleanup by mistake.
Fixes: 5cf0707fc7e9 ("net/mlx5: remove Rx queue data list from device")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 711781ed34..0352e7cc7f 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2278,6 +2278,11 @@ mlx5_dev_close(struct rte_eth_dev *dev)
/* Free the eCPRI flex parser resource. */
mlx5_flex_parser_ecpri_release(dev);
mlx5_flex_item_port_cleanup(dev);
+ if (priv->representor) {
+ /* Each representor has a dedicated interrupts handler */
+ rte_intr_instance_free(dev->intr_handle);
+ dev->intr_handle = NULL;
+ }
mlx5_indirect_list_handles_release(dev);
#ifdef HAVE_MLX5_HWS_SUPPORT
flow_hw_destroy_vport_action(dev);
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.738921853 +0200
+++ 0089-net-mlx5-release-representor-interrupt-handler.patch 2025-12-25 11:16:36.235827000 +0200
@@ -1 +1 @@
-From dbaed15366cb9aa66d7e0a580462a042ecfb602f Mon Sep 17 00:00:00 2001
+From 1142ffbc01477ff667251a0b6d4981eb3e51a1b1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dbaed15366cb9aa66d7e0a580462a042ecfb602f ]
+
@@ -18 +20 @@
-index d39319efd1..1d07ca4293 100644
+index 711781ed34..0352e7cc7f 100644
@@ -21 +23 @@
-@@ -2443,6 +2443,11 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2278,6 +2278,11 @@ mlx5_dev_close(struct rte_eth_dev *dev)
@@ -32 +34 @@
- mlx5_nta_sample_context_free(dev);
+ flow_hw_destroy_vport_action(dev);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'common/mlx5: release unused mempool entries' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (87 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: release representor interrupt handler' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Shani Peretz
` (11 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Roi Dayan; +Cc: Gregory Etelson, Suanming Mou, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/f250ca6da812d784e73c6d0e1f7afcfee61b28da
Thanks.
Shani
---
From f250ca6da812d784e73c6d0e1f7afcfee61b28da Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Wed, 12 Nov 2025 09:41:31 +0200
Subject: [PATCH] common/mlx5: release unused mempool entries
[ upstream commit aef94343d3d0b7e11071747f0d2fd66546d7b724 ]
When creating a new mempool but assigning a shared entries
from a different mempool need to release the newly unused
allocated entries. Fix it.
Fixes: 8947eebc999e ("common/mlx5: fix shared memory region ranges allocation")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/common/mlx5/mlx5_common_mr.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/common/mlx5/mlx5_common_mr.c b/drivers/common/mlx5/mlx5_common_mr.c
index 85ec10d2ee..192c9b47f6 100644
--- a/drivers/common/mlx5/mlx5_common_mr.c
+++ b/drivers/common/mlx5/mlx5_common_mr.c
@@ -1710,18 +1710,24 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
* hugepage can be shared across mempools that also fit in it.
*/
if (share_hugepage) {
+ struct mlx5_mempool_mr *gc_mrs = NULL;
+
rte_rwlock_write_lock(&share_cache->rwlock);
LIST_FOREACH(mpr, &share_cache->mempool_reg_list, next) {
if (mpr->mrs[0].pmd_mr.addr == (void *)ranges[0].start)
break;
}
if (mpr != NULL) {
+ /* Releasing MRs here can create a dead-lock on share_cache->rwlock */
+ gc_mrs = new_mpr->mrs;
new_mpr->mrs = mpr->mrs;
mlx5_mempool_reg_attach(new_mpr);
LIST_INSERT_HEAD(&share_cache->mempool_reg_list,
new_mpr, next);
}
rte_rwlock_write_unlock(&share_cache->rwlock);
+ if (gc_mrs != NULL)
+ mlx5_free(gc_mrs);
if (mpr != NULL) {
DRV_LOG(DEBUG, "Shared MR %#x in PD %p for mempool %s with mempool %s",
mpr->mrs[0].pmd_mr.lkey, pd, mp->name,
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.785486100 +0200
+++ 0090-common-mlx5-release-unused-mempool-entries.patch 2025-12-25 11:16:36.243804000 +0200
@@ -1 +1 @@
-From aef94343d3d0b7e11071747f0d2fd66546d7b724 Mon Sep 17 00:00:00 2001
+From f250ca6da812d784e73c6d0e1f7afcfee61b28da Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit aef94343d3d0b7e11071747f0d2fd66546d7b724 ]
+
@@ -20 +22 @@
-index c41ffff2d5..8ed988dec9 100644
+index 85ec10d2ee..192c9b47f6 100644
@@ -23 +25 @@
-@@ -1717,18 +1717,24 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
+@@ -1710,18 +1710,24 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/hws: fix buddy memory allocation' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (88 preceding siblings ...)
2025-12-25 9:18 ` patch 'common/mlx5: release unused mempool entries' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix device start error handling' " Shani Peretz
` (10 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Nupur Uttarwar; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/0811aec6ad49ac3a5f3296af8ee97bb6b6ee709e
Thanks.
Shani
---
From 0811aec6ad49ac3a5f3296af8ee97bb6b6ee709e Mon Sep 17 00:00:00 2001
From: Nupur Uttarwar <nuttarwar@nvidia.com>
Date: Wed, 12 Nov 2025 09:47:39 +0200
Subject: [PATCH] net/mlx5/hws: fix buddy memory allocation
[ upstream commit 8d1fe10768d2749d00ceb7124866c61d31164380 ]
`buddy` was erroroneously declared as static. When multiple
threads call this routine, they set the same static variable
corrupting pool data and can cause potential double free when
releasing resources.
Fixes: b4dd7bcb0dcb ("net/mlx5/hws: add pool and buddy")
Signed-off-by: Nupur Uttarwar <nuttarwar@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/hws/mlx5dr_buddy.c | 1 +
drivers/net/mlx5/hws/mlx5dr_pool.c | 3 +--
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 1296224156..5298e5dd6a 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1078,6 +1078,7 @@ Nizan Zorea <nizan.zorea@intel.com>
Noa Ezra <noae@mellanox.com>
Nobuhiro Miki <nmiki@yahoo-corp.jp>
Norbert Ciosek <norbertx.ciosek@intel.com>
+Nupur Uttarwar <nuttarwar@nvidia.com>
Odi Assli <odia@nvidia.com>
Ofer Dagan <ofer.d@claroty.com>
Ognjen Joldzic <ognjen.joldzic@gmail.com>
diff --git a/drivers/net/mlx5/hws/mlx5dr_buddy.c b/drivers/net/mlx5/hws/mlx5dr_buddy.c
index 394ca71217..abfbdf1be5 100644
--- a/drivers/net/mlx5/hws/mlx5dr_buddy.c
+++ b/drivers/net/mlx5/hws/mlx5dr_buddy.c
@@ -147,6 +147,7 @@ void mlx5dr_buddy_cleanup(struct mlx5dr_buddy_mem *buddy)
simple_free(buddy->num_free);
simple_free(buddy->bits);
+ simple_free(buddy);
}
int mlx5dr_buddy_alloc_mem(struct mlx5dr_buddy_mem *buddy, int order)
diff --git a/drivers/net/mlx5/hws/mlx5dr_pool.c b/drivers/net/mlx5/hws/mlx5dr_pool.c
index b7b532c7cf..a99182e0ca 100644
--- a/drivers/net/mlx5/hws/mlx5dr_pool.c
+++ b/drivers/net/mlx5/hws/mlx5dr_pool.c
@@ -167,7 +167,7 @@ static struct mlx5dr_buddy_mem *
mlx5dr_pool_buddy_get_next_buddy(struct mlx5dr_pool *pool, int idx,
uint32_t order, bool *is_new_buddy)
{
- static struct mlx5dr_buddy_mem *buddy;
+ struct mlx5dr_buddy_mem *buddy;
uint32_t new_buddy_size;
buddy = pool->db.buddy_manager->buddies[idx];
@@ -271,7 +271,6 @@ static void mlx5dr_pool_buddy_db_uninit(struct mlx5dr_pool *pool)
buddy = pool->db.buddy_manager->buddies[i];
if (buddy) {
mlx5dr_buddy_cleanup(buddy);
- simple_free(buddy);
pool->db.buddy_manager->buddies[i] = NULL;
}
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.832800636 +0200
+++ 0091-net-mlx5-hws-fix-buddy-memory-allocation.patch 2025-12-25 11:16:36.253823000 +0200
@@ -1 +1 @@
-From 8d1fe10768d2749d00ceb7124866c61d31164380 Mon Sep 17 00:00:00 2001
+From 0811aec6ad49ac3a5f3296af8ee97bb6b6ee709e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8d1fe10768d2749d00ceb7124866c61d31164380 ]
+
@@ -22 +24 @@
-index f9c5622e5d..efc66fd48c 100644
+index 1296224156..5298e5dd6a 100644
@@ -25 +27,2 @@
-@@ -1180,6 +1180,7 @@ Noa Ezra <noae@mellanox.com>
+@@ -1078,6 +1078,7 @@ Nizan Zorea <nizan.zorea@intel.com>
+ Noa Ezra <noae@mellanox.com>
@@ -28 +30,0 @@
- Norbert Zulinski <norbertx.zulinski@intel.com>
@@ -46 +48 @@
-index 8e3718ac42..e383027d3e 100644
+index b7b532c7cf..a99182e0ca 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix device start error handling' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (89 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix uninitialized variable' " Shani Peretz
` (9 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/efb731220b65055d70e0c7718c94d88741fe91f6
Thanks.
Shani
---
From efb731220b65055d70e0c7718c94d88741fe91f6 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Tue, 25 Nov 2025 13:09:27 +0200
Subject: [PATCH] net/mlx5: fix device start error handling
[ upstream commit 860f6c63dbc1 ]
When mlx5_dev_start() fails partway through initialization, the error
cleanup code unconditionally calls cleanup functions for all steps,
including those that were never successfully initialized. This causes
state corruption leading to incorrect behavior on subsequent start
attempts.
The issue manifests as:
1. First start attempt fails with -ENOMEM (expected)
2. Second start attempt returns -EINVAL instead of -ENOMEM
3. With flow isolated mode, second attempt incorrectly succeeds,
leading to segfault in rte_eth_rx_burst()
Root cause: The single error label cleanup path calls functions like
mlx5_traffic_disable() and mlx5_flow_stop_default() even when their
corresponding initialization functions (mlx5_traffic_enable() and
mlx5_flow_start_default()) were never called due to earlier failure.
For example, when mlx5_rxq_start() fails:
- mlx5_traffic_enable() at line 1403 never executes
- mlx5_flow_start_default() at line 1420 never executes
- But cleanup unconditionally calls:
* mlx5_traffic_disable() - destroys control flows list
* mlx5_flow_stop_default() - corrupts flow metadata state
This corrupts the device state, causing subsequent start attempts to
fail with different errors or, in isolated mode, to incorrectly succeed
with an improperly initialized device.
Fix by replacing the single error label with cascading error labels
(Linux kernel style). Each label cleans up only its corresponding step,
then falls through to clean up earlier steps.
This ensures only successfully initialized steps are cleaned up,
maintaining device state consistency across failed start attempts.
Bugzilla ID: 1419
Fixes: 8db7e3b69822 ("net/mlx5: change operations for non-cached flows")
Cc: stable@dpdk.org
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_trigger.c | 60 +++++++++++++++++++++++----------
1 file changed, 42 insertions(+), 18 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 3bda84e963..7332a79609 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1133,6 +1133,11 @@ mlx5_hw_representor_port_allowed_start(struct rte_eth_dev *dev)
#endif
+#define SAVE_RTE_ERRNO_AND_STOP(ret, dev) do { \
+ ret = rte_errno; \
+ (dev)->data->dev_started = 0; \
+} while (0)
+
/**
* DPDK callback to start the device.
*
@@ -1203,19 +1208,23 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u Tx packet pacing init failed: %s",
dev->data->port_id, strerror(rte_errno));
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
goto error;
}
if (mlx5_devx_obj_ops_en(priv->sh) &&
priv->obj_ops.lb_dummy_queue_create) {
ret = priv->obj_ops.lb_dummy_queue_create(dev);
- if (ret)
- goto error;
+ if (ret) {
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto txpp_stop;
+ }
}
ret = mlx5_txq_start(dev);
if (ret) {
DRV_LOG(ERR, "port %u Tx queue allocation failed: %s",
dev->data->port_id, strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto lb_dummy_queue_release;
}
if (priv->config.std_delay_drop || priv->config.hp_delay_drop) {
if (!priv->sh->dev_cap.vf && !priv->sh->dev_cap.sf &&
@@ -1239,7 +1248,8 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u Rx queue allocation failed: %s",
dev->data->port_id, strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto txq_stop;
}
/*
* Such step will be skipped if there is no hairpin TX queue configured
@@ -1249,7 +1259,8 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u hairpin auto binding failed: %s",
dev->data->port_id, strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto rxq_stop;
}
/* Set started flag here for the following steps like control flow. */
dev->data->dev_started = 1;
@@ -1257,7 +1268,8 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u Rx interrupt vector creation failed",
dev->data->port_id);
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto rxq_stop;
}
mlx5_os_stats_init(dev);
/*
@@ -1269,7 +1281,8 @@ continue_dev_start:
DRV_LOG(ERR,
"port %u failed to attach indirect actions: %s",
dev->data->port_id, rte_strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto rx_intr_vec_disable;
}
#ifdef HAVE_MLX5_HWS_SUPPORT
if (priv->sh->config.dv_flow_en == 2) {
@@ -1277,7 +1290,8 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u failed to update HWS tables",
dev->data->port_id);
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto action_handle_detach;
}
}
#endif
@@ -1285,7 +1299,8 @@ continue_dev_start:
if (ret) {
DRV_LOG(ERR, "port %u failed to set defaults flows",
dev->data->port_id);
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto action_handle_detach;
}
/* Set dynamic fields and flags into Rx queues. */
mlx5_flow_rxq_dynf_set(dev);
@@ -1302,12 +1317,14 @@ continue_dev_start:
if (ret) {
DRV_LOG(DEBUG, "port %u failed to start default actions: %s",
dev->data->port_id, strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto traffic_disable;
}
if (mlx5_dev_ctx_shared_mempool_subscribe(dev) != 0) {
DRV_LOG(ERR, "port %u failed to subscribe for mempool life cycle: %s",
dev->data->port_id, rte_strerror(rte_errno));
- goto error;
+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
+ goto stop_default;
}
rte_wmb();
dev->tx_pkt_burst = mlx5_select_tx_function(dev);
@@ -1334,18 +1351,25 @@ continue_dev_start:
priv->sh->port[priv->dev_port - 1].devx_ih_port_id =
(uint32_t)dev->data->port_id;
return 0;
-error:
- ret = rte_errno; /* Save rte_errno before cleanup. */
- /* Rollback. */
- dev->data->dev_started = 0;
+stop_default:
mlx5_flow_stop_default(dev);
+traffic_disable:
mlx5_traffic_disable(dev);
- mlx5_txq_stop(dev);
+action_handle_detach:
+ mlx5_action_handle_detach(dev);
+rx_intr_vec_disable:
+ mlx5_rx_intr_vec_disable(dev);
+rxq_stop:
mlx5_rxq_stop(dev);
+txq_stop:
+ mlx5_txq_stop(dev);
+lb_dummy_queue_release:
if (priv->obj_ops.lb_dummy_queue_release)
priv->obj_ops.lb_dummy_queue_release(dev);
- mlx5_txpp_stop(dev); /* Stop last. */
- rte_errno = ret; /* Restore rte_errno. */
+txpp_stop:
+ mlx5_txpp_stop(dev);
+error:
+ rte_errno = ret;
return -rte_errno;
}
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.880491332 +0200
+++ 0092-net-mlx5-fix-device-start-error-handling.patch 2025-12-25 11:16:36.261892000 +0200
@@ -1 +1 @@
-From 860f6c63dbc1cc6ae6bbaca886c04b88d43a2236 Mon Sep 17 00:00:00 2001
+From efb731220b65055d70e0c7718c94d88741fe91f6 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Thu, 13 Nov 2025 21:37:11 +0200
+Date: Tue, 25 Nov 2025 13:09:27 +0200
@@ -5,0 +6,2 @@
+[ upstream commit 860f6c63dbc1 ]
+
@@ -47,2 +49,2 @@
- drivers/net/mlx5/mlx5_trigger.c | 66 +++++++++++++++++++++++----------
- 1 file changed, 46 insertions(+), 20 deletions(-)
+ drivers/net/mlx5/mlx5_trigger.c | 60 +++++++++++++++++++++++----------
+ 1 file changed, 42 insertions(+), 18 deletions(-)
@@ -51 +53 @@
-index c0fb98e78a..9aa36ae9a8 100644
+index 3bda84e963..7332a79609 100644
@@ -54,3 +56,3 @@
-@@ -1226,6 +1226,11 @@ static void mlx5_dev_free_consec_tx_mem(struct rte_eth_dev *dev, bool on_stop)
- }
- }
+@@ -1133,6 +1133,11 @@ mlx5_hw_representor_port_allowed_start(struct rte_eth_dev *dev)
+
+ #endif
@@ -66 +68 @@
-@@ -1316,25 +1321,30 @@ continue_dev_start:
+@@ -1203,19 +1208,23 @@ continue_dev_start:
@@ -83,8 +84,0 @@
- ret = mlx5_dev_allocate_consec_tx_mem(dev);
- if (ret) {
- DRV_LOG(ERR, "port %u Tx queues memory allocation failed: %s",
- dev->data->port_id, strerror(rte_errno));
-- goto error;
-+ SAVE_RTE_ERRNO_AND_STOP(ret, dev);
-+ goto lb_dummy_queue_release;
- }
@@ -97 +91 @@
-+ goto free_consec_tx_mem;
++ goto lb_dummy_queue_release;
@@ -101 +95 @@
-@@ -1358,7 +1368,8 @@ continue_dev_start:
+@@ -1239,7 +1248,8 @@ continue_dev_start:
@@ -111 +105 @@
-@@ -1368,7 +1379,8 @@ continue_dev_start:
+@@ -1249,7 +1259,8 @@ continue_dev_start:
@@ -121 +115 @@
-@@ -1376,7 +1388,8 @@ continue_dev_start:
+@@ -1257,7 +1268,8 @@ continue_dev_start:
@@ -131 +125 @@
-@@ -1388,7 +1401,8 @@ continue_dev_start:
+@@ -1269,7 +1281,8 @@ continue_dev_start:
@@ -141 +135 @@
-@@ -1396,7 +1410,8 @@ continue_dev_start:
+@@ -1277,7 +1290,8 @@ continue_dev_start:
@@ -151 +145 @@
-@@ -1404,7 +1419,8 @@ continue_dev_start:
+@@ -1285,7 +1299,8 @@ continue_dev_start:
@@ -161 +155 @@
-@@ -1421,12 +1437,14 @@ continue_dev_start:
+@@ -1302,12 +1317,14 @@ continue_dev_start:
@@ -176,3 +170,3 @@
- if (mlx5_flow_is_steering_disabled())
- mlx5_flow_rxq_mark_flag_set(dev);
-@@ -1455,19 +1473,27 @@ continue_dev_start:
+ rte_wmb();
+ dev->tx_pkt_burst = mlx5_select_tx_function(dev);
+@@ -1334,18 +1351,25 @@ continue_dev_start:
@@ -199,2 +192,0 @@
-+free_consec_tx_mem:
-+ mlx5_dev_free_consec_tx_mem(dev, false);
@@ -204 +195,0 @@
-- mlx5_dev_free_consec_tx_mem(dev, false);
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix uninitialized variable' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (90 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix device start error handling' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Shani Peretz
` (8 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Raslan Darawsheh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/3ed57372077169c1bfe959ffc4200f8a01f42106
Thanks.
Shani
---
From 3ed57372077169c1bfe959ffc4200f8a01f42106 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Fri, 14 Nov 2025 09:49:12 -0800
Subject: [PATCH] net/mlx5: fix uninitialized variable
[ upstream commit 7429374afba9827a43cf2efabce14e27ccc4bdef ]
Gcc-16 detects use of uninitialized variable.
If the retry loop exits the code would do memcmp against uninitialized
stack value. Resolve by initializing to zero.
Bugzilla ID: 1823
Fixes: 1256805dd54d ("net/mlx5: move Linux-specific functions")
Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to complete")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Raslan Darawsheh <rasland@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index ea89ce8e05..a9a12c87dc 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -647,7 +647,7 @@ int
mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
{
int ret;
- struct rte_eth_link dev_link;
+ struct rte_eth_link dev_link = { 0 };
time_t start_time = time(NULL);
int retry = MLX5_GET_LINK_STATUS_RETRY_COUNT;
@@ -2010,4 +2010,3 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
rte_mem_unmap(base, MLX5_ST_SZ_BYTES(initial_seg));
return 0;
}
-
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:40.926024185 +0200
+++ 0093-net-mlx5-fix-uninitialized-variable.patch 2025-12-25 11:16:36.269797000 +0200
@@ -1 +1 @@
-From 7429374afba9827a43cf2efabce14e27ccc4bdef Mon Sep 17 00:00:00 2001
+From 3ed57372077169c1bfe959ffc4200f8a01f42106 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7429374afba9827a43cf2efabce14e27ccc4bdef ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 4d8fbed188..50997c187c 100644
+index ea89ce8e05..a9a12c87dc 100644
@@ -25 +26 @@
-@@ -512,7 +512,7 @@ int
+@@ -647,7 +647,7 @@ int
@@ -34 +35 @@
-@@ -2073,4 +2073,3 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
+@@ -2010,4 +2010,3 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix flow tag indexes support on root table' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (91 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix uninitialized variable' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Shani Peretz
` (7 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b431414c74e2474e9fb5a7677fc4b9d3184c3c3a
Thanks.
Shani
---
From b431414c74e2474e9fb5a7677fc4b9d3184c3c3a Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 14 Nov 2025 21:17:20 +0100
Subject: [PATCH] net/mlx5: fix flow tag indexes support on root table
[ upstream commit 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f ]
Offending patch introduced support for additional flow tag indexes
with HW Steering flow engine. New tag indexes will be mapped
to HW registers REG_C_8 to REG_C_11, depending on HW capabilities.
That patch only handled tables created on group > 0 (non-root table),
where mlx5 PMD directly configures the HW.
Tables and flow rules on group 0 (root table) are handled through
kernel driver, and new registers were not addressed for that case.
Because of that, usage of unsupported tag index in group 0
triggered an assertion in flow_dv_match_meta_reg().
This patch adds necessary definitions for REG_C_8 to REG_C_11 to make
these registers usable for flow tag indexes in root table.
Validation of flow tag to HW register translation is also amended
to report invalid cases to the user, instead of relying on assertions.
Fixes: 7e3a14423c1a ("net/mlx5/hws: support 4 additional C registers")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/common/mlx5/mlx5_prm.h | 6 ++++-
drivers/net/mlx5/mlx5_flow_dv.c | 40 ++++++++++++++++++++++++++++-----
2 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index d9e216b635..64d814d2d3 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -1184,7 +1184,11 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
u8 tunnel_header_1[0x20];
u8 tunnel_header_2[0x20];
u8 tunnel_header_3[0x20];
- u8 reserved[0x100];
+ u8 reserved[0x80];
+ u8 metadata_reg_c_8[0x20];
+ u8 metadata_reg_c_9[0x20];
+ u8 metadata_reg_c_10[0x20];
+ u8 metadata_reg_c_11[0x20];
};
/* Flow matcher. */
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 56a0beeef6..d42b95ce0c 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -10175,8 +10175,8 @@ static void
flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
uint32_t data, uint32_t mask)
{
- void *misc2_v =
- MLX5_ADDR_OF(fte_match_param, key, misc_parameters_2);
+ void *misc2_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters_2);
+ void *misc5_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters_5);
uint32_t temp;
data &= mask;
@@ -10220,6 +10220,18 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
case REG_C_7:
MLX5_SET(fte_match_set_misc2, misc2_v, metadata_reg_c_7, data);
break;
+ case REG_C_8:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_8, data);
+ break;
+ case REG_C_9:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_9, data);
+ break;
+ case REG_C_10:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_10, data);
+ break;
+ case REG_C_11:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_11, data);
+ break;
default:
MLX5_ASSERT(false);
break;
@@ -10438,8 +10450,11 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
* Flow pattern to translate.
* @param[in] key_type
* Set flow matcher mask or value.
+ *
+ * @return
+ * 0 on success. Negative errno value otherwise.
*/
-static void
+static int
flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
const struct rte_flow_item *item,
uint32_t key_type)
@@ -10451,7 +10466,7 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
uint32_t index;
if (MLX5_ITEM_VALID(item, key_type))
- return;
+ return 0;
MLX5_ITEM_UPDATE(item, key_type, tag_v, tag_m,
&rte_flow_item_tag_mask);
/* When set mask, the index should be from spec. */
@@ -10461,8 +10476,18 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
reg = mlx5_flow_get_reg_id(dev, MLX5_APP_TAG, index, NULL);
else
reg = flow_hw_get_reg_id(dev, RTE_FLOW_ITEM_TYPE_TAG, index);
- MLX5_ASSERT(reg > 0);
+ if (reg < 0) {
+ DRV_LOG(ERR, "port %u tag index %u does not map to correct register",
+ dev->data->port_id, index);
+ return -EINVAL;
+ }
+ if (reg == REG_NON) {
+ DRV_LOG(ERR, "port %u tag index %u maps to unsupported register",
+ dev->data->port_id, index);
+ return -ENOTSUP;
+ }
flow_dv_match_meta_reg(key, (enum modify_reg)reg, tag_v->data, tag_m->data);
+ return 0;
}
/**
@@ -13931,7 +13956,10 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
last_item = MLX5_FLOW_LAYER_ICMP6;
break;
case RTE_FLOW_ITEM_TYPE_TAG:
- flow_dv_translate_item_tag(dev, key, items, key_type);
+ ret = flow_dv_translate_item_tag(dev, key, items, key_type);
+ if (ret < 0)
+ return rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
+ "invalid flow tag item");
last_item = MLX5_FLOW_ITEM_TAG;
break;
case MLX5_RTE_FLOW_ITEM_TYPE_TAG:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.254613292 +0200
+++ 0094-net-mlx5-fix-flow-tag-indexes-support-on-root-table.patch 2025-12-25 11:16:36.303788000 +0200
@@ -1 +1 @@
-From 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f Mon Sep 17 00:00:00 2001
+From b431414c74e2474e9fb5a7677fc4b9d3184c3c3a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -29 +29,0 @@
- drivers/net/mlx5/mlx5_flow.h | 3 ++-
@@ -31 +31 @@
- 3 files changed, 41 insertions(+), 8 deletions(-)
+ 2 files changed, 39 insertions(+), 7 deletions(-)
@@ -34 +34 @@
-index 6cde3f8f1a..9383e09893 100644
+index d9e216b635..64d814d2d3 100644
@@ -37 +37 @@
-@@ -1205,7 +1205,11 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
+@@ -1184,7 +1184,11 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
@@ -50,14 +49,0 @@
-diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
-index db408d7b38..8159008504 100644
---- a/drivers/net/mlx5/mlx5_flow.h
-+++ b/drivers/net/mlx5/mlx5_flow.h
-@@ -1837,7 +1837,8 @@ flow_hw_get_reg_id_by_domain(struct rte_eth_dev *dev,
- case RTE_FLOW_ITEM_TYPE_TAG:
- if (id == RTE_PMD_MLX5_LINEAR_HASH_TAG_INDEX)
- return REG_C_3;
-- MLX5_ASSERT(id < MLX5_FLOW_HW_TAGS_MAX);
-+ if (id >= MLX5_FLOW_HW_TAGS_MAX)
-+ return REG_NON;
- return reg->hw_avl_tags[id];
- default:
- return REG_NON;
@@ -65 +51 @@
-index 83046418c4..47f6d28410 100644
+index 56a0beeef6..d42b95ce0c 100644
@@ -68 +54 @@
-@@ -10554,8 +10554,8 @@ static void
+@@ -10175,8 +10175,8 @@ static void
@@ -78,2 +64,2 @@
- if (!key)
-@@ -10601,6 +10601,18 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
+ data &= mask;
+@@ -10220,6 +10220,18 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
@@ -98 +84 @@
-@@ -10819,8 +10831,11 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10438,8 +10450,11 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
@@ -111 +97 @@
-@@ -10832,7 +10847,7 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10451,7 +10466,7 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
@@ -120 +106 @@
-@@ -10842,8 +10857,18 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10461,8 +10476,18 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
@@ -140 +126 @@
-@@ -14402,7 +14427,10 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
+@@ -13931,7 +13956,10 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/hws: fix flow rule hash capability' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (92 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Shani Peretz
` (6 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Itamar Gozlan; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/36f622124829631ba7ccae17b4cf5d0083c6947b
Thanks.
Shani
---
From 36f622124829631ba7ccae17b4cf5d0083c6947b Mon Sep 17 00:00:00 2001
From: Itamar Gozlan <igozlan@nvidia.com>
Date: Sun, 16 Nov 2025 13:59:25 +0200
Subject: [PATCH] net/mlx5/hws: fix flow rule hash capability
[ upstream commit 970309c7aa889ee06178c6476fe153e17096fc25 ]
Some cases are not supported for rule hash calculation. For example
when the matcher defined as FW matcher, or is the hash type is different
than CRC32. One case is when the distribute mode is not by hash, the
previous condition checked a wrong capability, while this commit fixes
it to the correct check.
Fixes: 7f5e6de53aae ("net/mlx5/hws: query flow rule hash")
Signed-off-by: Itamar Gozlan <igozlan@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_rule.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c
index cc7a30d6d0..adaa568a74 100644
--- a/drivers/net/mlx5/hws/mlx5dr_rule.c
+++ b/drivers/net/mlx5/hws/mlx5dr_rule.c
@@ -805,7 +805,7 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
if (mlx5dr_matcher_req_fw_wqe(matcher) ||
mlx5dr_table_is_root(matcher->tbl) ||
- matcher->tbl->ctx->caps->access_index_mode == MLX5DR_MATCHER_INSERT_BY_HASH ||
+ matcher->attr.distribute_mode != MLX5DR_MATCHER_DISTRIBUTE_BY_HASH ||
matcher->tbl->ctx->caps->flow_table_hash_type != MLX5_FLOW_TABLE_HASH_TYPE_CRC32) {
rte_errno = ENOTSUP;
return -rte_errno;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.318595568 +0200
+++ 0095-net-mlx5-hws-fix-flow-rule-hash-capability.patch 2025-12-25 11:16:36.310846000 +0200
@@ -1 +1 @@
-From 970309c7aa889ee06178c6476fe153e17096fc25 Mon Sep 17 00:00:00 2001
+From 36f622124829631ba7ccae17b4cf5d0083c6947b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 970309c7aa889ee06178c6476fe153e17096fc25 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 878224d8b3..895ac858ec 100644
+index cc7a30d6d0..adaa568a74 100644
@@ -25 +26 @@
-@@ -1084,7 +1084,7 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
+@@ -805,7 +805,7 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
@@ -32 +32,0 @@
- DR_LOG(DEBUG, "Matcher is not supported");
@@ -33,0 +34 @@
+ return -rte_errno;
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5/windows: fix match criteria in flow creation' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (93 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'examples/server_node_efd: fix format overflow' " Shani Peretz
` (5 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Itai Sharoni; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/d5ede0257aa86c164fac355a4af2be2ff9a2d827
Thanks.
Shani
---
From d5ede0257aa86c164fac355a4af2be2ff9a2d827 Mon Sep 17 00:00:00 2001
From: Itai Sharoni <isharoni@nvidia.com>
Date: Mon, 17 Nov 2025 10:45:00 +0200
Subject: [PATCH] net/mlx5/windows: fix match criteria in flow creation
[ upstream commit e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 ]
Currently the Windows implementation hardcodes match criteria to
MLX5_MATCH_OUTER_HEADERS when creating flow rules, which prevents
matching on inner headers and other criteria types like NVGRE.
The fix uses the matcher's match_criteria_enable attribute instead
of hardcoding OUTER_HEADERS, and moves the assignment outside the
action switch block to apply to all cases.
NVGRE item type is also added to the supported items list.
Fixes: 1d194496b9d1 ("net/mlx5: create flow rule on Windows")
Signed-off-by: Itai Sharoni <isharoni@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/windows/mlx5_flow_os.c | 4 ++--
drivers/net/mlx5/windows/mlx5_flow_os.h | 1 +
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 5298e5dd6a..96b7809f89 100644
--- a/.mailmap
+++ b/.mailmap
@@ -579,6 +579,7 @@ Ilya V. Matveychikov <matvejchikov@gmail.com>
Ilyes Ben Hamouda <ilyes.ben_hamouda@6wind.com>
Intiyaz Basha <intiyaz.basha@caviumnetworks.com>
Isaac Boukris <iboukris@gmail.com>
+Itai Sharoni <isharoni@nvidia.com>
Itamar Gozlan <igozlan@nvidia.com>
Itsuro Oda <oda@valinux.co.jp>
Ivan Boule <ivan.boule@6wind.com>
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.c b/drivers/net/mlx5/windows/mlx5_flow_os.c
index f907b21ecc..57b3cbffb2 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.c
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.c
@@ -219,9 +219,9 @@ mlx5_flow_os_create_flow(void *matcher, void *match_value,
default:
break;
}
- MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
- MLX5_MATCH_OUTER_HEADERS);
}
+ MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
+ mlx5_matcher->attr.match_criteria_enable);
*flow = mlx5_glue->devx_fs_rule_add(mlx5_matcher->ctx, in, sizeof(in));
return (*flow) ? 0 : -1;
}
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.h b/drivers/net/mlx5/windows/mlx5_flow_os.h
index 856d8ba948..17e5a27e3a 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.h
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.h
@@ -47,6 +47,7 @@ mlx5_flow_os_item_supported(int item)
case RTE_FLOW_ITEM_TYPE_IPV6:
case RTE_FLOW_ITEM_TYPE_VLAN:
case RTE_FLOW_ITEM_TYPE_ESP:
+ case RTE_FLOW_ITEM_TYPE_NVGRE:
return true;
default:
return false;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.366658245 +0200
+++ 0096-net-mlx5-windows-fix-match-criteria-in-flow-creation.patch 2025-12-25 11:16:36.322801000 +0200
@@ -1 +1 @@
-From e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 Mon Sep 17 00:00:00 2001
+From d5ede0257aa86c164fac355a4af2be2ff9a2d827 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -23 +23,0 @@
- doc/guides/nics/mlx5.rst | 4 ++++
@@ -26 +26 @@
- 4 files changed, 8 insertions(+), 2 deletions(-)
+ 3 files changed, 4 insertions(+), 2 deletions(-)
@@ -29 +29 @@
-index efc66fd48c..2f089326ff 100644
+index 5298e5dd6a..96b7809f89 100644
@@ -32 +32,2 @@
-@@ -639,6 +639,7 @@ Ilyes Ben Hamouda <ilyes.ben_hamouda@6wind.com>
+@@ -579,6 +579,7 @@ Ilya V. Matveychikov <matvejchikov@gmail.com>
+ Ilyes Ben Hamouda <ilyes.ben_hamouda@6wind.com>
@@ -34 +34,0 @@
- Ioana Ciornei <ioana.ciornei@nxp.com>
@@ -40,15 +39,0 @@
-diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
-index 2cf95578de..51d7637fba 100644
---- a/doc/guides/nics/mlx5.rst
-+++ b/doc/guides/nics/mlx5.rst
-@@ -1231,6 +1231,10 @@ On Windows, the features are limited:
- - IPv4/TCP with CVLAN filtering
- - L4 steering rules for port RSS of IP, UDP, TCP
-
-+- Tunnel protocol support:
-+
-+ - NVGRE (requires DevX dynamic insertion mode)
-+
-
- .. _mlx5_multiproc:
-
@@ -56 +41 @@
-index 7a625fb880..15c6fc5613 100644
+index f907b21ecc..57b3cbffb2 100644
@@ -72 +57 @@
-index 2cd4e95325..c087bca4be 100644
+index 856d8ba948..17e5a27e3a 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'examples/server_node_efd: fix format overflow' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (94 preceding siblings ...)
2025-12-25 9:18 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:18 ` patch 'examples/vdpa: " Shani Peretz
` (4 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/106a5ad16c8033cd7ff47b78e1f8563d3246d43a
Thanks.
Shani
---
From 106a5ad16c8033cd7ff47b78e1f8563d3246d43a Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 20 Nov 2025 08:21:59 -0800
Subject: [PATCH] examples/server_node_efd: fix format overflow
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit c97d223fc64fc10cf8f6c6f0e7d506926e83462b ]
If format-truncation is enabled, the compiler detects a string overflow
since the snprintf() is putting ethernet address and new line
in buffer only sized for the address.
Since get_rx_queue_name() is used to create a ring name.
The buffer should be sized to be a valid ring name.
This fixes some format-overflow warnings and also corrects
for future errors.
In file included from ../examples/server_node_efd/efd_server/main.c:31:
In function ‘get_printable_mac_addr’,
inlined from ‘do_stats_display’ at ../examples/server_node_efd/efd_server/main.c:136:3:
../lib/net/rte_ether.h:248:36: warning: ‘snprintf’ output truncated before the last format character [-Wformat-truncation=]
248 | #define RTE_ETHER_ADDR_PRT_FMT "%02X:%02X:%02X:%02X:%02X:%02X"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../examples/server_node_efd/efd_server/main.c:86:33: note: in expansion of macro ‘RTE_ETHER_ADDR_PRT_FMT’
86 | RTE_ETHER_ADDR_PRT_FMT "\n",
| ^~~~~~~~~~~~~~~~~~~~~~
../examples/server_node_efd/efd_server/main.c: In function ‘do_stats_display’:
../examples/server_node_efd/efd_server/main.c:86:59: note: format string is defined here
86 | RTE_ETHER_ADDR_PRT_FMT "\n",
|
Fixes: 39aad0e88c58 ("examples/flow_distributor: new example to demonstrate EFD")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
examples/server_node_efd/efd_server/main.c | 2 +-
examples/server_node_efd/shared/common.h | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/examples/server_node_efd/efd_server/main.c b/examples/server_node_efd/efd_server/main.c
index fd72882e3a..f1bb6c09fc 100644
--- a/examples/server_node_efd/efd_server/main.c
+++ b/examples/server_node_efd/efd_server/main.c
@@ -68,7 +68,7 @@ static const char *
get_printable_mac_addr(uint16_t port)
{
static const char err_address[] = "00:00:00:00:00:00";
- static char addresses[RTE_MAX_ETHPORTS][sizeof(err_address)];
+ static char addresses[RTE_MAX_ETHPORTS][RTE_ETHER_ADDR_FMT_SIZE + 1];
struct rte_ether_addr mac;
int ret;
diff --git a/examples/server_node_efd/shared/common.h b/examples/server_node_efd/shared/common.h
index 130fd4f4e5..cd6b803ea1 100644
--- a/examples/server_node_efd/shared/common.h
+++ b/examples/server_node_efd/shared/common.h
@@ -58,8 +58,9 @@ get_rx_queue_name(unsigned int id)
/*
* Buffer for return value. Size calculated by %u being replaced
* by maximum 3 digits (plus an extra byte for safety)
+ * Used as ring name, so upper limit is ring name size.
*/
- static char buffer[sizeof(MP_NODE_RXQ_NAME) + 2];
+ static char buffer[RTE_RING_NAMESIZE];
snprintf(buffer, sizeof(buffer), MP_NODE_RXQ_NAME, id);
return buffer;
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.419438732 +0200
+++ 0097-examples-server_node_efd-fix-format-overflow.patch 2025-12-25 11:16:36.327791000 +0200
@@ -1 +1 @@
-From c97d223fc64fc10cf8f6c6f0e7d506926e83462b Mon Sep 17 00:00:00 2001
+From 106a5ad16c8033cd7ff47b78e1f8563d3246d43a Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit c97d223fc64fc10cf8f6c6f0e7d506926e83462b ]
+
@@ -33 +34,0 @@
-Cc: stable@dpdk.org
@@ -43 +44 @@
-index 75ff0ea532..62c3f4a16d 100644
+index fd72882e3a..f1bb6c09fc 100644
@@ -56 +57 @@
-index e1ab7e62b7..6726e2031e 100644
+index 130fd4f4e5..cd6b803ea1 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'examples/vdpa: fix format overflow' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (95 preceding siblings ...)
2025-12-25 9:18 ` patch 'examples/server_node_efd: fix format overflow' " Shani Peretz
@ 2025-12-25 9:18 ` Shani Peretz
2025-12-25 9:19 ` patch 'net/mlx5: fix flex flow item header length' " Shani Peretz
` (3 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/f6fdcd78028ecdb9b34fcc6aa841258eca0f30de
Thanks.
Shani
---
From f6fdcd78028ecdb9b34fcc6aa841258eca0f30de Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 20 Nov 2025 08:22:00 -0800
Subject: [PATCH] examples/vdpa: fix format overflow
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 66052657fcb810c47cbbe52762c9ad0ad7828821 ]
The ifname is limited to 128 characters, but it would allow up
to 128 characters as prefix then could overflow creating ifname.
Change to limit path prefix (iface) to 123 (128 - sizeof("1024"))
to avoid possible format overflow
../examples/vdpa/main.c:501:76: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
501 | snprintf(vports[devcnt].ifname, MAX_PATH_LEN, "%s%d",
| ^
../examples/vdpa/main.c:501:25: note: ‘snprintf’ output between 2 and 139 bytes into a destination of size 128
501 | snprintf(vports[devcnt].ifname, MAX_PATH_LEN, "%s%d",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | iface, devcnt);
|
Fixes: 38f8ab0bbc8d ("vhost: make vDPA framework bus agnostic")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
examples/vdpa/main.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/vdpa/main.c b/examples/vdpa/main.c
index 289db26498..08aa933272 100644
--- a/examples/vdpa/main.c
+++ b/examples/vdpa/main.c
@@ -22,6 +22,7 @@
#define MAX_PATH_LEN 128
#define MAX_VDPA_SAMPLE_PORTS 1024
+#define MAX_VDPA_STR_LEN sizeof(RTE_STR(MAX_VDPA_SAMPLE_PORTS))
#define RTE_LOGTYPE_VDPA RTE_LOGTYPE_USER1
struct vdpa_port {
@@ -36,7 +37,7 @@ struct vdpa_port {
static struct vdpa_port vports[MAX_VDPA_SAMPLE_PORTS];
-static char iface[MAX_PATH_LEN];
+static char iface[MAX_PATH_LEN - MAX_VDPA_STR_LEN];
static int devcnt;
static int interactive;
static int client_mode;
@@ -74,9 +75,8 @@ parse_args(int argc, char **argv)
break;
/* long options */
case 0:
- if (strncmp(long_option[idx].name, "iface",
- MAX_PATH_LEN) == 0) {
- rte_strscpy(iface, optarg, MAX_PATH_LEN);
+ if (!strcmp(long_option[idx].name, "iface")) {
+ rte_strscpy(iface, optarg, sizeof(iface));
printf("iface %s\n", iface);
}
if (!strcmp(long_option[idx].name, "interactive")) {
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.465600318 +0200
+++ 0098-examples-vdpa-fix-format-overflow.patch 2025-12-25 11:16:36.331782000 +0200
@@ -1 +1 @@
-From 66052657fcb810c47cbbe52762c9ad0ad7828821 Mon Sep 17 00:00:00 2001
+From f6fdcd78028ecdb9b34fcc6aa841258eca0f30de Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 66052657fcb810c47cbbe52762c9ad0ad7828821 ]
+
@@ -25 +26,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix flex flow item header length' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (96 preceding siblings ...)
2025-12-25 9:18 ` patch 'examples/vdpa: " Shani Peretz
@ 2025-12-25 9:19 ` Shani Peretz
2025-12-25 9:19 ` patch 'doc: add Pollara 400 device in ionic guide' " Shani Peretz
` (2 subsequent siblings)
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:19 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b513b4052a7b3594a6a10fb6bd5869de7f14b515
Thanks.
Shani
---
From b513b4052a7b3594a6a10fb6bd5869de7f14b515 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 18 Nov 2025 16:57:06 +0200
Subject: [PATCH] net/mlx5: fix flex flow item header length
[ upstream commit a2234609bf7e4f5bb1ad8f6f60c5f574f32c3558 ]
There is the updated firmware providing the new capability
bit "header_length_field_offset_mode". If this bit is set
the length field offset in flex parser configuration should
not be adjusted by the supported field mask left margin,
and the bit "header_length_field_offset_mode" should be set
in configuration command on the flex parser creation
firmware call.
Fixes: b04b06f4cb3f ("net/mlx5: fix flex item header length field translation")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/common/mlx5/mlx5_devx_cmds.c | 4 ++++
drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++
drivers/common/mlx5/mlx5_prm.h | 8 ++++++--
drivers/net/mlx5/mlx5.c | 12 +++++++++---
drivers/net/mlx5/mlx5_flow_flex.c | 3 ++-
5 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c
index 9e2d7ce86f..e65f15addb 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.c
+++ b/drivers/common/mlx5/mlx5_devx_cmds.c
@@ -741,6 +741,8 @@ mlx5_devx_cmd_create_flex_parser(void *ctx,
MLX5_GENERAL_OBJ_TYPE_FLEX_PARSE_GRAPH);
MLX5_SET(parse_graph_flex, flex, header_length_mode,
data->header_length_mode);
+ MLX5_SET(parse_graph_flex, flex, header_length_field_offset_mode,
+ data->header_length_field_offset_mode);
MLX5_SET64(parse_graph_flex, flex, modify_field_select,
data->modify_field_select);
MLX5_SET(parse_graph_flex, flex, header_length_base_value,
@@ -868,6 +870,8 @@ mlx5_devx_cmd_query_hca_parse_graph_node_cap
max_next_header_offset);
attr->header_length_mask_width = MLX5_GET(parse_graph_node_cap, hcattr,
header_length_mask_width);
+ attr->header_length_field_mode_wa = !MLX5_GET(parse_graph_node_cap, hcattr,
+ header_length_field_offset_mode);
/* Get the max supported samples from HCA CAP 2 */
hcattr = mlx5_devx_get_hca_cap(ctx, in, out, &rc,
MLX5_GET_HCA_CAP_OP_MOD_GENERAL_DEVICE_2 |
diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h
index 028cf2abb9..9ad16d24e1 100644
--- a/drivers/common/mlx5/mlx5_devx_cmds.h
+++ b/drivers/common/mlx5/mlx5_devx_cmds.h
@@ -119,6 +119,7 @@ struct mlx5_hca_flex_attr {
uint8_t sample_tunnel_inner2:1;
uint8_t zero_size_supported:1;
uint8_t sample_id_in_out:1;
+ uint8_t header_length_field_mode_wa:1;
uint16_t max_base_header_length;
uint8_t max_sample_base_offset;
uint16_t max_next_header_offset;
@@ -624,6 +625,7 @@ struct mlx5_devx_graph_node_attr {
uint32_t header_length_base_value:16;
uint32_t header_length_field_shift:4;
uint32_t header_length_field_offset:16;
+ uint32_t header_length_field_offset_mode:1;
uint32_t header_length_field_mask;
struct mlx5_devx_match_sample_attr sample[MLX5_GRAPH_NODE_SAMPLE_NUM];
uint32_t next_header_field_offset:16;
diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index 64d814d2d3..a72bc7ab81 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -2089,7 +2089,9 @@ struct mlx5_ifc_parse_graph_node_cap_bits {
u8 max_num_arc_in[0x08];
u8 max_num_arc_out[0x08];
u8 max_num_sample[0x08];
- u8 reserved_at_78[0x03];
+ u8 reserved_at_78[0x01];
+ u8 header_length_field_offset_mode[0x1];
+ u8 reserved_at_79[0x01];
u8 parse_graph_anchor[0x1];
u8 reserved_at_7c[0x01];
u8 sample_tunnel_inner2[0x1];
@@ -4836,7 +4838,9 @@ struct mlx5_ifc_parse_graph_flex_bits {
u8 next_header_field_offset[0x10];
u8 reserved_at_160[0x12];
u8 head_anchor_id[0x6];
- u8 reserved_at_178[0x3];
+ u8 reserved_at_178[0x1];
+ u8 header_length_field_offset_mode[0x1];
+ u8 reserved_at_17a[0x1];
u8 next_header_field_size[0x5];
u8 header_length_field_mask[0x20];
u8 reserved_at_224[0x20];
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 0352e7cc7f..900737e191 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1090,9 +1090,15 @@ mlx5_alloc_srh_flex_parser(struct rte_eth_dev *dev)
/* The unit is uint64_t. */
node.header_length_field_shift = 0x3;
/* Header length is the 2nd byte. */
- node.header_length_field_offset = 0x8;
- if (attr->header_length_mask_width < 8)
- node.header_length_field_offset += 8 - attr->header_length_mask_width;
+ if (attr->header_length_field_mode_wa) {
+ /* Legacy firmware before ConnectX-8, we should provide offset WA. */
+ node.header_length_field_offset = 8;
+ if (attr->header_length_mask_width < 8)
+ node.header_length_field_offset += 8 - attr->header_length_mask_width;
+ } else {
+ /* The new firmware, we can specify the correct offset directly. */
+ node.header_length_field_offset = 12;
+ }
node.header_length_field_mask = 0xF;
/* One byte next header protocol. */
node.next_header_field_size = 0x8;
diff --git a/drivers/net/mlx5/mlx5_flow_flex.c b/drivers/net/mlx5/mlx5_flow_flex.c
index 58d8c61443..8de2174173 100644
--- a/drivers/net/mlx5/mlx5_flow_flex.c
+++ b/drivers/net/mlx5/mlx5_flow_flex.c
@@ -554,7 +554,7 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr,
"mask and shift combination not supported (OFFSET)");
msb++;
offset += field->field_size - msb;
- if (msb < attr->header_length_mask_width) {
+ if (attr->header_length_field_mode_wa && msb < attr->header_length_mask_width) {
if (attr->header_length_mask_width - msb > offset)
return rte_flow_error_set
(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
@@ -572,6 +572,7 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr,
node->header_length_field_mask = mask;
node->header_length_field_shift = shift;
node->header_length_field_offset = offset;
+ node->header_length_field_offset_mode = !attr->header_length_field_mode_wa;
break;
}
case FIELD_MODE_BITMASK:
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.513439885 +0200
+++ 0099-net-mlx5-fix-flex-flow-item-header-length.patch 2025-12-25 11:16:36.356790000 +0200
@@ -1 +1 @@
-From a2234609bf7e4f5bb1ad8f6f60c5f574f32c3558 Mon Sep 17 00:00:00 2001
+From b513b4052a7b3594a6a10fb6bd5869de7f14b515 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a2234609bf7e4f5bb1ad8f6f60c5f574f32c3558 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 22f6b29089..d12ebf8487 100644
+index 9e2d7ce86f..e65f15addb 100644
@@ -30 +31 @@
-@@ -784,6 +784,8 @@ mlx5_devx_cmd_create_flex_parser(void *ctx,
+@@ -741,6 +741,8 @@ mlx5_devx_cmd_create_flex_parser(void *ctx,
@@ -39 +40 @@
-@@ -911,6 +913,8 @@ mlx5_devx_cmd_query_hca_parse_graph_node_cap
+@@ -868,6 +870,8 @@ mlx5_devx_cmd_query_hca_parse_graph_node_cap
@@ -49 +50 @@
-index 4c7747cbec..da50fc686c 100644
+index 028cf2abb9..9ad16d24e1 100644
@@ -60 +61 @@
-@@ -654,6 +655,7 @@ struct mlx5_devx_graph_node_attr {
+@@ -624,6 +625,7 @@ struct mlx5_devx_graph_node_attr {
@@ -69 +70 @@
-index 9383e09893..ba33336e58 100644
+index 64d814d2d3..a72bc7ab81 100644
@@ -72 +73 @@
-@@ -2119,7 +2119,9 @@ struct mlx5_ifc_parse_graph_node_cap_bits {
+@@ -2089,7 +2089,9 @@ struct mlx5_ifc_parse_graph_node_cap_bits {
@@ -83 +84 @@
-@@ -4991,7 +4993,9 @@ struct mlx5_ifc_parse_graph_flex_bits {
+@@ -4836,7 +4838,9 @@ struct mlx5_ifc_parse_graph_flex_bits {
@@ -95 +96 @@
-index 447fd31fd4..c1cfcb1f67 100644
+index 0352e7cc7f..900737e191 100644
@@ -98 +99 @@
-@@ -1080,9 +1080,15 @@ mlx5_alloc_srh_flex_parser(struct rte_eth_dev *dev)
+@@ -1090,9 +1090,15 @@ mlx5_alloc_srh_flex_parser(struct rte_eth_dev *dev)
@@ -118 +119 @@
-index b1174fe0ed..d21e28f7fd 100644
+index 58d8c61443..8de2174173 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: add Pollara 400 device in ionic guide' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (97 preceding siblings ...)
2025-12-25 9:19 ` patch 'net/mlx5: fix flex flow item header length' " Shani Peretz
@ 2025-12-25 9:19 ` Shani Peretz
2025-12-25 9:19 ` patch 'doc: fix note in FreeBSD " Shani Peretz
2025-12-25 9:19 ` patch 'net/mlx5: fix Tx metadata pattern template mismatch' " Shani Peretz
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:19 UTC (permalink / raw)
To: Andrew Boyer; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/b8ef3438181de1ab85e99fe51630e67c245173fc
Thanks.
Shani
---
From b8ef3438181de1ab85e99fe51630e67c245173fc Mon Sep 17 00:00:00 2001
From: Andrew Boyer <andrew.boyer@amd.com>
Date: Thu, 20 Nov 2025 10:39:36 -0800
Subject: [PATCH] doc: add Pollara 400 device in ionic guide
[ upstream commit 899e7bb0ab84a31a36437e8ad6e40493eea4b0ef ]
The Pollara 400 AI NIC is supported without any PMD changes.
Add a link to the product brief.
Signed-off-by: Andrew Boyer <andrew.boyer@amd.com>
---
doc/guides/nics/ionic.rst | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/ionic.rst b/doc/guides/nics/ionic.rst
index a991a2cf3f..2709a888fb 100644
--- a/doc/guides/nics/ionic.rst
+++ b/doc/guides/nics/ionic.rst
@@ -1,5 +1,5 @@
.. SPDX-License-Identifier: BSD-3-Clause
- Copyright 2018-2022 Advanced Micro Devices, Inc.
+ Copyright 2018-2025 Advanced Micro Devices, Inc.
IONIC Driver
============
@@ -15,6 +15,8 @@ It currently supports the below models:
`(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pensando-elba-product-brief.pdf>`__
- DSC3-400 dual-port 400G Distributed Services Card
`(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pensando-dsc3-product-brief.pdf>`__
+- Pollara 400 single-port 400G AI NIC
+ `(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pollara-product-brief.pdf>`__
Please visit the
`AMD Pensando Networking
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.567852711 +0200
+++ 0100-doc-add-Pollara-400-device-in-ionic-guide.patch 2025-12-25 11:16:36.360852000 +0200
@@ -1 +1 @@
-From 899e7bb0ab84a31a36437e8ad6e40493eea4b0ef Mon Sep 17 00:00:00 2001
+From b8ef3438181de1ab85e99fe51630e67c245173fc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 899e7bb0ab84a31a36437e8ad6e40493eea4b0ef ]
+
@@ -9,2 +10,0 @@
-Cc: stable@dpdk.org
-
@@ -13,3 +13,2 @@
- doc/guides/cryptodevs/ionic.rst | 4 +++-
- doc/guides/nics/ionic.rst | 4 +++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
+ doc/guides/nics/ionic.rst | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
@@ -17,20 +15,0 @@
-diff --git a/doc/guides/cryptodevs/ionic.rst b/doc/guides/cryptodevs/ionic.rst
-index d563602ebe..7c9d2ebd04 100644
---- a/doc/guides/cryptodevs/ionic.rst
-+++ b/doc/guides/cryptodevs/ionic.rst
-@@ -1,5 +1,5 @@
- .. SPDX-License-Identifier: BSD-3-Clause
-- Copyright 2021-2024 Advanced Micro Devices, Inc.
-+ Copyright 2021-2025 Advanced Micro Devices, Inc.
-
- IONIC Crypto Driver
- ===================
-@@ -16,6 +16,8 @@ It currently supports the below models:
- `(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pensando-elba-product-brief.pdf>`__
- - DSC3-400 dual-port 400G Distributed Services Card
- `(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pensando-dsc3-product-brief.pdf>`__
-+- Pollara 400 single-port 400G AI NIC
-+ `(pdf) <https://www.amd.com/content/dam/amd/en/documents/pensando-technical-docs/product-briefs/pollara-product-brief.pdf>`__
-
- Please visit the
- `AMD Pensando Networking
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'doc: fix note in FreeBSD guide' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (98 preceding siblings ...)
2025-12-25 9:19 ` patch 'doc: add Pollara 400 device in ionic guide' " Shani Peretz
@ 2025-12-25 9:19 ` Shani Peretz
2025-12-25 9:19 ` patch 'net/mlx5: fix Tx metadata pattern template mismatch' " Shani Peretz
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:19 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/2c2ba8c9894dff4e2829087a4fd9468a9d07f788
Thanks.
Shani
---
From 2c2ba8c9894dff4e2829087a4fd9468a9d07f788 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 12:53:42 +0100
Subject: [PATCH] doc: fix note in FreeBSD guide
[ upstream commit da1cd5cf6a8578aa879a9d5517132d13973cc38a ]
The note about the prefix of the package pyelftools was not showed
in the documentation output because the syntax was missing a colon,
so it was considered as a simple comment in the source file.
Fixes: 9e6f75e259a8 ("doc: update build section of FreeBSD guide")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/freebsd_gsg/build_dpdk.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guides/freebsd_gsg/build_dpdk.rst b/doc/guides/freebsd_gsg/build_dpdk.rst
index 86e8e5a805..4ca9187c1a 100644
--- a/doc/guides/freebsd_gsg/build_dpdk.rst
+++ b/doc/guides/freebsd_gsg/build_dpdk.rst
@@ -18,7 +18,7 @@ The following FreeBSD packages are required to build DPDK:
* pkgconf
* py38-pyelftools
-.. note:
+.. note::
The specific package for pyelftools is dependent on the version of python in use,
Python 3.8 being the version at type of writing, hence the ``py38`` prefix.
--
2.43.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-12-25 11:16:41.614755139 +0200
+++ 0101-doc-fix-note-in-FreeBSD-guide.patch 2025-12-25 11:16:36.366840000 +0200
@@ -1 +1 @@
-From da1cd5cf6a8578aa879a9d5517132d13973cc38a Mon Sep 17 00:00:00 2001
+From 2c2ba8c9894dff4e2829087a4fd9468a9d07f788 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit da1cd5cf6a8578aa879a9d5517132d13973cc38a ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index f98292bf41..a442473ec2 100644
+index 86e8e5a805..4ca9187c1a 100644
^ permalink raw reply [flat|nested] 195+ messages in thread
* patch 'net/mlx5: fix Tx metadata pattern template mismatch' has been queued to stable release 23.11.6
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
` (99 preceding siblings ...)
2025-12-25 9:19 ` patch 'doc: fix note in FreeBSD " Shani Peretz
@ 2025-12-25 9:19 ` Shani Peretz
100 siblings, 0 replies; 195+ messages in thread
From: Shani Peretz @ 2025-12-25 9:19 UTC (permalink / raw)
To: Shani Peretz; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 23.11.6
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/30/25. 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/9831298349d105fc0aff7b937ad772bc8705c4b8
Thanks.
Shani
---
From 9831298349d105fc0aff7b937ad772bc8705c4b8 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Thu, 20 Nov 2025 12:49:36 +0200
Subject: [PATCH] net/mlx5: fix Tx metadata pattern template mismatch
When representor matching is disabled with dv_xmeta_en=4, the Tx metadata
copy flows use SQ (send queue) pattern matching, but the pattern template
was still configured to use ETH match-all pattern. This mismatch causes
hardware to reject the flows with error CQEs during port configuration.
This patch fixes the issue by using SQ-based pattern template
(flow_hw_create_tx_repr_sq_pattern_tmpl) instead of the ETH match-all
template (flow_hw_create_tx_default_mreg_copy_pattern_template).
Fixes: 593fb3fdfa10 ("net/mlx5: fix multi process Tx default rules")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 42 +--------------------------------
1 file changed, 1 insertion(+), 41 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 59a3e71855..d17b4d560e 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -7946,46 +7946,6 @@ flow_hw_create_ctrl_port_pattern_template(struct rte_eth_dev *dev,
return flow_hw_pattern_template_create(dev, &attr, items, error);
}
-/*
- * Creating a flow pattern template with all ETH packets matching.
- * This template is used to set up a table for default Tx copy (Tx metadata
- * to REG_C_1) flow rule usage.
- *
- * @param dev
- * Pointer to Ethernet device.
- * @param error
- * Pointer to error structure.
- *
- * @return
- * Pointer to flow pattern template on success, NULL otherwise.
- */
-static struct rte_flow_pattern_template *
-flow_hw_create_tx_default_mreg_copy_pattern_template(struct rte_eth_dev *dev,
- struct rte_flow_error *error)
-{
- struct rte_flow_pattern_template_attr tx_pa_attr = {
- .relaxed_matching = 0,
- .egress = 1,
- };
- struct rte_flow_item_eth promisc = {
- .hdr.dst_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
- .hdr.src_addr.addr_bytes = "\x00\x00\x00\x00\x00\x00",
- .hdr.ether_type = 0,
- };
- struct rte_flow_item eth_all[] = {
- [0] = {
- .type = RTE_FLOW_ITEM_TYPE_ETH,
- .spec = &promisc,
- .mask = &promisc,
- },
- [1] = {
- .type = RTE_FLOW_ITEM_TYPE_END,
- },
- };
-
- return flow_hw_pattern_template_create(dev, &tx_pa_attr, eth_all, error);
-}
-
/*
* Creating a flow pattern template with all LACP packets matching, only for NIC
* ingress domain.
@@ -8691,7 +8651,7 @@ flow_hw_create_ctrl_tables(struct rte_eth_dev *dev, struct rte_flow_error *error
/* Create templates and table for default Tx metadata copy flow rule. */
if (!repr_matching && xmeta == MLX5_XMETA_MODE_META32_HWS) {
hw_ctrl_fdb->tx_meta_items_tmpl =
- flow_hw_create_tx_default_mreg_copy_pattern_template(dev, error);
+ flow_hw_create_tx_repr_sq_pattern_tmpl(dev, error);
if (!hw_ctrl_fdb->tx_meta_items_tmpl) {
DRV_LOG(ERR, "port %u failed to Tx metadata copy pattern"
" template for control flows", dev->data->port_id);
--
2.43.0
^ permalink raw reply [flat|nested] 195+ messages in thread
end of thread, other threads:[~2025-12-25 9:27 UTC | newest]
Thread overview: 195+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-21 14:55 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 23.11.6 Shani Peretz
2025-12-21 14:55 ` patch 'eal: fix plugin dir walk' " Shani Peretz
2025-12-21 14:55 ` patch 'cmdline: fix port list parsing' " Shani Peretz
2025-12-21 14:55 ` patch 'cmdline: fix highest bit " Shani Peretz
2025-12-21 14:55 ` patch 'tailq: fix lookup macro' " Shani Peretz
2025-12-21 14:55 ` patch 'hash: fix unaligned access in predictable RSS' " Shani Peretz
2025-12-21 14:55 ` patch 'graph: fix unaligned access in stats' " Shani Peretz
2025-12-21 14:55 ` patch 'eventdev: fix listing timer adapters with telemetry' " Shani Peretz
2025-12-21 14:55 ` patch 'cfgfile: fix section count with no name' " Shani Peretz
2025-12-21 14:55 ` patch 'net/gve: do not write zero-length descriptors' " Shani Peretz
2025-12-21 14:55 ` patch 'net/gve: validate Tx packet before sending' " Shani Peretz
2025-12-21 14:56 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: increase size of set cores list command' " Shani Peretz
2025-12-21 14:56 ` patch 'net/dpaa2: fix shaper rate' " Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: monitor state of primary process' " Shani Peretz
2025-12-21 14:56 ` patch 'net/gve: fix disabling interrupts on DQ' " Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: fix conntrack action query' " Shani Peretz
2025-12-21 14:56 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Shani Peretz
2025-12-21 14:56 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Shani Peretz
2025-12-21 14:56 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix min and max MTU reporting' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix storage of shared Rx queues' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix unsupported flow rule port action' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix non-template age rules flush' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix connection tracking state item validation' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow age action handling' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix interface name parameter definition' " Shani Peretz
2025-12-21 14:56 ` patch 'net/iavf: fix Tx vector path selection logic' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Shani Peretz
2025-12-21 14:56 ` patch 'net/intel: fix assumption about tag placement order' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix adding special words' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix memory leak in recipe " Shani Peretz
2025-12-21 14:56 ` patch 'gro: fix payload corruption in coalescing packets' " Shani Peretz
2025-12-21 14:56 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Shani Peretz
2025-12-21 14:56 ` patch 'eal: fix MP socket cleanup' " Shani Peretz
2025-12-21 14:56 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Shani Peretz
2025-12-21 14:56 ` patch 'efd: fix AVX2 support' " Shani Peretz
2025-12-21 14:56 ` patch 'net/octeon_ep: fix device start' " Shani Peretz
2025-12-21 14:56 ` patch 'common/cnxk: fix async event handling' " Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix feature list of ice driver' " Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix feature list of iavf " Shani Peretz
2025-12-21 14:56 ` patch 'baseband/acc: fix exported header' " Shani Peretz
2025-12-21 14:56 ` patch 'eventdev: do not include driver header in DMA adapter' " Shani Peretz
2025-12-21 14:56 ` patch 'gpudev: fix driver header for Windows' " Shani Peretz
2025-12-21 14:56 ` patch 'drivers: fix some exported headers' " Shani Peretz
2025-12-21 14:56 ` patch 'test/debug: fix crash with mlx5 devices' " Shani Peretz
2025-12-21 14:56 ` patch 'bus/pci: fix build with MinGW 13' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: " Shani Peretz
2025-12-21 14:56 ` patch 'dma/hisilicon: fix stop with pending transfers' " Shani Peretz
2025-12-21 14:56 ` patch 'test/dma: fix failure condition' " Shani Peretz
2025-12-21 14:56 ` patch 'eal/x86: enable timeout in AMD power monitor' " Shani Peretz
2025-12-21 14:56 ` patch 'fib6: fix tbl8 allocation check logic' " Shani Peretz
2025-12-21 14:56 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Shani Peretz
2025-12-21 14:56 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Shani Peretz
2025-12-21 14:56 ` patch 'vhost: fix double fetch when dequeue offloading' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice/base: fix integer overflow on NVM init' " Shani Peretz
2025-12-21 14:56 ` patch 'doc: fix display of commands in cpfl guide' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix initialization with 8 ports' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: remove indirection for FDIR filters' " Shani Peretz
2025-12-21 14:56 ` patch 'net/ice: fix memory leak in raw pattern parse' " Shani Peretz
2025-12-21 14:56 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5/hws: fix ESP header match in strict mode' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix multicast' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix indirect flow action memory leak' " Shani Peretz
2025-12-21 14:56 ` patch 'net/mlx5: fix MTU initialization' " Shani Peretz
2025-12-21 14:57 ` patch 'net/mlx5: fix leak of flow indexed pools' " Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix inconsistent lock' " Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN resources freeing' " Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Shani Peretz
2025-12-21 14:57 ` patch 'net/af_packet: fix crash in secondary process' " Shani Peretz
2025-12-21 14:57 ` patch 'net/ark: remove double mbuf free' " Shani Peretz
2025-12-21 14:57 ` patch 'app/testpmd: stop forwarding in secondary process' " Shani Peretz
2025-12-21 14:57 ` patch 'net/tap: fix build with LTO' " Shani Peretz
2025-12-21 14:57 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Shani Peretz
2025-12-21 14:57 ` patch 'ethdev: fix VLAN filter parameter description' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix file descriptor leak on read error' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix Tx queue free' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix checksum flag handling and error return' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: reject multi-queue configuration' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Shani Peretz
2025-12-21 14:57 ` patch 'net/enetfec: reject Tx deferred queue' " Shani Peretz
2025-12-21 14:57 ` patch 'net/tap: fix interrupt callback crash after failed start' " Shani Peretz
2025-12-21 14:57 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Shani Peretz
2025-12-21 14:57 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Shani Peretz
2025-12-21 14:57 ` patch 'net/dpaa2: fix uninitialized variable' " Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa2: receive packets with additional parse errors' " Shani Peretz
2025-12-25 9:17 ` patch 'crypto/qat: fix ECDH' " Shani Peretz
2025-12-25 9:17 ` patch 'crypto/cnxk: refactor RSA verification' " Shani Peretz
2025-12-25 9:17 ` patch 'test/crypto: fix mbuf handling' " Shani Peretz
2025-12-25 9:17 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Shani Peretz
2025-12-25 9:17 ` patch 'test/crypto: fix vector initialization' " Shani Peretz
2025-12-25 9:17 ` patch 'crypto/virtio: fix cookies leak' " Shani Peretz
2025-12-25 9:17 ` patch 'bitops: improve power of 2 alignment documentation' " Shani Peretz
2025-12-25 9:17 ` patch 'sched: fix WRR parameter data type' " Shani Peretz
2025-12-25 9:17 ` patch 'config/arm: enable NUMA for Neoverse N2' " Shani Peretz
2025-12-25 9:17 ` patch 'bus/pci: fix resource leak in secondary process' " Shani Peretz
2025-12-25 9:17 ` patch 'test/hash: check memory allocation' " Shani Peretz
2025-12-25 9:17 ` patch 'dmadev: fix debug build with tracepoints' " Shani Peretz
2025-12-25 9:17 ` patch 'bus/cdx: fix device name in probing error message' " Shani Peretz
2025-12-25 9:17 ` patch 'bus/cdx: fix release in probing for secondary process' " Shani Peretz
2025-12-25 9:17 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Shani Peretz
2025-12-25 9:17 ` patch 'net/iavf: fix build with clang 21' " Shani Peretz
2025-12-25 9:17 ` patch 'test: " Shani Peretz
2025-12-25 9:17 ` patch 'eventdev/crypto: " Shani Peretz
2025-12-25 9:17 ` patch 'rawdev: " Shani Peretz
2025-12-25 9:17 ` patch 'vdpa/mlx5: remove unused constant' " Shani Peretz
2025-12-25 9:17 ` patch 'crypto/mlx5: remove unused constants' " Shani Peretz
2025-12-25 9:17 ` patch 'regex/mlx5: remove useless " Shani Peretz
2025-12-25 9:17 ` patch 'common/mlx5: " Shani Peretz
2025-12-25 9:17 ` patch 'net/mlx5: " Shani Peretz
2025-12-25 9:17 ` patch 'net/mlx5: remove unused macros' " Shani Peretz
2025-12-25 9:17 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Shani Peretz
2025-12-25 9:17 ` patch 'app/dma-perf: fix use after free' " Shani Peretz
2025-12-25 9:17 ` patch 'app/dma-perf: fix on-flight DMA when verifying data' " Shani Peretz
2025-12-25 9:17 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Shani Peretz
2025-12-25 9:17 ` patch 'net/dpaa: fix resource leak' " Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Shani Peretz
2025-12-25 9:17 ` patch 'net/ngbe: " Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: add device arguments for FDIR' " Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Shani Peretz
2025-12-25 9:17 ` patch 'net/txgbe: fix FDIR mode clearing' " Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 " Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Shani Peretz
2025-12-25 9:18 ` patch 'net/txgbe: remove unsupported flow action mark' " Shani Peretz
2025-12-25 9:18 ` patch 'net/nfp: fix metering cleanup' " Shani Peretz
2025-12-25 9:18 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Tx port' " Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix DCB Rx queues' " Shani Peretz
2025-12-25 9:18 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Shani Peretz
2025-12-25 9:18 ` patch 'net/fm10k: fix build with GCC 16' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx4: fix unnecessary comma' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix unnecessary commas' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix multi-process Tx default rules' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix control flow leakage for external SQ' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect RSS action hash' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix external queues access' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix modify field action restriction' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix meter mark allocation' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix indirect meter index leak' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Shani Peretz
2025-12-25 9:18 ` patch 'vhost: fix external buffer in VDUSE' " Shani Peretz
2025-12-25 9:18 ` patch 'net: fix L2 length for GRE packets' " Shani Peretz
2025-12-25 9:18 ` patch 'graph: fix updating edge with active graph' " Shani Peretz
2025-12-25 9:18 ` patch 'app/pdump: remove hard-coded memory channels' " Shani Peretz
2025-12-25 9:18 ` patch 'pdump: handle primary process exit' " Shani Peretz
2025-12-25 9:18 ` patch 'telemetry: make socket handler typedef private' " Shani Peretz
2025-12-25 9:18 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Shani Peretz
2025-12-25 9:18 ` patch 'lib: fix backticks matching in Doxygen comments' " Shani Peretz
2025-12-25 9:18 ` patch 'mcslock: fix memory ordering' " Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish safe partial order in default mode' " Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish a safe partial order in hts-ring' " Shani Peretz
2025-12-25 9:18 ` patch 'ring: establish safe partial order in RTS mode' " Shani Peretz
2025-12-25 9:18 ` patch 'doc: add device arguments in txgbe guide' " Shani Peretz
2025-12-25 9:18 ` patch 'net/axgbe: fix build with GCC 16' " Shani Peretz
2025-12-25 9:18 ` patch 'net/dpaa2: fix duplicate call of close' " Shani Peretz
2025-12-25 9:18 ` patch 'app/testpmd: fix flex item link parsing' " Shani Peretz
2025-12-25 9:18 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Shani Peretz
2025-12-25 9:18 ` patch 'net/ice: fix statistics' " Shani Peretz
2025-12-25 9:18 ` patch 'net/idpf: fix queue setup with TSO offload' " Shani Peretz
2025-12-25 9:18 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Shani Peretz
2025-12-25 9:18 ` patch 'net/iavf: fix Rx timestamp validity check' " Shani Peretz
2025-12-25 9:18 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Shani Peretz
2025-12-25 9:18 ` patch 'common/cnxk: fix null SQ access' " Shani Peretz
2025-12-25 9:18 ` patch 'net/cnxk: fix default meter pre-color' " Shani Peretz
2025-12-25 9:18 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Shani Peretz
2025-12-25 9:18 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Shani Peretz
2025-12-25 9:18 ` patch 'app/flow-perf: fix rules array length' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix spurious CPU wakeups' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix send to kernel action resources release' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: release representor interrupt handler' " Shani Peretz
2025-12-25 9:18 ` patch 'common/mlx5: release unused mempool entries' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix device start error handling' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix uninitialized variable' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Shani Peretz
2025-12-25 9:18 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Shani Peretz
2025-12-25 9:18 ` patch 'examples/server_node_efd: fix format overflow' " Shani Peretz
2025-12-25 9:18 ` patch 'examples/vdpa: " Shani Peretz
2025-12-25 9:19 ` patch 'net/mlx5: fix flex flow item header length' " Shani Peretz
2025-12-25 9:19 ` patch 'doc: add Pollara 400 device in ionic guide' " Shani Peretz
2025-12-25 9:19 ` patch 'doc: fix note in FreeBSD " Shani Peretz
2025-12-25 9:19 ` patch 'net/mlx5: fix Tx metadata pattern template mismatch' " Shani Peretz
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).