* patch 'dmadev: fix debug build with tracepoints' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'bus/cdx: fix device name in probing error message' " Kevin Traynor
` (95 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Stephen Hemminger; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/e04a5118f3eb538b953a691c12e7fa5c50820335
Thanks.
Kevin
---
From e04a5118f3eb538b953a691c12e7fa5c50820335 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon, 27 Oct 2025 09:46:20 -0700
Subject: [PATCH] dmadev: fix debug build with tracepoints
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 1624f34dde105a47e1d22f419a90fd65997c908f ]
Missing definition of errnos causes build failure:
In file included from ../lib/dmadev/rte_dmadev_trace.h:16,
from ../lib/dmadev/rte_dmadev_trace_points.c:8:
../lib/dmadev/rte_dmadev.h: In function ‘rte_dma_copy’:
../lib/dmadev/rte_dmadev.h:1183:25: error: ‘EINVAL’ undeclared
(first use in this function)
1183 | return -EINVAL;
| ^~~~~~
Bugzilla ID: 1814
Fixes: 91e581e5c924 ("dmadev: add data plane API")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/dmadev/rte_dmadev.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 2f9304a9db..e2c861530c 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -146,4 +146,5 @@
#include <stdint.h>
+#include <errno.h>
#include <rte_bitops.h>
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.723358790 +0000
+++ 0002-dmadev-fix-debug-build-with-tracepoints.patch 2025-11-21 11:05:09.356200713 +0000
@@ -1 +1 @@
-From 1624f34dde105a47e1d22f419a90fd65997c908f Mon Sep 17 00:00:00 2001
+From e04a5118f3eb538b953a691c12e7fa5c50820335 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 1624f34dde105a47e1d22f419a90fd65997c908f ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 0f4f10ec12..e3d7c9d0ca 100644
+index 2f9304a9db..e2c861530c 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'bus/cdx: fix device name in probing error message' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
2025-11-21 11:19 ` patch 'dmadev: fix debug build with tracepoints' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'bus/cdx: fix release in probing for secondary process' " Kevin Traynor
` (94 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Nipun Gupta, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5c49a2b766745e6a25ccc07873a914bb00e0a581
Thanks.
Kevin
---
From 5c49a2b766745e6a25ccc07873a914bb00e0a581 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:53:09 +0100
Subject: [PATCH] bus/cdx: fix device name in probing error message
[ upstream commit ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 ]
The variable cdx_addr is a stack-allocated zero-initialized char array, but
it is never used anywhere, except as part of error message out. The
intention is to display device name, so fix the code to reflect that.
Fixes: 45ef232af515 ("bus/cdx: introduce AMD CDX bus")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Nipun Gupta <nipun.gupta@amd.com>
---
drivers/bus/cdx/cdx_vfio.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/bus/cdx/cdx_vfio.c b/drivers/bus/cdx/cdx_vfio.c
index 664f267471..2c224bfef0 100644
--- a/drivers/bus/cdx/cdx_vfio.c
+++ b/drivers/bus/cdx/cdx_vfio.c
@@ -386,5 +386,4 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
{
struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
- char cdx_addr[PATH_MAX] = {0};
static void *cdx_map_addr;
struct mapped_cdx_resource *vfio_res = NULL;
@@ -452,5 +451,5 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
if (ret < 0) {
CDX_BUS_ERR("%s mapping region %i failed: %s",
- cdx_addr, i, strerror(errno));
+ dev_name, i, strerror(errno));
free(reg);
goto err_vfio_res;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.750527575 +0000
+++ 0003-bus-cdx-fix-device-name-in-probing-error-message.patch 2025-11-21 11:05:09.358200721 +0000
@@ -1 +1 @@
-From ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 Mon Sep 17 00:00:00 2001
+From 5c49a2b766745e6a25ccc07873a914bb00e0a581 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ebd507b220b58ff8e2e87d1c2fce51cb1d4420d1 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index c03bc01df7..a3cf53b6a6 100644
+index 664f267471..2c224bfef0 100644
@@ -23 +24 @@
-@@ -390,5 +390,4 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
+@@ -386,5 +386,4 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
@@ -29 +30 @@
-@@ -456,5 +455,5 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
+@@ -452,5 +451,5 @@ cdx_vfio_map_resource_primary(struct rte_cdx_device *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'bus/cdx: fix release in probing for secondary process' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
2025-11-21 11:19 ` patch 'dmadev: fix debug build with tracepoints' " Kevin Traynor
2025-11-21 11:19 ` patch 'bus/cdx: fix device name in probing error message' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Kevin Traynor
` (93 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Nipun Gupta, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8bd7087215b9f9a96a9d6c0e0b848668e51a9bf9
Thanks.
Kevin
---
From 8bd7087215b9f9a96a9d6c0e0b848668e51a9bf9 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 24 Oct 2025 10:53:10 +0100
Subject: [PATCH] bus/cdx: fix release in probing for secondary process
[ upstream commit ad13df8e9379c5f17e6548eca1ae829f71795fde ]
The variable cdx_addr is a stack-allocated zero-initialized char array, but
it is never used anywhere except in an error handler to stand it as a
device bus address for a VFIO device release call. This is incorrect, as it
should have been actual device address, so fix the code to reflect that.
Fixes: 45ef232af515 ("bus/cdx: introduce AMD CDX bus")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Nipun Gupta <nipun.gupta@amd.com>
---
drivers/bus/cdx/cdx_vfio.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/bus/cdx/cdx_vfio.c b/drivers/bus/cdx/cdx_vfio.c
index 2c224bfef0..8f594d6391 100644
--- a/drivers/bus/cdx/cdx_vfio.c
+++ b/drivers/bus/cdx/cdx_vfio.c
@@ -482,5 +482,4 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
{
struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
- char cdx_addr[PATH_MAX] = {0};
int vfio_dev_fd;
int i, ret;
@@ -533,5 +532,5 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
return 0;
err_vfio_dev_fd:
- rte_vfio_release_device(RTE_CDX_BUS_DEVICES_PATH, cdx_addr, vfio_dev_fd);
+ rte_vfio_release_device(RTE_CDX_BUS_DEVICES_PATH, dev_name, vfio_dev_fd);
return -1;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.777895124 +0000
+++ 0004-bus-cdx-fix-release-in-probing-for-secondary-process.patch 2025-11-21 11:05:09.359200726 +0000
@@ -1 +1 @@
-From ad13df8e9379c5f17e6548eca1ae829f71795fde Mon Sep 17 00:00:00 2001
+From 8bd7087215b9f9a96a9d6c0e0b848668e51a9bf9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ad13df8e9379c5f17e6548eca1ae829f71795fde ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a3cf53b6a6..11fe3265d2 100644
+index 2c224bfef0..8f594d6391 100644
@@ -24 +25 @@
-@@ -486,5 +486,4 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
+@@ -482,5 +482,4 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
@@ -30 +31 @@
-@@ -537,5 +536,5 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
+@@ -533,5 +532,5 @@ cdx_vfio_map_resource_secondary(struct rte_cdx_device *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'buildtools/pmdinfogen: fix warning with python 3.14' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (2 preceding siblings ...)
2025-11-21 11:19 ` patch 'bus/cdx: fix release in probing for secondary process' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'net/iavf: fix build with clang 21' " Kevin Traynor
` (92 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Robin Jarry; +Cc: Dmitry Kozlyuk, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d36af38df7a7e8dd7dfa381097e2bc8cfbf68d16
Thanks.
Kevin
---
From d36af38df7a7e8dd7dfa381097e2bc8cfbf68d16 Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Wed, 29 Oct 2025 17:46:17 +0100
Subject: [PATCH] buildtools/pmdinfogen: fix warning with python 3.14
[ upstream commit 74019b85e70e6152594768d6d07b8360e39ee70a ]
Fix the following warning seen on Fedora 43 with Python 3.14:
buildtools/pmdinfogen.py:118: DeprecationWarning: Due to '_pack_', the
'rte_pci_id' Structure will use memory layout compatible with MSVC
(Windows). If this is intended, set _layout_ to 'ms'. The implicit
default is dep recated and slated to become an error in Python 3.19.
Use the struct module which is simpler and assumes everything is packed
by default.
There is no change in the output of dpdk-pmdinfo.py before and after
this patch.
Bugzilla ID: 1818
Link: https://docs.python.org/3/library/struct.html
Signed-off-by: Robin Jarry <rjarry@redhat.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
buildtools/pmdinfogen.py | 42 +++++++++++-----------------------------
1 file changed, 11 insertions(+), 31 deletions(-)
diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py
index dfb89500c0..09e34f1524 100755
--- a/buildtools/pmdinfogen.py
+++ b/buildtools/pmdinfogen.py
@@ -5,7 +5,7 @@
import argparse
-import ctypes
import json
import re
+import struct
import sys
import tempfile
@@ -111,22 +111,4 @@ class COFFImage:
-def define_rte_pci_id(is_big_endian):
- base_type = ctypes.LittleEndianStructure
- if is_big_endian:
- base_type = ctypes.BigEndianStructure
-
- class rte_pci_id(base_type):
- _pack_ = True
- _fields_ = [
- ("class_id", ctypes.c_uint32),
- ("vendor_id", ctypes.c_uint16),
- ("device_id", ctypes.c_uint16),
- ("subsystem_vendor_id", ctypes.c_uint16),
- ("subsystem_device_id", ctypes.c_uint16),
- ]
-
- return rte_pci_id
-
-
class Driver:
OPTIONS = [
@@ -167,24 +149,22 @@ class Driver:
raise Exception("PCI table declared but not defined: %d" % table_name)
- rte_pci_id = define_rte_pci_id(image.is_big_endian)
+ if image.is_big_endian:
+ fmt = ">"
+ else:
+ fmt = "<"
+ fmt += "LHHHH"
result = []
while True:
- size = ctypes.sizeof(rte_pci_id)
+ size = struct.calcsize(fmt)
offset = size * len(result)
data = table_symbol.get_value(offset, size)
if not data:
break
- pci_id = rte_pci_id.from_buffer_copy(data)
- if not pci_id.device_id:
+ _, vendor, device, ss_vendor, ss_device = struct.unpack_from(fmt, data)
+ if not device:
break
- result.append(
- [
- pci_id.vendor_id,
- pci_id.device_id,
- pci_id.subsystem_vendor_id,
- pci_id.subsystem_device_id,
- ]
- )
+ result.append((vendor, device, ss_vendor, ss_device))
+
return result
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.815673739 +0000
+++ 0005-buildtools-pmdinfogen-fix-warning-with-python-3.14.patch 2025-11-21 11:05:09.360200730 +0000
@@ -1 +1 @@
-From 74019b85e70e6152594768d6d07b8360e39ee70a Mon Sep 17 00:00:00 2001
+From d36af38df7a7e8dd7dfa381097e2bc8cfbf68d16 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 74019b85e70e6152594768d6d07b8360e39ee70a ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 63e0a8b364..4401106f0b 100755
+index dfb89500c0..09e34f1524 100755
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/iavf: fix build with clang 21' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (3 preceding siblings ...)
2025-11-21 11:19 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'test: " Kevin Traynor
` (91 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Vladimir Medvedkin, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/67a49f651e0e3014e3a73fbb6b140263f803cc1a
Thanks.
Kevin
---
From 67a49f651e0e3014e3a73fbb6b140263f803cc1a Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 22:53:22 +0530
Subject: [PATCH] net/iavf: fix build with clang 21
[ upstream commit ffa370cf683a1dd37914a54b243ec38a237b3930 ]
Fix the following error seen with clang 21.1.4
drivers/net/intel/iavf/iavf_vchnl.c:123:38: error: variable
'notify_byte' is uninitialized when passed as a const pointer
argument here [-Werror,-Wuninitialized-const-pointer]
Fixes: cb5c1b91f76f ("net/iavf: add thread for event callbacks")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/iavf/iavf_vchnl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 065ab3594c..e1483bf0a0 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -103,5 +103,5 @@ iavf_dev_event_post(struct rte_eth_dev *dev,
{
struct iavf_event_handler *handler = &event_handler;
- char notify_byte;
+ char notify_byte = 0;
struct iavf_event_element *elem = rte_malloc(NULL, sizeof(*elem) + param_alloc_size, 0);
if (!elem)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.844031843 +0000
+++ 0006-net-iavf-fix-build-with-clang-21.patch 2025-11-21 11:05:09.363200743 +0000
@@ -1 +1 @@
-From ffa370cf683a1dd37914a54b243ec38a237b3930 Mon Sep 17 00:00:00 2001
+From 67a49f651e0e3014e3a73fbb6b140263f803cc1a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ffa370cf683a1dd37914a54b243ec38a237b3930 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/iavf/iavf_vchnl.c | 2 +-
+ drivers/net/iavf/iavf_vchnl.c | 2 +-
@@ -22,4 +23,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_vchnl.c b/drivers/net/intel/iavf/iavf_vchnl.c
-index 460035d772..9ad39300c6 100644
---- a/drivers/net/intel/iavf/iavf_vchnl.c
-+++ b/drivers/net/intel/iavf/iavf_vchnl.c
+diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
+index 065ab3594c..e1483bf0a0 100644
+--- a/drivers/net/iavf/iavf_vchnl.c
++++ b/drivers/net/iavf/iavf_vchnl.c
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'test: fix build with clang 21' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (4 preceding siblings ...)
2025-11-21 11:19 ` patch 'net/iavf: fix build with clang 21' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'app/eventdev: " Kevin Traynor
` (90 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Amit Prakash Shukla, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/eca2ea79bb55e1433c9f12f5c6d5f5432b923df0
Thanks.
Kevin
---
From eca2ea79bb55e1433c9f12f5c6d5f5432b923df0 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 22:53:23 +0530
Subject: [PATCH] test: fix build with clang 21
[ upstream commit bec307d512373403a28d447d0d54b191471bc624 ]
Fix the following errors seen with clang 21.1.4
app/test/test_event_dma_adapter.c:532:32: error: variable 'event' is
uninitialized when passed as a const pointer argument here
[-Werror,-Wuninitialized-const-pointer]
app/test/test_trace.c:201:29: error: variable 'tmp' is uninitialized
when passed as a const pointer argument here
[-Werror,-Wuninitialized-const-pointer]
Fixes: 4925e15a1614 ("trace: add trace point emit for blob")
Fixes: a276e7c8fbb3 ("test/event: add DMA adapter auto-test")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Amit Prakash Shukla <amitprakashs@marvell.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test/test_event_dma_adapter.c | 6 ++++--
app/test/test_trace.c | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/app/test/test_event_dma_adapter.c b/app/test/test_event_dma_adapter.c
index 9988d4fc7b..e40eab3efa 100644
--- a/app/test/test_event_dma_adapter.c
+++ b/app/test/test_event_dma_adapter.c
@@ -137,5 +137,4 @@ test_dma_adapter_params(void)
struct rte_event_dma_adapter_runtime_params out_params;
struct rte_event_dma_adapter_runtime_params in_params;
- struct rte_event event;
uint32_t cap;
int err, rc;
@@ -145,4 +144,6 @@ test_dma_adapter_params(void)
if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+ struct rte_event event = { .queue_id = 0, };
+
err = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
TEST_DMA_VCHAN_ID, &event);
@@ -521,5 +522,4 @@ static int
test_dma_adapter_vchan_add_del(void)
{
- struct rte_event event;
uint32_t cap;
int ret;
@@ -529,4 +529,6 @@ test_dma_adapter_vchan_add_del(void)
if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+ struct rte_event event = { .queue_id = 0, };
+
ret = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
TEST_DMA_VCHAN_ID, &event);
diff --git a/app/test/test_trace.c b/app/test/test_trace.c
index 8ea1443044..52b5ba5cbb 100644
--- a/app/test/test_trace.c
+++ b/app/test/test_trace.c
@@ -180,5 +180,5 @@ test_generic_trace_points(void)
{
uint8_t arr[RTE_TRACE_BLOB_LEN_MAX];
- int tmp;
+ int tmp = 0;
int i;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.871329964 +0000
+++ 0007-test-fix-build-with-clang-21.patch 2025-11-21 11:05:09.365200751 +0000
@@ -1 +1 @@
-From bec307d512373403a28d447d0d54b191471bc624 Mon Sep 17 00:00:00 2001
+From eca2ea79bb55e1433c9f12f5c6d5f5432b923df0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bec307d512373403a28d447d0d54b191471bc624 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index 7f72a4e81d..be1e05af5b 100644
+index 9988d4fc7b..e40eab3efa 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/eventdev: fix build with clang 21' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (5 preceding siblings ...)
2025-11-21 11:19 ` patch 'test: " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'eventdev/crypto: " Kevin Traynor
` (89 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Pavan Nikhilesh, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3a2378435ce32f219ee261df89df0094a35a70b6
Thanks.
Kevin
---
From 3a2378435ce32f219ee261df89df0094a35a70b6 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 22:53:21 +0530
Subject: [PATCH] app/eventdev: fix build with clang 21
[ upstream commit 1bdf2b3c27880f1d90df46a89d5643f20587a973 ]
Fix the following error seen with clang 21.1.4
app/test-eventdev/test_perf_common.c:1340:30: error: variable
'event' is uninitialized when passed as a const pointer argument
here [-Werror,-Wuninitialized-const-pointer]
Fixes: b25a66c49e8d ("app/eventdev: add DMA adapter performance test")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test-eventdev/test_perf_common.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 897d980ad8..1d04eace9a 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -1259,5 +1259,4 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
{
struct evt_options *opt = t->opt;
- struct rte_event event;
uint32_t cap;
int ret;
@@ -1278,11 +1277,13 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
}
- if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND)
+ if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+ struct rte_event event = { .queue_id = p->queue_id, };
+
ret = rte_event_dma_adapter_vchan_add(TEST_PERF_DA_ID, p->da.dma_dev_id,
p->da.vchan_id, &event);
- else
+ } else {
ret = rte_event_dma_adapter_vchan_add(TEST_PERF_DA_ID, p->da.dma_dev_id,
p->da.vchan_id, NULL);
-
+ }
return ret;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.899542498 +0000
+++ 0008-app-eventdev-fix-build-with-clang-21.patch 2025-11-21 11:05:09.367200760 +0000
@@ -1 +1 @@
-From 1bdf2b3c27880f1d90df46a89d5643f20587a973 Mon Sep 17 00:00:00 2001
+From 3a2378435ce32f219ee261df89df0094a35a70b6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1bdf2b3c27880f1d90df46a89d5643f20587a973 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 2ad451e457..6b2ce61832 100644
+index 897d980ad8..1d04eace9a 100644
@@ -26 +27 @@
-@@ -1317,5 +1317,4 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
+@@ -1259,5 +1259,4 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
@@ -32 +33 @@
-@@ -1336,11 +1335,13 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
+@@ -1278,11 +1277,13 @@ perf_event_dma_adapter_setup(struct test_perf *t, struct prod_data *p)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'eventdev/crypto: fix build with clang 21' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (6 preceding siblings ...)
2025-11-21 11:19 ` patch 'app/eventdev: " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'rawdev: " Kevin Traynor
` (88 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: David Marchand; +Cc: Abhinandan Gujjar, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/9e0d5ac907cd393ee8859c3d9e181802aa535303
Thanks.
Kevin
---
From 9e0d5ac907cd393ee8859c3d9e181802aa535303 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 4 Nov 2025 12:52:22 +0100
Subject: [PATCH] eventdev/crypto: fix build with clang 21
[ upstream commit 9726ac9d903ce8bc76e4c8abde1de64b2827b609 ]
Fix 16-bits formatting issues reported by clang 21 on Fedora 43:
../lib/eventdev/rte_event_crypto_adapter.c:1461:4: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1459 | RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1460 | " cdev %" PRIu8, adapter->eventdev_id,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1461 | adapter->next_cdev_id);
| ^~~~~~~~~~~~~~~~~~~~~~
../lib/eventdev/rte_event_crypto_adapter.c:1592:46: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1592 | RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu8, cdev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../lib/eventdev/rte_event_crypto_adapter.c:1613:45: error:
format specifies type 'unsigned char' but the argument has type
'uint16_t' (aka 'unsigned short') [-Werror,-Wformat]
1612 | RTE_EDEV_LOG_ERR("Event vectorization is not supported,"
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1613 | "dev %" PRIu8 " cdev %" PRIu8, dev_id, cdev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
Fixes: c1749bc5ee10 ("eventdev: introduce event cryptodev vector type")
Fixes: 04ed18cd41f1 ("eventdev/crypto: support runtime set/get parameters")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
---
lib/eventdev/rte_event_crypto_adapter.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/eventdev/rte_event_crypto_adapter.c b/lib/eventdev/rte_event_crypto_adapter.c
index 939ca1cad9..73b3aff4f0 100644
--- a/lib/eventdev/rte_event_crypto_adapter.c
+++ b/lib/eventdev/rte_event_crypto_adapter.c
@@ -1455,5 +1455,5 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
if (ret) {
RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8
- " cdev %" PRIu8, adapter->eventdev_id,
+ " cdev %" PRIu16, adapter->eventdev_id,
adapter->next_cdev_id);
return ret;
@@ -1582,5 +1582,5 @@ rte_event_crypto_adapter_vector_limits_get(
if (!rte_cryptodev_is_valid_dev(cdev_id)) {
- RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu8, cdev_id);
+ RTE_EDEV_LOG_ERR("Invalid dev_id=%" PRIu16, cdev_id);
return -EINVAL;
}
@@ -1603,5 +1603,5 @@ rte_event_crypto_adapter_vector_limits_get(
if (!(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_EVENT_VECTOR)) {
RTE_EDEV_LOG_ERR("Event vectorization is not supported,"
- "dev %" PRIu8 " cdev %" PRIu8, dev_id, cdev_id);
+ "dev %" PRIu8 " cdev %" PRIu16, dev_id, cdev_id);
return -ENOTSUP;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.926939171 +0000
+++ 0009-eventdev-crypto-fix-build-with-clang-21.patch 2025-11-21 11:05:09.369200768 +0000
@@ -1 +1 @@
-From 9726ac9d903ce8bc76e4c8abde1de64b2827b609 Mon Sep 17 00:00:00 2001
+From 9e0d5ac907cd393ee8859c3d9e181802aa535303 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9726ac9d903ce8bc76e4c8abde1de64b2827b609 ]
+
@@ -34 +35,0 @@
-Cc: stable@dpdk.org
@@ -43 +44 @@
-index b827a0ffd6..3f9cc7379a 100644
+index 939ca1cad9..73b3aff4f0 100644
@@ -46 +47 @@
-@@ -1458,5 +1458,5 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
+@@ -1455,5 +1455,5 @@ crypto_adapter_cap_check(struct event_crypto_adapter *adapter)
@@ -53 +54 @@
-@@ -1590,5 +1590,5 @@ rte_event_crypto_adapter_vector_limits_get(
+@@ -1582,5 +1582,5 @@ rte_event_crypto_adapter_vector_limits_get(
@@ -60 +61 @@
-@@ -1611,5 +1611,5 @@ rte_event_crypto_adapter_vector_limits_get(
+@@ -1603,5 +1603,5 @@ rte_event_crypto_adapter_vector_limits_get(
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'rawdev: fix build with clang 21' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (7 preceding siblings ...)
2025-11-21 11:19 ` patch 'eventdev/crypto: " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'vdpa/mlx5: remove unused constant' " Kevin Traynor
` (87 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: David Marchand; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d41d6b5af733cf4e45ed86db87ab47a82fa79c20
Thanks.
Kevin
---
From d41d6b5af733cf4e45ed86db87ab47a82fa79c20 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 4 Nov 2025 12:52:28 +0100
Subject: [PATCH] rawdev: fix build with clang 21
[ upstream commit 8887f57cd71e47fa487b8d37c421fba897f7c7ee ]
Fix 16-bits formatting issues reported by clang 21 on Fedora 43:
../lib/rawdev/rte_rawdev.c:429:41: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
429 | RTE_RDEV_DEBUG("Start dev_id=%" PRIu8, dev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../lib/rawdev/rte_rawdev.c:435:9: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
434 | RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already started",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435 | dev_id);
| ^~~~~~~
../lib/rawdev/rte_rawdev.c:457:40: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
457 | RTE_RDEV_DEBUG("Stop dev_id=%" PRIu8, dev_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../lib/rawdev/rte_rawdev.c:464:4: error: format specifies type
'unsigned char' but the argument has type 'uint16_t'
(aka 'unsigned short') [-Werror,-Wformat]
463 | RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already stopped",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
464 | dev_id);
| ^~~~~~~
Fixes: c88b3f2558ed ("rawdev: introduce raw device library")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/rawdev/rte_rawdev.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/rawdev/rte_rawdev.c b/lib/rawdev/rte_rawdev.c
index 4f8897b639..bf81c9b946 100644
--- a/lib/rawdev/rte_rawdev.c
+++ b/lib/rawdev/rte_rawdev.c
@@ -404,10 +404,10 @@ rte_rawdev_start(uint16_t dev_id)
int diag;
- RTE_RDEV_DEBUG("Start dev_id=%" PRIu8, dev_id);
+ RTE_RDEV_DEBUG("Start dev_id=%" PRIu16, dev_id);
RTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
dev = &rte_rawdevs[dev_id];
if (dev->started != 0) {
- RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already started",
+ RTE_RDEV_ERR("Device with dev_id=%" PRIu16 "already started",
dev_id);
return 0;
@@ -431,5 +431,5 @@ rte_rawdev_stop(uint16_t dev_id)
struct rte_rawdev *dev;
- RTE_RDEV_DEBUG("Stop dev_id=%" PRIu8, dev_id);
+ RTE_RDEV_DEBUG("Stop dev_id=%" PRIu16, dev_id);
RTE_RAWDEV_VALID_DEVID_OR_RET(dev_id);
@@ -437,5 +437,5 @@ rte_rawdev_stop(uint16_t dev_id)
if (dev->started == 0) {
- RTE_RDEV_ERR("Device with dev_id=%" PRIu8 "already stopped",
+ RTE_RDEV_ERR("Device with dev_id=%" PRIu16 "already stopped",
dev_id);
return;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.953895946 +0000
+++ 0010-rawdev-fix-build-with-clang-21.patch 2025-11-21 11:05:09.370308534 +0000
@@ -1 +1 @@
-From 8887f57cd71e47fa487b8d37c421fba897f7c7ee Mon Sep 17 00:00:00 2001
+From d41d6b5af733cf4e45ed86db87ab47a82fa79c20 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8887f57cd71e47fa487b8d37c421fba897f7c7ee ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
@@ -45 +46 @@
-index f21d29114c..d193061842 100644
+index 4f8897b639..bf81c9b946 100644
@@ -48 +49 @@
-@@ -427,10 +427,10 @@ rte_rawdev_start(uint16_t dev_id)
+@@ -404,10 +404,10 @@ rte_rawdev_start(uint16_t dev_id)
@@ -61 +62 @@
-@@ -455,5 +455,5 @@ rte_rawdev_stop(uint16_t dev_id)
+@@ -431,5 +431,5 @@ rte_rawdev_stop(uint16_t dev_id)
@@ -68 +69 @@
-@@ -461,5 +461,5 @@ rte_rawdev_stop(uint16_t dev_id)
+@@ -437,5 +437,5 @@ rte_rawdev_stop(uint16_t dev_id)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'vdpa/mlx5: remove unused constant' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (8 preceding siblings ...)
2025-11-21 11:19 ` patch 'rawdev: " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'crypto/mlx5: remove unused constants' " Kevin Traynor
` (86 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/48e34ec33ff1cdbaf9848fec8b3d3fcc125b012c
Thanks.
Kevin
---
From 48e34ec33ff1cdbaf9848fec8b3d3fcc125b012c Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:20:58 +0100
Subject: [PATCH] vdpa/mlx5: remove unused constant
[ upstream commit 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 ]
The constant MLX5_VDPA_DEFAULT_TIMER_DELAY_US is not used anymore.
Fixes: 99f9d799ce21 ("vdpa/mlx5: improve interrupt management")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/vdpa/mlx5/mlx5_vdpa.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.h b/drivers/vdpa/mlx5/mlx5_vdpa.h
index e156520172..6d6d2f40b7 100644
--- a/drivers/vdpa/mlx5/mlx5_vdpa.h
+++ b/drivers/vdpa/mlx5/mlx5_vdpa.h
@@ -39,5 +39,4 @@
#endif
-#define MLX5_VDPA_DEFAULT_TIMER_DELAY_US 0u
#define MLX5_VDPA_DEFAULT_TIMER_STEP_US 1u
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:09.981692531 +0000
+++ 0011-vdpa-mlx5-remove-unused-constant.patch 2025-11-21 11:05:09.371041764 +0000
@@ -1 +1 @@
-From 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 Mon Sep 17 00:00:00 2001
+From 48e34ec33ff1cdbaf9848fec8b3d3fcc125b012c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3d8472f3c84cee0b5ac302b7d79e3407a30112c6 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index a398aa22ce..06155d2405 100644
+index e156520172..6d6d2f40b7 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'crypto/mlx5: remove unused constants' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (9 preceding siblings ...)
2025-11-21 11:19 ` patch 'vdpa/mlx5: remove unused constant' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'regex/mlx5: remove useless " Kevin Traynor
` (85 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d5be2b61012cadd1c26c7f22a6359c9320c23fc6
Thanks.
Kevin
---
From d5be2b61012cadd1c26c7f22a6359c9320c23fc6 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:25:49 +0100
Subject: [PATCH] crypto/mlx5: remove unused constants
[ upstream commit 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e ]
The constant MLX5_CRYPTO_LOG_NAME was never used.
The constant MLX5_CRYPTO_MAX_SEGS was not used after the fix below.
Fixes: ba707cdb6da2 ("crypto/mlx5: fix queue size configuration")
Fixes: a7c86884f150 ("crypto/mlx5: introduce Mellanox crypto driver")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/crypto/mlx5/mlx5_crypto.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c
index bf9cbd4a6a..33b14e39c5 100644
--- a/drivers/crypto/mlx5/mlx5_crypto.c
+++ b/drivers/crypto/mlx5/mlx5_crypto.c
@@ -20,7 +20,5 @@
#define MLX5_CRYPTO_DRIVER_NAME crypto_mlx5
-#define MLX5_CRYPTO_LOG_NAME pmd.crypto.mlx5
#define MLX5_CRYPTO_MAX_QPS 128
-#define MLX5_CRYPTO_MAX_SEGS 56
#define MLX5_CRYPTO_FEATURE_FLAGS(wrapped_mode) \
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.009364537 +0000
+++ 0012-crypto-mlx5-remove-unused-constants.patch 2025-11-21 11:05:09.371200777 +0000
@@ -1 +1 @@
-From 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e Mon Sep 17 00:00:00 2001
+From d5be2b61012cadd1c26c7f22a6359c9320c23fc6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 37fee5571702ebcf0e5ee9e38e01cb5eceaabe1e ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 78a9e3d0fe..6b36a3ece5 100644
+index bf9cbd4a6a..33b14e39c5 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'regex/mlx5: remove useless constants' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (10 preceding siblings ...)
2025-11-21 11:19 ` patch 'crypto/mlx5: remove unused constants' " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'common/mlx5: " Kevin Traynor
` (84 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3dc350e47dcb3f900eada6b8e93d6754ad1222a6
Thanks.
Kevin
---
From 3dc350e47dcb3f900eada6b8e93d6754ad1222a6 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:37:54 +0100
Subject: [PATCH] regex/mlx5: remove useless constants
[ upstream commit 9f6da93ec89a60df71f8e4d4748dff108a395595 ]
All these constants were unused since their introduction:
- MLX5_REGEX_WQE_CTRL_OFFSET
- MLX5_REGEX_RXP_ROF2_LINE_LEN
- MLX5_RXP_BF4_ROF_VERSION_STRING
- MLX5_RXP_CTRL_TYPE_*
- MLX5_RXP_CTRL_JOB_DESC_FLAGS
- MLX5_RXP_CTRL_VALID
- MLX5_RXP_INITIALIZATION_TIMEOUT
This constant became unused after supporting combined rule file:
- MLX5_RXP_POLL_CSR_FOR_VALUE_TIMEOUT
All these constants became unused after removing DB and register R/W:
- MLX5_RXP_MAX_ENGINES
- MLX5_RXP_EM_COUNT
- MLX5_RXP_DB_NOT_ASSIGNED
- MLX5_RXP_CSR_NUM_ENTRIES
- MLX5_RXP_CSR_CTRL_DISABLE_L2C
Fixes: 4d4e245ad637 ("regex/mlx5: support enqueue")
Fixes: f324162e8e77 ("regex/mlx5: support combined rule file")
Fixes: ab74680160ba ("regex/mlx5: support combined ROF file")
Fixes: b34d816363b5 ("regex/mlx5: support rules import")
Fixes: ab2e0b0d3531 ("regex/mlx5: remove register read/write")
Fixes: 9fa82d287f65 ("regex/mlx5: move RXP to CrSpace")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/regex/mlx5/mlx5_regex_fastpath.c | 1 -
drivers/regex/mlx5/mlx5_rxp.c | 2 --
drivers/regex/mlx5/mlx5_rxp.h | 20 --------------------
3 files changed, 23 deletions(-)
diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c b/drivers/regex/mlx5/mlx5_regex_fastpath.c
index 8e5f8c9c95..6e21574d29 100644
--- a/drivers/regex/mlx5/mlx5_regex_fastpath.c
+++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c
@@ -28,5 +28,4 @@
#define MLX5_REGEX_METADATA_SIZE ((size_t)64)
#define MLX5_REGEX_MAX_OUTPUT (((size_t)1) << 11)
-#define MLX5_REGEX_WQE_CTRL_OFFSET 12
#define MLX5_REGEX_WQE_METADATA_OFFSET 16
#define MLX5_REGEX_WQE_GATHER_OFFSET 32
diff --git a/drivers/regex/mlx5/mlx5_rxp.c b/drivers/regex/mlx5/mlx5_rxp.c
index 7730e11fb1..dda4a7fdb0 100644
--- a/drivers/regex/mlx5/mlx5_rxp.c
+++ b/drivers/regex/mlx5/mlx5_rxp.c
@@ -25,6 +25,4 @@
#define MLX5_REGEX_MAX_GROUPS MLX5_RXP_MAX_SUBSETS
-#define MLX5_REGEX_RXP_ROF2_LINE_LEN 34
-
const uint64_t combined_rof_tag = 0xff52544424a52475;
diff --git a/drivers/regex/mlx5/mlx5_rxp.h b/drivers/regex/mlx5/mlx5_rxp.h
index b38b53cc14..1f982f3b61 100644
--- a/drivers/regex/mlx5/mlx5_rxp.h
+++ b/drivers/regex/mlx5/mlx5_rxp.h
@@ -10,14 +10,6 @@
#define MLX5_RXP_MAX_JOB_LENGTH 16384
#define MLX5_RXP_MAX_SUBSETS 4095
-#define MLX5_RXP_CSR_NUM_ENTRIES 31
#define MLX5_RXP_BF2_ROF_VERSION_STRING 0x07055254
#define MLX5_RXP_BF3_ROF_VERSION_STRING 0x00065254
-#define MLX5_RXP_BF4_ROF_VERSION_STRING 0x00075254
-
-#define MLX5_RXP_CTRL_TYPE_MASK 7
-#define MLX5_RXP_CTRL_TYPE_JOB_DESCRIPTOR 0
-#define MLX5_RXP_CTRL_TYPE_RESPONSE_DESCRIPTOR 1
-#define MLX5_RXP_CTRL_TYPE_MEMORY_WRITE 4
-#define MLX5_RXP_CSR_CTRL_DISABLE_L2C (1 << 7)
#define MLX5_RXP_CTRL_JOB_DESC_SOF 0x0010
@@ -25,10 +17,4 @@
#define MLX5_RXP_CTRL_JOB_DESC_HPM_ENABLE 0x0100
#define MLX5_RXP_CTRL_JOB_DESC_ANYMATCH_ENABLE 0x0200
-#define MLX5_RXP_CTRL_JOB_DESC_FLAGS (MLX5_RXP_CTRL_JOB_DESC_SOF | \
- MLX5_RXP_CTRL_JOB_DESC_EOF | \
- MLX5_RXP_CTRL_JOB_DESC_HPM_ENABLE | \
- MLX5_RXP_CTRL_JOB_DESC_ANYMATCH_ENABLE)
-
-#define MLX5_RXP_CTRL_VALID 0x8000
#define MLX5_RXP_RESP_STATUS_MAX_PRI_THREADS (1 << 3)
@@ -129,10 +115,4 @@ enum mlx5_rxp_program_mode {
};
-#define MLX5_RXP_POLL_CSR_FOR_VALUE_TIMEOUT 3000 /* Poll timeout in ms. */
-#define MLX5_RXP_INITIALIZATION_TIMEOUT 60000 /* Initialize timeout in ms. */
-#define MLX5_RXP_MAX_ENGINES 2u /* Number of RXP engines. */
-#define MLX5_RXP_EM_COUNT 1u /* Extra External Memories to use. */
-#define MLX5_RXP_DB_NOT_ASSIGNED 0xFF
-
struct mlx5_regex_mkey {
struct mlx5dv_devx_umem *umem;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.037293872 +0000
+++ 0013-regex-mlx5-remove-useless-constants.patch 2025-11-21 11:05:09.372200781 +0000
@@ -1 +1 @@
-From 9f6da93ec89a60df71f8e4d4748dff108a395595 Mon Sep 17 00:00:00 2001
+From 3dc350e47dcb3f900eada6b8e93d6754ad1222a6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9f6da93ec89a60df71f8e4d4748dff108a395595 ]
+
@@ -34 +35,0 @@
-Cc: stable@dpdk.org
@@ -65 +66 @@
-index 08b9a2680b..8ef1541d1a 100644
+index b38b53cc14..1f982f3b61 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'common/mlx5: remove useless constants' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (11 preceding siblings ...)
2025-11-21 11:19 ` patch 'regex/mlx5: remove useless " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:19 ` patch 'net/mlx5: " Kevin Traynor
` (83 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/726043eedb348e4cd7ba144a30643a90fece2ae7
Thanks.
Kevin
---
From 726043eedb348e4cd7ba144a30643a90fece2ae7 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:10 +0100
Subject: [PATCH] common/mlx5: remove useless constants
[ upstream commit 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b ]
All these constants were unused since their introduction:
- MLX5_DRV_PROBE_AGAIN
- MLX5_NL_BUF_SIZE
- MLX5DV_FLOW_TABLE_TYPE_RDMA_RX
- IB_QPT_RAW_PACKET
Fixes: ad435d320473 ("common/mlx5: add bus-agnostic layer")
Fixes: ccdcba53a3f4 ("net/mlx5: use Netlink to add/remove MAC addresses")
Fixes: 03e1f7f760d8 ("net/mlx5: create flow matcher object on Windows")
Fixes: 358fbb018310 ("net/mlx5: support multi-packet Rx queue on Windows")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/common/mlx5/linux/mlx5_nl.c | 2 --
drivers/common/mlx5/mlx5_common.h | 3 ---
drivers/common/mlx5/windows/mlx5_win_defs.h | 2 --
3 files changed, 7 deletions(-)
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index 6824ea322d..a9a5bc5108 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -28,6 +28,4 @@
-/* Size of the buffer to receive kernel messages */
-#define MLX5_NL_BUF_SIZE (32 * 1024)
/* Send buffer size for the Netlink socket */
#define MLX5_SEND_BUF_SIZE 32768
diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h
index 304cabcc7e..22a276e559 100644
--- a/drivers/common/mlx5/mlx5_common.h
+++ b/drivers/common/mlx5/mlx5_common.h
@@ -559,7 +559,4 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
typedef int (mlx5_class_driver_remove_t)(struct mlx5_common_device *cdev);
-/** Device already probed can be probed again to check for new ports. */
-#define MLX5_DRV_PROBE_AGAIN 0x0004
-
/**
* A structure describing a mlx5 common class driver.
diff --git a/drivers/common/mlx5/windows/mlx5_win_defs.h b/drivers/common/mlx5/windows/mlx5_win_defs.h
index d60df6fd37..d98725eea8 100644
--- a/drivers/common/mlx5/windows/mlx5_win_defs.h
+++ b/drivers/common/mlx5/windows/mlx5_win_defs.h
@@ -185,5 +185,4 @@ enum mlx5dv_flow_table_type {
#define MLX5DV_FLOW_TABLE_TYPE_NIC_TX MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX
#define MLX5DV_FLOW_TABLE_TYPE_FDB MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB
-#define MLX5DV_FLOW_TABLE_TYPE_RDMA_RX MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX
struct mlx5dv_flow_match_parameters {
@@ -264,5 +263,4 @@ enum {
#define MLX5_MAX_SINGLE_STRIDE_LOG_NUM_BYTES 13
#define MLX5_EXT_MIN_SINGLE_WQE_LOG_NUM_STRIDES 3
-#define IB_QPT_RAW_PACKET 8
#endif /* MLX5_WIN_DEFS_H */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.066224182 +0000
+++ 0014-common-mlx5-remove-useless-constants.patch 2025-11-21 11:05:09.375200794 +0000
@@ -1 +1 @@
-From 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b Mon Sep 17 00:00:00 2001
+From 726043eedb348e4cd7ba144a30643a90fece2ae7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5f961fec22ff6903f2a11ffdc5ffef9c8c50cb5b ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 8753d3127c..d53543a113 100644
+index 6824ea322d..a9a5bc5108 100644
@@ -30 +31 @@
-@@ -29,6 +29,4 @@
+@@ -28,6 +28,4 @@
@@ -38 +39 @@
-index b49f0c850e..214ddcb8b3 100644
+index 304cabcc7e..22a276e559 100644
@@ -41 +42 @@
-@@ -576,7 +576,4 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
+@@ -559,7 +559,4 @@ typedef int (mlx5_class_driver_probe_t)(struct mlx5_common_device *cdev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: remove useless constants' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (12 preceding siblings ...)
2025-11-21 11:19 ` patch 'common/mlx5: " Kevin Traynor
@ 2025-11-21 11:19 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: remove unused macros' " Kevin Traynor
` (82 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:19 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ecf592265c91146f7140f637d262d94a37595fdf
Thanks.
Kevin
---
From ecf592265c91146f7140f637d262d94a37595fdf Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:26 +0100
Subject: [PATCH] net/mlx5: remove useless constants
[ upstream commit 9d3788534cba7cc3424e2a83db6b186211d4e94f ]
- MLX5_VEC_TX_CKSUM_OFFLOAD_CAP became unused when Tx metadata moved
to a dynamic field.
- MLX5_ALARM_TIMEOUT_US became unused when reworking link status wait.
- MLX5_FLOW_SFT_HLIST_ARRAY_SIZE was never used in hash list handling.
- MLX5_FLOW_MIN_ID_POOL_SIZE and MLX5_ID_GENERATION_ARRAY_FACTOR became
unused when the flow ID generator was replaced by ipool.
- MLX5_RSSQ_DEFAULT_NUM was used in the old per-thread flow workspace.
- MLX5_FLOW_TABLE_HWS_POLICY became unused because meter is not supported
in HWS.
- IPPROTO_MPLS became unused because MPLS over IP is not supported.
- MLX5_L4_RSS_TYPES has never been used.
- ETH_TYPE_IPV4/V6_VXLAN were never used in HWS.
- PCI_DRV_FLAGS became unused when migrating to bus-agnostic probing.
Fixes: 9bf26e1318e3 ("ethdev: move egress metadata to dynamic field")
Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to complete")
Fixes: f3020a331dca ("net/mlx5: optimize hash list table allocate on demand")
Fixes: 4ae8825c5085 ("net/mlx5: use indexed pool as id generator")
Fixes: dc7c5e0aa905 ("net/mlx5: fix flow workspace destruction")
Fixes: 645f240d1cd5 ("net/mlx5: remove unsupported flow meter action in HWS")
Fixes: 14ad99d78a46 ("net/mlx5: remove unsupported flow item MPLS over IP")
Fixes: ae67e3c43dd5 ("net/mlx5: support RSS expansion in non-template HWS setup")
Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer")
Fixes: a7f34989e9ad ("net/mlx5: migrate to bus-agnostic common interface")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/net/mlx5/hws/mlx5dr_definer.c | 2 --
drivers/net/mlx5/mlx5.c | 3 ---
drivers/net/mlx5/mlx5.h | 1 -
drivers/net/mlx5/mlx5_defs.h | 6 ------
drivers/net/mlx5/mlx5_flow.h | 10 ----------
drivers/net/mlx5/mlx5_rxtx_vec.h | 7 -------
drivers/net/mlx5/windows/mlx5_os.h | 2 --
7 files changed, 31 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c
index 25d7f729c5..6122728cf7 100644
--- a/drivers/net/mlx5/hws/mlx5dr_definer.c
+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c
@@ -10,6 +10,4 @@
#define BAD_PORT 0xBAD
#define BAD_SQN 0xBAD
-#define ETH_TYPE_IPV4_VXLAN 0x0800
-#define ETH_TYPE_IPV6_VXLAN 0x86DD
#define UDP_VXLAN_PORT 4789
#define UDP_VXLAN_GPE_PORT 4790
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 0580e5d030..981af06fc0 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -386,7 +386,4 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
};
-#define MLX5_FLOW_MIN_ID_POOL_SIZE 512
-#define MLX5_ID_GENERATION_ARRAY_FACTOR 16
-
#define MLX5_FLOW_TABLE_HLIST_ARRAY_SIZE 1024
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 7966b65bae..6cb4a29953 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1245,5 +1245,4 @@ struct mlx5_flow_tbl_resource {
#define MLX5_FLOW_TABLE_LEVEL_POLICY (MLX5_MAX_TABLES - 4)
#define MLX5_MAX_TABLES_EXTERNAL MLX5_FLOW_TABLE_LEVEL_POLICY
-#define MLX5_FLOW_TABLE_HWS_POLICY (MLX5_MAX_TABLES - 10)
#define MLX5_MAX_TABLES_FDB UINT16_MAX
#define MLX5_FLOW_TABLE_PTYPE_RSS_NUM 1024
diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h
index 9c454983be..11141daef5 100644
--- a/drivers/net/mlx5/mlx5_defs.h
+++ b/drivers/net/mlx5/mlx5_defs.h
@@ -47,7 +47,4 @@
#define MLX5_HWS_CNT_DCS_NUM 4
-/* Alarm timeout. */
-#define MLX5_ALARM_TIMEOUT_US 100000
-
/* Maximum number of extended statistics counters. */
#define MLX5_MAX_XSTATS 64
@@ -171,7 +168,4 @@
#define MLX5_TAGS_HLIST_ARRAY_SIZE (1 << 15)
-/* Size fo the hash table for SFT table. */
-#define MLX5_FLOW_SFT_HLIST_ARRAY_SIZE 4096
-
/* Hairpin TX/RX queue configuration parameters. */
#define MLX5_HAIRPIN_QUEUE_STRIDE 6
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 1e60bc76dd..ad15b0de32 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -207,7 +207,4 @@ enum mlx5_feature_name {
};
-/* Default queue number. */
-#define MLX5_RSSQ_DEFAULT_NUM 16
-
#define MLX5_FLOW_LAYER_OUTER_L2 (1u << 0)
#define MLX5_FLOW_LAYER_OUTER_L3_IPV4 (1u << 1)
@@ -454,8 +451,4 @@ enum mlx5_feature_name {
#define MLX5_FLOW_XCAP_ACTIONS (MLX5_FLOW_ACTION_ENCAP | MLX5_FLOW_ACTION_DECAP)
-#ifndef IPPROTO_MPLS
-#define IPPROTO_MPLS 137
-#endif
-
#define MLX5_IPV6_HDR_ECN_MASK 0x3
#define MLX5_IPV6_HDR_DSCP_SHIFT 2
@@ -504,7 +497,4 @@ enum mlx5_feature_name {
RTE_ETH_RSS_NONFRAG_IPV4_OTHER)
-/* Valid L4 RSS types */
-#define MLX5_L4_RSS_TYPES (RTE_ETH_RSS_L4_SRC_ONLY | RTE_ETH_RSS_L4_DST_ONLY)
-
/* IBV hash source bits for IPV4. */
#define MLX5_IPV4_IBV_RX_HASH (IBV_RX_HASH_SRC_IPV4 | IBV_RX_HASH_DST_IPV4)
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.h b/drivers/net/mlx5/mlx5_rxtx_vec.h
index 77c3f4efa0..672e301f77 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec.h
@@ -14,11 +14,4 @@
#include "mlx5_autoconf.h"
-/* HW checksum offload capabilities of vectorized Tx. */
-#define MLX5_VEC_TX_CKSUM_OFFLOAD_CAP \
- (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
- RTE_ETH_TX_OFFLOAD_UDP_CKSUM | \
- RTE_ETH_TX_OFFLOAD_TCP_CKSUM | \
- RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)
-
/*
* Compile time sanity check for vectorized functions.
diff --git a/drivers/net/mlx5/windows/mlx5_os.h b/drivers/net/mlx5/windows/mlx5_os.h
index 8b58265687..7085e9b258 100644
--- a/drivers/net/mlx5/windows/mlx5_os.h
+++ b/drivers/net/mlx5/windows/mlx5_os.h
@@ -13,6 +13,4 @@ enum {
};
-#define PCI_DRV_FLAGS 0
-
#define MLX5_NAMESIZE MLX5_FS_NAME_MAX
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.101307869 +0000
+++ 0015-net-mlx5-remove-useless-constants.patch 2025-11-21 11:05:09.385200837 +0000
@@ -1 +1 @@
-From 9d3788534cba7cc3424e2a83db6b186211d4e94f Mon Sep 17 00:00:00 2001
+From ecf592265c91146f7140f637d262d94a37595fdf Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9d3788534cba7cc3424e2a83db6b186211d4e94f ]
+
@@ -30 +31,0 @@
-Cc: stable@dpdk.org
@@ -44 +45 @@
-index 1c6b3e38c4..afa70bf793 100644
+index 25d7f729c5..6122728cf7 100644
@@ -55 +56 @@
-index b018a4f0e2..4705c30801 100644
+index 0580e5d030..981af06fc0 100644
@@ -58 +59 @@
-@@ -395,7 +395,4 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
+@@ -386,7 +386,4 @@ static const struct mlx5_indexed_pool_config mlx5_ipool_cfg[] = {
@@ -67 +68 @@
-index 07418b0922..233cb416cb 100644
+index 7966b65bae..6cb4a29953 100644
@@ -70 +71 @@
-@@ -1260,5 +1260,4 @@ struct mlx5_flow_tbl_resource {
+@@ -1245,5 +1245,4 @@ struct mlx5_flow_tbl_resource {
@@ -77 +78 @@
-index d326fec000..b8e5122323 100644
+index 9c454983be..11141daef5 100644
@@ -97 +98 @@
-index ff61706054..1dca6e0532 100644
+index 1e60bc76dd..ad15b0de32 100644
@@ -100 +101 @@
-@@ -223,7 +223,4 @@ struct mlx5_mirror {
+@@ -207,7 +207,4 @@ enum mlx5_feature_name {
@@ -108 +109 @@
-@@ -470,8 +467,4 @@ struct mlx5_mirror {
+@@ -454,8 +451,4 @@ enum mlx5_feature_name {
@@ -117 +118 @@
-@@ -520,7 +513,4 @@ struct mlx5_mirror {
+@@ -504,7 +497,4 @@ enum mlx5_feature_name {
@@ -142 +143 @@
-index fb7198c244..57d147bd8c 100644
+index 8b58265687..7085e9b258 100644
@@ -145,2 +146,2 @@
-@@ -8,6 +8,4 @@
- #include "mlx5_win_ext.h"
+@@ -13,6 +13,4 @@ enum {
+ };
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: remove unused macros' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (13 preceding siblings ...)
2025-11-21 11:19 ` patch 'net/mlx5: " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Kevin Traynor
` (81 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Thomas Monjalon; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/48ef824ea126c751d324e706cf1769ac7ab3282f
Thanks.
Kevin
---
From 48ef824ea126c751d324e706cf1769ac7ab3282f Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 31 Oct 2025 21:38:26 +0100
Subject: [PATCH] net/mlx5: remove unused macros
[ upstream commit f2638f1f388c9300850d217f9a820c1c40f78a77 ]
- IS_BATCH_CNT became unused when removing flow counter container.
- MLX5_ETHER_TYPE_FROM_HEADER was used in the first integrity item check.
- ERRNO_SAFE was used in the old logging macros.
Fixes: 994829e695c0 ("net/mlx5: remove single counter container")
Fixes: 23b0a8b298b1 ("net/mlx5: fix integrity item validation and translation")
Fixes: a170a30d22a8 ("net/mlx5: use dynamic logging")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
drivers/net/mlx5/mlx5.h | 2 --
drivers/net/mlx5/mlx5_flow.h | 7 -------
drivers/net/mlx5/mlx5_utils.h | 3 ---
3 files changed, 12 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 6cb4a29953..f2ddb5c7b4 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -495,6 +495,4 @@ struct __rte_cache_aligned mlx5_hw_q {
#define MLX5_CNT_MR_ALLOC_BULK 64
#define MLX5_CNT_SHARED_OFFSET 0x80000000
-#define IS_BATCH_CNT(cnt) (((cnt) & (MLX5_CNT_SHARED_OFFSET - 1)) >= \
- MLX5_CNT_BATCH_OFFSET)
#define MLX5_CNT_SIZE (sizeof(struct mlx5_flow_counter))
#define MLX5_AGE_SIZE (sizeof(struct mlx5_age_param))
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index ad15b0de32..aa8ea54c66 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1865,11 +1865,4 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ_SORT))
-/* extract next protocol type from Ethernet & VLAN headers */
-#define MLX5_ETHER_TYPE_FROM_HEADER(_s, _m, _itm, _prt) do { \
- (_prt) = ((const struct _s *)(_itm)->mask)->_m; \
- (_prt) &= ((const struct _s *)(_itm)->spec)->_m; \
- (_prt) = rte_be_to_cpu_16((_prt)); \
-} while (0)
-
/* array of valid combinations of RX Hash fields for RSS */
static const uint64_t mlx5_rss_hash_fields[] = {
diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h
index f933daf03c..1ad251cbc9 100644
--- a/drivers/net/mlx5/mlx5_utils.h
+++ b/drivers/net/mlx5/mlx5_utils.h
@@ -23,7 +23,4 @@
#include "mlx5_defs.h"
-/* Save and restore errno around argument evaluation. */
-#define ERRNO_SAFE(x) ((errno = (int []){ errno, ((x), 0) }[0]))
-
extern int mlx5_logtype;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.133082115 +0000
+++ 0016-net-mlx5-remove-unused-macros.patch 2025-11-21 11:05:09.389200854 +0000
@@ -1 +1 @@
-From f2638f1f388c9300850d217f9a820c1c40f78a77 Mon Sep 17 00:00:00 2001
+From 48ef824ea126c751d324e706cf1769ac7ab3282f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f2638f1f388c9300850d217f9a820c1c40f78a77 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 233cb416cb..4d9cf6b70b 100644
+index 6cb4a29953..f2ddb5c7b4 100644
@@ -26 +27 @@
-@@ -510,6 +510,4 @@ struct __rte_cache_aligned mlx5_hw_q {
+@@ -495,6 +495,4 @@ struct __rte_cache_aligned mlx5_hw_q {
@@ -34 +35 @@
-index 1dca6e0532..c525516672 100644
+index ad15b0de32..aa8ea54c66 100644
@@ -37 +38 @@
-@@ -1889,11 +1889,4 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
+@@ -1865,11 +1865,4 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
@@ -50 +51 @@
-index c65839c5d9..95866351c2 100644
+index f933daf03c..1ad251cbc9 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'doc: fix NVIDIA bifurcated driver presentation link' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (14 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: remove unused macros' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/dma-perf: fix use after free' " Kevin Traynor
` (80 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Kevin Traynor; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a337cc8783ea4b84286de598cd1a42c04c7441cd
Thanks.
Kevin
---
From a337cc8783ea4b84286de598cd1a42c04c7441cd Mon Sep 17 00:00:00 2001
From: Kevin Traynor <ktraynor@redhat.com>
Date: Mon, 29 Sep 2025 12:31:10 +0100
Subject: [PATCH] doc: fix NVIDIA bifurcated driver presentation link
[ upstream commit f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 ]
Fix link for Nvidia bifurcated DPDK PMD presentation.
Bugzilla ID: 1793
Fixes: d052a9a7d5f9 ("doc: fix link about bifurcated model in Linux guide")
Reported-by: Andre Muezerie <andremue@linux.microsoft.com>
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
doc/guides/linux_gsg/linux_drivers.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst
index 852a60f5c0..26c05cd8a5 100644
--- a/doc/guides/linux_gsg/linux_drivers.rst
+++ b/doc/guides/linux_gsg/linux_drivers.rst
@@ -385,5 +385,5 @@ Such model has the following benefits:
More about the bifurcated driver can be found in
NVIDIA `bifurcated PMD
-<https://www.dpdk.org/wp-content/uploads/sites/35/2016/10/Day02-Session04-RonyEfraim-Userspace2016.pdf>`_ presentation.
+<https://www.dpdk.org/wp-content/uploads/sites/23/2016/10/Day02-Session04-RonyEfraim-Userspace2016.pdf>`_ presentation.
.. _uio:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.160805292 +0000
+++ 0017-doc-fix-NVIDIA-bifurcated-driver-presentation-link.patch 2025-11-21 11:05:09.390001173 +0000
@@ -1 +1 @@
-From f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 Mon Sep 17 00:00:00 2001
+From a337cc8783ea4b84286de598cd1a42c04c7441cd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f219e55e51d6bb9f8fcfc5899cfe5752e0bfca93 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 039823d61e..739fc0226c 100644
+index 852a60f5c0..26c05cd8a5 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/dma-perf: fix use after free' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (15 preceding siblings ...)
2025-11-21 11:20 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/dma-perf: check buffer size' " Kevin Traynor
` (79 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Vamsi Attunuru, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/08cfbd6514e7d0982acd28aefd36c189bdc6b3a0
Thanks.
Kevin
---
From 08cfbd6514e7d0982acd28aefd36c189bdc6b3a0 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Mon, 20 Oct 2025 12:10:52 +0800
Subject: [PATCH] app/dma-perf: fix use after free
[ upstream commit e605615db7d4b104f41fc8f409eb569e962710d8 ]
The test_case->eal_args was pointer the entry of cfgfile, it will be
used later, but the cfgfile was closed in load_configs(). This commit
fix it by using strdup.
Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Vamsi Attunuru <vattunuru@marvell.com>
---
app/test-dma-perf/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c
index 0586b3e1d0..25a79d1d6c 100644
--- a/app/test-dma-perf/main.c
+++ b/app/test-dma-perf/main.c
@@ -481,4 +481,6 @@ load_configs(const char *path)
test_case->eal_args = rte_cfgfile_get_entry(cfgfile, section_name, "eal_args");
+ if (test_case->eal_args != NULL)
+ test_case->eal_args = strdup(test_case->eal_args);
test_case->is_valid = true;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.188630321 +0000
+++ 0018-app-dma-perf-fix-use-after-free.patch 2025-11-21 11:05:09.390200858 +0000
@@ -1 +1 @@
-From e605615db7d4b104f41fc8f409eb569e962710d8 Mon Sep 17 00:00:00 2001
+From 08cfbd6514e7d0982acd28aefd36c189bdc6b3a0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e605615db7d4b104f41fc8f409eb569e962710d8 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 4201cc02a0..64057788c3 100644
+index 0586b3e1d0..25a79d1d6c 100644
@@ -23 +24 @@
-@@ -490,4 +490,6 @@ load_configs(const char *path)
+@@ -481,4 +481,6 @@ load_configs(const char *path)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/dma-perf: check buffer size' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (16 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/dma-perf: fix use after free' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Kevin Traynor
` (78 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5694265ad26746ac10a050e299dcfbcbfb5936ca
Thanks.
Kevin
---
From 5694265ad26746ac10a050e299dcfbcbfb5936ca Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Mon, 20 Oct 2025 12:11:02 +0800
Subject: [PATCH] app/dma-perf: check buffer size
[ upstream commit 12b050defa729b0edf416e25ddf16203bcb176e2 ]
When the buf-size is too large, the test will show:
Case process killed by signal 11
The root cause is that rte_pktmbuf_pool_create() will truncate the
buf-size to uint16 type.
This commit add a friendly error trace when encounter such case.
Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-dma-perf/benchmark.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/app/test-dma-perf/benchmark.c b/app/test-dma-perf/benchmark.c
index 6d617ea200..c08c5c8dc6 100644
--- a/app/test-dma-perf/benchmark.c
+++ b/app/test-dma-perf/benchmark.c
@@ -459,4 +459,9 @@ setup_memory_env(struct test_configure *cfg,
}
+ if (buf_size > UINT16_MAX) {
+ PRINT_ERR("Error: Invalid buf size: %u\n", cur_buf_size);
+ return -1;
+ }
+
src_pool = rte_pktmbuf_pool_create("Benchmark_DMA_SRC",
nr_buf,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.216489487 +0000
+++ 0019-app-dma-perf-check-buffer-size.patch 2025-11-21 11:05:09.391068720 +0000
@@ -1 +1 @@
-From 12b050defa729b0edf416e25ddf16203bcb176e2 Mon Sep 17 00:00:00 2001
+From 5694265ad26746ac10a050e299dcfbcbfb5936ca Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 12b050defa729b0edf416e25ddf16203bcb176e2 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 694ad25cbe..6643ccc95f 100644
+index 6d617ea200..c08c5c8dc6 100644
@@ -27 +28 @@
-@@ -526,4 +526,9 @@ setup_memory_env(struct test_configure *cfg, uint32_t nr_buf,
+@@ -459,4 +459,9 @@ setup_memory_env(struct test_configure *cfg,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (17 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/dma-perf: check buffer size' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa: fix resource leak' " Kevin Traynor
` (77 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Amiya Ranjan Mohakud; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8f662319f5d43962f50e514009592576c5011806
Thanks.
Kevin
---
From 8f662319f5d43962f50e514009592576c5011806 Mon Sep 17 00:00:00 2001
From: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Date: Thu, 23 Oct 2025 14:00:19 +0530
Subject: [PATCH] net/vmxnet3: disable RSS for single queue for ESX8.0+
[ upstream commit 9a219380b148c1837e54eb15cff501cba1ba842a ]
This fixes the issue of v4 RSS configuration failure in
vmxnet3_v4_rss_configure() while writing to BAR register.
It's very specific to single queue configuration.
https://mails.dpdk.org/archives/users/2025-April/008236.html
Bugzilla ID: 1789
Fixes: 52ec00fd1474e8 ("net/vmxnet3: fix RSS setting on v4")
Signed-off-by: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
---
drivers/net/vmxnet3/vmxnet3_ethdev.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index e19aa43888..5943bad4d8 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -611,4 +611,11 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
PMD_INIT_FUNC_TRACE();
+ /* Disabling RSS for single queue pair */
+ if (dev->data->nb_rx_queues == 1 &&
+ dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) {
+ dev->data->dev_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_NONE;
+ PMD_INIT_LOG(ERR, "WARN: Disabling RSS for single Rx queue");
+ }
+
if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG)
dev->data->dev_conf.rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.244448379 +0000
+++ 0020-net-vmxnet3-disable-RSS-for-single-queue-for-ESX8.0.patch 2025-11-21 11:05:09.391200862 +0000
@@ -1 +1 @@
-From 9a219380b148c1837e54eb15cff501cba1ba842a Mon Sep 17 00:00:00 2001
+From 8f662319f5d43962f50e514009592576c5011806 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9a219380b148c1837e54eb15cff501cba1ba842a ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index b0c19c5c7c..da9af08207 100644
+index e19aa43888..5943bad4d8 100644
@@ -25 +26 @@
-@@ -612,4 +612,11 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
+@@ -611,4 +611,11 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/dpaa: fix resource leak' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (18 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix checksum error counter' " Kevin Traynor
` (76 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Vanshika Shukla; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3bba147837210cf9ee4125f81076fe6defa61f4b
Thanks.
Kevin
---
From 3bba147837210cf9ee4125f81076fe6defa61f4b Mon Sep 17 00:00:00 2001
From: Vanshika Shukla <vanshika.shukla@nxp.com>
Date: Fri, 24 Oct 2025 11:49:06 +0530
Subject: [PATCH] net/dpaa: fix resource leak
[ upstream commit e7665de896836e99866ef8016bbaa12223e1cfb7 ]
This patch correct the cleanup order of PCD and
FMan handles to prevent resource leaks reported by
coverity tool.
Coverity issue: 362787
Fixes: 4defbc8cbb6d ("net/dpaa: support FMCless mode")
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/net/dpaa/dpaa_flow.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c
index 2a22b23c8f..417b9b6fbb 100644
--- a/drivers/net/dpaa/dpaa_flow.c
+++ b/drivers/net/dpaa/dpaa_flow.c
@@ -1,4 +1,4 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2017-2019,2021-2024 NXP
+ * Copyright 2017-2019,2021-2025 NXP
*/
@@ -890,7 +890,7 @@ int dpaa_fm_init(void)
ret = fm_pcd_enable(pcd_handle);
if (ret) {
- fm_close(fman_handle);
- fm_pcd_close(pcd_handle);
DPAA_PMD_ERR("fm_pcd_enable: Failed");
+ fm_pcd_close(pcd_handle);
+ fm_close(fman_handle);
return -1;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.271687882 +0000
+++ 0021-net-dpaa-fix-resource-leak.patch 2025-11-21 11:05:09.392200866 +0000
@@ -1 +1 @@
-From e7665de896836e99866ef8016bbaa12223e1cfb7 Mon Sep 17 00:00:00 2001
+From 3bba147837210cf9ee4125f81076fe6defa61f4b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e7665de896836e99866ef8016bbaa12223e1cfb7 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix checksum error counter' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (19 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/dpaa: fix resource leak' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
` (75 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a11c55a94f641b8eb25c92e57ba69079ef11b56e
Thanks.
Kevin
---
From a11c55a94f641b8eb25c92e57ba69079ef11b56e Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:24 +0800
Subject: [PATCH] net/txgbe: fix checksum error counter
[ upstream commit b9ad8a6e728aff2c6628f07d41d54f6ca89b936b ]
Count the rx_l3_l4_xsum_error statistic in Rx path. Since this hardware
register counter is missing, resulted in the count always showing as 0
in error.
Fixes: 91fe49c87d76 ("net/txgbe: support device xstats")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 17 +++++++++++++++++
drivers/net/txgbe/txgbe_rxtx.c | 12 ++++++++----
drivers/net/txgbe/txgbe_rxtx.h | 1 +
drivers/net/txgbe/txgbe_rxtx_vec_neon.c | 9 ++++++++-
drivers/net/txgbe/txgbe_rxtx_vec_sse.c | 9 ++++++++-
5 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index ed4f1c1360..554d41aeee 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -2603,4 +2603,6 @@ txgbe_dev_xstats_get_(struct rte_eth_dev *dev, uint64_t *values,
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct txgbe_hw_stats *hw_stats = TXGBE_DEV_STATS(dev);
+ struct txgbe_rx_queue *rxq;
+ uint64_t rx_csum_err = 0;
unsigned int i, count;
@@ -2616,4 +2618,11 @@ txgbe_dev_xstats_get_(struct rte_eth_dev *dev, uint64_t *values,
limit = min(limit, txgbe_xstats_calc_num(dev));
+ /* Rx Checksum Errors */
+ for (i = 0; i < dev->data->nb_rx_queues; i++) {
+ rxq = dev->data->rx_queues[i];
+ rx_csum_err += rxq->csum_err;
+ }
+ hw_stats->rx_l3_l4_xsum_error = rx_csum_err;
+
/* Extended stats from txgbe_hw_stats */
for (i = 0; i < limit; i++) {
@@ -2658,4 +2667,6 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct txgbe_hw_stats *hw_stats = TXGBE_DEV_STATS(dev);
+ struct txgbe_rx_queue *rxq;
+ int i = 0;
/* HW registers are cleared on read */
@@ -2667,4 +2678,10 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
memset(hw_stats, 0, sizeof(*hw_stats));
+ /* Reset rxq checksum errors */
+ for (i = 0; i < dev->data->nb_rx_queues; i++) {
+ rxq = dev->data->rx_queues[i];
+ rxq->csum_err = 0;
+ }
+
return 0;
}
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 46e73a89cb..2f4690ec61 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -1278,5 +1278,5 @@ rx_desc_status_to_pkt_flags(uint32_t rx_status, uint64_t vlan_flags)
static inline uint64_t
-rx_desc_error_to_pkt_flags(uint32_t rx_status)
+rx_desc_error_to_pkt_flags(uint32_t rx_status, struct txgbe_rx_queue *rxq)
{
uint64_t pkt_flags = 0;
@@ -1286,4 +1286,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
pkt_flags |= (rx_status & TXGBE_RXD_ERR_IPCS
? RTE_MBUF_F_RX_IP_CKSUM_BAD : RTE_MBUF_F_RX_IP_CKSUM_GOOD);
+ rxq->csum_err += !!(rx_status & TXGBE_RXD_ERR_IPCS);
}
@@ -1291,4 +1292,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
pkt_flags |= (rx_status & TXGBE_RXD_ERR_L4CS
? RTE_MBUF_F_RX_L4_CKSUM_BAD : RTE_MBUF_F_RX_L4_CKSUM_GOOD);
+ rxq->csum_err += !!(rx_status & TXGBE_RXD_ERR_L4CS);
}
@@ -1296,4 +1298,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
rx_status & TXGBE_RXD_ERR_EIPCS) {
pkt_flags |= RTE_MBUF_F_RX_OUTER_IP_CKSUM_BAD;
+ rxq->csum_err += !!(rx_status & TXGBE_RXD_ERR_EIPCS);
}
@@ -1377,5 +1380,5 @@ txgbe_rx_scan_hw_ring(struct txgbe_rx_queue *rxq)
pkt_flags = rx_desc_status_to_pkt_flags(s[j],
rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(s[j]);
+ pkt_flags |= rx_desc_error_to_pkt_flags(s[j], rxq);
pkt_flags |=
txgbe_rxd_pkt_info_to_pkt_flags(pkt_info[j]);
@@ -1716,5 +1719,5 @@ txgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
pkt_flags = rx_desc_status_to_pkt_flags(staterr,
rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
+ pkt_flags |= rx_desc_error_to_pkt_flags(staterr, rxq);
pkt_flags |= txgbe_rxd_pkt_info_to_pkt_flags(pkt_info);
rxm->ol_flags = pkt_flags;
@@ -1792,5 +1795,5 @@ txgbe_fill_cluster_head_buf(struct rte_mbuf *head, struct txgbe_rx_desc *desc,
pkt_info = rte_le_to_cpu_32(desc->qw0.dw0);
pkt_flags = rx_desc_status_to_pkt_flags(staterr, rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
+ pkt_flags |= rx_desc_error_to_pkt_flags(staterr, rxq);
pkt_flags |= txgbe_rxd_pkt_info_to_pkt_flags(pkt_info);
if (TXGBE_RXD_RSCCNT(desc->qw0.dw0))
@@ -2697,4 +2700,5 @@ txgbe_reset_rx_queue(struct txgbe_adapter *adapter, struct txgbe_rx_queue *rxq)
rxq->rx_tail = 0;
rxq->nb_rx_hold = 0;
+ rxq->csum_err = 0;
rte_pktmbuf_free(rxq->pkt_first_seg);
rxq->pkt_first_seg = NULL;
diff --git a/drivers/net/txgbe/txgbe_rxtx.h b/drivers/net/txgbe/txgbe_rxtx.h
index 622a0d3981..f90db9dde7 100644
--- a/drivers/net/txgbe/txgbe_rxtx.h
+++ b/drivers/net/txgbe/txgbe_rxtx.h
@@ -324,4 +324,5 @@ struct txgbe_rx_queue {
struct rte_mbuf *rx_stage[RTE_PMD_TXGBE_RX_MAX_BURST * 2];
const struct rte_memzone *mz;
+ uint64_t csum_err;
};
diff --git a/drivers/net/txgbe/txgbe_rxtx_vec_neon.c b/drivers/net/txgbe/txgbe_rxtx_vec_neon.c
index d4d647fab5..5c990f5712 100644
--- a/drivers/net/txgbe/txgbe_rxtx_vec_neon.c
+++ b/drivers/net/txgbe/txgbe_rxtx_vec_neon.c
@@ -223,5 +223,5 @@ _recv_raw_pkts_vec(struct txgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
struct txgbe_rx_entry *sw_ring;
uint16_t nb_pkts_recd;
- int pos;
+ int pos, i;
uint8x16_t shuf_msk = {
0xFF, 0xFF,
@@ -332,4 +332,11 @@ _recv_raw_pkts_vec(struct txgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
&rx_pkts[pos]);
+ for (i = 0; i < RTE_TXGBE_DESCS_PER_LOOP; i++) {
+ if (rx_pkts[pos + i]->ol_flags &
+ (RTE_MBUF_F_RX_IP_CKSUM_BAD |
+ RTE_MBUF_F_RX_L4_CKSUM_BAD))
+ rxq->csum_err++;
+ }
+
/* D.2 pkt 3,4 set in_port/nb_seg and remove crc */
tmp = vsubq_u16(vreinterpretq_u16_u8(pkt_mb4), crc_adjust);
diff --git a/drivers/net/txgbe/txgbe_rxtx_vec_sse.c b/drivers/net/txgbe/txgbe_rxtx_vec_sse.c
index 8ecce33471..03c2af43d5 100644
--- a/drivers/net/txgbe/txgbe_rxtx_vec_sse.c
+++ b/drivers/net/txgbe/txgbe_rxtx_vec_sse.c
@@ -284,5 +284,5 @@ _recv_raw_pkts_vec(struct txgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
uint8_t use_ipsec = rxq->using_ipsec;
#endif
- int pos;
+ int pos, i;
uint64_t var;
__m128i shuf_msk;
@@ -452,4 +452,11 @@ _recv_raw_pkts_vec(struct txgbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
desc_to_olflags_v(descs, mbuf_init, vlan_flags, &rx_pkts[pos]);
+ for (i = 0; i < RTE_TXGBE_DESCS_PER_LOOP; i++) {
+ if (rx_pkts[pos + i]->ol_flags &
+ (RTE_MBUF_F_RX_IP_CKSUM_BAD |
+ RTE_MBUF_F_RX_L4_CKSUM_BAD))
+ rxq->csum_err++;
+ }
+
#ifdef RTE_LIB_SECURITY
if (unlikely(use_ipsec))
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.306708552 +0000
+++ 0022-net-txgbe-fix-checksum-error-counter.patch 2025-11-21 11:05:09.399200896 +0000
@@ -1 +1 @@
-From b9ad8a6e728aff2c6628f07d41d54f6ca89b936b Mon Sep 17 00:00:00 2001
+From a11c55a94f641b8eb25c92e57ba69079ef11b56e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b9ad8a6e728aff2c6628f07d41d54f6ca89b936b ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 7b040b08c5..cbb2ea815f 100644
+index ed4f1c1360..554d41aeee 100644
@@ -26 +27 @@
-@@ -2667,4 +2667,6 @@ txgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -2603,4 +2603,6 @@ txgbe_dev_xstats_get_(struct rte_eth_dev *dev, uint64_t *values,
@@ -33 +34 @@
-@@ -2680,4 +2682,11 @@ txgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -2616,4 +2618,11 @@ txgbe_dev_xstats_get_(struct rte_eth_dev *dev, uint64_t *values,
@@ -45 +46 @@
-@@ -2756,4 +2765,6 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
+@@ -2658,4 +2667,6 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
@@ -52 +53 @@
-@@ -2765,4 +2776,10 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
+@@ -2667,4 +2678,10 @@ txgbe_dev_xstats_reset(struct rte_eth_dev *dev)
@@ -64 +65 @@
-index 167bda8019..c606180741 100644
+index 46e73a89cb..2f4690ec61 100644
@@ -67 +68 @@
-@@ -1291,5 +1291,5 @@ rx_desc_status_to_pkt_flags(uint32_t rx_status, uint64_t vlan_flags)
+@@ -1278,5 +1278,5 @@ rx_desc_status_to_pkt_flags(uint32_t rx_status, uint64_t vlan_flags)
@@ -74 +75 @@
-@@ -1299,4 +1299,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
+@@ -1286,4 +1286,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
@@ -80 +81 @@
-@@ -1304,4 +1305,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
+@@ -1291,4 +1292,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
@@ -86 +87 @@
-@@ -1309,4 +1311,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
+@@ -1296,4 +1298,5 @@ rx_desc_error_to_pkt_flags(uint32_t rx_status)
@@ -92 +93 @@
-@@ -1390,5 +1393,5 @@ txgbe_rx_scan_hw_ring(struct txgbe_rx_queue *rxq)
+@@ -1377,5 +1380,5 @@ txgbe_rx_scan_hw_ring(struct txgbe_rx_queue *rxq)
@@ -99 +100 @@
-@@ -1729,5 +1732,5 @@ txgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1716,5 +1719,5 @@ txgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
@@ -106 +107 @@
-@@ -1805,5 +1808,5 @@ txgbe_fill_cluster_head_buf(struct rte_mbuf *head, struct txgbe_rx_desc *desc,
+@@ -1792,5 +1795,5 @@ txgbe_fill_cluster_head_buf(struct rte_mbuf *head, struct txgbe_rx_desc *desc,
@@ -113 +114 @@
-@@ -2754,4 +2757,5 @@ txgbe_reset_rx_queue(struct txgbe_adapter *adapter, struct txgbe_rx_queue *rxq)
+@@ -2697,4 +2700,5 @@ txgbe_reset_rx_queue(struct txgbe_adapter *adapter, struct txgbe_rx_queue *rxq)
@@ -120 +121 @@
-index b1ac03576f..02e2617cce 100644
+index 622a0d3981..f90db9dde7 100644
@@ -130 +131 @@
-index a56e2f4164..c408a65036 100644
+index d4d647fab5..5c990f5712 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/ngbe: fix checksum error counter' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (20 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix checksum error counter' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Kevin Traynor
` (74 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f9110ac3ce6716308bea981d6933095164adf472
Thanks.
Kevin
---
From f9110ac3ce6716308bea981d6933095164adf472 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:25 +0800
Subject: [PATCH] net/ngbe: fix checksum error counter
[ upstream commit 6280a306079840301b2cd4eee472142964c2e9f6 ]
Count the rx_l3_l4_xsum_error statistic in Rx path. Since this hardware
register counter is missing, resulted in the count always showing as 0
in error.
Fixes: 8b433d04adc9 ("net/ngbe: support device xstats")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_ethdev.c | 17 +++++++++++++++++
drivers/net/ngbe/ngbe_rxtx.c | 21 ++++++++++++++-------
drivers/net/ngbe/ngbe_rxtx.h | 1 +
drivers/net/ngbe/ngbe_rxtx_vec_neon.c | 9 ++++++++-
drivers/net/ngbe/ngbe_rxtx_vec_sse.c | 9 ++++++++-
5 files changed, 48 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index d3ac40299f..65143f8fe2 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -1702,4 +1702,6 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
struct ngbe_hw *hw = ngbe_dev_hw(dev);
struct ngbe_hw_stats *hw_stats = NGBE_DEV_STATS(dev);
+ struct ngbe_rx_queue *rxq;
+ uint64_t rx_csum_err = 0;
unsigned int i, count;
@@ -1715,4 +1717,11 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
limit = min(limit, ngbe_xstats_calc_num(dev));
+ /* Rx Checksum Errors */
+ for (i = 0; i < dev->data->nb_rx_queues; i++) {
+ rxq = dev->data->rx_queues[i];
+ rx_csum_err += rxq->csum_err;
+ }
+ hw_stats->rx_l3_l4_xsum_error = rx_csum_err;
+
/* Extended stats from ngbe_hw_stats */
for (i = 0; i < limit; i++) {
@@ -1791,4 +1800,6 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
struct ngbe_hw *hw = ngbe_dev_hw(dev);
struct ngbe_hw_stats *hw_stats = NGBE_DEV_STATS(dev);
+ struct ngbe_rx_queue *rxq;
+ int i = 0;
/* HW registers are cleared on read */
@@ -1800,4 +1811,10 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
memset(hw_stats, 0, sizeof(*hw_stats));
+ /* Reset rxq checksum errors */
+ for (i = 0; i < dev->data->nb_rx_queues; i++) {
+ rxq = dev->data->rx_queues[i];
+ rxq->csum_err = 0;
+ }
+
return 0;
}
diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c
index 8d31d47de9..42cb33dbfe 100644
--- a/drivers/net/ngbe/ngbe_rxtx.c
+++ b/drivers/net/ngbe/ngbe_rxtx.c
@@ -973,20 +973,26 @@ rx_desc_status_to_pkt_flags(uint32_t rx_status, uint64_t vlan_flags)
static inline uint64_t
-rx_desc_error_to_pkt_flags(uint32_t rx_status)
+rx_desc_error_to_pkt_flags(uint32_t rx_status, struct ngbe_rx_queue *rxq)
{
uint64_t pkt_flags = 0;
/* checksum offload can't be disabled */
- if (rx_status & NGBE_RXD_STAT_IPCS)
+ if (rx_status & NGBE_RXD_STAT_IPCS) {
pkt_flags |= (rx_status & NGBE_RXD_ERR_IPCS
? RTE_MBUF_F_RX_IP_CKSUM_BAD : RTE_MBUF_F_RX_IP_CKSUM_GOOD);
+ rxq->csum_err += !!(rx_status & NGBE_RXD_ERR_IPCS);
+ }
- if (rx_status & NGBE_RXD_STAT_L4CS)
+ if (rx_status & NGBE_RXD_STAT_L4CS) {
pkt_flags |= (rx_status & NGBE_RXD_ERR_L4CS
? RTE_MBUF_F_RX_L4_CKSUM_BAD : RTE_MBUF_F_RX_L4_CKSUM_GOOD);
+ rxq->csum_err += !!(rx_status & NGBE_RXD_ERR_L4CS);
+ }
if (rx_status & NGBE_RXD_STAT_EIPCS &&
- rx_status & NGBE_RXD_ERR_EIPCS)
+ rx_status & NGBE_RXD_ERR_EIPCS) {
pkt_flags |= RTE_MBUF_F_RX_OUTER_IP_CKSUM_BAD;
+ rxq->csum_err += !!(rx_status & NGBE_RXD_ERR_EIPCS);
+ }
return pkt_flags;
@@ -1061,5 +1067,5 @@ ngbe_rx_scan_hw_ring(struct ngbe_rx_queue *rxq)
pkt_flags = rx_desc_status_to_pkt_flags(s[j],
rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(s[j]);
+ pkt_flags |= rx_desc_error_to_pkt_flags(s[j], rxq);
pkt_flags |=
ngbe_rxd_pkt_info_to_pkt_flags(pkt_info[j]);
@@ -1394,5 +1400,5 @@ ngbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
pkt_flags = rx_desc_status_to_pkt_flags(staterr,
rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
+ pkt_flags |= rx_desc_error_to_pkt_flags(staterr, rxq);
pkt_flags |= ngbe_rxd_pkt_info_to_pkt_flags(pkt_info);
rxm->ol_flags = pkt_flags;
@@ -1465,5 +1471,5 @@ ngbe_fill_cluster_head_buf(struct rte_mbuf *head, struct ngbe_rx_desc *desc,
pkt_info = rte_le_to_cpu_32(desc->qw0.dw0);
pkt_flags = rx_desc_status_to_pkt_flags(staterr, rxq->vlan_flags);
- pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
+ pkt_flags |= rx_desc_error_to_pkt_flags(staterr, rxq);
pkt_flags |= ngbe_rxd_pkt_info_to_pkt_flags(pkt_info);
head->ol_flags = pkt_flags;
@@ -2267,4 +2273,5 @@ ngbe_reset_rx_queue(struct ngbe_adapter *adapter, struct ngbe_rx_queue *rxq)
rxq->rx_tail = 0;
rxq->nb_rx_hold = 0;
+ rxq->csum_err = 0;
rte_pktmbuf_free(rxq->pkt_first_seg);
rxq->pkt_first_seg = NULL;
diff --git a/drivers/net/ngbe/ngbe_rxtx.h b/drivers/net/ngbe/ngbe_rxtx.h
index 8534ec123a..7b96b837ca 100644
--- a/drivers/net/ngbe/ngbe_rxtx.h
+++ b/drivers/net/ngbe/ngbe_rxtx.h
@@ -293,4 +293,5 @@ struct ngbe_rx_queue {
struct rte_mbuf *rx_stage[RTE_PMD_NGBE_RX_MAX_BURST * 2];
const struct rte_memzone *mz;
+ uint64_t csum_err;
};
diff --git a/drivers/net/ngbe/ngbe_rxtx_vec_neon.c b/drivers/net/ngbe/ngbe_rxtx_vec_neon.c
index 37075ea5e7..55df0ad3a5 100644
--- a/drivers/net/ngbe/ngbe_rxtx_vec_neon.c
+++ b/drivers/net/ngbe/ngbe_rxtx_vec_neon.c
@@ -223,5 +223,5 @@ _recv_raw_pkts_vec(struct ngbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
struct ngbe_rx_entry *sw_ring;
uint16_t nb_pkts_recd;
- int pos;
+ int pos, i;
uint8x16_t shuf_msk = {
0xFF, 0xFF,
@@ -332,4 +332,11 @@ _recv_raw_pkts_vec(struct ngbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
&rx_pkts[pos]);
+ for (i = 0; i < RTE_NGBE_DESCS_PER_LOOP; i++) {
+ if (rx_pkts[pos + i]->ol_flags &
+ (RTE_MBUF_F_RX_IP_CKSUM_BAD |
+ RTE_MBUF_F_RX_L4_CKSUM_BAD))
+ rxq->csum_err++;
+ }
+
/* D.2 pkt 3,4 set in_port/nb_seg and remove crc */
tmp = vsubq_u16(vreinterpretq_u16_u8(pkt_mb4), crc_adjust);
diff --git a/drivers/net/ngbe/ngbe_rxtx_vec_sse.c b/drivers/net/ngbe/ngbe_rxtx_vec_sse.c
index 19c69cdfa6..474101c600 100644
--- a/drivers/net/ngbe/ngbe_rxtx_vec_sse.c
+++ b/drivers/net/ngbe/ngbe_rxtx_vec_sse.c
@@ -245,5 +245,5 @@ _recv_raw_pkts_vec(struct ngbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
struct ngbe_rx_entry *sw_ring;
uint16_t nb_pkts_recd;
- int pos;
+ int pos, i;
uint64_t var;
__m128i shuf_msk;
@@ -413,4 +413,11 @@ _recv_raw_pkts_vec(struct ngbe_rx_queue *rxq, struct rte_mbuf **rx_pkts,
desc_to_olflags_v(descs, mbuf_init, vlan_flags, &rx_pkts[pos]);
+ for (i = 0; i < RTE_NGBE_DESCS_PER_LOOP; i++) {
+ if (rx_pkts[pos + i]->ol_flags &
+ (RTE_MBUF_F_RX_IP_CKSUM_BAD |
+ RTE_MBUF_F_RX_L4_CKSUM_BAD))
+ rxq->csum_err++;
+ }
+
/* D.2 pkt 3,4 set in_port/nb_seg and remove crc */
pkt_mb4 = _mm_add_epi16(pkt_mb4, crc_adjust);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.337953232 +0000
+++ 0023-net-ngbe-fix-checksum-error-counter.patch 2025-11-21 11:05:09.404200918 +0000
@@ -1 +1 @@
-From 6280a306079840301b2cd4eee472142964c2e9f6 Mon Sep 17 00:00:00 2001
+From f9110ac3ce6716308bea981d6933095164adf472 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6280a306079840301b2cd4eee472142964c2e9f6 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index adb7785498..8b9d6371fb 100644
+index d3ac40299f..65143f8fe2 100644
@@ -26 +27 @@
-@@ -1705,4 +1705,6 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -1702,4 +1702,6 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
@@ -33 +34 @@
-@@ -1718,4 +1720,11 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -1715,4 +1717,11 @@ ngbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
@@ -45 +46 @@
-@@ -1794,4 +1803,6 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
+@@ -1791,4 +1800,6 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
@@ -52 +53 @@
-@@ -1803,4 +1814,10 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
+@@ -1800,4 +1811,10 @@ ngbe_dev_xstats_reset(struct rte_eth_dev *dev)
@@ -64 +65 @@
-index 95e2172ee4..a60421293b 100644
+index 8d31d47de9..42cb33dbfe 100644
@@ -136 +137 @@
-index 46391c9400..79685de181 100644
+index 37075ea5e7..55df0ad3a5 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: reduce memory size of ring descriptors' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (21 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
` (73 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d70a651fa8aa4fffb488a89cb068b5234225ef14
Thanks.
Kevin
---
From d70a651fa8aa4fffb488a89cb068b5234225ef14 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:26 +0800
Subject: [PATCH] net/txgbe: reduce memory size of ring descriptors
[ upstream commit 843c59d1c2cef10a75037ebc73460f2ed28f9839 ]
The memory of ring descriptors was allocated in size of the maximum ring
size. It seems not friendly to our hardware on some domestic platforms.
Change it to allocate in size of the real ring size.
Fixes: 226bf98eda87 ("net/txgbe: add Rx and Tx queues setup and release")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 2f4690ec61..e2ac091dfe 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -2468,11 +2468,7 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
- /*
- * Allocate TX ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate TX ring hardware descriptors. */
tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
- sizeof(struct txgbe_tx_desc) * TXGBE_RING_DESC_MAX,
+ sizeof(struct txgbe_tx_desc) * nb_desc,
TXGBE_ALIGN, socket_id);
if (tz == NULL) {
@@ -2725,4 +2721,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
struct txgbe_adapter *adapter = TXGBE_DEV_ADAPTER(dev);
uint64_t offloads;
+ uint32_t size;
PMD_INIT_FUNC_TRACE();
@@ -2775,11 +2772,8 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
rxq->pkt_type_mask = TXGBE_PTID_MASK;
- /*
- * Allocate RX ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate RX ring hardware descriptors. */
+ size = (nb_desc + RTE_PMD_TXGBE_RX_MAX_BURST) * sizeof(struct txgbe_rx_desc);
rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
- RX_RING_SZ, TXGBE_ALIGN, socket_id);
+ size, TXGBE_ALIGN, socket_id);
if (rz == NULL) {
txgbe_rx_queue_release(rxq);
@@ -2791,5 +2785,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
* Zero init all the descriptors in the ring.
*/
- memset(rz->addr, 0, RX_RING_SZ);
+ memset(rz->addr, 0, size);
/*
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.367975227 +0000
+++ 0024-net-txgbe-reduce-memory-size-of-ring-descriptors.patch 2025-11-21 11:05:09.406200926 +0000
@@ -1 +1 @@
-From 843c59d1c2cef10a75037ebc73460f2ed28f9839 Mon Sep 17 00:00:00 2001
+From d70a651fa8aa4fffb488a89cb068b5234225ef14 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 843c59d1c2cef10a75037ebc73460f2ed28f9839 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index c606180741..d77db1efa2 100644
+index 2f4690ec61..e2ac091dfe 100644
@@ -22 +23 @@
-@@ -2522,11 +2522,7 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -2468,11 +2468,7 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
@@ -36 +37 @@
-@@ -2782,4 +2778,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2725,4 +2721,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -42 +43 @@
-@@ -2832,11 +2829,8 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2775,11 +2772,8 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
@@ -57 +58 @@
-@@ -2848,5 +2842,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -2791,5 +2785,5 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/ngbe: reduce memory size of ring descriptors' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (22 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Kevin Traynor
` (72 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/899e35e519d9a687d20c00830efb6bc73803d8a7
Thanks.
Kevin
---
From 899e35e519d9a687d20c00830efb6bc73803d8a7 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:27 +0800
Subject: [PATCH] net/ngbe: reduce memory size of ring descriptors
[ upstream commit 22d4fffbbc99ef2a229869e717a12b2e33c68a9c ]
The memory of ring descriptors was allocated in size of the maximum ring
size. It seems not friendly to our hardware on some domestic platforms.
Change it to allocate in size of the real ring size.
Fixes: 43b7e5ea60ac ("net/ngbe: support Rx queue setup/release")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_rxtx.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c
index 42cb33dbfe..467f1cc9c8 100644
--- a/drivers/net/ngbe/ngbe_rxtx.c
+++ b/drivers/net/ngbe/ngbe_rxtx.c
@@ -2059,11 +2059,7 @@ ngbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
- /*
- * Allocate Tx ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate Tx ring hardware descriptors. */
tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
- sizeof(struct ngbe_tx_desc) * NGBE_RING_DESC_MAX,
+ sizeof(struct ngbe_tx_desc) * nb_desc,
NGBE_ALIGN, socket_id);
if (tz == NULL) {
@@ -2325,4 +2321,5 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
struct ngbe_adapter *adapter = ngbe_dev_adapter(dev);
uint64_t offloads;
+ uint32_t size;
PMD_INIT_FUNC_TRACE();
@@ -2358,11 +2355,8 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
rxq->offloads = offloads;
- /*
- * Allocate Rx ring hardware descriptors. A memzone large enough to
- * handle the maximum ring size is allocated in order to allow for
- * resizing in later calls to the queue setup function.
- */
+ /* Allocate Rx ring hardware descriptors. */
+ size = (nb_desc + RTE_PMD_NGBE_RX_MAX_BURST) * sizeof(struct ngbe_rx_desc);
rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
- RX_RING_SZ, NGBE_ALIGN, socket_id);
+ size, NGBE_ALIGN, socket_id);
if (rz == NULL) {
ngbe_rx_queue_release(rxq);
@@ -2374,5 +2368,5 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
* Zero init all the descriptors in the ring.
*/
- memset(rz->addr, 0, RX_RING_SZ);
+ memset(rz->addr, 0, size);
rxq->rdt_reg_addr = NGBE_REG_ADDR(hw, NGBE_RXWP(rxq->reg_idx));
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.396695281 +0000
+++ 0025-net-ngbe-reduce-memory-size-of-ring-descriptors.patch 2025-11-21 11:05:09.408200935 +0000
@@ -1 +1 @@
-From 22d4fffbbc99ef2a229869e717a12b2e33c68a9c Mon Sep 17 00:00:00 2001
+From 899e35e519d9a687d20c00830efb6bc73803d8a7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 22d4fffbbc99ef2a229869e717a12b2e33c68a9c ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index a60421293b..03ada844bf 100644
+index 42cb33dbfe..467f1cc9c8 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix VF Rx buffer size in config register' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (23 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: remove duplicate Tx queue assignment' " Kevin Traynor
` (71 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c6a87e4b41cf9a49c5ad84a045c89a399fb88679
Thanks.
Kevin
---
From c6a87e4b41cf9a49c5ad84a045c89a399fb88679 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:28 +0800
Subject: [PATCH] net/txgbe: fix VF Rx buffer size in config register
[ upstream commit ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 ]
Refer to commit 8a3ef4b89e6d ("net/txgbe: fix Rx buffer size in
config register").
When round up buffer size to 1K, to configure the register, hardware
will receive packets exceeding the buffer size in LRO mode. It will
cause a segment fault in the receive function.
Fixes: 92144bb36c6f ("net/txgbe: support VF Rx/Tx")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index e2ac091dfe..30b49f7cc4 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -5140,5 +5140,5 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) -
RTE_PKTMBUF_HEADROOM);
- buf_size = ROUND_UP(buf_size, 1 << 10);
+ buf_size = ROUND_DOWN(buf_size, 1 << 10);
srrctl |= TXGBE_RXCFG_PKTLEN(buf_size);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.427096745 +0000
+++ 0026-net-txgbe-fix-VF-Rx-buffer-size-in-config-register.patch 2025-11-21 11:05:09.410200943 +0000
@@ -1 +1 @@
-From ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 Mon Sep 17 00:00:00 2001
+From c6a87e4b41cf9a49c5ad84a045c89a399fb88679 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee2bc2d16c6d1c59d8f5eae16a874866e3a60de7 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index d77db1efa2..a3472bcf34 100644
+index e2ac091dfe..30b49f7cc4 100644
@@ -25 +26 @@
-@@ -5257,5 +5257,5 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
+@@ -5140,5 +5140,5 @@ txgbevf_dev_rx_init(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: remove duplicate Tx queue assignment' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (24 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: add device arguments for FDIR' " Kevin Traynor
` (70 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a448c0091728250dd14b2c115598a2dc5ab929a0
Thanks.
Kevin
---
From a448c0091728250dd14b2c115598a2dc5ab929a0 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:30 +0800
Subject: [PATCH] net/txgbe: remove duplicate Tx queue assignment
[ upstream commit 1623a62ba811dbfd3e261ccdbac6d6c95a3ecfcb ]
Duplicate code was introduced in the previous patch, cleanup it.
Fixes: 0eabdfcd4af4 ("net/txgbe: enable Tx descriptor error interrupt")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 30b49f7cc4..5cc8ca988b 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -877,5 +877,4 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
tx_offload.data[0] = 0;
tx_offload.data[1] = 0;
- txq = tx_queue;
sw_ring = txq->sw_ring;
txr = txq->tx_ring;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.456916600 +0000
+++ 0027-net-txgbe-remove-duplicate-Tx-queue-assignment.patch 2025-11-21 11:05:09.412200952 +0000
@@ -1 +1 @@
-From 1623a62ba811dbfd3e261ccdbac6d6c95a3ecfcb Mon Sep 17 00:00:00 2001
+From a448c0091728250dd14b2c115598a2dc5ab929a0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1623a62ba811dbfd3e261ccdbac6d6c95a3ecfcb ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index a3472bcf34..78199ea00b 100644
+index 30b49f7cc4..5cc8ca988b 100644
@@ -20 +21 @@
-@@ -890,5 +890,4 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
+@@ -877,5 +877,4 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: add device arguments for FDIR' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (25 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: remove duplicate Tx queue assignment' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Kevin Traynor
` (69 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/005e840cdfd8ef34e4430243ee3c5c93acb61038
Thanks.
Kevin
---
From 005e840cdfd8ef34e4430243ee3c5c93acb61038 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:31 +0800
Subject: [PATCH] net/txgbe: add device arguments for FDIR
[ upstream commit 7e18be9beef25ee60f9c04f757cb4361706ff818 ]
Since FDIR configuration is deprecated in generic ethdev device
configuration and move it into the device private data, there is no way
to configure the FDIR parameters.
Two device arguments "pkt-filter-size" and "pkt-filter-drop-queue" are
added, they just continue to use the previous naming convention.
Fixes: 5007ac13189d ("ethdev: remove deprecated Flow Director configuration")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_type.h | 4 ++++
drivers/net/txgbe/txgbe_ethdev.c | 22 +++++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h
index 65527a22e7..0a5d98a4d1 100644
--- a/drivers/net/txgbe/base/txgbe_type.h
+++ b/drivers/net/txgbe/base/txgbe_type.h
@@ -700,4 +700,6 @@ struct txgbe_phy_info {
#define TXGBE_DEVARG_FFE_PRE "ffe_pre"
#define TXGBE_DEVARG_FFE_POST "ffe_post"
+#define TXGBE_DEVARG_FDIR_PBALLOC "pkt-filter-size"
+#define TXGBE_DEVARG_FDIR_DROP_QUEUE "pkt-filter-drop-queue"
static const char * const txgbe_valid_arguments[] = {
@@ -710,4 +712,6 @@ static const char * const txgbe_valid_arguments[] = {
TXGBE_DEVARG_FFE_PRE,
TXGBE_DEVARG_FFE_POST,
+ TXGBE_DEVARG_FDIR_PBALLOC,
+ TXGBE_DEVARG_FDIR_DROP_QUEUE,
NULL
};
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 554d41aeee..1a92cd26c9 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -498,6 +498,10 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
static void
-txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+txgbe_parse_devargs(struct rte_eth_dev *dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
+ struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ struct rte_devargs *devargs = pci_dev->device.devargs;
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct rte_kvargs *kvlist;
u16 auto_neg = 1;
@@ -509,4 +513,7 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
u16 ffe_pre = 8;
u16 ffe_post = 44;
+ /* FDIR args */
+ u8 pballoc = 0;
+ u8 drop_queue = 127;
if (devargs == NULL)
@@ -533,4 +540,8 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
rte_kvargs_process(kvlist, TXGBE_DEVARG_FFE_POST,
&txgbe_handle_devarg, &ffe_post);
+ rte_kvargs_process(kvlist, TXGBE_DEVARG_FDIR_PBALLOC,
+ &txgbe_handle_devarg, &pballoc);
+ rte_kvargs_process(kvlist, TXGBE_DEVARG_FDIR_DROP_QUEUE,
+ &txgbe_handle_devarg, &drop_queue);
rte_kvargs_free(kvlist);
@@ -544,4 +555,7 @@ null:
hw->phy.ffe_pre = ffe_pre;
hw->phy.ffe_post = ffe_post;
+
+ fdir_conf->pballoc = pballoc;
+ fdir_conf->drop_queue = drop_queue;
}
@@ -632,5 +646,5 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
hw->isb_mem = TMZ_VADDR(mz);
- txgbe_parse_devargs(hw, pci_dev->device.devargs);
+ txgbe_parse_devargs(eth_dev);
/* Initialize the shared code (base driver) */
err = txgbe_init_shared_code(hw);
@@ -5696,5 +5710,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
TXGBE_DEVARG_FFE_MAIN "=<uint16>"
TXGBE_DEVARG_FFE_PRE "=<uint16>"
- TXGBE_DEVARG_FFE_POST "=<uint16>");
+ TXGBE_DEVARG_FFE_POST "=<uint16>"
+ TXGBE_DEVARG_FDIR_PBALLOC "=<0|1|2>"
+ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>");
RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_init, init, NOTICE);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.487522902 +0000
+++ 0028-net-txgbe-add-device-arguments-for-FDIR.patch 2025-11-21 11:05:09.415200964 +0000
@@ -1 +1 @@
-From 7e18be9beef25ee60f9c04f757cb4361706ff818 Mon Sep 17 00:00:00 2001
+From 005e840cdfd8ef34e4430243ee3c5c93acb61038 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7e18be9beef25ee60f9c04f757cb4361706ff818 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19,2 +20,2 @@
- drivers/net/txgbe/txgbe_ethdev.c | 20 ++++++++++++++++++--
- 2 files changed, 22 insertions(+), 2 deletions(-)
+ drivers/net/txgbe/txgbe_ethdev.c | 22 +++++++++++++++++++---
+ 2 files changed, 23 insertions(+), 3 deletions(-)
@@ -23 +24 @@
-index 07b443c2e0..b5dbc9b755 100644
+index 65527a22e7..0a5d98a4d1 100644
@@ -26 +27 @@
-@@ -744,4 +744,6 @@ struct txgbe_phy_info {
+@@ -700,4 +700,6 @@ struct txgbe_phy_info {
@@ -31,3 +32,3 @@
- #define TXGBE_DEVARG_TX_HEAD_WB "tx_headwb"
- #define TXGBE_DEVARG_TX_HEAD_WB_SIZE "tx_headwb_size"
-@@ -757,4 +759,6 @@ static const char * const txgbe_valid_arguments[] = {
+
+ static const char * const txgbe_valid_arguments[] = {
+@@ -710,4 +712,6 @@ static const char * const txgbe_valid_arguments[] = {
@@ -38,2 +39,2 @@
- TXGBE_DEVARG_TX_HEAD_WB,
- TXGBE_DEVARG_TX_HEAD_WB_SIZE,
+ NULL
+ };
@@ -41 +42 @@
-index cbb2ea815f..e9bbf8ea72 100644
+index 554d41aeee..1a92cd26c9 100644
@@ -44 +45 @@
-@@ -525,6 +525,10 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
+@@ -498,6 +498,10 @@ txgbe_handle_devarg(__rte_unused const char *key, const char *value,
@@ -56 +57 @@
-@@ -536,4 +540,7 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+@@ -509,4 +513,7 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
@@ -62,3 +63,3 @@
- /* New devargs for amberlite config */
- u16 tx_headwb = 1;
-@@ -564,4 +571,8 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
+
+ if (devargs == NULL)
+@@ -533,4 +540,8 @@ txgbe_parse_devargs(struct txgbe_hw *hw, struct rte_devargs *devargs)
@@ -71,3 +72,3 @@
- rte_kvargs_process(kvlist, TXGBE_DEVARG_TX_HEAD_WB,
- &txgbe_handle_devarg, &tx_headwb);
-@@ -584,4 +595,7 @@ null:
+ rte_kvargs_free(kvlist);
+
+@@ -544,4 +555,7 @@ null:
@@ -81 +82 @@
-@@ -672,5 +686,5 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
+@@ -632,5 +646,5 @@ eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
@@ -88 +89,2 @@
-@@ -6035,4 +6049,6 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
+@@ -5696,5 +5710,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_txgbe,
+ TXGBE_DEVARG_FFE_MAIN "=<uint16>"
@@ -90 +92,2 @@
- TXGBE_DEVARG_FFE_POST "=<uint16>"
+- TXGBE_DEVARG_FFE_POST "=<uint16>");
++ TXGBE_DEVARG_FFE_POST "=<uint16>"
@@ -92,3 +95,3 @@
-+ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>"
- TXGBE_DEVARG_TX_HEAD_WB "=<0|1>"
- TXGBE_DEVARG_TX_HEAD_WB_SIZE "=<1|16>"
++ TXGBE_DEVARG_FDIR_DROP_QUEUE "=<uint8>");
+
+ RTE_LOG_REGISTER_SUFFIX(txgbe_logtype_init, init, NOTICE);
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix maximum number of FDIR filters' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (26 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: add device arguments for FDIR' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR mode clearing' " Kevin Traynor
` (68 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/cec2df5b6cf66453c1b89ceb9ae9495ed11eb709
Thanks.
Kevin
---
From cec2df5b6cf66453c1b89ceb9ae9495ed11eb709 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:32 +0800
Subject: [PATCH] net/txgbe: fix maximum number of FDIR filters
[ upstream commit 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 ]
FDIR is determined the maximum value on the hardware based on the
memory space allocated (i.e. fdir_conf.pballoc). But the hash map of
FDIR is created based on TXGBE_MAX_FDIR_FILTER_NUM. These two do not
match. It resulted in the absence of error when creating more FDIR rules
than the maximum allowed by the hardware.
Fixes: 635c21354f9a ("net/txgbe: add flow director filter init and uninit")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 6 ++++--
drivers/net/txgbe/txgbe_fdir.c | 4 +++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 1a92cd26c9..7df1841561 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -896,9 +896,11 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(eth_dev);
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(eth_dev);
char fdir_hash_name[RTE_HASH_NAMESIZE];
+ u16 max_fdir_num = (1024 << (fdir_conf->pballoc + 1)) - 2;
struct rte_hash_parameters fdir_hash_params = {
.name = fdir_hash_name,
- .entries = TXGBE_MAX_FDIR_FILTER_NUM,
+ .entries = max_fdir_num,
.key_len = sizeof(struct txgbe_atr_input),
.hash_func = rte_hash_crc,
@@ -917,5 +919,5 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
fdir_info->hash_map = rte_zmalloc("txgbe",
sizeof(struct txgbe_fdir_filter *) *
- TXGBE_MAX_FDIR_FILTER_NUM,
+ max_fdir_num,
0);
if (!fdir_info->hash_map) {
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 0efd43b59a..631dec69e8 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -960,4 +960,5 @@ int
txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
{
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(dev);
struct txgbe_fdir_filter *fdir_filter;
@@ -968,5 +969,6 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
rte_hash_reset(fdir_info->hash_handle);
memset(fdir_info->hash_map, 0,
- sizeof(struct txgbe_fdir_filter *) * TXGBE_MAX_FDIR_FILTER_NUM);
+ sizeof(struct txgbe_fdir_filter *) *
+ ((1024 << (fdir_conf->pballoc + 1)) - 2));
filter_flag = TAILQ_FIRST(&fdir_info->fdir_list);
while ((fdir_filter = TAILQ_FIRST(&fdir_info->fdir_list))) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.518395587 +0000
+++ 0029-net-txgbe-fix-maximum-number-of-FDIR-filters.patch 2025-11-21 11:05:09.418200977 +0000
@@ -1 +1 @@
-From 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 Mon Sep 17 00:00:00 2001
+From cec2df5b6cf66453c1b89ceb9ae9495ed11eb709 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5b1429fe2674e331d21a8c343d4129e6b7fbcce5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index e9bbf8ea72..f650c5b7a4 100644
+index 1a92cd26c9..7df1841561 100644
@@ -25 +26 @@
-@@ -936,9 +936,11 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
+@@ -896,9 +896,11 @@ static int txgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev)
@@ -38 +39 @@
-@@ -957,5 +959,5 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
+@@ -917,5 +919,5 @@ static int txgbe_fdir_filter_init(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix FDIR mode clearing' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (27 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Kevin Traynor
` (67 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0609d9f76299085f3d7a885bf0202a8b58d88647
Thanks.
Kevin
---
From 0609d9f76299085f3d7a885bf0202a8b58d88647 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:33 +0800
Subject: [PATCH] net/txgbe: fix FDIR mode clearing
[ upstream commit 26048c25942f2579a821a99b78db48fdb2c90c77 ]
When FDIR flow rules are all cleared, FDIR mode is not cleared. This will
cause that creating new FDIR flow rules failed, for their mode are
different from the previously deleted ones.
Fixes: 6bde42fe7fa5 ("net/txgbe: flush all filters")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 1 +
drivers/net/txgbe/txgbe_flow.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 631dec69e8..77d0cc4c30 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -971,4 +971,5 @@ txgbe_clear_all_fdir_filter(struct rte_eth_dev *dev)
sizeof(struct txgbe_fdir_filter *) *
((1024 << (fdir_conf->pballoc + 1)) - 2));
+ fdir_conf->mode = RTE_FDIR_MODE_NONE;
filter_flag = TAILQ_FIRST(&fdir_info->fdir_list);
while ((fdir_filter = TAILQ_FIRST(&fdir_info->fdir_list))) {
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 7482cbbf63..9b7643c6e2 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -3427,4 +3427,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
struct txgbe_flow_mem *txgbe_flow_mem_ptr;
struct txgbe_hw_fdir_info *fdir_info = TXGBE_DEV_FDIR(dev);
+ struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
struct txgbe_rss_conf_ele *rss_filter_ptr;
@@ -3486,4 +3487,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
fdir_info->flex_relative = false;
fdir_info->flex_bytes_offset = 0;
+ fdir_conf->mode = RTE_FDIR_MODE_NONE;
}
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.546705384 +0000
+++ 0030-net-txgbe-fix-FDIR-mode-clearing.patch 2025-11-21 11:05:09.420200986 +0000
@@ -1 +1 @@
-From 26048c25942f2579a821a99b78db48fdb2c90c77 Mon Sep 17 00:00:00 2001
+From 0609d9f76299085f3d7a885bf0202a8b58d88647 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 26048c25942f2579a821a99b78db48fdb2c90c77 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 31af3593ed..25cf0db316 100644
+index 7482cbbf63..9b7643c6e2 100644
@@ -33 +34 @@
-@@ -3430,4 +3430,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
+@@ -3427,4 +3427,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
@@ -39 +40 @@
-@@ -3489,4 +3490,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
+@@ -3486,4 +3487,5 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix FDIR drop action for L4 match packets' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (28 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR mode clearing' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR filter for SCTP tunnel' " Kevin Traynor
` (66 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4fede0826601438e4b93b62a7ccb423546ad10bf
Thanks.
Kevin
---
From 4fede0826601438e4b93b62a7ccb423546ad10bf Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:34 +0800
Subject: [PATCH] net/txgbe: fix FDIR drop action for L4 match packets
[ upstream commit 3c858be4997d779a05dd32630ad57c740a2729bc ]
FDIR flow rules support to drop packets without being limited to L3
packets. Remove the redundant limitation.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_flow.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 9b7643c6e2..a6a27a298f 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2840,5 +2840,4 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
{
int ret;
- struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
struct rte_eth_fdir_conf *fdir_conf = TXGBE_DEV_FDIR_CONF(dev);
@@ -2854,10 +2853,4 @@ txgbe_parse_fdir_filter(struct rte_eth_dev *dev,
step_next:
-
- if (hw->mac.type == txgbe_mac_raptor &&
- rule->fdirflags == TXGBE_FDIRPICMD_DROP &&
- (rule->input.src_port != 0 || rule->input.dst_port != 0))
- return -ENOTSUP;
-
if (fdir_conf->mode == RTE_FDIR_MODE_NONE) {
fdir_conf->mode = rule->mode;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.576114554 +0000
+++ 0031-net-txgbe-fix-FDIR-drop-action-for-L4-match-packets.patch 2025-11-21 11:05:09.421200990 +0000
@@ -1 +1 @@
-From 3c858be4997d779a05dd32630ad57c740a2729bc Mon Sep 17 00:00:00 2001
+From 4fede0826601438e4b93b62a7ccb423546ad10bf Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3c858be4997d779a05dd32630ad57c740a2729bc ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 25cf0db316..7cf079a1cf 100644
+index 9b7643c6e2..a6a27a298f 100644
@@ -31 +32 @@
-- if (hw->mac.type == txgbe_mac_sp &&
+- if (hw->mac.type == txgbe_mac_raptor &&
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix FDIR filter for SCTP tunnel' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (29 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: filter FDIR match flex bytes for " Kevin Traynor
` (65 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ae4350b58157fa0acdafe10598e0c51ee213b7bd
Thanks.
Kevin
---
From ae4350b58157fa0acdafe10598e0c51ee213b7bd Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:35 +0800
Subject: [PATCH] net/txgbe: fix FDIR filter for SCTP tunnel
[ upstream commit c9a341034a29bc5245dd9fc21678be0b30313394 ]
This commit is the same as commit
0db38d54b57a ("net/txgbe: fix to create FDIR filter for SCTP packet").
The check for the mask of SCTP item is repeated and wrong, fix it to
make it work.
Fixes: a1851465f825 ("net/txgbe: fix to create FDIR filter for tunnel packet")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_flow.c | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index a6a27a298f..db5db58edc 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2799,17 +2799,4 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
sctp_spec->hdr.dst_port;
}
- /* others even sctp port is not supported */
- sctp_mask = item->mask;
- if (sctp_mask &&
- (sctp_mask->hdr.src_port ||
- sctp_mask->hdr.dst_port ||
- sctp_mask->hdr.tag ||
- sctp_mask->hdr.cksum)) {
- memset(rule, 0, sizeof(struct txgbe_fdir_rule));
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ITEM,
- item, "Not supported by fdir filter");
- return -rte_errno;
- }
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.603925550 +0000
+++ 0032-net-txgbe-fix-FDIR-filter-for-SCTP-tunnel.patch 2025-11-21 11:05:09.423200999 +0000
@@ -1 +1 @@
-From c9a341034a29bc5245dd9fc21678be0b30313394 Mon Sep 17 00:00:00 2001
+From ae4350b58157fa0acdafe10598e0c51ee213b7bd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c9a341034a29bc5245dd9fc21678be0b30313394 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 7cf079a1cf..5b03a35949 100644
+index a6a27a298f..db5db58edc 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: filter FDIR match flex bytes for tunnel' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (30 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR filter for SCTP tunnel' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 packets' " Kevin Traynor
` (64 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b274a7570caa53b088aae47591961b5479acfdbc
Thanks.
Kevin
---
From b274a7570caa53b088aae47591961b5479acfdbc Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:36 +0800
Subject: [PATCH] net/txgbe: filter FDIR match flex bytes for tunnel
[ upstream commit 02c9cc101281ebf75148de8324455cdc8cbc3baa ]
For tunnel packets, pattern RAW is also supported to match in FDIR
rules. Fix to process this field.
Fixes: a1851465f825 ("net/txgbe: fix to create FDIR filter for tunnel packet")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_flow.c | 125 ++++++++++++++++++++++++++++++++-
1 file changed, 123 insertions(+), 2 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index db5db58edc..a820081dce 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2223,4 +2223,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
const struct rte_flow_item_sctp *sctp_spec;
const struct rte_flow_item_sctp *sctp_mask;
+ const struct rte_flow_item_raw *raw_mask;
+ const struct rte_flow_item_raw *raw_spec;
u8 ptid = 0;
uint32_t j;
@@ -2549,5 +2551,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
item->type != RTE_FLOW_ITEM_TYPE_UDP &&
item->type != RTE_FLOW_ITEM_TYPE_SCTP &&
- item->type != RTE_FLOW_ITEM_TYPE_END) {
+ item->type != RTE_FLOW_ITEM_TYPE_END &&
+ item->type != RTE_FLOW_ITEM_TYPE_RAW) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2638,5 +2641,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
item->type != RTE_FLOW_ITEM_TYPE_UDP &&
item->type != RTE_FLOW_ITEM_TYPE_SCTP &&
- item->type != RTE_FLOW_ITEM_TYPE_END) {
+ item->type != RTE_FLOW_ITEM_TYPE_END &&
+ item->type != RTE_FLOW_ITEM_TYPE_RAW) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2700,4 +2704,14 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
tcp_spec->hdr.dst_port;
}
+
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_RAW &&
+ item->type != RTE_FLOW_ITEM_TYPE_END) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
}
@@ -2749,4 +2763,14 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
udp_spec->hdr.dst_port;
}
+
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_RAW &&
+ item->type != RTE_FLOW_ITEM_TYPE_END) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
}
@@ -2799,4 +2823,101 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
sctp_spec->hdr.dst_port;
}
+
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_RAW &&
+ item->type != RTE_FLOW_ITEM_TYPE_END) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
+ }
+
+ /* Get the flex byte info */
+ if (item->type == RTE_FLOW_ITEM_TYPE_RAW) {
+ uint16_t pattern = 0;
+
+ /* Not supported last point for range*/
+ if (item->last) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ item, "Not supported last point for range");
+ return -rte_errno;
+ }
+ /* mask should not be null */
+ if (!item->mask || !item->spec) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
+
+ rule->b_mask = TRUE;
+ raw_mask = item->mask;
+
+ /* check mask */
+ if (raw_mask->relative != 0x1 ||
+ raw_mask->search != 0x1 ||
+ raw_mask->reserved != 0x0 ||
+ (uint32_t)raw_mask->offset != 0xffffffff ||
+ raw_mask->limit != 0xffff ||
+ raw_mask->length != 0xffff) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
+
+ rule->b_spec = TRUE;
+ raw_spec = item->spec;
+
+ /* check spec */
+ if (raw_spec->search != 0 ||
+ raw_spec->reserved != 0 ||
+ raw_spec->offset > TXGBE_MAX_FLX_SOURCE_OFF ||
+ raw_spec->offset % 2 ||
+ raw_spec->limit != 0 ||
+ raw_spec->length != 4 ||
+ /* pattern can't be 0xffff */
+ (raw_spec->pattern[0] == 0xff &&
+ raw_spec->pattern[1] == 0xff &&
+ raw_spec->pattern[2] == 0xff &&
+ raw_spec->pattern[3] == 0xff)) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
+
+ /* check pattern mask */
+ if (raw_mask->pattern[0] != 0xff ||
+ raw_mask->pattern[1] != 0xff ||
+ raw_mask->pattern[2] != 0xff ||
+ raw_mask->pattern[3] != 0xff) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
+ return -rte_errno;
+ }
+
+ rule->mask.flex_bytes_mask = 0xffff;
+ /* Convert pattern string to hex bytes */
+ if (sscanf((const char *)raw_spec->pattern, "%hx", &pattern) != 1) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Failed to parse raw pattern");
+ return -rte_errno;
+ }
+ rule->input.flex_bytes = (pattern & 0x00FF) << 8;
+ rule->input.flex_bytes |= (pattern & 0xFF00) >> 8;
+
+ rule->flex_bytes_offset = raw_spec->offset;
+ rule->flex_relative = raw_spec->relative;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.632901876 +0000
+++ 0033-net-txgbe-filter-FDIR-match-flex-bytes-for-tunnel.patch 2025-11-21 11:05:09.424201003 +0000
@@ -1 +1 @@
-From 02c9cc101281ebf75148de8324455cdc8cbc3baa Mon Sep 17 00:00:00 2001
+From b274a7570caa53b088aae47591961b5479acfdbc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 02c9cc101281ebf75148de8324455cdc8cbc3baa ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 5b03a35949..095c84823f 100644
+index db5db58edc..a820081dce 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix FDIR rule raw relative for L3 packets' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (31 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: filter FDIR match flex bytes for " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR input mask' " Kevin Traynor
` (63 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ba28c5021f4a9c877b161b025b7d06c48aad3c55
Thanks.
Kevin
---
From ba28c5021f4a9c877b161b025b7d06c48aad3c55 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:37 +0800
Subject: [PATCH] net/txgbe: fix FDIR rule raw relative for L3 packets
[ upstream commit f1cd458035da9066379c457d27488eeb7741af46 ]
Hardware supports FDIR flex field base setting from start of MAC header,
IP header, L4 header, L4 payload. So for IP packet which has no L4 header,
it cannot match the raw bytes with relative offset start from L3 payload.
And FDIR flex bytes rule cannot match L2 packets.
Therefore, we will declare that the relative offset is only used for
matching the L4 packets.
Fixes: aa4974765499 ("net/txgbe: fix raw pattern match for FDIR rule")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 77d0cc4c30..8d181db33f 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -259,8 +259,5 @@ txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule)
return TXGBE_FDIRFLEXCFG_BASE_PAY;
- if (rule->input.flow_type & TXGBE_ATR_L3TYPE_MASK)
- return TXGBE_FDIRFLEXCFG_BASE_L3;
-
- return TXGBE_FDIRFLEXCFG_BASE_L2;
+ return TXGBE_FDIRFLEXCFG_BASE_L3;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.660252103 +0000
+++ 0034-net-txgbe-fix-FDIR-rule-raw-relative-for-L3-packets.patch 2025-11-21 11:05:09.425201007 +0000
@@ -1 +1 @@
-From f1cd458035da9066379c457d27488eeb7741af46 Mon Sep 17 00:00:00 2001
+From ba28c5021f4a9c877b161b025b7d06c48aad3c55 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1cd458035da9066379c457d27488eeb7741af46 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: fix FDIR input mask' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (32 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 packets' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Kevin Traynor
` (62 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/e00d3be49ba945ff2b74bf983a08a8a5dc5c5deb
Thanks.
Kevin
---
From e00d3be49ba945ff2b74bf983a08a8a5dc5c5deb Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:38 +0800
Subject: [PATCH] net/txgbe: fix FDIR input mask
[ upstream commit a2d4de27109033d5061da44aed919bf46cfd7ca9 ]
Fix FDIR mask settings to comply with the hardware configuration. And
mask out the spec field instead of manually setting it to 0.
There are some requirements of mask in hardware:
1) IPv4 mask should be little-endian.
2) Ipv6 source address mask has only 16 bits, one bit of mask
corresponds to one byte of spec.
3) IPv6 dest address is only supported to perfect match the low 8 bits,
so it is not taken into account for support in the driver.
Fixes: ea230dda16ad ("net/txgbe: configure flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 49 +++++++++++++++++++++++++++++-----
drivers/net/txgbe/txgbe_flow.c | 8 ++----
2 files changed, 45 insertions(+), 12 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 8d181db33f..6b83a7379d 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -166,4 +166,13 @@ configure_fdir_flags(const struct rte_eth_fdir_conf *conf,
}
+static inline uint16_t
+txgbe_reverse_fdir_bitmasks(uint16_t mask)
+{
+ mask = ((mask & 0x5555) << 1) | ((mask & 0xAAAA) >> 1);
+ mask = ((mask & 0x3333) << 2) | ((mask & 0xCCCC) >> 2);
+ mask = ((mask & 0x0F0F) << 4) | ((mask & 0xF0F0) >> 4);
+ return ((mask & 0x00FF) << 8) | ((mask & 0xFF00) >> 8);
+}
+
int
txgbe_fdir_set_input_mask(struct rte_eth_dev *dev)
@@ -207,13 +216,13 @@ txgbe_fdir_set_input_mask(struct rte_eth_dev *dev)
wr32(hw, TXGBE_FDIRSCTPMSK, ~fdirtcpm);
- /* Store source and destination IPv4 masks (big-endian) */
- wr32(hw, TXGBE_FDIRSIP4MSK, ~info->mask.src_ipv4_mask);
- wr32(hw, TXGBE_FDIRDIP4MSK, ~info->mask.dst_ipv4_mask);
+ /* Store source and destination IPv4 masks (little-endian) */
+ wr32(hw, TXGBE_FDIRSIP4MSK, rte_be_to_cpu_32(~info->mask.src_ipv4_mask));
+ wr32(hw, TXGBE_FDIRDIP4MSK, rte_be_to_cpu_32(~info->mask.dst_ipv4_mask));
/*
* Store source and destination IPv6 masks (bit reversed)
*/
- fdiripv6m = TXGBE_FDIRIP6MSK_DST(info->mask.dst_ipv6_mask) |
- TXGBE_FDIRIP6MSK_SRC(info->mask.src_ipv6_mask);
+ fdiripv6m = txgbe_reverse_fdir_bitmasks(info->mask.dst_ipv6_mask) << 16;
+ fdiripv6m |= txgbe_reverse_fdir_bitmasks(info->mask.src_ipv6_mask);
wr32(hw, TXGBE_FDIRIP6MSK, ~fdiripv6m);
@@ -637,6 +646,12 @@ fdir_write_perfect_filter(struct txgbe_hw *hw,
fdircmd |= TXGBE_FDIRPICMD_POOL(input->vm_pool);
- if (input->flow_type & TXGBE_ATR_L3TYPE_IPV6)
+ if (input->flow_type & TXGBE_ATR_L3TYPE_IPV6) {
+ /* use SIP4 to store LS Dword of the Source iPv6 address */
+ wr32(hw, TXGBE_FDIRPISIP4, be_to_le32(input->src_ip[3]));
+ wr32(hw, TXGBE_FDIRPISIP6(0), be_to_le32(input->src_ip[2]));
+ wr32(hw, TXGBE_FDIRPISIP6(1), be_to_le32(input->src_ip[1]));
+ wr32(hw, TXGBE_FDIRPISIP6(2), be_to_le32(input->src_ip[0]));
fdircmd |= TXGBE_FDIRPICMD_IP6;
+ }
wr32(hw, TXGBE_FDIRPICMD, fdircmd);
@@ -784,4 +799,24 @@ txgbe_remove_fdir_filter(struct txgbe_hw_fdir_info *fdir_info,
}
+static void
+txgbe_fdir_mask_input(struct txgbe_hw_fdir_mask *mask,
+ struct txgbe_atr_input *input)
+{
+ int i;
+
+ if (input->flow_type & TXGBE_ATR_L3TYPE_IPV6) {
+ for (i = 0; i < 16; i++) {
+ if (!(mask->src_ipv6_mask & (1 << i)))
+ input->src_ip[i / 4] &= ~(0xFF << ((i % 4) * 8));
+ }
+ } else {
+ input->src_ip[0] &= mask->src_ipv4_mask;
+ input->dst_ip[0] &= mask->dst_ipv4_mask;
+ }
+
+ input->src_port &= mask->src_port_mask;
+ input->dst_port &= mask->dst_port_mask;
+}
+
int
txgbe_fdir_filter_program(struct rte_eth_dev *dev,
@@ -806,4 +841,6 @@ txgbe_fdir_filter_program(struct rte_eth_dev *dev,
is_perfect = TRUE;
+ txgbe_fdir_mask_input(&info->mask, &rule->input);
+
if (is_perfect) {
fdirhash = atr_compute_perfect_hash(&rule->input,
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index a820081dce..cb8004e48c 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -1850,7 +1850,5 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
/* check dst addr mask */
for (j = 0; j < 16; j++) {
- if (ipv6_mask->hdr.dst_addr.a[j] == UINT8_MAX) {
- rule->mask.dst_ipv6_mask |= 1 << j;
- } else if (ipv6_mask->hdr.dst_addr.a[j] != 0) {
+ if (ipv6_mask->hdr.dst_addr.a[j] != 0) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2613,7 +2611,5 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
/* check dst addr mask */
for (j = 0; j < 16; j++) {
- if (ipv6_mask->hdr.dst_addr.a[j] == UINT8_MAX) {
- rule->mask.dst_ipv6_mask |= 1 << j;
- } else if (ipv6_mask->hdr.dst_addr.a[j] != 0) {
+ if (ipv6_mask->hdr.dst_addr.a[j] != 0) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.689113764 +0000
+++ 0035-net-txgbe-fix-FDIR-input-mask.patch 2025-11-21 11:05:09.427201016 +0000
@@ -1 +1 @@
-From a2d4de27109033d5061da44aed919bf46cfd7ca9 Mon Sep 17 00:00:00 2001
+From e00d3be49ba945ff2b74bf983a08a8a5dc5c5deb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a2d4de27109033d5061da44aed919bf46cfd7ca9 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -109 +110 @@
-index 095c84823f..d3113b6fc8 100644
+index a820081dce..cb8004e48c 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: switch to FDIR when ntuple filter is full' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (33 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR input mask' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: remove unsupported flow action mark' " Kevin Traynor
` (61 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/348509e3fe19edb1cfde5f36771775d916420e48
Thanks.
Kevin
---
From 348509e3fe19edb1cfde5f36771775d916420e48 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:39 +0800
Subject: [PATCH] net/txgbe: switch to FDIR when ntuple filter is full
[ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ]
Using ntuple filter has less performance loss on the hardware compared
to FDIR filter. So when the flow rule both match ntuple filter and FDIR
filter, ntuple filter will be created first. But there are only maximum
128 flow rules can be created on ntuple filter, it is far less than the
requirements of many users. So switch to use FDIR when ntuple filters
are full.
Fixes: 77a72b4d9dc0 ("net/txgbe: support ntuple filter add and delete")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 5 ++++-
drivers/net/txgbe/txgbe_ethdev.h | 1 +
drivers/net/txgbe/txgbe_flow.c | 8 ++++++++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 7df1841561..49ac1c1c82 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -854,4 +854,5 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
memset(filter_info->fivetuple_mask, 0,
sizeof(uint32_t) * TXGBE_5TUPLE_ARRAY_SIZE);
+ filter_info->ntuple_is_full = false;
return 0;
@@ -4268,5 +4269,6 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
}
if (i >= TXGBE_MAX_FTQF_FILTERS) {
- PMD_DRV_LOG(ERR, "5tuple filters are full.");
+ PMD_DRV_LOG(INFO, "5tuple filters are full, switch to FDIR");
+ filter_info->ntuple_is_full = true;
return -ENOSYS;
}
@@ -4296,4 +4298,5 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
TAILQ_REMOVE(&filter_info->fivetuple_list, filter, entries);
rte_free(filter);
+ filter_info->ntuple_is_full = false;
wr32(hw, TXGBE_5TFDADDR(index), 0);
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index 288d9a43da..33d72e68d5 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -244,4 +244,5 @@ struct txgbe_filter_info {
uint32_t fivetuple_mask[TXGBE_5TUPLE_ARRAY_SIZE];
struct txgbe_5tuple_filter_list fivetuple_list;
+ bool ntuple_is_full;
/* store the SYN filter info */
uint32_t syn_info;
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index cb8004e48c..c87bb4dd63 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -581,6 +581,10 @@ txgbe_parse_ntuple_filter(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
+ struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev);
int ret;
+ if (filter_info->ntuple_is_full)
+ return -ENOSYS;
+
ret = cons_parse_ntuple_filter(attr, pattern, actions, filter, error);
@@ -3201,4 +3205,5 @@ txgbe_flow_create(struct rte_eth_dev *dev,
struct txgbe_rss_conf_ele *rss_filter_ptr;
struct txgbe_flow_mem *txgbe_flow_mem_ptr;
+ struct txgbe_filter_info *filter_info = TXGBE_DEV_FILTER(dev);
uint8_t first_mask = FALSE;
@@ -3246,8 +3251,11 @@ txgbe_flow_create(struct rte_eth_dev *dev,
flow->filter_type = RTE_ETH_FILTER_NTUPLE;
return flow;
+ } else if (filter_info->ntuple_is_full) {
+ goto next;
}
goto out;
}
+next:
memset(ðertype_filter, 0, sizeof(struct rte_eth_ethertype_filter));
ret = txgbe_parse_ethertype_filter(dev, attr, pattern,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.721727017 +0000
+++ 0036-net-txgbe-switch-to-FDIR-when-ntuple-filter-is-full.patch 2025-11-21 11:05:09.431201033 +0000
@@ -1 +1 @@
-From ccac5e093041f255f38a59ea472c6dee493ccc7c Mon Sep 17 00:00:00 2001
+From 348509e3fe19edb1cfde5f36771775d916420e48 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ccac5e093041f255f38a59ea472c6dee493ccc7c ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index f650c5b7a4..21f0711762 100644
+index 7df1841561..49ac1c1c82 100644
@@ -27 +28 @@
-@@ -894,4 +894,5 @@ int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
+@@ -854,4 +854,5 @@ static int txgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev)
@@ -33 +34 @@
-@@ -4496,5 +4497,6 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
+@@ -4268,5 +4269,6 @@ txgbe_add_5tuple_filter(struct rte_eth_dev *dev,
@@ -41 +42 @@
-@@ -4527,4 +4529,5 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
+@@ -4296,4 +4298,5 @@ txgbe_remove_5tuple_filter(struct rte_eth_dev *dev,
@@ -46 +47 @@
- if (!txgbe_is_pf(TXGBE_DEV_HW(dev))) {
+ wr32(hw, TXGBE_5TFDADDR(index), 0);
@@ -48 +49 @@
-index 053aa1645f..1e7cc5ea80 100644
+index 288d9a43da..33d72e68d5 100644
@@ -51 +52 @@
-@@ -246,4 +246,5 @@ struct txgbe_filter_info {
+@@ -244,4 +244,5 @@ struct txgbe_filter_info {
@@ -58 +59 @@
-index d3113b6fc8..cd05ceffed 100644
+index cb8004e48c..c87bb4dd63 100644
@@ -78 +79 @@
-@@ -3246,4 +3251,6 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -3246,8 +3251,11 @@ txgbe_flow_create(struct rte_eth_dev *dev,
@@ -85 +85,0 @@
-@@ -3255,4 +3262,5 @@ txgbe_flow_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/txgbe: remove unsupported flow action mark' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (34 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/nfp: fix metering cleanup' " Kevin Traynor
` (60 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jiawen Wu; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/922d72ef7fafde104ae2beadd74112636d098a8c
Thanks.
Kevin
---
From 922d72ef7fafde104ae2beadd74112636d098a8c Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Mon, 27 Oct 2025 11:15:42 +0800
Subject: [PATCH] net/txgbe: remove unsupported flow action mark
[ upstream commit 7224536b051457ce2a9cfd6e433da9d4a7bc97ac ]
Flow action "mark" is not supported, just remove it.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
doc/guides/nics/features/txgbe.ini | 1 -
drivers/net/txgbe/txgbe_flow.c | 23 ++---------------------
2 files changed, 2 insertions(+), 22 deletions(-)
diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini
index ef9f0cfa0a..a9f043a04f 100644
--- a/doc/guides/nics/features/txgbe.ini
+++ b/doc/guides/nics/features/txgbe.ini
@@ -73,5 +73,4 @@ vxlan = Y
[rte_flow actions]
drop = Y
-mark = Y
pf = Y
queue = Y
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index c87bb4dd63..cdd13ff519 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -1338,5 +1338,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
const struct rte_flow_action *act;
const struct rte_flow_action_queue *act_q;
- const struct rte_flow_action_mark *mark;
/* parse attr */
@@ -1403,8 +1402,7 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
}
- /* check if the next not void item is MARK */
+ /* nothing else supported */
act = next_no_void_action(actions, act);
- if (act->type != RTE_FLOW_ACTION_TYPE_MARK &&
- act->type != RTE_FLOW_ACTION_TYPE_END) {
+ if (act->type != RTE_FLOW_ACTION_TYPE_END) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -1416,19 +1414,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
rule->soft_id = 0;
- if (act->type == RTE_FLOW_ACTION_TYPE_MARK) {
- mark = (const struct rte_flow_action_mark *)act->conf;
- rule->soft_id = mark->id;
- act = next_no_void_action(actions, act);
- }
-
- /* check if the next not void item is END */
- if (act->type != RTE_FLOW_ACTION_TYPE_END) {
- memset(rule, 0, sizeof(struct txgbe_fdir_rule));
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ACTION,
- act, "Not supported action.");
- return -rte_errno;
- }
-
return 0;
}
@@ -1542,6 +1525,4 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
* ACTION:
* The first not void action should be QUEUE or DROP.
- * The second not void optional action should be MARK,
- * mark_id is a uint32_t number.
* The next not void action should be END.
* UDP/TCP/SCTP pattern example:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.751694094 +0000
+++ 0037-net-txgbe-remove-unsupported-flow-action-mark.patch 2025-11-21 11:05:09.433201041 +0000
@@ -1 +1 @@
-From 7224536b051457ce2a9cfd6e433da9d4a7bc97ac Mon Sep 17 00:00:00 2001
+From 922d72ef7fafde104ae2beadd74112636d098a8c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7224536b051457ce2a9cfd6e433da9d4a7bc97ac ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 5647165d52..a97588e57a 100644
+index c87bb4dd63..cdd13ff519 100644
@@ -31 +32 @@
-@@ -1359,5 +1359,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1338,5 +1338,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -37 +38 @@
-@@ -1424,8 +1423,7 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1403,8 +1402,7 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -48 +49 @@
-@@ -1437,19 +1435,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
+@@ -1416,19 +1414,4 @@ txgbe_parse_fdir_act_attr(const struct rte_flow_attr *attr,
@@ -68 +69 @@
-@@ -1563,6 +1546,4 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
+@@ -1542,6 +1525,4 @@ txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/nfp: fix metering cleanup' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (35 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/txgbe: remove unsupported flow action mark' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Kevin Traynor
` (59 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0fd967569d473399c42202dae350f90d711e29de
Thanks.
Kevin
---
From 0fd967569d473399c42202dae350f90d711e29de Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon, 3 Nov 2025 21:29:15 -0800
Subject: [PATCH] net/nfp: fix metering cleanup
[ upstream commit 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f ]
The code to cleanup metering was using the objects after calling
rte_free(). Fix by using LISTFOREACH_SAFE
Fixes: 2caf84a71cfd ("net/nfp: add meter options")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/nfp/nfp_mtr.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/net/nfp/nfp_mtr.c b/drivers/net/nfp/nfp_mtr.c
index d4f2c4f2f0..4833ebd881 100644
--- a/drivers/net/nfp/nfp_mtr.c
+++ b/drivers/net/nfp/nfp_mtr.c
@@ -13,4 +13,11 @@
#include "nfp_logs.h"
+#ifndef LIST_FOREACH_SAFE
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+#endif
+
#define NFP_MAX_POLICY_CNT NFP_MAX_MTR_CNT
#define NFP_MAX_PROFILE_CNT NFP_MAX_MTR_CNT
@@ -1125,8 +1132,8 @@ void
nfp_mtr_priv_uninit(struct nfp_pf_dev *pf_dev)
{
- struct nfp_mtr *mtr;
+ struct nfp_mtr *mtr, *tmp_mtr;
struct nfp_mtr_priv *priv;
- struct nfp_mtr_policy *mtr_policy;
- struct nfp_mtr_profile *mtr_profile;
+ struct nfp_mtr_policy *mtr_policy, *tmp_policy;
+ struct nfp_mtr_profile *mtr_profile, *tmp_profile;
struct nfp_app_fw_flower *app_fw_flower;
@@ -1136,15 +1143,15 @@ nfp_mtr_priv_uninit(struct nfp_pf_dev *pf_dev)
rte_eal_alarm_cancel(nfp_mtr_stats_request, (void *)app_fw_flower);
- LIST_FOREACH(mtr, &priv->mtrs, next) {
+ LIST_FOREACH_SAFE(mtr, &priv->mtrs, next, tmp_mtr) {
LIST_REMOVE(mtr, next);
rte_free(mtr);
}
- LIST_FOREACH(mtr_profile, &priv->profiles, next) {
+ LIST_FOREACH_SAFE(mtr_profile, &priv->profiles, next, tmp_profile) {
LIST_REMOVE(mtr_profile, next);
rte_free(mtr_profile);
}
- LIST_FOREACH(mtr_policy, &priv->policies, next) {
+ LIST_FOREACH_SAFE(mtr_policy, &priv->policies, next, tmp_policy) {
LIST_REMOVE(mtr_policy, next);
rte_free(mtr_policy);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.779737838 +0000
+++ 0038-net-nfp-fix-metering-cleanup.patch 2025-11-21 11:05:09.434201045 +0000
@@ -1 +1 @@
-From 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f Mon Sep 17 00:00:00 2001
+From 0fd967569d473399c42202dae350f90d711e29de Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 080b02cd66cb2b0a08c4903b7f51a10f0ba8c37f ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/bonding: fix MAC address propagation in 802.3ad mode' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (36 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/nfp: fix metering cleanup' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Tx port' " Kevin Traynor
` (58 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Shani Peretz; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0e99c1629e4f6ae1568e40484e571ffbecaf6947
Thanks.
Kevin
---
From 0e99c1629e4f6ae1568e40484e571ffbecaf6947 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Wed, 5 Nov 2025 20:01:35 +0200
Subject: [PATCH] net/bonding: fix MAC address propagation in 802.3ad mode
[ upstream commit 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 ]
When changing the MAC address of a bonding device in 802.3ad mode,
the new MAC was not propagated to the physical member NIC.
This caused the physical NIC to drop all data packets sent to the
new MAC address, resulting in connectivity loss.
It happens because the MAC update function only updated the
LACP layer (actor.system) but not the physical NIC hardware MAC
addresses.
This fix adds a call to rte_eth_dev_default_mac_addr_set() to update
the hardware MAC on each member port.
Bugzilla ID: 1158
Fixes: 46fb43683679 ("bond: add mode 4")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
---
drivers/net/bonding/rte_eth_bond_8023ad.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index 7f885ab521..cb71515bff 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -1186,4 +1186,12 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
rte_ether_addr_copy(&internals->mode4.mac_addr, &member->actor.system);
+
+ /* Update physical NIC hardware MAC address to match bonding device. */
+ if (rte_eth_dev_default_mac_addr_set(member_id, &internals->mode4.mac_addr) != 0) {
+ RTE_BOND_LOG(ERR,
+ "Failed to update MAC address on member port %u",
+ member_id);
+ }
+
/* Do nothing if this port is not an aggregator. In other case
* Set NTT flag on every port that use this aggregator. */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.807425810 +0000
+++ 0039-net-bonding-fix-MAC-address-propagation-in-802.3ad-m.patch 2025-11-21 11:05:09.435201050 +0000
@@ -1 +1 @@
-From 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 Mon Sep 17 00:00:00 2001
+From 0e99c1629e4f6ae1568e40484e571ffbecaf6947 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8a2f21630658a7f3ff5c7564b9a2bcb0b681fb55 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 1677615435..ba88f6d261 100644
+index 7f885ab521..cb71515bff 100644
@@ -31 +32 @@
-@@ -1187,4 +1187,12 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
+@@ -1186,4 +1186,12 @@ bond_mode_8023ad_mac_address_update(struct rte_eth_dev *bond_dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/testpmd: fix DCB Tx port' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (37 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Rx queues' " Kevin Traynor
` (57 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/15f169c2c91ef6092650ca62e78e2dfc2c05357e
Thanks.
Kevin
---
From 15f169c2c91ef6092650ca62e78e2dfc2c05357e Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 6 Nov 2025 08:29:19 +0800
Subject: [PATCH] app/testpmd: fix DCB Tx port
[ upstream commit 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 ]
The txp maybe invalid (e.g. start with only one port but set with 1),
this commit fix it by get txp from fwd_topology_tx_port_get() function.
An added benefit is that the DCB test also supports '--port-topology'
parameter.
Fixes: 1a572499beb6 ("app/testpmd: setup DCB forwarding based on traffic class")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/config.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 4c10047754..a28b589b0a 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -5167,5 +5167,5 @@ dcb_fwd_config_setup(void)
init_fwd_streams();
sm_id = 0;
- txp = 1;
+ txp = fwd_topology_tx_port_get(rxp);
/* get the dcb info on the first RX and TX ports */
(void)rte_eth_dev_get_dcb_info(fwd_ports_ids[rxp], &rxp_dcb_info);
@@ -5215,9 +5215,6 @@ dcb_fwd_config_setup(void)
if (rxp >= nb_fwd_ports)
return;
+ txp = fwd_topology_tx_port_get(rxp);
/* get the dcb information on next RX and TX ports */
- if ((rxp & 0x1) == 0)
- txp = (portid_t) (rxp + 1);
- else
- txp = (portid_t) (rxp - 1);
rte_eth_dev_get_dcb_info(fwd_ports_ids[rxp], &rxp_dcb_info);
rte_eth_dev_get_dcb_info(fwd_ports_ids[txp], &txp_dcb_info);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.838308534 +0000
+++ 0040-app-testpmd-fix-DCB-Tx-port.patch 2025-11-21 11:05:09.438201063 +0000
@@ -1 +1 @@
-From 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 Mon Sep 17 00:00:00 2001
+From 15f169c2c91ef6092650ca62e78e2dfc2c05357e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 47012b7cbf78531e99b6ab3faa3a69e941ddbaa0 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 3ce2a14a1b..0f687018c7 100644
+index 4c10047754..a28b589b0a 100644
@@ -24 +25 @@
-@@ -5188,5 +5188,5 @@ dcb_fwd_config_setup(void)
+@@ -5167,5 +5167,5 @@ dcb_fwd_config_setup(void)
@@ -31 +32 @@
-@@ -5236,9 +5236,6 @@ dcb_fwd_config_setup(void)
+@@ -5215,9 +5215,6 @@ dcb_fwd_config_setup(void)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/testpmd: fix DCB Rx queues' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (38 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Tx port' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Kevin Traynor
` (56 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d3dfb0d4f83de154cf36671bdaf3ec692cea9152
Thanks.
Kevin
---
From d3dfb0d4f83de154cf36671bdaf3ec692cea9152 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 6 Nov 2025 08:29:20 +0800
Subject: [PATCH] app/testpmd: fix DCB Rx queues
[ upstream commit 32387caaa00660ebe35be25f2371edb0069cc80a ]
The nb_rx_queue should get from rxp_dcb_info not txp_dcb_info, this
commit fix it.
Fixes: 1a572499beb6 ("app/testpmd: setup DCB forwarding based on traffic class")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/config.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index a28b589b0a..5fccb677c1 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -5185,5 +5185,5 @@ dcb_fwd_config_setup(void)
rxq = rxp_dcb_info.tc_queue.tc_rxq[i][tc].base;
txq = txp_dcb_info.tc_queue.tc_txq[i][tc].base;
- nb_rx_queue = txp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue;
+ nb_rx_queue = rxp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue;
nb_tx_queue = txp_dcb_info.tc_queue.tc_txq[i][tc].nb_queue;
for (j = 0; j < nb_rx_queue; j++) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.869179879 +0000
+++ 0041-app-testpmd-fix-DCB-Rx-queues.patch 2025-11-21 11:05:09.441201075 +0000
@@ -1 +1 @@
-From 32387caaa00660ebe35be25f2371edb0069cc80a Mon Sep 17 00:00:00 2001
+From d3dfb0d4f83de154cf36671bdaf3ec692cea9152 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 32387caaa00660ebe35be25f2371edb0069cc80a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 0f687018c7..8557371488 100644
+index a28b589b0a..5fccb677c1 100644
@@ -21 +22 @@
-@@ -5206,5 +5206,5 @@ dcb_fwd_config_setup(void)
+@@ -5185,5 +5185,5 @@ dcb_fwd_config_setup(void)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/e1000/base: fix crash on init with GCC 13' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (39 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Rx queues' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/fm10k: fix build with GCC 16' " Kevin Traynor
` (55 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Thierry Herbelot, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/de5d2c67002923b31b644b801100be07a6444380
Thanks.
Kevin
---
From de5d2c67002923b31b644b801100be07a6444380 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Fri, 10 Oct 2025 12:58:48 +0000
Subject: [PATCH] net/e1000/base: fix crash on init with GCC 13
[ upstream commit 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 ]
The e1000 PMD crashes during initialisation in a Ubuntu 24.04 VM when
compiled with gcc-13 with -O3 optimisations. This patch introduces a
compiler barrier after the register read that was causing the issue.
Bugzilla ID: 1691
Fixes: af75078fece3 ("first public release")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Tested-by: Thierry Herbelot <thierry.herbelot@6wind.com>
---
drivers/net/e1000/base/e1000_mac.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/e1000/base/e1000_mac.c b/drivers/net/e1000/base/e1000_mac.c
index 5bb77d9e09..1ab5db98f2 100644
--- a/drivers/net/e1000/base/e1000_mac.c
+++ b/drivers/net/e1000/base/e1000_mac.c
@@ -1827,4 +1827,5 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
mac->ledctl_default = E1000_READ_REG(hw, E1000_LEDCTL);
+ rte_compiler_barrier();
mac->ledctl_mode1 = mac->ledctl_default;
mac->ledctl_mode2 = mac->ledctl_default;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.897541606 +0000
+++ 0042-net-e1000-base-fix-crash-on-init-with-GCC-13.patch 2025-11-21 11:05:09.442201080 +0000
@@ -1 +1 @@
-From 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 Mon Sep 17 00:00:00 2001
+From de5d2c67002923b31b644b801100be07a6444380 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4d0b1e252a58f9cee89aa08d6e9742fa4a797e91 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/e1000/base/e1000_mac.c | 1 +
+ drivers/net/e1000/base/e1000_mac.c | 1 +
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/e1000/base/e1000_mac.c b/drivers/net/intel/e1000/base/e1000_mac.c
-index 2fa97d12a9..41aae86ffe 100644
---- a/drivers/net/intel/e1000/base/e1000_mac.c
-+++ b/drivers/net/intel/e1000/base/e1000_mac.c
-@@ -1843,4 +1843,5 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
+diff --git a/drivers/net/e1000/base/e1000_mac.c b/drivers/net/e1000/base/e1000_mac.c
+index 5bb77d9e09..1ab5db98f2 100644
+--- a/drivers/net/e1000/base/e1000_mac.c
++++ b/drivers/net/e1000/base/e1000_mac.c
+@@ -1827,4 +1827,5 @@ s32 e1000_id_led_init_generic(struct e1000_hw *hw)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/fm10k: fix build with GCC 16' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (40 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx4: fix unnecessary comma' " Kevin Traynor
` (54 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Vladimir Medvedkin, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/657e51753fcd93ad3acdcdff743cfd1ac083d487
Thanks.
Kevin
---
From 657e51753fcd93ad3acdcdff743cfd1ac083d487 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 4 Nov 2025 11:15:15 +0000
Subject: [PATCH] net/fm10k: fix build with GCC 16
[ upstream commit 967d5fbb7b23700ccffccb9979d4f6acdac412c8 ]
Build error reported with GCC 16, due to a set but unused variable. Fix
the issue by removing the setting of the var and marking it as unused.
../drivers/net/intel/fm10k/base/fm10k_common.c: In function 'fm10k_unbind_hw_stats_q':
../drivers/net/intel/fm10k/base/fm10k_common.c:480:62: warning:
parameter 'idx' set but not used [-Wunused-but-set-parameter=]
480 | void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count)
Bugzilla ID: 1822
Fixes: 7223d200c227 ("fm10k: add base driver")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
---
drivers/net/fm10k/base/fm10k_common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fm10k/base/fm10k_common.c b/drivers/net/fm10k/base/fm10k_common.c
index b78d4b575b..677ef87608 100644
--- a/drivers/net/fm10k/base/fm10k_common.c
+++ b/drivers/net/fm10k/base/fm10k_common.c
@@ -478,9 +478,9 @@ void fm10k_update_hw_stats_q(struct fm10k_hw *hw, struct fm10k_hw_stats_q *q,
* may have happened are ignored and the base for the queue stats is reset.
**/
-void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count)
+void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx __rte_unused, u32 count)
{
u32 i;
- for (i = 0; i < count; i++, idx++, q++) {
+ for (i = 0; i < count; i++, q++) {
q->rx_stats_idx = 0;
q->tx_stats_idx = 0;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.925652386 +0000
+++ 0043-net-fm10k-fix-build-with-GCC-16.patch 2025-11-21 11:05:09.443005975 +0000
@@ -1 +1 @@
-From 967d5fbb7b23700ccffccb9979d4f6acdac412c8 Mon Sep 17 00:00:00 2001
+From 657e51753fcd93ad3acdcdff743cfd1ac083d487 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 967d5fbb7b23700ccffccb9979d4f6acdac412c8 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
- drivers/net/intel/fm10k/base/fm10k_common.c | 4 ++--
+ drivers/net/fm10k/base/fm10k_common.c | 4 ++--
@@ -24 +25 @@
-diff --git a/drivers/net/intel/fm10k/base/fm10k_common.c b/drivers/net/intel/fm10k/base/fm10k_common.c
+diff --git a/drivers/net/fm10k/base/fm10k_common.c b/drivers/net/fm10k/base/fm10k_common.c
@@ -26,2 +27,2 @@
---- a/drivers/net/intel/fm10k/base/fm10k_common.c
-+++ b/drivers/net/intel/fm10k/base/fm10k_common.c
+--- a/drivers/net/fm10k/base/fm10k_common.c
++++ b/drivers/net/fm10k/base/fm10k_common.c
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx4: fix unnecessary comma' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (41 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/fm10k: fix build with GCC 16' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix unnecessary commas' " Kevin Traynor
` (53 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5643466835b10a8227cfd77139ad9543fdbc4db4
Thanks.
Kevin
---
From 5643466835b10a8227cfd77139ad9543fdbc4db4 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 29 Oct 2025 11:55:03 +0200
Subject: [PATCH] net/mlx4: fix unnecessary comma
[ upstream commit fdffa18268a70857865141cd89066eb6e025c0d2 ]
The patch fixes compilation warnings produced by clang -Wcomma option.
Bugzilla ID: 1810
Fixes: ba576975a89b ("net/mlx4: support hardware TSO")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx4/mlx4_rxtx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c
index 947cae491c..a4df6f7bcb 100644
--- a/drivers/net/mlx4/mlx4_rxtx.c
+++ b/drivers/net/mlx4/mlx4_rxtx.c
@@ -639,5 +639,5 @@ mlx4_tx_burst_fill_tso_hdr(struct rte_mbuf *buf,
/* New TXBB, stash the first 32bits for later use. */
pv[*pv_counter].dst = (volatile uint32_t *)thdr.to;
- pv[(*pv_counter)++].val = *(uint32_t *)from,
+ pv[(*pv_counter)++].val = *(uint32_t *)from;
from += sizeof(uint32_t);
thdr.to += sizeof(uint32_t);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.952684825 +0000
+++ 0044-net-mlx4-fix-unnecessary-comma.patch 2025-11-21 11:05:09.443201084 +0000
@@ -1 +1 @@
-From fdffa18268a70857865141cd89066eb6e025c0d2 Mon Sep 17 00:00:00 2001
+From 5643466835b10a8227cfd77139ad9543fdbc4db4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fdffa18268a70857865141cd89066eb6e025c0d2 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix unnecessary commas' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (42 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx4: fix unnecessary comma' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Kevin Traynor
` (52 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/586d9f3009194f94a83a44d1de74abaf6aeefc67
Thanks.
Kevin
---
From 586d9f3009194f94a83a44d1de74abaf6aeefc67 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 29 Oct 2025 11:55:04 +0200
Subject: [PATCH] net/mlx5: fix unnecessary commas
[ upstream commit 3b769d8389080ef0fd1b34765b9844db8f40729a ]
The patch fixes compilation warnings produced by clang -Wcomma option.
Bugzilla ID: 1810
Fixes: 630a587bfb37 ("net/mlx5: support matching on VXLAN reserved field")
Fixes: 86d259cec852 ("net/mlx5: separate Tx queue object creations")
Fixes: bc1d90a3cf6f ("net/mlx5: fix build with Direct Verbs disabled")
Fixes: 444320186393 ("net/mlx5: support meter creation with policy")
Fixes: 821a6a5cc495 ("net/mlx5: add metadata split for compatibility")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 4 ++--
drivers/net/mlx5/linux/mlx5_verbs.c | 2 +-
drivers/net/mlx5/mlx5_flow.c | 12 ++++++------
drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
drivers/net/mlx5/mlx5_nta_split.c | 4 ++--
5 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index b23ee265b6..de037b25f1 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -432,6 +432,6 @@ __mlx5_discovery_misc5_cap(struct mlx5_priv *priv)
return;
}
- dv_attr.type = IBV_FLOW_ATTR_NORMAL,
- dv_attr.match_mask = (void *)&matcher_mask,
+ dv_attr.type = IBV_FLOW_ATTR_NORMAL;
+ dv_attr.match_mask = (void *)&matcher_mask;
dv_attr.match_criteria_enable =
(1 << MLX5_MATCH_CRITERIA_ENABLE_OUTER_BIT) |
diff --git a/drivers/net/mlx5/linux/mlx5_verbs.c b/drivers/net/mlx5/linux/mlx5_verbs.c
index 9011319a3e..01d3d6ae5d 100644
--- a/drivers/net/mlx5/linux/mlx5_verbs.c
+++ b/drivers/net/mlx5/linux/mlx5_verbs.c
@@ -884,5 +884,5 @@ mlx5_txq_ibv_qp_create(struct rte_eth_dev *dev, uint16_t idx)
*/
qp_attr.cap.max_send_sge = 1;
- qp_attr.qp_type = IBV_QPT_RAW_PACKET,
+ qp_attr.qp_type = IBV_QPT_RAW_PACKET;
/* Do *NOT* enable this, completions events are managed per Tx burst. */
qp_attr.sq_sig_all = 0;
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 944d422f97..58ab218d1c 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -11131,10 +11131,10 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
NULL, "invalid default miss RSS");
- ctx->action_rss.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
- ctx->action_rss.level = 0,
- ctx->action_rss.types = priv->rss_conf.rss_hf,
- ctx->action_rss.key_len = priv->rss_conf.rss_key_len,
- ctx->action_rss.queue_num = priv->reta_idx_n,
- ctx->action_rss.key = priv->rss_conf.rss_key,
+ ctx->action_rss.func = RTE_ETH_HASH_FUNCTION_DEFAULT;
+ ctx->action_rss.level = 0;
+ ctx->action_rss.types = priv->rss_conf.rss_hf;
+ ctx->action_rss.key_len = priv->rss_conf.rss_key_len;
+ ctx->action_rss.queue_num = priv->reta_idx_n;
+ ctx->action_rss.key = priv->rss_conf.rss_key;
ctx->action_rss.queue = ctx->queue;
if (!priv->reta_idx_n || !priv->rxqs_n)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 1faae8ab32..192dfd282d 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -18890,5 +18890,5 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
}
/* Create default matcher in drop table. */
- matcher.tbl = mtrmng->drop_tbl[domain],
+ matcher.tbl = mtrmng->drop_tbl[domain];
tbl_data = container_of(mtrmng->drop_tbl[domain],
struct mlx5_flow_tbl_data_entry, tbl);
diff --git a/drivers/net/mlx5/mlx5_nta_split.c b/drivers/net/mlx5/mlx5_nta_split.c
index 6a85ab7fd1..c95da56d72 100644
--- a/drivers/net/mlx5/mlx5_nta_split.c
+++ b/drivers/net/mlx5/mlx5_nta_split.c
@@ -346,6 +346,6 @@ flow_nta_mreg_create_cb(void *tool_ctx, void *cb_ctx)
items[1].type = RTE_FLOW_ITEM_TYPE_END;
/* (Mark) or void + copy to Rx meta + jump to the MREG_ACT_TABLE_GROUP. */
- actions[1].type = RTE_FLOW_ACTION_TYPE_MODIFY_FIELD,
- actions[1].conf = &rx_meta,
+ actions[1].type = RTE_FLOW_ACTION_TYPE_MODIFY_FIELD;
+ actions[1].conf = &rx_meta;
actions[2].type = RTE_FLOW_ACTION_TYPE_JUMP;
actions[2].conf = &jump;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:10.998118919 +0000
+++ 0045-net-mlx5-fix-unnecessary-commas.patch 2025-11-21 11:05:09.461201161 +0000
@@ -1 +1 @@
-From 3b769d8389080ef0fd1b34765b9844db8f40729a Mon Sep 17 00:00:00 2001
+From 586d9f3009194f94a83a44d1de74abaf6aeefc67 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3b769d8389080ef0fd1b34765b9844db8f40729a ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 8d11b1ac3a..c742e0f282 100644
+index b23ee265b6..de037b25f1 100644
@@ -51 +52 @@
-index 1de398982a..f354008a60 100644
+index 944d422f97..58ab218d1c 100644
@@ -54 +55 @@
-@@ -11133,10 +11133,10 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
+@@ -11131,10 +11131,10 @@ flow_tunnel_add_default_miss(struct rte_eth_dev *dev,
@@ -72 +73 @@
-index bcce1597e2..1564bd7cbe 100644
+index 1faae8ab32..192dfd282d 100644
@@ -75 +76 @@
-@@ -18904,5 +18904,5 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
+@@ -18890,5 +18890,5 @@ flow_dv_create_mtr_tbls(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: store MTU at Rx queue allocation time' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (43 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix unnecessary commas' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect RSS action hash' " Kevin Traynor
` (51 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Adrian Schollmeyer; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/38e475e012b72cc341e3e9644ac751560b7e05f6
Thanks.
Kevin
---
From 38e475e012b72cc341e3e9644ac751560b7e05f6 Mon Sep 17 00:00:00 2001
From: Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Date: Thu, 30 Oct 2025 10:13:13 +0100
Subject: [PATCH] net/mlx5: store MTU at Rx queue allocation time
[ upstream commit 4414eb800708475bf1b38794434e590c7204d9d3 ]
For shared Rx queues, equal MTU for all ports sharing queues is enforced
using mlx5_shared_rxq_match() to make sure, the memory allocated in the
Rx buffer is large enough. The check uses the MTU as reported by the
ports' private dev_data structs, which contain the MTU currently set for
the device. In case one port's MTU is altered after Rx queues are
allocated and then a second port joins the shared Rx queue with the old,
yet correct MTU, the check fails despite the fact that the Rx buffer
size is correct for both ports.
This patch adds a new entry to the Rx queue control structure that
captures the MTU at the time the Rx buffer was allocated, since this is
the relevant information that needs to be checked when a port joins a
shared Rx queue.
Fixes: 09c2555303be ("net/mlx5: support shared Rx queue")
Signed-off-by: Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/mlx5_rx.h | 1 +
drivers/net/mlx5/mlx5_rxq.c | 6 +++++-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 99cf07f245..8af58f1614 100644
--- a/.mailmap
+++ b/.mailmap
@@ -22,4 +22,5 @@ Adrian Moreno <amorenoz@redhat.com>
Adrian Pielech <adrian.pielech@intel.com>
Adrian Podlawski <adrian.podlawski@intel.com>
+Adrian Schollmeyer <a.schollmeyer@syseleven.de>
Adrien Mazarguil <adrien.mazarguil@6wind.com>
Ady Agbarih <adypodoman@gmail.com>
diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h
index 6ec5f82022..f4b5136d60 100644
--- a/drivers/net/mlx5/mlx5_rx.h
+++ b/drivers/net/mlx5/mlx5_rx.h
@@ -159,4 +159,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
struct mlx5_rxq_ctrl {
struct mlx5_rxq_data rxq; /* Data path structure. */
+ uint16_t mtu; /* Original MTU that the queue was allocated with. */
LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */
LIST_HEAD(priv, mlx5_rxq_priv) owners; /* Owner rxq list. */
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 82958565de..0f504e4dd3 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -780,5 +780,5 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
return false;
}
- if (priv->mtu != spriv->mtu) {
+ if (priv->mtu != rxq_ctrl->mtu) {
DRV_LOG(ERR, "port %u queue index %u failed to join shared group: mtu mismatch",
dev->data->port_id, idx);
@@ -1770,4 +1770,8 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
LIST_INIT(&tmpl->owners);
MLX5_ASSERT(n_seg && n_seg <= MLX5_MAX_RXQ_NSEG);
+ /*
+ * Save the original MTU to check against for shared rx queues.
+ */
+ tmpl->mtu = dev->data->mtu;
/*
* Save the original segment configuration in the shared queue
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.029038981 +0000
+++ 0046-net-mlx5-store-MTU-at-Rx-queue-allocation-time.patch 2025-11-21 11:05:09.463201169 +0000
@@ -1 +1 @@
-From 4414eb800708475bf1b38794434e590c7204d9d3 Mon Sep 17 00:00:00 2001
+From 38e475e012b72cc341e3e9644ac751560b7e05f6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4414eb800708475bf1b38794434e590c7204d9d3 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index 1fb3fb5128..50a59a596a 100644
+index 99cf07f245..8af58f1614 100644
@@ -42 +43 @@
-index 7be31066a5..127abe41fb 100644
+index 6ec5f82022..f4b5136d60 100644
@@ -45 +46 @@
-@@ -177,4 +177,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
+@@ -159,4 +159,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
@@ -52 +53 @@
-index 1425886a22..2264dea877 100644
+index 82958565de..0f504e4dd3 100644
@@ -55 +56 @@
-@@ -781,5 +781,5 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
+@@ -780,5 +780,5 @@ mlx5_shared_rxq_match(struct mlx5_rxq_ctrl *rxq_ctrl, struct rte_eth_dev *dev,
@@ -62 +63 @@
-@@ -1813,4 +1813,8 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1770,4 +1770,8 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix indirect RSS action hash' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (44 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: remove counter alignment' " Kevin Traynor
` (50 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Dariusz Sosnowski; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/64fc7ef57758ad7b358e294df28c902a7e8b8c40
Thanks.
Kevin
---
From 64fc7ef57758ad7b358e294df28c902a7e8b8c40 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Thu, 30 Oct 2025 18:24:04 +0100
Subject: [PATCH] net/mlx5: fix indirect RSS action hash
[ upstream commit 6b010880a505c5609355180a7f99df940a163385 ]
Whenever indirect RSS flow action is created,
mlx5 PMD creates an hrxq object (abstraction over HW object
used to configure RSS hashing),
for all possible and supported protocols combinations.
For each combination, the hrxq configuration is adjusted
based on RSS hash types provided by the user
(e.g. hash on source L3 address is removed if user passed
RTE_ETH_RSS_L3_SRC_ONLY in hash types).
Function used for adjustment, flow_dv_action_rss_l34_hash_adjust(),
had a bug. If user requested, for example, hashing over both UDP ports
and only IPv6 source address, then RSS hashing was configured
to hash both IPv6 addresses. Adjustment for RTE_ETH_RSS_L3_SRC_ONLY
was skipped.
In HW Steering mode, this resulted in failures to use such indirect
RSS flow action in flow rules created through template flow API.
In this mode, only a single hrxq object is selected during flow rule
creation, based on actual configuration of RSS hash types
in flow action.
Since hrxq was created without applying RTE_ETH_RSS_L3_SRC_ONLY
adjustment and RSS hash types contained RTE_ETH_RSS_L3_SRC_ONLY,
then no matching hrxq could be found, resulting in rule creation failure.
This issue is addressed by the following:
- Missing adjustments are added to flow_dv_action_rss_l34_hash_adjust()
function.
This function is reworked to check each protocol type separately,
instead of using switch case over all combinations.
- Code for setting/looking up hrxq objects based on RSS hash types
is reworked. Separate switch cases for possible combinations in each
function are replaced with a single one.
Additional logging and assertions are added to flag any invalid
or missing combinations.
Beside that, the existing set of protocols combinations set
did not cover RSS hashing only over UDP or TCP ports,
which is a valid configuration.
These combinations are added in this patch
(new elements in mlx5_rss_hash_fields array).
Fixes: 212d17b6a650 ("net/mlx5: fix missing shared RSS hash types")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5.h | 2 -
drivers/net/mlx5/mlx5_flow.c | 15 ++
drivers/net/mlx5/mlx5_flow.h | 37 ++-
drivers/net/mlx5/mlx5_flow_dv.c | 410 +++++++++++++++++++-------------
4 files changed, 287 insertions(+), 177 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index f2ddb5c7b4..56eb08bd7c 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1820,6 +1820,4 @@ struct mlx5_obj_ops {
};
-#define MLX5_RSS_HASH_FIELDS_LEN RTE_DIM(mlx5_rss_hash_fields)
-
enum mlx5_ctrl_flow_type {
MLX5_CTRL_FLOW_TYPE_GENERAL,
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 58ab218d1c..e5f76aae45 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -34,4 +34,19 @@
#include "rte_pmd_mlx5.h"
+const uint64_t mlx5_rss_hash_fields[] = {
+ [MLX5_RSS_HASH_IDX_IPV4] = MLX5_RSS_HASH_IPV4,
+ [MLX5_RSS_HASH_IDX_IPV4_TCP] = MLX5_RSS_HASH_IPV4_TCP,
+ [MLX5_RSS_HASH_IDX_IPV4_UDP] = MLX5_RSS_HASH_IPV4_UDP,
+ [MLX5_RSS_HASH_IDX_IPV4_ESP] = MLX5_RSS_HASH_IPV4_ESP,
+ [MLX5_RSS_HASH_IDX_IPV6] = MLX5_RSS_HASH_IPV6,
+ [MLX5_RSS_HASH_IDX_IPV6_TCP] = MLX5_RSS_HASH_IPV6_TCP,
+ [MLX5_RSS_HASH_IDX_IPV6_UDP] = MLX5_RSS_HASH_IPV6_UDP,
+ [MLX5_RSS_HASH_IDX_IPV6_ESP] = MLX5_RSS_HASH_IPV6_ESP,
+ [MLX5_RSS_HASH_IDX_TCP] = MLX5_TCP_IBV_RX_HASH,
+ [MLX5_RSS_HASH_IDX_UDP] = MLX5_UDP_IBV_RX_HASH,
+ [MLX5_RSS_HASH_IDX_ESP_SPI] = MLX5_RSS_HASH_ESP_SPI,
+ [MLX5_RSS_HASH_IDX_NONE] = MLX5_RSS_HASH_NONE,
+};
+
/*
* Shared array for quick translation between port_id and vport mask/values
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index aa8ea54c66..c8ab114655 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1865,18 +1865,29 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
((func) == RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ_SORT))
-/* array of valid combinations of RX Hash fields for RSS */
-static const uint64_t mlx5_rss_hash_fields[] = {
- MLX5_RSS_HASH_IPV4,
- MLX5_RSS_HASH_IPV4_TCP,
- MLX5_RSS_HASH_IPV4_UDP,
- MLX5_RSS_HASH_IPV4_ESP,
- MLX5_RSS_HASH_IPV6,
- MLX5_RSS_HASH_IPV6_TCP,
- MLX5_RSS_HASH_IPV6_UDP,
- MLX5_RSS_HASH_IPV6_ESP,
- MLX5_RSS_HASH_ESP_SPI,
- MLX5_RSS_HASH_NONE,
+
+/**
+ * Each enum variant corresponds to a single valid protocols combination for hrxq configuration
+ * Each variant serves as an index into #mlx5_rss_hash_fields array containing default
+ * bitmaps of ibv_rx_hash_fields flags for given protocols combination.
+ */
+enum {
+ MLX5_RSS_HASH_IDX_IPV4,
+ MLX5_RSS_HASH_IDX_IPV4_TCP,
+ MLX5_RSS_HASH_IDX_IPV4_UDP,
+ MLX5_RSS_HASH_IDX_IPV4_ESP,
+ MLX5_RSS_HASH_IDX_IPV6,
+ MLX5_RSS_HASH_IDX_IPV6_TCP,
+ MLX5_RSS_HASH_IDX_IPV6_UDP,
+ MLX5_RSS_HASH_IDX_IPV6_ESP,
+ MLX5_RSS_HASH_IDX_TCP,
+ MLX5_RSS_HASH_IDX_UDP,
+ MLX5_RSS_HASH_IDX_ESP_SPI,
+ MLX5_RSS_HASH_IDX_NONE,
+ MLX5_RSS_HASH_IDX_MAX,
};
+/** Array of valid combinations of RX Hash fields for RSS. */
+extern const uint64_t mlx5_rss_hash_fields[];
+
/* Shared RSS action structure */
struct mlx5_shared_action_rss {
@@ -1887,5 +1898,5 @@ struct mlx5_shared_action_rss {
struct mlx5_ind_table_obj *ind_tbl;
/**< Hash RX queues (hrxq, hrxq_tunnel fields) indirection table. */
- uint32_t hrxq[MLX5_RSS_HASH_FIELDS_LEN];
+ uint32_t hrxq[MLX5_RSS_HASH_IDX_MAX];
/**< Hash RX queue indexes mapped to mlx5_rss_hash_fields */
rte_spinlock_t action_rss_sl; /**< Shared RSS action spinlock. */
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 192dfd282d..006684d5bd 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -15775,4 +15775,143 @@ flow_dv_translate(struct rte_eth_dev *dev,
}
+/*
+ * Protocol selector bitmap
+ * Each flag is used as an indicator that given protocol is specified in given RSS hash fields.
+ */
+#define RX_HASH_SELECTOR_IPV4 RTE_BIT32(0)
+#define RX_HASH_SELECTOR_IPV6 RTE_BIT32(1)
+#define RX_HASH_SELECTOR_UDP RTE_BIT32(2)
+#define RX_HASH_SELECTOR_TCP RTE_BIT32(3)
+#define RX_HASH_SELECTOR_ESP_SPI RTE_BIT32(4)
+#define RX_HASH_SELECTOR_NONE (0)
+
+#define RX_HASH_SELECTOR_IPV4_TCP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_TCP)
+#define RX_HASH_SELECTOR_IPV4_UDP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_UDP)
+#define RX_HASH_SELECTOR_IPV4_ESP (RX_HASH_SELECTOR_IPV4 | RX_HASH_SELECTOR_ESP_SPI)
+
+#define RX_HASH_SELECTOR_IPV6_TCP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_TCP)
+#define RX_HASH_SELECTOR_IPV6_UDP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_UDP)
+#define RX_HASH_SELECTOR_IPV6_ESP (RX_HASH_SELECTOR_IPV6 | RX_HASH_SELECTOR_ESP_SPI)
+
+static bool
+rx_hash_selector_has_valid_l3(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on both IPv4 and IPv6 is mutually exclusive. */
+ return !((selectors & RX_HASH_SELECTOR_IPV4) && (selectors & RX_HASH_SELECTOR_IPV6));
+}
+
+static bool
+rx_hash_selector_has_valid_l4(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on both UDP and TCP is mutually exclusive. */
+ return !((selectors & RX_HASH_SELECTOR_UDP) && (selectors & RX_HASH_SELECTOR_TCP));
+}
+
+static bool
+rx_hash_selector_has_valid_esp(const uint32_t selectors)
+{
+ /* In TIR configuration, RSS hashing on ESP and other L4 protocol is mutually exclusive. */
+ if (selectors & RX_HASH_SELECTOR_ESP_SPI)
+ return !((selectors & RX_HASH_SELECTOR_UDP) || (selectors & RX_HASH_SELECTOR_TCP));
+
+ return true;
+}
+
+/**
+ * Calculate protocol combination based on provided RSS hashing fields.
+ *
+ * @param[in] hash_fields
+ * Requested RSS hashing fields specified as a flags bitmap, based on ibv_rx_hash_fields.
+ * @param[out] selectors_out
+ * Calculated protocol combination will be written here.
+ * Result will be a bitmap of RX_HASH_SELECTOR_* flags.
+ *
+ * @return
+ * 0 if conversion is successful and protocol combination written to @p selectors_out.
+ * (-EINVAL) otherwise.
+ */
+static int
+rx_hash_calc_selector(const uint64_t hash_fields, uint32_t *selectors_out)
+{
+ const uint64_t filtered_hf = hash_fields & ~IBV_RX_HASH_INNER;
+ uint32_t selectors = 0;
+
+ if (filtered_hf & MLX5_RSS_HASH_IPV4)
+ selectors |= RX_HASH_SELECTOR_IPV4;
+ if (filtered_hf & MLX5_RSS_HASH_IPV6)
+ selectors |= RX_HASH_SELECTOR_IPV6;
+ if (!rx_hash_selector_has_valid_l3(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on both IPv4 and IPv6 is invalid: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ if (filtered_hf & MLX5_UDP_IBV_RX_HASH)
+ selectors |= RX_HASH_SELECTOR_UDP;
+ if (filtered_hf & MLX5_TCP_IBV_RX_HASH)
+ selectors |= RX_HASH_SELECTOR_TCP;
+ if (!rx_hash_selector_has_valid_l4(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on both UDP and TCP is invalid: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ if (filtered_hf & MLX5_RSS_HASH_ESP_SPI)
+ selectors |= RX_HASH_SELECTOR_ESP_SPI;
+ if (!rx_hash_selector_has_valid_esp(selectors)) {
+ DRV_LOG(NOTICE, "hrxq hashing on ESP SPI and UDP or TCP is mutually exclusive: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+
+ *selectors_out = selectors;
+ return 0;
+}
+
+/**
+ * Calculate the hrxq object index based on protocol combination.
+ *
+ * @param[in] selectors
+ * Protocol combination specified as bitmap of RX_HASH_SELECTOR_* flags.
+ *
+ * @return
+ * Index into hrxq array in #mlx5_shared_action_rss based on ginve protocol combination.
+ * (-EINVAL) if given protocol combination is not supported or is invalid.
+ */
+static int
+get_rss_hash_idx(const uint32_t selectors)
+{
+ switch (selectors) {
+ case RX_HASH_SELECTOR_IPV4:
+ return MLX5_RSS_HASH_IDX_IPV4;
+ case RX_HASH_SELECTOR_IPV4_TCP:
+ return MLX5_RSS_HASH_IDX_IPV4_TCP;
+ case RX_HASH_SELECTOR_IPV4_UDP:
+ return MLX5_RSS_HASH_IDX_IPV4_UDP;
+ case RX_HASH_SELECTOR_IPV4_ESP:
+ return MLX5_RSS_HASH_IDX_IPV4_ESP;
+ case RX_HASH_SELECTOR_IPV6:
+ return MLX5_RSS_HASH_IDX_IPV6;
+ case RX_HASH_SELECTOR_IPV6_TCP:
+ return MLX5_RSS_HASH_IDX_IPV6_TCP;
+ case RX_HASH_SELECTOR_IPV6_UDP:
+ return MLX5_RSS_HASH_IDX_IPV6_UDP;
+ case RX_HASH_SELECTOR_IPV6_ESP:
+ return MLX5_RSS_HASH_IDX_IPV6_ESP;
+ case RX_HASH_SELECTOR_TCP:
+ return MLX5_RSS_HASH_IDX_TCP;
+ case RX_HASH_SELECTOR_UDP:
+ return MLX5_RSS_HASH_IDX_UDP;
+ case RX_HASH_SELECTOR_ESP_SPI:
+ return MLX5_RSS_HASH_IDX_ESP_SPI;
+ case RX_HASH_SELECTOR_NONE:
+ return MLX5_RSS_HASH_IDX_NONE;
+ default:
+ DRV_LOG(ERR, "invalid hrxq hash fields combination: "
+ "selectors=0x%" PRIx32, selectors);
+ return -EINVAL;
+ }
+}
+
/**
* Set hash RX queue by hash fields (see enum ibv_rx_hash_fields)
@@ -15782,5 +15921,6 @@ flow_dv_translate(struct rte_eth_dev *dev,
* Shred RSS action holding hash RX queue objects.
* @param[in] hash_fields
- * Defines combination of packet fields to participate in RX hash.
+ * Defines combination of packet fields to participate in RX hash,
+ * specified as a bitmap of #ibv_rx_hash_fields flags.
* @param[in] tunnel
* Tunnel type
@@ -15797,63 +15937,24 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
{
uint32_t *hrxqs = action->hrxq;
+ uint32_t selectors = 0;
+ int ret;
- switch (hash_fields & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_SRC_ONLY:
- hrxqs[0] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_SRC_ONLY:
- hrxqs[1] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_SRC_ONLY:
- hrxqs[2] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_SRC_ONLY:
- hrxqs[3] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_SRC_ONLY:
- hrxqs[4] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_SRC_ONLY:
- hrxqs[5] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_NONE:
- hrxqs[6] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV4_ESP:
- hrxqs[7] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_IPV6_ESP:
- hrxqs[8] = hrxq_idx;
- return 0;
- case MLX5_RSS_HASH_ESP_SPI:
- hrxqs[9] = hrxq_idx;
- return 0;
- default:
- return -1;
- }
+ ret = rx_hash_calc_selector(hash_fields, &selectors);
+ /*
+ * Hash fields passed to this function are constructed internally.
+ * If this fails, then this is a PMD bug.
+ */
+ MLX5_ASSERT(ret == 0);
+
+ ret = get_rss_hash_idx(selectors);
+ /*
+ * Based on above assert, selectors should always yield correct index
+ * in mlx5_rss_hash_fields array.
+ * If this fails, then this is a PMD bug.
+ */
+ MLX5_ASSERT(ret >= 0 && ret < MLX5_RSS_HASH_IDX_MAX);
+ hrxqs[ret] = hrxq_idx;
+
+ return 0;
}
@@ -15867,5 +15968,6 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
* Shared RSS action ID holding hash RX queue objects.
* @param[in] hash_fields
- * Defines combination of packet fields to participate in RX hash.
+ * Defines combination of packet fields to participate in RX hash,
+ * specified as a bitmap of #ibv_rx_hash_fields flags.
* @param[in] tunnel
* Tunnel type
@@ -15882,54 +15984,24 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
mlx5_ipool_get(priv->sh->ipool[MLX5_IPOOL_RSS_SHARED_ACTIONS], idx);
const uint32_t *hrxqs = shared_rss->hrxq;
+ uint32_t selectors = 0;
+ int ret;
- switch (hash_fields & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_SRC_ONLY:
- return hrxqs[0];
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_TCP_SRC_ONLY:
- return hrxqs[1];
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV4_UDP_SRC_ONLY:
- return hrxqs[2];
- case MLX5_RSS_HASH_IPV6:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_SRC_ONLY:
- return hrxqs[3];
- case MLX5_RSS_HASH_IPV6_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP_SRC_ONLY:
- return hrxqs[4];
- case MLX5_RSS_HASH_IPV6_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_DST_ONLY:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP_SRC_ONLY:
- return hrxqs[5];
- case MLX5_RSS_HASH_NONE:
- return hrxqs[6];
- case MLX5_RSS_HASH_IPV4_ESP:
- return hrxqs[7];
- case MLX5_RSS_HASH_IPV6_ESP:
- return hrxqs[8];
- case MLX5_RSS_HASH_ESP_SPI:
- return hrxqs[9];
- default:
+ ret = rx_hash_calc_selector(hash_fields, &selectors);
+ if (ret < 0) {
+ DRV_LOG(ERR, "port %u Rx hash selector calculation failed: "
+ "rss_act_idx=%u hash_fields=0x%" PRIx64 " selectors=0x%" PRIx32,
+ dev->data->port_id, idx, hash_fields, selectors);
return 0;
}
+ ret = get_rss_hash_idx(selectors);
+ if (ret < 0) {
+ DRV_LOG(ERR, "port %u failed hrxq index lookup: "
+ "rss_act_idx=%u hash_fields=0x%" PRIx64 " selectors=0x%" PRIx32,
+ dev->data->port_id, idx, hash_fields, selectors);
+ return 0;
+ }
+
+ return hrxqs[ret];
}
@@ -16621,5 +16693,5 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
static int
__flow_dv_hrxqs_release(struct rte_eth_dev *dev,
- uint32_t (*hrxqs)[MLX5_RSS_HASH_FIELDS_LEN])
+ uint32_t (*hrxqs)[MLX5_RSS_HASH_IDX_MAX])
{
size_t i;
@@ -16656,4 +16728,60 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
}
+static inline void
+filter_ipv4_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & MLX5_IPV4_LAYER_TYPES) {
+ *hash_fields &= ~MLX5_RSS_HASH_IPV4;
+ if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_IPV4;
+ else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_IPV4;
+ else
+ *hash_fields |= MLX5_RSS_HASH_IPV4;
+ }
+}
+
+static inline void
+filter_ipv6_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & MLX5_IPV6_LAYER_TYPES) {
+ *hash_fields &= ~MLX5_RSS_HASH_IPV6;
+ if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_IPV6;
+ else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_IPV6;
+ else
+ *hash_fields |= MLX5_RSS_HASH_IPV6;
+ }
+}
+
+static inline void
+filter_udp_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & RTE_ETH_RSS_UDP) {
+ *hash_fields &= ~MLX5_UDP_IBV_RX_HASH;
+ if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_PORT_UDP;
+ else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_PORT_UDP;
+ else
+ *hash_fields |= MLX5_UDP_IBV_RX_HASH;
+ }
+}
+
+static inline void
+filter_tcp_types(uint64_t rss_types, uint64_t *hash_fields)
+{
+ if (rss_types & RTE_ETH_RSS_TCP) {
+ *hash_fields &= ~MLX5_TCP_IBV_RX_HASH;
+ if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
+ *hash_fields |= IBV_RX_HASH_DST_PORT_TCP;
+ else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
+ *hash_fields |= IBV_RX_HASH_SRC_PORT_TCP;
+ else
+ *hash_fields |= MLX5_TCP_IBV_RX_HASH;
+ }
+}
+
/**
* Adjust L3/L4 hash value of pre-created shared RSS hrxq according to
@@ -16667,7 +16795,7 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
*
* @param[in] orig_rss_types
- * RSS type as provided in shared RSS action.
+ * RSS type as provided in shared RSS action, specified as a bitmap of RTE_ETH_RSS_* flags.
* @param[in, out] hash_field
- * hash_field variable needed to be adjusted.
+ * hash_field variable needed to be adjusted, specified as a bitmap of #ibv_rx_hash_fields flags.
*
* @return
@@ -16678,58 +16806,16 @@ flow_dv_action_rss_l34_hash_adjust(uint64_t orig_rss_types,
uint64_t *hash_field)
{
+ uint64_t hash_field_protos = *hash_field & ~IBV_RX_HASH_INNER;
uint64_t rss_types = rte_eth_rss_hf_refine(orig_rss_types);
- switch (*hash_field & ~IBV_RX_HASH_INNER) {
- case MLX5_RSS_HASH_IPV4:
- if (rss_types & MLX5_IPV4_LAYER_TYPES) {
- *hash_field &= ~MLX5_RSS_HASH_IPV4;
- if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_IPV4;
- else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_IPV4;
- else
- *hash_field |= MLX5_RSS_HASH_IPV4;
- }
- return;
- case MLX5_RSS_HASH_IPV6:
- if (rss_types & MLX5_IPV6_LAYER_TYPES) {
- *hash_field &= ~MLX5_RSS_HASH_IPV6;
- if (rss_types & RTE_ETH_RSS_L3_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_IPV6;
- else if (rss_types & RTE_ETH_RSS_L3_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_IPV6;
- else
- *hash_field |= MLX5_RSS_HASH_IPV6;
- }
- return;
- case MLX5_RSS_HASH_IPV4_UDP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_UDP:
- if (rss_types & RTE_ETH_RSS_UDP) {
- *hash_field &= ~MLX5_UDP_IBV_RX_HASH;
- if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_PORT_UDP;
- else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_PORT_UDP;
- else
- *hash_field |= MLX5_UDP_IBV_RX_HASH;
- }
- return;
- case MLX5_RSS_HASH_IPV4_TCP:
- /* fall-through. */
- case MLX5_RSS_HASH_IPV6_TCP:
- if (rss_types & RTE_ETH_RSS_TCP) {
- *hash_field &= ~MLX5_TCP_IBV_RX_HASH;
- if (rss_types & RTE_ETH_RSS_L4_DST_ONLY)
- *hash_field |= IBV_RX_HASH_DST_PORT_TCP;
- else if (rss_types & RTE_ETH_RSS_L4_SRC_ONLY)
- *hash_field |= IBV_RX_HASH_SRC_PORT_TCP;
- else
- *hash_field |= MLX5_TCP_IBV_RX_HASH;
- }
- return;
- default:
- return;
- }
+ if (hash_field_protos & MLX5_RSS_HASH_IPV4)
+ filter_ipv4_types(rss_types, hash_field);
+ else if (hash_field_protos & MLX5_RSS_HASH_IPV6)
+ filter_ipv6_types(rss_types, hash_field);
+
+ if (hash_field_protos & MLX5_UDP_IBV_RX_HASH)
+ filter_udp_types(rss_types, hash_field);
+ else if (hash_field_protos & MLX5_TCP_IBV_RX_HASH)
+ filter_tcp_types(rss_types, hash_field);
}
@@ -16783,5 +16869,5 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
if (priv->sh->config.dv_flow_en == 2)
rss_desc.hws_flags = MLX5DR_ACTION_FLAG_HWS_RX;
- for (i = 0; i < MLX5_RSS_HASH_FIELDS_LEN; i++) {
+ for (i = 0; i < MLX5_RSS_HASH_IDX_MAX; i++) {
struct mlx5_hrxq *hrxq;
uint64_t hash_fields = mlx5_rss_hash_fields[i];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.075027049 +0000
+++ 0047-net-mlx5-fix-indirect-RSS-action-hash.patch 2025-11-21 11:05:09.479201238 +0000
@@ -1 +1 @@
-From 6b010880a505c5609355180a7f99df940a163385 Mon Sep 17 00:00:00 2001
+From 64fc7ef57758ad7b358e294df28c902a7e8b8c40 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6b010880a505c5609355180a7f99df940a163385 ]
+
@@ -49 +50,0 @@
-Cc: stable@dpdk.org
@@ -61 +62 @@
-index 203cf00596..7e4bfacd11 100644
+index f2ddb5c7b4..56eb08bd7c 100644
@@ -64 +65 @@
-@@ -1843,6 +1843,4 @@ struct mlx5_obj_ops {
+@@ -1820,6 +1820,4 @@ struct mlx5_obj_ops {
@@ -72 +73 @@
-index 098ef9d034..ed67a90a22 100644
+index 58ab218d1c..e5f76aae45 100644
@@ -75 +76 @@
-@@ -35,4 +35,19 @@
+@@ -34,4 +34,19 @@
@@ -96 +97 @@
-index ef743fc3cb..2de0f35815 100644
+index aa8ea54c66..c8ab114655 100644
@@ -99 +100 @@
-@@ -1898,18 +1898,29 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
+@@ -1865,18 +1865,29 @@ flow_hw_get_reg_id_from_ctx(void *dr_ctx, enum rte_flow_item_type type,
@@ -141 +142 @@
-@@ -1920,5 +1931,5 @@ struct mlx5_shared_action_rss {
+@@ -1887,5 +1898,5 @@ struct mlx5_shared_action_rss {
@@ -149 +150 @@
-index 1564bd7cbe..f765f94116 100644
+index 192dfd282d..006684d5bd 100644
@@ -152 +153 @@
-@@ -15789,4 +15789,143 @@ flow_dv_translate(struct rte_eth_dev *dev,
+@@ -15775,4 +15775,143 @@ flow_dv_translate(struct rte_eth_dev *dev,
@@ -296 +297 @@
-@@ -15796,5 +15935,6 @@ flow_dv_translate(struct rte_eth_dev *dev,
+@@ -15782,5 +15921,6 @@ flow_dv_translate(struct rte_eth_dev *dev,
@@ -304 +305 @@
-@@ -15811,63 +15951,24 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
+@@ -15797,63 +15937,24 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
@@ -387 +388 @@
-@@ -15881,5 +15982,6 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
+@@ -15867,5 +15968,6 @@ __flow_dv_action_rss_hrxq_set(struct mlx5_shared_action_rss *action,
@@ -395 +396 @@
-@@ -15896,54 +15998,24 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
+@@ -15882,54 +15984,24 @@ flow_dv_action_rss_hrxq_lookup(struct rte_eth_dev *dev, uint32_t idx,
@@ -466 +467 @@
-@@ -16635,5 +16707,5 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
+@@ -16621,5 +16693,5 @@ flow_dv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
@@ -473 +474 @@
-@@ -16670,4 +16742,60 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
+@@ -16656,4 +16728,60 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
@@ -534 +535 @@
-@@ -16681,7 +16809,7 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
+@@ -16667,7 +16795,7 @@ __flow_dv_action_rss_hrxqs_release(struct rte_eth_dev *dev,
@@ -544 +545 @@
-@@ -16692,58 +16820,16 @@ flow_dv_action_rss_l34_hash_adjust(uint64_t orig_rss_types,
+@@ -16678,58 +16806,16 @@ flow_dv_action_rss_l34_hash_adjust(uint64_t orig_rss_types,
@@ -613 +614 @@
-@@ -16797,5 +16883,5 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
+@@ -16783,5 +16869,5 @@ __flow_dv_action_rss_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: remove counter alignment' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (45 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect RSS action hash' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix external queues access' " Kevin Traynor
` (49 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/718a9185610cc862f76e6667eda4d6e8121bf8fa
Thanks.
Kevin
---
From 718a9185610cc862f76e6667eda4d6e8121bf8fa Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Fri, 31 Oct 2025 04:50:38 +0200
Subject: [PATCH] net/mlx5: remove counter alignment
[ upstream commit 3eec7a797f41f1586c7b1de91935ea4a933a6c18 ]
The memory footprint was increased due to the alignment.
Fixes: 820ca7361bb7 ("net/mlx5: fix flow aging race condition")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.h b/drivers/net/mlx5/mlx5_hws_cnt.h
index 8408c571ec..e15cd49b91 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.h
+++ b/drivers/net/mlx5/mlx5_hws_cnt.h
@@ -44,5 +44,5 @@ struct mlx5_hws_cnt_dcs_mng {
union mlx5_hws_cnt_state {
- alignas(RTE_CACHE_LINE_SIZE) RTE_ATOMIC(uint32_t)data;
+ RTE_ATOMIC(uint32_t) data;
struct {
uint32_t in_used:1;
@@ -65,5 +65,5 @@ struct mlx5_hws_cnt {
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;
+ RTE_ATOMIC(uint32_t) query_gen_when_free;
/*
* When PMD own this counter (user put back counter to PMD
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.102321042 +0000
+++ 0048-net-mlx5-remove-counter-alignment.patch 2025-11-21 11:05:09.480904559 +0000
@@ -1 +1 @@
-From 3eec7a797f41f1586c7b1de91935ea4a933a6c18 Mon Sep 17 00:00:00 2001
+From 718a9185610cc862f76e6667eda4d6e8121bf8fa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3eec7a797f41f1586c7b1de91935ea4a933a6c18 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index f5b7e8f643..8d7a9d34df 100644
+index 8408c571ec..e15cd49b91 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix external queues access' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (46 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: remove counter alignment' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix modify field action restriction' " Kevin Traynor
` (48 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/5e1e4e9ba29946a0bbd50aa02b050afb83bf0ef1
Thanks.
Kevin
---
From 5e1e4e9ba29946a0bbd50aa02b050afb83bf0ef1 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Thu, 30 Oct 2025 11:11:38 +0200
Subject: [PATCH] net/mlx5: fix external queues access
[ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ]
mlx5_ext_rxq_get() and mlx5_ext_txq_get() functions did not return
NULL value if query index was not referencing external queue.
As a result, calling functions did not expect the NULL on return.
External Rx queue:
- In mlx5_ext_rxq_get() remove assert and return NULL if a queue index
does not point to a valid external queue.
- In mlx5_ext_rxq_verify() validate that probed queue index references
a valid extern queue.
External Tx queue:
- In mlx5_ext_txq_get() remove assert and return NULL if a queue index
does not point to a valid external queue.
- In mlx5_ext_txq_verify() validate that probed queue index references
a valid extern queue.
Fixes: 311b17e669ab ("net/mlx5: support queue/RSS actions for external Rx queue")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_devx.c | 5 +++++
drivers/net/mlx5/mlx5_flow.h | 2 ++
drivers/net/mlx5/mlx5_rxq.c | 17 ++++++++++-------
drivers/net/mlx5/mlx5_txq.c | 10 +++++-----
4 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index 7ca95e81c6..5a71f2a21d 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -777,4 +777,9 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
mlx5_ext_rxq_get(dev, queues[i]);
+ if (ext_rxq == NULL) {
+ rte_errno = EINVAL;
+ mlx5_free(rqt_attr);
+ return NULL;
+ }
rqt_attr->rq_list[i] = ext_rxq->hw_id;
} else {
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index c8ab114655..cfdaaac812 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -2010,4 +2010,6 @@ flow_hw_get_sqn(struct rte_eth_dev *dev, uint16_t tx_queue, uint32_t *sqn)
if (mlx5_is_external_txq(dev, tx_queue)) {
ext_txq = mlx5_ext_txq_get(dev, tx_queue);
+ if (ext_txq == NULL)
+ return -EINVAL;
*sqn = ext_txq->hw_id;
return 0;
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 0f504e4dd3..76fddb262e 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -2162,5 +2162,6 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, idx);
- rte_atomic_fetch_add_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed);
+ if (rxq != NULL)
+ rte_atomic_fetch_add_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed);
return rxq;
}
@@ -2182,5 +2183,7 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, idx);
- return rte_atomic_fetch_sub_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed) - 1;
+ return rxq != NULL ?
+ rte_atomic_fetch_sub_explicit(&rxq->refcnt, 1, rte_memory_order_relaxed) - 1 :
+ UINT32_MAX;
}
@@ -2201,6 +2204,6 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
struct mlx5_priv *priv = dev->data->dev_private;
- MLX5_ASSERT(mlx5_is_external_rxq(dev, idx));
- return &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN];
+ return mlx5_is_external_rxq(dev, idx) ?
+ &priv->ext_rxqs[idx - RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN] : NULL;
}
@@ -2365,5 +2368,4 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_external_q *rxq;
uint32_t i;
int ret = 0;
@@ -2373,6 +2375,7 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
for (i = RTE_PMD_MLX5_EXTERNAL_RX_QUEUE_ID_MIN; i <= UINT16_MAX ; ++i) {
- rxq = mlx5_ext_rxq_get(dev, i);
- if (rxq->refcnt < 2)
+ struct mlx5_external_q *rxq = mlx5_ext_rxq_get(dev, i);
+
+ if (rxq == NULL || rxq->refcnt < 2)
continue;
DRV_LOG(DEBUG, "Port %u external RxQ %u still referenced.",
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index f74af5471e..67cbd8bd55 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -1210,6 +1210,6 @@ mlx5_ext_txq_get(struct rte_eth_dev *dev, uint16_t idx)
struct mlx5_priv *priv = dev->data->dev_private;
- MLX5_ASSERT(mlx5_is_external_txq(dev, idx));
- return &priv->ext_txqs[idx - MLX5_EXTERNAL_TX_QUEUE_ID_MIN];
+ return mlx5_is_external_txq(dev, idx) ?
+ &priv->ext_txqs[idx - MLX5_EXTERNAL_TX_QUEUE_ID_MIN] : NULL;
}
@@ -1227,5 +1227,4 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_external_q *txq;
uint32_t i;
int ret = 0;
@@ -1235,6 +1234,7 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
for (i = MLX5_EXTERNAL_TX_QUEUE_ID_MIN; i <= UINT16_MAX ; ++i) {
- txq = mlx5_ext_txq_get(dev, i);
- if (txq->refcnt < 2)
+ struct mlx5_external_q *txq = mlx5_ext_txq_get(dev, i);
+
+ if (txq == NULL || txq->refcnt < 2)
continue;
DRV_LOG(DEBUG, "Port %u external TxQ %u still referenced.",
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.134009316 +0000
+++ 0049-net-mlx5-fix-external-queues-access.patch 2025-11-21 11:05:09.485201263 +0000
@@ -1 +1 @@
-From d524b58819b46ea47d02338204d24c2f2ba29ee2 Mon Sep 17 00:00:00 2001
+From 5e1e4e9ba29946a0bbd50aa02b050afb83bf0ef1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ]
+
@@ -28 +29,0 @@
-Cc: stable@dpdk.org
@@ -40 +41 @@
-index 673c9f3902..523b53d713 100644
+index 7ca95e81c6..5a71f2a21d 100644
@@ -43 +44 @@
-@@ -762,4 +762,9 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
+@@ -777,4 +777,9 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
@@ -54 +55 @@
-index 2de0f35815..308aeadcc8 100644
+index c8ab114655..cfdaaac812 100644
@@ -57 +58 @@
-@@ -2043,4 +2043,6 @@ flow_hw_get_sqn(struct rte_eth_dev *dev, uint16_t tx_queue, uint32_t *sqn)
+@@ -2010,4 +2010,6 @@ flow_hw_get_sqn(struct rte_eth_dev *dev, uint16_t tx_queue, uint32_t *sqn)
@@ -65 +66 @@
-index 2264dea877..9210a92c5f 100644
+index 0f504e4dd3..76fddb262e 100644
@@ -68 +69 @@
-@@ -2217,5 +2217,6 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2162,5 +2162,6 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx)
@@ -76 +77 @@
-@@ -2237,5 +2238,7 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2182,5 +2183,7 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx)
@@ -85 +86 @@
-@@ -2256,6 +2259,6 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2201,6 +2204,6 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx)
@@ -94 +95 @@
-@@ -2420,5 +2423,4 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
+@@ -2365,5 +2368,4 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
@@ -100 +101 @@
-@@ -2428,6 +2430,7 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
+@@ -2373,6 +2375,7 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev)
@@ -111 +112 @@
-index e20165d74e..e273486809 100644
+index f74af5471e..67cbd8bd55 100644
@@ -114 +115 @@
-@@ -1282,6 +1282,6 @@ mlx5_ext_txq_get(struct rte_eth_dev *dev, uint16_t idx)
+@@ -1210,6 +1210,6 @@ mlx5_ext_txq_get(struct rte_eth_dev *dev, uint16_t idx)
@@ -123 +124 @@
-@@ -1299,5 +1299,4 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
+@@ -1227,5 +1227,4 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
@@ -129 +130 @@
-@@ -1307,6 +1306,7 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
+@@ -1235,6 +1234,7 @@ mlx5_ext_txq_verify(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix modify field action restriction' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (47 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix external queues access' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix meter mark allocation' " Kevin Traynor
` (47 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b600419bdf0e752f19cd9eac6f123b444d74e299
Thanks.
Kevin
---
From b600419bdf0e752f19cd9eac6f123b444d74e299 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 5 Nov 2025 10:50:49 +0200
Subject: [PATCH] net/mlx5: fix modify field action restriction
[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
Update DV flow engine modify field validation:
- Reject 'add' and 'sub' operations when source field is not VALUE
or POINTER in DV flow engine.
Update documentation to clarify operation support:
- 'set' operation is supported in all modes
- 'add' operation with VALUE/POINTER source fields is
supported in DV/HWS mode.
- Specify relevant HW supporting packet header as 'src' field.
- List supported 'dst' fields.
Fixes: 641dbe4fb053 ("net/mlx5: support modify field flow action")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 006684d5bd..f5dbb06cd5 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -5643,4 +5643,11 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev,
if (src_data->field != RTE_FLOW_FIELD_VALUE &&
src_data->field != RTE_FLOW_FIELD_POINTER) {
+ if (conf->operation != RTE_FLOW_MODIFY_SET)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION_CONF,
+ &conf->operation,
+ "modify field action type add is not"
+ " supported when src field type is"
+ " not value/pointer");
if (root)
return rte_flow_error_set(error, ENOTSUP,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.173951191 +0000
+++ 0050-net-mlx5-fix-modify-field-action-restriction.patch 2025-11-21 11:05:09.493201297 +0000
@@ -1 +1 @@
-From 17082f45e93697dcfbe056da7f90af90362cc6b2 Mon Sep 17 00:00:00 2001
+From b600419bdf0e752f19cd9eac6f123b444d74e299 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 17082f45e93697dcfbe056da7f90af90362cc6b2 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -23,36 +24,3 @@
- doc/guides/nics/mlx5.rst | 23 ++++++++++++++++++++++-
- drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++++
- 2 files changed, 29 insertions(+), 1 deletion(-)
-
-diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
-index 8474ebf601..3eb7817f9a 100644
---- a/doc/guides/nics/mlx5.rst
-+++ b/doc/guides/nics/mlx5.rst
-@@ -3087,5 +3087,26 @@ Limitations
- ^^^^^^^^^^^
-
--#. Supports the 'set' and 'add' operations for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` action.
-+#. Supports the 'set' operation for ``RTE_FLOW_ACTION_TYPE_MODIFY_FIELD`` in all flow engines.
-+
-+#. Supports the 'add' operation with 'src' field
-+ of type ``RTE_FLOW_FIELD_VALUE`` or ``RTE_FLOW_FIELD_POINTER``
-+ with both :ref:`HW steering <mlx5_hws>` and DV flow engine (``dv_flow_en=1``).
-+
-+ HW steering flow engine, starting with ConnectX-7 and BlueField-3,
-+ supports packet header fields in 'src' field.
-+
-+ 'dst' field can be any of the following:
-+
-+ - ``RTE_FLOW_FIELD_IPV4_TTL``
-+ - ``RTE_FLOW_FIELD_IPV6_HOPLIMIT``
-+ - ``RTE_FLOW_FIELD_TCP_SEQ_NUM``
-+ - ``RTE_FLOW_FIELD_TCP_ACK_NUM``
-+ - ``RTE_FLOW_FIELD_TAG``
-+ - ``RTE_FLOW_FIELD_META``
-+ - ``RTE_FLOW_FIELD_FLEX_ITEM``
-+ - ``RTE_FLOW_FIELD_TCP_DATA_OFFSET``
-+ - ``RTE_FLOW_FIELD_IPV4_IHL``
-+ - ``RTE_FLOW_FIELD_IPV4_TOTAL_LEN``
-+ - ``RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN``
-
- #. In template tables of group 0, the modify action must be fully masked.
+ drivers/net/mlx5/mlx5_flow_dv.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
@@ -60 +28 @@
-index f765f94116..95ca57e8c4 100644
+index 006684d5bd..f5dbb06cd5 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix meter mark allocation' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (48 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix modify field action restriction' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect meter index leak' " Kevin Traynor
` (46 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/49fdd94e3a56314980642b370818075c03956a4c
Thanks.
Kevin
---
From 49fdd94e3a56314980642b370818075c03956a4c Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Wed, 5 Nov 2025 14:52:00 +0200
Subject: [PATCH] net/mlx5: fix meter mark allocation
[ upstream commit 112facb17b0c0efd90e15501d0830a0f6af7b7c9 ]
When failing to allocate a meter HW resource,
PMD may use an invalid index to release the job.
Fixes: 4359d9d1f76b ("net/mlx5: fix sync meter processing in HWS")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 052b7f2768..fcbf8df2c0 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1901,4 +1901,6 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
true, error);
if (!aso_mtr) {
+ if (queue == MLX5_HW_INV_QUEUE)
+ queue = CTRL_QUEUE_ID(priv);
flow_hw_job_put(priv, job, queue);
return -1;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.210396983 +0000
+++ 0051-net-mlx5-fix-meter-mark-allocation.patch 2025-11-21 11:05:09.502201336 +0000
@@ -1 +1 @@
-From 112facb17b0c0efd90e15501d0830a0f6af7b7c9 Mon Sep 17 00:00:00 2001
+From 49fdd94e3a56314980642b370818075c03956a4c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 112facb17b0c0efd90e15501d0830a0f6af7b7c9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index ff68483a40..cd11619b26 100644
+index 052b7f2768..fcbf8df2c0 100644
@@ -22 +23 @@
-@@ -1935,4 +1935,6 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
+@@ -1901,4 +1901,6 @@ flow_hw_meter_mark_compile(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix indirect meter index leak' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (49 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix meter mark allocation' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Kevin Traynor
` (45 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/388e0fe6f838573d8deae2c7a4e7a817e7d0b7f3
Thanks.
Kevin
---
From 388e0fe6f838573d8deae2c7a4e7a817e7d0b7f3 Mon Sep 17 00:00:00 2001
From: Rongwei Liu <rongweil@nvidia.com>
Date: Wed, 5 Nov 2025 14:54:33 +0200
Subject: [PATCH] net/mlx5: fix indirect meter index leak
[ upstream commit e56ebf25074280479141eac8050e1f40a69bdbf9 ]
When destroying the meter_mark indirect action, PMD
didn't recycle the ipool resources.
Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with HWS")
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index fcbf8df2c0..25cd973a57 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -12695,11 +12695,14 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
}
/* Wait for ASO object completion. */
- if (queue == MLX5_HW_INV_QUEUE &&
- mlx5_aso_mtr_wait(priv, aso_mtr, true)) {
- ret = -EINVAL;
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
- NULL, "Unable to wait for ASO meter CQE");
- break;
+ if (queue == MLX5_HW_INV_QUEUE) {
+ if (mlx5_aso_mtr_wait(priv, aso_mtr, true)) {
+ ret = -EINVAL;
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, "Unable to wait for ASO meter CQE");
+ }
+ mlx5_ipool_free(pool->idx_pool, idx);
+ if (ret < 0)
+ break;
}
aso = true;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.246251949 +0000
+++ 0052-net-mlx5-fix-indirect-meter-index-leak.patch 2025-11-21 11:05:09.511201374 +0000
@@ -1 +1 @@
-From e56ebf25074280479141eac8050e1f40a69bdbf9 Mon Sep 17 00:00:00 2001
+From 388e0fe6f838573d8deae2c7a4e7a817e7d0b7f3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e56ebf25074280479141eac8050e1f40a69bdbf9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index cd11619b26..1755f2cffc 100644
+index fcbf8df2c0..25cd973a57 100644
@@ -22 +23 @@
-@@ -13014,11 +13014,14 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
+@@ -12695,11 +12695,14 @@ flow_hw_action_handle_destroy(struct rte_eth_dev *dev, uint32_t queue,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix error reporting on masked indirect actions' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (50 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect meter index leak' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'vhost: fix external buffer in VDUSE' " Kevin Traynor
` (44 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Dariusz Sosnowski; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bd8a9fa033ac7275ae7b3c87227c272e8056d20d
Thanks.
Kevin
---
From bd8a9fa033ac7275ae7b3c87227c272e8056d20d Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 5 Nov 2025 17:52:54 +0100
Subject: [PATCH] net/mlx5: fix error reporting on masked indirect actions
[ upstream commit 1d961316d9f541c6679dcd519a40a667f9885f30 ]
Whenever masked indirect actions in actions template were handled
by mlx5 PMD and user passed incorrect action configuration,
the specific errors were not returned through rte_flow_error struct.
Existing logs also used WARNING log level, which made debugging a bit
harder.
This patch fixes error reporting for masked indirect actions,
during flow actions translation done in HWS mode:
- Replace "return -1" with error reporting through rte_flow_error.
- Change log level from WARNING to ERR.
- Add more information to log messages (port index
and action handle).
Fixes: 7ab3962d2d2b ("net/mlx5: add indirect HW steering action")
Fixes: 4d368e1da3a4 ("net/mlx5: support flow counter action for HWS")
Fixes: 463170a7c934 ("net/mlx5: support connection tracking with HWS")
Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 42 +++++++++++++++++++++++----------
1 file changed, 29 insertions(+), 13 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 25cd973a57..667472800f 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1288,5 +1288,6 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
struct mlx5_hw_actions *acts,
uint16_t action_src,
- uint16_t action_dst)
+ uint16_t action_dst,
+ struct rte_flow_error *error)
{
struct mlx5_priv *priv = dev->data->dev_private;
@@ -1305,6 +1306,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
(enum rte_flow_action_type)MLX5_RTE_FLOW_ACTION_TYPE_RSS,
action_src, action_dst, idx, shared_rss)) {
- DRV_LOG(WARNING, "Indirect RSS action index %d translate failed", act_idx);
- return -1;
+ DRV_LOG(ERR, "port %u Indirect RSS action (handle %p) translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action, "Indirect RSS action translate failed");
}
break;
@@ -1314,6 +1317,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
MLX5_RTE_FLOW_ACTION_TYPE_COUNT,
action_src, action_dst, act_idx)) {
- DRV_LOG(WARNING, "Indirect count action translate failed");
- return -1;
+ DRV_LOG(ERR,
+ "port %u Indirect count action (handle %p) "
+ "translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action,
+ "Indirect count action translate failed");
}
break;
@@ -1321,6 +1329,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
if (flow_hw_ct_compile(dev, MLX5_HW_INV_QUEUE,
idx, &acts->rule_acts[action_dst])) {
- DRV_LOG(WARNING, "Indirect CT action translate failed");
- return -1;
+ DRV_LOG(ERR, "port %u Indirect CT action (handle %p) translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action, "Indirect CT action translate failed");
}
break;
@@ -1330,6 +1340,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
MLX5_RTE_FLOW_ACTION_TYPE_METER_MARK,
action_src, action_dst, idx)) {
- DRV_LOG(WARNING, "Indirect meter mark action translate failed");
- return -1;
+ DRV_LOG(ERR,
+ "port %u Indirect meter mark action (handle %p) "
+ "translate failed",
+ dev->data->port_id, action->conf);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ action,
+ "Indirect meter mark action translate failed");
}
break;
@@ -1338,6 +1353,7 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
break;
default:
- DRV_LOG(WARNING, "Unsupported shared action type:%d", type);
- break;
+ DRV_LOG(ERR, "Unsupported shared action type: %d", type);
+ return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, action,
+ "Unsupported shared action type");
}
return 0;
@@ -2501,6 +2517,6 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
}
if (actions->conf && masks->conf) {
- if (flow_hw_shared_action_translate
- (dev, actions, acts, src_pos, dr_pos))
+ if (flow_hw_shared_action_translate(dev, actions, acts,
+ src_pos, dr_pos, &sub_error))
goto err;
} else if (__flow_hw_act_data_indirect_append
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.283160308 +0000
+++ 0053-net-mlx5-fix-error-reporting-on-masked-indirect-acti.patch 2025-11-21 11:05:09.520201412 +0000
@@ -1 +1 @@
-From 1d961316d9f541c6679dcd519a40a667f9885f30 Mon Sep 17 00:00:00 2001
+From bd8a9fa033ac7275ae7b3c87227c272e8056d20d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1d961316d9f541c6679dcd519a40a667f9885f30 ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index 1755f2cffc..4d85fffb8f 100644
+index 25cd973a57..667472800f 100644
@@ -36 +37 @@
-@@ -1322,5 +1322,6 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1288,5 +1288,6 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -44 +45 @@
-@@ -1339,6 +1340,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1305,6 +1306,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -55 +56 @@
-@@ -1348,6 +1351,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1314,6 +1317,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -69 +70 @@
-@@ -1355,6 +1363,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1321,6 +1329,8 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -80 +81 @@
-@@ -1364,6 +1374,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1330,6 +1340,11 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -94 +95 @@
-@@ -1372,6 +1387,7 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1338,6 +1353,7 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -104 +105 @@
-@@ -2537,6 +2553,6 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2501,6 +2517,6 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'vhost: fix external buffer in VDUSE' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (51 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net: fix L2 length for GRE packets' " Kevin Traynor
` (43 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: David Marchand; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0ea4b51e84ced4fdf9a68ec17e7fe73fa4dc49f6
Thanks.
Kevin
---
From 0ea4b51e84ced4fdf9a68ec17e7fe73fa4dc49f6 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 28 Oct 2025 13:34:53 +0100
Subject: [PATCH] vhost: fix external buffer in VDUSE
[ upstream commit 8ae4f1d511226fd65a979e9f8a1e51835281a59b ]
extbuf and linearbuf features are required for (enhanced) TSO support
in OVS.
VDUSE ports were generating multi-segments mbufs in case of "TSO"
buffers which resulted in OVS generating wrong packets after tunnel
encapsulation.
Enable the missing datapath features.
Fixes: 0adb8eccc6a6 ("vhost: add VDUSE device creation and destruction")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/socket.c | 3 ++-
lib/vhost/vduse.c | 8 +++++++-
lib/vhost/vduse.h | 6 ++++--
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c
index 799c6b0590..52199d02f7 100644
--- a/lib/vhost/socket.c
+++ b/lib/vhost/socket.c
@@ -1193,5 +1193,6 @@ rte_vhost_driver_start(const char *path)
if (vsocket->is_vduse)
- return vduse_device_create(path, vsocket->net_compliant_ol_flags);
+ return vduse_device_create(path, vsocket->net_compliant_ol_flags,
+ vsocket->extbuf, vsocket->linearbuf);
if (vhost_user.fdset == NULL) {
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 5d78f01126..8dada7b841 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -672,5 +672,5 @@ out_err:
int
-vduse_device_create(const char *path, bool compliant_ol_flags)
+vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf)
{
int control_fd, dev_fd, vid, ret;
@@ -817,4 +817,10 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
vhost_setup_virtio_net(dev->vid, true, compliant_ol_flags, true, true);
+ if (extbuf)
+ vhost_enable_extbuf(dev->vid);
+
+ if (linearbuf)
+ vhost_enable_linearbuf(dev->vid);
+
for (i = 0; i < total_queues; i++) {
struct vduse_vq_config vq_cfg = { 0 };
diff --git a/lib/vhost/vduse.h b/lib/vhost/vduse.h
index 0d8f3f1205..353f297d5a 100644
--- a/lib/vhost/vduse.h
+++ b/lib/vhost/vduse.h
@@ -12,5 +12,5 @@
#ifdef VHOST_HAS_VDUSE
-int vduse_device_create(const char *path, bool compliant_ol_flags);
+int vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf);
int vduse_device_destroy(const char *path);
@@ -18,7 +18,9 @@ int vduse_device_destroy(const char *path);
static inline int
-vduse_device_create(const char *path, bool compliant_ol_flags)
+vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf);
{
RTE_SET_USED(compliant_ol_flags);
+ RTE_SET_USED(extbuf);
+ RTE_SET_USED(linearbuf);
VHOST_CONFIG_LOG(path, ERR, "VDUSE support disabled at build time");
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.311282928 +0000
+++ 0054-vhost-fix-external-buffer-in-VDUSE.patch 2025-11-21 11:05:09.521201417 +0000
@@ -1 +1 @@
-From 8ae4f1d511226fd65a979e9f8a1e51835281a59b Mon Sep 17 00:00:00 2001
+From 0ea4b51e84ced4fdf9a68ec17e7fe73fa4dc49f6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8ae4f1d511226fd65a979e9f8a1e51835281a59b ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -23,2 +24,2 @@
- lib/vhost/vduse.h | 2 +-
- 3 files changed, 10 insertions(+), 3 deletions(-)
+ lib/vhost/vduse.h | 6 ++++--
+ 3 files changed, 13 insertions(+), 4 deletions(-)
@@ -27 +28 @@
-index 9b4f332f94..ae95e7e6b0 100644
+index 799c6b0590..52199d02f7 100644
@@ -30 +31 @@
-@@ -1195,5 +1195,6 @@ rte_vhost_driver_start(const char *path)
+@@ -1193,5 +1193,6 @@ rte_vhost_driver_start(const char *path)
@@ -39 +40 @@
-index 68e56843fd..897dee9f1b 100644
+index 5d78f01126..8dada7b841 100644
@@ -42 +43 @@
-@@ -673,5 +673,5 @@ out_err:
+@@ -672,5 +672,5 @@ out_err:
@@ -49 +50 @@
-@@ -818,4 +818,10 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
+@@ -817,4 +817,10 @@ vduse_device_create(const char *path, bool compliant_ol_flags)
@@ -61 +62 @@
-index 47ca97a064..b2515bb9df 100644
+index 0d8f3f1205..353f297d5a 100644
@@ -64,2 +65,2 @@
-@@ -10,5 +10,5 @@
- #define VDUSE_NET_SUPPORTED_FEATURES VIRTIO_NET_SUPPORTED_FEATURES
+@@ -12,5 +12,5 @@
+ #ifdef VHOST_HAS_VDUSE
@@ -70,0 +72,11 @@
+@@ -18,7 +18,9 @@ int vduse_device_destroy(const char *path);
+
+ static inline int
+-vduse_device_create(const char *path, bool compliant_ol_flags)
++vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool linearbuf);
+ {
+ RTE_SET_USED(compliant_ol_flags);
++ RTE_SET_USED(extbuf);
++ RTE_SET_USED(linearbuf);
+
+ VHOST_CONFIG_LOG(path, ERR, "VDUSE support disabled at build time");
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net: fix L2 length for GRE packets' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (52 preceding siblings ...)
2025-11-21 11:20 ` patch 'vhost: fix external buffer in VDUSE' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'graph: fix xstats description allocation' " Kevin Traynor
` (42 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/fe0f16d46ca894156cb6dc9a1e5a16aa6a935308
Thanks.
Kevin
---
From fe0f16d46ca894156cb6dc9a1e5a16aa6a935308 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Wed, 23 Jul 2025 18:47:10 +0800
Subject: [PATCH] net: fix L2 length for GRE packets
[ upstream commit cb699a047d1f2c1cead545db2d266ab5f396b550 ]
The meaning of L2_len in the parsing result of the rte_net_get_ptype()
is the same as the L2_len field in the mbuf. For tunnel packets,
the L2_len should include protocol header of tunnel packets.
Bugzilla ID: 1754
Fixes: d21d855464ff ("net: support GRE in software packet type parser")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/net/rte_net.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/net/rte_net.c b/lib/net/rte_net.c
index d680accc16..5862ed0776 100644
--- a/lib/net/rte_net.c
+++ b/lib/net/rte_net.c
@@ -377,4 +377,5 @@ l3:
pkt_type |= ptype_tunnel(&proto, m, &off);
hdr_lens->tunnel_len = off - prev_off;
+ hdr_lens->inner_l2_len = off - prev_off;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.338310154 +0000
+++ 0055-net-fix-L2-length-for-GRE-packets.patch 2025-11-21 11:05:09.522201421 +0000
@@ -1 +1 @@
-From cb699a047d1f2c1cead545db2d266ab5f396b550 Mon Sep 17 00:00:00 2001
+From fe0f16d46ca894156cb6dc9a1e5a16aa6a935308 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cb699a047d1f2c1cead545db2d266ab5f396b550 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 44fb6c0f51..c70b57fdc0 100644
+index d680accc16..5862ed0776 100644
@@ -24,2 +25,2 @@
-@@ -482,4 +482,5 @@ l3:
- pkt_type |= ptype_tunnel_without_udp(&proto, m, &off);
+@@ -377,4 +377,5 @@ l3:
+ pkt_type |= ptype_tunnel(&proto, m, &off);
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'graph: fix xstats description allocation' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (53 preceding siblings ...)
2025-11-21 11:20 ` patch 'net: fix L2 length for GRE packets' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'graph: fix updating edge with active graph' " Kevin Traynor
` (41 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Christophe Fontaine; +Cc: Pavan Nikhilesh, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/175fc1ccd8c3aa88bc26eb15278938e786c3626a
Thanks.
Kevin
---
From 175fc1ccd8c3aa88bc26eb15278938e786c3626a Mon Sep 17 00:00:00 2001
From: Christophe Fontaine <cfontain@redhat.com>
Date: Tue, 28 Oct 2025 12:09:20 +0100
Subject: [PATCH] graph: fix xstats description allocation
[ upstream commit cdeb35313438f6a99c6c9233c89746b9bd86f9f6 ]
Fix the extended stats name allocation size: instead of allocating
RTE_NODE_XSTAT_DESC_SIZE (64 bytes), only sizeof(RTE_NODE_XSTAT_DESC_SIZE)
were allocated for each xstat name.
Fixes: 070db97e017b ("graph: support node xstats")
Signed-off-by: Christophe Fontaine <cfontain@redhat.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
lib/graph/graph_stats.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/graph/graph_stats.c b/lib/graph/graph_stats.c
index 80f6d1eae3..180afe7fd4 100644
--- a/lib/graph/graph_stats.c
+++ b/lib/graph/graph_stats.c
@@ -302,5 +302,5 @@ stats_mem_populate(struct rte_graph_cluster_stats *stats,
cluster->stat.xstat_desc = rte_zmalloc_socket(NULL,
- sizeof(RTE_NODE_XSTAT_DESC_SIZE) * graph_node->node->xstats->nb_xstats,
+ RTE_NODE_XSTAT_DESC_SIZE * graph_node->node->xstats->nb_xstats,
RTE_CACHE_LINE_SIZE, stats->socket_id);
if (cluster->stat.xstat_desc == NULL) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.365189770 +0000
+++ 0056-graph-fix-xstats-description-allocation.patch 2025-11-21 11:05:09.534202122 +0000
@@ -1 +1 @@
-From cdeb35313438f6a99c6c9233c89746b9bd86f9f6 Mon Sep 17 00:00:00 2001
+From 175fc1ccd8c3aa88bc26eb15278938e786c3626a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cdeb35313438f6a99c6c9233c89746b9bd86f9f6 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index e0fc8fd25c..b87b5707f7 100644
+index 80f6d1eae3..180afe7fd4 100644
@@ -23 +24 @@
-@@ -303,5 +303,5 @@ stats_mem_populate(struct rte_graph_cluster_stats *stats,
+@@ -302,5 +302,5 @@ stats_mem_populate(struct rte_graph_cluster_stats *stats,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'graph: fix updating edge with active graph' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (54 preceding siblings ...)
2025-11-21 11:20 ` patch 'graph: fix xstats description allocation' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/pdump: remove hard-coded memory channels' " Kevin Traynor
` (40 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Robin Jarry; +Cc: Jerin Jacob, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a7c48f74a14125412b02df15eacb2e207072542d
Thanks.
Kevin
---
From a7c48f74a14125412b02df15eacb2e207072542d Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Fri, 31 Oct 2025 23:13:04 +0100
Subject: [PATCH] graph: fix updating edge with active graph
[ upstream commit eaa11767069f476e13000fc3fec618a40c46ab7e ]
After creating at least one graph and calling rte_node_edge_update to
add a new edge on a node which is in use in the graph, the node memory
is reallocated but the active graph still has a pointer to the freed
memory.
When destroying the graph, it causes a use-after-free error detected by
libasan:
ERROR: AddressSanitizer: heap-use-after-free
READ of size 8 at 0x7c4baa5e4da8 thread T0
#0 0x0000005ad224 in graph_node_fini lib/graph/graph.c:256
#1 0x0000005ae657 in rte_graph_destroy lib/graph/graph.c:504
...
freed by thread T0 here:
#0 0x7f1bac4e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b)
#1 0x0000005ab6d7 in edge_update lib/graph/node.c:271
#2 0x0000005abb1b in rte_node_edge_update lib/graph/node.c:339
...
previously allocated by thread T0 here:
#0 0x7f1bac4e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b)
#1 0x0000005ab6d7 in edge_update lib/graph/node.c:271
#2 0x0000005abb1b in rte_node_edge_update lib/graph/node.c:339
...
Use malloc+memcpy and add an internal function to replace all references
to the old node memory before freeing it.
Fixes: c59dac2ca14a ("graph: implement node operations")
Signed-off-by: Robin Jarry <rjarry@redhat.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
---
lib/graph/graph.c | 14 ++++++++++++++
lib/graph/graph_private.h | 12 ++++++++++++
lib/graph/node.c | 6 +++++-
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/lib/graph/graph.c b/lib/graph/graph.c
index dff8e690a8..ac14e5ef9d 100644
--- a/lib/graph/graph.c
+++ b/lib/graph/graph.c
@@ -261,4 +261,18 @@ graph_node_fini(struct graph *graph)
}
+void
+graph_node_replace_all(struct node *old, struct node *new)
+{
+ struct graph_node *graph_node;
+ struct graph *graph;
+
+ STAILQ_FOREACH(graph, &graph_list, next) {
+ STAILQ_FOREACH(graph_node, &graph->node_list, next) {
+ if (graph_node->node == old)
+ graph_node->node = new;
+ }
+ }
+}
+
static struct rte_graph *
graph_mem_fixup_node_ctx(struct rte_graph *graph)
diff --git a/lib/graph/graph_private.h b/lib/graph/graph_private.h
index da48d73587..e2c4d9264c 100644
--- a/lib/graph/graph_private.h
+++ b/lib/graph/graph_private.h
@@ -293,4 +293,16 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
int graph_node_has_loop_edge(struct graph *graph);
+/**
+ * @internal
+ *
+ * Replace all pointers of a given node with another one in all active graphs.
+ *
+ * @param old
+ * Node pointer to replace in all graphs.
+ * @param new
+ * Updated pointer.
+ */
+void graph_node_replace_all(struct node *old, struct node *new);
+
/**
* @internal
diff --git a/lib/graph/node.c b/lib/graph/node.c
index 63db629da8..3e4793560b 100644
--- a/lib/graph/node.c
+++ b/lib/graph/node.c
@@ -269,9 +269,13 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
if (need_realloc) {
sz = sizeof(struct node) + (max_edges * RTE_NODE_NAMESIZE);
- new_node = realloc(node, sz);
+ new_node = malloc(sz);
if (new_node == NULL) {
rte_errno = ENOMEM;
goto restore;
} else {
+ sz = sizeof(*node) + (node->nb_edges * RTE_NODE_NAMESIZE);
+ memcpy(new_node, node, sz);
+ graph_node_replace_all(node, new_node);
+ free(node);
node = new_node;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.394461707 +0000
+++ 0057-graph-fix-updating-edge-with-active-graph.patch 2025-11-21 11:05:09.535177258 +0000
@@ -1 +1 @@
-From eaa11767069f476e13000fc3fec618a40c46ab7e Mon Sep 17 00:00:00 2001
+From a7c48f74a14125412b02df15eacb2e207072542d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit eaa11767069f476e13000fc3fec618a40c46ab7e ]
+
@@ -36 +37,0 @@
-Cc: stable@dpdk.org
@@ -47 +48 @@
-index 61159edc72..6911ea8abe 100644
+index dff8e690a8..ac14e5ef9d 100644
@@ -50 +51 @@
-@@ -278,4 +278,18 @@ graph_node_fini(struct graph *graph)
+@@ -261,4 +261,18 @@ graph_node_fini(struct graph *graph)
@@ -70 +71 @@
-index 21912c0ae6..26cdc66371 100644
+index da48d73587..e2c4d9264c 100644
@@ -73 +74 @@
-@@ -300,4 +300,16 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
+@@ -293,4 +293,16 @@ int graph_node_has_edge_to_src_node(struct graph *graph);
@@ -91 +92 @@
-index cae1c809ed..e3359fe490 100644
+index 63db629da8..3e4793560b 100644
@@ -94 +95 @@
-@@ -326,9 +326,13 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
+@@ -269,9 +269,13 @@ edge_update(struct node *node, struct node *prev, rte_edge_t from,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/pdump: remove hard-coded memory channels' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (55 preceding siblings ...)
2025-11-21 11:20 ` patch 'graph: fix updating edge with active graph' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'pdump: handle primary process exit' " Kevin Traynor
` (39 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Bruce Richardson; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/32b1f22ca1b96e60b67b7a2ff94793d44c18966c
Thanks.
Kevin
---
From 32b1f22ca1b96e60b67b7a2ff94793d44c18966c Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 17 Oct 2025 12:06:36 +0100
Subject: [PATCH] app/pdump: remove hard-coded memory channels
[ upstream commit 4a8d8db495f66b22ce0c12055b1c9f704f542152 ]
The pdump main function modifies argc/argv before calling EAL init
function. It needs to do so in order to add the proc-type=secondary
flag, but also adds in "-n4" as parameter. This parameter is unnecessary
and also causes duplicate parameter errors if the user also passes in -n
flag on the commandline. Just remove this flag.
Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
app/pdump/main.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/app/pdump/main.c b/app/pdump/main.c
index fa85859703..f3ac81cb80 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -983,7 +983,6 @@ main(int argc, char **argv)
int i;
- char n_flag[] = "-n4";
char mp_flag[] = "--proc-type=secondary";
- char *argp[argc + 2];
+ char *argp[argc + 1];
/* catch ctrl-c so we can cleanup on exit */
@@ -997,11 +996,10 @@ main(int argc, char **argv)
argp[0] = argv[0];
- argp[1] = n_flag;
- argp[2] = mp_flag;
+ argp[1] = mp_flag;
for (i = 1; i < argc; i++)
- argp[i + 2] = argv[i];
+ argp[i + 1] = argv[i];
- argc += 2;
+ argc += 1;
diag = rte_eal_init(argc, argp);
@@ -1013,5 +1011,5 @@ main(int argc, char **argv)
argc -= diag;
- argv += (diag - 2);
+ argv += (diag - 1);
/* parse app arguments */
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.421827589 +0000
+++ 0058-app-pdump-remove-hard-coded-memory-channels.patch 2025-11-21 11:05:09.535201476 +0000
@@ -1 +1 @@
-From 4a8d8db495f66b22ce0c12055b1c9f704f542152 Mon Sep 17 00:00:00 2001
+From 32b1f22ca1b96e60b67b7a2ff94793d44c18966c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4a8d8db495f66b22ce0c12055b1c9f704f542152 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'pdump: handle primary process exit' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (56 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/pdump: remove hard-coded memory channels' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'telemetry: make socket handler typedef private' " Kevin Traynor
` (38 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/21344e6cc36bf127fdbe82f28fea62bdd5439987
Thanks.
Kevin
---
From 21344e6cc36bf127fdbe82f28fea62bdd5439987 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 4 Nov 2025 10:07:05 -0800
Subject: [PATCH] pdump: handle primary process exit
[ upstream commit cefd5edce236e69496693ea0ecbf3e61434ff348 ]
If primary process exits, then it is not possible (or needed)
to cleanup resources. Instead just exit after closing the
capture file.
Bugzilla ID: 1760
Fixes: a99a311ba101 ("app/pdump: exit with primary process")
Fixes: cbb44143be74 ("app/dumpcap: add new packet capture application")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/dumpcap/main.c | 4 ++++
app/pdump/main.c | 12 +++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
index 3d3c0dbc66..7b19c830b5 100644
--- a/app/dumpcap/main.c
+++ b/app/dumpcap/main.c
@@ -1059,4 +1059,8 @@ int main(int argc, char **argv)
pcap_dump_close(out.dumper);
+ /* If primary has exited, do not try and communicate with it */
+ if (!rte_eal_primary_proc_alive(NULL))
+ return 0;
+
cleanup_pdump_resources();
diff --git a/app/pdump/main.c b/app/pdump/main.c
index f3ac81cb80..49bac5025e 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -1027,12 +1027,14 @@ main(int argc, char **argv)
disable_primary_monitor();
- cleanup_pdump_resources();
+
/* dump debug stats */
print_pdump_stats();
- ret = rte_eal_cleanup();
- if (ret)
- printf("Error from rte_eal_cleanup(), %d\n", ret);
+ /* If primary has exited, do not try and communicate with it */
+ if (!rte_eal_primary_proc_alive(NULL))
+ return 0;
- return 0;
+ cleanup_pdump_resources();
+
+ return rte_eal_cleanup() ? EXIT_FAILURE : 0;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.450058105 +0000
+++ 0059-pdump-handle-primary-process-exit.patch 2025-11-21 11:05:09.536201481 +0000
@@ -1 +1 @@
-From cefd5edce236e69496693ea0ecbf3e61434ff348 Mon Sep 17 00:00:00 2001
+From 21344e6cc36bf127fdbe82f28fea62bdd5439987 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cefd5edce236e69496693ea0ecbf3e61434ff348 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index e5ba36350b..3621c0ebe3 100644
+index 3d3c0dbc66..7b19c830b5 100644
@@ -27 +28 @@
-@@ -1060,4 +1060,8 @@ int main(int argc, char **argv)
+@@ -1059,4 +1059,8 @@ int main(int argc, char **argv)
@@ -37 +38 @@
-index 89347d70dc..7cbf1b8c34 100644
+index f3ac81cb80..49bac5025e 100644
@@ -40 +41 @@
-@@ -1028,12 +1028,14 @@ main(int argc, char **argv)
+@@ -1027,12 +1027,14 @@ main(int argc, char **argv)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'telemetry: make socket handler typedef private' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (57 preceding siblings ...)
2025-11-21 11:20 ` patch 'pdump: handle primary process exit' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'usertools/telemetry: fix exporter default IP binding' " Kevin Traynor
` (37 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Bruce Richardson; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/b56af1e73291ea5633306a806654e8b9b9a3b4eb
Thanks.
Kevin
---
From b56af1e73291ea5633306a806654e8b9b9a3b4eb Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 7 Nov 2025 09:32:59 +0000
Subject: [PATCH] telemetry: make socket handler typedef private
[ upstream commit 572451f7728711b1c377cb46d885f918be4c7763 ]
The socket handler typedef, just called "handler" does not belong in the
public namespace, especially since it is unprefixed. Rename to
"telemetry_sock_handler" and move to internal header.
Doing so also clears shadowing warnings in dmadev library, when it is
built with -Wshadow.
Fixes: 6dd571fd07c3 ("telemetry: introduce new functionality")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/telemetry/rte_telemetry.h | 11 -----------
lib/telemetry/telemetry.c | 2 +-
lib/telemetry/telemetry_internal.h | 11 +++++++++++
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h
index 2ccfc73a5f..7245b7e219 100644
--- a/lib/telemetry/rte_telemetry.h
+++ b/lib/telemetry/rte_telemetry.h
@@ -361,15 +361,4 @@ typedef int (*telemetry_arg_cb)(const char *cmd, const char *params, void *arg,
struct rte_tel_data *info);
-/**
- * Used for handling data received over a telemetry socket.
- *
- * @param sock_id
- * ID for the socket to be used by the handler.
- *
- * @return
- * Void.
- */
-typedef void * (*handler)(void *sock_id);
-
/**
* Used when registering a command and callback function with telemetry.
diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
index 31a2c91c06..8fe35f362b 100644
--- a/lib/telemetry/telemetry.c
+++ b/lib/telemetry/telemetry.c
@@ -47,5 +47,5 @@ struct socket {
int sock;
char path[sizeof(((struct sockaddr_un *)0)->sun_path)];
- handler fn;
+ telemetry_sock_handler fn;
RTE_ATOMIC(uint16_t) *num_clients;
};
diff --git a/lib/telemetry/telemetry_internal.h b/lib/telemetry/telemetry_internal.h
index b331e9458f..2fd9fbd7c1 100644
--- a/lib/telemetry/telemetry_internal.h
+++ b/lib/telemetry/telemetry_internal.h
@@ -26,4 +26,15 @@ enum rte_telemetry_legacy_data_req {
};
+/**
+ * Used for handling data received over a telemetry socket.
+ *
+ * @param sock_id
+ * ID for the socket to be used by the handler.
+ *
+ * @return
+ * Void.
+ */
+typedef void * (*telemetry_sock_handler)(void *sock_id);
+
/**
* This telemetry callback is used when registering a legacy telemetry command.
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.477601187 +0000
+++ 0060-telemetry-make-socket-handler-typedef-private.patch 2025-11-21 11:05:09.537201485 +0000
@@ -1 +1 @@
-From 572451f7728711b1c377cb46d885f918be4c7763 Mon Sep 17 00:00:00 2001
+From b56af1e73291ea5633306a806654e8b9b9a3b4eb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 572451f7728711b1c377cb46d885f918be4c7763 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index b9662a5213..0a58e518f7 100644
+index 2ccfc73a5f..7245b7e219 100644
@@ -28 +29 @@
-@@ -326,15 +326,4 @@ typedef int (*telemetry_arg_cb)(const char *cmd, const char *params, void *arg,
+@@ -361,15 +361,4 @@ typedef int (*telemetry_arg_cb)(const char *cmd, const char *params, void *arg,
@@ -45 +46 @@
-index 1cbbffbf3f..cf4324421d 100644
+index 31a2c91c06..8fe35f362b 100644
@@ -48 +49 @@
-@@ -48,5 +48,5 @@ struct socket {
+@@ -47,5 +47,5 @@ struct socket {
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'usertools/telemetry: fix exporter default IP binding' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (58 preceding siblings ...)
2025-11-21 11:20 ` patch 'telemetry: make socket handler typedef private' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Kevin Traynor
` (36 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a5b7b00d9af02c90475bc14f79720e62d359ab33
Thanks.
Kevin
---
From a5b7b00d9af02c90475bc14f79720e62d359ab33 Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Mon, 27 Jan 2025 12:51:44 +0100
Subject: [PATCH] usertools/telemetry: fix exporter default IP binding
[ upstream commit 9a8382b0685674d80e4787f8db2885343edaea29 ]
Fix the following warning reported by Coverity:
Defect type: SIGMA.insecure_network_bind:
> dpdk-stable-24.11.1/usertools/dpdk-telemetry-exporter.py:278:
> Sigma main event: The HTTP server binds to all network interfaces by
> setting the IP address to "", `0.0.0.0`, `::`, or `::0`.
> This may expose the server to unintended traffic.
Avoid listening to all interfaces by default to avoid exposing private
information unwillingly.
Unrelated: The Python stdlib TCP server listens on IPv4 only by default.
Changing this requires creating a subclass that overrides address_family
to socket.AF_INET6.
Fixes: d94ebd627a86 ("usertools: add telemetry exporter")
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
usertools/dpdk-telemetry-exporter.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/usertools/dpdk-telemetry-exporter.py b/usertools/dpdk-telemetry-exporter.py
index 6eca0db2e8..6f66d4ecaa 100755
--- a/usertools/dpdk-telemetry-exporter.py
+++ b/usertools/dpdk-telemetry-exporter.py
@@ -76,5 +76,5 @@ DEFAULT_LOAD_PATHS += [
"/usr/share/dpdk/telemetry-endpoints",
]
-DEFAULT_OUTPUT = "openmetrics://:9876"
+DEFAULT_OUTPUT = "openmetrics://127.0.0.1:9876"
@@ -276,9 +276,9 @@ def serve_openmetrics(
format.
"""
- listen = (args.output.hostname or "", int(args.output.port or 80))
+ listen = (args.output.hostname or "127.0.0.1", int(args.output.port or 80))
with server.HTTPServer(listen, OpenmetricsHandler) as httpd:
httpd.dpdk_socket_path = args.socket_path
httpd.telemetry_endpoints = endpoints
- LOG.info("listening on port %s", httpd.server_port)
+ LOG.info("listening on %s", httpd.socket.getsockname())
try:
httpd.serve_forever()
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.504712316 +0000
+++ 0061-usertools-telemetry-fix-exporter-default-IP-binding.patch 2025-11-21 11:05:09.537857508 +0000
@@ -1 +1 @@
-From 9a8382b0685674d80e4787f8db2885343edaea29 Mon Sep 17 00:00:00 2001
+From a5b7b00d9af02c90475bc14f79720e62d359ab33 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9a8382b0685674d80e4787f8db2885343edaea29 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'examples/l3fwd-power: fix telemetry command registration' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (59 preceding siblings ...)
2025-11-21 11:20 ` patch 'usertools/telemetry: fix exporter default IP binding' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'lib: fix backticks matching in Doxygen comments' " Kevin Traynor
` (35 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Sivaprasad Tummala; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/cf6b69ae61685f8dcfa05d00f28fa8e32f2b6350
Thanks.
Kevin
---
From cf6b69ae61685f8dcfa05d00f28fa8e32f2b6350 Mon Sep 17 00:00:00 2001
From: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Date: Mon, 6 Oct 2025 10:10:58 +0000
Subject: [PATCH] examples/l3fwd-power: fix telemetry command registration
[ upstream commit 44a4784a9710892a9bdaadbe08732000b90c95f3 ]
Telemetry command registration fails if the command name contains
characters other than alphanumeric, underscore (_), and forward
slash (/).
The l3fwd-power example previously used "/l3fwd-power/stats"
as telemetry command, which includes a hyphen (-) and causes
registration failure.
This patch fixes the issue by replacing the hyphen with an
underscore, changing the command to "/l3fwd_power/stats"
Fixes: a35919a1139b ("examples/l3fwd-power: use new telemetry")
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
examples/l3fwd-power/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 7957ea6c95..a10f9a0a63 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -2911,5 +2911,5 @@ main(int argc, char **argv)
}
rte_timer_init(&telemetry_timer);
- rte_telemetry_register_cmd("/l3fwd-power/stats",
+ rte_telemetry_register_cmd("/l3fwd_power/stats",
handle_app_stats,
"Returns global power stats. Parameters: None");
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.532790996 +0000
+++ 0062-examples-l3fwd-power-fix-telemetry-command-registrat.patch 2025-11-21 11:05:09.538201489 +0000
@@ -1 +1 @@
-From 44a4784a9710892a9bdaadbe08732000b90c95f3 Mon Sep 17 00:00:00 2001
+From cf6b69ae61685f8dcfa05d00f28fa8e32f2b6350 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 44a4784a9710892a9bdaadbe08732000b90c95f3 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index e27b8531b5..f9ce9e6698 100644
+index 7957ea6c95..a10f9a0a63 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'lib: fix backticks matching in Doxygen comments' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (60 preceding siblings ...)
2025-11-21 11:20 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'mcslock: fix memory ordering' " Kevin Traynor
` (34 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jerin Jacob; +Cc: Stephen Hemminger, Erik Gabriel Carrillo, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/36e49157f67d3a6f8333391d59cb40b841b6b306
Thanks.
Kevin
---
From 36e49157f67d3a6f8333391d59cb40b841b6b306 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerinj@marvell.com>
Date: Tue, 28 Oct 2025 19:41:59 +0530
Subject: [PATCH] lib: fix backticks matching in Doxygen comments
[ upstream commit 2f8d3fda56754b13a09098fac1140d781366672f ]
Doxygen 1.15 detects valid errors. Fixing the same.
Example:
lib/eventdev/rte_event_timer_adapter.h:720: error: Reached end of file
while still searching closing '`' of a verbatim block starting at line
569 (warning treated as error, aborting now)
Fixes: a6562f6d6f8e ("eventdev: introduce event timer adapter")
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---
lib/eventdev/rte_event_timer_adapter.h | 2 +-
lib/rawdev/rte_rawdev_pmd.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eventdev/rte_event_timer_adapter.h b/lib/eventdev/rte_event_timer_adapter.h
index 256807b3bf..67e65ab849 100644
--- a/lib/eventdev/rte_event_timer_adapter.h
+++ b/lib/eventdev/rte_event_timer_adapter.h
@@ -567,5 +567,5 @@ struct __rte_cache_aligned rte_event_timer_adapter {
* ``struct rte_event_timer`` objects from mempool or huge page backed
* application buffers of desired size. On successful allocation,
- * application updates the `struct rte_event_timer`` attributes such as
+ * application updates the ``struct rte_event_timer`` attributes such as
* expiry event attributes, timeout ticks from now.
* This function submits the event timer arm requests to the event timer adapter
diff --git a/lib/rawdev/rte_rawdev_pmd.h b/lib/rawdev/rte_rawdev_pmd.h
index b810006a46..02351a2a29 100644
--- a/lib/rawdev/rte_rawdev_pmd.h
+++ b/lib/rawdev/rte_rawdev_pmd.h
@@ -507,5 +507,5 @@ typedef int (*rawdev_firmware_version_get_t)(struct rte_rawdev *dev,
* <0: for failure
*
- * @see Application may use 'firmware_version_get` for ascertaining successful
+ * @see Application may use `firmware_version_get` for ascertaining successful
* load
*/
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.561275359 +0000
+++ 0063-lib-fix-backticks-matching-in-Doxygen-comments.patch 2025-11-21 11:05:09.539201493 +0000
@@ -1 +1 @@
-From 2f8d3fda56754b13a09098fac1140d781366672f Mon Sep 17 00:00:00 2001
+From 36e49157f67d3a6f8333391d59cb40b841b6b306 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2f8d3fda56754b13a09098fac1140d781366672f ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'mcslock: fix memory ordering' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (61 preceding siblings ...)
2025-11-21 11:20 ` patch 'lib: fix backticks matching in Doxygen comments' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 15:22 ` Wathsala Vithanage
2025-11-21 11:20 ` patch 'net/axgbe: fix build with GCC 16' " Kevin Traynor
` (33 subsequent siblings)
96 siblings, 1 reply; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Wathsala Vithanage; +Cc: Ola Liljedahl, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c9e3afaa776e94a0d8671bc547806fdc1e657269
Thanks.
Kevin
---
From c9e3afaa776e94a0d8671bc547806fdc1e657269 Mon Sep 17 00:00:00 2001
From: Wathsala Vithanage <wathsala.vithanage@arm.com>
Date: Tue, 11 Nov 2025 17:38:50 +0000
Subject: [PATCH] mcslock: fix memory ordering
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 8357af1cb3a359810bd56eab78ed104495c8094f ]
Fix incorrect memory ordering in the MCS lock implementation by
adding proper synchronizing edges to establish clear happens-before
relationships between threads invoking lock() and unlock(). These
synchronizing edges prevent potential deadlocks caused by improper
ordering and are documented in detail through in-code comments.
The previously relaxed load of the successor’s lock object pointer
in unlock() has been upgraded to a load-acquire operation. This
change ensures that the successor’s initialization does not
overwrite the current lock holder’s update to the locked field,
which could otherwise lead to deadlocks.
Remove two unnecessary fences:
The acquire fence in unlock() had no matching release fence, making
it ineffective for enforcing memory order. The associated comment
suggested it prevented speculative reordering, but such fences (data
memory barriers) only establish memory ordering and do not control
instruction speculation.
The release-acquire fence pair in lock() was previously justified as
preventing reordering between the load-acquire loop of me->locked
and the store-release of prev->next. This is no longer needed, as the
new synchronizing edges ensure a chain of happens-before
relationships between memory operations of threads calling lock() and
unlock().
Fixes: 2173f3333b61d ("mcslock: add MCS queued lock implementation")
Signed-off-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
---
lib/eal/include/rte_mcslock.h | 100 ++++++++++++++++++++++------------
1 file changed, 64 insertions(+), 36 deletions(-)
diff --git a/lib/eal/include/rte_mcslock.h b/lib/eal/include/rte_mcslock.h
index bb218d2e50..0af7a94a06 100644
--- a/lib/eal/include/rte_mcslock.h
+++ b/lib/eal/include/rte_mcslock.h
@@ -58,9 +58,19 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
rte_atomic_store_explicit(&me->next, NULL, rte_memory_order_relaxed);
- /* If the queue is empty, the exchange operation is enough to acquire
- * the lock. Hence, the exchange operation requires acquire semantics.
- * The store to me->next above should complete before the node is
- * visible to other CPUs/threads. Hence, the exchange operation requires
- * release semantics as well.
+ /*
+ * A0/R0: Queue might be empty, perform the exchange (RMW) with both acquire and
+ * release semantics:
+ * A0: Acquire — synchronizes with both R0 and R2.
+ * Must synchronize with R0 to ensure that this thread observes predecessor's
+ * initialization of its lock object or risk them overwriting this thread's
+ * update to the next of the same object via store to prev->next.
+ *
+ * Must synchronize with R2 the releasing CAS in unlock(), this will ensure
+ * that all prior critical-section writes become visible to this thread.
+ *
+ * R0: Release — ensures the successor observes our initialization of me->next;
+ * without it, me->next could be overwritten to NULL after the successor
+ * sets its own address, causing deadlock. This release synchronizes with
+ * A0 above.
*/
prev = rte_atomic_exchange_explicit(msl, me, rte_memory_order_acq_rel);
@@ -71,22 +81,24 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
return;
}
- /* The store to me->next above should also complete before the node is
- * visible to predecessor thread releasing the lock. Hence, the store
- * prev->next also requires release semantics. Note that, for example,
- * on ARM, the release semantics in the exchange operation is not
- * strong as a release fence and is not sufficient to enforce the
- * desired order here.
+
+ /*
+ * R1: With the relaxed memory model of C/C++, it's essential that after
+ * we link ourselves by storing prev->next = me, the owner of prev must
+ * observe our prior initialization of me->locked. Otherwise it could
+ * clear me->locked before we set it to 1, which may deadlock.
+ * Perform a releasing store so the predecessor's acquire loads A2 and A3
+ * observes our initialization, establishing a happens-before from those
+ * writes.
*/
rte_atomic_store_explicit(&prev->next, me, rte_memory_order_release);
- /* The while-load of me->locked should not move above the previous
- * store to prev->next. Otherwise it will cause a deadlock. Need a
- * store-load barrier.
- */
- rte_atomic_thread_fence(rte_memory_order_acq_rel);
- /* If the lock has already been acquired, it first atomically
+ /*
+ * A1: If the lock has already been acquired, it first atomically
* places the node at the end of the queue and then proceeds
* to spin on me->locked until the previous lock holder resets
- * the me->locked using mcslock_unlock().
+ * the me->locked in rte_mcslock_unlock().
+ * This load must synchronize with store-release R3 to ensure that
+ * all updates to critical section by previous lock holder is visible
+ * to this thread after acquiring the lock.
*/
rte_wait_until_equal_32((uint32_t *)(uintptr_t)&me->locked, 0, rte_memory_order_acquire);
@@ -104,28 +116,44 @@ static inline void
rte_mcslock_unlock(RTE_ATOMIC(rte_mcslock_t *) *msl, RTE_ATOMIC(rte_mcslock_t *) me)
{
- /* Check if there are more nodes in the queue. */
- if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_relaxed) == NULL)) {
+ /*
+ * A2: Check whether a successor is already queued.
+ * Load me->next with acquire semantics so it can synchronize with the
+ * successor’s release store R1. This guarantees that the successor’s
+ * initialization of its lock object (me) is completed before we observe
+ * it here, preventing a race between this thread’s store-release to
+ * me->next->locked and the successor’s store to me->locked.
+ */
+ if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_acquire) == NULL)) {
/* No, last member in the queue. */
- rte_mcslock_t *save_me = rte_atomic_load_explicit(&me, rte_memory_order_relaxed);
+ rte_mcslock_t *save_me = me;
- /* Release the lock by setting it to NULL */
+ /*
+ * R2: Try to release the lock by swinging *msl from save_me to NULL.
+ * Use release semantics so all critical section writes become
+ * visible to the next lock acquirer.
+ */
if (likely(rte_atomic_compare_exchange_strong_explicit(msl, &save_me, NULL,
rte_memory_order_release, rte_memory_order_relaxed)))
return;
- /* Speculative execution would be allowed to read in the
- * while-loop first. This has the potential to cause a
- * deadlock. Need a load barrier.
- */
- rte_atomic_thread_fence(rte_memory_order_acquire);
- /* More nodes added to the queue by other CPUs.
- * Wait until the next pointer is set.
+ /*
+ * A3: Another thread was enqueued concurrently, so the CAS and the lock
+ * release failed. Wait until the successor sets our 'next' pointer.
+ * This load must synchronize with the successor’s release store (R1) to
+ * ensure that the successor’s initialization completes before we observe
+ * it here. This ordering prevents a race between this thread’s later
+ * store-release to me->next->locked and the successor’s store to me->locked.
*/
RTE_ATOMIC(uintptr_t) *next;
next = (__rte_atomic uintptr_t *)&me->next;
- RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_relaxed);
+ RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_acquire);
}
- /* Pass lock to next waiter. */
+ /*
+ * R3: Pass the lock to the successor.
+ * Use a release store to synchronize with A1 when clearing me->next->locked
+ * so the successor observes our critical section writes after it sees locked
+ * become 0.
+ */
rte_atomic_store_explicit(&me->next->locked, 0, rte_memory_order_release);
}
@@ -150,9 +178,9 @@ rte_mcslock_trylock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
rte_mcslock_t *expected = NULL;
- /* The lock can be taken only when the queue is empty. Hence,
- * the compare-exchange operation requires acquire semantics.
- * The store to me->next above should complete before the node
- * is visible to other CPUs/threads. Hence, the compare-exchange
- * operation requires release semantics as well.
+ /*
+ * A4/R4: The lock can be acquired only when the queue is empty.
+ * The compare-and-exchange operation must use acquire and release
+ * semantics for the same reasons described in the rte_mcslock_lock()
+ * function’s empty-queue case (see A0/R0 for details).
*/
return rte_atomic_compare_exchange_strong_explicit(msl, &expected, me,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.588297999 +0000
+++ 0064-mcslock-fix-memory-ordering.patch 2025-11-21 11:05:09.540201498 +0000
@@ -1 +1 @@
-From 8357af1cb3a359810bd56eab78ed104495c8094f Mon Sep 17 00:00:00 2001
+From c9e3afaa776e94a0d8671bc547806fdc1e657269 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 8357af1cb3a359810bd56eab78ed104495c8094f ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* Re: patch 'mcslock: fix memory ordering' has been queued to stable release 24.11.4
2025-11-21 11:20 ` patch 'mcslock: fix memory ordering' " Kevin Traynor
@ 2025-11-21 15:22 ` Wathsala Vithanage
0 siblings, 0 replies; 100+ messages in thread
From: Wathsala Vithanage @ 2025-11-21 15:22 UTC (permalink / raw)
To: Kevin Traynor; +Cc: Ola Liljedahl, dpdk stable
[-- Attachment #1: Type: text/plain, Size: 10253 bytes --]
On 11/21/25 05:20, Kevin Traynor wrote:
> Hi,
>
> FYI, your patch has been queued to stable release 24.11.4
Looks like it applied cleanly, Thanks
-- wathsala
>
> Note it hasn't been pushed tohttp://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 11/26/25. So please
> shout if anyone has objections.
>
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
>
> Queued patches are on a temporary branch at:
> https://github.com/kevintraynor/dpdk-stable
>
> This queued commit can be viewed at:
> https://github.com/kevintraynor/dpdk-stable/commit/c9e3afaa776e94a0d8671bc547806fdc1e657269
>
> Thanks.
>
> Kevin
>
> ---
> From c9e3afaa776e94a0d8671bc547806fdc1e657269 Mon Sep 17 00:00:00 2001
> From: Wathsala Vithanage<wathsala.vithanage@arm.com>
> Date: Tue, 11 Nov 2025 17:38:50 +0000
> Subject: [PATCH] mcslock: fix memory ordering
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> [ upstream commit 8357af1cb3a359810bd56eab78ed104495c8094f ]
>
> Fix incorrect memory ordering in the MCS lock implementation by
> adding proper synchronizing edges to establish clear happens-before
> relationships between threads invoking lock() and unlock(). These
> synchronizing edges prevent potential deadlocks caused by improper
> ordering and are documented in detail through in-code comments.
>
> The previously relaxed load of the successor’s lock object pointer
> in unlock() has been upgraded to a load-acquire operation. This
> change ensures that the successor’s initialization does not
> overwrite the current lock holder’s update to the locked field,
> which could otherwise lead to deadlocks.
>
> Remove two unnecessary fences:
>
> The acquire fence in unlock() had no matching release fence, making
> it ineffective for enforcing memory order. The associated comment
> suggested it prevented speculative reordering, but such fences (data
> memory barriers) only establish memory ordering and do not control
> instruction speculation.
>
> The release-acquire fence pair in lock() was previously justified as
> preventing reordering between the load-acquire loop of me->locked
> and the store-release of prev->next. This is no longer needed, as the
> new synchronizing edges ensure a chain of happens-before
> relationships between memory operations of threads calling lock() and
> unlock().
>
> Fixes: 2173f3333b61d ("mcslock: add MCS queued lock implementation")
>
> Signed-off-by: Wathsala Vithanage<wathsala.vithanage@arm.com>
> Reviewed-by: Ola Liljedahl<ola.liljedahl@arm.com>
> ---
> lib/eal/include/rte_mcslock.h | 100 ++++++++++++++++++++++------------
> 1 file changed, 64 insertions(+), 36 deletions(-)
>
> diff --git a/lib/eal/include/rte_mcslock.h b/lib/eal/include/rte_mcslock.h
> index bb218d2e50..0af7a94a06 100644
> --- a/lib/eal/include/rte_mcslock.h
> +++ b/lib/eal/include/rte_mcslock.h
> @@ -58,9 +58,19 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
> rte_atomic_store_explicit(&me->next, NULL, rte_memory_order_relaxed);
>
> - /* If the queue is empty, the exchange operation is enough to acquire
> - * the lock. Hence, the exchange operation requires acquire semantics.
> - * The store to me->next above should complete before the node is
> - * visible to other CPUs/threads. Hence, the exchange operation requires
> - * release semantics as well.
> + /*
> + * A0/R0: Queue might be empty, perform the exchange (RMW) with both acquire and
> + * release semantics:
> + * A0: Acquire — synchronizes with both R0 and R2.
> + * Must synchronize with R0 to ensure that this thread observes predecessor's
> + * initialization of its lock object or risk them overwriting this thread's
> + * update to the next of the same object via store to prev->next.
> + *
> + * Must synchronize with R2 the releasing CAS in unlock(), this will ensure
> + * that all prior critical-section writes become visible to this thread.
> + *
> + * R0: Release — ensures the successor observes our initialization of me->next;
> + * without it, me->next could be overwritten to NULL after the successor
> + * sets its own address, causing deadlock. This release synchronizes with
> + * A0 above.
> */
> prev = rte_atomic_exchange_explicit(msl, me, rte_memory_order_acq_rel);
> @@ -71,22 +81,24 @@ rte_mcslock_lock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
> return;
> }
> - /* The store to me->next above should also complete before the node is
> - * visible to predecessor thread releasing the lock. Hence, the store
> - * prev->next also requires release semantics. Note that, for example,
> - * on ARM, the release semantics in the exchange operation is not
> - * strong as a release fence and is not sufficient to enforce the
> - * desired order here.
> +
> + /*
> + * R1: With the relaxed memory model of C/C++, it's essential that after
> + * we link ourselves by storing prev->next = me, the owner of prev must
> + * observe our prior initialization of me->locked. Otherwise it could
> + * clear me->locked before we set it to 1, which may deadlock.
> + * Perform a releasing store so the predecessor's acquire loads A2 and A3
> + * observes our initialization, establishing a happens-before from those
> + * writes.
> */
> rte_atomic_store_explicit(&prev->next, me, rte_memory_order_release);
>
> - /* The while-load of me->locked should not move above the previous
> - * store to prev->next. Otherwise it will cause a deadlock. Need a
> - * store-load barrier.
> - */
> - rte_atomic_thread_fence(rte_memory_order_acq_rel);
> - /* If the lock has already been acquired, it first atomically
> + /*
> + * A1: If the lock has already been acquired, it first atomically
> * places the node at the end of the queue and then proceeds
> * to spin on me->locked until the previous lock holder resets
> - * the me->locked using mcslock_unlock().
> + * the me->locked in rte_mcslock_unlock().
> + * This load must synchronize with store-release R3 to ensure that
> + * all updates to critical section by previous lock holder is visible
> + * to this thread after acquiring the lock.
> */
> rte_wait_until_equal_32((uint32_t *)(uintptr_t)&me->locked, 0, rte_memory_order_acquire);
> @@ -104,28 +116,44 @@ static inline void
> rte_mcslock_unlock(RTE_ATOMIC(rte_mcslock_t *) *msl, RTE_ATOMIC(rte_mcslock_t *) me)
> {
> - /* Check if there are more nodes in the queue. */
> - if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_relaxed) == NULL)) {
> + /*
> + * A2: Check whether a successor is already queued.
> + * Load me->next with acquire semantics so it can synchronize with the
> + * successor’s release store R1. This guarantees that the successor’s
> + * initialization of its lock object (me) is completed before we observe
> + * it here, preventing a race between this thread’s store-release to
> + * me->next->locked and the successor’s store to me->locked.
> + */
> + if (likely(rte_atomic_load_explicit(&me->next, rte_memory_order_acquire) == NULL)) {
> /* No, last member in the queue. */
> - rte_mcslock_t *save_me = rte_atomic_load_explicit(&me, rte_memory_order_relaxed);
> + rte_mcslock_t *save_me = me;
>
> - /* Release the lock by setting it to NULL */
> + /*
> + * R2: Try to release the lock by swinging *msl from save_me to NULL.
> + * Use release semantics so all critical section writes become
> + * visible to the next lock acquirer.
> + */
> if (likely(rte_atomic_compare_exchange_strong_explicit(msl, &save_me, NULL,
> rte_memory_order_release, rte_memory_order_relaxed)))
> return;
>
> - /* Speculative execution would be allowed to read in the
> - * while-loop first. This has the potential to cause a
> - * deadlock. Need a load barrier.
> - */
> - rte_atomic_thread_fence(rte_memory_order_acquire);
> - /* More nodes added to the queue by other CPUs.
> - * Wait until the next pointer is set.
> + /*
> + * A3: Another thread was enqueued concurrently, so the CAS and the lock
> + * release failed. Wait until the successor sets our 'next' pointer.
> + * This load must synchronize with the successor’s release store (R1) to
> + * ensure that the successor’s initialization completes before we observe
> + * it here. This ordering prevents a race between this thread’s later
> + * store-release to me->next->locked and the successor’s store to me->locked.
> */
> RTE_ATOMIC(uintptr_t) *next;
> next = (__rte_atomic uintptr_t *)&me->next;
> - RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_relaxed);
> + RTE_WAIT_UNTIL_MASKED(next, UINTPTR_MAX, !=, 0, rte_memory_order_acquire);
> }
>
> - /* Pass lock to next waiter. */
> + /*
> + * R3: Pass the lock to the successor.
> + * Use a release store to synchronize with A1 when clearing me->next->locked
> + * so the successor observes our critical section writes after it sees locked
> + * become 0.
> + */
> rte_atomic_store_explicit(&me->next->locked, 0, rte_memory_order_release);
> }
> @@ -150,9 +178,9 @@ rte_mcslock_trylock(RTE_ATOMIC(rte_mcslock_t *) *msl, rte_mcslock_t *me)
> rte_mcslock_t *expected = NULL;
>
> - /* The lock can be taken only when the queue is empty. Hence,
> - * the compare-exchange operation requires acquire semantics.
> - * The store to me->next above should complete before the node
> - * is visible to other CPUs/threads. Hence, the compare-exchange
> - * operation requires release semantics as well.
> + /*
> + * A4/R4: The lock can be acquired only when the queue is empty.
> + * The compare-and-exchange operation must use acquire and release
> + * semantics for the same reasons described in the rte_mcslock_lock()
> + * function’s empty-queue case (see A0/R0 for details).
> */
> return rte_atomic_compare_exchange_strong_explicit(msl, &expected, me,
[-- Attachment #2: Type: text/html, Size: 11107 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* patch 'net/axgbe: fix build with GCC 16' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (62 preceding siblings ...)
2025-11-21 11:20 ` patch 'mcslock: fix memory ordering' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa2: fix duplicate call of close' " Kevin Traynor
` (32 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Venkat Kumar Ande; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3b72246da071ee978838691a66a146fd5c7c4918
Thanks.
Kevin
---
From 3b72246da071ee978838691a66a146fd5c7c4918 Mon Sep 17 00:00:00 2001
From: Venkat Kumar Ande <venkatkumar.ande@amd.com>
Date: Thu, 13 Nov 2025 22:11:09 +0530
Subject: [PATCH] net/axgbe: fix build with GCC 16
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit dec46366290076afa65bc6b505b274e10e90f494 ]
Build warning reported for local variable set and not used on GCC-16.
Fix the issue by using the variable for missed register write operation.
../drivers/net/axgbe/axgbe_ethdev.c: In function ‘axgbe_timesync_disable’:
../drivers/net/axgbe/axgbe_ethdev.c:1744:22: warning:
variable ‘mac_tscr’ set but not used [-Wunused-but-set-variable=]
1744 | unsigned int mac_tscr = 0;
| ^~~~~~~~
Bugzilla ID: 1819
Fixes: e04449488fdb ("net/axgbe: support IEEE 1588 PTP")
Signed-off-by: Venkat Kumar Ande <venkatkumar.ande@amd.com>
---
drivers/net/axgbe/axgbe_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
index 5448a5f3d7..526d14b69a 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -1736,4 +1736,5 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
struct axgbe_port *pdata = dev->data->dev_private;
unsigned int mac_tscr = 0;
+ unsigned int value = 0;
/*disable timestamp for all pkts*/
@@ -1745,4 +1746,9 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
/*disable time stamp*/
AXGMAC_SET_BITS(mac_tscr, MAC_TSCR, TSENA, 0);
+
+ value = AXGMAC_IOREAD(pdata, MAC_TSCR);
+ value |= mac_tscr;
+ AXGMAC_IOWRITE(pdata, MAC_TSCR, value);
+
return 0;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.616837739 +0000
+++ 0065-net-axgbe-fix-build-with-GCC-16.patch 2025-11-21 11:05:09.541201502 +0000
@@ -1 +1 @@
-From dec46366290076afa65bc6b505b274e10e90f494 Mon Sep 17 00:00:00 2001
+From 3b72246da071ee978838691a66a146fd5c7c4918 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit dec46366290076afa65bc6b505b274e10e90f494 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 31d35ff182..cf3b0d9ef5 100644
+index 5448a5f3d7..526d14b69a 100644
@@ -31 +32 @@
-@@ -1743,4 +1743,5 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
+@@ -1736,4 +1736,5 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
@@ -37 +38 @@
-@@ -1752,4 +1753,9 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
+@@ -1745,4 +1746,9 @@ axgbe_timesync_disable(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/dpaa2: fix duplicate call of close' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (63 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/axgbe: fix build with GCC 16' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa2: clear active VDQ state when freeing Rx queues' " Kevin Traynor
` (31 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Maxime Leroy, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/918721461c64ff52b9e6b2e1451fbaaa61650c27
Thanks.
Kevin
---
From 918721461c64ff52b9e6b2e1451fbaaa61650c27 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Fri, 14 Nov 2025 11:54:51 +0530
Subject: [PATCH] net/dpaa2: fix duplicate call of close
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3b8225353ea3b9eb03df5dee94a037582d0d6748 ]
When rte_eth_dev_close() is called, it performs the following actions:
Calls dev->dev_ops->dev_close(), which in this case is dpaa2_dev_close().
Then calls rte_eth_dev_release_port(), which releases all device data
and sets dev->data to NULL.
Later, when rte_dev_remove() is called, the FSLMC bus invokes
dev->remove() — that is, rte_dpaa2_remove().
However, rte_dpaa2_remove() calls dpaa2_dev_close() again. Since dev->data
was already set to NULL by the previous call, this second invocation
causes a crash.
Fixes: 5964d36a2904 ("net/dpaa2: release port upon close")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Tested-by: Maxime Leroy <maxime@leroys.fr>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 722bb6fa8e..c9dc0fbdf0 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -3056,12 +3056,20 @@ rte_dpaa2_remove(struct rte_dpaa2_device *dpaa2_dev)
{
struct rte_eth_dev *eth_dev;
- int ret;
+ int ret = 0;
+
+ eth_dev = rte_eth_dev_allocated(dpaa2_dev->device.name);
+ if (eth_dev) {
+ ret = dpaa2_dev_close(eth_dev);
+ if (ret)
+ DPAA2_PMD_ERR("dpaa2_dev_close ret= %d", ret);
+
+ ret = rte_eth_dev_release_port(eth_dev);
+ }
- eth_dev = dpaa2_dev->eth_dev;
- dpaa2_dev_close(eth_dev);
dpaa2_valid_dev--;
- if (!dpaa2_valid_dev)
+ if (!dpaa2_valid_dev) {
rte_mempool_free(dpaa2_tx_sg_pool);
- ret = rte_eth_dev_release_port(eth_dev);
+ dpaa2_tx_sg_pool = NULL;
+ }
return ret;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.645575378 +0000
+++ 0066-net-dpaa2-fix-duplicate-call-of-close.patch 2025-11-21 11:05:09.542201506 +0000
@@ -1 +1 @@
-From 3b8225353ea3b9eb03df5dee94a037582d0d6748 Mon Sep 17 00:00:00 2001
+From 918721461c64ff52b9e6b2e1451fbaaa61650c27 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3b8225353ea3b9eb03df5dee94a037582d0d6748 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 7da32ce856..fcda267e0b 100644
+index 722bb6fa8e..c9dc0fbdf0 100644
@@ -34 +35 @@
-@@ -3348,12 +3348,20 @@ rte_dpaa2_remove(struct rte_dpaa2_device *dpaa2_dev)
+@@ -3056,12 +3056,20 @@ rte_dpaa2_remove(struct rte_dpaa2_device *dpaa2_dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/dpaa2: clear active VDQ state when freeing Rx queues' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (64 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/dpaa2: fix duplicate call of close' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix flex item link parsing' " Kevin Traynor
` (30 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Maxime Leroy; +Cc: 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/81aeed2d39aac27302eebe15e80a3d1d9be30e24
Thanks.
Kevin
---
From 81aeed2d39aac27302eebe15e80a3d1d9be30e24 Mon Sep 17 00:00:00 2001
From: Maxime Leroy <maxime@leroys.fr>
Date: Fri, 14 Nov 2025 11:54:52 +0530
Subject: [PATCH] net/dpaa2: clear active VDQ state when freeing Rx queues
[ upstream commit 360a8d674c36e628523bdd83bedd27ce34b3091b ]
When using the prefetch Rx path (dpaa2_dev_prefetch_rx), the driver keeps
track of one outstanding VDQCR command per DPIO portal in the global
rte_global_active_dqs_list[] array. Each queue_storage_info_t also stores
the active result buffer and portal index:
qs->active_dqs
qs->active_dpio_id
Before issuing a new pull command, dpaa2_dev_prefetch_rx() checks for an
active entry and spins on qbman_check_command_complete() until the
corresponding VDQCR completes.
On port close / hotplug remove, dpaa2_free_rx_tx_queues() frees all
per-lcore queue_storage_info_t structures and their dq_storage[] buffers,
but never clears the global rte_global_active_dqs_list[] entries. After a
detach/attach sequence (or "del/add" in grout), the prefetch Rx path
still sees an active entry for the portal and spins forever on a stale dq
buffer that has been freed and will never be completed by hardware. In
gdb, dq->dq.tok stays 0 and dpaa2_dev_prefetch_rx() loops in:
while (!qbman_check_command_complete(get_swp_active_dqs(idx)))
;
Fix this by clearing the active VDQ state before freeing queue storage.
For each Rx queue and lcore, if qs->active_dqs is non-NULL, call
clear_swp_active_dqs(qs->active_dpio_id) and set qs->active_dqs to NULL.
Then dpaa2_queue_storage_free() can safely free q_storage and
dq_storage[].
After this change, a DPNI detach/attach sequence no longer leaves stale
entries in rte_global_active_dqs_list[], and the prefetch Rx loop does
not hang waiting for a completion from a previous device instance.
Reproduction:
- grout:
grcli interface add port dpni.1 devargs fslmc:dpni.1
grcli interface del dpni.1
grcli interface add port dpni.1 devargs fslmc:dpni.1
-> Rx was stuck in qbman_check_command_complete(), now works.
- testpmd:
dpdk-testpmd -n1 -a fslmc:dpni.65535 -- -i --forward-mode=rxonly
testpmd> port attach fslmc:dpni.1
testpmd> port start all
testpmd> start
testpmd> stop
testpmd> port stop all
testpmd> port detach 0
testpmd> port attach fslmc:dpni.1
testpmd> port start all
testpmd> start
-> Rx was hanging, now runs normal
Fixes: 12d98eceb8ac ("bus/fslmc: enhance QBMAN DQ storage logic")
Signed-off-by: Maxime Leroy <maxime@leroys.fr>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
.mailmap | 2 +-
drivers/net/dpaa2/dpaa2_ethdev.c | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 8af58f1614..06fd64f764 100644
--- a/.mailmap
+++ b/.mailmap
@@ -998,5 +998,5 @@ Mauro Annarumma <mauroannarumma@hotmail.it>
Maxime Coquelin <maxime.coquelin@redhat.com>
Maxime Gouin <maxime.gouin@6wind.com>
-Maxime Leroy <maxime.leroy@6wind.com>
+Maxime Leroy <maxime@leroys.fr> <maxime.leroy@6wind.com>
Md Fahad Iqbal Polash <md.fahad.iqbal.polash@intel.com>
Megha Ajmera <megha.ajmera@intel.com>
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index c9dc0fbdf0..83ff6e0a04 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -482,4 +482,25 @@ fail:
}
+static void
+dpaa2_clear_queue_active_dps(struct dpaa2_queue *q, int num_lcores)
+{
+ int i;
+
+ for (i = 0; i < num_lcores; i++) {
+ struct queue_storage_info_t *qs = q->q_storage[i];
+
+ if (!qs)
+ continue;
+
+ if (qs->active_dqs) {
+ while (!qbman_check_command_complete(qs->active_dqs))
+ continue; /* wait */
+
+ clear_swp_active_dqs(qs->active_dpio_id);
+ qs->active_dqs = NULL;
+ }
+ }
+}
+
static void
dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev)
@@ -496,4 +517,6 @@ dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev)
for (i = 0; i < priv->nb_rx_queues; i++) {
dpaa2_q = priv->rx_vq[i];
+ dpaa2_clear_queue_active_dps(dpaa2_q,
+ RTE_MAX_LCORE);
dpaa2_queue_storage_free(dpaa2_q,
RTE_MAX_LCORE);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.675357497 +0000
+++ 0067-net-dpaa2-clear-active-VDQ-state-when-freeing-Rx-que.patch 2025-11-21 11:05:09.545201519 +0000
@@ -1 +1 @@
-From 360a8d674c36e628523bdd83bedd27ce34b3091b Mon Sep 17 00:00:00 2001
+From 81aeed2d39aac27302eebe15e80a3d1d9be30e24 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 360a8d674c36e628523bdd83bedd27ce34b3091b ]
+
@@ -60 +61,0 @@
-Cc: stable@dpdk.org
@@ -70 +71 @@
-index 50a59a596a..2678c4a9de 100644
+index 8af58f1614..06fd64f764 100644
@@ -73 +74 @@
-@@ -1038,5 +1038,5 @@ Mauro Annarumma <mauroannarumma@hotmail.it>
+@@ -998,5 +998,5 @@ Mauro Annarumma <mauroannarumma@hotmail.it>
@@ -81 +82 @@
-index fcda267e0b..f2b24fc953 100644
+index c9dc0fbdf0..83ff6e0a04 100644
@@ -84 +85 @@
-@@ -632,4 +632,25 @@ fail:
+@@ -482,4 +482,25 @@ fail:
@@ -110 +111 @@
-@@ -646,4 +667,6 @@ dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev)
+@@ -496,4 +517,6 @@ dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/testpmd: fix flex item link parsing' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (65 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/dpaa2: clear active VDQ state when freeing Rx queues' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/ixgbe/base: fix PF link state request size' " Kevin Traynor
` (29 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Maayan Kashani; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/01961bc399fa0249515b289908b46509c49f0129
Thanks.
Kevin
---
From 01961bc399fa0249515b289908b46509c49f0129 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 16 Nov 2025 14:14:37 +0200
Subject: [PATCH] app/testpmd: fix flex item link parsing
[ upstream commit 39454e245b125ae555bc5a3a058cc3c1e1280f82 ]
The flex_link_item_parse function was using FLEX_MAX_FLOW_PATTERN_LENGTH
for all memcpy operations regardless of the actual flow item type. This
could lead to copying incorrect amounts of data.
This patch adds a switch statement to determine the correct size based
on the actual flow item type (IPv4, IPv6, UDP, TCP) and uses that size
for the memcpy operations on spec, mask, and last fields.
Also adds validation to reject unsupported item types.
Fixes: 59f3a8acbcdb ("app/testpmd: add flex item commands")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
---
app/test-pmd/cmd_flex_item.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/app/test-pmd/cmd_flex_item.c b/app/test-pmd/cmd_flex_item.c
index e6e1cefeb3..af6c087feb 100644
--- a/app/test-pmd/cmd_flex_item.c
+++ b/app/test-pmd/cmd_flex_item.c
@@ -144,19 +144,20 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
return ret;
item->type = pattern->type;
- if (pattern->spec) {
+ ret = rte_flow_conv(RTE_FLOW_CONV_OP_ITEM_MASK, NULL, 0, item, NULL);
+ if ((ret > 0) && pattern->spec) {
ptr = (void *)(uintptr_t)item->spec;
- memcpy(ptr, pattern->spec, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->spec, ret);
} else {
item->spec = NULL;
}
- if (pattern->mask) {
+ if ((ret > 0) && pattern->mask) {
ptr = (void *)(uintptr_t)item->mask;
- memcpy(ptr, pattern->mask, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->mask, ret);
} else {
item->mask = NULL;
}
- if (pattern->last) {
+ if ((ret > 0) && pattern->last) {
ptr = (void *)(uintptr_t)item->last;
- memcpy(ptr, pattern->last, FLEX_MAX_FLOW_PATTERN_LENGTH);
+ memcpy(ptr, pattern->last, ret);
} else {
item->last = NULL;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.702940903 +0000
+++ 0068-app-testpmd-fix-flex-item-link-parsing.patch 2025-11-21 11:05:09.546173834 +0000
@@ -1 +1 @@
-From 39454e245b125ae555bc5a3a058cc3c1e1280f82 Mon Sep 17 00:00:00 2001
+From 01961bc399fa0249515b289908b46509c49f0129 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 39454e245b125ae555bc5a3a058cc3c1e1280f82 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/ixgbe/base: fix PF link state request size' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (66 preceding siblings ...)
2025-11-21 11:20 ` patch 'app/testpmd: fix flex item link parsing' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Kevin Traynor
` (28 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Andrzej Wilczynski; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/47b00e6f6ad34672a136383757d48c09320a73a3
Thanks.
Kevin
---
From 47b00e6f6ad34672a136383757d48c09320a73a3 Mon Sep 17 00:00:00 2001
From: Andrzej Wilczynski <andrzejx.wilczynski@intel.com>
Date: Mon, 10 Nov 2025 13:55:39 +0000
Subject: [PATCH] net/ixgbe/base: fix PF link state request size
[ upstream commit 82ff0aa59735fefa6e9e9daf77ea87da5b68fabd ]
Currently, when requesting PF link state over VF mailbox, the buffer sized
3 dwords is allocated. However, the `ixgbevf_write_msg_read_ack` function
is actually called with buffer size of 6 dwords. This leaves an admittedly
remote possibility of buffer overrun. Fix by adjusting requested size to 3.
Bugzilla ID: 1801
Fixes: adbd71030575 ("net/ixgbe/base: fix link status for E610")
Signed-off-by: Andrzej Wilczynski <andrzejx.wilczynski@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ixgbe/base/ixgbe_vf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ixgbe/base/ixgbe_vf.c b/drivers/net/ixgbe/base/ixgbe_vf.c
index 46a62bb851..eb16fb1942 100644
--- a/drivers/net/ixgbe/base/ixgbe_vf.c
+++ b/drivers/net/ixgbe/base/ixgbe_vf.c
@@ -483,5 +483,5 @@ int ixgbevf_get_pf_link_state(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
msgbuf[0] = IXGBE_VF_GET_PF_LINK_STATE;
- err = ixgbevf_write_msg_read_ack(hw, msgbuf, msgbuf, 6);
+ err = ixgbevf_write_msg_read_ack(hw, msgbuf, msgbuf, 3);
if (err || (msgbuf[0] & IXGBE_VT_MSGTYPE_FAILURE)) {
err = IXGBE_ERR_MBX;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.731398215 +0000
+++ 0069-net-ixgbe-base-fix-PF-link-state-request-size.patch 2025-11-21 11:05:09.546201523 +0000
@@ -1 +1 @@
-From 82ff0aa59735fefa6e9e9daf77ea87da5b68fabd Mon Sep 17 00:00:00 2001
+From 47b00e6f6ad34672a136383757d48c09320a73a3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 82ff0aa59735fefa6e9e9daf77ea87da5b68fabd ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/ixgbe/base/ixgbe_vf.c | 2 +-
+ drivers/net/ixgbe/base/ixgbe_vf.c | 2 +-
@@ -22 +23 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_vf.c b/drivers/net/intel/ixgbe/base/ixgbe_vf.c
+diff --git a/drivers/net/ixgbe/base/ixgbe_vf.c b/drivers/net/ixgbe/base/ixgbe_vf.c
@@ -24,2 +25,2 @@
---- a/drivers/net/intel/ixgbe/base/ixgbe_vf.c
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_vf.c
+--- a/drivers/net/ixgbe/base/ixgbe_vf.c
++++ b/drivers/net/ixgbe/base/ixgbe_vf.c
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/ice: fix path selection for QinQ Tx offload' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (67 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/ixgbe/base: fix PF link state request size' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/ice: fix statistics' " Kevin Traynor
` (27 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/3fdaa456b2b0018fcdb5d0596e3216bd5e920958
Thanks.
Kevin
---
From 3fdaa456b2b0018fcdb5d0596e3216bd5e920958 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Wed, 12 Nov 2025 11:57:26 +0000
Subject: [PATCH] net/ice: fix path selection for QinQ Tx offload
[ upstream commit 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 ]
The capabilities flag for the vector offload path include the QinQ
offload capability, but in fact the offload path lacks any ability to
create context descriptors. This means that it cannot insert multiple
vlan tags for QinQ support, so move the offload from the VECTOR_OFFLOAD
list to the NO_VECTOR list. Similarly, remove any check for the QinQ
mbuf flag in any packets being transmitted, since that offload is
invalid to request if the feature is not enabled.
Fixes: 808a17b3c1e6 ("net/ice: add Rx AVX512 offload path")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/intel/ice/ice_rxtx_vec_common.h | 207 ++++++++++++++++++++
1 file changed, 207 insertions(+)
create mode 100644 drivers/net/intel/ice/ice_rxtx_vec_common.h
diff --git a/drivers/net/intel/ice/ice_rxtx_vec_common.h b/drivers/net/intel/ice/ice_rxtx_vec_common.h
new file mode 100644
index 0000000000..39581cb7ae
--- /dev/null
+++ b/drivers/net/intel/ice/ice_rxtx_vec_common.h
@@ -0,0 +1,207 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2019 Intel Corporation
+ */
+
+#ifndef _ICE_RXTX_VEC_COMMON_H_
+#define _ICE_RXTX_VEC_COMMON_H_
+
+#include "../common/rx.h"
+#include "ice_rxtx.h"
+
+static inline int
+ice_tx_desc_done(struct ci_tx_queue *txq, uint16_t idx)
+{
+ return (txq->ice_tx_ring[idx].cmd_type_offset_bsz &
+ rte_cpu_to_le_64(ICE_TXD_QW1_DTYPE_M)) ==
+ rte_cpu_to_le_64(ICE_TX_DESC_DTYPE_DESC_DONE);
+}
+
+static inline void
+_ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
+{
+ const unsigned int mask = rxq->nb_rx_desc - 1;
+ unsigned int i;
+
+ if (unlikely(!rxq->sw_ring)) {
+ PMD_DRV_LOG(DEBUG, "sw_ring is NULL");
+ return;
+ }
+
+ if (rxq->rxrearm_nb >= rxq->nb_rx_desc)
+ return;
+
+ /* free all mbufs that are valid in the ring */
+ if (rxq->rxrearm_nb == 0) {
+ for (i = 0; i < rxq->nb_rx_desc; i++) {
+ if (rxq->sw_ring[i].mbuf)
+ rte_pktmbuf_free_seg(rxq->sw_ring[i].mbuf);
+ }
+ } else {
+ for (i = rxq->rx_tail;
+ i != rxq->rxrearm_start;
+ i = (i + 1) & mask) {
+ if (rxq->sw_ring[i].mbuf)
+ rte_pktmbuf_free_seg(rxq->sw_ring[i].mbuf);
+ }
+ }
+
+ rxq->rxrearm_nb = rxq->nb_rx_desc;
+
+ /* set all entries to NULL */
+ memset(rxq->sw_ring, 0, sizeof(rxq->sw_ring[0]) * rxq->nb_rx_desc);
+}
+
+#define ICE_TX_NO_VECTOR_FLAGS ( \
+ RTE_ETH_TX_OFFLOAD_MULTI_SEGS | \
+ RTE_ETH_TX_OFFLOAD_QINQ_INSERT | \
+ RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM | \
+ RTE_ETH_TX_OFFLOAD_TCP_TSO | \
+ RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO | \
+ RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO | \
+ RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO | \
+ RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO | \
+ RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM | \
+ RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP)
+
+#define ICE_TX_VECTOR_OFFLOAD ( \
+ RTE_ETH_TX_OFFLOAD_VLAN_INSERT | \
+ RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
+ RTE_ETH_TX_OFFLOAD_SCTP_CKSUM | \
+ RTE_ETH_TX_OFFLOAD_UDP_CKSUM | \
+ RTE_ETH_TX_OFFLOAD_TCP_CKSUM)
+
+#define ICE_VECTOR_PATH 0
+#define ICE_VECTOR_OFFLOAD_PATH 1
+
+static inline int
+ice_rx_vec_queue_default(struct ci_rx_queue *rxq)
+{
+ if (!rxq)
+ return -1;
+
+ if (!ci_rxq_vec_capable(rxq->nb_rx_desc, rxq->rx_free_thresh))
+ return -1;
+
+ if (rxq->proto_xtr != PROTO_XTR_NONE)
+ return -1;
+
+ return 0;
+}
+
+static inline int
+ice_tx_vec_queue_default(struct ci_tx_queue *txq)
+{
+ if (!txq)
+ return -1;
+
+ if (txq->tx_rs_thresh < ICE_VPMD_TX_BURST ||
+ txq->tx_rs_thresh > ICE_TX_MAX_FREE_BUF_SZ)
+ return -1;
+
+ if (txq->offloads & ICE_TX_NO_VECTOR_FLAGS)
+ return -1;
+
+ if (txq->offloads & ICE_TX_VECTOR_OFFLOAD)
+ return ICE_VECTOR_OFFLOAD_PATH;
+
+ return ICE_VECTOR_PATH;
+}
+
+static inline int
+ice_rx_vec_dev_check_default(struct rte_eth_dev *dev)
+{
+ int i;
+ struct ci_rx_queue *rxq;
+ int ret = 0;
+
+ for (i = 0; i < dev->data->nb_rx_queues; i++) {
+ rxq = dev->data->rx_queues[i];
+ ret = (ice_rx_vec_queue_default(rxq));
+ if (ret < 0)
+ break;
+ }
+
+ return ret;
+}
+
+static inline int
+ice_tx_vec_dev_check_default(struct rte_eth_dev *dev)
+{
+ int i;
+ struct ci_tx_queue *txq;
+ int ret = 0;
+ int result = 0;
+
+ for (i = 0; i < dev->data->nb_tx_queues; i++) {
+ txq = dev->data->tx_queues[i];
+ ret = ice_tx_vec_queue_default(txq);
+ if (ret < 0)
+ return -1;
+ if (ret == ICE_VECTOR_OFFLOAD_PATH)
+ result = ret;
+ }
+
+ return result;
+}
+
+static inline void
+ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
+ uint64_t *txd_hi)
+{
+ uint64_t ol_flags = tx_pkt->ol_flags;
+ uint32_t td_cmd = 0;
+ uint32_t td_offset = 0;
+
+ /* Tx Checksum Offload */
+ /* SET MACLEN */
+ td_offset |= (tx_pkt->l2_len >> 1) <<
+ ICE_TX_DESC_LEN_MACLEN_S;
+
+ /* Enable L3 checksum offload */
+ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) {
+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM;
+ td_offset |= (tx_pkt->l3_len >> 2) <<
+ ICE_TX_DESC_LEN_IPLEN_S;
+ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) {
+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4;
+ td_offset |= (tx_pkt->l3_len >> 2) <<
+ ICE_TX_DESC_LEN_IPLEN_S;
+ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) {
+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6;
+ td_offset |= (tx_pkt->l3_len >> 2) <<
+ ICE_TX_DESC_LEN_IPLEN_S;
+ }
+
+ /* Enable L4 checksum offloads */
+ switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
+ case RTE_MBUF_F_TX_TCP_CKSUM:
+ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_TCP;
+ td_offset |= (sizeof(struct rte_tcp_hdr) >> 2) <<
+ ICE_TX_DESC_LEN_L4_LEN_S;
+ break;
+ case RTE_MBUF_F_TX_SCTP_CKSUM:
+ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_SCTP;
+ td_offset |= (sizeof(struct rte_sctp_hdr) >> 2) <<
+ ICE_TX_DESC_LEN_L4_LEN_S;
+ break;
+ case RTE_MBUF_F_TX_UDP_CKSUM:
+ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_UDP;
+ td_offset |= (sizeof(struct rte_udp_hdr) >> 2) <<
+ ICE_TX_DESC_LEN_L4_LEN_S;
+ break;
+ default:
+ break;
+ }
+
+ *txd_hi |= ((uint64_t)td_offset) << ICE_TXD_QW1_OFFSET_S;
+
+ /* Tx VLAN insertion Offload */
+ if (ol_flags & RTE_MBUF_F_TX_VLAN) {
+ td_cmd |= ICE_TX_DESC_CMD_IL2TAG1;
+ *txd_hi |= ((uint64_t)tx_pkt->vlan_tci <<
+ ICE_TXD_QW1_L2TAG1_S);
+ }
+
+ *txd_hi |= ((uint64_t)td_cmd) << ICE_TXD_QW1_CMD_S;
+}
+#endif
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.759890234 +0000
+++ 0070-net-ice-fix-path-selection-for-QinQ-Tx-offload.patch 2025-11-21 11:05:09.546978177 +0000
@@ -1 +1 @@
-From 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 Mon Sep 17 00:00:00 2001
+From 3fdaa456b2b0018fcdb5d0596e3216bd5e920958 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 61ccab85e3972d6e3ee61b3e6a6a6872a33e5ac3 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20,2 +21,3 @@
- drivers/net/intel/ice/ice_rxtx_vec_common.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ drivers/net/intel/ice/ice_rxtx_vec_common.h | 207 ++++++++++++++++++++
+ 1 file changed, 207 insertions(+)
+ create mode 100644 drivers/net/intel/ice/ice_rxtx_vec_common.h
@@ -24,2 +26,3 @@
-index a24694c0b1..39581cb7ae 100644
---- a/drivers/net/intel/ice/ice_rxtx_vec_common.h
+new file mode 100644
+index 0000000000..39581cb7ae
+--- /dev/null
@@ -27,3 +30,56 @@
-@@ -54,4 +54,5 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
- #define ICE_TX_NO_VECTOR_FLAGS ( \
- RTE_ETH_TX_OFFLOAD_MULTI_SEGS | \
+@@ -0,0 +1,207 @@
++/* SPDX-License-Identifier: BSD-3-Clause
++ * Copyright(c) 2019 Intel Corporation
++ */
++
++#ifndef _ICE_RXTX_VEC_COMMON_H_
++#define _ICE_RXTX_VEC_COMMON_H_
++
++#include "../common/rx.h"
++#include "ice_rxtx.h"
++
++static inline int
++ice_tx_desc_done(struct ci_tx_queue *txq, uint16_t idx)
++{
++ return (txq->ice_tx_ring[idx].cmd_type_offset_bsz &
++ rte_cpu_to_le_64(ICE_TXD_QW1_DTYPE_M)) ==
++ rte_cpu_to_le_64(ICE_TX_DESC_DTYPE_DESC_DONE);
++}
++
++static inline void
++_ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
++{
++ const unsigned int mask = rxq->nb_rx_desc - 1;
++ unsigned int i;
++
++ if (unlikely(!rxq->sw_ring)) {
++ PMD_DRV_LOG(DEBUG, "sw_ring is NULL");
++ return;
++ }
++
++ if (rxq->rxrearm_nb >= rxq->nb_rx_desc)
++ return;
++
++ /* free all mbufs that are valid in the ring */
++ if (rxq->rxrearm_nb == 0) {
++ for (i = 0; i < rxq->nb_rx_desc; i++) {
++ if (rxq->sw_ring[i].mbuf)
++ rte_pktmbuf_free_seg(rxq->sw_ring[i].mbuf);
++ }
++ } else {
++ for (i = rxq->rx_tail;
++ i != rxq->rxrearm_start;
++ i = (i + 1) & mask) {
++ if (rxq->sw_ring[i].mbuf)
++ rte_pktmbuf_free_seg(rxq->sw_ring[i].mbuf);
++ }
++ }
++
++ rxq->rxrearm_nb = rxq->nb_rx_desc;
++
++ /* set all entries to NULL */
++ memset(rxq->sw_ring, 0, sizeof(rxq->sw_ring[0]) * rxq->nb_rx_desc);
++}
++
++#define ICE_TX_NO_VECTOR_FLAGS ( \
++ RTE_ETH_TX_OFFLOAD_MULTI_SEGS | \
@@ -31,13 +87,141 @@
- RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM | \
- RTE_ETH_TX_OFFLOAD_TCP_TSO | \
-@@ -65,5 +66,4 @@ _ice_rx_queue_release_mbufs_vec(struct ci_rx_queue *rxq)
- #define ICE_TX_VECTOR_OFFLOAD ( \
- RTE_ETH_TX_OFFLOAD_VLAN_INSERT | \
-- RTE_ETH_TX_OFFLOAD_QINQ_INSERT | \
- RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
- RTE_ETH_TX_OFFLOAD_SCTP_CKSUM | \
-@@ -196,6 +196,6 @@ ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
- *txd_hi |= ((uint64_t)td_offset) << ICE_TXD_QW1_OFFSET_S;
-
-- /* Tx VLAN/QINQ insertion Offload */
-- if (ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ)) {
++ RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM | \
++ RTE_ETH_TX_OFFLOAD_TCP_TSO | \
++ RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO | \
++ RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO | \
++ RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO | \
++ RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO | \
++ RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM | \
++ RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP)
++
++#define ICE_TX_VECTOR_OFFLOAD ( \
++ RTE_ETH_TX_OFFLOAD_VLAN_INSERT | \
++ RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \
++ RTE_ETH_TX_OFFLOAD_SCTP_CKSUM | \
++ RTE_ETH_TX_OFFLOAD_UDP_CKSUM | \
++ RTE_ETH_TX_OFFLOAD_TCP_CKSUM)
++
++#define ICE_VECTOR_PATH 0
++#define ICE_VECTOR_OFFLOAD_PATH 1
++
++static inline int
++ice_rx_vec_queue_default(struct ci_rx_queue *rxq)
++{
++ if (!rxq)
++ return -1;
++
++ if (!ci_rxq_vec_capable(rxq->nb_rx_desc, rxq->rx_free_thresh))
++ return -1;
++
++ if (rxq->proto_xtr != PROTO_XTR_NONE)
++ return -1;
++
++ return 0;
++}
++
++static inline int
++ice_tx_vec_queue_default(struct ci_tx_queue *txq)
++{
++ if (!txq)
++ return -1;
++
++ if (txq->tx_rs_thresh < ICE_VPMD_TX_BURST ||
++ txq->tx_rs_thresh > ICE_TX_MAX_FREE_BUF_SZ)
++ return -1;
++
++ if (txq->offloads & ICE_TX_NO_VECTOR_FLAGS)
++ return -1;
++
++ if (txq->offloads & ICE_TX_VECTOR_OFFLOAD)
++ return ICE_VECTOR_OFFLOAD_PATH;
++
++ return ICE_VECTOR_PATH;
++}
++
++static inline int
++ice_rx_vec_dev_check_default(struct rte_eth_dev *dev)
++{
++ int i;
++ struct ci_rx_queue *rxq;
++ int ret = 0;
++
++ for (i = 0; i < dev->data->nb_rx_queues; i++) {
++ rxq = dev->data->rx_queues[i];
++ ret = (ice_rx_vec_queue_default(rxq));
++ if (ret < 0)
++ break;
++ }
++
++ return ret;
++}
++
++static inline int
++ice_tx_vec_dev_check_default(struct rte_eth_dev *dev)
++{
++ int i;
++ struct ci_tx_queue *txq;
++ int ret = 0;
++ int result = 0;
++
++ for (i = 0; i < dev->data->nb_tx_queues; i++) {
++ txq = dev->data->tx_queues[i];
++ ret = ice_tx_vec_queue_default(txq);
++ if (ret < 0)
++ return -1;
++ if (ret == ICE_VECTOR_OFFLOAD_PATH)
++ result = ret;
++ }
++
++ return result;
++}
++
++static inline void
++ice_txd_enable_offload(struct rte_mbuf *tx_pkt,
++ uint64_t *txd_hi)
++{
++ uint64_t ol_flags = tx_pkt->ol_flags;
++ uint32_t td_cmd = 0;
++ uint32_t td_offset = 0;
++
++ /* Tx Checksum Offload */
++ /* SET MACLEN */
++ td_offset |= (tx_pkt->l2_len >> 1) <<
++ ICE_TX_DESC_LEN_MACLEN_S;
++
++ /* Enable L3 checksum offload */
++ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) {
++ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM;
++ td_offset |= (tx_pkt->l3_len >> 2) <<
++ ICE_TX_DESC_LEN_IPLEN_S;
++ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) {
++ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4;
++ td_offset |= (tx_pkt->l3_len >> 2) <<
++ ICE_TX_DESC_LEN_IPLEN_S;
++ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) {
++ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6;
++ td_offset |= (tx_pkt->l3_len >> 2) <<
++ ICE_TX_DESC_LEN_IPLEN_S;
++ }
++
++ /* Enable L4 checksum offloads */
++ switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
++ case RTE_MBUF_F_TX_TCP_CKSUM:
++ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_TCP;
++ td_offset |= (sizeof(struct rte_tcp_hdr) >> 2) <<
++ ICE_TX_DESC_LEN_L4_LEN_S;
++ break;
++ case RTE_MBUF_F_TX_SCTP_CKSUM:
++ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_SCTP;
++ td_offset |= (sizeof(struct rte_sctp_hdr) >> 2) <<
++ ICE_TX_DESC_LEN_L4_LEN_S;
++ break;
++ case RTE_MBUF_F_TX_UDP_CKSUM:
++ td_cmd |= ICE_TX_DESC_CMD_L4T_EOFT_UDP;
++ td_offset |= (sizeof(struct rte_udp_hdr) >> 2) <<
++ ICE_TX_DESC_LEN_L4_LEN_S;
++ break;
++ default:
++ break;
++ }
++
++ *txd_hi |= ((uint64_t)td_offset) << ICE_TXD_QW1_OFFSET_S;
++
@@ -46,2 +230,8 @@
- td_cmd |= ICE_TX_DESC_CMD_IL2TAG1;
- *txd_hi |= ((uint64_t)tx_pkt->vlan_tci <<
++ td_cmd |= ICE_TX_DESC_CMD_IL2TAG1;
++ *txd_hi |= ((uint64_t)tx_pkt->vlan_tci <<
++ ICE_TXD_QW1_L2TAG1_S);
++ }
++
++ *txd_hi |= ((uint64_t)td_cmd) << ICE_TXD_QW1_CMD_S;
++}
++#endif
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/ice: fix statistics' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (68 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/idpf: fix queue setup with TSO offload' " Kevin Traynor
` (26 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Zhichao Zeng; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1e30fd1b8e0ec3383b899f86310076a3a2099a51
Thanks.
Kevin
---
From 1e30fd1b8e0ec3383b899f86310076a3a2099a51 Mon Sep 17 00:00:00 2001
From: Zhichao Zeng <zhichaox.zeng@intel.com>
Date: Thu, 13 Nov 2025 15:47:10 +0800
Subject: [PATCH] net/ice: fix statistics
[ upstream commit 9ac3d9cc61bc70fdc6dff14969a7111a673be932 ]
The statistics contain 40 bits. The lower 32 bits are read first, followed
by the upper 8 bits.
In some cases, after reading the lower 32 bits, a carry occurs from
the lower bits, which causes the final statistics to be incorrect.
This commit fixes this issue.
Fixes: a37bde56314d ("net/ice: support statistics")
Signed-off-by: Zhichao Zeng <zhichaox.zeng@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_ethdev.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index ada0558863..4f122f946c 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -5968,8 +5968,14 @@ ice_stat_update_40(struct ice_hw *hw,
{
uint64_t new_data;
+ uint32_t lo_old, hi, lo;
- new_data = (uint64_t)ICE_READ_REG(hw, loreg);
- new_data |= (uint64_t)(ICE_READ_REG(hw, hireg) & ICE_8_BIT_MASK) <<
- ICE_32_BIT_WIDTH;
+ do {
+ lo_old = ICE_READ_REG(hw, loreg);
+ hi = ICE_READ_REG(hw, hireg);
+ lo = ICE_READ_REG(hw, loreg);
+ } while (lo_old > lo);
+
+ new_data = (uint64_t)lo;
+ new_data |= (uint64_t)(hi & ICE_8_BIT_MASK) << ICE_32_BIT_WIDTH;
if (!offset_loaded)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.789942447 +0000
+++ 0071-net-ice-fix-statistics.patch 2025-11-21 11:05:09.550201540 +0000
@@ -1 +1 @@
-From 9ac3d9cc61bc70fdc6dff14969a7111a673be932 Mon Sep 17 00:00:00 2001
+From 1e30fd1b8e0ec3383b899f86310076a3a2099a51 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9ac3d9cc61bc70fdc6dff14969a7111a673be932 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/net/intel/ice/ice_ethdev.c | 12 +++++++++---
+ drivers/net/ice/ice_ethdev.c | 12 +++++++++---
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
-index c1d92435d1..c721d135f5 100644
---- a/drivers/net/intel/ice/ice_ethdev.c
-+++ b/drivers/net/intel/ice/ice_ethdev.c
-@@ -6418,8 +6418,14 @@ ice_stat_update_40(struct ice_hw *hw,
+diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
+index ada0558863..4f122f946c 100644
+--- a/drivers/net/ice/ice_ethdev.c
++++ b/drivers/net/ice/ice_ethdev.c
+@@ -5968,8 +5968,14 @@ ice_stat_update_40(struct ice_hw *hw,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/idpf: fix queue setup with TSO offload' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (69 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/ice: fix statistics' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Kevin Traynor
` (25 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Ciara Loftus; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/7c5bc6304361d65912d521558c7c3689be0d9642
Thanks.
Kevin
---
From 7c5bc6304361d65912d521558c7c3689be0d9642 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Thu, 13 Nov 2025 14:50:21 +0000
Subject: [PATCH] net/idpf: fix queue setup with TSO offload
[ upstream commit f36df6a25569102afa911b74d8613a5e7267f038 ]
The TCP_TSO Tx offload was missing from the conversion function. This
was effectively taking the request for that offload out of consideration
when selecting the Tx function. As a result a vector path which does not
support TSO could be chosen when that offload was requested, when
instead the scalar path should be chosen which does support that
offload. Fix this by adding the TSO offload to the conversion function.
Fixes: c008a5e740bd ("common/idpf: add queue setup/release")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Praveen Shetty <praveen.shetty@intel.com>
---
drivers/net/idpf/idpf_rxtx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/idpf/idpf_rxtx.c b/drivers/net/idpf/idpf_rxtx.c
index 858bbefe3b..b53f642902 100644
--- a/drivers/net/idpf/idpf_rxtx.c
+++ b/drivers/net/idpf/idpf_rxtx.c
@@ -43,4 +43,6 @@ idpf_tx_offload_convert(uint64_t offload)
if ((offload & RTE_ETH_TX_OFFLOAD_SCTP_CKSUM) != 0)
ol |= IDPF_TX_OFFLOAD_SCTP_CKSUM;
+ if ((offload & RTE_ETH_TX_OFFLOAD_TCP_TSO) != 0)
+ ol |= IDPF_TX_OFFLOAD_TCP_TSO;
if ((offload & RTE_ETH_TX_OFFLOAD_MULTI_SEGS) != 0)
ol |= IDPF_TX_OFFLOAD_MULTI_SEGS;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.817246918 +0000
+++ 0072-net-idpf-fix-queue-setup-with-TSO-offload.patch 2025-11-21 11:05:09.551003309 +0000
@@ -1 +1 @@
-From f36df6a25569102afa911b74d8613a5e7267f038 Mon Sep 17 00:00:00 2001
+From 7c5bc6304361d65912d521558c7c3689be0d9642 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f36df6a25569102afa911b74d8613a5e7267f038 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
- drivers/net/intel/idpf/idpf_rxtx.c | 2 ++
+ drivers/net/idpf/idpf_rxtx.c | 2 ++
@@ -22,4 +23,4 @@
-diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c
-index 1c725065df..4796d8b862 100644
---- a/drivers/net/intel/idpf/idpf_rxtx.c
-+++ b/drivers/net/intel/idpf/idpf_rxtx.c
+diff --git a/drivers/net/idpf/idpf_rxtx.c b/drivers/net/idpf/idpf_rxtx.c
+index 858bbefe3b..b53f642902 100644
+--- a/drivers/net/idpf/idpf_rxtx.c
++++ b/drivers/net/idpf/idpf_rxtx.c
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/iavf: fix check for PF Rx timestamp support' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (70 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/idpf: fix queue setup with TSO offload' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:20 ` patch 'net/iavf: fix Rx timestamp validity check' " Kevin Traynor
` (24 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jacob Keller; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/1a2e23cdef511133d8d0dd4dc586f9d65758b861
Thanks.
Kevin
---
From 1a2e23cdef511133d8d0dd4dc586f9d65758b861 Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Thu, 13 Nov 2025 13:33:44 -0800
Subject: [PATCH] net/iavf: fix check for PF Rx timestamp support
[ upstream commit d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 ]
The iavf driver has support for hardware Rx timestamps since commit
b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor").
To enable this, the VF must first negotiate PTP capabilities with the PF
by sending the VIRTCHNL_OP_1588_PTP_GET_CAPS command, with the requested
capabilities. The PF will respond with the actually supported subset of
capabilities.
The PF may not actually enable Rx timestamping, even if it reports the
overall PTP capability support. If this happens, the iavf driver logic
will incorrectly report that Rx timestamps can be enabled despite being
rejected by the PF.
This is unlikely in practice, as most PFs which support the
VIRTCHNL_VF_CAP_PTP will support Rx timestamping. However, there are
some cases where this may not be true.
Check that the PF actually reports the Rx timestamping capability
instead of assuming it is enabled. Doing so prevents the DPDK
application from attempting to enable Rx timestamps when they won't
actually be enabled.
Fixes: b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 8dd1f4b103..65bc1efc68 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1178,5 +1178,6 @@ iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_KEEP_CRC;
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_PTP)
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_PTP &&
+ vf->ptp_caps & VIRTCHNL_1588_PTP_CAP_RX_TSTAMP)
dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_TIMESTAMP;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.845371060 +0000
+++ 0073-net-iavf-fix-check-for-PF-Rx-timestamp-support.patch 2025-11-21 11:05:09.552201549 +0000
@@ -1 +1 @@
-From d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 Mon Sep 17 00:00:00 2001
+From 1a2e23cdef511133d8d0dd4dc586f9d65758b861 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d21c2fe6e5a1ef1e7cc9490f54f359db1cfd5283 ]
+
@@ -29 +30,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
- drivers/net/intel/iavf/iavf_ethdev.c | 3 ++-
+ drivers/net/iavf/iavf_ethdev.c | 3 ++-
@@ -36,4 +37,4 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index 15e49fe248..3ef766de47 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 8dd1f4b103..65bc1efc68 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/iavf: fix Rx timestamp validity check' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (71 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 23:41 ` Jacob Keller
2025-11-21 11:20 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Kevin Traynor
` (23 subsequent siblings)
96 siblings, 1 reply; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Jacob Keller; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/eb5dc1ca76c40f05514251982a21a4d77b6d709f
Thanks.
Kevin
---
From eb5dc1ca76c40f05514251982a21a4d77b6d709f Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Thu, 13 Nov 2025 13:33:45 -0800
Subject: [PATCH] net/iavf: fix Rx timestamp validity check
[ upstream commit dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 ]
When reporting an Rx timestamp from the receive descriptor, the iavf
driver does not check the validity bit in the time_stamp_low field. In
the event that hardware does not capture a receive timestamp for any
reason, this valid bit is unset, and the timestamp value in the
descriptor is zeroed out.
The iavf driver ignores this and passes the zero value into the
iavf_tstamp_convert_32b_64b function regardless, and proceeds to treat
the result as a valid timestamp.
Instead of reporting a zero timestamp which users can clearly interpret
as invalid, the raw 0 value from the descriptor is "extended" to the
64-bit timestamp. This results in values which are not immediately
obvious as invalid to users:
timestamp 1760629088881475583
timestamp 1760629088881475583
timestamp 1760629088881475583
First, if the value is printed in base 10 it is not immediately obvious
that the lower 32 bits are zero. Second, multiple packets in sequence
will receive the same "timestamp".
This occurs because of the timestamp extension logic. The receive
descriptor timestamps are 40 bits, with 32 bits of nanosecond precision,
7 bits of subnanosecond precision, and 1 validity bit. The
sub-nanosecond precision bits are discarded. To obtain a 64-bit
timestamp, the upper 32 bits are calculated from the lower 32-bits and a
snapshot of the PHC timer that is captured recently (within ~2 seconds
of the packet timestamp). This enables reporting proper full 64-bit
timestamps without needing to store all 64 bits in the receive
descriptor.
However, when timestamps are not working properly, the raw 'zero' value
is extended regardless of whether hardware indicated it was a valid
timestamp. As a result, users can see what appear at a glance as valid
timestamps. However, they will not match the packet reception time, and
will only update when the upper bits would roll over. This occurs every
2^32 seconds, or approximately once every 4 seconds.
Instead of reporting bogus extended timestamp values which could confuse
user applications, check the validity bit and only report a timestamp of
the valid bit is set. This matches the implementation used in the Linux
PF driver.
Fixes: b5cd735132f6 ("net/iavf: enable Rx timestamp on flex descriptor")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/iavf/iavf_rxtx.c | 9 ++++++---
drivers/net/iavf/iavf_rxtx.h | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 8fdf0f92e2..a2e51cc310 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -1623,5 +1623,6 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxd.wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high));
@@ -1792,5 +1793,6 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxd.wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high));
@@ -2077,5 +2079,6 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq,
pkt_flags = iavf_flex_rxd_error_to_pkt_flags(stat_err0);
- if (iavf_timestamp_dynflag > 0) {
+ if (iavf_timestamp_dynflag > 0 &&
+ rxdp[j].wb.time_stamp_low & IAVF_RX_FLX_DESC_TS_VALID) {
ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time,
rte_le_to_cpu_32(rxdp[j].wb.flex_ts.ts_high));
diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
index ef8aab4e9d..1237c54f82 100644
--- a/drivers/net/iavf/iavf_rxtx.h
+++ b/drivers/net/iavf/iavf_rxtx.h
@@ -644,4 +644,7 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
#define IAVF_RX_FLX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
+/* Valid indicator bit for the time_stamp_low field */
+#define IAVF_RX_FLX_DESC_TS_VALID (0x1UL)
+
int iavf_dev_rx_queue_setup(struct rte_eth_dev *dev,
uint16_t queue_idx,
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.874956463 +0000
+++ 0074-net-iavf-fix-Rx-timestamp-validity-check.patch 2025-11-21 11:05:09.554201557 +0000
@@ -1 +1 @@
-From dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 Mon Sep 17 00:00:00 2001
+From eb5dc1ca76c40f05514251982a21a4d77b6d709f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dba51a2fbdde67a2237a8d2c9fb73baf29e04dd0 ]
+
@@ -52 +53,0 @@
-Cc: stable@dpdk.org
@@ -57,2 +58,2 @@
- drivers/net/intel/iavf/iavf_rxtx.c | 9 ++++++---
- drivers/net/intel/iavf/iavf_rxtx.h | 3 +++
+ drivers/net/iavf/iavf_rxtx.c | 9 ++++++---
+ drivers/net/iavf/iavf_rxtx.h | 3 +++
@@ -61,5 +62,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index ea49059f83..d8662fd815 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -1583,5 +1583,6 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index 8fdf0f92e2..a2e51cc310 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -1623,5 +1623,6 @@ iavf_recv_pkts_flex_rxd(void *rx_queue,
@@ -73 +74 @@
-@@ -1752,5 +1753,6 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1792,5 +1793,6 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts,
@@ -81 +82 @@
-@@ -2037,5 +2039,6 @@ iavf_rx_scan_hw_ring_flex_rxd(struct ci_rx_queue *rxq,
+@@ -2077,5 +2079,6 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq,
@@ -89,5 +90,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.h b/drivers/net/intel/iavf/iavf_rxtx.h
-index 5c9339b99f..8efb3bd04e 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.h
-+++ b/drivers/net/intel/iavf/iavf_rxtx.h
-@@ -505,4 +505,7 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
+diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
+index ef8aab4e9d..1237c54f82 100644
+--- a/drivers/net/iavf/iavf_rxtx.h
++++ b/drivers/net/iavf/iavf_rxtx.h
+@@ -644,4 +644,7 @@ enum iavf_tx_ctx_desc_tunnel_l4_tunnel_type {
^ permalink raw reply [flat|nested] 100+ messages in thread* Re: patch 'net/iavf: fix Rx timestamp validity check' has been queued to stable release 24.11.4
2025-11-21 11:20 ` patch 'net/iavf: fix Rx timestamp validity check' " Kevin Traynor
@ 2025-11-21 23:41 ` Jacob Keller
0 siblings, 0 replies; 100+ messages in thread
From: Jacob Keller @ 2025-11-21 23:41 UTC (permalink / raw)
To: Kevin Traynor; +Cc: Bruce Richardson, dpdk stable
[-- Attachment #1.1: Type: text/plain, Size: 1177 bytes --]
On 11/21/2025 3:20 AM, Kevin Traynor wrote:
> 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/26/25. So please
> shout if anyone has objections.
>
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
>
> Queued patches are on a temporary branch at:
> https://github.com/kevintraynor/dpdk-stable
>
> This queued commit can be viewed at:
> https://github.com/kevintraynor/dpdk-stable/commit/eb5dc1ca76c40f05514251982a21a4d77b6d709f
>
> Thanks.
>
> Kevin
>
Hi Kevin,
It was recently reported to me that this fix has a regression as the
validity check is happening *before* capabilities get exchanged. I just
sent a follow-up fix to ensure the driver exchanges PTP capabilities
with the PF during init.
Thanks,
Jake
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* patch 'common/cnxk: fix max number of SQB buffers in clean up' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (72 preceding siblings ...)
2025-11-21 11:20 ` patch 'net/iavf: fix Rx timestamp validity check' " Kevin Traynor
@ 2025-11-21 11:20 ` Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix null SQ access' " Kevin Traynor
` (22 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:20 UTC (permalink / raw)
To: Sunil Kumar Kori; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/103bd8849273e26acf455f818895adf35fbc1e32
Thanks.
Kevin
---
From 103bd8849273e26acf455f818895adf35fbc1e32 Mon Sep 17 00:00:00 2001
From: Sunil Kumar Kori <skori@marvell.com>
Date: Thu, 13 Nov 2025 10:07:57 +0530
Subject: [PATCH] common/cnxk: fix max number of SQB buffers in clean up
[ upstream commit f3c15bb6062475a62451c62ca2c5c9a5e12706c8 ]
By default, SQB pool is created with max (512 buffers) +
extra threshold buffers and aura limit is set to 512 + thr.
But while clean up, aura limit is reset to MAX (512 buffers)
only before destroying the pool.
Hence while destroying the pool, only 512 buffers are cleaned
from aura and extra threshold buffers are left as it is.
At later stage if same SQB pool is created then H/W
throws error for extra threshold buffers that it is already
in pool.
Fixes: 780f90e951a5 ("common/cnxk: restore NIX SQB pool limit before destroy")
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
drivers/common/cnxk/roc_nix_queue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c
index 39bd051c94..ccb685240c 100644
--- a/drivers/common/cnxk/roc_nix_queue.c
+++ b/drivers/common/cnxk/roc_nix_queue.c
@@ -2032,5 +2032,5 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
* for aura drain to succeed.
*/
- roc_npa_aura_limit_modify(sq->aura_handle, NIX_MAX_SQB);
+ roc_npa_aura_limit_modify(sq->aura_handle, sq->aura_sqb_bufs);
rc |= roc_npa_pool_destroy(sq->aura_handle);
plt_free(sq->fc);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.903598220 +0000
+++ 0075-common-cnxk-fix-max-number-of-SQB-buffers-in-clean-u.patch 2025-11-21 11:05:09.555201562 +0000
@@ -1 +1 @@
-From f3c15bb6062475a62451c62ca2c5c9a5e12706c8 Mon Sep 17 00:00:00 2001
+From 103bd8849273e26acf455f818895adf35fbc1e32 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3c15bb6062475a62451c62ca2c5c9a5e12706c8 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index e59cd77538..1de6e51c5e 100644
+index 39bd051c94..ccb685240c 100644
@@ -31 +32 @@
-@@ -2058,5 +2058,5 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
+@@ -2032,5 +2032,5 @@ roc_nix_sq_fini(struct roc_nix_sq *sq)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'common/cnxk: fix null SQ access' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (73 preceding siblings ...)
2025-11-21 11:20 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix format specifier for bandwidth profile ID' " Kevin Traynor
` (21 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Satha Rao; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4d8505348c48426722d3c8fd6a54dd543aef7c45
Thanks.
Kevin
---
From 4d8505348c48426722d3c8fd6a54dd543aef7c45 Mon Sep 17 00:00:00 2001
From: Satha Rao <skoteshwar@marvell.com>
Date: Thu, 13 Nov 2025 10:08:01 +0530
Subject: [PATCH] common/cnxk: fix null SQ access
[ upstream commit 52ff61c2ca114691d74546f5ce16e8a7ebd164ae ]
Condition to check SQ is non NULL before access. Also pktio locks
are simplified while doing threshold_profile config.
Fixes: 90a903ffa6eb ("common/cnxk: split NIX TM hierarchy enable API")
Signed-off-by: Satha Rao <skoteshwar@marvell.com>
---
drivers/common/cnxk/roc_nix_tm_ops.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/common/cnxk/roc_nix_tm_ops.c b/drivers/common/cnxk/roc_nix_tm_ops.c
index b89f08ac66..c5dfdb0122 100644
--- a/drivers/common/cnxk/roc_nix_tm_ops.c
+++ b/drivers/common/cnxk/roc_nix_tm_ops.c
@@ -619,4 +619,11 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
sq = nix->sqs[sq_id];
+ if (!sq) {
+ plt_err("nb_rxq %d nb_txq %d sq_id %d lvl %d", nix->nb_rx_queues,
+ nix->nb_tx_queues, sq_id, node->lvl);
+ roc_nix_tm_dump(roc_nix, NULL);
+ roc_nix_dump(roc_nix, NULL);
+ return NIX_ERR_TM_INVALID_NODE;
+ }
rc = roc_nix_sq_ena_dis(sq, true);
if (rc) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.931293727 +0000
+++ 0076-common-cnxk-fix-null-SQ-access.patch 2025-11-21 11:05:09.556201566 +0000
@@ -1 +1 @@
-From 52ff61c2ca114691d74546f5ce16e8a7ebd164ae Mon Sep 17 00:00:00 2001
+From 4d8505348c48426722d3c8fd6a54dd543aef7c45 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 52ff61c2ca114691d74546f5ce16e8a7ebd164ae ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 09d014a276..230e9b72f6 100644
+index b89f08ac66..c5dfdb0122 100644
@@ -21 +22 @@
-@@ -625,4 +625,11 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
+@@ -619,4 +619,11 @@ roc_nix_tm_hierarchy_xmit_enable(struct roc_nix *roc_nix, enum roc_nix_tm_tree t
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'common/cnxk: fix format specifier for bandwidth profile ID' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (74 preceding siblings ...)
2025-11-21 11:21 ` patch 'common/cnxk: fix null SQ access' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix NIX Rx inject enabling' " Kevin Traynor
` (20 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Aarnav JP; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ff9b426a6b7a6606d5f4c55ca009f0b3bc1ce24f
Thanks.
Kevin
---
From ff9b426a6b7a6606d5f4c55ca009f0b3bc1ce24f Mon Sep 17 00:00:00 2001
From: Aarnav JP <ajp@marvell.com>
Date: Thu, 13 Nov 2025 10:08:04 +0530
Subject: [PATCH] common/cnxk: fix format specifier for bandwidth profile ID
[ upstream commit 8da4eaf43701b8b249435bd452867f1f2c97ca2e ]
Fix format specifier for bandwidth profile ID.
Fixes: db5744d3cd23 ("common/cnxk: support NIX debug for CN20K")
Signed-off-by: Aarnav JP <ajp@marvell.com>
---
.mailmap | 1 +
drivers/common/cnxk/roc_nix_debug.c | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 06fd64f764..228bd1af42 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1,3 +1,4 @@
Aakash Sasidharan <asasidharan@marvell.com>
+Aarnav JP <ajp@marvell.com>
Aaro Koskinen <aaro.koskinen@nsn.com>
Aaron Campbell <aaron@arbor.net>
diff --git a/drivers/common/cnxk/roc_nix_debug.c b/drivers/common/cnxk/roc_nix_debug.c
index 0cc8d7cc1e..01bd8774f4 100644
--- a/drivers/common/cnxk/roc_nix_debug.c
+++ b/drivers/common/cnxk/roc_nix_debug.c
@@ -770,6 +770,6 @@ nix_lf_rq_dump(__io struct nix_cn20k_rq_ctx_s *ctx, FILE *file)
nix_dump(file, "W2: xqe_hdr_split \t\t%d\nW2: xqe_imm_copy \t\t%d",
ctx->xqe_hdr_split, ctx->xqe_imm_copy);
- nix_dump(file, "W2: band_prof_id\t\t%d\n",
- ((ctx->band_prof_id_h << 10) | ctx->band_prof_id_l));
+ nix_dump(file, "W2: band_prof_id\t\t0x%" PRIx64 "\n",
+ (uint64_t)((ctx->band_prof_id_h << 10) | ctx->band_prof_id_l));
nix_dump(file, "W2: xqe_imm_size \t\t%d\nW2: later_skip \t\t\t%d",
ctx->xqe_imm_size, ctx->later_skip);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.960418099 +0000
+++ 0077-common-cnxk-fix-format-specifier-for-bandwidth-profi.patch 2025-11-21 11:05:09.558201574 +0000
@@ -1 +1 @@
-From 8da4eaf43701b8b249435bd452867f1f2c97ca2e Mon Sep 17 00:00:00 2001
+From ff9b426a6b7a6606d5f4c55ca009f0b3bc1ce24f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8da4eaf43701b8b249435bd452867f1f2c97ca2e ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 2678c4a9de..f9c5622e5d 100644
+index 06fd64f764..228bd1af42 100644
@@ -27 +28 @@
-index f9294e693b..11994bf131 100644
+index 0cc8d7cc1e..01bd8774f4 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'common/cnxk: fix NIX Rx inject enabling' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (75 preceding siblings ...)
2025-11-21 11:21 ` patch 'common/cnxk: fix format specifier for bandwidth profile ID' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/cnxk: fix Rx inject LF' " Kevin Traynor
` (19 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Aarnav JP; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/0fc620bca137d63e775a53da37867dd103baf74c
Thanks.
Kevin
---
From 0fc620bca137d63e775a53da37867dd103baf74c Mon Sep 17 00:00:00 2001
From: Aarnav JP <ajp@marvell.com>
Date: Thu, 13 Nov 2025 10:08:06 +0530
Subject: [PATCH] common/cnxk: fix NIX Rx inject enabling
[ upstream commit 9396a93a0d848edf0f32a4950418a8083e04924c ]
Rx inject can only be supported with roc_nix.
Fixes: 4b8eb5bd6627 ("common/cnxk: reserve CPT LF for Rx inject")
Signed-off-by: Aarnav JP <ajp@marvell.com>
---
drivers/common/cnxk/roc_nix_inl.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/common/cnxk/roc_nix_inl.c b/drivers/common/cnxk/roc_nix_inl.c
index 5b79bc2266..172055ce88 100644
--- a/drivers/common/cnxk/roc_nix_inl.c
+++ b/drivers/common/cnxk/roc_nix_inl.c
@@ -564,10 +564,10 @@ roc_nix_inl_inb_rx_inject_enable(struct roc_nix *roc_nix, bool inb_inl_dev)
if (inb_inl_dev) {
inl_dev = idev->nix_inl_dev;
- if (inl_dev && inl_dev->attach_cptlf && inl_dev->rx_inj_ena &&
+ if (inl_dev && inl_dev->attach_cptlf && inl_dev->rx_inj_ena && roc_nix &&
roc_nix->rx_inj_ena)
return true;
}
- return roc_nix->rx_inj_ena;
+ return roc_nix ? roc_nix->rx_inj_ena : 0;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:11.988329166 +0000
+++ 0078-common-cnxk-fix-NIX-Rx-inject-enabling.patch 2025-11-21 11:05:09.559201579 +0000
@@ -1 +1 @@
-From 9396a93a0d848edf0f32a4950418a8083e04924c Mon Sep 17 00:00:00 2001
+From 0fc620bca137d63e775a53da37867dd103baf74c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9396a93a0d848edf0f32a4950418a8083e04924c ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index 780f4cbbfc..f8be98efd5 100644
+index 5b79bc2266..172055ce88 100644
@@ -20 +21 @@
-@@ -850,10 +850,10 @@ roc_nix_inl_inb_rx_inject_enable(struct roc_nix *roc_nix, bool inb_inl_dev)
+@@ -564,10 +564,10 @@ roc_nix_inl_inb_rx_inject_enable(struct roc_nix *roc_nix, bool inb_inl_dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/cnxk: fix Rx inject LF' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (76 preceding siblings ...)
2025-11-21 11:21 ` patch 'common/cnxk: fix NIX Rx inject enabling' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/cnxk: fix default meter pre-color' " Kevin Traynor
` (18 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Aarnav JP; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/49c087983d021e0570f198a34f4a07389cf2e68c
Thanks.
Kevin
---
From 49c087983d021e0570f198a34f4a07389cf2e68c Mon Sep 17 00:00:00 2001
From: Aarnav JP <ajp@marvell.com>
Date: Thu, 13 Nov 2025 10:08:07 +0530
Subject: [PATCH] net/cnxk: fix Rx inject LF
[ upstream commit 7d2c9dae103299edffbb436793ef499a6fdd9beb ]
Fix illegal access on error.
Fixes: 47cca253d605 ("net/cnxk: support Rx inject")
Signed-off-by: Aarnav JP <ajp@marvell.com>
---
drivers/net/cnxk/cn10k_ethdev_sec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/cnxk/cn10k_ethdev_sec.c b/drivers/net/cnxk/cn10k_ethdev_sec.c
index 35b1665a10..8de80031aa 100644
--- a/drivers/net/cnxk/cn10k_ethdev_sec.c
+++ b/drivers/net/cnxk/cn10k_ethdev_sec.c
@@ -1347,4 +1347,6 @@ cn10k_eth_sec_rx_inject_config(void *device, uint16_t port_id, bool enable)
inl_lf = roc_nix_inl_inb_inj_lf_get(nix);
+ if (!inl_lf)
+ return -ENOTSUP;
sa_base = roc_nix_inl_inb_sa_base_get(nix, dev->inb.inl_dev);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.016020535 +0000
+++ 0079-net-cnxk-fix-Rx-inject-LF.patch 2025-11-21 11:05:09.560201583 +0000
@@ -1 +1 @@
-From 7d2c9dae103299edffbb436793ef499a6fdd9beb Mon Sep 17 00:00:00 2001
+From 49c087983d021e0570f198a34f4a07389cf2e68c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7d2c9dae103299edffbb436793ef499a6fdd9beb ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index f26830637f..855bea1796 100644
+index 35b1665a10..8de80031aa 100644
@@ -20 +21 @@
-@@ -1337,4 +1337,6 @@ cn10k_eth_sec_rx_inject_config(void *device, uint16_t port_id, bool enable)
+@@ -1347,4 +1347,6 @@ cn10k_eth_sec_rx_inject_config(void *device, uint16_t port_id, bool enable)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/cnxk: fix default meter pre-color' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (77 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/cnxk: fix Rx inject LF' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Kevin Traynor
` (17 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Aarnav JP; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/69eaae8ca9ee3e991ead3970164b234cafc1b944
Thanks.
Kevin
---
From 69eaae8ca9ee3e991ead3970164b234cafc1b944 Mon Sep 17 00:00:00 2001
From: Aarnav JP <ajp@marvell.com>
Date: Thu, 13 Nov 2025 10:08:08 +0530
Subject: [PATCH] net/cnxk: fix default meter pre-color
[ upstream commit b595d05bf739b5330cbfca00bdb984edea579a57 ]
While converting to HW specific icolor, check for invalid
default pre color.
Fixes: ac35d4bf4cd6 ("net/cnxk: support ingress meter pre-color")
Signed-off-by: Aarnav JP <ajp@marvell.com>
---
drivers/net/cnxk/cnxk_ethdev_mtr.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c
index edeca6dcc3..992e2d446e 100644
--- a/drivers/net/cnxk/cnxk_ethdev_mtr.c
+++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c
@@ -1262,5 +1262,11 @@ nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg)
cfg->alg = alg_map[profile->profile.alg];
cfg->lmode = profile->profile.packet_mode;
- cfg->icolor = color_map[mtr->params.default_input_color];
+ int idx = mtr->params.default_input_color;
+
+ /* Index validation */
+ if (idx >= RTE_COLORS)
+ cfg->icolor = ROC_NIX_BPF_COLOR_GREEN;
+ else
+ cfg->icolor = color_map[idx];
switch (RTE_MTR_COLOR_IN_PROTO_OUTER_IP) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.044135904 +0000
+++ 0080-net-cnxk-fix-default-meter-pre-color.patch 2025-11-21 11:05:09.561201587 +0000
@@ -1 +1 @@
-From b595d05bf739b5330cbfca00bdb984edea579a57 Mon Sep 17 00:00:00 2001
+From 69eaae8ca9ee3e991ead3970164b234cafc1b944 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b595d05bf739b5330cbfca00bdb984edea579a57 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'crypto/qat: fix CCM request descriptor hash state size' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (78 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/cnxk: fix default meter pre-color' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Kevin Traynor
` (16 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Emma Finn; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/802e08bd04013c3d36e6422f811a1787ddc6af44
Thanks.
Kevin
---
From 802e08bd04013c3d36e6422f811a1787ddc6af44 Mon Sep 17 00:00:00 2001
From: Emma Finn <emma.finn@intel.com>
Date: Wed, 12 Nov 2025 10:19:10 +0000
Subject: [PATCH] crypto/qat: fix CCM request descriptor hash state size
[ upstream commit 3ffcfc48040a076643ec58c5f53b77069305afda ]
The hash_state_sz field in the QAT request descriptor for AES-CCM
operations was incorrectly set to the digest length. According to
the QAT firmware specification, this field should contain the
length of AAD in quadwords for CCM operations.
Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")
Signed-off-by: Emma Finn <emma.finn@intel.com>
---
drivers/crypto/qat/qat_sym_session.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index 5a4bac8c46..dd9921769c 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -2794,5 +2794,6 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
hash_cd_ctrl->outer_prefix_sz = digestsize;
- auth_param->hash_state_sz = digestsize;
+ auth_param->hash_state_sz = (RTE_ALIGN_CEIL(auth_param->u2.aad_sz,
+ ICP_QAT_HW_CCM_AAD_ALIGNMENT) >> 3);
memcpy(cdesc->cd_cur_ptr + state1_size, authkey, authkeylen);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.072146517 +0000
+++ 0081-crypto-qat-fix-CCM-request-descriptor-hash-state-siz.patch 2025-11-21 11:05:09.562201591 +0000
@@ -1 +1 @@
-From 3ffcfc48040a076643ec58c5f53b77069305afda Mon Sep 17 00:00:00 2001
+From 802e08bd04013c3d36e6422f811a1787ddc6af44 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3ffcfc48040a076643ec58c5f53b77069305afda ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 98ab82ffb3..2ba4fc0a3a 100644
+index 5a4bac8c46..dd9921769c 100644
@@ -23 +24 @@
-@@ -2775,5 +2775,6 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
+@@ -2794,5 +2794,6 @@ static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/dpaa2: remove ethdev pointer from bus device' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (79 preceding siblings ...)
2025-11-21 11:21 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'app/flow-perf: fix rules array length' " Kevin Traynor
` (15 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: David Marchand; +Cc: 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/a0ed5dd0cc45a47b593470acec09f5f89c5c3138
Thanks.
Kevin
---
From a0ed5dd0cc45a47b593470acec09f5f89c5c3138 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 12 Nov 2025 10:10:46 +0100
Subject: [PATCH] net/dpaa2: remove ethdev pointer from bus device
[ upstream commit 603caa201d7fea95d9272aec5667cb4a23d0886d ]
This code was never used.
This leaves no user of the ethdev field in the fslmc device object.
Fixes: f023d059769f ("net/dpaa2: support recycle loopback port")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/fslmc/bus_fslmc_driver.h | 1 -
drivers/net/dpaa2/dpaa2_ethdev.c | 1 -
drivers/net/dpaa2/dpaa2_ethdev.h | 6 ----
drivers/net/dpaa2/dpaa2_recycle.c | 50 ----------------------------
4 files changed, 58 deletions(-)
diff --git a/drivers/bus/fslmc/bus_fslmc_driver.h b/drivers/bus/fslmc/bus_fslmc_driver.h
index 1d4ce4785f..34b564001d 100644
--- a/drivers/bus/fslmc/bus_fslmc_driver.h
+++ b/drivers/bus/fslmc/bus_fslmc_driver.h
@@ -97,5 +97,4 @@ struct rte_dpaa2_device {
struct rte_device device; /**< Inherit core device */
union {
- struct rte_eth_dev *eth_dev; /**< ethernet device */
struct rte_cryptodev *cryptodev; /**< Crypto Device */
struct rte_dma_dev *dmadev; /**< DMA Device */
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 83ff6e0a04..272126f4a3 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -3052,5 +3052,4 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
eth_dev->device = &dpaa2_dev->device;
- dpaa2_dev->eth_dev = eth_dev;
eth_dev->data->rx_mbuf_alloc_failed = 0;
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index f32c31c763..de5594b72a 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -492,9 +492,3 @@ int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
int dpaa2_soft_parser_loaded(void);
-int dpaa2_dev_recycle_qp_setup(struct rte_dpaa2_device *dpaa2_dev,
- uint16_t qidx, uint64_t cntx,
- eth_rx_burst_t tx_lpbk, eth_tx_burst_t rx_lpbk,
- struct dpaa2_queue **txq,
- struct dpaa2_queue **rxq);
-
#endif /* _DPAA2_ETHDEV_H */
diff --git a/drivers/net/dpaa2/dpaa2_recycle.c b/drivers/net/dpaa2/dpaa2_recycle.c
index 4fde9b95a0..f68653e0f4 100644
--- a/drivers/net/dpaa2/dpaa2_recycle.c
+++ b/drivers/net/dpaa2/dpaa2_recycle.c
@@ -731,52 +731,2 @@ dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev)
return ret;
}
-
-int
-dpaa2_dev_recycle_qp_setup(struct rte_dpaa2_device *dpaa2_dev,
- uint16_t qidx, uint64_t cntx,
- eth_rx_burst_t tx_lpbk, eth_tx_burst_t rx_lpbk,
- struct dpaa2_queue **txq,
- struct dpaa2_queue **rxq)
-{
- struct rte_eth_dev *dev;
- struct rte_eth_dev_data *data;
- struct dpaa2_queue *txq_tmp;
- struct dpaa2_queue *rxq_tmp;
- struct dpaa2_dev_priv *priv;
-
- dev = dpaa2_dev->eth_dev;
- data = dev->data;
- priv = data->dev_private;
-
- if (!(priv->flags & DPAA2_TX_LOOPBACK_MODE) &&
- (tx_lpbk || rx_lpbk)) {
- DPAA2_PMD_ERR("%s is NOT recycle device!", data->name);
-
- return -EINVAL;
- }
-
- if (qidx >= data->nb_rx_queues || qidx >= data->nb_tx_queues)
- return -EINVAL;
-
- rte_spinlock_lock(&priv->lpbk_qp_lock);
-
- if (tx_lpbk)
- dev->tx_pkt_burst = tx_lpbk;
-
- if (rx_lpbk)
- dev->rx_pkt_burst = rx_lpbk;
-
- txq_tmp = data->tx_queues[qidx];
- txq_tmp->lpbk_cntx = cntx;
- rxq_tmp = data->rx_queues[qidx];
- rxq_tmp->lpbk_cntx = cntx;
-
- if (txq)
- *txq = txq_tmp;
- if (rxq)
- *rxq = rxq_tmp;
-
- rte_spinlock_unlock(&priv->lpbk_qp_lock);
-
- return 0;
-}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.102032316 +0000
+++ 0082-net-dpaa2-remove-ethdev-pointer-from-bus-device.patch 2025-11-21 11:05:09.565201604 +0000
@@ -1 +1 @@
-From 603caa201d7fea95d9272aec5667cb4a23d0886d Mon Sep 17 00:00:00 2001
+From a0ed5dd0cc45a47b593470acec09f5f89c5c3138 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 603caa201d7fea95d9272aec5667cb4a23d0886d ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index efa88754a7..094f885f59 100644
+index 1d4ce4785f..34b564001d 100644
@@ -26 +27 @@
-@@ -99,5 +99,4 @@ struct rte_dpaa2_device {
+@@ -97,5 +97,4 @@ struct rte_dpaa2_device {
@@ -30,2 +31,2 @@
- struct rte_rawdev *rawdev; /**< Raw Device */
- };
+ struct rte_cryptodev *cryptodev; /**< Crypto Device */
+ struct rte_dma_dev *dmadev; /**< DMA Device */
@@ -33 +34 @@
-index 1dd4a1e32b..fdf3e0f220 100644
+index 83ff6e0a04..272126f4a3 100644
@@ -36 +37 @@
-@@ -3352,5 +3352,4 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
+@@ -3052,5 +3052,4 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
@@ -43 +44 @@
-index 87a94bc15b..86b3022ddb 100644
+index f32c31c763..de5594b72a 100644
@@ -46 +47 @@
-@@ -532,10 +532,4 @@ int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
+@@ -492,9 +492,3 @@ int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
@@ -55,2 +56 @@
- void
- dpaa2_dev_mac_setup_stats(struct rte_eth_dev *dev);
+ #endif /* _DPAA2_ETHDEV_H */
@@ -58 +58 @@
-index 94a7e2a020..d1e21dd4d1 100644
+index 4fde9b95a0..f68653e0f4 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'app/flow-perf: fix rules array length' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (80 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix spurious CPU wakeups' " Kevin Traynor
` (14 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Bing Zhao; +Cc: Dariusz Sosnowski, Wisam Jaddo, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ecb7bdd857ed4a34402a6cc2ae26c8f18f746300
Thanks.
Kevin
---
From ecb7bdd857ed4a34402a6cc2ae26c8f18f746300 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Mon, 17 Nov 2025 09:28:58 +0200
Subject: [PATCH] app/flow-perf: fix rules array length
[ upstream commit a0b148048b3d9960788093b3b94c70af8f04136b ]
The array used to save the flow rules pointer was allocated with an
incorrect length. 1 more rule space should be appended but not 1 byte.
Fixes: 070316d01d3e ("app/flow-perf: add multi-core rule insertion and deletion")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Reviewed-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
---
app/test-flow-perf/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c
index 07ddfe0e46..2c2b3ac3a6 100644
--- a/app/test-flow-perf/main.c
+++ b/app/test-flow-perf/main.c
@@ -1405,5 +1405,5 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
flows_list = rte_zmalloc("flows_list",
- (sizeof(struct rte_flow *) * rules_count_per_core) + 1, 0);
+ (sizeof(struct rte_flow *) * (rules_count_per_core + 1)), 0);
if (flows_list == NULL)
rte_exit(EXIT_FAILURE, "No Memory available!\n");
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.129442430 +0000
+++ 0083-app-flow-perf-fix-rules-array-length.patch 2025-11-21 11:05:09.566201608 +0000
@@ -1 +1 @@
-From a0b148048b3d9960788093b3b94c70af8f04136b Mon Sep 17 00:00:00 2001
+From ecb7bdd857ed4a34402a6cc2ae26c8f18f746300 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a0b148048b3d9960788093b3b94c70af8f04136b ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index b2084b93dd..a8876acf1f 100644
+index 07ddfe0e46..2c2b3ac3a6 100644
@@ -23 +24 @@
-@@ -1488,5 +1488,5 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
+@@ -1405,5 +1405,5 @@ insert_flows(int port_id, uint8_t core_id, uint16_t dst_port_id)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix spurious CPU wakeups' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (81 preceding siblings ...)
2025-11-21 11:21 ` patch 'app/flow-perf: fix rules array length' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix IPv6 DSCP offset in HWS sync API' " Kevin Traynor
` (13 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Sivaprasad Tummala; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/445b320f57e0aa24e79530aabbd2ade62cad66d5
Thanks.
Kevin
---
From 445b320f57e0aa24e79530aabbd2ade62cad66d5 Mon Sep 17 00:00:00 2001
From: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
Date: Tue, 11 Nov 2025 03:40:57 +0000
Subject: [PATCH] net/mlx5: fix spurious CPU wakeups
[ upstream commit 750f635fc6a7ee287e076c5500ca97d77187676a ]
Previously, the PMD used a common monitor callback to determine
CQE ownership for power-aware polling. However, when a CQE contained
an invalid opcode (MLX5_CQE_INVALID), ownership bit was not reliable.
As a result, the monitor condition could falsely indicate CQE
availability and cause the CPU to wake up unnecessarily during
low traffic periods.
This resulted in spurious wakeups in monitor-wait mode and reduced
the expected power savings, as cores exited the sleep state even
when no valid CQEs were available.
This patch introduces a dedicated callback that skips invalid CQEs
and optimizes power efficiency by preventing false wakeups caused
by hardware-owned or invalid entries.
Fixes: a8f0df6bf98d ("net/mlx5: support power monitoring")
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
---
drivers/net/mlx5/mlx5_rx.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c
index 0f2152fdb0..c5fdf25a38 100644
--- a/drivers/net/mlx5/mlx5_rx.c
+++ b/drivers/net/mlx5/mlx5_rx.c
@@ -295,4 +295,18 @@ mlx5_monitor_callback(const uint64_t value,
}
+static int
+mlx5_monitor_cqe_own_callback(const uint64_t value,
+ const uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ])
+{
+ const uint64_t m = opaque[CLB_MSK_IDX];
+ const uint64_t v = opaque[CLB_VAL_IDX];
+ const uint64_t sw_owned = ((value & m) == v);
+ const uint64_t opcode = MLX5_CQE_OPCODE(value);
+ const uint64_t valid_op = (opcode != MLX5_CQE_INVALID);
+
+ /* ownership bit is not valid for invalid opcode; CQE is HW owned */
+ return -(valid_op & sw_owned);
+}
+
int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
{
@@ -312,10 +326,11 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
pmc->opaque[CLB_VAL_IDX] = vic;
pmc->opaque[CLB_MSK_IDX] = MLX5_CQE_VIC_INIT;
+ pmc->fn = mlx5_monitor_callback;
} else {
pmc->addr = &cqe->op_own;
pmc->opaque[CLB_VAL_IDX] = !!idx;
pmc->opaque[CLB_MSK_IDX] = MLX5_CQE_OWNER_MASK;
+ pmc->fn = mlx5_monitor_cqe_own_callback;
}
- pmc->fn = mlx5_monitor_callback;
pmc->size = sizeof(uint8_t);
return 0;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.157007382 +0000
+++ 0084-net-mlx5-fix-spurious-CPU-wakeups.patch 2025-11-21 11:05:09.567201613 +0000
@@ -1 +1 @@
-From 750f635fc6a7ee287e076c5500ca97d77187676a Mon Sep 17 00:00:00 2001
+From 445b320f57e0aa24e79530aabbd2ade62cad66d5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 750f635fc6a7ee287e076c5500ca97d77187676a ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 420a03068d..ac663a978e 100644
+index 0f2152fdb0..c5fdf25a38 100644
@@ -33 +34 @@
-@@ -296,4 +296,18 @@ mlx5_monitor_callback(const uint64_t value,
+@@ -295,4 +295,18 @@ mlx5_monitor_callback(const uint64_t value,
@@ -52 +53 @@
-@@ -313,10 +327,11 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
+@@ -312,10 +326,11 @@ int mlx5_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix IPv6 DSCP offset in HWS sync API' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (82 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix spurious CPU wakeups' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix send to kernel action resources release' " Kevin Traynor
` (12 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Gavin Li; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/35678b1c4c3503cb33dff3c74e42718c622f15e9
Thanks.
Kevin
---
From 35678b1c4c3503cb33dff3c74e42718c622f15e9 Mon Sep 17 00:00:00 2001
From: Gavin Li <gavinl@nvidia.com>
Date: Wed, 12 Nov 2025 15:42:36 +0200
Subject: [PATCH] net/mlx5: fix IPv6 DSCP offset in HWS sync API
[ upstream commit 15501c4298ea029b4252b8194daa574d4e02df20 ]
The processing of field IPv6 DSCP via the synchronous flow API is
different between software and hardware steering engines (HWS).
The bit shift handling for IPv6 DSCP was not handled in HWS,
resulting in incorrect data in the field.
To resolve this, bit shift handling should be added to HWS.
Fixes: ec1e7a5ceb69 ("net/mlx5: update IPv6 traffic class modification")
Signed-off-by: Gavin Li <gavinl@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 7 +++++++
drivers/net/mlx5/mlx5_flow_dv.c | 6 ------
drivers/net/mlx5/mlx5_flow_hw.c | 5 +++++
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index cfdaaac812..5f154add0d 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -3647,4 +3647,11 @@ flow_hw_get_ipv6_route_ext_mod_id_from_ctx(void *dr_ctx, uint8_t idx)
return 0;
}
+
+static inline bool
+mlx5_dv_modify_ipv6_traffic_class_supported(struct mlx5_priv *priv)
+{
+ return priv->sh->phdev->config.ipv6_tc_fallback == MLX5_IPV6_TC_OK;
+}
+
void
mlx5_indirect_list_handles_release(struct rte_eth_dev *dev);
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index f5dbb06cd5..c8b17c0f3a 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -1639,10 +1639,4 @@ mlx5_modify_flex_item(const struct rte_eth_dev *dev,
}
-static inline bool
-mlx5_dv_modify_ipv6_traffic_class_supported(struct mlx5_priv *priv)
-{
- return priv->sh->phdev->config.ipv6_tc_fallback == MLX5_IPV6_TC_OK;
-}
-
void
mlx5_flow_field_id_to_modify_info
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 667472800f..e4a67a0c1a 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1596,4 +1596,9 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
value = rte_cpu_to_be_32(value);
item.spec = &value;
+ } else if (conf->dst.field == RTE_FLOW_FIELD_IPV6_DSCP &&
+ !(mask[0] & MLX5_IPV6_HDR_ECN_MASK) &&
+ mlx5_dv_modify_ipv6_traffic_class_supported(dev->data->dev_private)) {
+ value = *(const unaligned_uint32_t *)item.spec << MLX5_IPV6_HDR_DSCP_SHIFT;
+ item.spec = &value;
}
} else {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.203761422 +0000
+++ 0085-net-mlx5-fix-IPv6-DSCP-offset-in-HWS-sync-API.patch 2025-11-21 11:05:09.587201698 +0000
@@ -1 +1 @@
-From 15501c4298ea029b4252b8194daa574d4e02df20 Mon Sep 17 00:00:00 2001
+From 35678b1c4c3503cb33dff3c74e42718c622f15e9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 15501c4298ea029b4252b8194daa574d4e02df20 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 26d9e80a13..e332226fff 100644
+index cfdaaac812..5f154add0d 100644
@@ -28 +29 @@
-@@ -3715,4 +3715,11 @@ flow_hw_get_ipv6_route_ext_mod_id_from_ctx(void *dr_ctx, uint8_t idx)
+@@ -3647,4 +3647,11 @@ flow_hw_get_ipv6_route_ext_mod_id_from_ctx(void *dr_ctx, uint8_t idx)
@@ -41 +42 @@
-index 95ca57e8c4..83046418c4 100644
+index f5dbb06cd5..c8b17c0f3a 100644
@@ -56 +57 @@
-index de400536c7..e0f79932a5 100644
+index 667472800f..e4a67a0c1a 100644
@@ -59 +60 @@
-@@ -1626,4 +1626,9 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
+@@ -1596,4 +1596,9 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix send to kernel action resources release' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (83 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix IPv6 DSCP offset in HWS sync API' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: release representor interrupt handler' " Kevin Traynor
` (11 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/6b7221e37eb5a55c28848a276739dfffb6460f12
Thanks.
Kevin
---
From 6b7221e37eb5a55c28848a276739dfffb6460f12 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 12 Nov 2025 18:24:40 +0200
Subject: [PATCH] net/mlx5: fix send to kernel action resources release
[ upstream commit 472b0994319198090e44a7c2de1e43f0a0e0a270 ]
In the MLX5 PMD hierarchy a flow table is bound to a domain object.
A domain object can be released if it does not reference any flow
tables.
When the PMD creates a send to kernel flow action, it also creates
a dedicated flow table for that action.
The PMD called for Rx, Tx and FDB domain destruction before it
destroyed send to kernel resources - flow action and flow table.
As a result, domain destruction could not be completed.
The patch moves send to kernel actions and tables destruction before
domain destruction.
Fixes: f31a141e6478 ("net/mlx5: add send to kernel action resource holder")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 40 ++++++++++++++++++++------------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index de037b25f1..f8197a22bc 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -738,4 +738,28 @@ error:
}
+#ifdef HAVE_MLX5DV_DR
+static void
+mlx5_destroy_send_to_kernel_action(struct mlx5_dev_ctx_shared *sh)
+{
+ int i;
+
+ for (i = 0; i < MLX5DR_TABLE_TYPE_MAX; i++) {
+ if (sh->send_to_kernel_action[i].action) {
+ void *action = sh->send_to_kernel_action[i].action;
+
+ mlx5_glue->destroy_flow_action(action);
+ sh->send_to_kernel_action[i].action = NULL;
+ }
+ if (sh->send_to_kernel_action[i].tbl) {
+ struct mlx5_flow_tbl_resource *tbl =
+ sh->send_to_kernel_action[i].tbl;
+
+ flow_dv_tbl_resource_release(sh, tbl);
+ sh->send_to_kernel_action[i].tbl = NULL;
+ }
+ }
+}
+#endif /* HAVE_MLX5DV_DR */
+
/**
* Destroy DR related data within private structure.
@@ -764,4 +788,5 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
MLX5_ASSERT(LIST_EMPTY(&sh->shared_rxqs));
#ifdef HAVE_MLX5DV_DR
+ mlx5_destroy_send_to_kernel_action(sh);
if (sh->rx_domain) {
mlx5_glue->dr_destroy_domain(sh->rx_domain);
@@ -786,19 +811,4 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv)
sh->pop_vlan_action = NULL;
}
- for (i = 0; i < MLX5DR_TABLE_TYPE_MAX; i++) {
- if (sh->send_to_kernel_action[i].action) {
- void *action = sh->send_to_kernel_action[i].action;
-
- mlx5_glue->destroy_flow_action(action);
- sh->send_to_kernel_action[i].action = NULL;
- }
- if (sh->send_to_kernel_action[i].tbl) {
- struct mlx5_flow_tbl_resource *tbl =
- sh->send_to_kernel_action[i].tbl;
-
- flow_dv_tbl_resource_release(sh, tbl);
- sh->send_to_kernel_action[i].tbl = NULL;
- }
- }
#endif /* HAVE_MLX5DV_DR */
if (sh->default_miss_action)
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.232959763 +0000
+++ 0086-net-mlx5-fix-send-to-kernel-action-resources-release.patch 2025-11-21 11:05:09.589201707 +0000
@@ -1 +1 @@
-From 472b0994319198090e44a7c2de1e43f0a0e0a270 Mon Sep 17 00:00:00 2001
+From 6b7221e37eb5a55c28848a276739dfffb6460f12 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 472b0994319198090e44a7c2de1e43f0a0e0a270 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index dba3b61b68..8026a68702 100644
+index de037b25f1..f8197a22bc 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: release representor interrupt handler' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (84 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix send to kernel action resources release' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'common/mlx5: release unused mempool entries' " Kevin Traynor
` (10 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Roi Dayan; +Cc: 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/71e944dbf5c9a79ff162c6e5105216c612b089b9
Thanks.
Kevin
---
From 71e944dbf5c9a79ff162c6e5105216c612b089b9 Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Wed, 12 Nov 2025 09:40:15 +0200
Subject: [PATCH] net/mlx5: release representor interrupt handler
[ upstream commit dbaed15366cb9aa66d7e0a580462a042ecfb602f ]
The cited commit removed the representor interrupt
handler cleanup by mistake.
Fixes: 5cf0707fc7e9 ("net/mlx5: remove Rx queue data list from device")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 981af06fc0..3c45643464 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2376,4 +2376,9 @@ mlx5_dev_close(struct rte_eth_dev *dev)
mlx5_flex_parser_ecpri_release(dev);
mlx5_flex_item_port_cleanup(dev);
+ if (priv->representor) {
+ /* Each representor has a dedicated interrupts handler */
+ rte_intr_instance_free(dev->intr_handle);
+ dev->intr_handle = NULL;
+ }
mlx5_indirect_list_handles_release(dev);
#ifdef HAVE_MLX5_HWS_SUPPORT
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.261690295 +0000
+++ 0087-net-mlx5-release-representor-interrupt-handler.patch 2025-11-21 11:05:09.590201711 +0000
@@ -1 +1 @@
-From dbaed15366cb9aa66d7e0a580462a042ecfb602f Mon Sep 17 00:00:00 2001
+From 71e944dbf5c9a79ff162c6e5105216c612b089b9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dbaed15366cb9aa66d7e0a580462a042ecfb602f ]
+
@@ -18 +20 @@
-index d39319efd1..1d07ca4293 100644
+index 981af06fc0..3c45643464 100644
@@ -21 +23 @@
-@@ -2444,4 +2444,9 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2376,4 +2376,9 @@ mlx5_dev_close(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'common/mlx5: release unused mempool entries' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (85 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: release representor interrupt handler' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Kevin Traynor
` (9 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Roi Dayan; +Cc: Gregory Etelson, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/94afc380af73f6b0f05f430dd07a06be6cfedb10
Thanks.
Kevin
---
From 94afc380af73f6b0f05f430dd07a06be6cfedb10 Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Wed, 12 Nov 2025 09:41:31 +0200
Subject: [PATCH] common/mlx5: release unused mempool entries
[ upstream commit aef94343d3d0b7e11071747f0d2fd66546d7b724 ]
When creating a new mempool but assigning a shared entries
from a different mempool need to release the newly unused
allocated entries. Fix it.
Fixes: 8947eebc999e ("common/mlx5: fix shared memory region ranges allocation")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/common/mlx5/mlx5_common_mr.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/common/mlx5/mlx5_common_mr.c b/drivers/common/mlx5/mlx5_common_mr.c
index 50922ad398..177255f308 100644
--- a/drivers/common/mlx5/mlx5_common_mr.c
+++ b/drivers/common/mlx5/mlx5_common_mr.c
@@ -1711,4 +1711,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
*/
if (share_hugepage) {
+ struct mlx5_mempool_mr *gc_mrs = NULL;
+
rte_rwlock_write_lock(&share_cache->rwlock);
LIST_FOREACH(mpr, &share_cache->mempool_reg_list, next) {
@@ -1717,4 +1719,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
}
if (mpr != NULL) {
+ /* Releasing MRs here can create a dead-lock on share_cache->rwlock */
+ gc_mrs = new_mpr->mrs;
new_mpr->mrs = mpr->mrs;
mlx5_mempool_reg_attach(new_mpr);
@@ -1723,4 +1727,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
}
rte_rwlock_write_unlock(&share_cache->rwlock);
+ if (gc_mrs != NULL)
+ mlx5_free(gc_mrs);
if (mpr != NULL) {
DRV_LOG(DEBUG, "Shared MR %#x in PD %p for mempool %s with mempool %s",
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.289339217 +0000
+++ 0088-common-mlx5-release-unused-mempool-entries.patch 2025-11-21 11:05:09.591201715 +0000
@@ -1 +1 @@
-From aef94343d3d0b7e11071747f0d2fd66546d7b724 Mon Sep 17 00:00:00 2001
+From 94afc380af73f6b0f05f430dd07a06be6cfedb10 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit aef94343d3d0b7e11071747f0d2fd66546d7b724 ]
+
@@ -20 +22 @@
-index c41ffff2d5..8ed988dec9 100644
+index 50922ad398..177255f308 100644
@@ -23 +25 @@
-@@ -1718,4 +1718,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
+@@ -1711,4 +1711,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
@@ -30 +32 @@
-@@ -1724,4 +1726,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
+@@ -1717,4 +1719,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
@@ -37 +39 @@
-@@ -1730,4 +1734,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
+@@ -1723,4 +1727,6 @@ mlx5_mr_mempool_register_primary(struct mlx5_mr_share_cache *share_cache,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5/hws: fix buddy memory allocation' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (86 preceding siblings ...)
2025-11-21 11:21 ` patch 'common/mlx5: release unused mempool entries' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix uninitialized variable' " Kevin Traynor
` (8 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Nupur Uttarwar; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c9894fd65cd95d579cc0c6f98910d49644149b8a
Thanks.
Kevin
---
From c9894fd65cd95d579cc0c6f98910d49644149b8a Mon Sep 17 00:00:00 2001
From: Nupur Uttarwar <nuttarwar@nvidia.com>
Date: Wed, 12 Nov 2025 09:47:39 +0200
Subject: [PATCH] net/mlx5/hws: fix buddy memory allocation
[ upstream commit 8d1fe10768d2749d00ceb7124866c61d31164380 ]
`buddy` was erroroneously declared as static. When multiple
threads call this routine, they set the same static variable
corrupting pool data and can cause potential double free when
releasing resources.
Fixes: b4dd7bcb0dcb ("net/mlx5/hws: add pool and buddy")
Signed-off-by: Nupur Uttarwar <nuttarwar@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/hws/mlx5dr_buddy.c | 1 +
drivers/net/mlx5/hws/mlx5dr_pool.c | 3 +--
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 228bd1af42..723b168e04 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1135,4 +1135,5 @@ Nobuhiro Miki <nmiki@yahoo-corp.jp>
Norbert Ciosek <norbertx.ciosek@intel.com>
Norbert Zulinski <norbertx.zulinski@intel.com>
+Nupur Uttarwar <nuttarwar@nvidia.com>
Odi Assli <odia@nvidia.com>
Ofer Dagan <ofer.d@claroty.com>
diff --git a/drivers/net/mlx5/hws/mlx5dr_buddy.c b/drivers/net/mlx5/hws/mlx5dr_buddy.c
index 394ca71217..abfbdf1be5 100644
--- a/drivers/net/mlx5/hws/mlx5dr_buddy.c
+++ b/drivers/net/mlx5/hws/mlx5dr_buddy.c
@@ -148,4 +148,5 @@ void mlx5dr_buddy_cleanup(struct mlx5dr_buddy_mem *buddy)
simple_free(buddy->num_free);
simple_free(buddy->bits);
+ simple_free(buddy);
}
diff --git a/drivers/net/mlx5/hws/mlx5dr_pool.c b/drivers/net/mlx5/hws/mlx5dr_pool.c
index b7b532c7cf..a99182e0ca 100644
--- a/drivers/net/mlx5/hws/mlx5dr_pool.c
+++ b/drivers/net/mlx5/hws/mlx5dr_pool.c
@@ -168,5 +168,5 @@ mlx5dr_pool_buddy_get_next_buddy(struct mlx5dr_pool *pool, int idx,
uint32_t order, bool *is_new_buddy)
{
- static struct mlx5dr_buddy_mem *buddy;
+ struct mlx5dr_buddy_mem *buddy;
uint32_t new_buddy_size;
@@ -272,5 +272,4 @@ static void mlx5dr_pool_buddy_db_uninit(struct mlx5dr_pool *pool)
if (buddy) {
mlx5dr_buddy_cleanup(buddy);
- simple_free(buddy);
pool->db.buddy_manager->buddies[i] = NULL;
}
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.319143856 +0000
+++ 0089-net-mlx5-hws-fix-buddy-memory-allocation.patch 2025-11-21 11:05:09.593201724 +0000
@@ -1 +1 @@
-From 8d1fe10768d2749d00ceb7124866c61d31164380 Mon Sep 17 00:00:00 2001
+From c9894fd65cd95d579cc0c6f98910d49644149b8a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8d1fe10768d2749d00ceb7124866c61d31164380 ]
+
@@ -22 +24 @@
-index f9c5622e5d..efc66fd48c 100644
+index 228bd1af42..723b168e04 100644
@@ -25 +27 @@
-@@ -1181,4 +1181,5 @@ Nobuhiro Miki <nmiki@yahoo-corp.jp>
+@@ -1135,4 +1135,5 @@ Nobuhiro Miki <nmiki@yahoo-corp.jp>
@@ -42 +44 @@
-index 8e3718ac42..e383027d3e 100644
+index b7b532c7cf..a99182e0ca 100644
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix uninitialized variable' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (87 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Kevin Traynor
` (7 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4a531c127f89720480afb3daf869e09028376d9e
Thanks.
Kevin
---
From 4a531c127f89720480afb3daf869e09028376d9e Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Fri, 14 Nov 2025 09:49:12 -0800
Subject: [PATCH] net/mlx5: fix uninitialized variable
[ upstream commit 7429374afba9827a43cf2efabce14e27ccc4bdef ]
Gcc-16 detects use of uninitialized variable.
If the retry loop exits the code would do memcmp against uninitialized
stack value. Resolve by initializing to zero.
Bugzilla ID: 1823
Fixes: 1256805dd54d ("net/mlx5: move Linux-specific functions")
Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to complete")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Raslan Darawsheh <rasland@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index a5dda1e5f1..5235066e35 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -512,5 +512,5 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
{
int ret;
- struct rte_eth_link dev_link;
+ struct rte_eth_link dev_link = { 0 };
time_t start_time = time(NULL);
int retry = MLX5_GET_LINK_STATUS_RETRY_COUNT;
@@ -1966,3 +1966,2 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
return 0;
}
-
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.347261206 +0000
+++ 0090-net-mlx5-fix-uninitialized-variable.patch 2025-11-21 11:05:09.594201728 +0000
@@ -1 +1 @@
-From 7429374afba9827a43cf2efabce14e27ccc4bdef Mon Sep 17 00:00:00 2001
+From 4a531c127f89720480afb3daf869e09028376d9e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7429374afba9827a43cf2efabce14e27ccc4bdef ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 4d8fbed188..50997c187c 100644
+index a5dda1e5f1..5235066e35 100644
@@ -25 +26 @@
-@@ -513,5 +513,5 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
+@@ -512,5 +512,5 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
@@ -32 +33 @@
-@@ -2074,3 +2074,2 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
+@@ -1966,3 +1966,2 @@ int mlx5_txpp_map_hca_bar(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix flow tag indexes support on root table' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (88 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix uninitialized variable' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Kevin Traynor
` (6 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Dariusz Sosnowski; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f51c87d86608c160d23b81c566e9b489837cacf5
Thanks.
Kevin
---
From f51c87d86608c160d23b81c566e9b489837cacf5 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 14 Nov 2025 21:17:20 +0100
Subject: [PATCH] net/mlx5: fix flow tag indexes support on root table
[ upstream commit 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f ]
Offending patch introduced support for additional flow tag indexes
with HW Steering flow engine. New tag indexes will be mapped
to HW registers REG_C_8 to REG_C_11, depending on HW capabilities.
That patch only handled tables created on group > 0 (non-root table),
where mlx5 PMD directly configures the HW.
Tables and flow rules on group 0 (root table) are handled through
kernel driver, and new registers were not addressed for that case.
Because of that, usage of unsupported tag index in group 0
triggered an assertion in flow_dv_match_meta_reg().
This patch adds necessary definitions for REG_C_8 to REG_C_11 to make
these registers usable for flow tag indexes in root table.
Validation of flow tag to HW register translation is also amended
to report invalid cases to the user, instead of relying on assertions.
Fixes: 7e3a14423c1a ("net/mlx5/hws: support 4 additional C registers")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/common/mlx5/mlx5_prm.h | 6 ++++-
drivers/net/mlx5/mlx5_flow.h | 3 ++-
drivers/net/mlx5/mlx5_flow_dv.c | 40 ++++++++++++++++++++++++++++-----
3 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index d24fd197ba..4f45b104ae 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -1203,5 +1203,9 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
u8 tunnel_header_2[0x20];
u8 tunnel_header_3[0x20];
- u8 reserved[0x100];
+ u8 reserved[0x80];
+ u8 metadata_reg_c_8[0x20];
+ u8 metadata_reg_c_9[0x20];
+ u8 metadata_reg_c_10[0x20];
+ u8 metadata_reg_c_11[0x20];
};
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 5f154add0d..bb11ad204e 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1785,5 +1785,6 @@ flow_hw_get_reg_id_by_domain(struct rte_eth_dev *dev,
if (id == RTE_PMD_MLX5_LINEAR_HASH_TAG_INDEX)
return REG_C_3;
- MLX5_ASSERT(id < MLX5_FLOW_HW_TAGS_MAX);
+ if (id >= MLX5_FLOW_HW_TAGS_MAX)
+ return REG_NON;
return reg->hw_avl_tags[id];
default:
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index c8b17c0f3a..3303fb2cbd 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -10553,6 +10553,6 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
uint32_t data, uint32_t mask)
{
- void *misc2_v =
- MLX5_ADDR_OF(fte_match_param, key, misc_parameters_2);
+ void *misc2_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters_2);
+ void *misc5_v = MLX5_ADDR_OF(fte_match_param, key, misc_parameters_5);
uint32_t temp;
@@ -10600,4 +10600,16 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
MLX5_SET(fte_match_set_misc2, misc2_v, metadata_reg_c_7, data);
break;
+ case REG_C_8:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_8, data);
+ break;
+ case REG_C_9:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_9, data);
+ break;
+ case REG_C_10:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_10, data);
+ break;
+ case REG_C_11:
+ MLX5_SET(fte_match_set_misc5, misc5_v, metadata_reg_c_11, data);
+ break;
default:
MLX5_ASSERT(false);
@@ -10818,6 +10830,9 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
* @param[in] key_type
* Set flow matcher mask or value.
+ *
+ * @return
+ * 0 on success. Negative errno value otherwise.
*/
-static void
+static int
flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
const struct rte_flow_item *item,
@@ -10831,5 +10846,5 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
if (MLX5_ITEM_VALID(item, key_type))
- return;
+ return 0;
MLX5_ITEM_UPDATE(item, key_type, tag_v, tag_m,
&rte_flow_item_tag_mask);
@@ -10841,6 +10856,16 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
else
reg = flow_hw_get_reg_id(dev, RTE_FLOW_ITEM_TYPE_TAG, index);
- MLX5_ASSERT(reg > 0);
+ if (reg < 0) {
+ DRV_LOG(ERR, "port %u tag index %u does not map to correct register",
+ dev->data->port_id, index);
+ return -EINVAL;
+ }
+ if (reg == REG_NON) {
+ DRV_LOG(ERR, "port %u tag index %u maps to unsupported register",
+ dev->data->port_id, index);
+ return -ENOTSUP;
+ }
flow_dv_match_meta_reg(key, (enum modify_reg)reg, tag_v->data, tag_m->data);
+ return 0;
}
@@ -14389,5 +14414,8 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
break;
case RTE_FLOW_ITEM_TYPE_TAG:
- flow_dv_translate_item_tag(dev, key, items, key_type);
+ ret = flow_dv_translate_item_tag(dev, key, items, key_type);
+ if (ret < 0)
+ return rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
+ "invalid flow tag item");
last_item = MLX5_FLOW_ITEM_TAG;
break;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.388516836 +0000
+++ 0091-net-mlx5-fix-flow-tag-indexes-support-on-root-table.patch 2025-11-21 11:05:09.610201796 +0000
@@ -1 +1 @@
-From 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f Mon Sep 17 00:00:00 2001
+From f51c87d86608c160d23b81c566e9b489837cacf5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3087db16ab13cdd6996b1f3ea8c64171c2e8fd8f ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -34 +35 @@
-index 6cde3f8f1a..9383e09893 100644
+index d24fd197ba..4f45b104ae 100644
@@ -37 +38 @@
-@@ -1206,5 +1206,9 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
+@@ -1203,5 +1203,9 @@ struct mlx5_ifc_fte_match_set_misc5_bits {
@@ -49 +50 @@
-index db408d7b38..8159008504 100644
+index 5f154add0d..bb11ad204e 100644
@@ -52 +53 @@
-@@ -1838,5 +1838,6 @@ flow_hw_get_reg_id_by_domain(struct rte_eth_dev *dev,
+@@ -1785,5 +1785,6 @@ flow_hw_get_reg_id_by_domain(struct rte_eth_dev *dev,
@@ -61 +62 @@
-index 83046418c4..47f6d28410 100644
+index c8b17c0f3a..3303fb2cbd 100644
@@ -64 +65 @@
-@@ -10555,6 +10555,6 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
+@@ -10553,6 +10553,6 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
@@ -73 +74 @@
-@@ -10602,4 +10602,16 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
+@@ -10600,4 +10600,16 @@ flow_dv_match_meta_reg(void *key, enum modify_reg reg_type,
@@ -90 +91 @@
-@@ -10820,6 +10832,9 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10818,6 +10830,9 @@ flow_dv_translate_mlx5_item_tag(struct rte_eth_dev *dev, void *key,
@@ -101 +102 @@
-@@ -10833,5 +10848,5 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10831,5 +10846,5 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
@@ -108 +109 @@
-@@ -10843,6 +10858,16 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
+@@ -10841,6 +10856,16 @@ flow_dv_translate_item_tag(struct rte_eth_dev *dev, void *key,
@@ -126 +127 @@
-@@ -14403,5 +14428,8 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
+@@ -14389,5 +14414,8 @@ flow_dv_translate_items(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5/hws: fix flow rule hash capability' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (89 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix null dereference in modify header' " Kevin Traynor
` (5 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Itamar Gozlan; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/8899362c43a2f24b8b4e37505a5e37ec589757ad
Thanks.
Kevin
---
From 8899362c43a2f24b8b4e37505a5e37ec589757ad Mon Sep 17 00:00:00 2001
From: Itamar Gozlan <igozlan@nvidia.com>
Date: Sun, 16 Nov 2025 13:59:25 +0200
Subject: [PATCH] net/mlx5/hws: fix flow rule hash capability
[ upstream commit 970309c7aa889ee06178c6476fe153e17096fc25 ]
Some cases are not supported for rule hash calculation. For example
when the matcher defined as FW matcher, or is the hash type is different
than CRC32. One case is when the distribute mode is not by hash, the
previous condition checked a wrong capability, while this commit fixes
it to the correct check.
Fixes: 7f5e6de53aae ("net/mlx5/hws: query flow rule hash")
Signed-off-by: Itamar Gozlan <igozlan@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_rule.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c
index 519328ccf3..099f4f7947 100644
--- a/drivers/net/mlx5/hws/mlx5dr_rule.c
+++ b/drivers/net/mlx5/hws/mlx5dr_rule.c
@@ -1072,5 +1072,5 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
if (mlx5dr_matcher_req_fw_wqe(matcher) ||
mlx5dr_table_is_root(matcher->tbl) ||
- matcher->tbl->ctx->caps->access_index_mode == MLX5DR_MATCHER_INSERT_BY_HASH ||
+ matcher->attr.distribute_mode != MLX5DR_MATCHER_DISTRIBUTE_BY_HASH ||
matcher->tbl->ctx->caps->flow_table_hash_type != MLX5_FLOW_TABLE_HASH_TYPE_CRC32) {
DR_LOG(DEBUG, "Matcher is not supported");
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.415345446 +0000
+++ 0092-net-mlx5-hws-fix-flow-rule-hash-capability.patch 2025-11-21 11:05:09.611165670 +0000
@@ -1 +1 @@
-From 970309c7aa889ee06178c6476fe153e17096fc25 Mon Sep 17 00:00:00 2001
+From 8899362c43a2f24b8b4e37505a5e37ec589757ad Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 970309c7aa889ee06178c6476fe153e17096fc25 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 878224d8b3..895ac858ec 100644
+index 519328ccf3..099f4f7947 100644
@@ -25 +26 @@
-@@ -1085,5 +1085,5 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
+@@ -1072,5 +1072,5 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher,
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix null dereference in modify header' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (90 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: skip Rx control flow tables in isolated mode' " Kevin Traynor
` (4 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/c484fbc1034dcbe6b127121839a84b5b16899ce0
Thanks.
Kevin
---
From c484fbc1034dcbe6b127121839a84b5b16899ce0 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Sun, 16 Nov 2025 14:10:26 +0200
Subject: [PATCH] net/mlx5: fix null dereference in modify header
[ upstream commit df19cf4aa720935a31edcb2954a88cfd038880e6 ]
GCC analyzer identified a code path where acts->mhdr could be
NULL when dereferenced.
When modify header validation fails in mlx5_tbl_translate_modify_header(),
__flow_hw_action_template_destroy() sets acts->mhdr to NULL.
Add defensive NULL check in mlx5_tbl_ensure_shared_modify_header()
to prevent the dereference.
Bugzilla ID: 1521
Fixes: 12f2ed3f03c8 ("net/mlx5: set modify header as shared flow action")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index e4a67a0c1a..11ea9ae152 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2303,7 +2303,8 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev,
};
- if (flow_hw_validate_compiled_modify_field(dev, cfg, mhdr, error)) {
+ int ret = flow_hw_validate_compiled_modify_field(dev, cfg, mhdr, error);
+ if (ret) {
__flow_hw_action_template_destroy(dev, acts);
- return -rte_errno;
+ return ret;
}
acts->mhdr = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*acts->mhdr),
@@ -2336,7 +2337,12 @@ mlx5_tbl_ensure_shared_modify_header(struct rte_eth_dev *dev,
const struct rte_flow_attr *attr = &table_attr->flow_attr;
enum mlx5dr_table_type tbl_type = get_mlx5dr_table_type(attr);
- struct mlx5dr_action_mh_pattern pattern = {
- .sz = sizeof(struct mlx5_modification_cmd) * acts->mhdr->mhdr_cmds_num
- };
+ struct mlx5dr_action_mh_pattern pattern;
+
+ if (!acts->mhdr)
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+ "translate modify_header: mhdr is NULL");
+
+ pattern.sz = sizeof(struct mlx5_modification_cmd) * acts->mhdr->mhdr_cmds_num;
uint16_t mhdr_ix = acts->mhdr->pos;
uint32_t flags = mlx5_hw_act_flag[!!attr->group][tbl_type] | MLX5DR_ACTION_FLAG_SHARED;
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.452936311 +0000
+++ 0093-net-mlx5-fix-null-dereference-in-modify-header.patch 2025-11-21 11:05:09.619201835 +0000
@@ -1 +1 @@
-From df19cf4aa720935a31edcb2954a88cfd038880e6 Mon Sep 17 00:00:00 2001
+From c484fbc1034dcbe6b127121839a84b5b16899ce0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit df19cf4aa720935a31edcb2954a88cfd038880e6 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 3b015ec9a0..2695d047c7 100644
+index e4a67a0c1a..11ea9ae152 100644
@@ -27 +28 @@
-@@ -2337,7 +2337,8 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev,
+@@ -2303,7 +2303,8 @@ mlx5_tbl_translate_modify_header(struct rte_eth_dev *dev,
@@ -38,3 +39,3 @@
-@@ -2372,7 +2373,12 @@ mlx5_tbl_ensure_shared_modify_header(struct rte_eth_dev *dev,
- enum mlx5dr_table_type tbl_type = get_mlx5dr_table_type(attr, table_attr->specialize,
- unified_fdb);
+@@ -2336,7 +2337,12 @@ mlx5_tbl_ensure_shared_modify_header(struct rte_eth_dev *dev,
+ const struct rte_flow_attr *attr = &table_attr->flow_attr;
+ enum mlx5dr_table_type tbl_type = get_mlx5dr_table_type(attr);
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: skip Rx control flow tables in isolated mode' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (91 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix null dereference in modify header' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix crash on flow rule destruction' " Kevin Traynor
` (3 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Nupur Uttarwar; +Cc: Bing Zhao, 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/d288d0f9a1919f6c676573408bdbec9115102b03
Thanks.
Kevin
---
From d288d0f9a1919f6c676573408bdbec9115102b03 Mon Sep 17 00:00:00 2001
From: Nupur Uttarwar <nuttarwar@nvidia.com>
Date: Mon, 17 Nov 2025 07:05:57 +0200
Subject: [PATCH] net/mlx5: skip Rx control flow tables in isolated mode
[ upstream commit 327682174e1a282c1351c83aacd2b9e8f8d352f2 ]
If flow isolation is enabled, then skip flow_hw_create_ctrl_rx_tables
because these are not used with flow isolation. This is used to save
the unneeded resource allocation and also speed up the device startup
time.
Fixes: 9fa7c1cddb85 ("net/mlx5: create control flow rules with HWS")
Signed-off-by: Nupur Uttarwar <nuttarwar@nvidia.com>
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 2 ++
drivers/net/mlx5/mlx5_flow_hw.c | 17 ++++-------------
drivers/net/mlx5/mlx5_trigger.c | 14 +++++++++++++-
3 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index bb11ad204e..ee6ad206b8 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -2998,4 +2998,6 @@ struct mlx5_flow_hw_ctrl_fdb {
int mlx5_flow_hw_ctrl_flows(struct rte_eth_dev *dev, uint32_t flags);
+int mlx5_flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev);
+void mlx5_flow_hw_cleanup_ctrl_rx_tables(struct rte_eth_dev *dev);
/** Create a control flow rule for matching unicast DMAC with VLAN (Verbs and DV). */
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 11ea9ae152..9bd237b82a 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -10990,6 +10990,6 @@ flow_hw_create_vlan(struct rte_eth_dev *dev)
}
-static void
-flow_hw_cleanup_ctrl_rx_tables(struct rte_eth_dev *dev)
+void
+mlx5_flow_hw_cleanup_ctrl_rx_tables(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
@@ -11276,6 +11276,6 @@ flow_hw_create_ctrl_rx_pattern_template
}
-static int
-flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev)
+int
+mlx5_flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
@@ -11313,6 +11313,4 @@ flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev)
err:
ret = rte_errno;
- flow_hw_cleanup_ctrl_rx_tables(dev);
- rte_errno = ret;
return -ret;
}
@@ -11508,5 +11506,4 @@ __flow_hw_resource_release(struct rte_eth_dev *dev, bool ctx_close)
flow_hw_cleanup_ctrl_fdb_tables(dev);
flow_hw_cleanup_tx_repr_tagging(dev);
- flow_hw_cleanup_ctrl_rx_tables(dev);
flow_hw_action_template_drop_release(dev);
grp = LIST_FIRST(&priv->flow_hw_grp);
@@ -11865,10 +11862,4 @@ __flow_hw_configure(struct rte_eth_dev *dev,
if (ret)
goto err;
- ret = flow_hw_create_ctrl_rx_tables(dev);
- if (ret) {
- rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
- "Failed to set up Rx control flow templates");
- goto err;
- }
/* Initialize quotas */
if (port_attr->nb_quotas || (host_priv && host_priv->quota_ctx.devx_obj)) {
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index e2a94ca14c..dbb34ee2f2 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1539,4 +1539,10 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
if (priv->isolated)
return 0;
+ ret = mlx5_flow_hw_create_ctrl_rx_tables(dev);
+ if (ret) {
+ DRV_LOG(ERR, "Failed to set up Rx control flow templates for port %u, %d",
+ dev->data->port_id, -ret);
+ goto error;
+ }
if (dev->data->promiscuous)
flags |= MLX5_CTRL_PROMISCUOUS;
@@ -1552,4 +1558,5 @@ error:
ret = rte_errno;
mlx5_flow_hw_flush_ctrl_flows(dev);
+ mlx5_flow_hw_cleanup_ctrl_rx_tables(dev);
rte_errno = ret;
return -rte_errno;
@@ -1786,6 +1793,11 @@ mlx5_traffic_disable(struct rte_eth_dev *dev)
struct mlx5_priv *priv = dev->data->dev_private;
- if (priv->sh->config.dv_flow_en == 2)
+ if (priv->sh->config.dv_flow_en == 2) {
+ /* Device started flag was cleared before, this is used to derefer the Rx queues. */
+ priv->hws_rule_flushing = true;
mlx5_flow_hw_flush_ctrl_flows(dev);
+ mlx5_flow_hw_cleanup_ctrl_rx_tables(dev);
+ priv->hws_rule_flushing = false;
+ }
else
#endif
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.494490215 +0000
+++ 0094-net-mlx5-skip-Rx-control-flow-tables-in-isolated-mod.patch 2025-11-21 11:05:09.631201886 +0000
@@ -1 +1 @@
-From 327682174e1a282c1351c83aacd2b9e8f8d352f2 Mon Sep 17 00:00:00 2001
+From d288d0f9a1919f6c676573408bdbec9115102b03 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 327682174e1a282c1351c83aacd2b9e8f8d352f2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 8159008504..d7c9d4d0ea 100644
+index bb11ad204e..ee6ad206b8 100644
@@ -27 +28 @@
-@@ -3055,4 +3055,6 @@ struct mlx5_flow_hw_ctrl_nic {
+@@ -2998,4 +2998,6 @@ struct mlx5_flow_hw_ctrl_fdb {
@@ -35 +36 @@
-index 2695d047c7..c60f836de4 100644
+index 11ea9ae152..9bd237b82a 100644
@@ -38 +39 @@
-@@ -11184,6 +11184,6 @@ flow_hw_create_vlan(struct rte_eth_dev *dev)
+@@ -10990,6 +10990,6 @@ flow_hw_create_vlan(struct rte_eth_dev *dev)
@@ -47 +48 @@
-@@ -11470,6 +11470,6 @@ flow_hw_create_ctrl_rx_pattern_template
+@@ -11276,6 +11276,6 @@ flow_hw_create_ctrl_rx_pattern_template
@@ -56 +57 @@
-@@ -11507,6 +11507,4 @@ flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev)
+@@ -11313,6 +11313,4 @@ flow_hw_create_ctrl_rx_tables(struct rte_eth_dev *dev)
@@ -63,2 +64,2 @@
-@@ -11707,5 +11705,4 @@ __flow_hw_resource_release(struct rte_eth_dev *dev, bool ctx_close)
- flow_hw_cleanup_ctrl_nic_tables(dev);
+@@ -11508,5 +11506,4 @@ __flow_hw_resource_release(struct rte_eth_dev *dev, bool ctx_close)
+ flow_hw_cleanup_ctrl_fdb_tables(dev);
@@ -69 +70 @@
-@@ -12065,10 +12062,4 @@ __flow_hw_configure(struct rte_eth_dev *dev,
+@@ -11865,10 +11862,4 @@ __flow_hw_configure(struct rte_eth_dev *dev,
@@ -81 +82 @@
-index 9aa36ae9a8..028844e45d 100644
+index e2a94ca14c..dbb34ee2f2 100644
@@ -84 +85 @@
-@@ -1677,4 +1677,10 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
+@@ -1539,4 +1539,10 @@ mlx5_traffic_enable_hws(struct rte_eth_dev *dev)
@@ -95 +96 @@
-@@ -1690,4 +1696,5 @@ error:
+@@ -1552,4 +1558,5 @@ error:
@@ -101 +102 @@
-@@ -1930,6 +1937,11 @@ mlx5_traffic_disable(struct rte_eth_dev *dev)
+@@ -1786,6 +1793,11 @@ mlx5_traffic_disable(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: fix crash on flow rule destruction' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (92 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: skip Rx control flow tables in isolated mode' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: move auxiliary data inline' " Kevin Traynor
` (2 subsequent siblings)
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc
Thanks.
Kevin
---
From f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Mon, 17 Nov 2025 09:15:36 +0200
Subject: [PATCH] net/mlx5: fix crash on flow rule destruction
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit ad7db900a05397773b812e76655918086b07ab36 ]
The mlx5_ipool_free() function was called with a NULL pool pointer
during HW flow destruction, causing a segmentation fault. This occurred
when flow creation failed and the cleanup path attempted to free
resources from an uninitialized flow pool.
The crash happened in the following scenario:
1. During device start, a default NTA copy action flow is created
2. If the flow creation fails, mlx5_flow_hw_list_destroy() is called
3. In hw_cmpl_flow_update_or_destroy(), table->flow pool could be NULL
4. mlx5_ipool_free(table->flow, flow->idx) was called without checking
if table->flow is NULL
5. Inside mlx5_ipool_free(), accessing pool->cfg.per_core_cache caused
a segmentation fault due to NULL pointer dereference
The fix adds two layers of protection,
1. Add NULL check for table->flow before calling mlx5_ipool_free() in
hw_cmpl_flow_update_or_destroy(), consistent with the existing check
for table->resource on the previous line
2. Add NULL check for pool parameter in mlx5_ipool_free() as a defensive
measure to prevent similar crashes in other code paths
The fix also renames the ‘flow’ field in rte_flow_template_table
to ‘flow_pool’ for better code readability.
Stack trace of the fault:
mlx5_ipool_free (pool=0x0) at mlx5_utils.c:753
hw_cmpl_flow_update_or_destroy at mlx5_flow_hw.c:4481
mlx5_flow_hw_destroy at mlx5_flow_hw.c:14219
mlx5_flow_hw_list_destroy at mlx5_flow_hw.c:14279
flow_hw_list_create at mlx5_flow_hw.c:14415
mlx5_flow_start_default at mlx5_flow.c:8263
mlx5_dev_start at mlx5_trigger.c:1420
Fixes: 27d171b88031 ("net/mlx5: abstract flow action and enable reconfigure")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 2 +-
drivers/net/mlx5/mlx5_flow_hw.c | 25 +++++++++++++------------
drivers/net/mlx5/mlx5_utils.c | 2 +-
3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index ee6ad206b8..264d4ad60f 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1702,5 +1702,5 @@ struct rte_flow_template_table {
/* Action templates bind to the table. */
struct mlx5_hw_action_template ats[MLX5_HW_TBL_MAX_ACTION_TEMPLATE];
- struct mlx5_indexed_pool *flow; /* The table's flow ipool. */
+ struct mlx5_indexed_pool *flow_pool; /* The table's flow ipool. */
struct rte_flow_hw_aux *flow_aux; /**< Auxiliary data stored per flow. */
struct mlx5_indexed_pool *resource; /* The table's resource ipool. */
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 9bd237b82a..a1274c93f8 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3918,5 +3918,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
return NULL;
}
- flow = mlx5_ipool_malloc(table->flow, &flow_idx);
+ flow = mlx5_ipool_malloc(table->flow_pool, &flow_idx);
if (!flow) {
rte_errno = ENOMEM;
@@ -4007,5 +4007,5 @@ error:
mlx5_ipool_free(table->resource, res_idx);
if (flow_idx)
- mlx5_ipool_free(table->flow, flow_idx);
+ mlx5_ipool_free(table->flow_pool, flow_idx);
if (sub_error.cause != RTE_FLOW_ERROR_TYPE_NONE && error != NULL)
*error = sub_error;
@@ -4457,5 +4457,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
if (table->resource)
mlx5_ipool_free(table->resource, res_idx);
- mlx5_ipool_free(table->flow, flow->idx);
+ if (table->flow_pool)
+ mlx5_ipool_free(table->flow_pool, flow->idx);
}
}
@@ -4745,5 +4746,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
if (!tbl->cfg.external)
continue;
- MLX5_IPOOL_FOREACH(tbl->flow, fidx, flow) {
+ MLX5_IPOOL_FOREACH(tbl->flow_pool, fidx, flow) {
if (flow_hw_async_flow_destroy(dev,
MLX5_DEFAULT_FLUSH_QUEUE,
@@ -5051,6 +5052,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
tbl->cfg = *table_cfg;
/* Allocate flow indexed pool. */
- tbl->flow = mlx5_ipool_create(&cfg);
- if (!tbl->flow)
+ tbl->flow_pool = mlx5_ipool_create(&cfg);
+ if (!tbl->flow_pool)
goto error;
/* Allocate table of auxiliary flow rule structs. */
@@ -5200,6 +5201,6 @@ error:
if (tbl->flow_aux)
mlx5_free(tbl->flow_aux);
- if (tbl->flow)
- mlx5_ipool_destroy(tbl->flow);
+ if (tbl->flow_pool)
+ mlx5_ipool_destroy(tbl->flow_pool);
mlx5_free(tbl);
}
@@ -5422,8 +5423,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
if (table->resource)
mlx5_ipool_flush_cache(table->resource);
- mlx5_ipool_flush_cache(table->flow);
+ mlx5_ipool_flush_cache(table->flow_pool);
/* Check if ipool has allocated objects. */
if (table->refcnt ||
- mlx5_ipool_get_next(table->flow, &fidx) ||
+ mlx5_ipool_get_next(table->flow_pool, &fidx) ||
(table->resource && mlx5_ipool_get_next(table->resource, &ridx))) {
DRV_LOG(WARNING, "Table %p is still in use.", (void *)table);
@@ -5455,5 +5456,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
mlx5_ipool_destroy(table->resource);
mlx5_free(table->flow_aux);
- mlx5_ipool_destroy(table->flow);
+ mlx5_ipool_destroy(table->flow_pool);
mlx5_free(table);
return 0;
@@ -14937,5 +14938,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
table, "shrinking table is not supported");
- ret = mlx5_ipool_resize(table->flow, nb_flows, error);
+ ret = mlx5_ipool_resize(table->flow_pool, nb_flows, error);
if (ret)
return ret;
diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c
index d882af6047..a6db03fcc4 100644
--- a/drivers/net/mlx5/mlx5_utils.c
+++ b/drivers/net/mlx5/mlx5_utils.c
@@ -588,5 +588,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)
uint32_t entry_idx;
- if (!idx)
+ if (!pool || !idx)
return;
if (pool->cfg.per_core_cache) {
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.537156034 +0000
+++ 0095-net-mlx5-fix-crash-on-flow-rule-destruction.patch 2025-11-21 11:05:09.643201937 +0000
@@ -1 +1 @@
-From ad7db900a05397773b812e76655918086b07ab36 Mon Sep 17 00:00:00 2001
+From f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit ad7db900a05397773b812e76655918086b07ab36 ]
+
@@ -43 +44,0 @@
-Cc: stable@dpdk.org
@@ -54 +55 @@
-index d7c9d4d0ea..218b55d536 100644
+index ee6ad206b8..264d4ad60f 100644
@@ -57 +58 @@
-@@ -1745,5 +1745,5 @@ struct rte_flow_template_table {
+@@ -1702,5 +1702,5 @@ struct rte_flow_template_table {
@@ -65 +66 @@
-index c60f836de4..f8995b53cc 100644
+index 9bd237b82a..a1274c93f8 100644
@@ -68 +69 @@
-@@ -3959,5 +3959,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
+@@ -3918,5 +3918,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
@@ -75 +76 @@
-@@ -4049,5 +4049,5 @@ error:
+@@ -4007,5 +4007,5 @@ error:
@@ -82 +83 @@
-@@ -4499,5 +4499,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
+@@ -4457,5 +4457,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
@@ -90 +91 @@
-@@ -4787,5 +4788,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
+@@ -4745,5 +4746,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
@@ -97 +98 @@
-@@ -5109,6 +5110,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
+@@ -5051,6 +5052,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
@@ -106 +107 @@
-@@ -5265,6 +5266,6 @@ error:
+@@ -5200,6 +5201,6 @@ error:
@@ -115 +116 @@
-@@ -5496,8 +5497,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
+@@ -5422,8 +5423,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
@@ -126 +127 @@
-@@ -5529,5 +5530,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
+@@ -5455,5 +5456,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
@@ -133 +134 @@
-@@ -15228,5 +15229,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
+@@ -14937,5 +14938,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
@@ -141 +142 @@
-index cba8cc3f49..defcf80dd7 100644
+index d882af6047..a6db03fcc4 100644
@@ -144 +145 @@
-@@ -749,5 +749,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)
+@@ -588,5 +588,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5: move auxiliary data inline' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (93 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: fix crash on flow rule destruction' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Kevin Traynor
2025-11-21 11:21 ` patch 'net: fix IPv6 link local compliance with RFC 4291' " Kevin Traynor
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Bing Zhao; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bd5f07d5b29c0ab37ad695cddfcce9595e4f9ec5
Thanks.
Kevin
---
From bd5f07d5b29c0ab37ad695cddfcce9595e4f9ec5 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Mon, 17 Nov 2025 09:27:52 +0200
Subject: [PATCH] net/mlx5: move auxiliary data inline
[ upstream commit aff44ada9abc5831601e7dad5d48d9c6b5493f2d ]
Since auxiliary structure is associated with per rule, it can be
allocated in the same ipool allocation to save the extra overhead
of the *alloc header and the unneeded CPU cycles.
Fixes: 27d171b88031 ("net/mlx5: abstract flow action and enable reconfigure")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 7 ++++---
drivers/net/mlx5/mlx5_flow_hw.c | 9 ++++-----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index f8197a22bc..5e07db199e 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1645,6 +1645,5 @@ err_secondary:
mlx5_link_update(eth_dev, 0);
/* Watch LSC interrupts between port probe and port start. */
- priv->sh->port[priv->dev_port - 1].nl_ih_port_id =
- eth_dev->data->port_id;
+ priv->sh->port[priv->dev_port - 1].nl_ih_port_id = eth_dev->data->port_id;
mlx5_set_link_up(eth_dev);
for (i = 0; i < MLX5_FLOW_TYPE_MAXI; i++) {
@@ -1653,6 +1652,8 @@ err_secondary:
icfg[i].per_core_cache = 0;
#ifdef HAVE_MLX5_HWS_SUPPORT
- if (priv->sh->config.dv_flow_en == 2)
+ if (priv->sh->config.dv_flow_en == 2) {
icfg[i].size = sizeof(struct rte_flow_hw) + sizeof(struct rte_flow_nt2hws);
+ icfg[i].size += sizeof(struct rte_flow_hw_aux);
+ }
#endif
priv->flows[i] = mlx5_ipool_create(&icfg[i]);
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index a1274c93f8..14e9f21e24 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -13269,6 +13269,7 @@ static int flow_hw_prepare(struct rte_eth_dev *dev,
((uintptr_t)(*flow) + sizeof(struct rte_flow_hw));
(*flow)->idx = idx;
- (*flow)->nt2hws->flow_aux = mlx5_malloc(MLX5_MEM_ZERO, sizeof(struct rte_flow_hw_aux),
- RTE_CACHE_LINE_SIZE, rte_dev_numa_node(dev->device));
+ (*flow)->nt2hws->flow_aux = (struct rte_flow_hw_aux *)
+ ((uintptr_t)((*flow)->nt2hws) + sizeof(struct rte_flow_nt2hws));
+
if (!(*flow)->nt2hws->flow_aux)
return rte_flow_error_set(error, ENOMEM,
@@ -13900,8 +13901,6 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
* , same as for DV.
*/
- if (flow->nt2hws->flow_aux) {
- mlx5_free(flow->nt2hws->flow_aux);
+ if (flow->nt2hws->flow_aux)
flow->nt2hws->flow_aux = NULL;
- }
if (flow->nt2hws->rix_encap_decap) {
flow_encap_decap_resource_release(dev, flow->nt2hws->rix_encap_decap);
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.574423317 +0000
+++ 0096-net-mlx5-move-auxiliary-data-inline.patch 2025-11-21 11:05:09.654201984 +0000
@@ -1 +1 @@
-From aff44ada9abc5831601e7dad5d48d9c6b5493f2d Mon Sep 17 00:00:00 2001
+From bd5f07d5b29c0ab37ad695cddfcce9595e4f9ec5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit aff44ada9abc5831601e7dad5d48d9c6b5493f2d ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index e642e2664e..7f73183bb1 100644
+index f8197a22bc..5e07db199e 100644
@@ -24 +25 @@
-@@ -1644,6 +1644,5 @@ err_secondary:
+@@ -1645,6 +1645,5 @@ err_secondary:
@@ -32 +33 @@
-@@ -1652,6 +1651,8 @@ err_secondary:
+@@ -1653,6 +1652,8 @@ err_secondary:
@@ -43 +44 @@
-index f8995b53cc..c41b99746f 100644
+index a1274c93f8..14e9f21e24 100644
@@ -46 +47 @@
-@@ -13501,6 +13501,7 @@ static int flow_hw_prepare(struct rte_eth_dev *dev,
+@@ -13269,6 +13269,7 @@ static int flow_hw_prepare(struct rte_eth_dev *dev,
@@ -56 +57 @@
-@@ -14153,8 +14154,6 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
+@@ -13900,8 +13901,6 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow)
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net/mlx5/windows: fix match criteria in flow creation' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (94 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5: move auxiliary data inline' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
2025-11-21 11:21 ` patch 'net: fix IPv6 link local compliance with RFC 4291' " Kevin Traynor
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Itai Sharoni; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/21276ae4916a85e3b14c88cbd57b3b4283ccf16b
Thanks.
Kevin
---
From 21276ae4916a85e3b14c88cbd57b3b4283ccf16b Mon Sep 17 00:00:00 2001
From: Itai Sharoni <isharoni@nvidia.com>
Date: Mon, 17 Nov 2025 10:45:00 +0200
Subject: [PATCH] net/mlx5/windows: fix match criteria in flow creation
[ upstream commit e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 ]
Currently the Windows implementation hardcodes match criteria to
MLX5_MATCH_OUTER_HEADERS when creating flow rules, which prevents
matching on inner headers and other criteria types like NVGRE.
The fix uses the matcher's match_criteria_enable attribute instead
of hardcoding OUTER_HEADERS, and moves the assignment outside the
action switch block to apply to all cases.
NVGRE item type is also added to the supported items list.
Fixes: 1d194496b9d1 ("net/mlx5: create flow rule on Windows")
Signed-off-by: Itai Sharoni <isharoni@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/windows/mlx5_flow_os.c | 4 ++--
drivers/net/mlx5/windows/mlx5_flow_os.h | 1 +
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 723b168e04..f48a6a0462 100644
--- a/.mailmap
+++ b/.mailmap
@@ -612,4 +612,5 @@ Ilyes Ben Hamouda <ilyes.ben_hamouda@6wind.com>
Intiyaz Basha <intiyaz.basha@caviumnetworks.com>
Isaac Boukris <iboukris@gmail.com>
+Itai Sharoni <isharoni@nvidia.com>
Itamar Gozlan <igozlan@nvidia.com>
Itsuro Oda <oda@valinux.co.jp>
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.c b/drivers/net/mlx5/windows/mlx5_flow_os.c
index 7a625fb880..15c6fc5613 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.c
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.c
@@ -220,7 +220,7 @@ mlx5_flow_os_create_flow(void *matcher, void *match_value,
break;
}
- MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
- MLX5_MATCH_OUTER_HEADERS);
}
+ MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
+ mlx5_matcher->attr.match_criteria_enable);
*flow = mlx5_glue->devx_fs_rule_add(mlx5_matcher->ctx, in, sizeof(in));
return (*flow) ? 0 : -1;
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.h b/drivers/net/mlx5/windows/mlx5_flow_os.h
index 2cd4e95325..c087bca4be 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.h
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.h
@@ -48,4 +48,5 @@ mlx5_flow_os_item_supported(int item)
case RTE_FLOW_ITEM_TYPE_VLAN:
case RTE_FLOW_ITEM_TYPE_ESP:
+ case RTE_FLOW_ITEM_TYPE_NVGRE:
return true;
default:
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.605731015 +0000
+++ 0097-net-mlx5-windows-fix-match-criteria-in-flow-creation.patch 2025-11-21 11:05:09.656201992 +0000
@@ -1 +1 @@
-From e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 Mon Sep 17 00:00:00 2001
+From 21276ae4916a85e3b14c88cbd57b3b4283ccf16b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e0b87fa079b9f35750f4d6fb71a00ab0ca19d170 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -23 +23,0 @@
- doc/guides/nics/mlx5.rst | 4 ++++
@@ -26 +26 @@
- 4 files changed, 8 insertions(+), 2 deletions(-)
+ 3 files changed, 4 insertions(+), 2 deletions(-)
@@ -29 +29 @@
-index efc66fd48c..2f089326ff 100644
+index 723b168e04..f48a6a0462 100644
@@ -32,2 +32,2 @@
-@@ -640,4 +640,5 @@ Intiyaz Basha <intiyaz.basha@caviumnetworks.com>
- Ioana Ciornei <ioana.ciornei@nxp.com>
+@@ -612,4 +612,5 @@ Ilyes Ben Hamouda <ilyes.ben_hamouda@6wind.com>
+ Intiyaz Basha <intiyaz.basha@caviumnetworks.com>
@@ -38,13 +37,0 @@
-diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
-index 2cf95578de..51d7637fba 100644
---- a/doc/guides/nics/mlx5.rst
-+++ b/doc/guides/nics/mlx5.rst
-@@ -1232,4 +1232,8 @@ On Windows, the features are limited:
- - L4 steering rules for port RSS of IP, UDP, TCP
-
-+- Tunnel protocol support:
-+
-+ - NVGRE (requires DevX dynamic insertion mode)
-+
-
- .. _mlx5_multiproc:
^ permalink raw reply [flat|nested] 100+ messages in thread* patch 'net: fix IPv6 link local compliance with RFC 4291' has been queued to stable release 24.11.4
2025-11-21 11:19 patch 'test/hash: check memory allocation' has been queued to stable release 24.11.4 Kevin Traynor
` (95 preceding siblings ...)
2025-11-21 11:21 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Kevin Traynor
@ 2025-11-21 11:21 ` Kevin Traynor
96 siblings, 0 replies; 100+ messages in thread
From: Kevin Traynor @ 2025-11-21 11:21 UTC (permalink / raw)
To: Christophe Fontaine; +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/26/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/129a914c3f0e8c8604366a5625c91c6ec4a2dd23
Thanks.
Kevin
---
From 129a914c3f0e8c8604366a5625c91c6ec4a2dd23 Mon Sep 17 00:00:00 2001
From: Christophe Fontaine <cfontain@redhat.com>
Date: Tue, 18 Nov 2025 18:45:26 +0100
Subject: [PATCH] net: fix IPv6 link local compliance with RFC 4291
[ upstream commit 9727c1bae406fc080fdfcf3dae5c7a699e896b53 ]
As specified in RFC 4291 section 2.5.1, link local addresses must be
generated based on a modified EUI-64 interface identifier:
> Modified EUI-64 format interface identifiers are formed by inverting
> the "u" bit (universal/local bit in IEEE EUI-64 terminology) when
> forming the interface identifier from IEEE EUI-64 identifiers.
This translates to 'mac->addr_bytes[0] ^= 0x02'.
Fixes: 3d6d85f58c1c ("net: add utilities for well known IPv6 address types")
Signed-off-by: Christophe Fontaine <cfontain@redhat.com>
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
app/test/test_net_ip6.c | 2 +-
lib/net/rte_ip6.h | 9 +++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/app/test/test_net_ip6.c b/app/test/test_net_ip6.c
index cfc5509403..e4642c9a39 100644
--- a/app/test/test_net_ip6.c
+++ b/app/test/test_net_ip6.c
@@ -161,5 +161,5 @@ test_ipv6_llocal_from_ethernet(void)
const struct rte_ether_addr local_mac = {{0x04, 0x7b, 0xcb, 0x5c, 0x08, 0x44}};
const struct rte_ipv6_addr local_ip =
- RTE_IPV6(0xfe80, 0, 0, 0, 0x047b, 0xcbff, 0xfe5c, 0x0844);
+ RTE_IPV6(0xfe80, 0, 0, 0, 0x067b, 0xcbff, 0xfe5c, 0x0844);
struct rte_ipv6_addr ip;
diff --git a/lib/net/rte_ip6.h b/lib/net/rte_ip6.h
index 8763ccbb5e..cb59e85c7e 100644
--- a/lib/net/rte_ip6.h
+++ b/lib/net/rte_ip6.h
@@ -394,5 +394,5 @@ rte_ipv6_mc_scope(const struct rte_ipv6_addr *ip)
/*
* Generate a link-local IPv6 address from an Ethernet address as specified in
- * RFC 2464, section 5.
+ * RFC 4291, section 2.5.1.
*
* @param[out] ip
@@ -407,5 +407,10 @@ rte_ipv6_llocal_from_ethernet(struct rte_ipv6_addr *ip, const struct rte_ether_a
ip->a[1] = 0x80;
memset(&ip->a[2], 0, 6);
- ip->a[8] = mac->addr_bytes[0];
+ /*
+ * The "u" bit (universal/local bit in IEEE EUI-64 terminology)
+ * must be inverted for IPv6 link local address.
+ * 0 means local scope, 1 means universal scope.
+ */
+ ip->a[8] = mac->addr_bytes[0] ^ RTE_ETHER_LOCAL_ADMIN_ADDR;
ip->a[9] = mac->addr_bytes[1];
ip->a[10] = mac->addr_bytes[2];
--
2.51.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-11-21 11:05:12.633002126 +0000
+++ 0098-net-fix-IPv6-link-local-compliance-with-RFC-4291.patch 2025-11-21 11:05:09.657252389 +0000
@@ -1 +1 @@
-From 9727c1bae406fc080fdfcf3dae5c7a699e896b53 Mon Sep 17 00:00:00 2001
+From 129a914c3f0e8c8604366a5625c91c6ec4a2dd23 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9727c1bae406fc080fdfcf3dae5c7a699e896b53 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -37 +38 @@
-index 98bcac3f4d..d1abf1f5d5 100644
+index 8763ccbb5e..cb59e85c7e 100644
^ permalink raw reply [flat|nested] 100+ messages in thread