* 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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; 93+ 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] 93+ 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
91 siblings, 0 replies; 93+ 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] 93+ messages in thread
end of thread, other threads:[~2025-12-21 15:05 UTC | newest]
Thread overview: 93+ 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
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).