* patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4
@ 2025-10-31 14:32 Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix plugin dir walk' " Kevin Traynor
` (132 more replies)
0 siblings, 133 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 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 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/363fb86432beb3e4f9d59b3cc9373ba816c5de53
Thanks.
Kevin
---
From 363fb86432beb3e4f9d59b3cc9373ba816c5de53 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 720ab398e4b77ed6c2f2574b33c2d5065716dacc ]
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 41072fda31..e19b01476e 100644
--- a/.mailmap
+++ b/.mailmap
@@ -928,4 +928,5 @@ 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>
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
@@ -8,5 +8,5 @@ which jq || {
}
-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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.356626083 +0000
+++ 0001-test-telemetry-fix-test-calling-all-commands.patch 2025-10-31 13:53:52.001523259 +0000
@@ -1 +1 @@
-From 720ab398e4b77ed6c2f2574b33c2d5065716dacc Mon Sep 17 00:00:00 2001
+From 363fb86432beb3e4f9d59b3cc9373ba816c5de53 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 720ab398e4b77ed6c2f2574b33c2d5065716dacc ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 34a99f93a1..d4c04f3b81 100644
+index 41072fda31..e19b01476e 100644
@@ -31 +32 @@
-@@ -956,4 +956,5 @@ Manish Kurup <manish.kurup@broadcom.com>
+@@ -928,4 +928,5 @@ Manish Kurup <manish.kurup@broadcom.com>
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eal: fix plugin dir walk' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'cmdline: fix port list parsing' " Kevin Traynor
` (131 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331
Thanks.
Kevin
---
From 26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331 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 2a3408c0c1..6f1a9ffc56 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -396,10 +396,19 @@ 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')
@@ -415,10 +424,6 @@ 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.384506249 +0000
+++ 0002-eal-fix-plugin-dir-walk.patch 2025-10-31 13:53:52.004523268 +0000
@@ -1 +1 @@
-From c32e203ee23473ccf3c8526d12e1c59f17c50eab Mon Sep 17 00:00:00 2001
+From 26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331 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 2a3408c0c1..6f1a9ffc56 100644
@@ -52 +53 @@
-@@ -400,10 +400,19 @@ eal_plugins_init(void)
+@@ -396,10 +396,19 @@ eal_plugins_init(void)
@@ -73 +74 @@
-@@ -419,10 +428,6 @@ eal_plugindir_init(const char *path)
+@@ -415,10 +424,6 @@ eal_plugindir_init(const char *path)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'cmdline: fix port list parsing' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix plugin dir walk' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'tailq: fix lookup macro' " Kevin Traynor
` (130 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Marat Khalili, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/2b2f79af59297ea13bccf2fce249d6960c3c607b
Thanks.
Kevin
---
From 2b2f79af59297ea13bccf2fce249d6960c3c607b 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
@@ -32,13 +32,10 @@ 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;
@@ -64,4 +61,5 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
parse_set_list(pl, ps, pe);
+ first = (last == NULL ? NULL : last + 1);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.411615984 +0000
+++ 0003-cmdline-fix-port-list-parsing.patch 2025-10-31 13:53:52.005623420 +0000
@@ -1 +1 @@
-From 48e03475262798e6758b9c767e87e2f88375072c Mon Sep 17 00:00:00 2001
+From 2b2f79af59297ea13bccf2fce249d6960c3c607b 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 @@
-@@ -34,13 +34,10 @@ static int
+@@ -32,13 +32,10 @@ static int
@@ -46 +47 @@
-@@ -66,4 +63,5 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
+@@ -64,4 +61,5 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'tailq: fix lookup macro' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix plugin dir walk' " Kevin Traynor
2025-10-31 14:32 ` patch 'cmdline: fix port list parsing' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'hash: fix unaligned access in predictable RSS' " Kevin Traynor
` (129 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/87b15f2e91f310e188a79baa64aafb5a64363975
Thanks.
Kevin
---
From 87b15f2e91f310e188a79baa64aafb5a64363975 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 89f7ef2134..e7caed6812 100644
--- a/lib/eal/include/rte_tailq.h
+++ b/lib/eal/include/rte_tailq.h
@@ -70,9 +70,10 @@ struct rte_tailq_elem {
* 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); \
+})
/**
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.438635181 +0000
+++ 0004-tailq-fix-lookup-macro.patch 2025-10-31 13:53:52.006239977 +0000
@@ -1 +1 @@
-From 5d2d4033abe5bb17f6e328fad1a615553573abd5 Mon Sep 17 00:00:00 2001
+From 87b15f2e91f310e188a79baa64aafb5a64363975 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5d2d4033abe5bb17f6e328fad1a615553573abd5 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'hash: fix unaligned access in predictable RSS' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (2 preceding siblings ...)
2025-10-31 14:32 ` patch 'tailq: fix lookup macro' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'graph: fix stats query with no node xstats' " Kevin Traynor
` (128 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 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 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/57b8004f0c80c54aa6184a9c816c13b269eaaef2
Thanks.
Kevin
---
From 57b8004f0c80c54aa6184a9c816c13b269eaaef2 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 336c228e64..b8c0910a45 100644
--- a/lib/hash/rte_thash.c
+++ b/lib/hash/rte_thash.c
@@ -410,8 +410,8 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.465633512 +0000
+++ 0005-hash-fix-unaligned-access-in-predictable-RSS.patch 2025-10-31 13:53:52.006523275 +0000
@@ -1 +1 @@
-From b70d04d8ac6d47b221500d418df1de2b2c65b50a Mon Sep 17 00:00:00 2001
+From 57b8004f0c80c54aa6184a9c816c13b269eaaef2 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 336c228e64..b8c0910a45 100644
@@ -28 +29 @@
-@@ -416,8 +416,8 @@ static inline uint32_t
+@@ -410,8 +410,8 @@ static inline uint32_t
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'graph: fix stats query with no node xstats' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (3 preceding siblings ...)
2025-10-31 14:32 ` patch 'hash: fix unaligned access in predictable RSS' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'graph: fix unaligned access in stats' " Kevin Traynor
` (127 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Marat Khalili; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7fd0620e8dc7bf36ab3c8750a9b4a594fc59e621
Thanks.
Kevin
---
From 7fd0620e8dc7bf36ab3c8750a9b4a594fc59e621 Mon Sep 17 00:00:00 2001
From: Marat Khalili <marat.khalili@huawei.com>
Date: Wed, 25 Jun 2025 10:27:21 +0100
Subject: [PATCH] graph: fix stats query with no node xstats
[ upstream commit 7c6410ed8b1d800562dcf11ebd1784f6022c617d ]
This was flagged by undefined behaviour sanitizer: memset should not be
called with NULL first argument. (memset requires first argument to be
pointer to a memory object, so passing NULL may result in an undefined
behaviour including among other things optimizer potentially removing
code paths depending on stat->xstat_count being NULL.)
Sanitizer message:
lib/graph/graph_stats.c:473:2: runtime error: null pointer passed as
argument 1, which is declared to never be null
Add a check that stat->xstat_cntrs is not zero before the call, since
stat->xstat_count can only be NULL when stat->xstat_cntrs is zero.
Fixes: 070db97e017b ("graph: support node xstats")
Signed-off-by: Marat Khalili <marat.khalili@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/graph/graph_stats.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/graph/graph_stats.c b/lib/graph/graph_stats.c
index 0bbbd9fb7c..e955ee5e06 100644
--- a/lib/graph/graph_stats.c
+++ b/lib/graph/graph_stats.c
@@ -468,5 +468,6 @@ cluster_node_arregate_stats(struct cluster_node *cluster, bool dispatch)
uint8_t i;
- memset(stat->xstat_count, 0, sizeof(uint64_t) * stat->xstat_cntrs);
+ if (stat->xstat_cntrs != 0)
+ memset(stat->xstat_count, 0, sizeof(uint64_t) * stat->xstat_cntrs);
for (count = 0; count < cluster->nb_nodes; count++) {
node = cluster->nodes[count];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.492901098 +0000
+++ 0006-graph-fix-stats-query-with-no-node-xstats.patch 2025-10-31 13:53:52.007523278 +0000
@@ -1 +1 @@
-From 7c6410ed8b1d800562dcf11ebd1784f6022c617d Mon Sep 17 00:00:00 2001
+From 7fd0620e8dc7bf36ab3c8750a9b4a594fc59e621 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7c6410ed8b1d800562dcf11ebd1784f6022c617d ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index eac73cbf71..583ad8dbd5 100644
+index 0bbbd9fb7c..e955ee5e06 100644
@@ -33 +34 @@
-@@ -471,5 +471,6 @@ cluster_node_arregate_stats(struct cluster_node *cluster, bool dispatch)
+@@ -468,5 +468,6 @@ cluster_node_arregate_stats(struct cluster_node *cluster, bool dispatch)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'graph: fix unaligned access in stats' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (4 preceding siblings ...)
2025-10-31 14:32 ` patch 'graph: fix stats query with no node xstats' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'eventdev: fix listing timer adapters with telemetry' " Kevin Traynor
` (126 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: David Marchand; +Cc: Kiran Kumar K, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/18222a6c7b4e674a7a5cd173caedac636537ef26
Thanks.
Kevin
---
From 18222a6c7b4e674a7a5cd173caedac636537ef26 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 | 102 +++++++++++++++++++++++-----------------
1 file changed, 58 insertions(+), 44 deletions(-)
diff --git a/lib/graph/graph_stats.c b/lib/graph/graph_stats.c
index e955ee5e06..80f6d1eae3 100644
--- a/lib/graph/graph_stats.c
+++ b/lib/graph/graph_stats.c
@@ -37,5 +37,4 @@ struct __rte_cache_aligned rte_graph_cluster_stats {
bool dispatch;
void *cookie;
- size_t sz;
struct cluster_node clusters[];
@@ -178,13 +177,53 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
};
+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 */
@@ -203,7 +242,7 @@ stats_mem_init(struct cluster *cluster,
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;
@@ -211,5 +250,4 @@ stats_mem_init(struct cluster *cluster,
stats->socket_id = socket_id;
stats->cookie = prm->cookie;
- stats->sz = sz;
}
@@ -218,8 +256,7 @@ stats_mem_init(struct cluster *cluster,
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;
@@ -247,13 +284,4 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
}
- /* 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;
@@ -261,5 +289,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
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;
@@ -270,5 +298,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
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);
@@ -278,5 +306,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
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,5 +316,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
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);
@@ -295,21 +323,11 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
}
- 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)
@@ -380,8 +398,5 @@ 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;
@@ -401,6 +416,5 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
/* 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;
}
@@ -409,12 +423,15 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
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;
}
@@ -423,13 +440,10 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
}
- /* 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();
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.520133323 +0000
+++ 0007-graph-fix-unaligned-access-in-stats.patch 2025-10-31 13:53:52.009452742 +0000
@@ -1 +1 @@
-From 826af93a68f358f8eb4f363e42d114b93fde0d69 Mon Sep 17 00:00:00 2001
+From 18222a6c7b4e674a7a5cd173caedac636537ef26 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 826af93a68f358f8eb4f363e42d114b93fde0d69 ]
+
@@ -32 +33,0 @@
-Cc: stable@dpdk.org
@@ -41 +42 @@
-index 583ad8dbd5..e0fc8fd25c 100644
+index e955ee5e06..80f6d1eae3 100644
@@ -44 +45 @@
-@@ -38,5 +38,4 @@ struct __rte_cache_aligned rte_graph_cluster_stats {
+@@ -37,5 +37,4 @@ struct __rte_cache_aligned rte_graph_cluster_stats {
@@ -50 +51 @@
-@@ -179,13 +178,53 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
+@@ -178,13 +177,53 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
@@ -105 +106 @@
-@@ -204,7 +243,7 @@ stats_mem_init(struct cluster *cluster,
+@@ -203,7 +242,7 @@ stats_mem_init(struct cluster *cluster,
@@ -115 +116 @@
-@@ -212,5 +251,4 @@ stats_mem_init(struct cluster *cluster,
+@@ -211,5 +250,4 @@ stats_mem_init(struct cluster *cluster,
@@ -121 +122 @@
-@@ -219,8 +257,7 @@ stats_mem_init(struct cluster *cluster,
+@@ -218,8 +256,7 @@ stats_mem_init(struct cluster *cluster,
@@ -131 +132 @@
-@@ -248,13 +285,4 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -247,13 +284,4 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -145 +146 @@
-@@ -262,5 +290,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -261,5 +289,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -152 +153 @@
-@@ -271,5 +299,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -270,5 +298,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -159 +160 @@
-@@ -279,5 +307,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -278,5 +306,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -166 +167 @@
-@@ -289,5 +317,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -288,5 +316,5 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -173 +174 @@
-@@ -296,21 +324,11 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -295,21 +323,11 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -195 +196 @@
-@@ -382,8 +400,5 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -380,8 +398,5 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
@@ -204 +205 @@
-@@ -403,6 +418,5 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -401,6 +416,5 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
@@ -212 +213 @@
-@@ -411,12 +425,15 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -409,12 +423,15 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
@@ -230 +231 @@
-@@ -425,13 +442,10 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -423,13 +440,10 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eventdev: fix listing timer adapters with telemetry' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (5 preceding siblings ...)
2025-10-31 14:32 ` patch 'graph: fix unaligned access in stats' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: send whole packet when mbuf is large' " Kevin Traynor
` (125 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/01b4b91026847a733bbd795da14cba787580519d
Thanks.
Kevin
---
From 01b4b91026847a733bbd795da14cba787580519d 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 5886965d14..4132f71f2d 100644
--- a/lib/eventdev/rte_event_timer_adapter.c
+++ b/lib/eventdev/rte_event_timer_adapter.c
@@ -1399,5 +1399,5 @@ 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;
@@ -1445,5 +1445,5 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.547397175 +0000
+++ 0008-eventdev-fix-listing-timer-adapters-with-telemetry.patch 2025-10-31 13:53:52.010523287 +0000
@@ -1 +1 @@
-From 94b2ff7ee1976f80dd4822dab090bbbf693d12ca Mon Sep 17 00:00:00 2001
+From 01b4b91026847a733bbd795da14cba787580519d 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 5886965d14..4132f71f2d 100644
@@ -28 +29 @@
-@@ -1411,5 +1411,5 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
+@@ -1399,5 +1399,5 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
@@ -35 +36 @@
-@@ -1457,5 +1457,5 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
+@@ -1445,5 +1445,5 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: send whole packet when mbuf is large' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (6 preceding siblings ...)
2025-10-31 14:32 ` patch 'eventdev: fix listing timer adapters with telemetry' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: clean when insufficient Tx descriptors' " Kevin Traynor
` (124 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4a67e59c4a033935ec137522d328d522f0b23c4f
Thanks.
Kevin
---
From 4a67e59c4a033935ec137522d328d522f0b23c4f Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:05 -0700
Subject: [PATCH] net/gve: send whole packet when mbuf is large
[ upstream commit ee06313a50a8ebf18254a923152bf6729771cbc2 ]
Before this patch, only one descriptor would be written per mbuf in a
packet. In cases like TSO, it is possible for a single mbuf to have more
bytes than GVE_MAX_TX_BUF_SIZE_DQO. As such, instead of simply
truncating the data down to this size, the driver should actually write
descriptors for the rest of the buffers in the mbuf segment.
To that effect, the number of descriptors needed to send a packet must
be corrected to account for the potential additional descriptors.
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>
---
.mailmap | 1 +
drivers/net/gve/gve_tx_dqo.c | 54 ++++++++++++++++++++++++------------
2 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/.mailmap b/.mailmap
index e19b01476e..be3cea2d34 100644
--- a/.mailmap
+++ b/.mailmap
@@ -125,4 +125,5 @@ Andy Moreton <andy.moreton@amd.com> <amoreton@xilinx.com> <amoreton@solarflare.c
Andy Pei <andy.pei@intel.com>
Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
+Ankit Garg <nktgrg@google.com>
Ankur Dwivedi <adwivedi@marvell.com> <ankur.dwivedi@caviumnetworks.com> <ankur.dwivedi@cavium.com>
Anna Lukin <annal@silicom.co.il>
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 6984f92443..6227fa73b0 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -75,4 +75,17 @@ gve_tx_clean_dqo(struct gve_tx_queue *txq)
}
+static uint16_t
+gve_tx_pkt_nb_data_descs(struct rte_mbuf *tx_pkt)
+{
+ int nb_descs = 0;
+
+ while (tx_pkt) {
+ nb_descs += (GVE_TX_MAX_BUF_SIZE_DQO - 1 + tx_pkt->data_len) /
+ GVE_TX_MAX_BUF_SIZE_DQO;
+ tx_pkt = tx_pkt->next;
+ }
+ return nb_descs;
+}
+
static inline void
gve_tx_fill_seg_desc_dqo(volatile union gve_tx_desc_dqo *desc, struct rte_mbuf *tx_pkt)
@@ -98,5 +111,5 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
uint16_t nb_tx = 0;
uint64_t ol_flags;
- uint16_t nb_used;
+ uint16_t nb_descs;
uint16_t tx_id;
uint16_t sw_id;
@@ -125,5 +138,4 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
ol_flags = tx_pkt->ol_flags;
- nb_used = tx_pkt->nb_segs;
first_sw_id = sw_id;
@@ -131,6 +143,7 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
csum = !!(ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK_DQO);
- nb_used += tso;
- if (txq->nb_free < nb_used)
+ nb_descs = gve_tx_pkt_nb_data_descs(tx_pkt);
+ nb_descs += tso;
+ if (txq->nb_free < nb_descs)
break;
@@ -145,19 +158,26 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
PMD_DRV_LOG(DEBUG, "Overwriting an entry in sw_ring");
- txd = &txr[tx_id];
sw_ring[sw_id] = tx_pkt;
- /* fill Tx descriptor */
- txd->pkt.buf_addr = rte_cpu_to_le_64(rte_mbuf_data_iova(tx_pkt));
- txd->pkt.dtype = GVE_TX_PKT_DESC_DTYPE_DQO;
- txd->pkt.compl_tag = rte_cpu_to_le_16(first_sw_id);
- txd->pkt.buf_size = RTE_MIN(tx_pkt->data_len, GVE_TX_MAX_BUF_SIZE_DQO);
- txd->pkt.end_of_packet = 0;
- txd->pkt.checksum_offload_enable = csum;
+ /* fill Tx descriptors */
+ int mbuf_offset = 0;
+ while (mbuf_offset < tx_pkt->data_len) {
+ uint64_t buf_addr = rte_mbuf_data_iova(tx_pkt) +
+ mbuf_offset;
+
+ txd = &txr[tx_id];
+ txd->pkt.buf_addr = rte_cpu_to_le_64(buf_addr);
+ txd->pkt.compl_tag = rte_cpu_to_le_16(first_sw_id);
+ txd->pkt.dtype = GVE_TX_PKT_DESC_DTYPE_DQO;
+ txd->pkt.buf_size = RTE_MIN(tx_pkt->data_len - mbuf_offset,
+ GVE_TX_MAX_BUF_SIZE_DQO);
+ txd->pkt.end_of_packet = 0;
+ txd->pkt.checksum_offload_enable = csum;
+
+ mbuf_offset += txd->pkt.buf_size;
+ tx_id = (tx_id + 1) & mask;
+ }
- /* size of desc_ring and sw_ring could be different */
- tx_id = (tx_id + 1) & mask;
sw_id = (sw_id + 1) & sw_mask;
-
bytes += tx_pkt->data_len;
tx_pkt = tx_pkt->next;
@@ -167,6 +187,6 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
txd->pkt.end_of_packet = 1;
- txq->nb_free -= nb_used;
- txq->nb_used += nb_used;
+ txq->nb_free -= nb_descs;
+ txq->nb_used += nb_descs;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.576512063 +0000
+++ 0009-net-gve-send-whole-packet-when-mbuf-is-large.patch 2025-10-31 13:53:52.015523303 +0000
@@ -1 +1 @@
-From ee06313a50a8ebf18254a923152bf6729771cbc2 Mon Sep 17 00:00:00 2001
+From 4a67e59c4a033935ec137522d328d522f0b23c4f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee06313a50a8ebf18254a923152bf6729771cbc2 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index d4c04f3b81..6e5234223b 100644
+index e19b01476e..be3cea2d34 100644
@@ -29 +30 @@
-@@ -126,4 +126,5 @@ Andy Moreton <andy.moreton@amd.com> <amoreton@solarflare.com>
+@@ -125,4 +125,5 @@ Andy Moreton <andy.moreton@amd.com> <amoreton@xilinx.com> <amoreton@solarflare.c
@@ -33,2 +34,2 @@
- Ankur Dwivedi <adwivedi@marvell.com> <ankur.dwivedi@caviumnetworks.com>
- Ankur Dwivedi <adwivedi@marvell.com> <ankur.dwivedi@cavium.com>
+ Ankur Dwivedi <adwivedi@marvell.com> <ankur.dwivedi@caviumnetworks.com> <ankur.dwivedi@cavium.com>
+ Anna Lukin <annal@silicom.co.il>
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: clean when insufficient Tx descriptors' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (7 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: send whole packet when mbuf is large' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: do not write zero-length " Kevin Traynor
` (123 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d04632254ef040dd4c79edf95b10a6e0e5902a8d
Thanks.
Kevin
---
From d04632254ef040dd4c79edf95b10a6e0e5902a8d Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:06 -0700
Subject: [PATCH] net/gve: clean when insufficient Tx descriptors
[ upstream commit 92d330a3eabb1ca2f74d494ebea0104bc7fd081f ]
A single packet can technically require more than 32 (free_thresh)
descriptors to send. Count the number of descriptors needed to send out
a packet in DQO Tx, and ensure that there are enough descriptors in the
ring before writing. If there are not enough free descriptors, drop the
packet and increment drop counters.
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 | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 6227fa73b0..652a0e5175 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -75,4 +75,10 @@ gve_tx_clean_dqo(struct gve_tx_queue *txq)
}
+static inline void
+gve_tx_clean_descs_dqo(struct gve_tx_queue *txq, uint16_t nb_descs) {
+ while (--nb_descs)
+ gve_tx_clean_dqo(txq);
+}
+
static uint16_t
gve_tx_pkt_nb_data_descs(struct rte_mbuf *tx_pkt)
@@ -108,5 +114,4 @@ 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 nb_tx = 0;
uint64_t ol_flags;
@@ -131,9 +136,7 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
tx_pkt = tx_pkts[nb_tx];
- if (txq->nb_free <= txq->free_thresh) {
- nb_to_clean = DQO_TX_MULTIPLIER * txq->rs_thresh;
- while (nb_to_clean--)
- gve_tx_clean_dqo(txq);
- }
+ if (txq->nb_free <= txq->free_thresh)
+ gve_tx_clean_descs_dqo(txq, DQO_TX_MULTIPLIER *
+ txq->rs_thresh);
ol_flags = tx_pkt->ol_flags;
@@ -145,6 +148,14 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
nb_descs = gve_tx_pkt_nb_data_descs(tx_pkt);
nb_descs += tso;
- if (txq->nb_free < nb_descs)
- break;
+
+ /* Clean if there aren't enough descriptors to send the packet. */
+ if (unlikely(txq->nb_free < nb_descs)) {
+ int nb_to_clean = RTE_MAX(DQO_TX_MULTIPLIER * txq->rs_thresh,
+ nb_descs);
+
+ gve_tx_clean_descs_dqo(txq, nb_to_clean);
+ if (txq->nb_free < nb_descs)
+ break;
+ }
if (tso) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.603613932 +0000
+++ 0010-net-gve-clean-when-insufficient-Tx-descriptors.patch 2025-10-31 13:53:52.016523306 +0000
@@ -1 +1 @@
-From 92d330a3eabb1ca2f74d494ebea0104bc7fd081f Mon Sep 17 00:00:00 2001
+From d04632254ef040dd4c79edf95b10a6e0e5902a8d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 92d330a3eabb1ca2f74d494ebea0104bc7fd081f ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: do not write zero-length descriptors' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (8 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: clean when insufficient Tx descriptors' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: validate Tx packet before sending' " Kevin Traynor
` (122 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b343e73b03049fbd627c62ab9ae8b40360550ac1
Thanks.
Kevin
---
From b343e73b03049fbd627c62ab9ae8b40360550ac1 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 | 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 652a0e5175..b2e5aae634 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -169,4 +169,9 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
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;
@@ -190,4 +195,5 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
}
+finish_mbuf:
sw_id = (sw_id + 1) & sw_mask;
bytes += tx_pkt->data_len;
@@ -195,5 +201,6 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
} 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.630832332 +0000
+++ 0011-net-gve-do-not-write-zero-length-descriptors.patch 2025-10-31 13:53:52.017426238 +0000
@@ -1 +1 @@
-From 671d15dad5f41cda4887ca3bb73afafc1b9768e3 Mon Sep 17 00:00:00 2001
+From b343e73b03049fbd627c62ab9ae8b40360550ac1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 671d15dad5f41cda4887ca3bb73afafc1b9768e3 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: validate Tx packet before sending' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (9 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: do not write zero-length " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: add DQO Tx descriptor limit' " Kevin Traynor
` (121 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/055812afeb5c0efb6bd234104518652f958ab856
Thanks.
Kevin
---
From 055812afeb5c0efb6bd234104518652f958ab856 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 b2e5aae634..7e03e75b20 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -114,4 +114,6 @@ 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 first_sw_id;
+ const char *reason;
uint16_t nb_tx = 0;
uint64_t ol_flags;
@@ -120,5 +122,4 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
uint16_t sw_id;
uint64_t bytes;
- uint16_t first_sw_id;
uint8_t tso;
uint8_t csum;
@@ -140,4 +141,10 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
txq->rs_thresh);
+
+ if (rte_mbuf_check(tx_pkt, true, &reason)) {
+ PMD_DRV_LOG(DEBUG, "Invalid mbuf: %s", reason);
+ break;
+ }
+
ol_flags = tx_pkt->ol_flags;
first_sw_id = sw_id;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.658914418 +0000
+++ 0012-net-gve-validate-Tx-packet-before-sending.patch 2025-10-31 13:53:52.017523309 +0000
@@ -1 +1 @@
-From f33ce4445ee6bc8f6d2ea4d894511f5446e9e3a2 Mon Sep 17 00:00:00 2001
+From 055812afeb5c0efb6bd234104518652f958ab856 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f33ce4445ee6bc8f6d2ea4d894511f5446e9e3a2 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: add DQO Tx descriptor limit' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (10 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: validate Tx packet before sending' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: fix DQO TSO " Kevin Traynor
` (120 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/952398a7b241ed5a32b604a67f6972a33eb3589b
Thanks.
Kevin
---
From 952398a7b241ed5a32b604a67f6972a33eb3589b Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:09 -0700
Subject: [PATCH] net/gve: add DQO Tx descriptor limit
[ upstream commit f4a70b449bfac5343bf498f4132d5b8da4b0a885 ]
The hardware supports at most 10 data descriptors per MTU-sized segment.
GVE_TX_MAX_DATA_DESCS was defined in the initial implmenentation, but
the descriptor limit was never actually enforced.
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_ethdev.c | 1 +
drivers/net/gve/gve_ethdev.h | 1 +
drivers/net/gve/gve_tx_dqo.c | 6 ++++++
3 files changed, 8 insertions(+)
diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index e471a34e61..5be4f64fde 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -604,4 +604,5 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
.nb_min = priv->min_tx_desc_cnt,
.nb_align = 1,
+ .nb_mtu_seg_max = GVE_TX_MAX_DATA_DESCS,
};
diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h
index 35cb9062b1..195dadc4d4 100644
--- a/drivers/net/gve/gve_ethdev.h
+++ b/drivers/net/gve/gve_ethdev.h
@@ -103,4 +103,5 @@ struct gve_tx_stats {
uint64_t bytes;
uint64_t errors;
+ uint64_t too_many_descs;
};
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 7e03e75b20..27f98cdeb3 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -166,4 +166,10 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
}
+ /* Drop packet if it doesn't adhere to hardware limits. */
+ if (!tso && nb_descs > GVE_TX_MAX_DATA_DESCS) {
+ txq->stats.too_many_descs++;
+ break;
+ }
+
if (tso) {
txd = &txr[tx_id];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.686450388 +0000
+++ 0013-net-gve-add-DQO-Tx-descriptor-limit.patch 2025-10-31 13:53:52.019523315 +0000
@@ -1 +1 @@
-From f4a70b449bfac5343bf498f4132d5b8da4b0a885 Mon Sep 17 00:00:00 2001
+From 952398a7b241ed5a32b604a67f6972a33eb3589b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f4a70b449bfac5343bf498f4132d5b8da4b0a885 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index bdb7f1d075..81325ba98c 100644
+index e471a34e61..5be4f64fde 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: fix DQO TSO descriptor limit' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (11 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: add DQO Tx descriptor limit' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: clear DQO Tx descriptors before writing' " Kevin Traynor
` (119 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/54efb8dfcbfd2b1b0e3ee60ccaec6e1d98a90ddc
Thanks.
Kevin
---
From 54efb8dfcbfd2b1b0e3ee60ccaec6e1d98a90ddc Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:10 -0700
Subject: [PATCH] net/gve: fix DQO TSO descriptor limit
[ upstream commit be8f0eb81f987cbd64c2d37fe6f8b2e888328f23 ]
The DQ queue format expects that any MTU-sized packet or segment will
only cross at most 10 data descriptors.
In the non-TSO case, this means that a given packet simply can have at
most 10 descriptors.
In the TSO case, things are a bit more complex. For large TSO packets,
mbufs must be parsed and split into tso_segsz-sized (MSS) segments. For
any such MSS segment, the number of descriptors that would be used to
transmit the segment must be counted. The following restrictions apply
when counting descriptors:
1) Every TSO segment (including the very first) will be prepended by a
_separate_ data descriptor holding only header data,
2) The hardware can send at most up to 16K bytes in a single data
descriptor, and
3) The start of every mbuf counts as a separator between data
descriptors -- data is not assumed to be coalesced or copied
The value of nb_mtu_seg_max is set to GVE_TX_MAX_DATA_DESCS-1 to ensure
that the hidden extra prepended descriptor added to the beginning of
each segment in the TSO case is accounted for.
Fixes: 403c671a46b6 ("net/gve: support TSO in DQO RDA")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Ankit Garg <nktgrg@google.com>
---
drivers/net/gve/gve_ethdev.c | 2 +-
drivers/net/gve/gve_tx_dqo.c | 64 +++++++++++++++++++++++++++++++++++-
2 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index 5be4f64fde..82fde360b1 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -604,5 +604,5 @@ gve_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
.nb_min = priv->min_tx_desc_cnt,
.nb_align = 1,
- .nb_mtu_seg_max = GVE_TX_MAX_DATA_DESCS,
+ .nb_mtu_seg_max = GVE_TX_MAX_DATA_DESCS - 1,
};
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 27f98cdeb3..3befbbcacb 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -81,4 +81,66 @@ gve_tx_clean_descs_dqo(struct gve_tx_queue *txq, uint16_t nb_descs) {
}
+/* GVE expects at most 10 data descriptors per mtu-sized segment. Beyond this,
+ * the hardware will assume the driver is malicious and stop transmitting
+ * packets altogether. Validate that a packet can be sent to avoid sending
+ * posting descriptors for an invalid packet.
+ */
+static inline bool
+gve_tx_validate_descs(struct rte_mbuf *tx_pkt, uint16_t nb_descs, bool is_tso)
+{
+ if (!is_tso)
+ return nb_descs <= GVE_TX_MAX_DATA_DESCS;
+
+ int tso_segsz = tx_pkt->tso_segsz;
+ int num_descs, seg_offset, mbuf_len;
+ int headlen = tx_pkt->l2_len + tx_pkt->l3_len + tx_pkt->l4_len;
+
+ /* Headers will be split into their own buffer. */
+ num_descs = 1;
+ seg_offset = 0;
+ mbuf_len = tx_pkt->data_len - headlen;
+
+ while (tx_pkt) {
+ if (!mbuf_len)
+ goto next_mbuf;
+
+ int seg_remain = tso_segsz - seg_offset;
+ if (num_descs == GVE_TX_MAX_DATA_DESCS && seg_remain)
+ return false;
+
+ if (seg_remain < mbuf_len) {
+ seg_offset = mbuf_len % tso_segsz;
+ /* The MSS is bound from above by 9728B, so a
+ * single TSO segment in the middle of an mbuf
+ * will be part of at most two descriptors, and
+ * is not at risk of defying this limitation.
+ * Thus, such segments are ignored.
+ */
+ int mbuf_remain = tx_pkt->data_len % GVE_TX_MAX_BUF_SIZE_DQO;
+
+ /* For each TSO segment, HW will prepend
+ * headers. The remaining bytes of this mbuf
+ * will be the start of the payload of the next
+ * TSO segment. In addition, if the final
+ * segment in this mbuf is divided between two
+ * descriptors, both must be counted.
+ */
+ num_descs = 1 + !!(seg_offset) +
+ (mbuf_remain < seg_offset && mbuf_remain);
+ } else {
+ seg_offset += mbuf_len;
+ num_descs++;
+ }
+
+next_mbuf:
+ tx_pkt = tx_pkt->next;
+ if (tx_pkt)
+ mbuf_len = tx_pkt->data_len;
+ }
+
+
+ return true;
+}
+
static uint16_t
gve_tx_pkt_nb_data_descs(struct rte_mbuf *tx_pkt)
@@ -167,5 +229,5 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
/* Drop packet if it doesn't adhere to hardware limits. */
- if (!tso && nb_descs > GVE_TX_MAX_DATA_DESCS) {
+ if (!gve_tx_validate_descs(tx_pkt, nb_descs, tso)) {
txq->stats.too_many_descs++;
break;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.713761670 +0000
+++ 0014-net-gve-fix-DQO-TSO-descriptor-limit.patch 2025-10-31 13:53:52.021523321 +0000
@@ -1 +1 @@
-From be8f0eb81f987cbd64c2d37fe6f8b2e888328f23 Mon Sep 17 00:00:00 2001
+From 54efb8dfcbfd2b1b0e3ee60ccaec6e1d98a90ddc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit be8f0eb81f987cbd64c2d37fe6f8b2e888328f23 ]
+
@@ -30 +31,0 @@
-Cc: stable@dpdk.org
@@ -40 +41 @@
-index 81325ba98c..ef1c543aac 100644
+index 5be4f64fde..82fde360b1 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: clear DQO Tx descriptors before writing' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (12 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: fix DQO TSO " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Kevin Traynor
` (118 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/53ca02042d547407982e7dd5fdd2e980e75da1df
Thanks.
Kevin
---
From 53ca02042d547407982e7dd5fdd2e980e75da1df Mon Sep 17 00:00:00 2001
From: Joshua Washington <joshwash@google.com>
Date: Mon, 7 Jul 2025 16:18:11 -0700
Subject: [PATCH] net/gve: clear DQO Tx descriptors before writing
[ upstream commit 4ef9cf43d0ee57e082cb9e89f47756f3414171a4 ]
When TSO was introduced, it became possible for two differing descriptor
formats to be written to the descriptor ring, GVE_TX_PKT_DESC_DTYPE_DQO
and GVE_TX_TSO_CTX_DESC_DTYPE_DQO. Because these descriptor types have
different formats, they end up setting different fields, which can be
misinterpreted by the hardware if not fully cleared.
Fixes: 403c671a46b6 ("net/gve: support TSO in DQO RDA")
Signed-off-by: Joshua Washington <joshwash@google.com>
Reviewed-by: Ankit Garg <nktgrg@google.com>
---
drivers/net/gve/gve_tx_dqo.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 3befbbcacb..169c40d5b0 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -160,4 +160,6 @@ gve_tx_fill_seg_desc_dqo(volatile union gve_tx_desc_dqo *desc, struct rte_mbuf *
{
uint32_t hlen = tx_pkt->l2_len + tx_pkt->l3_len + tx_pkt->l4_len;
+
+ desc->tso_ctx = (struct gve_tx_tso_context_desc_dqo) {};
desc->tso_ctx.cmd_dtype.dtype = GVE_TX_TSO_CTX_DESC_DTYPE_DQO;
desc->tso_ctx.cmd_dtype.tso = 1;
@@ -258,4 +260,5 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
txd = &txr[tx_id];
+ txd->pkt = (struct gve_tx_pkt_desc_dqo) {};
txd->pkt.buf_addr = rte_cpu_to_le_64(buf_addr);
txd->pkt.compl_tag = rte_cpu_to_le_16(first_sw_id);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.741001992 +0000
+++ 0015-net-gve-clear-DQO-Tx-descriptors-before-writing.patch 2025-10-31 13:53:52.022523324 +0000
@@ -1 +1 @@
-From 4ef9cf43d0ee57e082cb9e89f47756f3414171a4 Mon Sep 17 00:00:00 2001
+From 53ca02042d547407982e7dd5fdd2e980e75da1df Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4ef9cf43d0ee57e082cb9e89f47756f3414171a4 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/vmxnet3: fix mapping of mempools to queues' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (13 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: clear DQO Tx descriptors before writing' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: increase size of set cores list command' " Kevin Traynor
` (117 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Ronak Doshi; +Cc: Jochen Behrens, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bfbe8bfeaf09e502026d7b4cf596135e9c58b87c
Thanks.
Kevin
---
From bfbe8bfeaf09e502026d7b4cf596135e9c58b87c 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
@@ -599,4 +599,7 @@ enum vmxnet3_intr_type {
#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
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index 15ca25b187..e19aa43888 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -802,6 +802,7 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
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) {
@@ -809,5 +810,5 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
size = sizeof(Vmxnet3_MemRegs) +
- (VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES) *
+ (2 * VMXNET3_MAX_MEMREG_QUEUES) *
sizeof(Vmxnet3_MemoryRegion);
@@ -823,5 +824,7 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
}
- 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++) {
@@ -858,11 +861,13 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
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++;
}
@@ -1088,6 +1093,6 @@ 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) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.769341733 +0000
+++ 0016-net-vmxnet3-fix-mapping-of-mempools-to-queues.patch 2025-10-31 13:53:52.024523331 +0000
@@ -1 +1 @@
-From 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 Mon Sep 17 00:00:00 2001
+From bfbe8bfeaf09e502026d7b4cf596135e9c58b87c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: increase size of set cores list command' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (14 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'bus/dpaa: improve cleanup' " Kevin Traynor
` (116 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Dengdui Huang; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7901aecec7ab5c2397b28f4eebc1e86a67e690d6
Thanks.
Kevin
---
From 7901aecec7ab5c2397b28f4eebc1e86a67e690d6 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 e92dd9eade..79f8b4fad4 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -3907,5 +3907,5 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
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')) {
@@ -3958,5 +3958,5 @@ 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;
};
@@ -4007,5 +4007,5 @@ static cmdline_parse_token_string_t cmd_set_list_name =
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 = {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.803531977 +0000
+++ 0017-app-testpmd-increase-size-of-set-cores-list-command.patch 2025-10-31 13:53:52.034523362 +0000
@@ -1 +1 @@
-From d0f4f0779898e41a940e9a6f83f782750ffbfbb7 Mon Sep 17 00:00:00 2001
+From 7901aecec7ab5c2397b28f4eebc1e86a67e690d6 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 e92dd9eade..79f8b4fad4 100644
@@ -23 +24 @@
-@@ -4064,5 +4064,5 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
+@@ -3907,5 +3907,5 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
@@ -30 +31 @@
-@@ -4115,5 +4115,5 @@ struct cmd_set_list_result {
+@@ -3958,5 +3958,5 @@ struct cmd_set_list_result {
@@ -37 +38 @@
-@@ -4164,5 +4164,5 @@ static cmdline_parse_token_string_t cmd_set_list_name =
+@@ -4007,5 +4007,5 @@ static cmdline_parse_token_string_t cmd_set_list_name =
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'bus/dpaa: improve cleanup' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (15 preceding siblings ...)
2025-10-31 14:32 ` patch 'app/testpmd: increase size of set cores list command' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: free device resources on close' " Kevin Traynor
` (115 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a601aad7f81ae00c875b46a9f437b7b37afa7d31
Thanks.
Kevin
---
From a601aad7f81ae00c875b46a9f437b7b37afa7d31 Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <g.singh@nxp.com>
Date: Thu, 17 Jul 2025 15:12:37 +0530
Subject: [PATCH] bus/dpaa: improve cleanup
[ upstream commit 78ea4b4fcb52f786aeb1c470c730ea3e54e239d5 ]
This patch addresses DPAA driver issues with the introduction of
rte_eal_cleanup, which caused driver-specific destructors to fail
due to memory cleanup.
To resolve this, we remove the driver destructor and relocate the
code to the bus cleanup function.
So, this patch also implements DPAA bus cleanup.
Fixes: ff9e112d7870 ("net/dpaa: add NXP DPAA PMD driver skeleton")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman_driver.c | 2 -
drivers/bus/dpaa/dpaa_bus.c | 59 ++++++
drivers/net/dpaa/dpaa_ethdev.c | 217 ++++++++++++++++------
3 files changed, 216 insertions(+), 62 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c
index 7a129a2d86..cdce6b777b 100644
--- a/drivers/bus/dpaa/base/qbman/qman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c
@@ -229,6 +229,4 @@ int fsl_qman_fq_portal_destroy(struct qman_portal *qp)
pr_err("qman_free_global_portal() (%d)\n", ret);
- kfree(qp);
-
process_portal_irq_unmap(cfg->irq);
diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 9ffbe07c93..0d49540ded 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -46,4 +46,6 @@
#include <fman.h>
+#define RTE_PRIORITY_102 102
+
struct rte_dpaa_bus {
struct rte_bus bus;
@@ -59,4 +61,7 @@ struct netcfg_info *dpaa_netcfg;
/* define a variable to hold the portal_key, once created.*/
static pthread_key_t dpaa_portal_key;
+/* dpaa lcore specific portals */
+struct dpaa_portal *dpaa_portals[RTE_MAX_LCORE] = {NULL};
+static int dpaa_bus_global_init;
unsigned int dpaa_svr_family;
@@ -388,4 +393,5 @@ int rte_dpaa_portal_init(void *arg)
return ret;
}
+ dpaa_portals[lcore] = DPAA_PER_LCORE_PORTAL;
DPAA_BUS_LOG(DEBUG, "QMAN thread initialized");
@@ -445,4 +451,6 @@ dpaa_portal_finish(void *arg)
dpaa_io_portal = NULL;
DPAA_PER_LCORE_PORTAL = NULL;
+ dpaa_portals[rte_lcore_id()] = NULL;
+ DPAA_BUS_DEBUG("Portal cleanup done for lcore = %d", rte_lcore_id());
}
@@ -737,4 +745,5 @@ rte_dpaa_bus_probe(void)
}
}
+ dpaa_bus_global_init = 1;
return 0;
@@ -844,4 +853,53 @@ dpaa_bus_dev_iterate(const void *start, const char *str,
}
+static int
+dpaa_bus_cleanup(void)
+{
+ struct rte_dpaa_device *dev, *tmp_dev;
+
+ BUS_INIT_FUNC_TRACE();
+ RTE_TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tmp_dev) {
+ struct rte_dpaa_driver *drv = dev->driver;
+ int ret = 0;
+
+ if (!rte_dev_is_probed(&dev->device))
+ continue;
+ if (!drv || !drv->remove)
+ continue;
+ ret = drv->remove(dev);
+ if (ret < 0) {
+ rte_errno = errno;
+ return -1;
+ }
+ dev->driver = NULL;
+ dev->device.driver = NULL;
+ }
+ dpaa_portal_finish((void *)DPAA_PER_LCORE_PORTAL);
+ dpaa_bus_global_init = 0;
+ DPAA_BUS_DEBUG("Bus cleanup done");
+
+ return 0;
+}
+
+/* Adding destructor for double check in case non-gracefully
+ * exit.
+ */
+RTE_FINI_PRIO(dpaa_cleanup, 102)
+{
+ unsigned int lcore_id;
+
+ if (!dpaa_bus_global_init)
+ return;
+
+ /* cleanup portals in case non-graceful exit */
+ RTE_LCORE_FOREACH_WORKER(lcore_id) {
+ /* Check for non zero id */
+ dpaa_portal_finish((void *)dpaa_portals[lcore_id]);
+ }
+ dpaa_portal_finish((void *)DPAA_PER_LCORE_PORTAL);
+ dpaa_bus_global_init = 0;
+ DPAA_BUS_DEBUG("Worker thread clean up done");
+}
+
static struct rte_dpaa_bus rte_dpaa_bus = {
.bus = {
@@ -854,4 +912,5 @@ static struct rte_dpaa_bus rte_dpaa_bus = {
.unplug = dpaa_bus_unplug,
.dev_iterate = dpaa_bus_dev_iterate,
+ .cleanup = dpaa_bus_cleanup,
},
.device_list = TAILQ_HEAD_INITIALIZER(rte_dpaa_bus.device_list),
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index e8d34e5898..58372aa215 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -55,4 +55,5 @@
#define CHECK_INTERVAL 100 /* 100ms */
#define MAX_REPEAT_TIME 90 /* 9s (90 * 100ms) in total */
+#define RTE_PRIORITY_103 103
/* Supported Rx offloads */
@@ -307,9 +308,10 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
if (!(default_q || fmc_q)) {
- if (dpaa_fm_config(dev,
- eth_conf->rx_adv_conf.rss_conf.rss_hf)) {
+ ret = dpaa_fm_config(dev,
+ eth_conf->rx_adv_conf.rss_conf.rss_hf);
+ if (ret) {
dpaa_write_fm_config_to_file();
- DPAA_PMD_ERR("FM port configuration: Failed");
- return -1;
+ DPAA_PMD_ERR("FM port configuration: Failed(%d)", ret);
+ return ret;
}
dpaa_write_fm_config_to_file();
@@ -514,4 +516,5 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
struct rte_eth_link *link = &dev->data->dev_link;
struct dpaa_if *dpaa_intf = dev->data->dev_private;
+ struct qman_fq *fq;
int loop;
int ret;
@@ -523,12 +526,15 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
if (!dpaa_intf) {
- DPAA_PMD_WARN("Already closed or not started");
- return -1;
+ DPAA_PMD_DEBUG("Already closed or not started");
+ return -ENOENT;
}
/* DPAA FM deconfig */
if (!(default_q || fmc_q)) {
- if (dpaa_fm_deconfig(dpaa_intf, dev->process_private))
- DPAA_PMD_WARN("DPAA FM deconfig failed");
+ ret = dpaa_fm_deconfig(dpaa_intf, dev->process_private);
+ if (ret) {
+ DPAA_PMD_WARN("%s: FM deconfig failed(%d)",
+ dev->data->name, ret);
+ }
}
@@ -538,4 +544,8 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
ret = dpaa_eth_dev_stop(dev);
+ if (ret) {
+ DPAA_PMD_WARN("%s: stop device failed(%d)",
+ dev->data->name, ret);
+ }
if (fif->mac_type == fman_offline_internal ||
@@ -544,13 +554,25 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
/* Reset link to autoneg */
- if (link->link_status && !link->link_autoneg)
- dpaa_restart_link_autoneg(__fif->node_name);
+ if (link->link_status && !link->link_autoneg) {
+ ret = dpaa_restart_link_autoneg(__fif->node_name);
+ if (ret) {
+ DPAA_PMD_WARN("%s: restart link failed(%d)",
+ dev->data->name, ret);
+ }
+ }
if (intr_handle && rte_intr_fd_get(intr_handle) &&
dev->data->dev_conf.intr_conf.lsc != 0) {
- dpaa_intr_disable(__fif->node_name);
- rte_intr_callback_unregister(intr_handle,
- dpaa_interrupt_handler,
- (void *)dev);
+ ret = dpaa_intr_disable(__fif->node_name);
+ if (ret) {
+ DPAA_PMD_WARN("%s: disable interrupt failed(%d)",
+ dev->data->name, ret);
+ }
+ ret = rte_intr_callback_unregister(intr_handle,
+ dpaa_interrupt_handler, (void *)dev);
+ if (ret) {
+ DPAA_PMD_WARN("%s: unregister interrupt failed(%d)",
+ dev->data->name, ret);
+ }
}
@@ -560,6 +582,11 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
/* Release RX congestion Groups */
if (dpaa_intf->cgr_rx) {
- for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++)
- qman_delete_cgr(&dpaa_intf->cgr_rx[loop]);
+ for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++) {
+ ret = qman_delete_cgr(&dpaa_intf->cgr_rx[loop]);
+ if (ret) {
+ DPAA_PMD_WARN("%s: delete rxq%d's cgr err(%d)",
+ dev->data->name, loop, ret);
+ }
+ }
rte_free(dpaa_intf->cgr_rx);
dpaa_intf->cgr_rx = NULL;
@@ -568,10 +595,27 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
/* Release TX congestion Groups */
if (dpaa_intf->cgr_tx) {
- for (loop = 0; loop < MAX_DPAA_CORES; loop++)
- qman_delete_cgr(&dpaa_intf->cgr_tx[loop]);
+ for (loop = 0; loop < MAX_DPAA_CORES; loop++) {
+ ret = qman_delete_cgr(&dpaa_intf->cgr_tx[loop]);
+ if (ret) {
+ DPAA_PMD_WARN("%s: delete txq%d's cgr err(%d)",
+ dev->data->name, loop, ret);
+ }
+ }
rte_free(dpaa_intf->cgr_tx);
dpaa_intf->cgr_tx = NULL;
}
+ /* Freeing queue specific portals */
+ for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++) {
+ if (!dpaa_intf->rx_queues)
+ break;
+
+ fq = &dpaa_intf->rx_queues[loop];
+ if (fq->qp_initialized) {
+ rte_dpaa_portal_fq_close(fq);
+ fq->qp_initialized = 0;
+ }
+ }
+
rte_free(dpaa_intf->rx_queues);
dpaa_intf->rx_queues = NULL;
@@ -580,11 +624,16 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
dpaa_intf->tx_queues = NULL;
if (dpaa_intf->port_handle) {
- if (dpaa_fm_deconfig(dpaa_intf, fif))
- DPAA_PMD_WARN("DPAA FM "
- "deconfig failed");
+ ret = dpaa_fm_deconfig(dpaa_intf, fif);
+ if (ret) {
+ DPAA_PMD_WARN("%s: FM deconfig failed(%d)",
+ dev->data->name, ret);
+ }
}
if (fif->num_profiles) {
- if (dpaa_port_vsp_cleanup(dpaa_intf, fif))
- DPAA_PMD_WARN("DPAA FM vsp cleanup failed");
+ ret = dpaa_port_vsp_cleanup(dpaa_intf, fif);
+ if (ret) {
+ DPAA_PMD_WARN("%s: cleanup VSP failed(%d)",
+ dev->data->name, ret);
+ }
}
@@ -1479,4 +1528,6 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
struct dpaa_if *dpaa_intf = dev->data->dev_private;
struct rte_eth_fc_conf *net_fc;
+ struct fman_if *fm_if = dev->process_private;
+ int ret;
PMD_INIT_FUNC_TRACE();
@@ -1497,17 +1548,29 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
}
- if (fc_conf->mode == RTE_ETH_FC_NONE) {
+ if (fc_conf->mode == RTE_ETH_FC_NONE)
return 0;
- } else if (fc_conf->mode == RTE_ETH_FC_TX_PAUSE ||
- fc_conf->mode == RTE_ETH_FC_FULL) {
- fman_if_set_fc_threshold(dev->process_private,
+
+ if (fc_conf->mode != RTE_ETH_FC_TX_PAUSE &&
+ fc_conf->mode != RTE_ETH_FC_FULL)
+ goto save_fc;
+
+ ret = fman_if_set_fc_threshold(fm_if,
fc_conf->high_water,
fc_conf->low_water,
dpaa_intf->bp_info->bpid);
- if (fc_conf->pause_time)
- fman_if_set_fc_quanta(dev->process_private,
- fc_conf->pause_time);
+ if (ret) {
+ DPAA_PMD_ERR("Set %s's fc on bpid(%d) err(%d)",
+ dev->data->name, dpaa_intf->bp_info->bpid,
+ ret);
+ }
+ if (fc_conf->pause_time) {
+ ret = fman_if_set_fc_quanta(fm_if, fc_conf->pause_time);
+ if (ret) {
+ DPAA_PMD_ERR("Set %s's fc pause time err(%d)",
+ dev->data->name, ret);
+ }
}
+save_fc:
/* Save the information in dpaa device */
net_fc->pause_time = fc_conf->pause_time;
@@ -1636,11 +1699,13 @@ dpaa_dev_rss_hash_update(struct rte_eth_dev *dev,
struct rte_eth_dev_data *data = dev->data;
struct rte_eth_conf *eth_conf = &data->dev_conf;
+ int ret;
PMD_INIT_FUNC_TRACE();
if (!(default_q || fmc_q)) {
- if (dpaa_fm_config(dev, rss_conf->rss_hf)) {
- DPAA_PMD_ERR("FM port configuration: Failed");
- return -1;
+ ret = dpaa_fm_config(dev, rss_conf->rss_hf);
+ if (ret) {
+ DPAA_PMD_ERR("FM port configuration: Failed(%d)", ret);
+ return ret;
}
eth_conf->rx_adv_conf.rss_conf.rss_hf = rss_conf->rss_hf;
@@ -2243,6 +2308,6 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)
* queues.
*/
- if (num_rx_fqs < 0 || num_rx_fqs > DPAA_MAX_NUM_PCD_QUEUES) {
- DPAA_PMD_ERR("Invalid number of RX queues");
+ if (num_rx_fqs > DPAA_MAX_NUM_PCD_QUEUES) {
+ DPAA_PMD_ERR("Invalid number of RX queues(%d)", num_rx_fqs);
return -EINVAL;
}
@@ -2500,6 +2565,6 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
ret = dpaa_dev_init_secondary(eth_dev);
- if (ret != 0) {
- DPAA_PMD_ERR("secondary dev init failed");
+ if (ret) {
+ DPAA_PMD_ERR("secondary dev init failed(%d)", ret);
return ret;
}
@@ -2516,7 +2581,8 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
if (!(default_q || fmc_q)) {
- if (dpaa_fm_init()) {
- DPAA_PMD_ERR("FM init failed");
- return -1;
+ ret = dpaa_fm_init();
+ if (ret) {
+ DPAA_PMD_ERR("FM init failed(%d)", ret);
+ return ret;
}
}
@@ -2593,4 +2659,51 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
}
+/* Adding destructor for double check in case non-gracefully
+ * exit.
+ */
+RTE_FINI_PRIO(dpaa_finish, 103)
+{
+ struct dpaa_if *dpaa_intf;
+ int loop;
+ struct qman_fq *fq;
+ uint16_t portid;
+ struct rte_eth_dev *dev;
+
+ PMD_INIT_FUNC_TRACE();
+ /* For secondary, primary will do all the cleanup */
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return;
+
+ if (!is_global_init)
+ return;
+
+ if (!(default_q || fmc_q)) {
+ if (dpaa_fm_term())
+ DPAA_PMD_WARN("DPAA FM term failed");
+
+ DPAA_PMD_INFO("DPAA fman cleaned up");
+ }
+
+ RTE_ETH_FOREACH_DEV(portid) {
+ dev = &rte_eth_devices[portid];
+ if (strcmp(dev->device->driver->name,
+ rte_dpaa_pmd.driver.name))
+ continue;
+ dpaa_intf = dev->data->dev_private;
+ /* Freeing queue specific portals */
+ for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++) {
+ if (!dpaa_intf->rx_queues)
+ break;
+
+ fq = &dpaa_intf->rx_queues[loop];
+ if (fq->qp_initialized) {
+ rte_dpaa_portal_fq_close(fq);
+ fq->qp_initialized = 0;
+ }
+ }
+ }
+ is_global_init = 0;
+}
+
static int
rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
@@ -2603,27 +2716,11 @@ rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
eth_dev = dpaa_dev->eth_dev;
dpaa_eth_dev_close(eth_dev);
+ ret = rte_eth_dev_release_port(eth_dev);
dpaa_valid_dev--;
- if (!dpaa_valid_dev)
+ if (!dpaa_valid_dev) {
rte_mempool_free(dpaa_tx_sg_pool);
- ret = rte_eth_dev_release_port(eth_dev);
-
- return ret;
-}
-
-static void __attribute__((destructor(102))) dpaa_finish(void)
-{
- /* For secondary, primary will do all the cleanup */
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
- return;
-
- if (!(default_q || fmc_q)) {
- if (is_global_init)
- if (dpaa_fm_term())
- DPAA_PMD_WARN("DPAA FM term failed");
-
- is_global_init = 0;
-
- DPAA_PMD_INFO("DPAA fman cleaned up");
+ dpaa_finish();
}
+ return ret;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.832500388 +0000
+++ 0018-bus-dpaa-improve-cleanup.patch 2025-10-31 13:53:52.036523368 +0000
@@ -1 +1 @@
-From 78ea4b4fcb52f786aeb1c470c730ea3e54e239d5 Mon Sep 17 00:00:00 2001
+From a601aad7f81ae00c875b46a9f437b7b37afa7d31 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 78ea4b4fcb52f786aeb1c470c730ea3e54e239d5 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/bus/dpaa/dpaa_bus.c | 58 ++++++
+ drivers/bus/dpaa/dpaa_bus.c | 59 ++++++
@@ -22 +23 @@
- 3 files changed, 215 insertions(+), 62 deletions(-)
+ 3 files changed, 216 insertions(+), 62 deletions(-)
@@ -36 +37 @@
-index 59757c43ec..1a35aa52df 100644
+index 9ffbe07c93..0d49540ded 100644
@@ -39,4 +40,2 @@
-@@ -49,4 +49,5 @@
- #define DPAA_SOC_ID_FILE "/sys/devices/soc0/soc_id"
- #define DPAA_SVR_MASK 0xffff0000
-+#define RTE_PRIORITY_102 102
+@@ -46,4 +46,6 @@
+ #include <fman.h>
@@ -43,0 +43,2 @@
++#define RTE_PRIORITY_102 102
++
@@ -45 +46,2 @@
-@@ -64,4 +65,7 @@ static struct netcfg_info *dpaa_netcfg;
+ struct rte_bus bus;
+@@ -59,4 +61,7 @@ struct netcfg_info *dpaa_netcfg;
@@ -52,2 +54,2 @@
- #define FSL_DPAA_BUS_NAME dpaa_bus
-@@ -403,4 +407,5 @@ int rte_dpaa_portal_init(void *arg)
+ unsigned int dpaa_svr_family;
+@@ -388,4 +393,5 @@ int rte_dpaa_portal_init(void *arg)
@@ -59 +61 @@
-@@ -462,4 +467,6 @@ dpaa_portal_finish(void *arg)
+@@ -445,4 +451,6 @@ dpaa_portal_finish(void *arg)
@@ -66 +68 @@
-@@ -772,4 +779,5 @@ rte_dpaa_bus_probe(void)
+@@ -737,4 +745,5 @@ rte_dpaa_bus_probe(void)
@@ -72 +74 @@
-@@ -879,4 +887,53 @@ dpaa_bus_dev_iterate(const void *start, const char *str,
+@@ -844,4 +853,53 @@ dpaa_bus_dev_iterate(const void *start, const char *str,
@@ -126 +128 @@
-@@ -889,4 +946,5 @@ static struct rte_dpaa_bus rte_dpaa_bus = {
+@@ -854,4 +912,5 @@ static struct rte_dpaa_bus rte_dpaa_bus = {
@@ -133 +135 @@
-index 62cafb7073..c8b69c5291 100644
+index e8d34e5898..58372aa215 100644
@@ -136,3 +138,3 @@
-@@ -57,4 +57,5 @@
- #define MAX_REPEAT_TIME 90 /* 9s (90 * 100ms) in total */
- #define DRIVER_RECV_ERR_PKTS "recv_err_pkts"
+@@ -55,4 +55,5 @@
+ #define CHECK_INTERVAL 100 /* 100ms */
+ #define MAX_REPEAT_TIME 90 /* 9s (90 * 100ms) in total */
@@ -142 +144 @@
-@@ -311,9 +312,10 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
+@@ -307,9 +308,10 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
@@ -157 +159 @@
-@@ -518,4 +520,5 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -514,4 +516,5 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -163 +165 @@
-@@ -527,12 +530,15 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -523,12 +526,15 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -183 +185 @@
-@@ -542,4 +548,8 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -538,4 +544,8 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -192 +194 @@
-@@ -548,13 +558,25 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -544,13 +554,25 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -224 +226 @@
-@@ -564,6 +586,11 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -560,6 +582,11 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -238 +240 @@
-@@ -572,10 +599,27 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -568,10 +595,27 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -268 +270 @@
-@@ -584,11 +628,16 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
+@@ -580,11 +624,16 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
@@ -290 +292 @@
-@@ -1463,4 +1512,6 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
+@@ -1479,4 +1528,6 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
@@ -297 +299 @@
-@@ -1481,17 +1532,29 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
+@@ -1497,17 +1548,29 @@ dpaa_flow_ctrl_set(struct rte_eth_dev *dev,
@@ -334 +336 @@
-@@ -1620,11 +1683,13 @@ dpaa_dev_rss_hash_update(struct rte_eth_dev *dev,
+@@ -1636,11 +1699,13 @@ dpaa_dev_rss_hash_update(struct rte_eth_dev *dev,
@@ -351 +353 @@
-@@ -2234,6 +2299,6 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2243,6 +2308,6 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)
@@ -360 +362 @@
-@@ -2495,6 +2560,6 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
+@@ -2500,6 +2565,6 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
@@ -369 +371 @@
-@@ -2511,7 +2576,8 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
+@@ -2516,7 +2581,8 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
@@ -381 +383 @@
-@@ -2588,4 +2654,51 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
+@@ -2593,4 +2659,51 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
@@ -433 +435 @@
-@@ -2598,27 +2711,11 @@ rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
+@@ -2603,27 +2716,11 @@ rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: free device resources on close' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (16 preceding siblings ...)
2025-10-31 14:32 ` patch 'bus/dpaa: improve cleanup' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/dpaa2: fix extract buffer preparation' " Kevin Traynor
` (114 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Jasper Tran O'Leary; +Cc: Joshua Washington, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9e2ebcbd8d586111fae989c1d8f0757b62ff5776
Thanks.
Kevin
---
From 9e2ebcbd8d586111fae989c1d8f0757b62ff5776 Mon Sep 17 00:00:00 2001
From: Jasper Tran O'Leary <jtranoleary@google.com>
Date: Fri, 18 Jul 2025 18:27:25 +0000
Subject: [PATCH] net/gve: free device resources on close
[ upstream commit 7ba84453bacf7a8709f2aaf341e1d0b42d49a4c8 ]
Previously, upon a device close, the driver would only stop its queues,
whereas a device remove would cause the driver to free its resources.
However, expected behavior in DPDK is to have a device close free all of
its resources because ports are not reused.
This patch adds all device teardown functionality within the device
close function. It also flattens and refactors steps related to freeing
device resources such that gve_dev_close reads more linearly.
Fixes: 457967cd2b2d ("net/gve: support device initialization")
Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>
Acked-by: Joshua Washington <joshwash@google.com>
---
drivers/net/gve/base/gve_adminq.c | 2 -
drivers/net/gve/gve_ethdev.c | 153 +++++++++++++++---------------
2 files changed, 79 insertions(+), 76 deletions(-)
diff --git a/drivers/net/gve/base/gve_adminq.c b/drivers/net/gve/base/gve_adminq.c
index bcb983e4a0..2e9636c83c 100644
--- a/drivers/net/gve/base/gve_adminq.c
+++ b/drivers/net/gve/base/gve_adminq.c
@@ -245,6 +245,4 @@ void gve_adminq_release(struct gve_priv *priv)
msleep(GVE_ADMINQ_SLEEP_LEN);
}
- gve_clear_device_rings_ok(priv);
- gve_clear_device_resources_ok(priv);
gve_clear_admin_queue_ok(priv);
}
diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index 82fde360b1..ff1940abd3 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -384,4 +384,6 @@ gve_start_queues(struct rte_eth_dev *dev)
}
+ gve_set_device_rings_ok(priv);
+
return 0;
@@ -396,4 +398,6 @@ err_tx:
else
gve_stop_tx_queues_dqo(dev);
+
+ gve_clear_device_rings_ok(priv);
return ret;
}
@@ -441,15 +445,16 @@ gve_dev_stop(struct rte_eth_dev *dev)
{
struct gve_priv *priv = dev->data->dev_private;
- dev->data->dev_link.link_status = RTE_ETH_LINK_DOWN;
-
- if (gve_is_gqi(priv)) {
- gve_stop_tx_queues(dev);
- gve_stop_rx_queues(dev);
- } else {
- gve_stop_tx_queues_dqo(dev);
- gve_stop_rx_queues_dqo(dev);
- }
dev->data->dev_started = 0;
+ dev->data->dev_link.link_status = RTE_ETH_LINK_DOWN;
+
+ gve_clear_device_rings_ok(priv);
+ if (gve_is_gqi(priv)) {
+ gve_stop_tx_queues(dev);
+ gve_stop_rx_queues(dev);
+ } else {
+ gve_stop_tx_queues_dqo(dev);
+ gve_stop_rx_queues_dqo(dev);
+ }
if (gve_is_gqi(dev->data->dev_private))
@@ -459,17 +464,10 @@ gve_dev_stop(struct rte_eth_dev *dev)
}
-static int
-gve_dev_close(struct rte_eth_dev *dev)
+static void
+gve_free_queues(struct rte_eth_dev *dev)
{
struct gve_priv *priv = dev->data->dev_private;
- int err = 0;
uint16_t i;
- if (dev->data->dev_started) {
- err = gve_dev_stop(dev);
- if (err != 0)
- PMD_DRV_LOG(ERR, "Failed to stop dev.");
- }
-
if (gve_is_gqi(priv)) {
for (i = 0; i < dev->data->nb_tx_queues; i++)
@@ -485,6 +483,65 @@ gve_dev_close(struct rte_eth_dev *dev)
gve_rx_queue_release_dqo(dev, i);
}
+}
- rte_free(priv->adminq);
+static void
+gve_free_counter_array(struct gve_priv *priv)
+{
+ rte_memzone_free(priv->cnt_array_mz);
+ priv->cnt_array = NULL;
+}
+
+static void
+gve_free_irq_db(struct gve_priv *priv)
+{
+ rte_memzone_free(priv->irq_dbs_mz);
+ priv->irq_dbs = NULL;
+}
+
+static void
+gve_free_ptype_lut_dqo(struct gve_priv *priv)
+{
+ if (!gve_is_gqi(priv)) {
+ rte_free(priv->ptype_lut_dqo);
+ priv->ptype_lut_dqo = NULL;
+ }
+}
+
+static void
+gve_teardown_device_resources(struct gve_priv *priv)
+{
+ int err;
+
+ /* Tell device its resources are being freed */
+ if (gve_get_device_resources_ok(priv)) {
+ err = gve_adminq_deconfigure_device_resources(priv);
+ if (err)
+ PMD_DRV_LOG(ERR, "Could not deconfigure device resources: err=%d", err);
+ }
+
+ gve_free_ptype_lut_dqo(priv);
+ gve_free_counter_array(priv);
+ gve_free_irq_db(priv);
+ gve_clear_device_resources_ok(priv);
+}
+
+static int
+gve_dev_close(struct rte_eth_dev *dev)
+{
+ struct gve_priv *priv = dev->data->dev_private;
+ int err = 0;
+
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ return 0;
+
+ if (dev->data->dev_started) {
+ err = gve_dev_stop(dev);
+ if (err != 0)
+ PMD_DRV_LOG(ERR, "Failed to stop dev.");
+ }
+
+ gve_free_queues(dev);
+ gve_teardown_device_resources(priv);
+ gve_adminq_free(priv);
dev->data->mac_addrs = NULL;
@@ -1057,39 +1114,4 @@ static const struct eth_dev_ops gve_eth_dev_ops_dqo = {
};
-static void
-gve_free_counter_array(struct gve_priv *priv)
-{
- rte_memzone_free(priv->cnt_array_mz);
- priv->cnt_array = NULL;
-}
-
-static void
-gve_free_irq_db(struct gve_priv *priv)
-{
- rte_memzone_free(priv->irq_dbs_mz);
- priv->irq_dbs = NULL;
-}
-
-static void
-gve_teardown_device_resources(struct gve_priv *priv)
-{
- int err;
-
- /* Tell device its resources are being freed */
- if (gve_get_device_resources_ok(priv)) {
- err = gve_adminq_deconfigure_device_resources(priv);
- if (err)
- PMD_DRV_LOG(ERR, "Could not deconfigure device resources: err=%d", err);
- }
-
- if (!gve_is_gqi(priv)) {
- rte_free(priv->ptype_lut_dqo);
- priv->ptype_lut_dqo = NULL;
- }
- gve_free_counter_array(priv);
- gve_free_irq_db(priv);
- gve_clear_device_resources_ok(priv);
-}
-
static int
pci_dev_msix_vec_count(struct rte_pci_device *pdev)
@@ -1161,4 +1183,6 @@ gve_setup_device_resources(struct gve_priv *priv)
}
+ gve_set_device_resources_ok(priv);
+
return 0;
free_ptype_lut:
@@ -1253,11 +1277,4 @@ free_adminq:
}
-static void
-gve_teardown_priv_resources(struct gve_priv *priv)
-{
- gve_teardown_device_resources(priv);
- gve_adminq_free(priv);
-}
-
static int
gve_dev_init(struct rte_eth_dev *eth_dev)
@@ -1329,16 +1346,4 @@ gve_dev_init(struct rte_eth_dev *eth_dev)
}
-static int
-gve_dev_uninit(struct rte_eth_dev *eth_dev)
-{
- struct gve_priv *priv = eth_dev->data->dev_private;
-
- gve_teardown_priv_resources(priv);
-
- eth_dev->data->mac_addrs = NULL;
-
- return 0;
-}
-
static int
gve_pci_probe(__rte_unused struct rte_pci_driver *pci_drv,
@@ -1351,5 +1356,5 @@ static int
gve_pci_remove(struct rte_pci_device *pci_dev)
{
- return rte_eth_dev_pci_generic_remove(pci_dev, gve_dev_uninit);
+ return rte_eth_dev_pci_generic_remove(pci_dev, gve_dev_close);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.860809491 +0000
+++ 0019-net-gve-free-device-resources-on-close.patch 2025-10-31 13:53:52.038523374 +0000
@@ -1 +1 @@
-From 7ba84453bacf7a8709f2aaf341e1d0b42d49a4c8 Mon Sep 17 00:00:00 2001
+From 9e2ebcbd8d586111fae989c1d8f0757b62ff5776 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7ba84453bacf7a8709f2aaf341e1d0b42d49a4c8 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 25f4481c1b..b1fe33080a 100644
+index bcb983e4a0..2e9636c83c 100644
@@ -29,2 +30,2 @@
-@@ -277,6 +277,4 @@ void gve_adminq_release(struct gve_priv *priv)
- }
+@@ -245,6 +245,4 @@ void gve_adminq_release(struct gve_priv *priv)
+ msleep(GVE_ADMINQ_SLEEP_LEN);
@@ -37 +38 @@
-index ef1c543aac..56e1a470b8 100644
+index 82fde360b1..ff1940abd3 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix extract buffer preparation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (17 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: free device resources on close' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/dpaa2: fix shaper rate' " Kevin Traynor
` (113 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Jun Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/443b13ab4383fafc4934d93603e2d19a9ef5c69f
Thanks.
Kevin
---
From 443b13ab4383fafc4934d93603e2d19a9ef5c69f Mon Sep 17 00:00:00 2001
From: Jun Yang <jun.yang@nxp.com>
Date: Wed, 2 Jul 2025 15:21:40 +0530
Subject: [PATCH] net/dpaa2: fix extract buffer preparation
[ upstream commit 53bb620fa66ec89ee888573009771e0e9f279930 ]
1) The max size of extract buffer should be size of
"struct dpni_ext_set_rx_tc_dist"(488), which is greater than 256.
2) dpkg_prepare_key_cfg is responsible to clear
extract buffer before preparing.
Fixes: 25d0ae624245 ("net/dpaa2: check IOVA before sending MC command")
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 4 ++--
drivers/net/dpaa2/dpaa2_ethdev.h | 6 ++++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index a9bce854c3..528b2d305d 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -2799,5 +2799,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
memset(&priv->extract.qos_key_extract, 0,
sizeof(struct dpaa2_key_extract));
- priv->extract.qos_extract_param = rte_malloc(NULL,
+ priv->extract.qos_extract_param = rte_zmalloc(NULL,
DPAA2_EXTRACT_PARAM_MAX_SIZE,
RTE_CACHE_LINE_SIZE);
@@ -2810,5 +2810,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
memset(&priv->extract.tc_key_extract[i], 0,
sizeof(struct dpaa2_key_extract));
- priv->extract.tc_extract_param[i] = rte_malloc(NULL,
+ priv->extract.tc_extract_param[i] = rte_zmalloc(NULL,
DPAA2_EXTRACT_PARAM_MAX_SIZE,
RTE_CACHE_LINE_SIZE);
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index fd3119247a..f32c31c763 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -32,5 +32,7 @@
#define DPAA2_MAX_CHANNELS 16
-#define DPAA2_EXTRACT_PARAM_MAX_SIZE 256
+#define DPAA2_EXTRACT_PARAM_MAX_SIZE \
+ RTE_ALIGN(sizeof(struct dpni_ext_set_rx_tc_dist), 256)
+
#define DPAA2_EXTRACT_ALLOC_KEY_MAX_SIZE 256
@@ -61,5 +63,5 @@
/* Size of the input SMMU mapped memory required by MC */
-#define DIST_PARAM_IOVA_SIZE 256
+#define DIST_PARAM_IOVA_SIZE DPAA2_EXTRACT_PARAM_MAX_SIZE
/* Enable TX Congestion control support
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.889431558 +0000
+++ 0020-net-dpaa2-fix-extract-buffer-preparation.patch 2025-10-31 13:53:52.040523381 +0000
@@ -1 +1 @@
-From 53bb620fa66ec89ee888573009771e0e9f279930 Mon Sep 17 00:00:00 2001
+From 443b13ab4383fafc4934d93603e2d19a9ef5c69f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 53bb620fa66ec89ee888573009771e0e9f279930 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 998d1e7c53..1d11847d76 100644
+index a9bce854c3..528b2d305d 100644
@@ -24 +25 @@
-@@ -2788,5 +2788,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2799,5 +2799,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
@@ -31 +32 @@
-@@ -2799,5 +2799,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2810,5 +2810,5 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
@@ -39 +40 @@
-index b9dd9b22fd..b501fc091a 100644
+index fd3119247a..f32c31c763 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix shaper rate' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (18 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/dpaa2: fix extract buffer preparation' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/tap: fix BPF with cross-compilation' " Kevin Traynor
` (112 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/496fcfae46fb987b68bd9e78066e8f02847a0db2
Thanks.
Kevin
---
From 496fcfae46fb987b68bd9e78066e8f02847a0db2 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 f91392b092..dbf66c756e 100644
--- a/drivers/net/dpaa2/dpaa2_tm.c
+++ b/drivers/net/dpaa2/dpaa2_tm.c
@@ -1,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2023 NXP
+ * Copyright 2020-2024 NXP
*/
@@ -734,10 +734,10 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
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) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.916558425 +0000
+++ 0021-net-dpaa2-fix-shaper-rate.patch 2025-10-31 13:53:52.041596906 +0000
@@ -1 +1 @@
-From 953b5576093dcd148b674bd2d53e5482970c1270 Mon Sep 17 00:00:00 2001
+From 496fcfae46fb987b68bd9e78066e8f02847a0db2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 953b5576093dcd148b674bd2d53e5482970c1270 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/tap: fix BPF with cross-compilation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (19 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/dpaa2: fix shaper rate' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: fix mask in flow random item' " Kevin Traynor
` (111 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Ashok Kaladi; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/2abcf02aeee843462bcd5a74f9f2d17d548e5194
Thanks.
Kevin
---
From 2abcf02aeee843462bcd5a74f9f2d17d548e5194 Mon Sep 17 00:00:00 2001
From: Ashok Kaladi <ashok.k.kaladi@intel.com>
Date: Fri, 25 Jul 2025 01:43:19 -0500
Subject: [PATCH] net/tap: fix BPF with cross-compilation
[ upstream commit 475af3278fbed7c13033eeed605a121c24be077d ]
During cross-compilation, BPF build incorrectly includes header files
from the host system instead of the target sysroot. This leads to
build failures due to incompatible headers or unavailability of header
files in the host.
Fix by using the Meson sysroot property to correctly locate and include
BPF-related headers from the cross-compilation environment.
Fixes: d8d065045c4a ("net/tap: rewrite RSS BPF program")
Signed-off-by: Ashok Kaladi <ashok.k.kaladi@intel.com>
---
.mailmap | 1 +
drivers/net/tap/bpf/meson.build | 8 ++++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index be3cea2d34..bab1bcf3db 100644
--- a/.mailmap
+++ b/.mailmap
@@ -158,4 +158,5 @@ Ashish Paul <apaul@juniper.net>
Ashish Sadanandan <ashish.sadanandan@gmail.com>
Ashish Shah <ashish.n.shah@intel.com>
+Ashok Kaladi <ashok.k.kaladi@intel.com>
Ashwin Sekhar T K <asekhar@marvell.com> <ashwin.sekhar@caviumnetworks.com>
Asim Jamshed <asim.jamshed@gmail.com>
diff --git a/drivers/net/tap/bpf/meson.build b/drivers/net/tap/bpf/meson.build
index 35d7438c74..38b74f044c 100644
--- a/drivers/net/tap/bpf/meson.build
+++ b/drivers/net/tap/bpf/meson.build
@@ -40,5 +40,9 @@ endif
enable_tap_rss = true
-libbpf_include_dir = libbpf.get_variable(pkgconfig : 'includedir')
+# Determine sysroot if cross-compiling and the property exists in the
+# init files. Note that this environment variable will have to be passed
+# in as a property during meson setup.
+sysroot = meson.get_external_property('sysroot', '')
+libbpf_include_dir = sysroot + libbpf.get_variable(pkgconfig : 'includedir')
# The include files <linux/bpf.h> and others include <asm/types.h>
@@ -46,5 +50,5 @@ libbpf_include_dir = libbpf.get_variable(pkgconfig : 'includedir')
# Workaround by using include directoriy from the host build environment.
machine_name = run_command('uname', '-m', check: true).stdout().strip()
-march_include_dir = '/usr/include/' + machine_name + '-linux-gnu'
+march_include_dir = sysroot + '/usr/include/' + machine_name + '-linux-gnu'
clang_flags = [
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.944764407 +0000
+++ 0022-net-tap-fix-BPF-with-cross-compilation.patch 2025-10-31 13:53:52.042523387 +0000
@@ -1 +1 @@
-From 475af3278fbed7c13033eeed605a121c24be077d Mon Sep 17 00:00:00 2001
+From 2abcf02aeee843462bcd5a74f9f2d17d548e5194 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 475af3278fbed7c13033eeed605a121c24be077d ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 36df10939f..73d573e400 100644
+index be3cea2d34..bab1bcf3db 100644
@@ -27 +28 @@
-@@ -161,4 +161,5 @@ Ashish Paul <apaul@juniper.net>
+@@ -158,4 +158,5 @@ Ashish Paul <apaul@juniper.net>
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: fix mask in flow random item' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (20 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/tap: fix BPF with cross-compilation' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/zxdh: fix Arm build' " Kevin Traynor
` (110 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/6bc6f0786b0346521dea67fcb3e03b45ba70d054
Thanks.
Kevin
---
From 6bc6f0786b0346521dea67fcb3e03b45ba70d054 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 30 Jul 2025 14:32:43 +0300
Subject: [PATCH] app/testpmd: fix mask in flow random item
[ upstream commit e3054b2f402f52c744344a4ec2a17ff1eb47f8e0 ]
A previous patch addressing an ASAN global-buffer-overflow issue
inadvertently degraded the random mask value translation.
Specifically, changing the mask from 0xffff to 0x0000ffff caused
the value to be shifted left by 16 bits, since Testpmd
defines arg::mask as a byte array.
Independent of the ASAN fix, the random item mask specification
was invalid at the API level: random items require a 32-bit mask,
but only a 16-bit mask was being used.
The correct mask for this use case is 0xffffffff.
This fix restores the correct random value translation
by applying the proper 32-bit mask and
addresses the original ASAN issue.
Fixes: 9a18070e3fe4 ("app/testpmd: fix flow random item token")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index eb26333759..c5ae8300d6 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -5583,5 +5583,5 @@ static const struct token token_list[] = {
item_param),
.args = ARGS(ARGS_ENTRY_MASK(struct rte_flow_item_random,
- value, "\x00\x00\xff\xff")),
+ value, "\xff\xff\xff\xff")),
},
[ITEM_GRE_KEY] = {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:52.978476792 +0000
+++ 0023-app-testpmd-fix-mask-in-flow-random-item.patch 2025-10-31 13:53:52.048523406 +0000
@@ -1 +1 @@
-From e3054b2f402f52c744344a4ec2a17ff1eb47f8e0 Mon Sep 17 00:00:00 2001
+From 6bc6f0786b0346521dea67fcb3e03b45ba70d054 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e3054b2f402f52c744344a4ec2a17ff1eb47f8e0 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 83d398f8ee..38e751f3f3 100644
+index eb26333759..c5ae8300d6 100644
@@ -34 +35 @@
-@@ -5592,5 +5592,5 @@ static const struct token token_list[] = {
+@@ -5583,5 +5583,5 @@ static const struct token token_list[] = {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/zxdh: fix Arm build' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (21 preceding siblings ...)
2025-10-31 14:32 ` patch 'app/testpmd: fix mask in flow random item' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: monitor state of primary process' " Kevin Traynor
` (109 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Junlong Wang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4570087f672dab6acb812e2d7ad97dd59d57ce87
Thanks.
Kevin
---
From 4570087f672dab6acb812e2d7ad97dd59d57ce87 Mon Sep 17 00:00:00 2001
From: Junlong Wang <wang.junlong1@zte.com.cn>
Date: Thu, 10 Jul 2025 18:56:38 +0800
Subject: [PATCH] net/zxdh: fix Arm build
[ upstream commit 71c8c449303db456dd630f59dcdcc88b1152b319 ]
fix meson.build issues in compilation, which
caused the inability to compile in the arm64 environment.
Fixes: 29e89288ff14 ("net/zxdh: add driver skeleton")
Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn>
---
drivers/net/zxdh/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/zxdh/meson.build b/drivers/net/zxdh/meson.build
index c9960f4c73..34edcbd380 100644
--- a/drivers/net/zxdh/meson.build
+++ b/drivers/net/zxdh/meson.build
@@ -8,5 +8,5 @@ if not is_linux
endif
-if not dpdk_conf.has('RTE_ARCH_X86_64') or not dpdk_conf.get('RTE_ARCH_64')
+if arch_subdir != 'x86' and arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_64')
build = false
reason = 'only supported on x86_64 and aarch64'
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.005164828 +0000
+++ 0024-net-zxdh-fix-Arm-build.patch 2025-10-31 13:53:52.049523409 +0000
@@ -1 +1 @@
-From 71c8c449303db456dd630f59dcdcc88b1152b319 Mon Sep 17 00:00:00 2001
+From 4570087f672dab6acb812e2d7ad97dd59d57ce87 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 71c8c449303db456dd630f59dcdcc88b1152b319 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index a48a0d43c2..ec71451a55 100644
+index c9960f4c73..34edcbd380 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: monitor state of primary process' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (22 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/zxdh: fix Arm build' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: fix disabling interrupts on DQ' " Kevin Traynor
` (108 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1abb5e1c5de1b16d4d08fc98715e66eab2767944
Thanks.
Kevin
---
From 1abb5e1c5de1b16d4d08fc98715e66eab2767944 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 ac654048df..5aaf6534e3 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -102,4 +102,7 @@ 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;
@@ -107,5 +110,4 @@ uint8_t auto_start = 0;
uint8_t tx_first;
char cmdline_filename[PATH_MAX] = {0};
-
/*
* NUMA support configuration.
@@ -4293,4 +4295,36 @@ signal_handler(int signum __rte_unused)
}
+#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)
@@ -4324,4 +4358,10 @@ 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");
+#endif
+
/* allocate port structures, and init them */
init_port();
@@ -4517,4 +4557,9 @@ 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();
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.034360913 +0000
+++ 0025-app-testpmd-monitor-state-of-primary-process.patch 2025-10-31 13:53:52.051523415 +0000
@@ -1 +1 @@
-From 7628f5bbb7e882e57c956d98731cac12a436c9a7 Mon Sep 17 00:00:00 2001
+From 1abb5e1c5de1b16d4d08fc98715e66eab2767944 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 ac654048df..5aaf6534e3 100644
@@ -27 +28 @@
-@@ -103,4 +103,7 @@ uint16_t verbose_level = 0; /**< Silent by default. */
+@@ -102,4 +102,7 @@ uint16_t verbose_level = 0; /**< Silent by default. */
@@ -35 +36,2 @@
-@@ -109,5 +112,4 @@ uint8_t tx_first;
+@@ -107,5 +110,4 @@ uint8_t auto_start = 0;
+ uint8_t tx_first;
@@ -37 +38,0 @@
- bool echo_cmdline_file;
@@ -41 +42 @@
-@@ -4364,4 +4366,36 @@ signal_handler(int signum __rte_unused)
+@@ -4293,4 +4295,36 @@ signal_handler(int signum __rte_unused)
@@ -78 +79 @@
-@@ -4395,4 +4429,10 @@ main(int argc, char** argv)
+@@ -4324,4 +4358,10 @@ main(int argc, char** argv)
@@ -89 +90 @@
-@@ -4588,4 +4628,9 @@ main(int argc, char** argv)
+@@ -4517,4 +4557,9 @@ main(int argc, char** argv)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: fix disabling interrupts on DQ' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (23 preceding siblings ...)
2025-10-31 14:32 ` patch 'app/testpmd: monitor state of primary process' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: fix conntrack action query' " Kevin Traynor
` (107 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Praveen Kaligineedi, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d6ef9b8798834764c517e7fccbdca0a0b53b8772
Thanks.
Kevin
---
From d6ef9b8798834764c517e7fccbdca0a0b53b8772 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
@@ -249,3 +249,7 @@ 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 285c6ddd61..0103add985 100644
--- a/drivers/net/gve/gve_rx_dqo.c
+++ b/drivers/net/gve/gve_rx_dqo.c
@@ -416,5 +416,7 @@ 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);
diff --git a/drivers/net/gve/gve_tx_dqo.c b/drivers/net/gve/gve_tx_dqo.c
index 169c40d5b0..c36c215b94 100644
--- a/drivers/net/gve/gve_tx_dqo.c
+++ b/drivers/net/gve/gve_tx_dqo.c
@@ -532,5 +532,7 @@ gve_tx_queue_start_dqo(struct rte_eth_dev *dev, uint16_t tx_queue_id)
&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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.061458556 +0000
+++ 0026-net-gve-fix-disabling-interrupts-on-DQ.patch 2025-10-31 13:53:52.052523418 +0000
@@ -1 +1 @@
-From 8a6418e11a4d9e3554d592b1b3e3957fea8e7cee Mon Sep 17 00:00:00 2001
+From d6ef9b8798834764c517e7fccbdca0a0b53b8772 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8a6418e11a4d9e3554d592b1b3e3957fea8e7cee ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: fix conntrack action query' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (24 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: fix disabling interrupts on DQ' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Kevin Traynor
` (106 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Khadem Ullah, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/742ec008bf10ba43e4f4ca555f062552f5156e6f
Thanks.
Kevin
---
From 742ec008bf10ba43e4f4ca555f062552f5156e6f 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 d2585e0edc..4c10047754 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -2153,4 +2153,5 @@ port_action_handle_query(portid_t port_id, uint32_t id)
case RTE_FLOW_ACTION_TYPE_COUNT:
case RTE_FLOW_ACTION_TYPE_QUOTA:
+ case RTE_FLOW_ACTION_TYPE_CONNTRACK:
break;
default:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.091730950 +0000
+++ 0027-app-testpmd-fix-conntrack-action-query.patch 2025-10-31 13:53:52.054523424 +0000
@@ -1 +1 @@
-From d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 Mon Sep 17 00:00:00 2001
+From 742ec008bf10ba43e4f4ca555f062552f5156e6f 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 d2585e0edc..4c10047754 100644
@@ -24 +25 @@
-@@ -2172,4 +2172,5 @@ port_action_handle_query(portid_t port_id, uint32_t id)
+@@ -2153,4 +2153,5 @@ port_action_handle_query(portid_t port_id, uint32_t id)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'doc: add conntrack state inspect command to testpmd guide' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (25 preceding siblings ...)
2025-10-31 14:32 ` patch 'app/testpmd: fix conntrack action query' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Kevin Traynor
` (105 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0a56084d96e33b93394a49e4b4785213d078fae6
Thanks.
Kevin
---
From 0a56084d96e33b93394a49e4b4785213d078fae6 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 38bc00705f..3e3f4bea9d 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -5391,4 +5391,8 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.121130372 +0000
+++ 0028-doc-add-conntrack-state-inspect-command-to-testpmd-g.patch 2025-10-31 13:53:52.056523431 +0000
@@ -1 +1 @@
-From 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 Mon Sep 17 00:00:00 2001
+From 0a56084d96e33b93394a49e4b4785213d078fae6 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 38bc00705f..3e3f4bea9d 100644
@@ -24 +25 @@
-@@ -5393,4 +5393,8 @@ rules like above for the peer port.
+@@ -5391,4 +5391,8 @@ rules like above for the peer port.
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/gve: free Rx mbufs if allocation fails on ring setup' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (26 preceding siblings ...)
2025-10-31 14:32 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Kevin Traynor
` (104 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Joshua Washington; +Cc: Ankit Garg, Ziwei Xiao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ea57f0b441d375770a72e3cd74660d13166bb78f
Thanks.
Kevin
---
From ea57f0b441d375770a72e3cd74660d13166bb78f 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 0103add985..cd85d90bb6 100644
--- a/drivers/net/gve/gve_rx_dqo.c
+++ b/drivers/net/gve/gve_rx_dqo.c
@@ -377,12 +377,11 @@ gve_rxq_mbufs_alloc_dqo(struct gve_rx_queue *rxq)
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;
- }
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.148028684 +0000
+++ 0029-net-gve-free-Rx-mbufs-if-allocation-fails-on-ring-se.patch 2025-10-31 13:53:52.057523434 +0000
@@ -1 +1 @@
-From fa48f964253ba018b4a3054246a6e26b31b5c8b0 Mon Sep 17 00:00:00 2001
+From ea57f0b441d375770a72e3cd74660d13166bb78f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fa48f964253ba018b4a3054246a6e26b31b5c8b0 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: validate DSCP and VLAN for meter creation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (27 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix index-based flow rules' " Kevin Traynor
` (103 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4c3c8dad45bf7f1a745e33d7e1f3b3bb7a94773b
Thanks.
Kevin
---
From 4c3c8dad45bf7f1a745e33d7e1f3b3bb7a94773b 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
@@ -86,4 +86,17 @@ parse_uint(uint64_t *value, const char *str)
}
+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,
@@ -91,8 +104,15 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_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;
@@ -118,5 +138,5 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(dscp);
@@ -127,5 +147,5 @@ 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;
@@ -155,5 +175,5 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(vlan);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.175783592 +0000
+++ 0030-app-testpmd-validate-DSCP-and-VLAN-for-meter-creatio.patch 2025-10-31 13:53:52.058523437 +0000
@@ -1 +1 @@
-From 00092e969aad2fb2a2017b7eec86f033d4527950 Mon Sep 17 00:00:00 2001
+From 4c3c8dad45bf7f1a745e33d7e1f3b3bb7a94773b 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] 135+ messages in thread
* patch 'net/mlx5: fix index-based flow rules' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (28 preceding siblings ...)
2025-10-31 14:32 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix default flow rules start' " Kevin Traynor
` (102 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1d6b9ec03f78f6733899ce4f65f2db096750f44b
Thanks.
Kevin
---
From 1d6b9ec03f78f6733899ce4f65f2db096750f44b Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 30 Jul 2025 10:16:59 +0300
Subject: [PATCH] net/mlx5: fix index-based flow rules
[ upstream commit 4a35eb531b7542c4f86b98bb04b46f17081b537d ]
During asynchronous flow creation by index,
the items array was initialized with only one element,
but the table metadata did not update the item count accordingly.
This mismatch led to an out-of-bounds memcpy operation,
as the code attempted to copy more elements than were actually allocated.
To resolve this, since item matching is disregarded when inserting a
rule by index (the rule is triggered when a packet reaches the
specified index),
the fix is to skip preparing the items array in this case.
Instead, the items array should only contain a single element,
RTE_FLOW_ITEM_TYPE_END, which indicates no match pattern is needed.
This prevents unsafe memory operations and aligns the array size
with its intended usage.
Fixes: 36c379c82e82 ("net/mlx5: add flow rule insertion by index with pattern")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 586500753a..56d9504cb3 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3935,8 +3935,12 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
rule_acts, queue, &sub_error))
goto error;
- rule_items = flow_hw_get_rule_items(dev, table, items,
- pattern_template_index, &priv->hw_q[queue].pp);
- if (!rule_items)
- goto error;
+ if (insertion_type == RTE_FLOW_TABLE_INSERTION_TYPE_INDEX) {
+ rule_items = items;
+ } else {
+ rule_items = flow_hw_get_rule_items(dev, table, items,
+ pattern_template_index, &priv->hw_q[queue].pp);
+ if (!rule_items)
+ goto error;
+ }
if (likely(!rte_flow_template_table_resizable(dev->data->port_id, &table->cfg.attr))) {
ret = mlx5dr_rule_create(table->matcher_info[0].matcher,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.212850054 +0000
+++ 0031-net-mlx5-fix-index-based-flow-rules.patch 2025-10-31 13:53:52.066523462 +0000
@@ -1 +1 @@
-From 4a35eb531b7542c4f86b98bb04b46f17081b537d Mon Sep 17 00:00:00 2001
+From 1d6b9ec03f78f6733899ce4f65f2db096750f44b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4a35eb531b7542c4f86b98bb04b46f17081b537d ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 6dc16f80d3..016370f68b 100644
+index 586500753a..56d9504cb3 100644
@@ -34 +35 @@
-@@ -3983,8 +3983,12 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
+@@ -3935,8 +3935,12 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix default flow rules start' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (29 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix index-based flow rules' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix storage of shared Rx queues' " Kevin Traynor
` (101 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8806e824933ba0bdc08498f14310d89f173e2fb0
Thanks.
Kevin
---
From 8806e824933ba0bdc08498f14310d89f173e2fb0 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 30 Jul 2025 14:35:12 +0300
Subject: [PATCH] net/mlx5: fix default flow rules start
[ upstream commit 6f4909dfa017aacfca6a3fc89d014d474b1fbc6a ]
As part of non-template implementation,
new default rule was added in HWS mode (dv_flow_en=2)
in case dv_xmeta_en=4 (32bits extended META for HWS mode).
In case the proxy port did not start, and it was not configured,
it failed to create this rule and failed to start port representors.
Added ignore for this failure to align to other default rules
creation failure behaviour, and to enable testing port representors
w/o starting the proxy port.
Fixes: 821a6a5cc495 ("net/mlx5: add metadata split for compatibility")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index f83ae1883d..5039a81b14 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -8231,6 +8231,16 @@ mlx5_flow_start_default(struct rte_eth_dev *dev)
struct mlx5_priv *priv = dev->data->dev_private;
- if (priv->sh->config.dv_flow_en == 2)
- return mlx5_flow_nta_add_default_copy_action(dev, &error);
+ if (priv->sh->config.dv_flow_en == 2) {
+ /*
+ * Ignore this failure, if the proxy port is not started, other
+ * default jump actions are not created and this rule will not
+ * be hit.
+ */
+ if (mlx5_flow_nta_add_default_copy_action(dev, &error)) {
+ DRV_LOG(DEBUG, "port %u failed to start default copy action: %s",
+ dev->data->port_id, strerror(rte_errno));
+ return 0;
+ }
+ }
#endif
/* Make sure default copy action (reg_c[0] -> reg_b) is created. */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.246545457 +0000
+++ 0032-net-mlx5-fix-default-flow-rules-start.patch 2025-10-31 13:53:52.071523477 +0000
@@ -1 +1 @@
-From 6f4909dfa017aacfca6a3fc89d014d474b1fbc6a Mon Sep 17 00:00:00 2001
+From 8806e824933ba0bdc08498f14310d89f173e2fb0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6f4909dfa017aacfca6a3fc89d014d474b1fbc6a ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 8db372123c..7c6811b523 100644
+index f83ae1883d..5039a81b14 100644
@@ -29 +30 @@
-@@ -8218,6 +8218,16 @@ mlx5_flow_start_default(struct rte_eth_dev *dev)
+@@ -8231,6 +8231,16 @@ mlx5_flow_start_default(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix storage of shared Rx queues' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (30 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix default flow rules start' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix use after scope of RSS configuration' " Kevin Traynor
` (100 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/01461927dfb1d9f392b22daefa8f020743d1815d
Thanks.
Kevin
---
From 01461927dfb1d9f392b22daefa8f020743d1815d 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 37819932d1..695911008d 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -748,11 +748,18 @@ 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
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 5039a81b14..944d422f97 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1652,4 +1652,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
rxq_ctrl->rxq.mark = 1;
}
+ LIST_FOREACH(rxq_ctrl, &opriv->sh->shared_rxqs, next) {
+ rxq_ctrl->rxq.mark = 1;
+ }
opriv->mark_enabled = 1;
}
@@ -1658,4 +1661,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
rxq_ctrl->rxq.mark = 1;
}
+ LIST_FOREACH(rxq_ctrl, &priv->sh->shared_rxqs, next) {
+ rxq_ctrl->rxq.mark = 1;
+ }
priv->mark_enabled = 1;
}
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 508d27d318..82958565de 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1979,6 +1979,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
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;
@@ -2311,5 +2312,6 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.281949523 +0000
+++ 0033-net-mlx5-fix-storage-of-shared-Rx-queues.patch 2025-10-31 13:53:52.078523499 +0000
@@ -1 +1 @@
-From a0a7903376f2252b06ae272b2c3b69e9b939de04 Mon Sep 17 00:00:00 2001
+From 01461927dfb1d9f392b22daefa8f020743d1815d 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 37819932d1..695911008d 100644
@@ -63 +64 @@
-index 7c6811b523..cc9ec73dfe 100644
+index 5039a81b14..944d422f97 100644
@@ -66 +67 @@
-@@ -1653,4 +1653,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
+@@ -1652,4 +1652,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
@@ -74 +75 @@
-@@ -1659,4 +1662,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
+@@ -1658,4 +1661,7 @@ flow_rxq_mark_flag_set(struct rte_eth_dev *dev)
@@ -83 +84 @@
-index 77c5848c37..1425886a22 100644
+index 508d27d318..82958565de 100644
@@ -86 +87 @@
-@@ -2034,6 +2034,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1979,6 +1979,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
@@ -95 +96 @@
-@@ -2366,5 +2367,6 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2311,5 +2312,6 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix use after scope of RSS configuration' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (31 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix storage of shared Rx queues' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix unsupported flow rule port action' " Kevin Traynor
` (99 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b77323ec4ad783ac997dc630c38c0d175a71f8fc
Thanks.
Kevin
---
From b77323ec4ad783ac997dc630c38c0d175a71f8fc Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Tue, 5 Aug 2025 16:20:57 +0300
Subject: [PATCH] net/mlx5: fix use after scope of RSS configuration
[ upstream commit b7dedd019a034331fbc67b1d10d59bf3531b5048 ]
This patch addresses AddressSanitizer (ASan) stack-use-after-scope
issues occurring during RSS flow creation in the MLX5 driver.
The root cause stemmed from the use of compound literals to
initialize flow action configurations, which could result in
pointers to temporary stack memory being retained in flow structures.
When these pointers were later accessed during flow conversion,
the underlying stack memory was no longer valid,
leading to ASAN-detected errors.
Modifications:
In mlx5_hw_rss_ptype_create_base_flow(),
the struct rte_flow_action_jump is now constructed
at the start of the function, rather than within the do statement.
This ensures a persistent stack allocation for the structure,
preventing use-after-scope situations.
This change eliminates the following ASan errors:
stack-use-after-scope reported in rte_flow_conv_copy
Fixes: ae67e3c43dd5 ("net/mlx5: support RSS expansion in non-template HWS setup")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
| 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--git a/drivers/net/mlx5/mlx5_nta_rss.c b/drivers/net/mlx5/mlx5_nta_rss.c
index 602df301ac..781eaf5e99 100644
--- a/drivers/net/mlx5/mlx5_nta_rss.c
+++ b/drivers/net/mlx5/mlx5_nta_rss.c
@@ -320,4 +320,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
struct rte_flow_action actions[MLX5_HW_MAX_ACTS];
enum mlx5_indirect_type indirect_type;
+ const struct rte_flow_action_jump jump_conf = {
+ .group = ptype_group
+ };
do {
@@ -334,7 +337,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_RSS:
actions[i].type = RTE_FLOW_ACTION_TYPE_JUMP;
- actions[i].conf = &(const struct rte_flow_action_jump) {
- .group = ptype_group
- };
+ actions[i].conf = &jump_conf;
break;
default:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.310006072 +0000
+++ 0034-net-mlx5-fix-use-after-scope-of-RSS-configuration.patch 2025-10-31 13:53:52.079523502 +0000
@@ -1 +1 @@
-From b7dedd019a034331fbc67b1d10d59bf3531b5048 Mon Sep 17 00:00:00 2001
+From b77323ec4ad783ac997dc630c38c0d175a71f8fc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b7dedd019a034331fbc67b1d10d59bf3531b5048 ]
+
@@ -26 +27,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 8f00510445..1d2940a370 100644
+index 602df301ac..781eaf5e99 100644
@@ -38 +39 @@
-@@ -321,4 +321,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
+@@ -320,4 +320,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
@@ -46 +47 @@
-@@ -335,7 +338,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
+@@ -334,7 +337,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix unsupported flow rule port action' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (32 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix use after scope of RSS configuration' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix double free in non-template flow destroy' " Kevin Traynor
` (98 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, Ivan Malov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/dd21df00e57a2947fff3a16f3fd07c9befdd218f
Thanks.
Kevin
---
From dd21df00e57a2947fff3a16f3fd07c9befdd218f 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 56d9504cb3..370f0374d6 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2873,4 +2873,8 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
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;
@@ -7530,4 +7534,8 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
action_types[curr_off++] = MLX5DR_ACTION_TYP_JUMP_TO_MATCHER;
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 -EINVAL;
default:
type = mlx5_hw_dr_action_types[at->actions[i].type];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.346450018 +0000
+++ 0035-net-mlx5-fix-unsupported-flow-rule-port-action.patch 2025-10-31 13:53:52.087523527 +0000
@@ -1 +1 @@
-From c040e9a85a1fbce46528e9bc15d1ce4bbc911346 Mon Sep 17 00:00:00 2001
+From dd21df00e57a2947fff3a16f3fd07c9befdd218f 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 56d9504cb3..370f0374d6 100644
@@ -28 +29 @@
-@@ -2914,4 +2914,8 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2873,4 +2873,8 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
@@ -37,5 +38,3 @@
-@@ -7649,5 +7653,9 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
- at->dr_off[i] = curr_off;
- action_types[curr_off++] = MLX5DR_ACTION_TYP_DEST_ARRAY;
-- break;
-+ break;
+@@ -7530,4 +7534,8 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
+ action_types[curr_off++] = MLX5DR_ACTION_TYP_JUMP_TO_MATCHER;
+ break;
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix double free in non-template flow destroy' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (33 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix unsupported flow rule port action' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template age rules flush' " Kevin Traynor
` (97 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/045c791fdba69e31ae54edf5fe95e9afd77aafc0
Thanks.
Kevin
---
From 045c791fdba69e31ae54edf5fe95e9afd77aafc0 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 7 Aug 2025 13:00:26 +0300
Subject: [PATCH] net/mlx5: fix double free in non-template flow destroy
[ upstream commit 7867b5d7a545f32aa6e6c5b4b406434581a0166b ]
Avoid calling flow_hw_unregister_matcher twice when rule creation
fails due to insufficient memory, which previously caused
a use-after-free error detected by ASan.
As a preventative measure, clear released pointers in
flow_hw_destroy to avoid potential double-free issues.
Fixes: b2845d51c748 ("net/mlx5: support FDB in non-template flow")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 370f0374d6..0d0262a275 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -13834,9 +13834,4 @@ error:
if (hw_act.mhdr)
mlx5_free(hw_act.mhdr);
- if (ret) {
- /* release after actual error */
- if ((*flow)->nt2hws && (*flow)->nt2hws->matcher)
- flow_hw_unregister_matcher(dev, (*flow)->nt2hws->matcher);
- }
return ret;
}
@@ -13856,4 +13851,5 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
if (ret)
DRV_LOG(ERR, "bwc rule destroy failed");
+ flow->nt2hws->nt_rule = NULL;
}
flow->operation_type = MLX5_FLOW_HW_FLOW_OP_TYPE_DESTROY;
@@ -13870,16 +13866,22 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
* , same as for DV.
*/
- if (flow->nt2hws->flow_aux)
+ if (flow->nt2hws->flow_aux) {
mlx5_free(flow->nt2hws->flow_aux);
-
- if (flow->nt2hws->rix_encap_decap)
+ flow->nt2hws->flow_aux = NULL;
+ }
+ if (flow->nt2hws->rix_encap_decap) {
flow_encap_decap_resource_release(dev, flow->nt2hws->rix_encap_decap);
+ flow->nt2hws->rix_encap_decap = 0;
+ }
if (flow->nt2hws->modify_hdr) {
MLX5_ASSERT(flow->nt2hws->modify_hdr->action);
mlx5_hlist_unregister(priv->sh->modify_cmds,
&flow->nt2hws->modify_hdr->entry);
+ flow->nt2hws->modify_hdr = NULL;
}
- if (flow->nt2hws->matcher)
+ if (flow->nt2hws->matcher) {
flow_hw_unregister_matcher(dev, flow->nt2hws->matcher);
+ flow->nt2hws->matcher = NULL;
+ }
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.382234792 +0000
+++ 0036-net-mlx5-fix-double-free-in-non-template-flow-destro.patch 2025-10-31 13:53:52.096523556 +0000
@@ -1 +1 @@
-From 7867b5d7a545f32aa6e6c5b4b406434581a0166b Mon Sep 17 00:00:00 2001
+From 045c791fdba69e31ae54edf5fe95e9afd77aafc0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7867b5d7a545f32aa6e6c5b4b406434581a0166b ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 0c3f554479..3da8d93454 100644
+index 370f0374d6..0d0262a275 100644
@@ -26 +27 @@
-@@ -14095,9 +14095,4 @@ error:
+@@ -13834,9 +13834,4 @@ error:
@@ -36 +37 @@
-@@ -14117,4 +14112,5 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
+@@ -13856,4 +13851,5 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
@@ -42 +43 @@
-@@ -14131,16 +14127,22 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
+@@ -13870,16 +13866,22 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
@@ -67,2 +68,2 @@
- if (flow->nt2hws->sample_release_ctx != NULL) {
- mlx5_nta_sample_mirror_entry_release(dev, flow->nt2hws->sample_release_ctx);
+ }
+
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix non-template age rules flush' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (34 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix double free in non-template flow destroy' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template RSS expansion' " Kevin Traynor
` (96 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9b87a15cdd1467c94060157ada6790878441bbcb
Thanks.
Kevin
---
From 9b87a15cdd1467c94060157ada6790878441bbcb 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 dda3b61376..7baeaedd17 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -164,8 +164,11 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.411130215 +0000
+++ 0037-net-mlx5-fix-non-template-age-rules-flush.patch 2025-10-31 13:53:52.097647892 +0000
@@ -1 +1 @@
-From 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac Mon Sep 17 00:00:00 2001
+From 9b87a15cdd1467c94060157ada6790878441bbcb 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 dda3b61376..7baeaedd17 100644
@@ -31 +32 @@
-@@ -171,8 +171,11 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
+@@ -164,8 +164,11 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix non-template RSS expansion' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (35 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template age rules flush' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix connection tracking state item validation' " Kevin Traynor
` (95 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/e07bd381439a464938bd6f4c3b508f277aeffac9
Thanks.
Kevin
---
From e07bd381439a464938bd6f4c3b508f277aeffac9 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Tue, 12 Aug 2025 13:07:16 +0300
Subject: [PATCH] net/mlx5: fix non-template RSS expansion
[ upstream commit ee60f50fbbf57e8173282c5cdd7d66cd9090103e ]
The PMD checked flow pointer for NULL value after a call to
flow_hw_create_flow(). The function API does not define flow pointer
value if the function call has failed.
The patch fixes error verification after flow_hw_create_flow()
returned - a calling function must check flow_hw_create_flow() return
value.
Fixes: f74914c9956e ("net/mlx5: fix non-template IPv6 flow RSS hash")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
| 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
--git a/drivers/net/mlx5/mlx5_nta_rss.c b/drivers/net/mlx5/mlx5_nta_rss.c
index 781eaf5e99..ee38f233e1 100644
--- a/drivers/net/mlx5/mlx5_nta_rss.c
+++ b/drivers/net/mlx5/mlx5_nta_rss.c
@@ -68,5 +68,5 @@ mlx5_nta_ptype_rss_flow_create(struct mlx5_nta_rss_ctx *ctx,
MLX5_FLOW_ITEM_PTYPE, MLX5_FLOW_ACTION_RSS,
ctx->external, &flow, ctx->error);
- if (flow) {
+ if (ret == 0) {
SLIST_INSERT_HEAD(ctx->head, flow, nt2hws->next);
if (dbg_log) {
@@ -276,4 +276,5 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
+ int ret;
struct rte_flow_hw *flow = NULL;
const struct rte_flow_attr miss_attr = {
@@ -300,8 +301,8 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
};
- flow_hw_create_flow(dev, MLX5_FLOW_TYPE_GEN, &miss_attr,
- miss_pattern, miss_actions, 0, MLX5_FLOW_ACTION_RSS,
- external, &flow, error);
- return flow;
+ ret = flow_hw_create_flow(dev, MLX5_FLOW_TYPE_GEN, &miss_attr,
+ miss_pattern, miss_actions, 0,
+ MLX5_FLOW_ACTION_RSS, external, &flow, error);
+ return ret == 0 ? flow : NULL;
}
@@ -316,5 +317,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
- int i = 0;
+ int ret, i = 0;
struct rte_flow_hw *flow = NULL;
struct rte_flow_action actions[MLX5_HW_MAX_ACTS];
@@ -346,7 +347,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
action_flags &= ~MLX5_FLOW_ACTION_RSS;
action_flags |= MLX5_FLOW_ACTION_JUMP;
- flow_hw_create_flow(dev, flow_type, attr, pattern, actions,
- item_flags, action_flags, external, &flow, error);
- return flow;
+ ret = flow_hw_create_flow(dev, flow_type, attr, pattern, actions,
+ item_flags, action_flags, external, &flow, error);
+ return ret == 0 ? flow : NULL;
}
@@ -426,4 +427,5 @@ flow_nta_create_single(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
+ int ret;
struct rte_flow_hw *flow = NULL;
struct rte_flow_action copy[MLX5_HW_MAX_ACTS];
@@ -457,8 +459,7 @@ flow_nta_create_single(struct rte_eth_dev *dev,
}
end:
- flow_hw_create_flow(dev, flow_type, attr, items,
- _actions, item_flags, action_flags,
- external, &flow, error);
- return flow;
+ ret = flow_hw_create_flow(dev, flow_type, attr, items, _actions,
+ item_flags, action_flags, external, &flow, error);
+ return ret == 0 ? flow : NULL;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.438408377 +0000
+++ 0038-net-mlx5-fix-non-template-RSS-expansion.patch 2025-10-31 13:53:52.098083857 +0000
@@ -1 +1 @@
-From ee60f50fbbf57e8173282c5cdd7d66cd9090103e Mon Sep 17 00:00:00 2001
+From e07bd381439a464938bd6f4c3b508f277aeffac9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee60f50fbbf57e8173282c5cdd7d66cd9090103e ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 1d2940a370..1785425bb5 100644
+index 781eaf5e99..ee38f233e1 100644
@@ -34 +35 @@
-@@ -277,4 +277,5 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
+@@ -276,4 +276,5 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
@@ -40 +41 @@
-@@ -301,8 +302,8 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
+@@ -300,8 +301,8 @@ mlx5_hw_rss_ptype_create_miss_flow(struct rte_eth_dev *dev,
@@ -53 +54 @@
-@@ -317,5 +318,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
+@@ -316,5 +317,5 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
@@ -60 +61 @@
-@@ -347,7 +348,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
+@@ -346,7 +347,7 @@ mlx5_hw_rss_ptype_create_base_flow(struct rte_eth_dev *dev,
@@ -71 +72 @@
-@@ -427,4 +428,5 @@ flow_nta_create_single(struct rte_eth_dev *dev,
+@@ -426,4 +427,5 @@ flow_nta_create_single(struct rte_eth_dev *dev,
@@ -77 +78 @@
-@@ -458,8 +460,7 @@ flow_nta_create_single(struct rte_eth_dev *dev,
+@@ -457,8 +459,7 @@ flow_nta_create_single(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix connection tracking state item validation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (36 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template RSS expansion' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Kevin Traynor
` (94 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/296bde8b85b6a0f22b5420725e08df426431630b
Thanks.
Kevin
---
From 296bde8b85b6a0f22b5420725e08df426431630b 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 +++++
drivers/net/mlx5/mlx5_flow_hw.c | 10 ++++++++++
3 files changed, 20 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 8c3daed7d0..ce33a4e425 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -100,4 +100,9 @@ enum mlx5_indirect_type {
((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)
+
/*
* When HW steering flow engine is used, the CT action handles are encoded in a following way:
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 9fad6e8095..74391faf11 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -3290,4 +3290,9 @@ mlx5_flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
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. */
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 0d0262a275..2beb854a8b 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -16684,4 +16684,5 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
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;
@@ -16704,4 +16705,13 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
"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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.486540835 +0000
+++ 0039-net-mlx5-fix-connection-tracking-state-item-validati.patch 2025-10-31 13:53:52.117523621 +0000
@@ -1 +1 @@
-From 179e70fd7ad2027705b42e7416d436d299eca78c Mon Sep 17 00:00:00 2001
+From 296bde8b85b6a0f22b5420725e08df426431630b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 179e70fd7ad2027705b42e7416d436d299eca78c ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index e890e732c3..ed0c1fcfd2 100644
+index 8c3daed7d0..ce33a4e425 100644
@@ -28 +29 @@
-@@ -101,4 +101,9 @@ enum mlx5_indirect_type {
+@@ -100,4 +100,9 @@ enum mlx5_indirect_type {
@@ -39 +40 @@
-index 7b9e5018b8..f673637e7d 100644
+index 9fad6e8095..74391faf11 100644
@@ -53 +54 @@
-index 3da8d93454..bca396a9ab 100644
+index 0d0262a275..2beb854a8b 100644
@@ -56 +57 @@
-@@ -17011,4 +17011,5 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
+@@ -16684,4 +16684,5 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
@@ -62 +63 @@
-@@ -17031,4 +17032,13 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
+@@ -16704,4 +16705,13 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5/hws: fix TIR action support in FDB' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (37 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix connection tracking state item validation' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix indirect flow age action handling' " Kevin Traynor
` (93 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Suanming Mou, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a5461b49693e202039f2ecf6d978890e968283ca
Thanks.
Kevin
---
From a5461b49693e202039f2ecf6d978890e968283ca 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 57491c0f48..439b74bf03 100644
--- a/drivers/net/mlx5/hws/mlx5dr_action.c
+++ b/drivers/net/mlx5/hws/mlx5dr_action.c
@@ -88,4 +88,5 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
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) |
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.515381943 +0000
+++ 0040-net-mlx5-hws-fix-TIR-action-support-in-FDB.patch 2025-10-31 13:53:52.118523624 +0000
@@ -1 +1 @@
-From 1fca53b789db81921389efb47cde3afbc1205e8e Mon Sep 17 00:00:00 2001
+From a5461b49693e202039f2ecf6d978890e968283ca 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 57491c0f48..439b74bf03 100644
@@ -24 +25 @@
-@@ -94,4 +94,5 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
+@@ -88,4 +88,5 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix indirect flow age action handling' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (38 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Kevin Traynor
` (92 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Raslan Darawsheh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/970baabf83153ae21c936341cd44068f3ebf9571
Thanks.
Kevin
---
From 970baabf83153ae21c936341cd44068f3ebf9571 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 | 4 ++++
drivers/net/mlx5/mlx5_flow_hw.c | 24 +++++++++++++++++-------
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index a826214e9f..b973617d9a 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -2223,4 +2223,8 @@ applications are allowed to:
This option is supported only for Tx hairpin queues.
+#. 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.
+
Notes for testpmd
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 2beb854a8b..e8a3473241 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3140,4 +3140,5 @@ 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);
+ uint32_t *cnt_queue;
cnt_id_t age_cnt;
@@ -3190,7 +3191,6 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
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->flags |= MLX5_FLOW_HW_FLOW_FLAG_CNT_ID;
@@ -12897,4 +12897,12 @@ flow_hw_action_create(struct rte_eth_dev *dev,
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);
@@ -13116,4 +13124,6 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
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,
@@ -13169,8 +13179,8 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
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);
}
/**
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.553651403 +0000
+++ 0041-net-mlx5-fix-indirect-flow-age-action-handling.patch 2025-10-31 13:53:52.129523658 +0000
@@ -1 +1 @@
-From 8bc72d9f277593f6d8b27278bad3a5bb92e7347f Mon Sep 17 00:00:00 2001
+From 970baabf83153ae21c936341cd44068f3ebf9571 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8bc72d9f277593f6d8b27278bad3a5bb92e7347f ]
+
@@ -42 +43,0 @@
-Cc: stable@dpdk.org
@@ -53 +54 @@
-index 761dcad542..20056f61d6 100644
+index a826214e9f..b973617d9a 100644
@@ -56,2 +57,2 @@
-@@ -2741,4 +2741,8 @@ With :ref:`HW steering <mlx5_hws>`,
- - ``nb_aging_objects`` is the number of flow rules containing age action.
+@@ -2223,4 +2223,8 @@ applications are allowed to:
+ This option is supported only for Tx hairpin queues.
@@ -64 +65 @@
- .. _mlx5_quota:
+ Notes for testpmd
@@ -66 +67 @@
-index 84f39c467e..c84ae726a7 100644
+index 2beb854a8b..e8a3473241 100644
@@ -69 +70 @@
-@@ -3181,4 +3181,5 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
+@@ -3140,4 +3140,5 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -75 +76 @@
-@@ -3231,7 +3232,6 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
+@@ -3190,7 +3191,6 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -85 +86 @@
-@@ -13143,4 +13143,12 @@ flow_hw_action_create(struct rte_eth_dev *dev,
+@@ -12897,4 +12897,12 @@ flow_hw_action_create(struct rte_eth_dev *dev,
@@ -98 +99 @@
-@@ -13362,4 +13370,6 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
+@@ -13116,4 +13124,6 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
@@ -105 +106 @@
-@@ -13415,8 +13425,8 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
+@@ -13169,8 +13179,8 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix Direct Verbs counter offset detection' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (39 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix indirect flow age action handling' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix interface name parameter definition' " Kevin Traynor
` (91 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Andre Muezerie, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f96746df0877038b3473fbbb36721a7995c7629f
Thanks.
Kevin
---
From f96746df0877038b3473fbbb36721a7995c7629f 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 74391faf11..b9b1a34dab 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -19644,5 +19644,6 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
};
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,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.590901361 +0000
+++ 0042-net-mlx5-fix-Direct-Verbs-counter-offset-detection.patch 2025-10-31 13:53:52.137523684 +0000
@@ -1 +1 @@
-From d953431da8e1ece042e33ba71650a3ba6b1e27c1 Mon Sep 17 00:00:00 2001
+From f96746df0877038b3473fbbb36721a7995c7629f 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 74391faf11..b9b1a34dab 100644
@@ -36 +37 @@
-@@ -19658,5 +19658,6 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
+@@ -19644,5 +19644,6 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix interface name parameter definition' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (40 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/iavf: fix Tx vector path selection logic' " Kevin Traynor
` (90 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d18c004a899b338dab7e31723d91b52b47a0444a
Thanks.
Kevin
---
From d18c004a899b338dab7e31723d91b52b47a0444a 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 5d64984022..f78d602098 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -73,5 +73,5 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
*/
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;
@@ -87,10 +87,9 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
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;
@@ -150,8 +149,8 @@ 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;
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 695911008d..5ae226cb08 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1587,5 +1587,5 @@ 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);
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 8849334755..296276c7ca 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -2290,6 +2290,5 @@ uint64_t mlx5_get_restore_flags(struct rte_eth_dev *dev,
/* 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]);
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 49f750be68..2e9c9d5b3f 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -57,5 +57,5 @@ mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[RTE_ETHER_ADDR_LEN])
*/
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;
@@ -68,5 +68,5 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.621853539 +0000
+++ 0043-net-mlx5-fix-interface-name-parameter-definition.patch 2025-10-31 13:53:52.140523693 +0000
@@ -1 +1 @@
-From 9e58a50c059f3760c51ddee16073496c6e1d510a Mon Sep 17 00:00:00 2001
+From d18c004a899b338dab7e31723d91b52b47a0444a 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 5d64984022..f78d602098 100644
@@ -24 +25 @@
-@@ -74,5 +74,5 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
+@@ -73,5 +73,5 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
@@ -31 +32 @@
-@@ -88,10 +88,9 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+@@ -87,10 +87,9 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
@@ -44 +45 @@
-@@ -151,8 +150,8 @@ static int
+@@ -150,8 +149,8 @@ static int
@@ -56 +57 @@
-index 85b3fabaf5..3d87aec5bc 100644
+index 695911008d..5ae226cb08 100644
@@ -59 +60 @@
-@@ -1588,5 +1588,5 @@ err_secondary:
+@@ -1587,5 +1587,5 @@ err_secondary:
@@ -67 +68 @@
-index 53f0a27445..93e298d648 100644
+index 8849334755..296276c7ca 100644
@@ -70 +71 @@
-@@ -2349,6 +2349,5 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
+@@ -2290,6 +2290,5 @@ uint64_t mlx5_get_restore_flags(struct rte_eth_dev *dev,
@@ -79 +80 @@
-index 4f43b95a09..32a9f599b2 100644
+index 49f750be68..2e9c9d5b3f 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/iavf: fix Tx vector path selection logic' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (41 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/mlx5: fix interface name parameter definition' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/ixgbe: fix SCTP port filtering on E610' " Kevin Traynor
` (89 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/65960ba2bcfa95c69dd96a921a690cf932617065
Thanks.
Kevin
---
From 65960ba2bcfa95c69dd96a921a690cf932617065 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 0ffb9762fe..cce4917a3f 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -4163,8 +4163,4 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
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 &&
@@ -4173,4 +4169,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
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)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.651769346 +0000
+++ 0044-net-iavf-fix-Tx-vector-path-selection-logic.patch 2025-10-31 13:53:52.142523699 +0000
@@ -1 +1 @@
-From ecdccc79cf3296bb3cb6d53d87ad85d13828677b Mon Sep 17 00:00:00 2001
+From 65960ba2bcfa95c69dd96a921a690cf932617065 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
-@@ -4228,8 +4228,4 @@ 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 0ffb9762fe..cce4917a3f 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -4163,8 +4163,4 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
@@ -42 +43 @@
-@@ -4238,4 +4234,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
+@@ -4173,4 +4169,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ixgbe: fix SCTP port filtering on E610' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (42 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/iavf: fix Tx vector path selection logic' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/intel: fix assumption about tag placement order' " Kevin Traynor
` (88 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Yuan Wang; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/910013aa60c2a0799d981c83d23ae1e13a70fbde
Thanks.
Kevin
---
From 910013aa60c2a0799d981c83d23ae1e13a70fbde Mon Sep 17 00:00:00 2001
From: Yuan Wang <yuanx.wang@intel.com>
Date: Fri, 18 Jul 2025 16:53:35 +0800
Subject: [PATCH] net/ixgbe: fix SCTP port filtering on E610
[ upstream commit 98c359e33004afa3027e83c60c8d1bb6e240fe6b ]
E610 supports SCTP port in FDIR filter, so add it to the support list.
Fixes: 316637762a5f ("net/ixgbe/base: enable E610 device")
Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ixgbe/ixgbe_flow.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c
index 1e3804bb15..5cc51621b8 100644
--- a/drivers/net/ixgbe/ixgbe_flow.c
+++ b/drivers/net/ixgbe/ixgbe_flow.c
@@ -2112,8 +2112,9 @@ ixgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev,
}
- /* only x550 family only support sctp port */
+ /* only some mac types support sctp port */
if (hw->mac.type == ixgbe_mac_X550 ||
hw->mac.type == ixgbe_mac_X550EM_x ||
- hw->mac.type == ixgbe_mac_X550EM_a) {
+ hw->mac.type == ixgbe_mac_X550EM_a ||
+ hw->mac.type == ixgbe_mac_E610) {
/**
* Only care about src & dst ports,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.680091749 +0000
+++ 0045-net-ixgbe-fix-SCTP-port-filtering-on-E610.patch 2025-10-31 13:53:52.144523705 +0000
@@ -1 +1 @@
-From 98c359e33004afa3027e83c60c8d1bb6e240fe6b Mon Sep 17 00:00:00 2001
+From 910013aa60c2a0799d981c83d23ae1e13a70fbde Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 98c359e33004afa3027e83c60c8d1bb6e240fe6b ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -14 +15 @@
- drivers/net/intel/ixgbe/ixgbe_flow.c | 5 +++--
+ drivers/net/ixgbe/ixgbe_flow.c | 5 +++--
@@ -17,4 +18,4 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_flow.c b/drivers/net/intel/ixgbe/ixgbe_flow.c
-index 6278646720..3b68d820ca 100644
---- a/drivers/net/intel/ixgbe/ixgbe_flow.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_flow.c
+diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c
+index 1e3804bb15..5cc51621b8 100644
+--- a/drivers/net/ixgbe/ixgbe_flow.c
++++ b/drivers/net/ixgbe/ixgbe_flow.c
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/intel: fix assumption about tag placement order' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (43 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/ixgbe: fix SCTP port filtering on E610' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Kevin Traynor
` (87 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3624bcf1ddfea8da6ed526319e44f980158076dd
Thanks.
Kevin
---
From 3624bcf1ddfea8da6ed526319e44f980158076dd 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 0392c41005..4b0b3d0074 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
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",
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index cce4917a3f..8fdf0f92e2 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -1201,9 +1201,11 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
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",
diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index f58df9bdfe..417dc80a3a 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -1686,7 +1686,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
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",
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.712831057 +0000
+++ 0046-net-intel-fix-assumption-about-tag-placement-order.patch 2025-10-31 13:53:52.148523718 +0000
@@ -1 +1 @@
-From 21168355589ea9edfcb2925f4952ecb05470f92f Mon Sep 17 00:00:00 2001
+From 3624bcf1ddfea8da6ed526319e44f980158076dd 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,5 +28,5 @@
-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
-@@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_desc *rxdp)
+diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
+index 0392c41005..4b0b3d0074 100644
+--- a/drivers/net/i40e/i40e_rxtx.c
++++ b/drivers/net/i40e/i40e_rxtx.c
+@@ -129,7 +129,11 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
@@ -46,5 +47,5 @@
-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
-@@ -1185,9 +1185,11 @@ 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 cce4917a3f..8fdf0f92e2 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -1201,9 +1201,11 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
@@ -67,5 +68,5 @@
-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
-@@ -1836,7 +1836,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_flex_desc *rxdp)
+diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
+index f58df9bdfe..417dc80a3a 100644
+--- a/drivers/net/ice/ice_rxtx.c
++++ b/drivers/net/ice/ice_rxtx.c
+@@ -1686,7 +1686,11 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: fix VLAN tag reporting on Rx' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (44 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/intel: fix assumption about tag placement order' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix adding special words' " Kevin Traynor
` (86 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/6dda64fea0d806098c80f7c17823ce9ebb3de13c
Thanks.
Kevin
---
From 6dda64fea0d806098c80f7c17823ce9ebb3de13c 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 2929f1253d..ada0558863 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -69,12 +69,4 @@ static const char * const ice_valid_args[] = {
#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;
@@ -4974,40 +4966,4 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
}
-/**
- * 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
@@ -5016,5 +4972,4 @@ 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) {
@@ -5028,39 +4983,7 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
}
- 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);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.743721558 +0000
+++ 0047-net-ice-fix-VLAN-tag-reporting-on-Rx.patch 2025-10-31 13:53:52.152523730 +0000
@@ -1 +1 @@
-From fba64e026d03f4926e1ddc15a2128b8447b73d69 Mon Sep 17 00:00:00 2001
+From 6dda64fea0d806098c80f7c17823ce9ebb3de13c 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
-@@ -66,12 +66,4 @@ static const char * const ice_valid_args[] = {
+diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
+index 2929f1253d..ada0558863 100644
+--- a/drivers/net/ice/ice_ethdev.c
++++ b/drivers/net/ice/ice_ethdev.c
+@@ -69,12 +69,4 @@ static const char * const ice_valid_args[] = {
@@ -50 +51 @@
-@@ -4966,40 +4958,4 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
+@@ -4974,40 +4966,4 @@ ice_vsi_config_vlan_stripping(struct ice_vsi *vsi, bool ena)
@@ -76 +76,0 @@
-- const struct ci_rx_queue *rxq = dev_data->rx_queues[i];
@@ -80 +80,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);
@@ -91 +92 @@
-@@ -5008,5 +4964,4 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
+@@ -5016,5 +4972,4 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
@@ -97 +98 @@
-@@ -5020,39 +4975,7 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
+@@ -5028,39 +4983,7 @@ ice_vsi_config_outer_vlan_stripping(struct ice_vsi *vsi, bool on)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice/base: fix adding special words' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (45 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Kevin Traynor
` (85 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 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 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f0513d9c9a93f1d8a33f42c5960b4763d9b92f90
Thanks.
Kevin
---
From f0513d9c9a93f1d8a33f42c5960b4763d9b92f90 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 a3786961e6..65b97f6b11 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -8237,8 +8237,4 @@ 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
@@ -8248,4 +8244,8 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.775678760 +0000
+++ 0048-net-ice-base-fix-adding-special-words.patch 2025-10-31 13:53:52.156523743 +0000
@@ -1 +1 @@
-From e563992fba809bcae90b4734f555e354024ec564 Mon Sep 17 00:00:00 2001
+From f0513d9c9a93f1d8a33f42c5960b4763d9b92f90 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
-@@ -8288,8 +8288,4 @@ 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 a3786961e6..65b97f6b11 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
+@@ -8237,8 +8237,4 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
@@ -40 +41 @@
-@@ -8299,4 +8295,8 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
+@@ -8248,4 +8244,8 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice/base: fix memory leak in HW profile handling' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (46 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/ice/base: fix adding special words' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in recipe " Kevin Traynor
` (84 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Jacob Keller; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3299f7369aee0798ef289d82bc9fd43288f5b85a
Thanks.
Kevin
---
From 3299f7369aee0798ef289d82bc9fd43288f5b85a 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 0d64a5bb1e..2b0567976b 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -2628,8 +2628,4 @@ 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 0;
free_params:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.804843436 +0000
+++ 0049-net-ice-base-fix-memory-leak-in-HW-profile-handling.patch 2025-10-31 13:53:52.158523749 +0000
@@ -1 +1 @@
-From bce22ae3a0e61134b5fd19498bd849d1693dadb4 Mon Sep 17 00:00:00 2001
+From 3299f7369aee0798ef289d82bc9fd43288f5b85a 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
-@@ -2633,8 +2633,4 @@ 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 0d64a5bb1e..2b0567976b 100644
+--- a/drivers/net/ice/base/ice_flow.c
++++ b/drivers/net/ice/base/ice_flow.c
+@@ -2628,8 +2628,4 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice/base: fix memory leak in recipe handling' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (47 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'gro: fix payload corruption in coalescing packets' " Kevin Traynor
` (83 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Pandi Kumar Maharajan; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b2843e855325a5f436f89eaada998bc1a3e2bae1
Thanks.
Kevin
---
From b2843e855325a5f436f89eaada998bc1a3e2bae1 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 65b97f6b11..51e0273a71 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -2436,4 +2436,5 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
{
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;
@@ -2482,4 +2483,13 @@ 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];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.836284606 +0000
+++ 0050-net-ice-base-fix-memory-leak-in-recipe-handling.patch 2025-10-31 13:53:52.161523758 +0000
@@ -1 +1 @@
-From baf3de23be970346378d5159a81782bfb6eb927b Mon Sep 17 00:00:00 2001
+From b2843e855325a5f436f89eaada998bc1a3e2bae1 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 65b97f6b11..51e0273a71 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'gro: fix payload corruption in coalescing packets' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (48 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in recipe " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Kevin Traynor
` (82 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Tathagat Priyadarshi; +Cc: Kumara Parameshwaran, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/762a9230466908583f80754a51f3349754e5b4c3
Thanks.
Kevin
---
From 762a9230466908583f80754a51f3349754e5b4c3 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 e9be7b95d1..43383e47e0 100644
--- a/lib/gro/gro_tcp.h
+++ b/lib/gro/gro_tcp.h
@@ -134,5 +134,5 @@ merge_two_tcp_packets(struct gro_tcp_item *item,
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.863266731 +0000
+++ 0051-gro-fix-payload-corruption-in-coalescing-packets.patch 2025-10-31 13:53:52.162329417 +0000
@@ -1 +1 @@
-From 33358ccc291fbc39d93b3c3975bebec1c38ab56d Mon Sep 17 00:00:00 2001
+From 762a9230466908583f80754a51f3349754e5b4c3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 33358ccc291fbc39d93b3c3975bebec1c38ab56d ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eal: fix DMA mask validation with IOVA mode option' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (49 preceding siblings ...)
2025-10-31 14:32 ` patch 'gro: fix payload corruption in coalescing packets' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix MP socket cleanup' " Kevin Traynor
` (81 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Shani Peretz; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8597047cd39667481454b9d5b0264ad4c9689b3c
Thanks.
Kevin
---
From 8597047cd39667481454b9d5b0264ad4c9689b3c 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 2cb693a90b..92d0b6be62 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -666,4 +666,8 @@ rte_eal_init(int argc, char **argv)
*/
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) {
@@ -671,5 +675,5 @@ rte_eal_init(int argc, char **argv)
if (has_phys_addr) {
EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
if (!RTE_IOVA_IN_MBUF) {
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index a13d8f559a..a0111b50b9 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1032,8 +1032,11 @@ 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) {
diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
index 5c7526f922..eb9fc302de 100644
--- a/lib/eal/windows/eal.c
+++ b/lib/eal/windows/eal.c
@@ -340,4 +340,7 @@ rte_eal_init(int argc, char **argv)
}
+ /* 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) {
@@ -345,5 +348,5 @@ rte_eal_init(int argc, char **argv)
if (has_phys_addr) {
EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
if (!RTE_IOVA_IN_MBUF) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.891458715 +0000
+++ 0052-eal-fix-DMA-mask-validation-with-IOVA-mode-option.patch 2025-10-31 13:53:52.162523761 +0000
@@ -1 +1 @@
-From e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 Mon Sep 17 00:00:00 2001
+From 8597047cd39667481454b9d5b0264ad4c9689b3c 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 2cb693a90b..92d0b6be62 100644
@@ -37 +38 @@
-@@ -671,4 +671,8 @@ rte_eal_init(int argc, char **argv)
+@@ -666,4 +666,8 @@ rte_eal_init(int argc, char **argv)
@@ -46 +47 @@
-@@ -676,5 +680,5 @@ rte_eal_init(int argc, char **argv)
+@@ -671,5 +675,5 @@ rte_eal_init(int argc, char **argv)
@@ -54 +55 @@
-index 52efb8626b..3a0c9c9db6 100644
+index a13d8f559a..a0111b50b9 100644
@@ -57 +58 @@
-@@ -1043,8 +1043,11 @@ rte_eal_init(int argc, char **argv)
+@@ -1032,8 +1032,11 @@ rte_eal_init(int argc, char **argv)
@@ -71 +72 @@
-index 4f0a164d9b..2502ec3c3d 100644
+index 5c7526f922..eb9fc302de 100644
@@ -74 +75 @@
-@@ -349,4 +349,7 @@ rte_eal_init(int argc, char **argv)
+@@ -340,4 +340,7 @@ rte_eal_init(int argc, char **argv)
@@ -82 +83 @@
-@@ -354,5 +357,5 @@ rte_eal_init(int argc, char **argv)
+@@ -345,5 +348,5 @@ rte_eal_init(int argc, char **argv)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eal: fix MP socket cleanup' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (50 preceding siblings ...)
2025-10-31 14:32 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Kevin Traynor
` (80 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9d55450161260d6c3a707585b9448a9c4638d678
Thanks.
Kevin
---
From 9d55450161260d6c3a707585b9448a9c4638d678 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 92d0b6be62..7aec41946c 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -904,6 +904,6 @@ rte_eal_cleanup(void)
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();
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index a0111b50b9..a1e95c5c88 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1322,9 +1322,9 @@ rte_eal_cleanup(void)
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();
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.919475744 +0000
+++ 0053-eal-fix-MP-socket-cleanup.patch 2025-10-31 13:53:52.163523765 +0000
@@ -1 +1 @@
-From 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f Mon Sep 17 00:00:00 2001
+From 9d55450161260d6c3a707585b9448a9c4638d678 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 92d0b6be62..7aec41946c 100644
@@ -49 +50 @@
-@@ -910,6 +910,6 @@ rte_eal_cleanup(void)
+@@ -904,6 +904,6 @@ rte_eal_cleanup(void)
@@ -58 +59 @@
-index 3a0c9c9db6..caf22033d0 100644
+index a0111b50b9..a1e95c5c88 100644
@@ -61 +62 @@
-@@ -1334,9 +1334,9 @@ rte_eal_cleanup(void)
+@@ -1322,9 +1322,9 @@ rte_eal_cleanup(void)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'crypto/ipsec_mb: fix QP release in secondary' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (51 preceding siblings ...)
2025-10-31 14:32 ` patch 'eal: fix MP socket cleanup' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'efd: fix AVX2 support' " Kevin Traynor
` (79 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ff46fb5d2cbf8aaa5636a1c5c7f1263324fc4cb5
the
Thanks.
Kevin
---
From ff46fb5d2cbf8aaa5636a1c5c7f1263324fc4cb5 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 910efb1a97..50ee140ccd 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
@@ -139,4 +139,5 @@ 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)
@@ -153,6 +154,8 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.946230481 +0000
+++ 0054-crypto-ipsec_mb-fix-QP-release-in-secondary.patch 2025-10-31 13:53:52.164523768 +0000
@@ -1 +1 @@
-From 0e03ab647d07cd985a7cac36cefff5195cc3a07d Mon Sep 17 00:00:00 2001
+From ff46fb5d2cbf8aaa5636a1c5c7f1263324fc4cb5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0e03ab647d07cd985a7cac36cefff5195cc3a07d ]
+
@@ -41 +42,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'efd: fix AVX2 support' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (52 preceding siblings ...)
2025-10-31 14:32 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/octeon_ep: handle interrupt enable failure' " Kevin Traynor
` (78 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/398ba9f7cc27bd6fe9f9553bc785b9e1a7a4eb89
Thanks.
Kevin
---
From 398ba9f7cc27bd6fe9f9553bc785b9e1a7a4eb89 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 3cbb3c2719..3386958afb 100644
--- a/lib/efd/rte_efd.c
+++ b/lib/efd/rte_efd.c
@@ -26,4 +26,5 @@
#include "rte_efd.h"
#if defined(RTE_ARCH_X86)
+#include "rte_efd_x86.h"
#elif defined(RTE_ARCH_ARM64)
#include "rte_efd_arm64.h"
@@ -1274,5 +1275,5 @@ 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,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:53.974513402 +0000
+++ 0055-efd-fix-AVX2-support.patch 2025-10-31 13:53:52.165511074 +0000
@@ -1 +1 @@
-From c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 Mon Sep 17 00:00:00 2001
+From 398ba9f7cc27bd6fe9f9553bc785b9e1a7a4eb89 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 3cbb3c2719..3386958afb 100644
@@ -29 +30 @@
-@@ -27,4 +27,5 @@
+@@ -26,4 +26,5 @@
@@ -35 +36 @@
-@@ -1280,5 +1281,5 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
+@@ -1274,5 +1275,5 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/octeon_ep: handle interrupt enable failure' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (53 preceding siblings ...)
2025-10-31 14:32 ` patch 'efd: fix AVX2 support' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:32 ` patch 'net/octeon_ep: fix mbuf data offset update' " Kevin Traynor
` (77 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Vamsi Attunuru; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4f3ad5beb3a4ef8c38d0a6fdc01f12a0f039f327
Thanks.
Kevin
---
From 4f3ad5beb3a4ef8c38d0a6fdc01f12a0f039f327 Mon Sep 17 00:00:00 2001
From: Vamsi Attunuru <vattunuru@marvell.com>
Date: Mon, 14 Jul 2025 11:01:50 +0530
Subject: [PATCH] net/octeon_ep: handle interrupt enable failure
[ upstream commit 0fcfecc1f1eb3d8b1e8632134462caf3b3885281 ]
Patch checks the return value of interrupt enable
and returns gracefully if file handler is not available.
Fixes: 826da0f56d42 ("net/octeon_ep: extend mailbox functionality")
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
---
drivers/net/octeon_ep/otx_ep_mbox.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/octeon_ep/otx_ep_mbox.c b/drivers/net/octeon_ep/otx_ep_mbox.c
index 1d7e08d2cc..c83bb81474 100644
--- a/drivers/net/octeon_ep/otx_ep_mbox.c
+++ b/drivers/net/octeon_ep/otx_ep_mbox.c
@@ -356,4 +356,5 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
struct rte_pci_device *pdev = RTE_ETH_DEV_TO_PCI(eth_dev);
uint64_t reg_val;
+ int rc;
otx_ep_mbox_version_check(otx_ep);
@@ -361,9 +362,14 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
rte_intr_callback_register(pdev->intr_handle, otx_ep_mbox_intr_handler, (void *)eth_dev);
- if (rte_intr_enable(pdev->intr_handle)) {
+ rc = rte_intr_enable(pdev->intr_handle);
+
+ if (!(rc == -1 || rc == 0)) {
otx_ep_err("rte_intr_enable failed");
return -1;
}
+ if (rc == -1)
+ return 0;
+
reg_val = otx2_read64(otx_ep->hw_addr + CNXK_EP_R_MBOX_PF_VF_INT(0));
if (reg_val == UINT64_MAX)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.001228388 +0000
+++ 0056-net-octeon_ep-handle-interrupt-enable-failure.patch 2025-10-31 13:53:52.165523771 +0000
@@ -1 +1 @@
-From 0fcfecc1f1eb3d8b1e8632134462caf3b3885281 Mon Sep 17 00:00:00 2001
+From 4f3ad5beb3a4ef8c38d0a6fdc01f12a0f039f327 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0fcfecc1f1eb3d8b1e8632134462caf3b3885281 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index e0fb6842e0..3e94c66677 100644
+index 1d7e08d2cc..c83bb81474 100644
@@ -21 +22 @@
-@@ -372,4 +372,5 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
+@@ -356,4 +356,5 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
@@ -27 +28 @@
-@@ -377,9 +378,14 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
+@@ -361,9 +362,14 @@ otx_ep_mbox_init(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/octeon_ep: fix mbuf data offset update' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (54 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/octeon_ep: handle interrupt enable failure' " Kevin Traynor
@ 2025-10-31 14:32 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/octeon_ep: fix device start' " Kevin Traynor
` (76 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:32 UTC (permalink / raw)
To: Vamsi Attunuru; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/db478b91a5783a00567f4d5d876dad64eff2330b
Thanks.
Kevin
---
From db478b91a5783a00567f4d5d876dad64eff2330b Mon Sep 17 00:00:00 2001
From: Vamsi Attunuru <vattunuru@marvell.com>
Date: Mon, 14 Jul 2025 11:10:41 +0530
Subject: [PATCH] net/octeon_ep: fix mbuf data offset update
[ upstream commit 74348d7ad2503960611e979677acad4b4641e7dd ]
Buffer refill routine uses mempool API instead of pktmbuf
alloc to avoid mbuf reset. Patch uses rearm to update the
mbuf fields. Also it removes redundant refill count update.
Fixes: 35dee56cee00 ("net/octeon_ep: add new fastpath routines")
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
---
drivers/net/octeon_ep/cnxk_ep_rx.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/net/octeon_ep/cnxk_ep_rx.c b/drivers/net/octeon_ep/cnxk_ep_rx.c
index 7465e0a017..a10e9c536e 100644
--- a/drivers/net/octeon_ep/cnxk_ep_rx.c
+++ b/drivers/net/octeon_ep/cnxk_ep_rx.c
@@ -11,5 +11,4 @@ cnxk_ep_process_pkts_scalar_mseg(struct rte_mbuf **rx_pkts, struct otx_ep_droq *
struct rte_mbuf **recv_buf_list = droq->recv_buf_list;
uint32_t total_pkt_len, bytes_rsvd = 0;
- uint16_t port_id = droq->otx_ep_dev->port_id;
uint16_t nb_desc = droq->nb_desc;
uint16_t pkts;
@@ -23,5 +22,5 @@ cnxk_ep_process_pkts_scalar_mseg(struct rte_mbuf **rx_pkts, struct otx_ep_droq *
mbuf = recv_buf_list[droq->read_idx];
- info = rte_pktmbuf_mtod(mbuf, struct otx_ep_droq_info *);
+ info = cnxk_pktmbuf_mtod(mbuf, struct otx_ep_droq_info *);
total_pkt_len = rte_bswap16(info->length >> 48) + OTX_EP_INFO_SIZE;
@@ -38,5 +37,5 @@ cnxk_ep_process_pkts_scalar_mseg(struct rte_mbuf **rx_pkts, struct otx_ep_droq *
/* Note the first seg */
first_buf = mbuf;
- mbuf->data_off += OTX_EP_INFO_SIZE;
+ *(uint64_t *)&mbuf->rearm_data = droq->rearm_data;
mbuf->pkt_len = cpy_len - OTX_EP_INFO_SIZE;
mbuf->data_len = cpy_len - OTX_EP_INFO_SIZE;
@@ -58,10 +57,8 @@ cnxk_ep_process_pkts_scalar_mseg(struct rte_mbuf **rx_pkts, struct otx_ep_droq *
}
mbuf = first_buf;
- mbuf->port = port_id;
rx_pkts[pkts] = mbuf;
bytes_rsvd += pkt_len;
}
- droq->refill_count += new_pkts;
droq->pkts_pending -= pkts;
/* Stats */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.027832087 +0000
+++ 0057-net-octeon_ep-fix-mbuf-data-offset-update.patch 2025-10-31 13:53:52.166181562 +0000
@@ -1 +1 @@
-From 74348d7ad2503960611e979677acad4b4641e7dd Mon Sep 17 00:00:00 2001
+From db478b91a5783a00567f4d5d876dad64eff2330b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 74348d7ad2503960611e979677acad4b4641e7dd ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/octeon_ep: fix device start' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (55 preceding siblings ...)
2025-10-31 14:32 ` patch 'net/octeon_ep: fix mbuf data offset update' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'common/cnxk: fix async event handling' " Kevin Traynor
` (75 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Vamsi Attunuru; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c4c0edd1947bbc4095981dc0d96738ef22db524e
Thanks.
Kevin
---
From c4c0edd1947bbc4095981dc0d96738ef22db524e 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 a10e9c536e..9678cec90b 100644
--- a/drivers/net/octeon_ep/cnxk_ep_rx.c
+++ b/drivers/net/octeon_ep/cnxk_ep_rx.c
@@ -152,2 +152,42 @@ 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 ca84cac962..a1d9f65f38 100644
--- a/drivers/net/octeon_ep/cnxk_ep_vf.c
+++ b/drivers/net/octeon_ep/cnxk_ep_vf.c
@@ -139,4 +139,16 @@ cnxk_ep_vf_setup_iq_regs(struct otx_ep_device *otx_ep, uint32_t iq_no)
}
+ /* 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
@@ -238,6 +250,6 @@ cnxk_ep_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
(uint32_t __rte_atomic *)((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 *)(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);
*droq->pkts_sent_ism = 0;
droq->pkts_sent_prev = 0;
@@ -267,22 +279,6 @@ 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 a482f4266e..00f723a5a8 100644
--- a/drivers/net/octeon_ep/otx2_ep_vf.c
+++ b/drivers/net/octeon_ep/otx2_ep_vf.c
@@ -288,4 +288,16 @@ otx2_vf_setup_iq_regs(struct otx_ep_device *otx_ep, uint32_t iq_no)
}
+ /* 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
@@ -389,5 +401,5 @@ otx2_vf_setup_oq_regs(struct otx_ep_device *otx_ep, uint32_t oq_no)
(uint32_t __rte_atomic *)((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 *)(uintptr_t)droq->pkts_sent_ism,
(unsigned int)ism_addr);
@@ -412,22 +424,6 @@ 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 122926cd40..53de8b18d6 100644
--- a/drivers/net/octeon_ep/otx_ep_common.h
+++ b/drivers/net/octeon_ep/otx_ep_common.h
@@ -590,4 +590,5 @@ int otx_ep_delete_oqs(struct otx_ep_device *otx_ep, uint32_t oq_no);
#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
diff --git a/drivers/net/octeon_ep/otx_ep_ethdev.c b/drivers/net/octeon_ep/otx_ep_ethdev.c
index b4f8baf3b3..57a53e5d30 100644
--- a/drivers/net/octeon_ep/otx_ep_ethdev.c
+++ b/drivers/net/octeon_ep/otx_ep_ethdev.c
@@ -237,4 +237,10 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
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);
diff --git a/drivers/net/octeon_ep/otx_ep_rxtx.h b/drivers/net/octeon_ep/otx_ep_rxtx.h
index 6b3abe21b1..384e4fb412 100644
--- a/drivers/net/octeon_ep/otx_ep_rxtx.h
+++ b/drivers/net/octeon_ep/otx_ep_rxtx.h
@@ -33,4 +33,7 @@ otx_ep_incr_index(uint32_t index, uint32_t count, uint32_t max)
}
+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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.056136421 +0000
+++ 0058-net-octeon_ep-fix-device-start.patch 2025-10-31 13:53:52.167523777 +0000
@@ -1 +1 @@
-From c892964faa605c7884b454b435c4fb663dff0c9e Mon Sep 17 00:00:00 2001
+From c4c0edd1947bbc4095981dc0d96738ef22db524e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c892964faa605c7884b454b435c4fb663dff0c9e ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -189 +190 @@
-index 10f2f8a2e0..cd8e4bad3b 100644
+index b4f8baf3b3..57a53e5d30 100644
@@ -192 +193 @@
-@@ -233,4 +233,10 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
+@@ -237,4 +237,10 @@ otx_ep_dev_start(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'common/cnxk: fix async event handling' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (56 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/octeon_ep: fix device start' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix feature list of ice driver' " Kevin Traynor
` (74 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Tomasz Duszynski; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/84b20f6defbd9e9e84a43e36c2f4d2fc6b26d065
Thanks.
Kevin
---
From 84b20f6defbd9e9e84a43e36c2f4d2fc6b26d065 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 | 56 +++++++++++-------------------
1 file changed, 21 insertions(+), 35 deletions(-)
diff --git a/drivers/common/cnxk/roc_bphy_cgx.c b/drivers/common/cnxk/roc_bphy_cgx.c
index 6e5cfc7b1d..b32ae3c547 100644
--- a/drivers/common/cnxk/roc_bphy_cgx.c
+++ b/drivers/common/cnxk/roc_bphy_cgx.c
@@ -66,6 +66,5 @@ 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;
@@ -76,35 +75,16 @@ roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
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);
-
- plt_delay_ms(1);
- } while (--tries);
-
- return tries ? 0 : -ETIMEDOUT;
-}
-
-static int
-roc_bphy_cgx_wait_for_ack(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);
+ goto skip;
+ }
if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0))
+ FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0) == ack)
break;
+skip:
plt_delay_ms(1);
} while (--tries);
@@ -114,6 +94,18 @@ roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
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_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0)
+{
+ return roc_bphy_cgx_wait_ack(roc_cgx, lmac, scr0, false);
+}
+
+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)
{
uint8_t cmd_id = FIELD_GET(SCR1_ETH_CMD_ID, scr1);
@@ -143,10 +135,4 @@ roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
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",
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.083255328 +0000
+++ 0059-common-cnxk-fix-async-event-handling.patch 2025-10-31 13:53:52.168118891 +0000
@@ -1 +1 @@
-From 21b631cd0d3670e375151185d74cd5a03888e2bd Mon Sep 17 00:00:00 2001
+From 84b20f6defbd9e9e84a43e36c2f4d2fc6b26d065 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 6e5cfc7b1d..b32ae3c547 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'doc: fix feature list of ice driver' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (57 preceding siblings ...)
2025-10-31 14:33 ` patch 'common/cnxk: fix async event handling' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix feature list of iavf " Kevin Traynor
` (73 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4e35e851d27f50f4ab3ee8f3aa0c4d64f132826b
Thanks.
Kevin
---
From 4e35e851d27f50f4ab3ee8f3aa0c4d64f132826b 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 9c8569740a..2703493514 100644
--- a/doc/guides/nics/features/ice.ini
+++ b/doc/guides/nics/features/ice.ini
@@ -15,4 +15,5 @@ FEC = Y
Rx interrupt = Y
Fast mbuf free = P
+Free Tx mbuf on demand = Y
Queue start/stop = Y
Burst mode info = Y
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.110289759 +0000
+++ 0060-doc-fix-feature-list-of-ice-driver.patch 2025-10-31 13:53:52.168309408 +0000
@@ -1 +1 @@
-From 62b6b612ea272d334ca8b856f1055c8d8fcb1072 Mon Sep 17 00:00:00 2001
+From 4e35e851d27f50f4ab3ee8f3aa0c4d64f132826b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 62b6b612ea272d334ca8b856f1055c8d8fcb1072 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'doc: fix feature list of iavf driver' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (58 preceding siblings ...)
2025-10-31 14:33 ` patch 'doc: fix feature list of ice driver' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'eal/arm: fix C++ build for 32-bit memcpy' " Kevin Traynor
` (72 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/11dab641af8898d677165af75d5fd21c3d97493a
Thanks.
Kevin
---
From 11dab641af8898d677165af75d5fd21c3d97493a 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
@@ -8,10 +8,11 @@
;
[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
@@ -39,4 +40,5 @@ Rx descriptor status = Y
Tx descriptor status = Y
Basic stats = Y
+Extended stats = Y
Multiprocess aware = Y
FreeBSD = Y
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.138076211 +0000
+++ 0061-doc-fix-feature-list-of-iavf-driver.patch 2025-10-31 13:53:52.168486393 +0000
@@ -1 +1 @@
-From f3878b615e69a12087a6c5d212723478cfc79c31 Mon Sep 17 00:00:00 2001
+From 11dab641af8898d677165af75d5fd21c3d97493a 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
@@ -51 +52 @@
-@@ -40,4 +41,5 @@ Rx descriptor status = Y
+@@ -39,4 +40,5 @@ Rx descriptor status = Y
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eal/arm: fix C++ build for 32-bit memcpy' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (59 preceding siblings ...)
2025-10-31 14:33 ` patch 'doc: fix feature list of iavf " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'test/debug: fix crash with mlx5 devices' " Kevin Traynor
` (71 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Morten Brørup, Mattias Rönnblom, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/24e1bc42b4c2dcb37430be48c3e144e7462363fd
Thanks.
Kevin
---
From 24e1bc42b4c2dcb37430be48c3e144e7462363fd Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 26 Sep 2025 10:47:09 +0200
Subject: [PATCH] eal/arm: fix C++ build for 32-bit memcpy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 9b7a1625adcac411cbab37030b2b8de0290d71fd ]
This was caught while checking ARM arch headers.
In file included from buildtools/chkincs/chkincs-cpp.p/rte_memcpy_32.cpp:1:
/home/runner/work/dpdk/dpdk/lib/eal/arm/include/rte_memcpy_32.h:302:1:
error: expected declaration before ‘}’ token
302 | }
| ^
Fixes: 719834a6849e ("use C linkage where appropriate in headers")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
---
lib/eal/arm/include/rte_memcpy_32.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/eal/arm/include/rte_memcpy_32.h b/lib/eal/arm/include/rte_memcpy_32.h
index 99fd5757ca..861be06f5e 100644
--- a/lib/eal/arm/include/rte_memcpy_32.h
+++ b/lib/eal/arm/include/rte_memcpy_32.h
@@ -20,8 +20,12 @@
#include <arm_neon.h>
+#endif /* RTE_ARCH_ARM_NEON_MEMCPY */
+
#ifdef __cplusplus
extern "C" {
#endif
+#ifdef RTE_ARCH_ARM_NEON_MEMCPY
+
static inline void
rte_mov16(uint8_t *dst, const uint8_t *src)
@@ -253,5 +257,5 @@ rte_memcpy_func(void *dst, const void *src, size_t n)
}
-#else
+#else /* ! RTE_ARCH_ARM_NEON_MEMCPY */
static inline void
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.164499457 +0000
+++ 0062-eal-arm-fix-C-build-for-32-bit-memcpy.patch 2025-10-31 13:53:52.168523780 +0000
@@ -1 +1 @@
-From 9b7a1625adcac411cbab37030b2b8de0290d71fd Mon Sep 17 00:00:00 2001
+From 24e1bc42b4c2dcb37430be48c3e144e7462363fd Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 9b7a1625adcac411cbab37030b2b8de0290d71fd ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/debug: fix crash with mlx5 devices' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (60 preceding siblings ...)
2025-10-31 14:33 ` patch 'eal/arm: fix C++ build for 32-bit memcpy' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'bus/pci: fix build with MinGW 13' " Kevin Traynor
` (70 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c44513b1372b02a21c5c99edd7293faa792b0a6c
Thanks.
Kevin
---
From c44513b1372b02a21c5c99edd7293faa792b0a6c 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
@@ -204,5 +204,5 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
*/
#ifdef RTE_EXEC_ENV_LINUX
-static char *
+static inline char *
get_current_prefix(char *prefix, int size)
{
diff --git a/app/test/test.c b/app/test/test.c
index 680351f6a3..5b69f40f3d 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -81,4 +81,6 @@ do_recursive_call(void)
{ "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
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
@@ -175,5 +175,7 @@ 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);
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
@@ -9,4 +9,16 @@
#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)
@@ -26,5 +38,7 @@ test_debug(void)
#include <rte_common.h>
#include <rte_eal.h>
-#include <rte_service_component.h>
+#include <rte_lcore.h>
+
+#include "process.h"
/*
@@ -33,14 +47,12 @@ test_debug(void)
*/
-/* 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;
@@ -49,9 +61,6 @@ test_panic(void)
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");
@@ -63,25 +72,14 @@ test_panic(void)
}
-/* 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){
@@ -93,9 +91,20 @@ test_exit_val(int exit_val)
}
-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)
@@ -129,4 +138,31 @@ 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)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.192058885 +0000
+++ 0063-test-debug-fix-crash-with-mlx5-devices.patch 2025-10-31 13:53:52.169523783 +0000
@@ -1 +1 @@
-From 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 Mon Sep 17 00:00:00 2001
+From c44513b1372b02a21c5c99edd7293faa792b0a6c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -40 +41 @@
-index fd653cbbfd..8a4598baee 100644
+index 680351f6a3..5b69f40f3d 100644
@@ -51 +52 @@
-index ebc4864bf8..c6d7d23313 100644
+index 15e23d297f..fd8cc10b53 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'bus/pci: fix build with MinGW 13' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (61 preceding siblings ...)
2025-10-31 14:33 ` patch 'test/debug: fix crash with mlx5 devices' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: " Kevin Traynor
` (69 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b9fa5274f62a0117dc6c2bd0c0c3a6a07c3d70f9
Thanks.
Kevin
---
From b9fa5274f62a0117dc6c2bd0c0c3a6a07c3d70f9 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 36e6f89093..ca89a7fa50 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -12,10 +12,6 @@
#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>
@@ -24,4 +20,9 @@ DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
#endif
+#include <regstr.h>
+
+#include "private.h"
+#include "pci_netuio.h"
+
/*
* This code is used to simulate a PCI probe by parsing information in
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
@@ -6,10 +6,10 @@
#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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.219605461 +0000
+++ 0064-bus-pci-fix-build-with-MinGW-13.patch 2025-10-31 13:53:52.170387279 +0000
@@ -1 +1 @@
-From 73e0c90c48ea393b2725263b32515f668f8f4839 Mon Sep 17 00:00:00 2001
+From b9fa5274f62a0117dc6c2bd0c0c3a6a07c3d70f9 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 36e6f89093..ca89a7fa50 100644
@@ -34 +35 @@
-@@ -13,10 +13,6 @@
+@@ -12,10 +12,6 @@
@@ -46 +47 @@
-@@ -25,4 +21,9 @@ DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
+@@ -24,4 +20,9 @@ DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix build with MinGW 13' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (62 preceding siblings ...)
2025-10-31 14:33 ` patch 'bus/pci: fix build with MinGW 13' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'bbdev: " Kevin Traynor
` (68 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Dariusz Sosnowski, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9e6373b052cb44d5f5064878839a58f3f3135107
Thanks.
Kevin
---
From 9e6373b052cb44d5f5064878839a58f3f3135107 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 2e9c9d5b3f..ec08bfef6d 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -284,9 +284,9 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.246313356 +0000
+++ 0065-net-mlx5-fix-build-with-MinGW-13.patch 2025-10-31 13:53:52.170523786 +0000
@@ -1 +1 @@
-From a333afabed3b659ea28a92470565bbd5a98b5b53 Mon Sep 17 00:00:00 2001
+From 9e6373b052cb44d5f5064878839a58f3f3135107 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a333afabed3b659ea28a92470565bbd5a98b5b53 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 32a9f599b2..e24ff367af 100644
+index 2e9c9d5b3f..ec08bfef6d 100644
@@ -30 +31 @@
-@@ -312,9 +312,9 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
+@@ -284,9 +284,9 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'bbdev: fix build with MinGW 13' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (63 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'dma/hisilicon: fix stop with pending transfers' " Kevin Traynor
` (67 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, Hemant Agrawal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9b88acf2d1305b397f17977dfd9c98c129c4d1c4
Thanks.
Kevin
---
From 9b88acf2d1305b397f17977dfd9c98c129c4d1c4 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 25 Jul 2025 21:33:19 +0200
Subject: [PATCH] bbdev: fix build with MinGW 13
[ upstream commit 7cacb5b3f6cc89785f9383ac9544e61dc971897d ]
After an upgrade to MinGW version 13, compilation breaks:
In function 'rte_bbdev_queue_ops_dump':
lib/bbdev/rte_bbdev.c:1269:63: error:
'%s' directive argument is null [-Werror=format-overflow=]
fprintf(f, " Enqueue Status Counters %s %" PRIu64 "\n",
The enqueue status string may be null if the index is too high,
because RTE_BBDEV_ENQ_STATUS_SIZE_MAX is defined to include
padding for future enum insertion.
This padding case must be checked
to avoid printing a dump of a non-existing status.
The type of the variable i is also changed to the enum
required by the function rte_bbdev_enqueue_status_str().
Fixes: 353e3639d458 ("bbdev: add queue debug dump")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
lib/bbdev/rte_bbdev.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
index bd32da79b0..46be2f6697 100644
--- a/lib/bbdev/rte_bbdev.c
+++ b/lib/bbdev/rte_bbdev.c
@@ -1198,5 +1198,5 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
struct rte_bbdev_queue_data *q_data;
struct rte_bbdev_stats *stats;
- uint16_t i;
+ enum rte_bbdev_enqueue_status i;
struct rte_bbdev *dev = get_dev(dev_id);
@@ -1215,9 +1215,13 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
fprintf(f, " Last Enqueue Status %s\n",
rte_bbdev_enqueue_status_str(q_data->enqueue_status));
- for (i = 0; i < RTE_BBDEV_ENQ_STATUS_SIZE_MAX; i++)
+ for (i = 0; i < RTE_BBDEV_ENQ_STATUS_SIZE_MAX; i++) {
+ const char *status_str = rte_bbdev_enqueue_status_str(i);
+ if (status_str == NULL)
+ continue;
if (q_data->queue_stats.enqueue_status_count[i] > 0)
fprintf(f, " Enqueue Status Counters %s %" PRIu64 "\n",
- rte_bbdev_enqueue_status_str(i),
+ status_str,
q_data->queue_stats.enqueue_status_count[i]);
+ }
stats = &dev->data->queues[queue_id].queue_stats;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.274046235 +0000
+++ 0066-bbdev-fix-build-with-MinGW-13.patch 2025-10-31 13:53:52.171622419 +0000
@@ -1 +1 @@
-From 7cacb5b3f6cc89785f9383ac9544e61dc971897d Mon Sep 17 00:00:00 2001
+From 9b88acf2d1305b397f17977dfd9c98c129c4d1c4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7cacb5b3f6cc89785f9383ac9544e61dc971897d ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index e0f8c8eb0d..8d6e3ba09b 100644
+index bd32da79b0..46be2f6697 100644
@@ -36 +37 @@
-@@ -1248,5 +1248,5 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
+@@ -1198,5 +1198,5 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
@@ -43 +44 @@
-@@ -1265,9 +1265,13 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
+@@ -1215,9 +1215,13 @@ rte_bbdev_queue_ops_dump(uint16_t dev_id, uint16_t queue_id, FILE *f)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'dma/hisilicon: fix stop with pending transfers' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (64 preceding siblings ...)
2025-10-31 14:33 ` patch 'bbdev: " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'test/dma: fix failure condition' " Kevin Traynor
` (66 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/caf6bf8424e73315be792d4759a593509f1d50e6
Thanks.
Kevin
---
From caf6bf8424e73315be792d4759a593509f1d50e6 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 fdd2fa225f..feac145e29 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.c
+++ b/drivers/dma/hisilicon/hisi_dmadev.c
@@ -377,4 +377,5 @@ hisi_dma_start(struct rte_dma_dev *dev)
hw->cqs_completed = 0;
hw->cqe_vld = 1;
+ hw->stop_proc = 0;
hw->submitted = 0;
hw->completed = 0;
@@ -388,10 +389,4 @@ hisi_dma_start(struct rte_dma_dev *dev)
}
-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)
@@ -455,4 +450,35 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
}
+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,
@@ -549,5 +575,5 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
" 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",
@@ -556,5 +582,5 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
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);
@@ -574,4 +600,7 @@ 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++;
diff --git a/drivers/dma/hisilicon/hisi_dmadev.h b/drivers/dma/hisilicon/hisi_dmadev.h
index 786fe3cc0e..5e3c8debcc 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.h
+++ b/drivers/dma/hisilicon/hisi_dmadev.h
@@ -143,4 +143,5 @@ 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
@@ -213,4 +214,5 @@ 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.301364499 +0000
+++ 0067-dma-hisilicon-fix-stop-with-pending-transfers.patch 2025-10-31 13:53:52.172444764 +0000
@@ -1 +1 @@
-From 8aa458f1c44b9f6e73f75047aca77191dc79746f Mon Sep 17 00:00:00 2001
+From caf6bf8424e73315be792d4759a593509f1d50e6 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 fdd2fa225f..feac145e29 100644
@@ -103 +104 @@
-index 90301e6b00..aab87c40be 100644
+index 786fe3cc0e..5e3c8debcc 100644
@@ -106 +107 @@
-@@ -142,4 +142,5 @@ enum {
+@@ -143,4 +143,5 @@ enum {
@@ -112 +113 @@
-@@ -212,4 +213,5 @@ struct hisi_dma_dev {
+@@ -213,4 +214,5 @@ struct hisi_dma_dev {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/dma: fix failure condition' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (65 preceding siblings ...)
2025-10-31 14:33 ` patch 'dma/hisilicon: fix stop with pending transfers' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'eal/x86: enable timeout in AMD power monitor' " Kevin Traynor
` (65 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/69822bca909bc99f18d8f387703cd70a8becae73
Thanks.
Kevin
---
From 69822bca909bc99f18d8f387703cd70a8becae73 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 143e1bcd68..c3a1d07575 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -93,5 +93,5 @@ runtest(const void *args)
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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.328770109 +0000
+++ 0068-test-dma-fix-failure-condition.patch 2025-10-31 13:53:52.172523793 +0000
@@ -1 +1 @@
-From fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e Mon Sep 17 00:00:00 2001
+From 69822bca909bc99f18d8f387703cd70a8becae73 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 143e1bcd68..c3a1d07575 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'eal/x86: enable timeout in AMD power monitor' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (66 preceding siblings ...)
2025-10-31 14:33 ` patch 'test/dma: fix failure condition' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-11-01 15:31 ` Tummala, Sivaprasad
2025-10-31 14:33 ` patch 'test/func_reentrancy: fix args to EAL init call' " Kevin Traynor
` (64 subsequent siblings)
132 siblings, 1 reply; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Sivaprasad Tummala; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4e309113126d8cf44cf2e50362ae590a176e07ac
Thanks.
Kevin
---
From 4e309113126d8cf44cf2e50362ae590a176e07ac 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 f7d558153e..b46e8c2aba 100644
--- a/lib/eal/x86/rte_power_intrinsics.c
+++ b/lib/eal/x86/rte_power_intrinsics.c
@@ -88,12 +88,12 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.355466019 +0000
+++ 0069-eal-x86-enable-timeout-in-AMD-power-monitor.patch 2025-10-31 13:53:52.173523796 +0000
@@ -1 +1 @@
-From 1213a8895be3bf883f10b3ba60ee84099b5ff75a Mon Sep 17 00:00:00 2001
+From 4e309113126d8cf44cf2e50362ae590a176e07ac 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 f7d558153e..b46e8c2aba 100644
@@ -27 +28 @@
-@@ -90,12 +90,12 @@ static void amd_monitorx(volatile void *addr)
+@@ -88,12 +88,12 @@ static void amd_monitorx(volatile void *addr)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/func_reentrancy: fix args to EAL init call' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (67 preceding siblings ...)
2025-10-31 14:33 ` patch 'eal/x86: enable timeout in AMD power monitor' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'fib6: fix memory leak on delete operation' " Kevin Traynor
` (63 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Bruce Richardson; +Cc: David Marchand, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5f27e5e9f8df35ad145c64e9b5abd86c75d794e8
Thanks.
Kevin
---
From 5f27e5e9f8df35ad145c64e9b5abd86c75d794e8 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Thu, 9 Oct 2025 14:00:37 +0100
Subject: [PATCH] test/func_reentrancy: fix args to EAL init call
[ upstream commit b74d638ab9a769ed9628d2759029d2d20a081637 ]
The unit test for EAL init was passing in a NULL argv[0] value which is
invalid. Update to have a valid string for argv[0].
Fixes: 104a92bd026f ("app: add reentrancy tests")
Fixes: 978ead0144c1 ("test/func_reentrancy: fix EAL init call")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_func_reentrancy.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/test/test_func_reentrancy.c b/app/test/test_func_reentrancy.c
index 34d685d493..51e3069611 100644
--- a/app/test/test_func_reentrancy.c
+++ b/app/test/test_func_reentrancy.c
@@ -69,5 +69,7 @@ static int
test_eal_init_once(__rte_unused void *arg)
{
+ char appname[] = __FILE__;
unsigned lcore_self = rte_lcore_id();
+ char *argv[] = { appname, NULL };
WAIT_SYNCHRO_FOR_WORKERS();
@@ -75,5 +77,5 @@ test_eal_init_once(__rte_unused void *arg)
/* silent the check in the caller */
rte_atomic_store_explicit(&obj_count, 1, rte_memory_order_relaxed);
- if (rte_eal_init(0, NULL) != -1)
+ if (rte_eal_init(RTE_DIM(argv) - 1, argv) != -1)
return -1;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.382415434 +0000
+++ 0070-test-func_reentrancy-fix-args-to-EAL-init-call.patch 2025-10-31 13:53:52.174121116 +0000
@@ -1 +1 @@
-From b74d638ab9a769ed9628d2759029d2d20a081637 Mon Sep 17 00:00:00 2001
+From 5f27e5e9f8df35ad145c64e9b5abd86c75d794e8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b74d638ab9a769ed9628d2759029d2d20a081637 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -17,2 +18,2 @@
- app/test/test_func_reentrancy.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ app/test/test_func_reentrancy.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
@@ -21 +22 @@
-index f4c6cbc548..51e3069611 100644
+index 34d685d493..51e3069611 100644
@@ -24,5 +25,2 @@
-@@ -67,8 +67,9 @@ static RTE_ATOMIC(uint32_t) synchro;
- */
- static int
--test_eal_init_once(void *arg)
-+test_eal_init_once(__rte_unused void *arg)
+@@ -69,5 +69,7 @@ static int
+ test_eal_init_once(__rte_unused void *arg)
@@ -32 +29,0 @@
-- char *argv[] = { arg, NULL };
@@ -35,0 +33,7 @@
+@@ -75,5 +77,5 @@ test_eal_init_once(__rte_unused void *arg)
+ /* silent the check in the caller */
+ rte_atomic_store_explicit(&obj_count, 1, rte_memory_order_relaxed);
+- if (rte_eal_init(0, NULL) != -1)
++ if (rte_eal_init(RTE_DIM(argv) - 1, argv) != -1)
+ return -1;
+
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'fib6: fix memory leak on delete operation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (68 preceding siblings ...)
2025-10-31 14:33 ` patch 'test/func_reentrancy: fix args to EAL init call' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'fib6: fix tbl8 allocation check logic' " Kevin Traynor
` (62 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Vladimir Medvedkin; +Cc: Robin Jarry, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8b48ab770c01db3f2a75970c08ba7480c3e91e5c
Thanks.
Kevin
---
From 8b48ab770c01db3f2a75970c08ba7480c3e91e5c Mon Sep 17 00:00:00 2001
From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Date: Tue, 14 Oct 2025 18:17:54 +0000
Subject: [PATCH] fib6: fix memory leak on delete operation
[ upstream commit f4905fdcf6b43ee1499e431ca433fd7570c71224 ]
When deleting a prefix, the first attempt to get next prefix cannot
return NULL as we will at a minimum get the prefix we are trying to
delete, whereas we were rather interested in whether there are other
prefixes within the same subtree, not counting the prefix we are
deleting. To address this, we check if we have found the exact prefix we
started with, and perform another search to see if there are more
prefixes to be found.
In addition to that, doing the searches with _COVER rather than _ALL is
incorrect, because if we are doing search with _COVER rather than _ALL, we
do not dive into the tree to find more specific prefixes within the
prefix we are going to delete, and thus will not notice if our subtree
also has more specific prefixes. To fix it, perform first (and
subsequent) searches with _ALL rather than _COVER.
Finally, when we hit the "tmp == NULL" branch (meaning, when we are
deleting the only node that exists in our subtree), we know that the
rib6_lookup will always return us the node that we are trying to delete,
but this is incorrect because further code will consider this to be our
parent node. Address this by doing another search to find the parent of
the current node.
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 | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/lib/fib/trie.c b/lib/fib/trie.c
index 4893f6c636..e186d2ecfe 100644
--- a/lib/fib/trie.c
+++ b/lib/fib/trie.c
@@ -516,5 +516,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
struct rte_rib6_node *node;
struct rte_rib6_node *parent;
- struct rte_ipv6_addr ip_masked;
+ struct rte_ipv6_addr ip_masked, tmp_ip;
int ret = 0;
uint64_t par_nh, node_nh;
@@ -535,7 +535,23 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
tmp = rte_rib6_get_nxt(rib, &ip_masked,
RTE_ALIGN_FLOOR(depth, 8), NULL,
- RTE_RIB6_GET_NXT_COVER);
+ RTE_RIB6_GET_NXT_ALL);
+ if (tmp && op == RTE_FIB6_DEL) {
+ /* in case of delete operation, skip the prefix we are going to delete */
+ rte_rib6_get_ip(tmp, &tmp_ip);
+ rte_rib6_get_depth(tmp, &tmp_depth);
+ if (rte_ipv6_addr_eq(&ip_masked, &tmp_ip) && depth == tmp_depth)
+ tmp = rte_rib6_get_nxt(rib, &ip_masked,
+ RTE_ALIGN_FLOOR(depth, 8), tmp, RTE_RIB6_GET_NXT_ALL);
+ }
+
if (tmp == NULL) {
tmp = rte_rib6_lookup(rib, ip);
+ /**
+ * in case of delete operation, lookup returns the prefix
+ * we are going to delete. Find the parent.
+ */
+ if (tmp && op == RTE_FIB6_DEL)
+ tmp = rte_rib6_lookup_parent(tmp);
+
if (tmp != NULL) {
rte_rib6_get_depth(tmp, &tmp_depth);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.409231681 +0000
+++ 0071-fib6-fix-memory-leak-on-delete-operation.patch 2025-10-31 13:53:52.174617799 +0000
@@ -1 +1 @@
-From f4905fdcf6b43ee1499e431ca433fd7570c71224 Mon Sep 17 00:00:00 2001
+From 8b48ab770c01db3f2a75970c08ba7480c3e91e5c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f4905fdcf6b43ee1499e431ca433fd7570c71224 ]
+
@@ -29 +30,0 @@
-Cc: stable@dpdk.org
@@ -38 +39 @@
-index ff4c750952..5a9978b4ca 100644
+index 4893f6c636..e186d2ecfe 100644
@@ -41 +42 @@
-@@ -517,5 +517,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
+@@ -516,5 +516,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
@@ -48 +49 @@
-@@ -536,7 +536,23 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
+@@ -535,7 +535,23 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'fib6: fix tbl8 allocation check logic' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (69 preceding siblings ...)
2025-10-31 14:33 ` patch 'fib6: fix memory leak on delete operation' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Kevin Traynor
` (61 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Vladimir Medvedkin; +Cc: Robin Jarry, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/66a575be6f83cc2c1a78c9a5ca7662c606e02efe
Thanks.
Kevin
---
From 66a575be6f83cc2c1a78c9a5ca7662c606e02efe 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 e186d2ecfe..24674276c4 100644
--- a/lib/fib/trie.c
+++ b/lib/fib/trie.c
@@ -576,6 +576,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
}
- if ((depth > 24) && (dp->rsvd_tbl8s >=
- dp->number_tbl8s - depth_diff))
+ if ((depth > 24) && (dp->rsvd_tbl8s + depth_diff > dp->number_tbl8s))
return -ENOSPC;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.436527259 +0000
+++ 0072-fib6-fix-tbl8-allocation-check-logic.patch 2025-10-31 13:53:52.175141129 +0000
@@ -1 +1 @@
-From f0db0f659a1f4192a4aca7ce2a298f272aa3af8f Mon Sep 17 00:00:00 2001
+From 66a575be6f83cc2c1a78c9a5ca7662c606e02efe 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 e186d2ecfe..24674276c4 100644
@@ -23 +24 @@
-@@ -577,6 +577,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
+@@ -576,6 +576,5 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'vhost: add VDUSE virtqueue ready state polling workaround' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (70 preceding siblings ...)
2025-10-31 14:33 ` patch 'fib6: fix tbl8 allocation check logic' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Kevin Traynor
` (60 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f8f9f0ff9a1533efed64d553fcba28f0a26f6fc6
Thanks.
Kevin
---
From f8f9f0ff9a1533efed64d553fcba28f0a26f6fc6 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 801674be42..63750d0b25 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -272,4 +272,53 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
}
+/*
+ * 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_CONFIG_LOG(dev->ifname, ERR,
+ "Failed to get VQ %u info while polling ready state: %s",
+ i, strerror(errno));
+ return -1;
+ }
+
+ if (vq_info.ready) {
+ VHOST_CONFIG_LOG(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_CONFIG_LOG(dev->ifname, ERR,
+ "VQ %u ready state polling timeout after %u retries",
+ i, VDUSE_VQ_READY_POLL_MAX_RETRIES);
+ return -1;
+ }
+ }
+
+ VHOST_CONFIG_LOG(dev->ifname, INFO, "All virtqueues are ready after polling");
+ return 0;
+}
+
static void
vduse_device_start(struct virtio_net *dev, bool reconnect)
@@ -414,8 +463,16 @@ vduse_events_handler(int fd, void *arg, int *close __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_CONFIG_LOG(dev->ifname, ERR,
+ "Failed to wait for virtqueues ready, aborting device start");
+ return;
+ }
vduse_device_start(dev, false);
- else
+ } else {
vduse_device_stop(dev);
+ }
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.463454382 +0000
+++ 0073-vhost-add-VDUSE-virtqueue-ready-state-polling-workar.patch 2025-10-31 13:53:52.175523802 +0000
@@ -1 +1 @@
-From 84350b1f470558836b61ff1347f660e06c81cbf5 Mon Sep 17 00:00:00 2001
+From f8f9f0ff9a1533efed64d553fcba28f0a26f6fc6 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 801674be42..63750d0b25 100644
@@ -31 +32 @@
-@@ -273,4 +273,53 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
+@@ -272,4 +272,53 @@ vduse_vring_cleanup(struct virtio_net *dev, unsigned int index)
@@ -85 +86 @@
-@@ -415,8 +464,16 @@ vduse_events_handler(int fd, void *arg, int *close __rte_unused)
+@@ -414,8 +463,16 @@ vduse_events_handler(int fd, void *arg, int *close __rte_unused)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'vhost: fix virtqueue info init in VDUSE vring setup' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (71 preceding siblings ...)
2025-10-31 14:33 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/virtio-user: fix used ring address calculation' " Kevin Traynor
` (59 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f25ac9297da16ea4f5f193b1977f192888f7a4c4
Thanks.
Kevin
---
From f25ac9297da16ea4f5f193b1977f192888f7a4c4 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 63750d0b25..5d78f01126 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -141,5 +141,5 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index, bool reconnect)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.490357701 +0000
+++ 0074-vhost-fix-virtqueue-info-init-in-VDUSE-vring-setup.patch 2025-10-31 13:53:52.176339735 +0000
@@ -1 +1 @@
-From db91578981c6869d4ee476347141c0fccd1d6146 Mon Sep 17 00:00:00 2001
+From f25ac9297da16ea4f5f193b1977f192888f7a4c4 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 63750d0b25..5d78f01126 100644
@@ -24 +25 @@
-@@ -142,5 +142,5 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index, bool reconnect)
+@@ -141,5 +141,5 @@ vduse_vring_setup(struct virtio_net *dev, unsigned int index, bool reconnect)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/virtio-user: fix used ring address calculation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (72 preceding siblings ...)
2025-10-31 14:33 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: fix double fetch when dequeue offloading' " Kevin Traynor
` (58 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: Adrian Moreno, David Marchand, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ea4cd024fda598469109db671eb09aa1796cf4c8
Thanks.
Kevin
---
From ea4cd024fda598469109db671eb09aa1796cf4c8 Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Tue, 7 Oct 2025 16:47:54 +0200
Subject: [PATCH] net/virtio-user: fix used ring address calculation
[ upstream commit 7aa71d336c18bac0c942018819043a5420a5b160 ]
This patch fixes the used ring address calculation, to
avoid Vhost-vDPA backends (such as VDUSE) to fail while
trying to translate it.
Fixes: 666ef294ddf7 ("net/virtio-user: share descriptor IOVA to backend")
Reported-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: David Marchand <david.marchand@redhat.com>
---
.../net/virtio/virtio_user/virtio_user_dev.c | 30 ++++++++-----------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 2997d2bd26..2642ecf893 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -119,5 +119,5 @@ virtio_user_kick_queue(struct virtio_user_dev *dev, uint32_t queue_sel)
struct vring *vring = &dev->vrings.split[queue_sel];
struct vring_packed *pq_vring = &dev->vrings.packed[queue_sel];
- uint64_t desc_addr, avail_addr, used_addr;
+ uint64_t desc_addr, desc_iova_addr, avail_addr, used_addr;
struct vhost_vring_addr addr = {
.index = queue_sel,
@@ -139,23 +139,19 @@ virtio_user_kick_queue(struct virtio_user_dev *dev, uint32_t queue_sel)
if (dev->features & (1ULL << VIRTIO_F_RING_PACKED)) {
- desc_addr = pq_vring->desc_iova;
- avail_addr = desc_addr + pq_vring->num * sizeof(struct vring_packed_desc);
- used_addr = RTE_ALIGN_CEIL(avail_addr + sizeof(struct vring_packed_desc_event),
- VIRTIO_VRING_ALIGN);
-
- addr.desc_user_addr = desc_addr;
- addr.avail_user_addr = avail_addr;
- addr.used_user_addr = used_addr;
+ desc_iova_addr = pq_vring->desc_iova;
+ desc_addr = (uint64_t)(uintptr_t)pq_vring->desc;
+ avail_addr = (uint64_t)(uintptr_t)pq_vring->driver;
+ used_addr = (uint64_t)(uintptr_t)pq_vring->device;
} else {
- desc_addr = vring->desc_iova;
- avail_addr = desc_addr + vring->num * sizeof(struct vring_desc);
- used_addr = RTE_ALIGN_CEIL((uintptr_t)(&vring->avail->ring[vring->num]),
- VIRTIO_VRING_ALIGN);
-
- addr.desc_user_addr = desc_addr;
- addr.avail_user_addr = avail_addr;
- addr.used_user_addr = used_addr;
+ desc_iova_addr = vring->desc_iova;
+ desc_addr = (uint64_t)(uintptr_t)vring->desc;
+ avail_addr = (uint64_t)(uintptr_t)vring->avail;
+ used_addr = (uint64_t)(uintptr_t)vring->used;
}
+ addr.desc_user_addr = desc_iova_addr;
+ addr.avail_user_addr = (desc_iova_addr - desc_addr) + avail_addr;
+ addr.used_user_addr = (desc_iova_addr - desc_addr) + used_addr;
+
state.index = queue_sel;
state.num = vring->num;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.517566209 +0000
+++ 0075-net-virtio-user-fix-used-ring-address-calculation.patch 2025-10-31 13:53:52.176523805 +0000
@@ -1 +1 @@
-From 7aa71d336c18bac0c942018819043a5420a5b160 Mon Sep 17 00:00:00 2001
+From ea4cd024fda598469109db671eb09aa1796cf4c8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7aa71d336c18bac0c942018819043a5420a5b160 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 187f81b066..f3df73c1f0 100644
+index 2997d2bd26..2642ecf893 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'vhost: fix double fetch when dequeue offloading' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (73 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/virtio-user: fix used ring address calculation' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/bnxt: fix free of not allocated object' " Kevin Traynor
` (57 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Yunjian Wang; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d4748e8863004ff3b9e966e12669c5750011dd95
Thanks.
Kevin
---
From d4748e8863004ff3b9e966e12669c5750011dd95 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 9a670df274..4fc44f14f7 100644
--- a/lib/vhost/virtio_net.c
+++ b/lib/vhost/virtio_net.c
@@ -2865,23 +2865,26 @@ 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;
}
@@ -2912,14 +2915,10 @@ 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;
}
@@ -3367,5 +3366,4 @@ 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];
@@ -3386,6 +3384,10 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.546072511 +0000
+++ 0076-vhost-fix-double-fetch-when-dequeue-offloading.patch 2025-10-31 13:53:52.178523811 +0000
@@ -1 +1 @@
-From 285e6b8b187485cc69a175261e40d8d2727e20a3 Mon Sep 17 00:00:00 2001
+From d4748e8863004ff3b9e966e12669c5750011dd95 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 9a670df274..4fc44f14f7 100644
@@ -26 +27 @@
-@@ -2871,23 +2871,26 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
+@@ -2865,23 +2865,26 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
@@ -64 +65 @@
-@@ -2918,14 +2921,10 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -2912,14 +2915,10 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
@@ -85 +86 @@
-@@ -3373,5 +3372,4 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3367,5 +3366,4 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
@@ -91 +92 @@
-@@ -3392,6 +3390,10 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3386,6 +3384,10 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/bnxt: fix free of not allocated object' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (74 preceding siblings ...)
2025-10-31 14:33 ` patch 'vhost: fix double fetch when dequeue offloading' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice/base: fix integer overflow on NVM init' " Kevin Traynor
` (56 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d1f013cf64c22a8ff354f79b2ce4ef4875418b3d
Thanks.
Kevin
---
From d1f013cf64c22a8ff354f79b2ce4ef4875418b3d Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Wed, 21 May 2025 12:37:27 -0700
Subject: [PATCH] net/bnxt: fix free of not allocated object
[ upstream commit 49b1673ec6693a673b4dc07984023f481cce4d96 ]
This was found as error when compiling with LTO.
The function allocates new data with rte_zmalloc and then
stores pointer in the pointer-to-pointer passed as argument.
In the unwind case, it would call rte_free() with wrong one.
Fixes: 80317ff6adfd ("net/bnxt/tf_core: support Thor2")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/bnxt/tf_core/v3/tfo.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/net/bnxt/tf_core/v3/tfo.c b/drivers/net/bnxt/tf_core/v3/tfo.c
index bee813ebf6..c888dd1e4e 100644
--- a/drivers/net/bnxt/tf_core/v3/tfo.c
+++ b/drivers/net/bnxt/tf_core/v3/tfo.c
@@ -75,7 +75,5 @@ void tfo_open(void **tfo, bool is_pf)
if (rc) {
PMD_DRV_LOG_LINE(ERR, "MPC bind failed");
- rte_free(tfco);
- *tfo = NULL;
- return;
+ goto cleanup;
}
if (is_pf) {
@@ -105,6 +103,6 @@ void tfo_open(void **tfo, bool is_pf)
cleanup:
- if (tfco != NULL)
- rte_free(tfo);
+ rte_free(tfco);
+ *tfo = NULL;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.573632449 +0000
+++ 0077-net-bnxt-fix-free-of-not-allocated-object.patch 2025-10-31 13:53:52.179400188 +0000
@@ -1 +1 @@
-From 49b1673ec6693a673b4dc07984023f481cce4d96 Mon Sep 17 00:00:00 2001
+From d1f013cf64c22a8ff354f79b2ce4ef4875418b3d Mon Sep 17 00:00:00 2001
@@ -4,0 +5,2 @@
+
+[ upstream commit 49b1673ec6693a673b4dc07984023f481cce4d96 ]
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice/base: fix integer overflow on NVM init' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (75 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/bnxt: fix free of not allocated object' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix display of commands in cpfl guide' " Kevin Traynor
` (55 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Chinh Cao; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b4257f3446071b21428e3edf9052ec7f1582ddad
Thanks.
Kevin
---
From b4257f3446071b21428e3edf9052ec7f1582ddad 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 69cc91fd95..bb31ba9864 100644
--- a/drivers/net/ice/base/ice_type.h
+++ b/drivers/net/ice/base/ice_type.h
@@ -983,5 +983,5 @@ struct ice_flash_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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.601002395 +0000
+++ 0078-net-ice-base-fix-integer-overflow-on-NVM-init.patch 2025-10-31 13:53:52.179523815 +0000
@@ -1 +1 @@
-From 96b1a23f3ea5614e5795307295234c15e0e99a1e Mon Sep 17 00:00:00 2001
+From b4257f3446071b21428e3edf9052ec7f1582ddad 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,4 +20,4 @@
-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
+diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
+index 69cc91fd95..bb31ba9864 100644
+--- a/drivers/net/ice/base/ice_type.h
++++ b/drivers/net/ice/base/ice_type.h
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'doc: fix display of commands in cpfl guide' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (76 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ice/base: fix integer overflow on NVM init' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: fix initialization with 8 ports' " Kevin Traynor
` (54 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Praveen Shetty, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/48a966f868bc908105cfe0289bb61c93c9293f22
Thanks.
Kevin
---
From 48a966f868bc908105cfe0289bb61c93c9293f22 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 154201e745..ebfdafc0b4 100644
--- a/doc/guides/nics/cpfl.rst
+++ b/doc/guides/nics/cpfl.rst
@@ -214,12 +214,12 @@ low level hardware resources.
#. 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.627451315 +0000
+++ 0079-doc-fix-display-of-commands-in-cpfl-guide.patch 2025-10-31 13:53:52.180523818 +0000
@@ -1 +1 @@
-From 484451b27293f2745baf6793e5c4a3c3224f50f5 Mon Sep 17 00:00:00 2001
+From 48a966f868bc908105cfe0289bb61c93c9293f22 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 154201e745..ebfdafc0b4 100644
@@ -25 +26 @@
-@@ -219,12 +219,12 @@ low level hardware resources.
+@@ -214,12 +214,12 @@ low level hardware resources.
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: fix initialization with 8 ports' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (77 preceding siblings ...)
2025-10-31 14:33 ` patch 'doc: fix display of commands in cpfl guide' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: remove indirection for FDIR filters' " Kevin Traynor
` (53 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Kirill Rybalchenko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5baa926e6fdeae755644e69852a6d433572a58e6
Thanks.
Kevin
---
From 5baa926e6fdeae755644e69852a6d433572a58e6 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
@@ -114,5 +114,8 @@ ice_acl_setup(struct ice_pf *pf)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.655515646 +0000
+++ 0080-net-ice-fix-initialization-with-8-ports.patch 2025-10-31 13:53:52.181432921 +0000
@@ -1 +1 @@
-From 17a8fc206178c6b354a8fde04c23cf29db044961 Mon Sep 17 00:00:00 2001
+From 5baa926e6fdeae755644e69852a6d433572a58e6 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
-@@ -115,5 +115,8 @@ 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
+@@ -114,5 +114,8 @@ ice_acl_setup(struct ice_pf *pf)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: remove indirection for FDIR filters' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (78 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ice: fix initialization with 8 ports' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: fix memory leak in raw pattern parse' " Kevin Traynor
` (52 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/64aa5ac4824f21eb5701d3cbf2d129e8ed8d1e7d
Thanks.
Kevin
---
From 64aa5ac4824f21eb5701d3cbf2d129e8ed8d1e7d 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 a5b27fabd2..6fcb3296ed 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -347,5 +347,5 @@ struct ice_fdir_filter_conf {
uint32_t mark_flag;
- struct ice_parser_profile *prof;
+ struct ice_parser_profile prof;
bool parser_ena;
u8 *pkt_buf;
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index dc28328c09..688f037d2e 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1313,5 +1313,5 @@ ice_fdir_create_filter(struct ice_adapter *ad,
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;
@@ -1323,9 +1323,9 @@ ice_fdir_create_filter(struct ice_adapter *ad,
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) {
@@ -1337,5 +1337,5 @@ 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;
@@ -1347,10 +1347,10 @@ ice_fdir_create_filter(struct ice_adapter *ad,
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;
@@ -1450,5 +1450,4 @@ free_entry:
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
return -rte_errno;
@@ -1472,5 +1471,5 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
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;
@@ -1500,5 +1499,4 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
flow->rule = NULL;
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(filter);
@@ -1927,11 +1925,6 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
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;
@@ -2489,5 +2482,4 @@ ice_fdir_parse(struct ice_adapter *ad,
return ret;
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(item);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.684351527 +0000
+++ 0081-net-ice-remove-indirection-for-FDIR-filters.patch 2025-10-31 13:53:52.182523824 +0000
@@ -1 +1 @@
-From f1dd6c3fdf974810e9a0d57920a4aa66fa16342e Mon Sep 17 00:00:00 2001
+From 64aa5ac4824f21eb5701d3cbf2d129e8ed8d1e7d 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
-@@ -380,5 +380,5 @@ struct ice_fdir_filter_conf {
+diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
+index a5b27fabd2..6fcb3296ed 100644
+--- a/drivers/net/ice/ice_ethdev.h
++++ b/drivers/net/ice/ice_ethdev.h
+@@ -347,5 +347,5 @@ struct ice_fdir_filter_conf {
@@ -40,5 +41,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
-@@ -1315,5 +1315,5 @@ 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 dc28328c09..688f037d2e 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1313,5 +1313,5 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -51 +52 @@
-@@ -1325,9 +1325,9 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1323,9 +1323,9 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -64 +65 @@
-@@ -1339,5 +1339,5 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1337,5 +1337,5 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -71 +72 @@
-@@ -1349,10 +1349,10 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1347,10 +1347,10 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -86 +87 @@
-@@ -1452,5 +1452,4 @@ free_entry:
+@@ -1450,5 +1450,4 @@ free_entry:
@@ -92 +93 @@
-@@ -1474,5 +1473,5 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1472,5 +1471,5 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -99 +100 @@
-@@ -1502,5 +1501,4 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1500,5 +1499,4 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -105 +106 @@
-@@ -1929,11 +1927,6 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1927,11 +1925,6 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -118 +119 @@
-@@ -2496,5 +2489,4 @@ ice_fdir_parse(struct ice_adapter *ad,
+@@ -2489,5 +2482,4 @@ ice_fdir_parse(struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: fix memory leak in raw pattern parse' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (79 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ice: remove indirection for FDIR filters' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Kevin Traynor
` (51 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/954d1f68b522fdc9802252931e758fa592603edc
Thanks.
Kevin
---
From 954d1f68b522fdc9802252931e758fa592603edc 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 688f037d2e..990b355203 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1864,5 +1864,5 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
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);
@@ -1919,17 +1919,20 @@ 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;
@@ -1942,4 +1945,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
rte_free(tmp_mask);
break;
+
+raw_error:
+ rte_free(tmp_spec);
+ rte_free(tmp_mask);
+ return ret_val;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.711999972 +0000
+++ 0082-net-ice-fix-memory-leak-in-raw-pattern-parse.patch 2025-10-31 13:53:52.183523827 +0000
@@ -1 +1 @@
-From 3938eeec989181216ea3f9cc8eee931a2915ca5d Mon Sep 17 00:00:00 2001
+From 954d1f68b522fdc9802252931e758fa592603edc 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
-@@ -1866,5 +1866,5 @@ 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 688f037d2e..990b355203 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1864,5 +1864,5 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -31 +32 @@
-@@ -1921,17 +1921,20 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1919,17 +1919,20 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -61 +62 @@
-@@ -1944,4 +1947,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1942,4 +1945,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (80 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ice: fix memory leak in raw pattern parse' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP item validation to match on seqnum' " Kevin Traynor
` (50 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Anurag Mandal; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1644c280dd1e398c0c5c96f6d7a3045446cfcdcf
Thanks.
Kevin
---
From 1644c280dd1e398c0c5c96f6d7a3045446cfcdcf 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 bab1bcf3db..b0c4217927 100644
--- a/.mailmap
+++ b/.mailmap
@@ -135,4 +135,5 @@ 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>
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
@@ -562,5 +562,5 @@ 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;
@@ -609,4 +609,15 @@ i40e_hash_get_inset(uint64_t rss_types)
}
+ /* 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;
}
@@ -1114,4 +1125,5 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev,
NULL,
"RSS Queues not supported when pattern specified");
+ rss_conf->symmetric_enable = false; /* by default, symmetric is disabled */
switch (rss_act->func) {
@@ -1141,5 +1153,5 @@ 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,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.740258367 +0000
+++ 0083-net-i40e-fix-symmetric-Toeplitz-hashing-for-SCTP.patch 2025-10-31 13:53:52.185523833 +0000
@@ -1 +1 @@
-From 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c Mon Sep 17 00:00:00 2001
+From 1644c280dd1e398c0c5c96f6d7a3045446cfcdcf 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 bab1bcf3db..b0c4217927 100644
@@ -34 +35 @@
-@@ -137,4 +137,5 @@ Antonio Fischetti <antonio.fischetti@intel.com>
+@@ -135,4 +135,5 @@ Antonio Fischetti <antonio.fischetti@intel.com>
@@ -40 +41 @@
-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
@@ -42,2 +43,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] 135+ messages in thread
* patch 'net/mlx5: fix ESP item validation to match on seqnum' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (81 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Kevin Traynor
` (49 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/aa27f7c19ccf8ed674aa82ccb2b2cba530118c40
Thanks.
Kevin
---
From aa27f7c19ccf8ed674aa82ccb2b2cba530118c40 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 9 Sep 2025 09:28:52 +0300
Subject: [PATCH] net/mlx5: fix ESP item validation to match on seqnum
[ upstream commit 96d73a947331cc146e09b06a6913cdf604ae52a7 ]
The match on ESP sequence number is supported by hardware
steering implementation but was rejected in validation
routine shared by all steering engines.
This patch allows validation to pass with requested match on
ESP sequence number for hardware steering engine.
Fixes: fb96caa56aab ("net/mlx5: support ESP item on Windows")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_flow_os.c | 10 +++++++++-
drivers/net/mlx5/linux/mlx5_flow_os.h | 3 +++
drivers/net/mlx5/mlx5_flow_dv.c | 6 ++----
drivers/net/mlx5/mlx5_flow_hw.c | 5 ++---
drivers/net/mlx5/mlx5_flow_verbs.c | 6 ++----
drivers/net/mlx5/windows/mlx5_flow_os.c | 10 +++++++++-
drivers/net/mlx5/windows/mlx5_flow_os.h | 3 +++
7 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_flow_os.c b/drivers/net/mlx5/linux/mlx5_flow_os.c
index af8c02c38b..777125e9a8 100644
--- a/drivers/net/mlx5/linux/mlx5_flow_os.c
+++ b/drivers/net/mlx5/linux/mlx5_flow_os.c
@@ -19,4 +19,5 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
uint64_t item_flags,
uint8_t target_protocol,
+ bool allow_seq,
struct rte_flow_error *error)
{
@@ -27,4 +28,10 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
const uint64_t l4m = tunnel ? MLX5_FLOW_LAYER_INNER_L4 :
MLX5_FLOW_LAYER_OUTER_L4;
+ static const struct rte_flow_item_esp mlx5_flow_item_esp_mask = {
+ .hdr = {
+ .spi = RTE_BE32(0xffffffff),
+ .seq = RTE_BE32(0xffffffff),
+ },
+ };
int ret;
@@ -48,5 +55,6 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
ret = mlx5_flow_item_acceptable
(dev, item, (const uint8_t *)mask,
- (const uint8_t *)&rte_flow_item_esp_mask,
+ allow_seq ? (const uint8_t *)&mlx5_flow_item_esp_mask :
+ (const uint8_t *)&rte_flow_item_esp_mask,
sizeof(struct rte_flow_item_esp), MLX5_ITEM_RANGE_NOT_ACCEPTED,
error);
diff --git a/drivers/net/mlx5/linux/mlx5_flow_os.h b/drivers/net/mlx5/linux/mlx5_flow_os.h
index 35b5871ab9..21a2ed5bec 100644
--- a/drivers/net/mlx5/linux/mlx5_flow_os.h
+++ b/drivers/net/mlx5/linux/mlx5_flow_os.h
@@ -515,4 +515,6 @@ mlx5_os_flow_dr_sync_domain(void *domain, uint32_t flags)
* @param[in] target_protocol
* The next protocol in the previous item.
+ * @param[in] allow_seq
+ * The match on sequence number is supported.
* @param[out] error
* Pointer to error structure.
@@ -526,4 +528,5 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
uint64_t item_flags,
uint8_t target_protocol,
+ bool allow_seq,
struct rte_flow_error *error);
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index b9b1a34dab..c1ff6a2dae 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -7860,8 +7860,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
break;
case RTE_FLOW_ITEM_TYPE_ESP:
- ret = mlx5_flow_os_validate_item_esp(dev, items,
- item_flags,
- next_protocol,
- error);
+ ret = mlx5_flow_os_validate_item_esp(dev, items, item_flags,
+ next_protocol, false, error);
if (ret < 0)
return ret;
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index e8a3473241..74ee3c665f 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -8681,7 +8681,6 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
break;
case RTE_FLOW_ITEM_TYPE_ESP:
- ret = mlx5_flow_os_validate_item_esp(dev, item,
- *item_flags, 0xff,
- error);
+ ret = mlx5_flow_os_validate_item_esp(dev, item, *item_flags,
+ 0xff, true, error);
if (ret < 0)
return ret;
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index 5b4a4eda3b..67d199ce15 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -1333,8 +1333,6 @@ flow_verbs_validate(struct rte_eth_dev *dev,
#ifdef HAVE_IBV_FLOW_SPEC_ESP
case RTE_FLOW_ITEM_TYPE_ESP:
- ret = mlx5_flow_os_validate_item_esp(dev, items,
- item_flags,
- next_protocol,
- error);
+ ret = mlx5_flow_os_validate_item_esp(dev, items, item_flags,
+ next_protocol, false, error);
if (ret < 0)
return ret;
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.c b/drivers/net/mlx5/windows/mlx5_flow_os.c
index bf93da9f1e..7a625fb880 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.c
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.c
@@ -429,4 +429,5 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
uint64_t item_flags,
uint8_t target_protocol,
+ bool allow_seq,
struct rte_flow_error *error)
{
@@ -438,4 +439,10 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
const uint64_t l4m = tunnel ? MLX5_FLOW_LAYER_INNER_L4 :
MLX5_FLOW_LAYER_OUTER_L4;
+ static const struct rte_flow_item_esp mlx5_flow_item_esp_mask = {
+ .hdr = {
+ .spi = RTE_BE32(0xffffffff),
+ .seq = RTE_BE32(0xffffffff),
+ },
+ };
int ret;
@@ -462,5 +469,6 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
ret = mlx5_flow_item_acceptable
(dev, item, (const uint8_t *)mask,
- (const uint8_t *)&rte_flow_item_esp_mask,
+ allow_seq ? (const uint8_t *)&mlx5_flow_item_esp_mask :
+ (const uint8_t *)&rte_flow_item_esp_mask,
sizeof(struct rte_flow_item_esp), MLX5_ITEM_RANGE_NOT_ACCEPTED,
error);
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.h b/drivers/net/mlx5/windows/mlx5_flow_os.h
index 36edc3d532..2cd4e95325 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.h
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.h
@@ -462,4 +462,6 @@ int mlx5_flow_os_destroy_flow(void *drv_flow_ptr);
* @param[in] target_protocol
* The next protocol in the previous item.
+ * @param[in] allow_seq
+ * The match on sequence number is supported.
* @param[out] error
* Pointer to error structure.
@@ -473,4 +475,5 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
uint64_t item_flags,
uint8_t target_protocol,
+ bool allow_seq,
struct rte_flow_error *error);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.788052655 +0000
+++ 0084-net-mlx5-fix-ESP-item-validation-to-match-on-seqnum.patch 2025-10-31 13:53:52.205523896 +0000
@@ -1 +1 @@
-From 96d73a947331cc146e09b06a6913cdf604ae52a7 Mon Sep 17 00:00:00 2001
+From aa27f7c19ccf8ed674aa82ccb2b2cba530118c40 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 96d73a947331cc146e09b06a6913cdf604ae52a7 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -75 +76 @@
-index abfd54da1a..18d0d29377 100644
+index b9b1a34dab..c1ff6a2dae 100644
@@ -90 +91 @@
-index c84ae726a7..2ca40b4146 100644
+index e8a3473241..74ee3c665f 100644
@@ -93 +94 @@
-@@ -8819,7 +8819,6 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
+@@ -8681,7 +8681,6 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix ESP header match after UDP for group 0' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (82 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP item validation to match on seqnum' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix multicast' " Kevin Traynor
` (48 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Matan Azrad, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3e535a9e970c16871fec2a1ed175444fe7f99b29
Thanks.
Kevin
---
From 3e535a9e970c16871fec2a1ed175444fe7f99b29 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 9 Sep 2025 09:28:53 +0300
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")
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 777125e9a8..f5eee46e44 100644
--- a/drivers/net/mlx5/linux/mlx5_flow_os.c
+++ b/drivers/net/mlx5/linux/mlx5_flow_os.c
@@ -26,6 +26,4 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
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;
static const struct rte_flow_item_esp mlx5_flow_item_esp_mask = {
.hdr = {
@@ -42,8 +40,4 @@ mlx5_flow_os_validate_item_esp(const struct rte_eth_dev *dev,
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,
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index ce33a4e425..1e60bc76dd 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -474,4 +474,7 @@ enum mlx5_feature_name {
#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 c1ff6a2dae..1faae8ab32 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -9712,5 +9712,5 @@ 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;
@@ -9718,21 +9718,27 @@ flow_dv_translate_item_esp(void *key, const struct rte_flow_item *item,
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;
}
@@ -14211,5 +14217,5 @@ 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.826828910 +0000
+++ 0085-net-mlx5-fix-ESP-header-match-after-UDP-for-group-0.patch 2025-10-31 13:53:52.218523936 +0000
@@ -1 +1 @@
-From ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 Mon Sep 17 00:00:00 2001
+From 3e535a9e970c16871fec2a1ed175444fe7f99b29 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ed8eb60c9b2c243b4098f59dc6d9a87ee0bbd4c8 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -46 +47 @@
-index 367dacc277..ff61706054 100644
+index ce33a4e425..1e60bc76dd 100644
@@ -49 +50 @@
-@@ -490,4 +490,7 @@ struct mlx5_mirror {
+@@ -474,4 +474,7 @@ enum mlx5_feature_name {
@@ -58 +59 @@
-index 18d0d29377..bcce1597e2 100644
+index c1ff6a2dae..1faae8ab32 100644
@@ -61 +62 @@
-@@ -9714,5 +9714,5 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item,
+@@ -9712,5 +9712,5 @@ flow_dv_translate_item_tcp(void *key, const struct rte_flow_item *item,
@@ -68 +69 @@
-@@ -9720,21 +9720,27 @@ flow_dv_translate_item_esp(void *key, const struct rte_flow_item *item,
+@@ -9718,21 +9718,27 @@ flow_dv_translate_item_esp(void *key, const struct rte_flow_item *item,
@@ -108 +109 @@
-@@ -14225,5 +14231,5 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
+@@ -14211,5 +14217,5 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix multicast' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (83 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix flow encapsulation hash' " Kevin Traynor
` (47 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Gavin Li; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ddcaa1671f84a3662842df7bb8763fe8ffa6081b
Thanks.
Kevin
---
From ddcaa1671f84a3662842df7bb8763fe8ffa6081b 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 485984f9b0..e2a94ca14c 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1715,5 +1715,8 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
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,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.854257811 +0000
+++ 0086-net-mlx5-fix-multicast.patch 2025-10-31 13:53:52.219523939 +0000
@@ -1 +1 @@
-From 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 Mon Sep 17 00:00:00 2001
+From ddcaa1671f84a3662842df7bb8763fe8ffa6081b 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 485984f9b0..e2a94ca14c 100644
@@ -35 +36 @@
-@@ -1836,5 +1836,8 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
+@@ -1715,5 +1715,8 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix flow encapsulation hash' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (84 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix multicast' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix indirect flow action memory leak' " Kevin Traynor
` (46 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a4c3f462057f607e1f0b6810e47d8d0be4f2c47e
Thanks.
Kevin
---
From a4c3f462057f607e1f0b6810e47d8d0be4f2c47e Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Mon, 15 Sep 2025 13:40:12 +0300
Subject: [PATCH] net/mlx5: fix flow encapsulation hash
[ upstream commit 76583343fb62bf416500ee0df87c934cea18a979 ]
Add missing memcpy for next_protocol field when processing IPv4/6 items
in flow_hw_calc_encap_hash function. This ensures the IPv4/6 header's
proto field is properly copied to the hash calculation data structure.
This function is used in rte_flow_calc_encap_hash() API.
Fixes: bb328f44afe9 ("net/mlx5: support encapsulation hash calculation")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 74ee3c665f..110fb8e88a 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -14795,4 +14795,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
data.src.ipv4_addr =
((const struct rte_flow_item_ipv4 *)(pattern->spec))->hdr.src_addr;
+ data.next_protocol = ((const struct rte_flow_item_ipv4 *)
+ (pattern->spec))->hdr.next_proto_id;
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
@@ -14803,4 +14805,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
&((const struct rte_flow_item_ipv6 *)(pattern->spec))->hdr.src_addr,
sizeof(data.src.ipv6_addr));
+ data.next_protocol = ((const struct rte_flow_item_ipv6 *)
+ (pattern->spec))->hdr.proto;
break;
case RTE_FLOW_ITEM_TYPE_UDP:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.890444030 +0000
+++ 0087-net-mlx5-fix-flow-encapsulation-hash.patch 2025-10-31 13:53:52.228523967 +0000
@@ -1 +1 @@
-From 76583343fb62bf416500ee0df87c934cea18a979 Mon Sep 17 00:00:00 2001
+From a4c3f462057f607e1f0b6810e47d8d0be4f2c47e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 76583343fb62bf416500ee0df87c934cea18a979 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 2ca40b4146..ee8f8c35e5 100644
+index 74ee3c665f..110fb8e88a 100644
@@ -24 +25 @@
-@@ -15097,4 +15097,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
+@@ -14795,4 +14795,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
@@ -31 +32 @@
-@@ -15105,4 +15107,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
+@@ -14803,4 +14805,6 @@ flow_hw_calc_encap_hash(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix indirect flow action memory leak' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (85 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix flow encapsulation hash' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix MTU initialization' " Kevin Traynor
` (45 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Rongwei Liu; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/02f8361a35b881d5fd26aeca528ffb140ed60db5
Thanks.
Kevin
---
From 02f8361a35b881d5fd26aeca528ffb140ed60db5 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 110fb8e88a..be0129a96f 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -14658,4 +14658,5 @@ flow_hw_async_action_list_handle_destroy
user_data, error);
mlx5_indirect_list_remove_entry(&legacy->indirect);
+ mlx5_free(legacy);
goto end;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.925643197 +0000
+++ 0088-net-mlx5-fix-indirect-flow-action-memory-leak.patch 2025-10-31 13:53:52.248524030 +0000
@@ -1 +1 @@
-From a7aeb6ac678c6a0bd45584091529ac6fa6ac58b1 Mon Sep 17 00:00:00 2001
+From 02f8361a35b881d5fd26aeca528ffb140ed60db5 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 110fb8e88a..be0129a96f 100644
@@ -22 +23 @@
-@@ -14960,4 +14960,5 @@ flow_hw_async_action_list_handle_destroy
+@@ -14658,4 +14658,5 @@ flow_hw_async_action_list_handle_destroy
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix MTU initialization' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (86 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix indirect flow action memory leak' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix leak of flow indexed pools' " Kevin Traynor
` (44 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Shani Peretz; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/2b6a79110e9fc358af06466b73cee71a8e9caf2e
Thanks.
Kevin
---
From 2b6a79110e9fc358af06466b73cee71a8e9caf2e 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 5ae226cb08..4bd5c8da7d 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1601,4 +1601,5 @@ err_secondary:
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
priv->mtu);
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index 268598f209..7bd001950e 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -509,4 +509,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u.", eth_dev->data->port_id,
priv->mtu);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.955263732 +0000
+++ 0089-net-mlx5-fix-MTU-initialization.patch 2025-10-31 13:53:52.250524036 +0000
@@ -1 +1 @@
-From ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 Mon Sep 17 00:00:00 2001
+From 2b6a79110e9fc358af06466b73cee71a8e9caf2e 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 5ae226cb08..4bd5c8da7d 100644
@@ -29 +30 @@
-@@ -1602,4 +1602,5 @@ err_secondary:
+@@ -1601,4 +1601,5 @@ err_secondary:
@@ -36 +37 @@
-index c4e3430bdc..4eadc872a5 100644
+index 268598f209..7bd001950e 100644
@@ -39 +40 @@
-@@ -510,4 +510,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -509,4 +509,5 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix leak of flow indexed pools' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (87 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix MTU initialization' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix flow aging race condition' " Kevin Traynor
` (43 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Roi Dayan; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/76f38fb1bba87bf15169ec4c16f1d86f5b89188c
Thanks.
Kevin
---
From 76f38fb1bba87bf15169ec4c16f1d86f5b89188c 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 b0c4217927..5e3d447103 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1315,4 +1315,5 @@ Rogelio Domínguez Hernández <rogelio.dominguez@gmail.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>
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 96269d4e8e..0580e5d030 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2307,4 +2307,16 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
}
+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.
@@ -2502,4 +2514,5 @@ mlx5_dev_close(struct rte_eth_dev *dev)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.985486559 +0000
+++ 0090-net-mlx5-fix-leak-of-flow-indexed-pools.patch 2025-10-31 13:53:52.253524046 +0000
@@ -1 +1 @@
-From eefec46eeb89672815afd6c2497d21b928d77c54 Mon Sep 17 00:00:00 2001
+From 76f38fb1bba87bf15169ec4c16f1d86f5b89188c 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 b0c4217927..5e3d447103 100644
@@ -23 +24 @@
-@@ -1362,4 +1362,5 @@ Rogelio Domínguez Hernández <rogelio.dominguez@gmail.com>
+@@ -1315,4 +1315,5 @@ Rogelio Domínguez Hernández <rogelio.dominguez@gmail.com>
@@ -30 +31 @@
-index ece29fb216..b018a4f0e2 100644
+index 96269d4e8e..0580e5d030 100644
@@ -33 +34 @@
-@@ -2319,4 +2319,16 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
+@@ -2307,4 +2307,16 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
@@ -50 +51 @@
-@@ -2508,4 +2520,5 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2502,4 +2514,5 @@ mlx5_dev_close(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/mlx5: fix flow aging race condition' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (88 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix leak of flow indexed pools' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix inconsistent lock' " Kevin Traynor
` (42 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Rongwei Liu; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5c5f24d5279a0a124b63050f4345c0f8a834d5b4
Thanks.
Kevin
---
From 5c5f24d5279a0a124b63050f4345c0f8a834d5b4 Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Thu, 9 Oct 2025 12:18:10 +0300
Subject: [PATCH] net/mlx5: fix flow aging race condition
[ upstream commit 820ca7361bb7fa40e96e53515d8392ea40a35265 ]
When aging is configured, there is a background thread
which queries all the counters in the pool.
Meantime, per queue flow insertion/deletion/update changes
the counter pool too. It introduces a race condition between
resetting counters's in_used and age_idx fields during flow deletion
and reading them in the background thread.
To resolve it, all key members of counter's struct
are placed in a single uint32_t and they are accessed atomically.
To avoid the occasional timestamp equalization with age_idx,
query_gen_when_free is moved out of the union. The total memory
size is kept the same.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 5 +-
drivers/net/mlx5/mlx5_hws_cnt.c | 10 +--
drivers/net/mlx5/mlx5_hws_cnt.h | 135 ++++++++++++++++++++------------
3 files changed, 91 insertions(+), 59 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index be0129a96f..052b7f2768 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3192,5 +3192,5 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
if (action_flags & MLX5_FLOW_ACTION_COUNT) {
cnt_queue = mlx5_hws_cnt_get_queue(priv, &queue);
- if (mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &age_cnt, idx) < 0)
+ if (mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &age_cnt, idx, 0) < 0)
return -1;
flow->flags |= MLX5_FLOW_HW_FLOW_FLAG_CNT_ID;
@@ -3628,5 +3628,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_COUNT:
cnt_queue = mlx5_hws_cnt_get_queue(priv, &queue);
- ret = mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &cnt_id, age_idx);
+ ret = mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &cnt_id,
+ age_idx, 0);
if (ret != 0) {
rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_ACTION,
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index 7baeaedd17..3a93434ecd 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -57,6 +57,6 @@ __mlx5_hws_cnt_svc(struct mlx5_dev_ctx_shared *sh,
reset_cnt_num = rte_ring_count(reset_list);
- cpool->query_gen++;
mlx5_aso_cnt_query(sh, cpool);
+ rte_atomic_fetch_add_explicit(&cpool->query_gen, 1, rte_memory_order_release);
zcdr.n1 = 0;
zcdu.n1 = 0;
@@ -128,12 +128,12 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
uint16_t expected1 = HWS_AGE_CANDIDATE;
uint16_t expected2 = HWS_AGE_CANDIDATE_INSIDE_RING;
- uint32_t i;
+ uint32_t i, age_idx, in_use;
cpool->time_of_last_age_check = curr_time;
for (i = 0; i < nb_alloc_cnts; ++i) {
- uint32_t age_idx = cpool->pool[i].age_idx;
uint64_t hits;
- if (!cpool->pool[i].in_used || age_idx == 0)
+ mlx5_hws_cnt_get_all(&cpool->pool[i], &in_use, NULL, &age_idx);
+ if (!in_use || age_idx == 0)
continue;
param = mlx5_ipool_get(age_info->ages_ipool, age_idx);
@@ -754,5 +754,5 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
* to wait for query.
*/
- cpool->query_gen = 1;
+ rte_atomic_store_explicit(&cpool->query_gen, 1, rte_memory_order_relaxed);
ret = mlx5_hws_cnt_pool_action_create(priv, cpool);
if (ret != 0) {
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.h b/drivers/net/mlx5/mlx5_hws_cnt.h
index d8da9dfcdd..8408c571ec 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.h
+++ b/drivers/net/mlx5/mlx5_hws_cnt.h
@@ -43,29 +43,32 @@ struct mlx5_hws_cnt_dcs_mng {
};
+union mlx5_hws_cnt_state {
+ alignas(RTE_CACHE_LINE_SIZE) RTE_ATOMIC(uint32_t)data;
+ struct {
+ uint32_t in_used:1;
+ /* Indicator whether this counter in used or in pool. */
+ uint32_t share:1;
+ /*
+ * share will be set to 1 when this counter is used as
+ * indirect action.
+ */
+ uint32_t age_idx:24;
+ /*
+ * When this counter uses for aging, it stores the index
+ * of AGE parameter. Otherwise, this index is zero.
+ */
+ };
+};
+
struct mlx5_hws_cnt {
struct flow_counter_stats reset;
- bool in_used; /* Indicator whether this counter in used or in pool. */
- union {
- struct {
- uint32_t share:1;
- /*
- * share will be set to 1 when this counter is used as
- * indirect action.
- */
- uint32_t age_idx:24;
- /*
- * When this counter uses for aging, it save the index
- * of AGE parameter. For pure counter (without aging)
- * this index is zero.
- */
- };
- /* This struct is only meaningful when user own this counter. */
- uint32_t query_gen_when_free;
- /*
- * When PMD own this counter (user put back counter to PMD
- * counter pool, i.e), this field recorded value of counter
- * pools query generation at time user release the counter.
- */
- };
+ union mlx5_hws_cnt_state cnt_state;
+ /* This struct is only meaningful when user own this counter. */
+ alignas(RTE_CACHE_LINE_SIZE) RTE_ATOMIC(uint32_t)query_gen_when_free;
+ /*
+ * When PMD own this counter (user put back counter to PMD
+ * counter pool, i.e), this field recorded value of counter
+ * pools query generation at time user release the counter.
+ */
};
@@ -198,4 +201,40 @@ mlx5_hws_cnt_id_valid(cnt_id_t cnt_id)
}
+static __rte_always_inline void
+mlx5_hws_cnt_set_age_idx(struct mlx5_hws_cnt *cnt, uint32_t value)
+{
+ union mlx5_hws_cnt_state cnt_state;
+
+ cnt_state.data = rte_atomic_load_explicit(&cnt->cnt_state.data, rte_memory_order_acquire);
+ cnt_state.age_idx = value;
+ rte_atomic_store_explicit(&cnt->cnt_state.data, cnt_state.data, rte_memory_order_release);
+}
+
+static __rte_always_inline void
+mlx5_hws_cnt_set_all(struct mlx5_hws_cnt *cnt, uint32_t in_used, uint32_t share, uint32_t age_idx)
+{
+ union mlx5_hws_cnt_state cnt_state;
+
+ cnt_state.in_used = !!in_used;
+ cnt_state.share = !!share;
+ cnt_state.age_idx = age_idx;
+ rte_atomic_store_explicit(&cnt->cnt_state.data, cnt_state.data, rte_memory_order_relaxed);
+}
+
+static __rte_always_inline void
+mlx5_hws_cnt_get_all(struct mlx5_hws_cnt *cnt, uint32_t *in_used, uint32_t *share,
+ uint32_t *age_idx)
+{
+ union mlx5_hws_cnt_state cnt_state;
+
+ cnt_state.data = rte_atomic_load_explicit(&cnt->cnt_state.data, rte_memory_order_acquire);
+ if (in_used != NULL)
+ *in_used = cnt_state.in_used;
+ if (share != NULL)
+ *share = cnt_state.share;
+ if (age_idx != NULL)
+ *age_idx = cnt_state.age_idx;
+}
+
/**
* Generate Counter id from internal index.
@@ -425,7 +464,8 @@ mlx5_hws_cnt_pool_put(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
hpool = mlx5_hws_cnt_host_pool(cpool);
iidx = mlx5_hws_cnt_iidx(hpool, *cnt_id);
- hpool->pool[iidx].in_used = false;
- hpool->pool[iidx].query_gen_when_free =
- rte_atomic_load_explicit(&hpool->query_gen, rte_memory_order_relaxed);
+ mlx5_hws_cnt_set_all(&hpool->pool[iidx], 0, 0, 0);
+ rte_atomic_store_explicit(&hpool->pool[iidx].query_gen_when_free,
+ rte_atomic_load_explicit(&hpool->query_gen, rte_memory_order_relaxed),
+ rte_memory_order_relaxed);
if (likely(queue != NULL) && cpool->cfg.host_cpool == NULL)
qcache = hpool->cache->qcache[*queue];
@@ -481,5 +521,5 @@ mlx5_hws_cnt_pool_put(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
static __rte_always_inline int
mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
- cnt_id_t *cnt_id, uint32_t age_idx)
+ cnt_id_t *cnt_id, uint32_t age_idx, uint32_t shared)
{
unsigned int ret;
@@ -509,8 +549,5 @@ mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
&cpool->pool[iidx].reset.hits,
&cpool->pool[iidx].reset.bytes);
- cpool->pool[iidx].share = 0;
- MLX5_ASSERT(!cpool->pool[iidx].in_used);
- cpool->pool[iidx].in_used = true;
- cpool->pool[iidx].age_idx = age_idx;
+ mlx5_hws_cnt_set_all(&cpool->pool[iidx], 1, shared, age_idx);
return 0;
}
@@ -531,6 +568,8 @@ mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
*cnt_id = (*(cnt_id_t *)zcdc.ptr1);
iidx = mlx5_hws_cnt_iidx(cpool, *cnt_id);
- query_gen = cpool->pool[iidx].query_gen_when_free;
- if (cpool->query_gen == query_gen) { /* counter is waiting to reset. */
+ query_gen = rte_atomic_load_explicit(&cpool->pool[iidx].query_gen_when_free,
+ rte_memory_order_relaxed);
+ /* counter is waiting to reset. */
+ if (rte_atomic_load_explicit(&cpool->query_gen, rte_memory_order_relaxed) == query_gen) {
rte_ring_dequeue_zc_elem_finish(qcache, 0);
/* write-back counter to reset list. */
@@ -550,8 +589,5 @@ mlx5_hws_cnt_pool_get(struct mlx5_hws_cnt_pool *cpool, uint32_t *queue,
&cpool->pool[iidx].reset.bytes);
rte_ring_dequeue_zc_elem_finish(qcache, 1);
- cpool->pool[iidx].share = 0;
- MLX5_ASSERT(!cpool->pool[iidx].in_used);
- cpool->pool[iidx].in_used = true;
- cpool->pool[iidx].age_idx = age_idx;
+ mlx5_hws_cnt_set_all(&cpool->pool[iidx], 1, shared, age_idx);
return 0;
}
@@ -612,13 +648,6 @@ mlx5_hws_cnt_shared_get(struct mlx5_hws_cnt_pool *cpool, cnt_id_t *cnt_id,
{
struct mlx5_hws_cnt_pool *hpool = mlx5_hws_cnt_host_pool(cpool);
- uint32_t iidx;
- int ret;
- ret = mlx5_hws_cnt_pool_get(hpool, NULL, cnt_id, age_idx);
- if (ret != 0)
- return ret;
- iidx = mlx5_hws_cnt_iidx(hpool, *cnt_id);
- hpool->pool[iidx].share = 1;
- return 0;
+ return mlx5_hws_cnt_pool_get(hpool, NULL, cnt_id, age_idx, 1);
}
@@ -627,7 +656,5 @@ mlx5_hws_cnt_shared_put(struct mlx5_hws_cnt_pool *cpool, cnt_id_t *cnt_id)
{
struct mlx5_hws_cnt_pool *hpool = mlx5_hws_cnt_host_pool(cpool);
- uint32_t iidx = mlx5_hws_cnt_iidx(hpool, *cnt_id);
- hpool->pool[iidx].share = 0;
mlx5_hws_cnt_pool_put(hpool, NULL, cnt_id);
}
@@ -638,6 +665,8 @@ mlx5_hws_cnt_is_shared(struct mlx5_hws_cnt_pool *cpool, cnt_id_t cnt_id)
struct mlx5_hws_cnt_pool *hpool = mlx5_hws_cnt_host_pool(cpool);
uint32_t iidx = mlx5_hws_cnt_iidx(hpool, cnt_id);
+ uint32_t share;
- return hpool->pool[iidx].share ? true : false;
+ mlx5_hws_cnt_get_all(&hpool->pool[iidx], NULL, &share, NULL);
+ return !!share;
}
@@ -649,6 +678,6 @@ mlx5_hws_cnt_age_set(struct mlx5_hws_cnt_pool *cpool, cnt_id_t cnt_id,
uint32_t iidx = mlx5_hws_cnt_iidx(hpool, cnt_id);
- MLX5_ASSERT(hpool->pool[iidx].share);
- hpool->pool[iidx].age_idx = age_idx;
+ MLX5_ASSERT(hpool->pool[iidx].cnt_state.share);
+ mlx5_hws_cnt_set_age_idx(&hpool->pool[iidx], age_idx);
}
@@ -658,7 +687,9 @@ mlx5_hws_cnt_age_get(struct mlx5_hws_cnt_pool *cpool, cnt_id_t cnt_id)
struct mlx5_hws_cnt_pool *hpool = mlx5_hws_cnt_host_pool(cpool);
uint32_t iidx = mlx5_hws_cnt_iidx(hpool, cnt_id);
+ uint32_t age_idx, share;
- MLX5_ASSERT(hpool->pool[iidx].share);
- return hpool->pool[iidx].age_idx;
+ mlx5_hws_cnt_get_all(&hpool->pool[iidx], NULL, &share, &age_idx);
+ MLX5_ASSERT(share);
+ return age_idx;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.022194996 +0000
+++ 0091-net-mlx5-fix-flow-aging-race-condition.patch 2025-10-31 13:53:52.263524077 +0000
@@ -1 +1 @@
-From 820ca7361bb7fa40e96e53515d8392ea40a35265 Mon Sep 17 00:00:00 2001
+From 5c5f24d5279a0a124b63050f4345c0f8a834d5b4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 820ca7361bb7fa40e96e53515d8392ea40a35265 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index 9a0aa1827e..491a78a0de 100644
+index be0129a96f..052b7f2768 100644
@@ -36 +37 @@
-@@ -3233,5 +3233,5 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
+@@ -3192,5 +3192,5 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -43 +44 @@
-@@ -3669,5 +3669,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
+@@ -3628,5 +3628,6 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
@@ -52 +53 @@
-index 5c738f38ca..fb01fce4e5 100644
+index 7baeaedd17..3a93434ecd 100644
@@ -55 +56 @@
-@@ -64,6 +64,6 @@ __mlx5_hws_cnt_svc(struct mlx5_dev_ctx_shared *sh,
+@@ -57,6 +57,6 @@ __mlx5_hws_cnt_svc(struct mlx5_dev_ctx_shared *sh,
@@ -63 +64 @@
-@@ -135,12 +135,12 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
+@@ -128,12 +128,12 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
@@ -79 +80 @@
-@@ -768,5 +768,5 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -754,5 +754,5 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
@@ -87 +88 @@
-index 38a9c19449..f5b7e8f643 100644
+index d8da9dfcdd..8408c571ec 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/hns3: fix inconsistent lock' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (89 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/mlx5: fix flow aging race condition' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN resources freeing' " Kevin Traynor
` (41 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bdc2be7156ac4f9a5b07c58d7c138166f28e4395
Thanks.
Kevin
---
From bdc2be7156ac4f9a5b07c58d7c138166f28e4395 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 01d473fd2e..9b8566139b 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -6,5 +6,4 @@
#define HNS3_ETHDEV_H
-#include <pthread.h>
#include <ethdev_driver.h>
#include <rte_byteorder.h>
@@ -681,5 +680,4 @@ 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 */
diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index aacad40e61..50572ae430 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -1146,15 +1146,4 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
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);
@@ -1167,6 +1156,4 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
}
}
- pthread_mutex_unlock(&hw->flows_lock);
- rte_spinlock_lock(&hw->lock);
if (err) {
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index c0238d2bfa..f2d1e4ec3a 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -2211,16 +2211,4 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
}
-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)
@@ -2233,5 +2221,5 @@ hns3_restore_filter(struct hns3_adapter *hns)
return ret;
- return hns3_restore_rss_filter(hw);
+ return hns3_reconfig_all_rss_filter(hw);
}
@@ -2625,8 +2613,8 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
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;
@@ -2642,7 +2630,7 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
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;
@@ -2656,7 +2644,7 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
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;
@@ -2669,7 +2657,7 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
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;
@@ -2684,7 +2672,7 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
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;
@@ -2734,5 +2722,5 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
return NULL;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
act_count = (const struct rte_flow_action_count *)action->conf;
@@ -2759,9 +2747,9 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
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;
}
@@ -2776,9 +2764,9 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
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,
@@ -2788,5 +2776,5 @@ 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,
@@ -2795,5 +2783,5 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
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,
@@ -2803,5 +2791,5 @@ 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;
}
@@ -2818,9 +2806,9 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
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,
@@ -2832,5 +2820,5 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
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;
}
@@ -2866,12 +2854,8 @@ 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.051343982 +0000
+++ 0092-net-hns3-fix-inconsistent-lock.patch 2025-10-31 13:53:52.266524086 +0000
@@ -1 +1 @@
-From d441169bd20415691ea86707e7bf852eb6fcda46 Mon Sep 17 00:00:00 2001
+From bdc2be7156ac4f9a5b07c58d7c138166f28e4395 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 01d473fd2e..9b8566139b 100644
@@ -34 +35 @@
-@@ -680,5 +679,4 @@ struct hns3_hw {
+@@ -681,5 +680,4 @@ struct hns3_hw {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/hns3: fix VLAN resources freeing' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (90 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/hns3: fix inconsistent lock' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Kevin Traynor
` (40 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bf519edbd90f036dd720444b2c1539abbfaa7524
Thanks.
Kevin
---
From bf519edbd90f036dd720444b2c1539abbfaa7524 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 50c6ed0744..0c9a83eca4 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -4433,5 +4433,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init dcb: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
@@ -4439,5 +4439,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init flow director: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
@@ -4445,5 +4445,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config tso: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
@@ -4451,5 +4451,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config gro: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
@@ -4463,5 +4463,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init ring intr vector: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
@@ -4469,9 +4469,10 @@ hns3_init_hardware(struct hns3_adapter *hns)
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);
@@ -4479,4 +4480,14 @@ err_mac_init:
}
+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)
@@ -4690,6 +4701,5 @@ 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);
@@ -4726,6 +4736,5 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.081230233 +0000
+++ 0093-net-hns3-fix-VLAN-resources-freeing.patch 2025-10-31 13:53:52.269524095 +0000
@@ -1 +1 @@
-From 4816b1005bd650b4a1e10af913c497bec860bec5 Mon Sep 17 00:00:00 2001
+From bf519edbd90f036dd720444b2c1539abbfaa7524 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 50c6ed0744..0c9a83eca4 100644
@@ -24 +25 @@
-@@ -4367,5 +4367,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4433,5 +4433,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -31 +32 @@
-@@ -4373,5 +4373,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4439,5 +4439,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -38 +39 @@
-@@ -4379,5 +4379,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4445,5 +4445,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -45 +46 @@
-@@ -4385,5 +4385,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4451,5 +4451,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -52 +53 @@
-@@ -4397,5 +4397,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4463,5 +4463,5 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -59 +60 @@
-@@ -4403,9 +4403,10 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4469,9 +4469,10 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -72 +73 @@
-@@ -4413,4 +4414,14 @@ err_mac_init:
+@@ -4479,4 +4480,14 @@ err_mac_init:
@@ -87 +88 @@
-@@ -4624,6 +4635,5 @@ err_enable_intr:
+@@ -4690,6 +4701,5 @@ err_enable_intr:
@@ -95 +96 @@
-@@ -4660,6 +4670,5 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
+@@ -4726,6 +4736,5 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/hns3: fix overwrite mbuf in vector path' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (91 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN resources freeing' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/af_packet: fix crash in secondary process' " Kevin Traynor
` (39 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Dengdui Huang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/fe744304a87b4a3f2de377b17f292dee20016f06
Thanks.
Kevin
---
From fe744304a87b4a3f2de377b17f292dee20016f06 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
@@ -110,6 +110,10 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.108198759 +0000
+++ 0094-net-hns3-fix-overwrite-mbuf-in-vector-path.patch 2025-10-31 13:53:52.270300371 +0000
@@ -1 +1 @@
-From 06b296a2264fcd1fe2d167f2d90a58607f5e81f5 Mon Sep 17 00:00:00 2001
+From fe744304a87b4a3f2de377b17f292dee20016f06 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] 135+ messages in thread
* patch 'net/af_packet: fix crash in secondary process' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (92 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ark: remove double mbuf free' " Kevin Traynor
` (38 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Kerem Aksu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c55c49157434d006eeaea92ed92e472efef067b0
Thanks.
Kevin
---
From c55c49157434d006eeaea92ed92e472efef067b0 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 5e3d447103..de8893d104 100644
--- a/.mailmap
+++ b/.mailmap
@@ -803,4 +803,5 @@ 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>
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index efae15a493..0ad199bbd2 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -490,5 +490,5 @@ eth_dev_close(struct rte_eth_dev *dev)
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);
@@ -794,7 +794,8 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
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;
@@ -983,5 +984,5 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.136435766 +0000
+++ 0095-net-af_packet-fix-crash-in-secondary-process.patch 2025-10-31 13:53:52.271524102 +0000
@@ -1 +1 @@
-From d57124f60ef60b24cd39e895cf6d211b93b897ae Mon Sep 17 00:00:00 2001
+From c55c49157434d006eeaea92ed92e472efef067b0 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 5e3d447103..de8893d104 100644
@@ -26 +27 @@
-@@ -831,4 +831,5 @@ Keiichi Watanabe <keiichiw@chromium.org>
+@@ -803,4 +803,5 @@ Keiichi Watanabe <keiichiw@chromium.org>
@@ -33 +34 @@
-index 85bc1201b4..de7ff63527 100644
+index efae15a493..0ad199bbd2 100644
@@ -36 +37 @@
-@@ -526,5 +526,5 @@ eth_dev_close(struct rte_eth_dev *dev)
+@@ -490,5 +490,5 @@ eth_dev_close(struct rte_eth_dev *dev)
@@ -43 +44 @@
-@@ -876,7 +876,8 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
+@@ -794,7 +794,8 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
@@ -53 +54 @@
-@@ -1064,5 +1065,5 @@ free_internals:
+@@ -983,5 +984,5 @@ free_internals:
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ark: remove double mbuf free' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (93 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/af_packet: fix crash in secondary process' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'app/testpmd: stop forwarding in secondary process' " Kevin Traynor
` (37 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: John Miller; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7a1eb51a0f1f4ac153bbcb6acd2d27b1646e01fc
Thanks.
Kevin
---
From 7a1eb51a0f1f4ac153bbcb6acd2d27b1646e01fc 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 80e431f1ae..6077d98ae0 100644
--- a/drivers/net/ark/ark_ethdev_rx.c
+++ b/drivers/net/ark/ark_ethdev_rx.c
@@ -539,5 +539,4 @@ eth_ark_dev_rx_queue_release(void *vqueue)
{
struct ark_rx_queue *queue;
- uint32_t i;
queue = (struct ark_rx_queue *)vqueue;
@@ -552,7 +551,4 @@ eth_ark_dev_rx_queue_release(void *vqueue)
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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.163217663 +0000
+++ 0096-net-ark-remove-double-mbuf-free.patch 2025-10-31 13:53:52.272524105 +0000
@@ -1 +1 @@
-From f8c85054cc9cb160ca12e1bf96b569e654f96c74 Mon Sep 17 00:00:00 2001
+From 7a1eb51a0f1f4ac153bbcb6acd2d27b1646e01fc 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 80e431f1ae..6077d98ae0 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/testpmd: stop forwarding in secondary process' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (94 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ark: remove double mbuf free' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/tap: fix build with LTO' " Kevin Traynor
` (36 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a5c12c892dd18ff8d37dcf7f1ad28a7de49f29a3
Thanks.
Kevin
---
From a5c12c892dd18ff8d37dcf7f1ad28a7de49f29a3 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 5aaf6534e3..0fb18abe79 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -3568,4 +3568,81 @@ detach_devargs(char *identifier)
}
+#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)
@@ -3579,4 +3656,8 @@ pmd_test_exit(void)
#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]) {
@@ -4359,7 +4440,10 @@ main(int argc, char** argv)
#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
@@ -4558,10 +4642,21 @@ 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 */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.192085490 +0000
+++ 0097-app-testpmd-stop-forwarding-in-secondary-process.patch 2025-10-31 13:53:52.274524111 +0000
@@ -1 +1 @@
-From f96273c8e9d39e472bb07acc05e493b1e712e51b Mon Sep 17 00:00:00 2001
+From a5c12c892dd18ff8d37dcf7f1ad28a7de49f29a3 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 5aaf6534e3..0fb18abe79 100644
@@ -25 +26 @@
-@@ -3611,4 +3611,81 @@ detach_devargs(char *identifier)
+@@ -3568,4 +3568,81 @@ detach_devargs(char *identifier)
@@ -107 +108 @@
-@@ -3622,4 +3699,8 @@ pmd_test_exit(void)
+@@ -3579,4 +3656,8 @@ pmd_test_exit(void)
@@ -116 +117 @@
-@@ -4431,7 +4512,10 @@ main(int argc, char** argv)
+@@ -4359,7 +4440,10 @@ main(int argc, char** argv)
@@ -130 +131 @@
-@@ -4635,10 +4719,21 @@ main(int argc, char** argv)
+@@ -4558,10 +4642,21 @@ main(int argc, char** argv)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/tap: fix build with LTO' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (95 preceding siblings ...)
2025-10-31 14:33 ` patch 'app/testpmd: stop forwarding in secondary process' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Kevin Traynor
` (35 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: David Marchand; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/47c59eea7dff208663f62c9bd4d7f3a68f7c074c
Thanks.
Kevin
---
From 47c59eea7dff208663f62c9bd4d7f3a68f7c074c Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 22 Sep 2025 09:30:43 +0200
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 | 117 +++++++++++++---------------------
drivers/net/tap/tap_netlink.c | 24 +++----
drivers/net/tap/tap_netlink.h | 10 +--
drivers/net/tap/tap_tcmsgs.c | 6 +-
4 files changed, 65 insertions(+), 92 deletions(-)
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index c0e44bb1a7..55fb39fc7d 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -431,18 +431,14 @@ tap_flow_create_eth(const struct rte_flow_item *item, struct convert_data *info)
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;
@@ -499,9 +495,7 @@ tap_flow_create_vlan(const struct rte_flow_item *item, struct convert_data *info
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;
@@ -545,18 +539,13 @@ tap_flow_create_ipv4(const struct rte_flow_item *item, struct convert_data *info
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;
}
@@ -600,18 +589,17 @@ tap_flow_create_ipv6(const struct rte_flow_item *item, struct convert_data *info
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;
}
@@ -650,13 +638,11 @@ tap_flow_create_udp(const struct rte_flow_item *item, struct convert_data *info)
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;
}
@@ -695,13 +681,11 @@ tap_flow_create_tcp(const struct rte_flow_item *item, struct convert_data *info)
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;
}
@@ -811,11 +795,9 @@ add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
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)
@@ -823,23 +805,18 @@ add_action(struct rte_flow *flow, size_t *act_index, struct action_data *adata)
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_add(msg, TCA_SKBEDIT_PARMS, sizeof(adata->skbedit.skbedit),
+ &adata->skbedit.skbedit);
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);
} else if (strcmp("bpf", adata->id) == 0) {
#ifdef HAVE_BPF_RSS
- 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
TAP_LOG(ERR, "Internal error: bpf requested but not supported");
@@ -976,5 +953,5 @@ priv_flow_process(struct pmd_internals *pmd,
}
/* 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,
@@ -1016,13 +993,9 @@ 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);
}
}
diff --git a/drivers/net/tap/tap_netlink.c b/drivers/net/tap/tap_netlink.c
index 8a57c9242c..5ff60f41d4 100644
--- a/drivers/net/tap/tap_netlink.c
+++ b/drivers/net/tap/tap_netlink.c
@@ -294,5 +294,5 @@ retry:
*/
void
-tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
+tap_nlattr_add(struct tap_nlmsg *msg, unsigned short type,
unsigned int data_len, const void *data)
{
@@ -300,10 +300,10 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
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);
}
@@ -319,7 +319,7 @@ tap_nlattr_add(struct nlmsghdr *nh, unsigned short type,
*/
void
-tap_nlattr_add8(struct nlmsghdr *nh, unsigned short type, uint8_t data)
+tap_nlattr_add8(struct tap_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);
}
@@ -335,7 +335,7 @@ 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)
+tap_nlattr_add16(struct tap_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);
}
@@ -351,7 +351,7 @@ 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)
+tap_nlattr_add32(struct tap_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);
}
@@ -380,7 +380,7 @@ tap_nlattr_nested_start(struct tap_nlmsg *msg, uint16_t type)
}
- 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;
@@ -405,5 +405,5 @@ tap_nlattr_nested_finish(struct tap_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)
diff --git a/drivers/net/tap/tap_netlink.h b/drivers/net/tap/tap_netlink.h
index 466c47a6d7..5eff6edbb1 100644
--- a/drivers/net/tap/tap_netlink.h
+++ b/drivers/net/tap/tap_netlink.h
@@ -24,5 +24,5 @@ struct tap_nlmsg {
};
-#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);
@@ -32,9 +32,9 @@ 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 tap_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 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);
diff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c
index caca9445c8..c32f0ff815 100644
--- a/drivers/net/tap/tap_tcmsgs.c
+++ b/drivers/net/tap/tap_tcmsgs.c
@@ -124,6 +124,6 @@ qdisc_add_multiq(int nlsk_fd, unsigned int ifindex)
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;
@@ -153,5 +153,5 @@ qdisc_add_ingress(int nlsk_fd, unsigned int ifindex)
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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.220637250 +0000
+++ 0098-net-tap-fix-build-with-LTO.patch 2025-10-31 13:53:52.275524114 +0000
@@ -1 +1 @@
-From adb95cc6644103d055609f5bcae5df91afea02ab Mon Sep 17 00:00:00 2001
+From 47c59eea7dff208663f62c9bd4d7f3a68f7c074c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit adb95cc6644103d055609f5bcae5df91afea02ab ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 373b773e2d..9d4ef27a8a 100644
+index c0e44bb1a7..55fb39fc7d 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/hns3: fix VLAN tag loss for short tunnel frame' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (96 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/tap: fix build with LTO' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'ethdev: fix VLAN filter parameter description' " Kevin Traynor
` (34 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Xingui Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0d4ac08fdca35ed6ccba96e8e156c1ce0245a6e1
Thanks.
Kevin
---
From 0d4ac08fdca35ed6ccba96e8e156c1ce0245a6e1 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 9b8566139b..70ac2f66f8 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -79,4 +79,5 @@
#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 4d2f77e834..9421fa58e2 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -4206,4 +4206,35 @@ 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,
@@ -4283,19 +4314,6 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
* 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.250221168 +0000
+++ 0099-net-hns3-fix-VLAN-tag-loss-for-short-tunnel-frame.patch 2025-10-31 13:53:52.278524124 +0000
@@ -1 +1 @@
-From 2262fc29485bd863db55e820a194bf1e4be8a87c Mon Sep 17 00:00:00 2001
+From 0d4ac08fdca35ed6ccba96e8e156c1ce0245a6e1 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 9b8566139b..70ac2f66f8 100644
@@ -23 +24 @@
-@@ -76,4 +76,5 @@
+@@ -79,4 +79,5 @@
@@ -30 +31 @@
-index aa7ee6f3e8..df703134be 100644
+index 4d2f77e834..9421fa58e2 100644
@@ -33 +34 @@
-@@ -4220,4 +4220,35 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
+@@ -4206,4 +4206,35 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
@@ -69 +70 @@
-@@ -4297,19 +4328,6 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -4283,19 +4314,6 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'ethdev: fix VLAN filter parameter description' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (97 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix file descriptor leak on read error' " Kevin Traynor
` (33 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/63e9814d1c52a851e4d62fce34e736f52d8491be
Thanks.
Kevin
---
From 63e9814d1c52a851e4d62fce34e736f52d8491be 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 1f71cad244..ea3487d342 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -3683,5 +3683,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
* 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().
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.280728884 +0000
+++ 0100-ethdev-fix-VLAN-filter-parameter-description.patch 2025-10-31 13:53:52.282524136 +0000
@@ -1 +1 @@
-From f7eaa9063561a130badc978f2dfe49536904c907 Mon Sep 17 00:00:00 2001
+From 63e9814d1c52a851e4d62fce34e736f52d8491be 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 1f71cad244..ea3487d342 100644
@@ -21 +22 @@
-@@ -3772,5 +3772,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
+@@ -3683,5 +3683,5 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/enetfec: fix file descriptor leak on read error' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (98 preceding siblings ...)
2025-10-31 14:33 ` patch 'ethdev: fix VLAN filter parameter description' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Kevin Traynor
` (32 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ddebfe7526d396153545507b48cc04f2d7126398
Thanks.
Kevin
---
From ddebfe7526d396153545507b48cc04f2d7126398 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,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021 NXP
+ * Copyright 2021,2024 NXP
*/
@@ -67,6 +67,8 @@ file_read_first_line(const char root[], const char subdir[],
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 */
@@ -74,4 +76,5 @@ file_read_first_line(const char root[], const char subdir[],
if (ret <= 0) {
ENETFEC_PMD_ERR("Error reading file %s", absolute_file_name);
+ close(fd);
return ret;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.307945432 +0000
+++ 0101-net-enetfec-fix-file-descriptor-leak-on-read-error.patch 2025-10-31 13:53:52.283079063 +0000
@@ -1 +1 @@
-From 2e503215692e8ab50e473e963ec58d5ab714a375 Mon Sep 17 00:00:00 2001
+From ddebfe7526d396153545507b48cc04f2d7126398 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] 135+ messages in thread
* patch 'net/enetfec: fix out-of-bounds access in UIO mapping' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (99 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix file descriptor leak on read error' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Kevin Traynor
` (31 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Vanshika Shukla; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9ef9ed084e79639f094b55ab0809c5aafb28ccc0
Thanks.
Kevin
---
From 9ef9ed084e79639f094b55ab0809c5aafb28ccc0 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,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021,2024 NXP
+ * Copyright 2021,2024-2025 NXP
*/
@@ -143,4 +143,8 @@ 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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.334103064 +0000
+++ 0102-net-enetfec-fix-out-of-bounds-access-in-UIO-mapping.patch 2025-10-31 13:53:52.283350897 +0000
@@ -1 +1 @@
-From 22b0837bd93a777b8ca7fcf234985175e456a4f5 Mon Sep 17 00:00:00 2001
+From 9ef9ed084e79639f094b55ab0809c5aafb28ccc0 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] 135+ messages in thread
* patch 'net/enetfec: fix buffer descriptor size configuration' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (100 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix Tx queue free' " Kevin Traynor
` (30 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/71b400b1db4be3f067268d9df30d4ebe8c7b3851
Thanks.
Kevin
---
From 71b400b1db4be3f067268d9df30d4ebe8c7b3851 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 0d27b63953..1509410b55 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -391,5 +391,5 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
}
- 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");
@@ -475,5 +475,5 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
}
- 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.360991090 +0000
+++ 0103-net-enetfec-fix-buffer-descriptor-size-configuration.patch 2025-10-31 13:53:52.283524139 +0000
@@ -1 +1 @@
-From f034c096b86ed79345cc1f83c6191713b2814fb0 Mon Sep 17 00:00:00 2001
+From 71b400b1db4be3f067268d9df30d4ebe8c7b3851 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 0d27b63953..1509410b55 100644
@@ -24 +25 @@
-@@ -385,5 +385,5 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -391,5 +391,5 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
@@ -31 +32 @@
-@@ -463,5 +463,5 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -475,5 +475,5 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/enetfec: fix Tx queue free' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (101 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix checksum flag handling and error return' " Kevin Traynor
` (29 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/88d63ab5818ab47d9bea58d5c73856767acd2198
Thanks.
Kevin
---
From 88d63ab5818ab47d9bea58d5c73856767acd2198 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 1509410b55..7d0bacdd7a 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -351,5 +351,5 @@ enet_free_queue(struct rte_eth_dev *dev)
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]);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.388107783 +0000
+++ 0104-net-enetfec-fix-Tx-queue-free.patch 2025-10-31 13:53:52.284420780 +0000
@@ -1 +1 @@
-From f0aa80200d87e38a613af1181a2b1048bd512c76 Mon Sep 17 00:00:00 2001
+From 88d63ab5818ab47d9bea58d5c73856767acd2198 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 1509410b55..7d0bacdd7a 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/enetfec: fix checksum flag handling and error return' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (102 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix Tx queue free' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: reject multi-queue configuration' " Kevin Traynor
` (28 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/703b931f295de28361ab2d5b68a39f8c3b0297ed
Thanks.
Kevin
---
From 703b931f295de28361ab2d5b68a39f8c3b0297ed 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
@@ -122,8 +122,9 @@ enetfec_recv_pkts(void *rxq1, struct rte_mbuf **rx_pkts,
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;
}
}
@@ -239,5 +240,6 @@ enetfec_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.414490150 +0000
+++ 0105-net-enetfec-fix-checksum-flag-handling-and-error-ret.patch 2025-10-31 13:53:52.284524142 +0000
@@ -1 +1 @@
-From b35089c52802378ed267717f069aa57cb8dce5d2 Mon Sep 17 00:00:00 2001
+From 703b931f295de28361ab2d5b68a39f8c3b0297ed 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] 135+ messages in thread
* patch 'net/enetfec: reject multi-queue configuration' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (103 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix checksum flag handling and error return' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Kevin Traynor
` (27 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0c60dea6e6b1ade68d942b249e460889cda0b85a
Thanks.
Kevin
---
From 0c60dea6e6b1ade68d942b249e460889cda0b85a 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 7d0bacdd7a..77ddc26cbc 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021 NXP
+ * Copyright 2020-2021,2023 NXP
*/
@@ -378,4 +378,9 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
unsigned int dsize_log2 = rte_fls_u64(dsize) - 1;
+ if (queue_idx > 0) {
+ ENETFEC_PMD_ERR("Multi queue not supported");
+ return -EINVAL;
+ }
+
/* Tx deferred start is not supported */
if (tx_conf->tx_deferred_start) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.441556717 +0000
+++ 0106-net-enetfec-reject-multi-queue-configuration.patch 2025-10-31 13:53:52.285288419 +0000
@@ -1 +1 @@
-From b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 Mon Sep 17 00:00:00 2001
+From 0c60dea6e6b1ade68d942b249e460889cda0b85a 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 7d0bacdd7a..77ddc26cbc 100644
@@ -37,2 +38,2 @@
- /* allocate transmit queue */
- txq = rte_zmalloc(NULL, sizeof(*txq), RTE_CACHE_LINE_SIZE);
+ /* Tx deferred start is not supported */
+ if (tx_conf->tx_deferred_start) {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/enetfec: fix memory leak in Rx buffer cleanup' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (104 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: reject multi-queue configuration' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: reject Tx deferred queue' " Kevin Traynor
` (26 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7c3b93183491c79a9a1adf8d665538c7f5f65df2
Thanks.
Kevin
---
From 7c3b93183491c79a9a1adf8d665538c7f5f65df2 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 77ddc26cbc..bb903539e1 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021,2023 NXP
+ * Copyright 2020-2021,2023-2024 NXP
*/
@@ -173,6 +173,8 @@ enet_free_buffers(struct rte_eth_dev *dev)
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);
}
@@ -560,5 +562,5 @@ err_alloc:
}
rte_free(rxq);
- return errno;
+ return -ENOMEM;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.468295243 +0000
+++ 0107-net-enetfec-fix-memory-leak-in-Rx-buffer-cleanup.patch 2025-10-31 13:53:52.285524145 +0000
@@ -1 +1 @@
-From 979d00728b01a77f8f67f46c7cb06e2628542d29 Mon Sep 17 00:00:00 2001
+From 7c3b93183491c79a9a1adf8d665538c7f5f65df2 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 77ddc26cbc..bb903539e1 100644
@@ -40 +41 @@
-@@ -548,5 +550,5 @@ err_alloc:
+@@ -560,5 +562,5 @@ err_alloc:
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/enetfec: reject Tx deferred queue' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (105 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/tap: fix interrupt callback crash after failed start' " Kevin Traynor
` (25 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/06a5873484151eddeca0b0e71bc016cd9cde82de
Thanks.
Kevin
---
From 06a5873484151eddeca0b0e71bc016cd9cde82de 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 bb903539e1..7355bffab3 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -391,4 +391,10 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
}
+ /* 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);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.495096901 +0000
+++ 0108-net-enetfec-reject-Tx-deferred-queue.patch 2025-10-31 13:53:52.286408640 +0000
@@ -1 +1 @@
-From dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 Mon Sep 17 00:00:00 2001
+From 06a5873484151eddeca0b0e71bc016cd9cde82de 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 bb903539e1..7355bffab3 100644
@@ -23 +24 @@
-@@ -385,4 +385,10 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -391,4 +391,10 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/tap: fix interrupt callback crash after failed start' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (106 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/enetfec: reject Tx deferred queue' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ntnic: fix potential format overflow' " Kevin Traynor
` (24 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Robin Jarry; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8afcb7db48833dfd26f9a78f9355a32ca666f757
Thanks.
Kevin
---
From 8afcb7db48833dfd26f9a78f9355a32ca666f757 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 650ddbd706..58d70f7dd6 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -890,6 +890,8 @@ tap_dev_start(struct rte_eth_dev *dev)
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++)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.522904436 +0000
+++ 0109-net-tap-fix-interrupt-callback-crash-after-failed-st.patch 2025-10-31 13:53:52.286524149 +0000
@@ -1 +1 @@
-From c44ed082917316257dbeb2454414932d39f9c321 Mon Sep 17 00:00:00 2001
+From 8afcb7db48833dfd26f9a78f9355a32ca666f757 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c44ed082917316257dbeb2454414932d39f9c321 ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ntnic: fix potential format overflow' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (107 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/tap: fix interrupt callback crash after failed start' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Kevin Traynor
` (23 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Serhii Iliushyk; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/e8db19ca4d93831e6ff5a39bd9315b53950eff57
Thanks.
Kevin
---
From e8db19ca4d93831e6ff5a39bd9315b53950eff57 Mon Sep 17 00:00:00 2001
From: Serhii Iliushyk <sil-plv@napatech.com>
Date: Mon, 20 Oct 2025 18:35:59 +0200
Subject: [PATCH] net/ntnic: fix potential format overflow
[ upstream commit f5f6e545d91875845287f3c2a0b34b22d309028d ]
Use snprintf instead sprintf to avoid format overflow
Fixes: d3dc362770d9 ("net/ntnic: add adapter initialization")
Signed-off-by: Serhii Iliushyk <sil-plv@napatech.com>
---
drivers/net/ntnic/ntnic_ethdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 3c668a41ef..ee9b5a6abb 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -2472,5 +2472,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
int i;
- char name[32];
+ char name[RTE_ETH_NAME_MAX_LEN];
struct pmd_internals *internals = eth_dev->data->dev_private;
@@ -2499,5 +2499,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
for (i = 0; i < n_phy_ports; i++) {
- sprintf(name, "ntnic%d", i);
+ snprintf(name, sizeof(name), "ntnic%d", i);
eth_dev = rte_eth_dev_allocated(name);
if (eth_dev == NULL)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.550905602 +0000
+++ 0110-net-ntnic-fix-potential-format-overflow.patch 2025-10-31 13:53:52.288524155 +0000
@@ -1 +1 @@
-From f5f6e545d91875845287f3c2a0b34b22d309028d Mon Sep 17 00:00:00 2001
+From e8db19ca4d93831e6ff5a39bd9315b53950eff57 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f5f6e545d91875845287f3c2a0b34b22d309028d ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index a867e7b16d..58be82b2d2 100644
+index 3c668a41ef..ee9b5a6abb 100644
@@ -20 +21 @@
-@@ -2614,5 +2614,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
+@@ -2472,5 +2472,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
@@ -27 +28 @@
-@@ -2641,5 +2641,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
+@@ -2499,5 +2499,5 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ena: fix PCI BAR mapping on 64K page size' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (108 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ntnic: fix potential format overflow' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Kevin Traynor
` (22 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a3672a18182b4cc0a9be29ed199ad96c18ffd73a
Thanks.
Kevin
---
From a3672a18182b4cc0a9be29ed199ad96c18ffd73a 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 160aa79137..110213077f 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -10,4 +10,5 @@
#include <rte_net.h>
#include <rte_kvargs.h>
+#include <rte_eal_paging.h>
#include "ena_ethdev.h"
@@ -2267,4 +2268,22 @@ static int ena_init_once(void)
}
+/*
+ * 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_LINE(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)
{
@@ -2311,7 +2330,5 @@ 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_LINE(CRIT, "Failed to access registers BAR(%d)",
@@ -2319,6 +2336,9 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.580251660 +0000
+++ 0111-net-ena-fix-PCI-BAR-mapping-on-64K-page-size.patch 2025-10-31 13:53:52.289524158 +0000
@@ -1 +1 @@
-From c71e3fbee65637084e1e42500e9e6300d50f467b Mon Sep 17 00:00:00 2001
+From a3672a18182b4cc0a9be29ed199ad96c18ffd73a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c71e3fbee65637084e1e42500e9e6300d50f467b ]
+
@@ -27 +28,0 @@
-Cc: stable@dpdk.org
@@ -33,14 +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
-@@ -110,4 +110,5 @@ New Features
-
- * 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(-)
+
@@ -48 +38 @@
-index 5147a754b2..aaa4feb11b 100644
+index 160aa79137..110213077f 100644
@@ -57 +47 @@
-@@ -2365,4 +2366,22 @@ static int ena_init_once(void)
+@@ -2267,4 +2268,22 @@ static int ena_init_once(void)
@@ -80 +70 @@
-@@ -2410,7 +2429,5 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2311,7 +2330,5 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
@@ -89 +79 @@
-@@ -2418,6 +2435,9 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2319,6 +2336,9 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ena/base: fix unsafe memcpy on invalid memory' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (109 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix uninitialized variable' " Kevin Traynor
` (21 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7a28479ec749426cf5f36f6d0dac984b97b26316
Thanks.
Kevin
---
From 7a28479ec749426cf5f36f6d0dac984b97b26316 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 24bad19848..5acea3c4a8 100644
--- a/drivers/net/ena/base/ena_com.c
+++ b/drivers/net/ena/base/ena_com.c
@@ -2330,11 +2330,11 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
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;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.608819340 +0000
+++ 0112-net-ena-base-fix-unsafe-memcpy-on-invalid-memory.patch 2025-10-31 13:53:52.291524164 +0000
@@ -1 +1 @@
-From b70db0912a6a181ecf513a4eef61153d1063c0ae Mon Sep 17 00:00:00 2001
+From 7a28479ec749426cf5f36f6d0dac984b97b26316 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 24bad19848..5acea3c4a8 100644
@@ -24 +25 @@
-@@ -2454,11 +2454,11 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
+@@ -2330,11 +2330,11 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix uninitialized variable' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (110 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: free buffers from error queue' " Kevin Traynor
` (20 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Prashant Gupta; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/2d48b66dbcc895ee8f4f164fb5f2481eee38fcd1
Thanks.
Kevin
---
From 2d48b66dbcc895ee8f4f164fb5f2481eee38fcd1 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 de8893d104..99cf07f245 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1226,4 +1226,5 @@ Potnuri Bharat Teja <bharat@chelsio.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>
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
index 20b37a97bb..b492593837 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
@@ -2,5 +2,5 @@
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2021 NXP
+ * Copyright 2016-2021,2023-2025 NXP
*
*/
@@ -59,4 +59,5 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
}
+ 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;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.637157298 +0000
+++ 0113-net-dpaa2-fix-uninitialized-variable.patch 2025-10-31 13:53:52.293524170 +0000
@@ -1 +1 @@
-From 058043d0590f52dd45555a362d31646c7c3ff943 Mon Sep 17 00:00:00 2001
+From 2d48b66dbcc895ee8f4f164fb5f2481eee38fcd1 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 de8893d104..99cf07f245 100644
@@ -23 +24 @@
-@@ -1267,4 +1267,5 @@ Potnuri Bharat Teja <bharat@chelsio.com>
+@@ -1226,4 +1226,5 @@ Potnuri Bharat Teja <bharat@chelsio.com>
@@ -30 +31 @@
-index b1d473429a..13825046d8 100644
+index 20b37a97bb..b492593837 100644
@@ -36 +37 @@
-- * Copyright 2016-2021,2023-2024 NXP
+- * Copyright 2016-2021 NXP
@@ -40 +41 @@
-@@ -61,4 +61,5 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
+@@ -59,4 +59,5 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: free buffers from error queue' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (111 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/dpaa2: fix uninitialized variable' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Kevin Traynor
` (19 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Prashant Gupta; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0b355d9d42252fb3838fa4041383018212b6eea1
Thanks.
Kevin
---
From 0b355d9d42252fb3838fa4041383018212b6eea1 Mon Sep 17 00:00:00 2001
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Date: Thu, 16 Oct 2025 15:57:52 +0530
Subject: [PATCH] net/dpaa2: free buffers from error queue
[ upstream commit 4f0abf4b7e3e6e213f419c2facc2fbfbf8afb351 ]
Free a packet mbuf back into its original mempool.
Fixes: 4690a6114ff6 ("net/dpaa2: enable error queues optionally")
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
drivers/net/dpaa2/dpaa2_rxtx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index e253bccecd..36ce08ffe2 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -708,4 +708,5 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
DPAA2_GET_FD_OFFSET(fd) + DPAA2_GET_FD_LEN(fd));
+ rte_pktmbuf_free(mbuf);
dq_storage++;
num_rx++;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.664832448 +0000
+++ 0114-net-dpaa2-free-buffers-from-error-queue.patch 2025-10-31 13:53:52.294524173 +0000
@@ -1 +1 @@
-From 4f0abf4b7e3e6e213f419c2facc2fbfbf8afb351 Mon Sep 17 00:00:00 2001
+From 0b355d9d42252fb3838fa4041383018212b6eea1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4f0abf4b7e3e6e213f419c2facc2fbfbf8afb351 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index 5bd377d4e6..656a3a423f 100644
+index e253bccecd..36ce08ffe2 100644
@@ -20 +21 @@
-@@ -709,4 +709,5 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
+@@ -708,4 +708,5 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix L3/L4 checksum results' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (112 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/dpaa2: free buffers from error queue' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: receive packets with additional parse errors' " Kevin Traynor
` (18 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Brick Yang; +Cc: Gagandeep Singh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ba3d5809e8a80dc33e8311409f2eeeb62903ea10
Thanks.
Kevin
---
From ba3d5809e8a80dc33e8311409f2eeeb62903ea10 Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:53 +0530
Subject: [PATCH] net/dpaa2: fix L3/L4 checksum results
[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
Layer3 and layer4 checksum validation and error
status is part of word1 of annotation area, but
driver is looking into wrong word.
This patch fixes the checksum error status in packet
parsing.
Fixes: 94d31549c380 ("net/dpaa2: support Rx checksum offload in slow parsing")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 10 +++++-----
drivers/net/dpaa2/dpaa2_rxtx.c | 16 ++++------------
2 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
index 7e5e499b6a..4f5ac1a481 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
@@ -2,5 +2,5 @@
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016,2019 NXP
+ * Copyright 2016,2019,2022,2024 NXP
*
*/
@@ -299,11 +299,11 @@ struct dpaa2_faead {
#define DPAA2_ETH_FAS_BLE 0x00000010
/* L3 csum validation performed */
-#define DPAA2_ETH_FAS_L3CV 0x00000008
+#define DPAA2_ETH_FAS_L3CV 0x0000000800000000
/* L3 csum error */
-#define DPAA2_ETH_FAS_L3CE 0x00000004
+#define DPAA2_ETH_FAS_L3CE 0x0000000400000000
/* L4 csum validation performed */
-#define DPAA2_ETH_FAS_L4CV 0x00000002
+#define DPAA2_ETH_FAS_L4CV 0x0000000200000000
/* L4 csum error */
-#define DPAA2_ETH_FAS_L4CE 0x00000001
+#define DPAA2_ETH_FAS_L4CE 0x0000000100000000
#ifdef __cplusplus
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index 36ce08ffe2..a88e83998e 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -201,12 +201,8 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
}
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_FIRST_FRAGMENT |
@@ -248,12 +244,8 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
annotation->word4);
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (unlikely(dpaa2_print_parser_result))
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.693562874 +0000
+++ 0115-net-dpaa2-fix-L3-L4-checksum-results.patch 2025-10-31 13:53:52.295524177 +0000
@@ -1 +1 @@
-From 870354264644bc8a2f014571e9a34757258d2ec8 Mon Sep 17 00:00:00 2001
+From ba3d5809e8a80dc33e8311409f2eeeb62903ea10 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index d156b07087..a670098958 100644
+index 7e5e499b6a..4f5ac1a481 100644
@@ -33 +34 @@
-@@ -305,11 +305,11 @@ struct dpaa2_faead {
+@@ -299,11 +299,11 @@ struct dpaa2_faead {
@@ -50 +51 @@
-index 656a3a423f..da0c06caad 100644
+index 36ce08ffe2..a88e83998e 100644
@@ -53 +54 @@
-@@ -202,12 +202,8 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
+@@ -201,12 +201,8 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
@@ -68 +69 @@
-@@ -249,12 +245,8 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
+@@ -248,12 +244,8 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: receive packets with additional parse errors' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (113 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix error frame dump' " Kevin Traynor
` (17 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Brick Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/19e4d4f4a980d543bb9c2ecdbc420516d034d786
Thanks.
Kevin
---
From 19e4d4f4a980d543bb9c2ecdbc420516d034d786 Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:54 +0530
Subject: [PATCH] net/dpaa2: receive packets with additional parse errors
[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
Also receive packets with HW parser length errors.
Thus this option allows HW to not drop packets for any kind of parser
errors.
Fixes: 4690a6114ff6 ("net/dpaa2: enable error queues optionally")
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 528b2d305d..722bb6fa8e 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1254,5 +1254,5 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
/* if packet with parse error are not to be dropped */
- err_cfg.errors |= DPNI_ERROR_PHE;
+ err_cfg.errors |= DPNI_ERROR_PHE | DPNI_ERROR_BLE;
err_cfg.error_action = DPNI_ERROR_ACTION_CONTINUE;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.721377646 +0000
+++ 0116-net-dpaa2-receive-packets-with-additional-parse-erro.patch 2025-10-31 13:53:52.297524183 +0000
@@ -1 +1 @@
-From e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 Mon Sep 17 00:00:00 2001
+From 19e4d4f4a980d543bb9c2ecdbc420516d034d786 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 41678ce09b..0fd577c448 100644
+index 528b2d305d..722bb6fa8e 100644
@@ -22 +23 @@
-@@ -1241,5 +1241,5 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
+@@ -1254,5 +1254,5 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix error frame dump' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (114 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/dpaa2: receive packets with additional parse errors' " Kevin Traynor
@ 2025-10-31 14:33 ` Kevin Traynor
2025-10-31 14:34 ` patch 'net/dpaa2: fix flow rule resizing' " Kevin Traynor
` (16 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:33 UTC (permalink / raw)
To: Jun Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/98e50d81559c26e5d9e322f9059523cb7a014f25
Thanks.
Kevin
---
From 98e50d81559c26e5d9e322f9059523cb7a014f25 Mon Sep 17 00:00:00 2001
From: Jun Yang <jun.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:55 +0530
Subject: [PATCH] net/dpaa2: fix error frame dump
[ upstream commit f9465bdcef9db163190f05c9ba80b8b9a205c81b ]
Dump error frame payload according to mbuf format.
Meanwhile, support dumping parser result of error frame.
Fixes: 4690a6114ff6 ("net/dpaa2: enable error queues optionally")
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_rxtx.c | 38 ++++++++++++++++++++++++++++------
1 file changed, 32 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index a88e83998e..e2c128e799 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -634,7 +634,9 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
struct qbman_pull_desc pulldesc;
struct rte_eth_dev_data *eth_data = dpaa2_q->eth_data;
- uint32_t lcore_id = rte_lcore_id();
+ uint32_t lcore_id = rte_lcore_id(), i = 0;
void *v_addr, *hw_annot_addr;
struct dpaa2_fas *fas;
+ struct rte_mbuf *mbuf;
+ char title[32];
if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
@@ -692,11 +694,35 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
fas = hw_annot_addr;
- DPAA2_PMD_ERR("[%d] error packet on port[%d]:"
- " fd_off: %d, fd_err: %x, fas_status: %x",
- rte_lcore_id(), eth_data->port_id,
+ if (DPAA2_FD_GET_FORMAT(fd) == qbman_fd_sg)
+ mbuf = eth_sg_fd_to_mbuf(fd, eth_data->port_id);
+ else
+ mbuf = eth_fd_to_mbuf(fd, eth_data->port_id);
+
+ if (!dpaa2_print_parser_result) {
+ /** Don't print parse result twice.*/
+ dpaa2_print_parse_result(hw_annot_addr);
+ }
+
+ DPAA2_PMD_ERR("Err pkt on port[%d]:", eth_data->port_id);
+ DPAA2_PMD_ERR("FD offset: %d, FD err: %x, FAS status: %x",
DPAA2_GET_FD_OFFSET(fd), DPAA2_GET_FD_ERR(fd),
fas->status);
- rte_hexdump(stderr, "Error packet", v_addr,
- DPAA2_GET_FD_OFFSET(fd) + DPAA2_GET_FD_LEN(fd));
+
+ if (mbuf)
+ __rte_mbuf_sanity_check(mbuf, 1);
+ if (mbuf->nb_segs > 1) {
+ while (mbuf) {
+ sprintf(title, "Payload seg[%d]", i);
+ rte_hexdump(stderr, title,
+ (char *)mbuf->buf_addr + mbuf->data_off,
+ mbuf->data_len);
+ mbuf = mbuf->next;
+ i++;
+ }
+ } else {
+ rte_hexdump(stderr, "Payload",
+ (char *)mbuf->buf_addr + mbuf->data_off,
+ mbuf->data_len);
+ }
rte_pktmbuf_free(mbuf);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.748891664 +0000
+++ 0117-net-dpaa2-fix-error-frame-dump.patch 2025-10-31 13:53:52.298524186 +0000
@@ -1 +1 @@
-From f9465bdcef9db163190f05c9ba80b8b9a205c81b Mon Sep 17 00:00:00 2001
+From 98e50d81559c26e5d9e322f9059523cb7a014f25 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f9465bdcef9db163190f05c9ba80b8b9a205c81b ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index da0c06caad..e57ec2057c 100644
+index a88e83998e..e2c128e799 100644
@@ -21 +22 @@
-@@ -635,7 +635,9 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
+@@ -634,7 +634,9 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
@@ -32 +33 @@
-@@ -693,11 +695,35 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
+@@ -692,11 +694,35 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/dpaa2: fix flow rule resizing' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (115 preceding siblings ...)
2025-10-31 14:33 ` patch 'net/dpaa2: fix error frame dump' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/qat: fix ECDH' " Kevin Traynor
` (15 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Jun Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/fcc33d7ad35889c6f80315704bd4fa87e67b1238
Thanks.
Kevin
---
From fcc33d7ad35889c6f80315704bd4fa87e67b1238 Mon Sep 17 00:00:00 2001
From: Jun Yang <jun.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:56 +0530
Subject: [PATCH] net/dpaa2: fix flow rule resizing
[ upstream commit 3904f568b8e9987c82a4123776a62e4ca9857f1d ]
Appending new extract need resize the flow's rule.
The rule's size should start from new extract's position plus
it's size unless the position is less than rule's original size.
Fixes: 56c1817d532e ("net/dpaa2: refactor flow engine")
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_flow.c | 123 ++++++++++++++++++++++++++-------
1 file changed, 97 insertions(+), 26 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c
index c94eb51ba5..810b6fae4b 100644
--- a/drivers/net/dpaa2/dpaa2_flow.c
+++ b/drivers/net/dpaa2/dpaa2_flow.c
@@ -631,12 +631,9 @@ dpaa2_flow_rule_insert_hole(struct dpaa2_dev_flow *flow,
enum dpaa2_flow_dist_type dist_type)
{
- int end;
-
if (dist_type & DPAA2_FLOW_QOS_TYPE) {
- end = flow->qos_rule_size;
- if (end > offset) {
+ if (offset < flow->qos_rule_size) {
memmove(flow->qos_key_addr + offset + size,
flow->qos_key_addr + offset,
- end - offset);
+ flow->qos_rule_size - offset);
memset(flow->qos_key_addr + offset,
0, size);
@@ -644,17 +641,18 @@ dpaa2_flow_rule_insert_hole(struct dpaa2_dev_flow *flow,
memmove(flow->qos_mask_addr + offset + size,
flow->qos_mask_addr + offset,
- end - offset);
+ flow->qos_rule_size - offset);
memset(flow->qos_mask_addr + offset,
0, size);
+ flow->qos_rule_size += size;
+ } else {
+ flow->qos_rule_size = offset + size;
}
- flow->qos_rule_size += size;
}
if (dist_type & DPAA2_FLOW_FS_TYPE) {
- end = flow->fs_rule_size;
- if (end > offset) {
+ if (offset < flow->fs_rule_size) {
memmove(flow->fs_key_addr + offset + size,
flow->fs_key_addr + offset,
- end - offset);
+ flow->fs_rule_size - offset);
memset(flow->fs_key_addr + offset,
0, size);
@@ -662,9 +660,11 @@ dpaa2_flow_rule_insert_hole(struct dpaa2_dev_flow *flow,
memmove(flow->fs_mask_addr + offset + size,
flow->fs_mask_addr + offset,
- end - offset);
+ flow->fs_rule_size - offset);
memset(flow->fs_mask_addr + offset,
0, size);
+ flow->fs_rule_size += size;
+ } else {
+ flow->fs_rule_size = offset + size;
}
- flow->fs_rule_size += size;
}
@@ -1489,6 +1489,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
if (!(*key_addr) &&
- key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->qos_rule_size++;
+ key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT &&
+ offset >= flow->qos_rule_size)
+ flow->qos_rule_size = offset + sizeof(uint8_t);
*key_addr |= (1 << faf_bit_in_byte);
@@ -1511,6 +1512,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
if (!(*key_addr) &&
- key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->fs_rule_size++;
+ key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT &&
+ offset >= flow->fs_rule_size)
+ flow->fs_rule_size = offset + sizeof(uint8_t);
*key_addr |= (1 << faf_bit_in_byte);
@@ -1530,4 +1532,5 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
int offset;
uint32_t pr_field = pr_offset << 16 | pr_size;
+ char offset_info[64], size_info[64], rule_size_info[64];
offset = dpaa2_flow_extract_key_offset(key_profile,
@@ -1538,17 +1541,41 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
return -EINVAL;
}
+ sprintf(offset_info, "offset(%d)", offset);
+ sprintf(size_info, "size(%d)", pr_size);
if (dist_type & DPAA2_FLOW_QOS_TYPE) {
+ sprintf(rule_size_info, "qos rule size(%d)",
+ flow->qos_rule_size);
memcpy((flow->qos_key_addr + offset), key, pr_size);
memcpy((flow->qos_mask_addr + offset), mask, pr_size);
- if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->qos_rule_size = offset + pr_size;
+ if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT) {
+ if (offset >= flow->qos_rule_size) {
+ flow->qos_rule_size = offset + pr_size;
+ } else if ((offset + pr_size) > flow->qos_rule_size) {
+ DPAA2_PMD_ERR("%s < %s, but %s + %s > %s",
+ offset_info, rule_size_info,
+ offset_info, size_info,
+ rule_size_info);
+ return -EINVAL;
+ }
+ }
}
if (dist_type & DPAA2_FLOW_FS_TYPE) {
+ sprintf(rule_size_info, "fs rule size(%d)",
+ flow->fs_rule_size);
memcpy((flow->fs_key_addr + offset), key, pr_size);
memcpy((flow->fs_mask_addr + offset), mask, pr_size);
- if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->fs_rule_size = offset + pr_size;
+ if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT) {
+ if (offset >= flow->fs_rule_size) {
+ flow->fs_rule_size = offset + pr_size;
+ } else if ((offset + pr_size) > flow->fs_rule_size) {
+ DPAA2_PMD_ERR("%s < %s, but %s + %s > %s",
+ offset_info, rule_size_info,
+ offset_info, size_info,
+ rule_size_info);
+ return -EINVAL;
+ }
+ }
}
@@ -1564,4 +1591,5 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
{
int offset;
+ char offset_info[64], size_info[64], rule_size_info[64];
if (dpaa2_flow_ip_address_extract(prot, field)) {
@@ -1578,17 +1606,39 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
return -EINVAL;
}
+ sprintf(offset_info, "offset(%d)", offset);
+ sprintf(size_info, "size(%d)", size);
if (dist_type & DPAA2_FLOW_QOS_TYPE) {
+ sprintf(rule_size_info, "qos rule size(%d)",
+ flow->qos_rule_size);
memcpy((flow->qos_key_addr + offset), key, size);
memcpy((flow->qos_mask_addr + offset), mask, size);
- if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->qos_rule_size = offset + size;
+ if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT) {
+ if (offset >= flow->qos_rule_size) {
+ flow->qos_rule_size = offset + size;
+ } else if ((offset + size) > flow->qos_rule_size) {
+ DPAA2_PMD_ERR("%s: %s < %s, but %s + %s > %s",
+ __func__, offset_info, rule_size_info,
+ offset_info, size_info, rule_size_info);
+ return -EINVAL;
+ }
+ }
}
if (dist_type & DPAA2_FLOW_FS_TYPE) {
+ sprintf(rule_size_info, "fs rule size(%d)",
+ flow->fs_rule_size);
memcpy((flow->fs_key_addr + offset), key, size);
memcpy((flow->fs_mask_addr + offset), mask, size);
- if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT)
- flow->fs_rule_size = offset + size;
+ if (key_profile->ip_addr_type == IP_NONE_ADDR_EXTRACT) {
+ if (offset >= flow->fs_rule_size) {
+ flow->fs_rule_size = offset + size;
+ } else if ((offset + size) > flow->fs_rule_size) {
+ DPAA2_PMD_ERR("%s: %s < %s, but %s + %s > %s",
+ __func__, offset_info, rule_size_info,
+ offset_info, size_info, rule_size_info);
+ return -EINVAL;
+ }
+ }
}
@@ -1606,4 +1656,5 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
DPAA2_FLOW_MAX_KEY_SIZE : size;
int offset, field;
+ char offset_info[64], size_info[64], rule_size_info[64];
field = extract_offset << DPAA2_FLOW_RAW_OFFSET_FIELD_SHIFT;
@@ -1616,15 +1667,35 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
return -EINVAL;
}
+ sprintf(offset_info, "offset(%d)", offset);
+ sprintf(size_info, "size(%d)", size);
if (dist_type & DPAA2_FLOW_QOS_TYPE) {
+ sprintf(rule_size_info, "qos rule size(%d)",
+ flow->qos_rule_size);
memcpy((flow->qos_key_addr + offset), key, size);
memcpy((flow->qos_mask_addr + offset), mask, size);
- flow->qos_rule_size = offset + size;
+ if (offset >= flow->qos_rule_size) {
+ flow->qos_rule_size = offset + size;
+ } else if ((offset + size) > flow->qos_rule_size) {
+ DPAA2_PMD_ERR("%s: %s < %s, but %s + %s > %s",
+ __func__, offset_info, rule_size_info,
+ offset_info, size_info, rule_size_info);
+ return -EINVAL;
+ }
}
if (dist_type & DPAA2_FLOW_FS_TYPE) {
+ sprintf(rule_size_info, "fs rule size(%d)",
+ flow->fs_rule_size);
memcpy((flow->fs_key_addr + offset), key, size);
memcpy((flow->fs_mask_addr + offset), mask, size);
- flow->fs_rule_size = offset + size;
+ if (offset >= flow->fs_rule_size) {
+ flow->fs_rule_size = offset + size;
+ } else if ((offset + size) > flow->fs_rule_size) {
+ DPAA2_PMD_ERR("%s: %s < %s, but %s + %s > %s",
+ __func__, offset_info, rule_size_info,
+ offset_info, size_info, rule_size_info);
+ return -EINVAL;
+ }
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.778674700 +0000
+++ 0118-net-dpaa2-fix-flow-rule-resizing.patch 2025-10-31 13:53:52.300524192 +0000
@@ -1 +1 @@
-From 3904f568b8e9987c82a4123776a62e4ca9857f1d Mon Sep 17 00:00:00 2001
+From fcc33d7ad35889c6f80315704bd4fa87e67b1238 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3904f568b8e9987c82a4123776a62e4ca9857f1d ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 299c50dcdf..2e44bff766 100644
+index c94eb51ba5..810b6fae4b 100644
@@ -75 +76 @@
-@@ -1486,6 +1486,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
+@@ -1489,6 +1489,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
@@ -85 +86 @@
-@@ -1508,6 +1509,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
+@@ -1511,6 +1512,7 @@ dpaa2_flow_faf_add_rule(struct dpaa2_dev_priv *priv,
@@ -95 +96 @@
-@@ -1527,4 +1529,5 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1530,4 +1532,5 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
@@ -101 +102 @@
-@@ -1535,17 +1538,41 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1538,17 +1541,41 @@ dpaa2_flow_pr_rule_data_set(struct dpaa2_dev_flow *flow,
@@ -147 +148 @@
-@@ -1561,4 +1588,5 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1564,4 +1591,5 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
@@ -153 +154 @@
-@@ -1575,17 +1603,39 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1578,17 +1606,39 @@ dpaa2_flow_hdr_rule_data_set(struct dpaa2_dev_flow *flow,
@@ -197 +198 @@
-@@ -1603,4 +1653,5 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1606,4 +1656,5 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
@@ -203 +204 @@
-@@ -1613,15 +1664,35 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
+@@ -1616,15 +1667,35 @@ dpaa2_flow_raw_rule_data_set(struct dpaa2_dev_flow *flow,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'crypto/qat: fix ECDH' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (116 preceding siblings ...)
2025-10-31 14:34 ` patch 'net/dpaa2: fix flow rule resizing' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/qat: fix source buffer alignment' " Kevin Traynor
` (14 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4267e03a57b701dd426cb4cf8538a66845798300
Thanks.
Kevin
---
From 4267e03a57b701dd426cb4cf8538a66845798300 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Wed, 27 Aug 2025 09:23:58 +0000
Subject: [PATCH] crypto/qat: fix ECDH
[ upstream commit 25ef596203a94c79b1c9fa8504839c3f41da1a57 ]
Read EC parameters from the xform, not from the asym_op,
where they may not be set.
Fixes: 305e1f856f0c ("crypto/qat: add ECDH key exchange algorithm")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
drivers/crypto/qat/qat_asym.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.c
index f5b56b2f71..dff7efbbff 100644
--- a/drivers/crypto/qat/qat_asym.c
+++ b/drivers/crypto/qat/qat_asym.c
@@ -802,11 +802,11 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) {
- SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);
+ SET_PKE_LN(xform->ec.pkey, qat_func_alignsize, 0);
SET_PKE_LN_EC(curve[curve_id], x, 1);
SET_PKE_LN_EC(curve[curve_id], y, 2);
} else {
- SET_PKE_LN(asym_op->ecdh.priv_key, qat_func_alignsize, 0);
- SET_PKE_LN(asym_op->ecdh.pub_key.x, qat_func_alignsize, 1);
- SET_PKE_LN(asym_op->ecdh.pub_key.y, qat_func_alignsize, 2);
+ SET_PKE_LN(xform->ec.pkey, qat_func_alignsize, 0);
+ SET_PKE_LN(xform->ec.q.x, qat_func_alignsize, 1);
+ SET_PKE_LN(xform->ec.q.y, qat_func_alignsize, 2);
}
SET_PKE_LN_EC(curve[curve_id], a, 3);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.806440211 +0000
+++ 0119-crypto-qat-fix-ECDH.patch 2025-10-31 13:53:52.301610602 +0000
@@ -1 +1 @@
-From 25ef596203a94c79b1c9fa8504839c3f41da1a57 Mon Sep 17 00:00:00 2001
+From 4267e03a57b701dd426cb4cf8538a66845798300 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 25ef596203a94c79b1c9fa8504839c3f41da1a57 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 80f7e5cda2..8808337551 100644
+index f5b56b2f71..dff7efbbff 100644
@@ -22 +23 @@
-@@ -799,11 +799,11 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
+@@ -802,11 +802,11 @@ ecdh_set_input(struct icp_qat_fw_pke_request *qat_req,
@@ -29 +30 @@
- } else if (asym_op->ecdh.ke_type == RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) {
+ } else {
@@ -36,2 +37,2 @@
- } else {
- return -EINVAL;
+ }
+ SET_PKE_LN_EC(curve[curve_id], a, 3);
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'crypto/qat: fix source buffer alignment' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (117 preceding siblings ...)
2025-10-31 14:34 ` patch 'crypto/qat: fix ECDH' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/cnxk: refactor RSA verification' " Kevin Traynor
` (13 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d1502e8cc8bc6815ff4b952e4111a6334125a14c
Thanks.
Kevin
---
From d1502e8cc8bc6815ff4b952e4111a6334125a14c Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Wed, 6 Aug 2025 14:48:32 +0000
Subject: [PATCH] crypto/qat: fix source buffer alignment
[ upstream commit 253174309ff7abf9eaba58d1bccf90cca7e6d215 ]
Fix performance regression resulting from using non cache-aligned
source buffers when using cryptodev API.
Fixes: fb3b9f492205 ("crypto/qat: rework burst data path")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c | 14 ++++++------
drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c | 6 ++---
drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 21 ++++++++++++++++-
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c | 24 ++++++++++----------
4 files changed, 42 insertions(+), 23 deletions(-)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
index e677fde393..4a8e98f52e 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
@@ -453,5 +453,5 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -497,5 +497,5 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -603,5 +603,5 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -662,5 +662,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
@@ -716,5 +716,5 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -771,10 +771,10 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ vec->dest_sgl[i].vec, vec->dest_sgl[i].num, NULL, NULL);
} else {
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
index 638da1a173..f42ce7c178 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
@@ -220,5 +220,5 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(qat_req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -377,5 +377,5 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -436,5 +436,5 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
index 846636f57d..2397620eec 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
@@ -431,5 +431,6 @@ qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
void *opaque, struct qat_sym_op_cookie *cookie,
struct rte_crypto_vec *src_vec, uint16_t n_src,
- struct rte_crypto_vec *dst_vec, uint16_t n_dst)
+ struct rte_crypto_vec *dst_vec, uint16_t n_dst,
+ union rte_crypto_sym_ofs *ofs, struct rte_crypto_op *op)
{
struct qat_sgl *list;
@@ -503,4 +504,22 @@ qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
}
+ /* For crypto API only try to align the in-place buffers*/
+ if (op != NULL && likely(n_dst == 0)) {
+ uint16_t offset = src_data_start & RTE_CACHE_LINE_MASK;
+ if (offset) {
+ rte_iova_t buff_addr = rte_mbuf_iova_get(op->sym->m_src);
+ /* make sure src_data_start is still within the buffer */
+ if (src_data_start - offset >= buff_addr) {
+ src_data_start -= offset;
+ dst_data_start = src_data_start;
+ ofs->ofs.auth.head += offset;
+ ofs->ofs.cipher.head += offset;
+ tl_src += offset;
+ total_len_src = tl_src;
+ total_len_dst = tl_src;
+ }
+ }
+ }
+
req->comn_mid.src_data_addr = src_data_start;
req->comn_mid.dest_data_addr = dst_data_start;
diff --git a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
index 561166203c..f740fa8cd7 100644
--- a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
+++ b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
@@ -243,5 +243,5 @@ qat_sym_build_op_cipher_gen1(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -298,5 +298,5 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -346,5 +346,5 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -391,5 +391,5 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@ -524,5 +524,5 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -586,5 +586,5 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
@@ -641,5 +641,5 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -711,5 +711,5 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
@@ -771,5 +771,5 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -844,5 +844,5 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
@@ -911,5 +911,5 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -970,5 +970,5 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.834850236 +0000
+++ 0120-crypto-qat-fix-source-buffer-alignment.patch 2025-10-31 13:53:52.303524202 +0000
@@ -1 +1 @@
-From 253174309ff7abf9eaba58d1bccf90cca7e6d215 Mon Sep 17 00:00:00 2001
+From d1502e8cc8bc6815ff4b952e4111a6334125a14c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 253174309ff7abf9eaba58d1bccf90cca7e6d215 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 0dcb5a7cb4..c196cf3cdb 100644
+index e677fde393..4a8e98f52e 100644
@@ -25 +26 @@
-@@ -423,5 +423,5 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
+@@ -453,5 +453,5 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
@@ -32 +33 @@
-@@ -467,5 +467,5 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
+@@ -497,5 +497,5 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
@@ -39 +40 @@
-@@ -565,5 +565,5 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -603,5 +603,5 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -46 +47 @@
-@@ -624,5 +624,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -662,5 +662,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -53 +54 @@
-@@ -678,5 +678,5 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -716,5 +716,5 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -60 +61 @@
-@@ -733,10 +733,10 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -771,10 +771,10 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -74 +75 @@
-index 843580af72..82c5a40501 100644
+index 638da1a173..f42ce7c178 100644
@@ -77 +78 @@
-@@ -290,5 +290,5 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
+@@ -220,5 +220,5 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
@@ -84 +85 @@
-@@ -447,5 +447,5 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
+@@ -377,5 +377,5 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
@@ -91 +92 @@
-@@ -506,5 +506,5 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
+@@ -436,5 +436,5 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
@@ -99 +100 @@
-index 1f19c69f88..67dc889b50 100644
+index 846636f57d..2397620eec 100644
@@ -134 +135 @@
-index 8cb85fd8df..6da0f6c645 100644
+index 561166203c..f740fa8cd7 100644
@@ -144 +145 @@
-@@ -295,5 +295,5 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -298,5 +298,5 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -151 +152 @@
-@@ -340,5 +340,5 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -346,5 +346,5 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -158 +159 @@
-@@ -385,5 +385,5 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -391,5 +391,5 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -165 +166 @@
-@@ -513,5 +513,5 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -524,5 +524,5 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -172 +173 @@
-@@ -572,5 +572,5 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -586,5 +586,5 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -179 +180 @@
-@@ -624,5 +624,5 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -641,5 +641,5 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -186 +187 @@
-@@ -691,5 +691,5 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -711,5 +711,5 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -193 +194 @@
-@@ -748,5 +748,5 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -771,5 +771,5 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -200 +201 @@
-@@ -816,5 +816,5 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -844,5 +844,5 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -207 +208 @@
-@@ -878,5 +878,5 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -911,5 +911,5 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -214 +215 @@
-@@ -937,5 +937,5 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -970,5 +970,5 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'crypto/cnxk: refactor RSA verification' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (118 preceding siblings ...)
2025-10-31 14:34 ` patch 'crypto/qat: fix source buffer alignment' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'test/crypto: fix mbuf handling' " Kevin Traynor
` (12 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Sucharitha Sarananaga; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/534942279e1b955f2321d84f5102be9642ab33e6
Thanks.
Kevin
---
From 534942279e1b955f2321d84f5102be9642ab33e6 Mon Sep 17 00:00:00 2001
From: Sucharitha Sarananaga <ssarananaga@marvell.com>
Date: Mon, 29 Sep 2025 15:13:49 +0530
Subject: [PATCH] crypto/cnxk: refactor RSA verification
[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
This patch avoid copying the decrypted message into
the signature buffer, which is actually an input to the
verify operation. This prevents overwriting the input
buffer unnecessarily.
Fixes: 6661bedf1605 ("crypto/cnxk: add asymmetric datapath")
Signed-off-by: Sucharitha Sarananaga <ssarananaga@marvell.com>
---
drivers/crypto/cnxk/cnxk_ae.h | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index 8508ab8736..912a2a9496 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -1593,18 +1593,15 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
if (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
rsa->sign.length = rsa_ctx->n.length;
- memcpy(rsa->sign.data, rptr, rsa->sign.length);
+ if (memcmp(rptr, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
} else {
/* Get length of signed output */
- rsa->sign.length =
- rte_cpu_to_be_16(*((uint16_t *)rptr));
+ rsa->sign.length = rte_cpu_to_be_16(*((uint16_t *)rptr));
/*
* Offset output data pointer by length field
- * (2 bytes) and copy signed data.
+ * (2 bytes) and compare signed data.
*/
- memcpy(rsa->sign.data, rptr + 2, rsa->sign.length);
- }
- if (memcmp(rsa->sign.data, rsa->message.data,
- rsa->message.length)) {
- cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
+ if (memcmp(rptr + 2, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
}
break;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.862081608 +0000
+++ 0121-crypto-cnxk-refactor-RSA-verification.patch 2025-10-31 13:53:52.304601452 +0000
@@ -1 +1 @@
-From dfd038b97ec3d173ded0f985df39301b7c7662f2 Mon Sep 17 00:00:00 2001
+From 534942279e1b955f2321d84f5102be9642ab33e6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/crypto: fix mbuf handling' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (119 preceding siblings ...)
2025-10-31 14:34 ` patch 'crypto/cnxk: refactor RSA verification' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Kevin Traynor
` (11 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c887c7dffa80bd217098fc6fab1e7e0f25f107a5
Thanks.
Kevin
---
From c887c7dffa80bd217098fc6fab1e7e0f25f107a5 Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Tue, 23 Sep 2025 14:22:54 +0000
Subject: [PATCH] test/crypto: fix mbuf handling
[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
This patch resolves the following mbuf sanity check errors.
- updating nb_segs and pkt_len in the head mbuf after
freeing intermediate nodes in the chain.
- fix incorrect usage of rte_pktmbuf_append by ensuring
the head mbuf is passed instead of an intermediate
node, allowing proper tail detection and metadata
update.
Fixes: dc3f6c5347b2 ("test/crypto: fix wireless auth digest segment")
Fixes: 43220096d66a ("test/crypto: add PDCP cases for scatter gather")
Fixes: dcdd01691f39 ("test/crypto: add GMAC SGL")
Fixes: f3dbf94be60c ("app/test: check SGL on QAT")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
app/test/test_cryptodev.c | 59 ++++++++++++++++++++++++++-------------
1 file changed, 40 insertions(+), 19 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 8a175b9e70..540373e452 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3460,4 +3460,6 @@ create_wireless_algo_auth_cipher_operation(
struct rte_mbuf *sgl_buf = (op_mode == IN_PLACE ?
sym_op->m_src : sym_op->m_dst);
+ struct rte_mbuf *sgl_buf_head = sgl_buf;
+
while (remaining_off >= rte_pktmbuf_data_len(sgl_buf)) {
remaining_off -= rte_pktmbuf_data_len(sgl_buf);
@@ -3467,9 +3469,16 @@ create_wireless_algo_auth_cipher_operation(
/* The last segment should be large enough to hold full digest */
if (sgl_buf->data_len < auth_tag_len) {
- rte_pktmbuf_free(sgl_buf->next);
- sgl_buf->next = NULL;
- TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(sgl_buf,
- auth_tag_len - sgl_buf->data_len),
- "No room to append auth tag");
+ uint16_t next_data_len = 0;
+ if (sgl_buf->next != NULL) {
+ next_data_len = sgl_buf->next->data_len;
+
+ rte_pktmbuf_free(sgl_buf->next);
+ sgl_buf->next = NULL;
+ sgl_buf_head->nb_segs -= 1;
+ sgl_buf_head->pkt_len -= next_data_len;
+ }
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(
+ sgl_buf_head, auth_tag_len - sgl_buf->data_len),
+ "No room to append auth tag");
}
@@ -9767,9 +9776,11 @@ test_pdcp_proto_SGL(int i, int oop,
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(ut_params->obuf, "Output buffer not initialized");
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, input_vec + trn_data, to_trn);
@@ -9800,5 +9811,5 @@ test_pdcp_proto_SGL(int i, int oop,
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
@@ -15872,13 +15883,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
rte_pktmbuf_tailroom(buf));
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
to_trn);
trn_data += to_trn;
- if (trn_data == tdata->plaintext.len)
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ if (trn_data == tdata->plaintext.len) {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->gmac_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append digest data");
+ }
}
ut_params->ibuf->nb_segs = segs;
@@ -17177,9 +17191,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
@@ -17188,10 +17203,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
if (trn_data == tdata->plaintext.len) {
if (oop) {
- if (!fragsz_oop)
- digest_mem = rte_pktmbuf_append(buf_oop,
+ if (!fragsz_oop) {
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
- } else
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
+ } else {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
}
}
@@ -17228,14 +17247,16 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
buf_last_oop = buf_oop->next =
rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ TEST_ASSERT_NOT_NULL(buf_oop->next, "Unexpected end of chain");
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
if (trn_data == tdata->plaintext.len) {
- digest_mem = rte_pktmbuf_append(buf_oop,
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
}
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.898071652 +0000
+++ 0122-test-crypto-fix-mbuf-handling.patch 2025-10-31 13:53:52.312524230 +0000
@@ -1 +1 @@
-From 1ff54c055d95736aae05a40b361427215c318cc1 Mon Sep 17 00:00:00 2001
+From c887c7dffa80bd217098fc6fab1e7e0f25f107a5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 5229ac2bf6..f092f608a9 100644
+index 8a175b9e70..540373e452 100644
@@ -30 +31 @@
-@@ -3489,4 +3489,6 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3460,4 +3460,6 @@ create_wireless_algo_auth_cipher_operation(
@@ -37 +38 @@
-@@ -3496,9 +3498,16 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3467,9 +3469,16 @@ create_wireless_algo_auth_cipher_operation(
@@ -59 +60 @@
-@@ -9796,9 +9805,11 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -9767,9 +9776,11 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -73 +74 @@
-@@ -9829,5 +9840,5 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -9800,5 +9811,5 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -80 +81 @@
-@@ -15917,13 +15928,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
+@@ -15872,13 +15883,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
@@ -100 +101 @@
-@@ -17224,9 +17238,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -17177,9 +17191,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
@@ -113 +114 @@
-@@ -17235,10 +17250,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -17188,10 +17203,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
@@ -132 +133 @@
-@@ -17275,14 +17294,16 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -17228,14 +17247,16 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'app/crypto-perf: fix plaintext size exceeds buffer size' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (120 preceding siblings ...)
2025-10-31 14:34 ` patch 'test/crypto: fix mbuf handling' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'test/crypto: fix vector initialization' " Kevin Traynor
` (10 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Shani Peretz; +Cc: Kai Ji, Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/76f76023a939629285d357bbe3b786138b6ae4b5
Thanks.
Kevin
---
From 76f76023a939629285d357bbe3b786138b6ae4b5 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Mon, 25 Aug 2025 10:14:50 +0300
Subject: [PATCH] app/crypto-perf: fix plaintext size exceeds buffer size
[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
When test vector plaintext exceeds buffer size, only the first
max_buffer_size bytes are processed, causing incorrect digest
verification (computed vs expected mismatch).
This patch fixes this issue by checking that the plaintext size is
larger than the buffer size and returns an error with a log.
Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Kai Ji <kai.ji@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
.../cperf_test_vector_parsing.c | 47 +++++++++++--------
1 file changed, 27 insertions(+), 20 deletions(-)
diff --git a/app/test-crypto-perf/cperf_test_vector_parsing.c b/app/test-crypto-perf/cperf_test_vector_parsing.c
index 737d61d4af..5665fb425b 100644
--- a/app/test-crypto-perf/cperf_test_vector_parsing.c
+++ b/app/test-crypto-perf/cperf_test_vector_parsing.c
@@ -309,10 +309,17 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
rte_free(vector->plaintext.data);
vector->plaintext.data = data;
+
+ if (opts->test == CPERF_TEST_TYPE_VERIFY && data_length > opts->max_buffer_size) {
+ printf("Global plaintext (%u) larger than buffer_sz (%u)\n",
+ data_length, opts->max_buffer_size);
+ return -1;
+ }
+
if (tc_found)
vector->plaintext.length = data_length;
else {
if (opts->max_buffer_size > data_length) {
- printf("Global plaintext shorter than "
- "buffer_sz\n");
+ printf("Global plaintext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
@@ -327,6 +334,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->cipher_key_sz > data_length) {
- printf("Global cipher_key shorter than "
- "cipher_key_sz\n");
+ printf("Global cipher_key (%u) shorter than "
+ "cipher_key_sz (%u)\n", data_length, opts->cipher_key_sz);
return -1;
}
@@ -341,6 +348,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->auth_key_sz > data_length) {
- printf("Global auth_key shorter than "
- "auth_key_sz\n");
+ printf("Global auth_key (%u) shorter than "
+ "auth_key_sz (%u)\n", data_length, opts->auth_key_sz);
return -1;
}
@@ -355,6 +362,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->aead_key_sz > data_length) {
- printf("Global aead_key shorter than "
- "aead_key_sz\n");
+ printf("Global aead_key (%u) shorter than "
+ "aead_key_sz (%u)\n", data_length, opts->aead_key_sz);
return -1;
}
@@ -369,6 +376,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->cipher_iv_sz > data_length) {
- printf("Global cipher iv shorter than "
- "cipher_iv_sz\n");
+ printf("Global cipher iv (%u) shorter than "
+ "cipher_iv_sz (%u)\n", data_length, opts->cipher_iv_sz);
return -1;
}
@@ -383,6 +390,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->auth_iv_sz > data_length) {
- printf("Global auth iv shorter than "
- "auth_iv_sz\n");
+ printf("Global auth iv (%u) shorter than "
+ "auth_iv_sz (%u)\n", data_length, opts->auth_iv_sz);
return -1;
}
@@ -397,6 +404,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->aead_iv_sz > data_length) {
- printf("Global aead iv shorter than "
- "aead_iv_sz\n");
+ printf("Global aead iv (%u) shorter than "
+ "aead_iv_sz (%u)\n", data_length, opts->aead_iv_sz);
return -1;
}
@@ -411,6 +418,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->max_buffer_size > data_length) {
- printf("Global ciphertext shorter than "
- "buffer_sz\n");
+ printf("Global ciphertext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
@@ -426,6 +433,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->aead_aad_sz > data_length) {
- printf("Global aad shorter than "
- "aead_aad_sz\n");
+ printf("Global aad (%u) shorter than "
+ "aead_aad_sz (%u)\n", data_length, opts->aead_aad_sz);
return -1;
}
@@ -442,6 +449,6 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
else {
if (opts->digest_sz > data_length) {
- printf("Global digest shorter than "
- "digest_sz\n");
+ printf("Global digest (%u) shorter than "
+ "digest_sz (%u)\n", data_length, opts->digest_sz);
return -1;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.925111728 +0000
+++ 0123-app-crypto-perf-fix-plaintext-size-exceeds-buffer-si.patch 2025-10-31 13:53:52.313524233 +0000
@@ -1 +1 @@
-From b2988038656b03d1c019114fbe7609018cc16e87 Mon Sep 17 00:00:00 2001
+From 76f76023a939629285d357bbe3b786138b6ae4b5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/crypto: fix vector initialization' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (121 preceding siblings ...)
2025-10-31 14:34 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/virtio: fix cookies leak' " Kevin Traynor
` (9 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4551696fd991dd0b7f404f90348cdacc688d50de
Thanks.
Kevin
---
From 4551696fd991dd0b7f404f90348cdacc688d50de Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Thu, 11 Sep 2025 13:14:38 +0000
Subject: [PATCH] test/crypto: fix vector initialization
[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
For CPU crypto code path make sure all fields in the
rte_crypto_sym_vec struct are initialised.
Fixes: 2a9f232ce60e ("test/crypto: add CPU crypto mode cases")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
app/test/test_cryptodev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 540373e452..1d5f87242d 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -290,5 +290,5 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
struct rte_crypto_va_iova_ptr cipher_iv, digest, aad_auth_iv;
union rte_crypto_sym_ofs ofs;
- struct rte_crypto_sym_vec vec;
+ struct rte_crypto_sym_vec vec = {0};
struct rte_crypto_sgl sgl, dest_sgl;
uint32_t max_len;
@@ -527,5 +527,5 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, aad_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
@@ -573,5 +573,5 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.960455920 +0000
+++ 0124-test-crypto-fix-vector-initialization.patch 2025-10-31 13:53:52.321524258 +0000
@@ -1 +1 @@
-From 78ed9449a63ecc00b059ddc24dd04df8a119f5de Mon Sep 17 00:00:00 2001
+From 4551696fd991dd0b7f404f90348cdacc688d50de Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 50de525897..6e5f308e55 100644
+index 540373e452..1d5f87242d 100644
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'crypto/virtio: fix cookies leak' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (122 preceding siblings ...)
2025-10-31 14:34 ` patch 'test/crypto: fix vector initialization' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'bitops: improve power of 2 alignment documentation' " Kevin Traynor
` (8 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/2effa20c58fba0b2702681c7ee063786abc36f4c
Thanks.
Kevin
---
From 2effa20c58fba0b2702681c7ee063786abc36f4c Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Sat, 11 Oct 2025 10:07:03 +0530
Subject: [PATCH] crypto/virtio: fix cookies leak
[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
Free memory used by virt queue op cookies in dev close.
Fixes: 6f0175ff53e0 ("crypto/virtio: support basic PMD ops")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
drivers/crypto/virtio/virtio_cryptodev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c
index 034a479994..c933f16d2d 100644
--- a/drivers/crypto/virtio/virtio_cryptodev.c
+++ b/drivers/crypto/virtio/virtio_cryptodev.c
@@ -266,4 +266,5 @@ virtio_crypto_queue_release(struct virtqueue *vq)
{
struct virtio_crypto_hw *hw;
+ uint16_t i;
PMD_INIT_FUNC_TRACE();
@@ -276,4 +277,7 @@ virtio_crypto_queue_release(struct virtqueue *vq)
rte_memzone_free(vq->mz);
rte_mempool_free(vq->mpool);
+ for (i = 0; i < vq->vq_nentries; i++)
+ rte_free(vq->vq_descx[i].cookie);
+
rte_free(vq);
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:55.988028386 +0000
+++ 0125-crypto-virtio-fix-cookies-leak.patch 2025-10-31 13:53:52.322524261 +0000
@@ -1 +1 @@
-From 8b0d855fd98c6c88665489fdba12f8e603deae21 Mon Sep 17 00:00:00 2001
+From 2effa20c58fba0b2702681c7ee063786abc36f4c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index d661ce8025..6f079f15f6 100644
+index 034a479994..c933f16d2d 100644
@@ -20 +21 @@
-@@ -69,4 +69,5 @@ virtio_crypto_queue_release(struct virtqueue *vq)
+@@ -266,4 +266,5 @@ virtio_crypto_queue_release(struct virtqueue *vq)
@@ -26 +27 @@
-@@ -80,4 +81,7 @@ virtio_crypto_queue_release(struct virtqueue *vq)
+@@ -276,4 +277,7 @@ virtio_crypto_queue_release(struct virtqueue *vq)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'bitops: improve power of 2 alignment documentation' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (123 preceding siblings ...)
2025-10-31 14:34 ` patch 'crypto/virtio: fix cookies leak' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'sched: fix WRR parameter data type' " Kevin Traynor
` (7 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Mattias Rönnblom; +Cc: Bruce Richardson, Morten Brørup, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a44f69f6a7af98679f26c6432e1b36c1e852ae92
Thanks.
Kevin
---
From a44f69f6a7af98679f26c6432e1b36c1e852ae92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mattias=20R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>
Date: Tue, 22 Jul 2025 09:53:21 +0200
Subject: [PATCH] bitops: improve power of 2 alignment documentation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit f9f773fe2d6f49f1223283dc3e75198f2e6c0664 ]
In the documentation, make clear
rte_align(32|64)prevpow2(<n>) -> <n>, provided <n> is a power of 2.
The original documentation stated the "previous" power of 2 would be
returned, potentially leaving the user to erroneously conclude that,
for example, rte_align32prevpow2(32) -> 16.
The rte_align(32|64)pow2(<n>) documentation, suffering from a similar
issue, is reworded in the same manner.
Fixes: 08f683174e94 ("eal: add functions for previous power of 2 alignment")
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/eal/include/rte_bitops.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/eal/include/rte_bitops.h b/lib/eal/include/rte_bitops.h
index deb1fd43f2..fbabd9bdd5 100644
--- a/lib/eal/include/rte_bitops.h
+++ b/lib/eal/include/rte_bitops.h
@@ -1235,5 +1235,5 @@ rte_is_power_of_2(uint32_t n)
*
* @return
- * Input parameter aligned to the next power of 2
+ * The smallest power of 2 which is greater than or equal to @c x.
*/
static inline uint32_t
@@ -1253,5 +1253,5 @@ rte_align32pow2(uint32_t x)
*
* @return
- * Input parameter aligned to the previous power of 2
+ * The greatest power of 2 which is smaller than or equal to @c x.
*/
static inline uint32_t
@@ -1270,5 +1270,5 @@ rte_align32prevpow2(uint32_t x)
*
* @return
- * Input parameter aligned to the next power of 2
+ * The smallest power of 2 which is greater than or equal to @c v.
*/
static inline uint64_t
@@ -1288,5 +1288,5 @@ rte_align64pow2(uint64_t v)
*
* @return
- * Input parameter aligned to the previous power of 2
+ * The greatest power of 2 which is smaller than or equal to @c v.
*/
static inline uint64_t
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.015143069 +0000
+++ 0126-bitops-improve-power-of-2-alignment-documentation.patch 2025-10-31 13:53:52.323524264 +0000
@@ -1 +1 @@
-From f9f773fe2d6f49f1223283dc3e75198f2e6c0664 Mon Sep 17 00:00:00 2001
+From a44f69f6a7af98679f26c6432e1b36c1e852ae92 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit f9f773fe2d6f49f1223283dc3e75198f2e6c0664 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index b9a6af381b..2d1b9d281c 100644
+index deb1fd43f2..fbabd9bdd5 100644
@@ -33 +34 @@
-@@ -1321,5 +1321,5 @@ rte_is_power_of_2(uint32_t n)
+@@ -1235,5 +1235,5 @@ rte_is_power_of_2(uint32_t n)
@@ -40 +41 @@
-@@ -1339,5 +1339,5 @@ rte_align32pow2(uint32_t x)
+@@ -1253,5 +1253,5 @@ rte_align32pow2(uint32_t x)
@@ -47 +48 @@
-@@ -1356,5 +1356,5 @@ rte_align32prevpow2(uint32_t x)
+@@ -1270,5 +1270,5 @@ rte_align32prevpow2(uint32_t x)
@@ -54 +55 @@
-@@ -1374,5 +1374,5 @@ rte_align64pow2(uint64_t v)
+@@ -1288,5 +1288,5 @@ rte_align64pow2(uint64_t v)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'sched: fix WRR parameter data type' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (124 preceding siblings ...)
2025-10-31 14:34 ` patch 'bitops: improve power of 2 alignment documentation' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'test/argparse: change initialization to workaround LTO' " Kevin Traynor
` (6 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Megha Ajmera; +Cc: Jasvinder Singh, Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/25e52e47320126df7f60fe27f9a15ad9b5b66771
Thanks.
Kevin
---
From 25e52e47320126df7f60fe27f9a15ad9b5b66771 Mon Sep 17 00:00:00 2001
From: Megha Ajmera <megha.ajmera@intel.com>
Date: Thu, 18 Sep 2025 08:16:09 +0530
Subject: [PATCH] sched: fix WRR parameter data type
[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
wrr tokens getting truncated to uint8_t in wrr_store function() due to
type mismatch. This patch changes the data type to uint16_t.
Fixes: e16b06da0908 ("sched: remove WRR from strict priority TC queues")
Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/sched/rte_sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
index bbdb5d1d86..4cc9327329 100644
--- a/lib/sched/rte_sched.c
+++ b/lib/sched/rte_sched.c
@@ -72,5 +72,5 @@ struct __rte_cache_aligned rte_sched_pipe {
/* Weighted Round Robin (WRR) */
- uint8_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
+ uint16_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
/* TC oversubscription */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.043804029 +0000
+++ 0127-sched-fix-WRR-parameter-data-type.patch 2025-10-31 13:53:52.324524267 +0000
@@ -1 +1 @@
-From 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 Mon Sep 17 00:00:00 2001
+From 25e52e47320126df7f60fe27f9a15ad9b5b66771 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 453f935ac8..daa31e8b99 100644
+index bbdb5d1d86..4cc9327329 100644
@@ -23 +24 @@
-@@ -68,5 +68,5 @@ struct __rte_cache_aligned rte_sched_pipe {
+@@ -72,5 +72,5 @@ struct __rte_cache_aligned rte_sched_pipe {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'test/argparse: change initialization to workaround LTO' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (125 preceding siblings ...)
2025-10-31 14:34 ` patch 'sched: fix WRR parameter data type' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'config/arm: enable NUMA for Neoverse N2' " Kevin Traynor
` (5 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/6a73db92fbff3a64af61636b1b2557ef58c71319
Thanks.
Kevin
---
From 6a73db92fbff3a64af61636b1b2557ef58c71319 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 9 Sep 2025 06:49:52 -0700
Subject: [PATCH] test/argparse: change initialization to workaround LTO
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3fc246e883c412f3c285bcabdb402b7d66e78526 ]
When compiled with Link Time Optimization, the existing code
generated an error, because the compiler was unable to intuit
that there was space in the flexible array.
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’
at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_callback_parse_int_of_no_val’
at ../app/test/test_argparse.c:490:8:
../app/test/test_argparse.c:96:17: warning:
‘memcpy’ writing 56 bytes into a region of size 0 overflows the destination
memcpy(&dst->args[i], &src->args[i], sizeof(src->args[i]));
Initializing a structure with flexible array is special case
and compiler expands the structure to fit.
But inside the copy function it no longer knew that.
The workaround is to put the copy inside the same function
and use structure assignment. Also macro should be upper case.
Fixes: 6c5c6571601c ("argparse: verify argument config")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_argparse.c | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/app/test/test_argparse.c b/app/test/test_argparse.c
index fcea620501..0ae54b2d64 100644
--- a/app/test/test_argparse.c
+++ b/app/test/test_argparse.c
@@ -72,5 +72,5 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
/* valid templater, must contain at least two args. */
-#define argparse_templater() { \
+#define ARGPARSE_TEMPLATE { \
.prog_name = "test_argparse", \
.usage = "-a xx -b yy", \
@@ -86,23 +86,22 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
}
-static void
-test_argparse_copy(struct rte_argparse *dst, struct rte_argparse *src)
-{
- uint32_t i;
- memcpy(dst, src, sizeof(*src));
- for (i = 0; /* NULL */; i++) {
- memcpy(&dst->args[i], &src->args[i], sizeof(src->args[i]));
- if (src->args[i].name_long == NULL)
- break;
- }
-}
static struct rte_argparse *
test_argparse_init_obj(void)
{
- static struct rte_argparse backup = argparse_templater();
- static struct rte_argparse obj = argparse_templater();
- /* Because obj may be overwritten, do a deep copy. */
- test_argparse_copy(&obj, &backup);
+ /* Note: initialization of structure with flexible array
+ * increases the size of the variable to match.
+ */
+ static const struct rte_argparse backup = ARGPARSE_TEMPLATE;
+ static struct rte_argparse obj = ARGPARSE_TEMPLATE;
+ unsigned int i;
+
+ obj = backup;
+ for (i = 0; ; i++) {
+ obj.args[i] = backup.args[i];
+ if (backup.args[i].name_long == NULL)
+ break;
+ }
+
return &obj;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.071408968 +0000
+++ 0128-test-argparse-change-initialization-to-workaround-LT.patch 2025-10-31 13:53:52.325524270 +0000
@@ -1 +1 @@
-From 3fc246e883c412f3c285bcabdb402b7d66e78526 Mon Sep 17 00:00:00 2001
+From 6a73db92fbff3a64af61636b1b2557ef58c71319 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3fc246e883c412f3c285bcabdb402b7d66e78526 ]
+
@@ -30 +31,0 @@
-Cc: stable@dpdk.org
@@ -40 +41 @@
-index 71a85ea960..d3b95c4e35 100644
+index fcea620501..0ae54b2d64 100644
@@ -43 +44 @@
-@@ -73,5 +73,5 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
+@@ -72,5 +72,5 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
@@ -50 +51 @@
-@@ -89,23 +89,22 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
+@@ -86,23 +86,22 @@ test_argparse_callback(uint32_t index, const char *value, void *opaque)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'config/arm: enable NUMA for Neoverse N2' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (126 preceding siblings ...)
2025-10-31 14:34 ` patch 'test/argparse: change initialization to workaround LTO' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'dts: fix docstring in checksum suite' " Kevin Traynor
` (4 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Thierry Herbelot; +Cc: Doug Foster, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/106afb7fd52597cb30fb1f4f1356ffca82784f07
Thanks.
Kevin
---
From 106afb7fd52597cb30fb1f4f1356ffca82784f07 Mon Sep 17 00:00:00 2001
From: Thierry Herbelot <thierry.herbelot@6wind.com>
Date: Thu, 16 Oct 2025 10:05:33 +0200
Subject: [PATCH] config/arm: enable NUMA for Neoverse N2
[ upstream commit 6edcec237e31fcdb848cca6c151ee7a5bf057c28 ]
Configuration for hex code '0xd49' enables two NUMA nodes.
Then, the corresponding 'soc_n2' should allow 'numa'.
Fixes: ea85ed1f6882 ("config/arm: increase nodes and cores for Neoverse N2")
Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
Acked-by: Doug Foster <doug.foster@arm.com>
---
config/arm/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 1e66434b6b..4444083b4a 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -588,5 +588,5 @@ soc_n2 = {
'implementer': '0x41',
'part_number': '0xd49',
- 'numa': false
+ 'numa': true
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.098082721 +0000
+++ 0129-config-arm-enable-NUMA-for-Neoverse-N2.patch 2025-10-31 13:53:52.326630538 +0000
@@ -1 +1 @@
-From 6edcec237e31fcdb848cca6c151ee7a5bf057c28 Mon Sep 17 00:00:00 2001
+From 106afb7fd52597cb30fb1f4f1356ffca82784f07 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6edcec237e31fcdb848cca6c151ee7a5bf057c28 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f2567adf06..ec9e08cb5e 100644
+index 1e66434b6b..4444083b4a 100644
@@ -22 +23 @@
-@@ -603,5 +603,5 @@ soc_n2 = {
+@@ -588,5 +588,5 @@ soc_n2 = {
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'dts: fix docstring in checksum suite' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (127 preceding siblings ...)
2025-10-31 14:34 ` patch 'config/arm: enable NUMA for Neoverse N2' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'bus/pci: fix resource leak in secondary process' " Kevin Traynor
` (3 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Dean Marx; +Cc: Patrick Robb, Luca Vizzarro, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/39594634a724186931aa98ffe4b61c8ac5c51824
Thanks.
Kevin
---
From 39594634a724186931aa98ffe4b61c8ac5c51824 Mon Sep 17 00:00:00 2001
From: Dean Marx <dmarx@iol.unh.edu>
Date: Thu, 7 Aug 2025 11:33:57 -0400
Subject: [PATCH] dts: fix docstring in checksum suite
[ upstream commit 7d2f2a87f9b921f8620dae629f3ae068d6818a4a ]
Current test suite docstring for checksum offload suite
says there are 6 test cases when it should say 7.
Fixes: 8c9a7471a0e6 ("dts: add checksum offload test suite")
Signed-off-by: Dean Marx <dmarx@iol.unh.edu>
Reviewed-by: Patrick Robb <probb@iol.unh.edu>
Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
---
dts/tests/TestSuite_checksum_offload.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dts/tests/TestSuite_checksum_offload.py b/dts/tests/TestSuite_checksum_offload.py
index 1a933563b6..d4b8409ed3 100644
--- a/dts/tests/TestSuite_checksum_offload.py
+++ b/dts/tests/TestSuite_checksum_offload.py
@@ -38,5 +38,5 @@ class TestChecksumOffload(TestSuite):
"""Checksum offload test suite.
- This suite consists of 6 test cases:
+ This suite consists of 7 test cases:
1. Insert checksum on transmit packet
2. Do not insert checksum on transmit packet
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.125265609 +0000
+++ 0130-dts-fix-docstring-in-checksum-suite.patch 2025-10-31 13:53:52.327009210 +0000
@@ -1 +1 @@
-From 7d2f2a87f9b921f8620dae629f3ae068d6818a4a Mon Sep 17 00:00:00 2001
+From 39594634a724186931aa98ffe4b61c8ac5c51824 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7d2f2a87f9b921f8620dae629f3ae068d6818a4a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index c9efdcaa1c..b03c3d46ed 100644
+index 1a933563b6..d4b8409ed3 100644
@@ -23 +24 @@
-@@ -37,5 +37,5 @@ class TestChecksumOffload(TestSuite):
+@@ -38,5 +38,5 @@ class TestChecksumOffload(TestSuite):
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'bus/pci: fix resource leak in secondary process' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (128 preceding siblings ...)
2025-10-31 14:34 ` patch 'dts: fix docstring in checksum suite' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Kevin Traynor
` (2 subsequent siblings)
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9d8103fda92ef6adf08e8ed6740bed8fde068f5b
Thanks.
Kevin
---
From 9d8103fda92ef6adf08e8ed6740bed8fde068f5b Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:18:24 +0100
Subject: [PATCH] bus/pci: fix resource leak in secondary process
[ upstream commit 6ca08d36ba7310edfe96207b299f79221b7e2d37 ]
Right after setting up VFIO device, we attempt to fill region information.
This operation can fail, and if it does, we do not release the device fd.
Fix the control flow to free the device fd if getting region info failed.
Fixes: 4b741542ecde ("bus/pci: avoid depending on private kernel value")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/bus/pci/linux/pci_vfio.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 5317170231..eb579d21bf 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -948,5 +948,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
int vfio_dev_fd;
struct rte_pci_addr *loc = &dev->addr;
- int i, j, ret;
+ int j, ret, i = 0;
struct mapped_pci_resource *vfio_res = NULL;
struct mapped_pci_res_list *vfio_res_list =
@@ -986,5 +986,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
ret = pci_vfio_fill_regions(dev, vfio_dev_fd, &device_info);
if (ret)
- return ret;
+ goto err_vfio_dev_fd;
/* map BARs */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.152183769 +0000
+++ 0131-bus-pci-fix-resource-leak-in-secondary-process.patch 2025-10-31 13:53:52.327524277 +0000
@@ -1 +1 @@
-From 6ca08d36ba7310edfe96207b299f79221b7e2d37 Mon Sep 17 00:00:00 2001
+From 9d8103fda92ef6adf08e8ed6740bed8fde068f5b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6ca08d36ba7310edfe96207b299f79221b7e2d37 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index c63721dd61..8562fdcc6b 100644
+index 5317170231..eb579d21bf 100644
@@ -22 +23 @@
-@@ -933,5 +933,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
+@@ -948,5 +948,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
@@ -29 +30 @@
-@@ -969,5 +969,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
+@@ -986,5 +986,5 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: fix vector Rx VLAN offload flags' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (129 preceding siblings ...)
2025-10-31 14:34 ` patch 'bus/pci: fix resource leak in secondary process' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'net/ice: remove unsupported SCTP Rx offload' " Kevin Traynor
2025-10-31 14:34 ` patch 'cmdline: fix highest bit port list parsing' " Kevin Traynor
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/765e155141197edaa1b55d4c3cccc49541f2b2d4
Thanks.
Kevin
---
From 765e155141197edaa1b55d4c3cccc49541f2b2d4 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 31 Oct 2025 13:17:58 +0000
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
@@ -269,5 +269,6 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
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)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.179958086 +0000
+++ 0132-net-ice-fix-vector-Rx-VLAN-offload-flags.patch 2025-10-31 13:53:52.328247259 +0000
@@ -1 +1 @@
-From cf454a5794bf4e3c18cd8a4e449c3d8ded5b30e6 Mon Sep 17 00:00:00 2001
+From 765e155141197edaa1b55d4c3cccc49541f2b2d4 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Thu, 7 Aug 2025 12:08:43 +0100
+Date: Fri, 31 Oct 2025 13:17:58 +0000
@@ -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
-@@ -73,5 +73,6 @@ _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
+@@ -269,5 +269,6 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'net/ice: remove unsupported SCTP Rx offload' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (130 preceding siblings ...)
2025-10-31 14:34 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
2025-10-31 14:34 ` patch 'cmdline: fix highest bit port list parsing' " Kevin Traynor
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c28dd1dfd4d2381248b63a7022a810ae621fb2e3
Thanks.
Kevin
---
From c28dd1dfd4d2381248b63a7022a810ae621fb2e3 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Fri, 31 Oct 2025 12:22:09 +0000
Subject: [PATCH] net/ice: remove unsupported SCTP Rx offload
[ upstream commit 58e315f5b724392f34a2eadbbb93c4a9076b1ac3 ]
The offload RTE_ETH_RX_OFFLOAD_SCTP_CKSUM is not supported in the ice
driver so remove the one erroneous use of it.
Fixes: 808a17b3c1e6 ("net/ice: add Rx AVX512 offload path")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_rxtx_vec_common.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
index d745eda567..5fa81b3cd2 100644
--- a/drivers/net/ice/ice_rxtx_vec_common.h
+++ b/drivers/net/ice/ice_rxtx_vec_common.h
@@ -268,5 +268,4 @@ 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_STRIP | \
RTE_ETH_RX_OFFLOAD_VLAN_FILTER | \
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.207527108 +0000
+++ 0133-net-ice-remove-unsupported-SCTP-Rx-offload.patch 2025-10-31 13:53:52.328524280 +0000
@@ -1 +1 @@
-From 58e315f5b724392f34a2eadbbb93c4a9076b1ac3 Mon Sep 17 00:00:00 2001
+From c28dd1dfd4d2381248b63a7022a810ae621fb2e3 Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Mon, 18 Aug 2025 10:59:09 +0000
+Date: Fri, 31 Oct 2025 12:22:09 +0000
@@ -5,0 +6,2 @@
+[ upstream commit 58e315f5b724392f34a2eadbbb93c4a9076b1ac3 ]
+
@@ -8,0 +11,2 @@
+Fixes: 808a17b3c1e6 ("net/ice: add Rx AVX512 offload path")
+
@@ -12 +16 @@
- drivers/net/intel/ice/ice_rxtx_vec_common.h | 1 -
+ drivers/net/ice/ice_rxtx_vec_common.h | 1 -
@@ -15,5 +19,5 @@
-diff --git a/drivers/net/intel/ice/ice_rxtx_vec_common.h b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-index e41fd8fc7c..fd99048687 100644
---- a/drivers/net/intel/ice/ice_rxtx_vec_common.h
-+++ b/drivers/net/intel/ice/ice_rxtx_vec_common.h
-@@ -72,5 +72,4 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
+diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
+index d745eda567..5fa81b3cd2 100644
+--- a/drivers/net/ice/ice_rxtx_vec_common.h
++++ b/drivers/net/ice/ice_rxtx_vec_common.h
+@@ -268,5 +268,4 @@ ice_rxq_vec_setup_default(struct ice_rx_queue *rxq)
^ permalink raw reply [flat|nested] 135+ messages in thread
* patch 'cmdline: fix highest bit port list parsing' has been queued to stable release 24.11.4
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
` (131 preceding siblings ...)
2025-10-31 14:34 ` patch 'net/ice: remove unsupported SCTP Rx offload' " Kevin Traynor
@ 2025-10-31 14:34 ` Kevin Traynor
132 siblings, 0 replies; 135+ messages in thread
From: Kevin Traynor @ 2025-10-31 14:34 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 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/72c21546e14bbb63ca9e128cc4e4e6542b1866ab
Thanks.
Kevin
---
From 72c21546e14bbb63ca9e128cc4e4e6542b1866ab 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
@@ -10,5 +10,7 @@
#include <errno.h>
+#include <rte_bitops.h>
#include <rte_string_fns.h>
+
#include "cmdline_parse.h"
#include "cmdline_parse_portlist.h"
@@ -25,5 +27,6 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:56.234650988 +0000
+++ 0134-cmdline-fix-highest-bit-port-list-parsing.patch 2025-10-31 13:53:52.328964874 +0000
@@ -1 +1 @@
-From f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 Mon Sep 17 00:00:00 2001
+From 72c21546e14bbb63ca9e128cc4e4e6542b1866ab 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 @@
-@@ -11,5 +11,7 @@
+@@ -10,5 +10,7 @@
+ #include <errno.h>
@@ -32 +33,0 @@
- #include <eal_export.h>
@@ -38 +39 @@
-@@ -27,5 +29,6 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
+@@ -25,5 +27,6 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: patch 'eal/x86: enable timeout in AMD power monitor' has been queued to stable release 24.11.4
2025-10-31 14:33 ` patch 'eal/x86: enable timeout in AMD power monitor' " Kevin Traynor
@ 2025-11-01 15:31 ` Tummala, Sivaprasad
0 siblings, 0 replies; 135+ messages in thread
From: Tummala, Sivaprasad @ 2025-11-01 15:31 UTC (permalink / raw)
To: Kevin Traynor; +Cc: Anatoly Burakov, dpdk stable
[-- Attachment #1: Type: text/plain, Size: 3982 bytes --]
[AMD Official Use Only - AMD Internal Distribution Only]
Hi Kevin,
LGTM!
Thanks & Regards,
Sivaprasad
________________________________
From: Kevin Traynor <ktraynor@redhat.com>
Sent: Friday, October 31, 2025 8:03 PM
To: Tummala, Sivaprasad <Sivaprasad.Tummala@amd.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>; dpdk stable <stable@dpdk.org>
Subject: patch 'eal/x86: enable timeout in AMD power monitor' has been queued to stable release 24.11.4
Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
Hi,
FYI, your patch has been queued to stable release 24.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4e309113126d8cf44cf2e50362ae590a176e07ac
Thanks.
Kevin
---
From 4e309113126d8cf44cf2e50362ae590a176e07ac 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 f7d558153e..b46e8c2aba 100644
--- a/lib/eal/x86/rte_power_intrinsics.c
+++ b/lib/eal/x86/rte_power_intrinsics.c
@@ -88,12 +88,12 @@ 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.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-31 13:53:54.355466019 +0000
+++ 0069-eal-x86-enable-timeout-in-AMD-power-monitor.patch 2025-10-31 13:53:52.173523796 +0000
@@ -1 +1 @@
-From 1213a8895be3bf883f10b3ba60ee84099b5ff75a Mon Sep 17 00:00:00 2001
+From 4e309113126d8cf44cf2e50362ae590a176e07ac 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 f7d558153e..b46e8c2aba 100644
@@ -27 +28 @@
-@@ -90,12 +90,12 @@ static void amd_monitorx(volatile void *addr)
+@@ -88,12 +88,12 @@ static void amd_monitorx(volatile void *addr)
[-- Attachment #2: Type: text/html, Size: 7511 bytes --]
^ permalink raw reply [flat|nested] 135+ messages in thread
end of thread, other threads:[~2025-11-01 15:31 UTC | newest]
Thread overview: 135+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-31 14:32 patch 'test/telemetry: fix test calling all commands' has been queued to stable release 24.11.4 Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix plugin dir walk' " Kevin Traynor
2025-10-31 14:32 ` patch 'cmdline: fix port list parsing' " Kevin Traynor
2025-10-31 14:32 ` patch 'tailq: fix lookup macro' " Kevin Traynor
2025-10-31 14:32 ` patch 'hash: fix unaligned access in predictable RSS' " Kevin Traynor
2025-10-31 14:32 ` patch 'graph: fix stats query with no node xstats' " Kevin Traynor
2025-10-31 14:32 ` patch 'graph: fix unaligned access in stats' " Kevin Traynor
2025-10-31 14:32 ` patch 'eventdev: fix listing timer adapters with telemetry' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: send whole packet when mbuf is large' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: clean when insufficient Tx descriptors' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: do not write zero-length " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: validate Tx packet before sending' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: add DQO Tx descriptor limit' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: fix DQO TSO " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: clear DQO Tx descriptors before writing' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: increase size of set cores list command' " Kevin Traynor
2025-10-31 14:32 ` patch 'bus/dpaa: improve cleanup' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: free device resources on close' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/dpaa2: fix extract buffer preparation' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/dpaa2: fix shaper rate' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/tap: fix BPF with cross-compilation' " Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: fix mask in flow random item' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/zxdh: fix Arm build' " Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: monitor state of primary process' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: fix disabling interrupts on DQ' " Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: fix conntrack action query' " Kevin Traynor
2025-10-31 14:32 ` patch 'doc: add conntrack state inspect command to testpmd guide' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/gve: free Rx mbufs if allocation fails on ring setup' " Kevin Traynor
2025-10-31 14:32 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix index-based flow rules' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix default flow rules start' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix storage of shared Rx queues' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix use after scope of RSS configuration' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix unsupported flow rule port action' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix double free in non-template flow destroy' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template age rules flush' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix non-template RSS expansion' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix connection tracking state item validation' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5/hws: fix TIR action support in FDB' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix indirect flow age action handling' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/mlx5: fix interface name parameter definition' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/iavf: fix Tx vector path selection logic' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/ixgbe: fix SCTP port filtering on E610' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/intel: fix assumption about tag placement order' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice: fix VLAN tag reporting on Rx' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix adding special words' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in HW profile handling' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/ice/base: fix memory leak in recipe " Kevin Traynor
2025-10-31 14:32 ` patch 'gro: fix payload corruption in coalescing packets' " Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix DMA mask validation with IOVA mode option' " Kevin Traynor
2025-10-31 14:32 ` patch 'eal: fix MP socket cleanup' " Kevin Traynor
2025-10-31 14:32 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " Kevin Traynor
2025-10-31 14:32 ` patch 'efd: fix AVX2 support' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/octeon_ep: handle interrupt enable failure' " Kevin Traynor
2025-10-31 14:32 ` patch 'net/octeon_ep: fix mbuf data offset update' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/octeon_ep: fix device start' " Kevin Traynor
2025-10-31 14:33 ` patch 'common/cnxk: fix async event handling' " Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix feature list of ice driver' " Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix feature list of iavf " Kevin Traynor
2025-10-31 14:33 ` patch 'eal/arm: fix C++ build for 32-bit memcpy' " Kevin Traynor
2025-10-31 14:33 ` patch 'test/debug: fix crash with mlx5 devices' " Kevin Traynor
2025-10-31 14:33 ` patch 'bus/pci: fix build with MinGW 13' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: " Kevin Traynor
2025-10-31 14:33 ` patch 'bbdev: " Kevin Traynor
2025-10-31 14:33 ` patch 'dma/hisilicon: fix stop with pending transfers' " Kevin Traynor
2025-10-31 14:33 ` patch 'test/dma: fix failure condition' " Kevin Traynor
2025-10-31 14:33 ` patch 'eal/x86: enable timeout in AMD power monitor' " Kevin Traynor
2025-11-01 15:31 ` Tummala, Sivaprasad
2025-10-31 14:33 ` patch 'test/func_reentrancy: fix args to EAL init call' " Kevin Traynor
2025-10-31 14:33 ` patch 'fib6: fix memory leak on delete operation' " Kevin Traynor
2025-10-31 14:33 ` patch 'fib6: fix tbl8 allocation check logic' " Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: add VDUSE virtqueue ready state polling workaround' " Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: fix virtqueue info init in VDUSE vring setup' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/virtio-user: fix used ring address calculation' " Kevin Traynor
2025-10-31 14:33 ` patch 'vhost: fix double fetch when dequeue offloading' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/bnxt: fix free of not allocated object' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice/base: fix integer overflow on NVM init' " Kevin Traynor
2025-10-31 14:33 ` patch 'doc: fix display of commands in cpfl guide' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: fix initialization with 8 ports' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: remove indirection for FDIR filters' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ice: fix memory leak in raw pattern parse' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP item validation to match on seqnum' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix ESP header match after UDP for group 0' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix multicast' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix flow encapsulation hash' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix indirect flow action memory leak' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix MTU initialization' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix leak of flow indexed pools' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/mlx5: fix flow aging race condition' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix inconsistent lock' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN resources freeing' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix overwrite mbuf in vector path' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/af_packet: fix crash in secondary process' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ark: remove double mbuf free' " Kevin Traynor
2025-10-31 14:33 ` patch 'app/testpmd: stop forwarding in secondary process' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/tap: fix build with LTO' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " Kevin Traynor
2025-10-31 14:33 ` patch 'ethdev: fix VLAN filter parameter description' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix file descriptor leak on read error' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix buffer descriptor size configuration' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix Tx queue free' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix checksum flag handling and error return' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: reject multi-queue configuration' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/enetfec: reject Tx deferred queue' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/tap: fix interrupt callback crash after failed start' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ntnic: fix potential format overflow' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix uninitialized variable' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: free buffers from error queue' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix L3/L4 checksum results' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: receive packets with additional parse errors' " Kevin Traynor
2025-10-31 14:33 ` patch 'net/dpaa2: fix error frame dump' " Kevin Traynor
2025-10-31 14:34 ` patch 'net/dpaa2: fix flow rule resizing' " Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/qat: fix ECDH' " Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/qat: fix source buffer alignment' " Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/cnxk: refactor RSA verification' " Kevin Traynor
2025-10-31 14:34 ` patch 'test/crypto: fix mbuf handling' " Kevin Traynor
2025-10-31 14:34 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " Kevin Traynor
2025-10-31 14:34 ` patch 'test/crypto: fix vector initialization' " Kevin Traynor
2025-10-31 14:34 ` patch 'crypto/virtio: fix cookies leak' " Kevin Traynor
2025-10-31 14:34 ` patch 'bitops: improve power of 2 alignment documentation' " Kevin Traynor
2025-10-31 14:34 ` patch 'sched: fix WRR parameter data type' " Kevin Traynor
2025-10-31 14:34 ` patch 'test/argparse: change initialization to workaround LTO' " Kevin Traynor
2025-10-31 14:34 ` patch 'config/arm: enable NUMA for Neoverse N2' " Kevin Traynor
2025-10-31 14:34 ` patch 'dts: fix docstring in checksum suite' " Kevin Traynor
2025-10-31 14:34 ` patch 'bus/pci: fix resource leak in secondary process' " Kevin Traynor
2025-10-31 14:34 ` patch 'net/ice: fix vector Rx VLAN offload flags' " Kevin Traynor
2025-10-31 14:34 ` patch 'net/ice: remove unsupported SCTP Rx offload' " Kevin Traynor
2025-10-31 14:34 ` patch 'cmdline: fix highest bit port list parsing' " Kevin Traynor
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).