* patch 'net/ixgbe/base: correct definition of endianness macro' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
@ 2025-07-18 19:28 ` Kevin Traynor
2025-07-18 19:28 ` patch 'net/ixgbe/base: fix compilation warnings' " Kevin Traynor
` (173 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:28 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a47768eb29e1612673b712f68f7c009e819d9bde
Thanks.
Kevin
---
From a47768eb29e1612673b712f68f7c009e819d9bde Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 28 Mar 2025 11:16:15 +0000
Subject: [PATCH] net/ixgbe/base: correct definition of endianness macro
[ upstream commit 3e7ea9ad5162876583e72de6061752810bdde0fe ]
The definition of IXGBE_LE32_TO_CPUS macro is meant to modify the value
in place - similar to the le32_to_cpus() macro in kernel. Fixing the
definition allows us to remove some warning flags, and removes the need
for the uintptr_t typecasts.
Fixes: aa4fc14d2cee ("ixgbe: update base driver")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/ixgbe/base/ixgbe_common.c | 4 ++--
drivers/net/ixgbe/base/ixgbe_osdep.h | 2 +-
drivers/net/ixgbe/base/meson.build | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
index d6425c5b78..fbc9605e4d 100644
--- a/drivers/net/ixgbe/base/ixgbe_common.c
+++ b/drivers/net/ixgbe/base/ixgbe_common.c
@@ -4611,5 +4611,5 @@ s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer,
for (bi = 0; bi < dword_len; bi++) {
buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi);
- IXGBE_LE32_TO_CPUS((uintptr_t)&buffer[bi]);
+ IXGBE_LE32_TO_CPUS(&buffer[bi]);
}
@@ -4647,5 +4647,5 @@ s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer,
for (; bi <= dword_len; bi++) {
buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi);
- IXGBE_LE32_TO_CPUS((uintptr_t)&buffer[bi]);
+ IXGBE_LE32_TO_CPUS(&buffer[bi]);
}
diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
index 502f386b56..4188d83b4f 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -84,5 +84,5 @@ enum {
#define IXGBE_LE32_TO_CPU(_i) rte_le_to_cpu_32(_i)
#define IXGBE_LE64_TO_CPU(_i) rte_le_to_cpu_64(_i)
-#define IXGBE_LE32_TO_CPUS(_i) rte_le_to_cpu_32(_i)
+#define IXGBE_LE32_TO_CPUS(_i) do { *_i = rte_le_to_cpu_32(*_i); } while(0)
#define IXGBE_CPU_TO_BE16(_i) rte_cpu_to_be_16(_i)
#define IXGBE_CPU_TO_BE32(_i) rte_cpu_to_be_32(_i)
diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
index 7e4fbdfa0f..f8b2ee6341 100644
--- a/drivers/net/ixgbe/base/meson.build
+++ b/drivers/net/ixgbe/base/meson.build
@@ -20,5 +20,5 @@ sources = [
]
-error_cflags = ['-Wno-unused-value',
+error_cflags = [
'-Wno-unused-but-set-variable',
'-Wno-unused-parameter',
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.256235232 +0100
+++ 0002-net-ixgbe-base-correct-definition-of-endianness-macr.patch 2025-07-18 20:29:10.786906890 +0100
@@ -1 +1 @@
-From 3e7ea9ad5162876583e72de6061752810bdde0fe Mon Sep 17 00:00:00 2001
+From a47768eb29e1612673b712f68f7c009e819d9bde Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3e7ea9ad5162876583e72de6061752810bdde0fe ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17,3 +18,3 @@
- drivers/net/intel/ixgbe/base/ixgbe_common.c | 4 ++--
- drivers/net/intel/ixgbe/base/ixgbe_osdep.h | 2 +-
- drivers/net/intel/ixgbe/base/meson.build | 2 +-
+ drivers/net/ixgbe/base/ixgbe_common.c | 4 ++--
+ drivers/net/ixgbe/base/ixgbe_osdep.h | 2 +-
+ drivers/net/ixgbe/base/meson.build | 2 +-
@@ -22 +23 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_common.c b/drivers/net/intel/ixgbe/base/ixgbe_common.c
+diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
@@ -24,2 +25,2 @@
---- a/drivers/net/intel/ixgbe/base/ixgbe_common.c
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_common.c
+--- a/drivers/net/ixgbe/base/ixgbe_common.c
++++ b/drivers/net/ixgbe/base/ixgbe_common.c
@@ -40,4 +41,4 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-index cffc6a4ce8..6e5f7b4ae8 100644
---- a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
+diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
+index 502f386b56..4188d83b4f 100644
+--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
++++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -51 +52 @@
-diff --git a/drivers/net/intel/ixgbe/base/meson.build b/drivers/net/intel/ixgbe/base/meson.build
+diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
@@ -53,2 +54,2 @@
---- a/drivers/net/intel/ixgbe/base/meson.build
-+++ b/drivers/net/intel/ixgbe/base/meson.build
+--- a/drivers/net/ixgbe/base/meson.build
++++ b/drivers/net/ixgbe/base/meson.build
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe/base: fix compilation warnings' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
2025-07-18 19:28 ` patch 'net/ixgbe/base: correct definition of endianness macro' " Kevin Traynor
@ 2025-07-18 19:28 ` Kevin Traynor
2025-07-18 19:28 ` patch 'net/i40e/base: fix unused value " Kevin Traynor
` (172 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:28 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0b5f911820a566be77347ea837db9086a56e7adb
Thanks.
Kevin
---
From 0b5f911820a566be77347ea837db9086a56e7adb Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 28 Mar 2025 11:16:16 +0000
Subject: [PATCH] net/ixgbe/base: fix compilation warnings
[ upstream commit ca361b5ab1ba8ec9191b8376a8be0e3935823596 ]
We can remove almost all of the "unused parameter" and "unused variable"
warnings by just improving the macro definitions in the osdep.h header.
Remaining two instances can be fixed by just one-line additions to the
code, so add those to give us a clean build with the warnings enabled.
Fixes: af75078fece3 ("first public release")
Fixes: c6cb313da739 ("net/ixgbe/base: add link management for E610")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/ixgbe/base/ixgbe_e610.c | 2 ++
drivers/net/ixgbe/base/ixgbe_osdep.h | 19 +++++++++++--------
drivers/net/ixgbe/base/meson.build | 11 -----------
3 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ixgbe/base/ixgbe_e610.c b/drivers/net/ixgbe/base/ixgbe_e610.c
index 1967519be0..a6fce1442d 100644
--- a/drivers/net/ixgbe/base/ixgbe_e610.c
+++ b/drivers/net/ixgbe/base/ixgbe_e610.c
@@ -1047,4 +1047,5 @@ static void ixgbe_parse_vsi_func_caps(struct ixgbe_hw *hw,
struct ixgbe_aci_cmd_list_caps_elem *cap)
{
+ UNREFERENCED_PARAMETER(cap);
func_p->guar_num_vsi = ixgbe_get_num_per_func(hw, IXGBE_MAX_VSI);
}
@@ -1763,4 +1764,5 @@ s32 ixgbe_aci_set_event_mask(struct ixgbe_hw *hw, u8 port_num, u16 mask)
struct ixgbe_aci_desc desc;
+ UNREFERENCED_PARAMETER(port_num);
cmd = &desc.params.set_event_mask;
diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
index 4188d83b4f..900791a93e 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -58,11 +58,14 @@
/* Bunch of defines for shared code bogosity */
#ifndef UNREFERENCED_PARAMETER
-#define UNREFERENCED_PARAMETER(_p)
+#define UNREFERENCED_PARAMETER(_p) (void)(_p)
#endif
-#define UNREFERENCED_1PARAMETER(_p)
-#define UNREFERENCED_2PARAMETER(_p, _q)
-#define UNREFERENCED_3PARAMETER(_p, _q, _r)
-#define UNREFERENCED_4PARAMETER(_p, _q, _r, _s)
-#define UNREFERENCED_5PARAMETER(_p, _q, _r, _s, _t)
+#define UNREFERENCED_1PARAMETER(_p) (void)(_p)
+#define UNREFERENCED_2PARAMETER(_p, _q) do { (void)(_p); (void)(_q); } while(0)
+#define UNREFERENCED_3PARAMETER(_p, _q, _r) \
+ do { (void)(_p); (void)(_q); (void)(_r); } while(0)
+#define UNREFERENCED_4PARAMETER(_p, _q, _r, _s) \
+ do { (void)(_p); (void)(_q); (void)(_r); (void)(_s); } while(0)
+#define UNREFERENCED_5PARAMETER(_p, _q, _r, _s, _t) \
+ do { (void)(_p); (void)(_q); (void)(_r); (void)(_s); (void)(_t); } while(0)
/* Shared code error reporting */
@@ -131,6 +134,6 @@ static inline uint32_t ixgbe_read_addr(volatile void* addr)
/* Not implemented !! */
-#define IXGBE_READ_PCIE_WORD(hw, reg) 0
-#define IXGBE_WRITE_PCIE_WORD(hw, reg, value) do { } while(0)
+#define IXGBE_READ_PCIE_WORD(hw, reg) ((void)hw, (void)(reg), 0)
+#define IXGBE_WRITE_PCIE_WORD(hw, reg, value) do { (void)hw; (void)reg; (void)value; } while(0)
#define IXGBE_WRITE_FLUSH(a) IXGBE_READ_REG(a, IXGBE_STATUS)
diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
index f8b2ee6341..64e0bfd7be 100644
--- a/drivers/net/ixgbe/base/meson.build
+++ b/drivers/net/ixgbe/base/meson.build
@@ -20,15 +20,4 @@ sources = [
]
-error_cflags = [
- '-Wno-unused-but-set-variable',
- '-Wno-unused-parameter',
- ]
-c_args = cflags
-foreach flag: error_cflags
- if cc.has_argument(flag)
- c_args += flag
- endif
-endforeach
-
base_lib = static_library('ixgbe_base', sources,
dependencies: [static_rte_eal, static_rte_net],
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.286853891 +0100
+++ 0003-net-ixgbe-base-fix-compilation-warnings.patch 2025-07-18 20:29:10.791906905 +0100
@@ -1 +1 @@
-From ca361b5ab1ba8ec9191b8376a8be0e3935823596 Mon Sep 17 00:00:00 2001
+From 0b5f911820a566be77347ea837db9086a56e7adb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ca361b5ab1ba8ec9191b8376a8be0e3935823596 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -18,3 +19,3 @@
- drivers/net/intel/ixgbe/base/ixgbe_e610.c | 2 ++
- drivers/net/intel/ixgbe/base/ixgbe_osdep.h | 19 +++++++++++--------
- drivers/net/intel/ixgbe/base/meson.build | 11 -----------
+ drivers/net/ixgbe/base/ixgbe_e610.c | 2 ++
+ drivers/net/ixgbe/base/ixgbe_osdep.h | 19 +++++++++++--------
+ drivers/net/ixgbe/base/meson.build | 11 -----------
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_e610.c b/drivers/net/intel/ixgbe/base/ixgbe_e610.c
-index 5474c3012a..7420c78d07 100644
---- a/drivers/net/intel/ixgbe/base/ixgbe_e610.c
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_e610.c
-@@ -1055,4 +1055,5 @@ static void ixgbe_parse_vsi_func_caps(struct ixgbe_hw *hw,
+diff --git a/drivers/net/ixgbe/base/ixgbe_e610.c b/drivers/net/ixgbe/base/ixgbe_e610.c
+index 1967519be0..a6fce1442d 100644
+--- a/drivers/net/ixgbe/base/ixgbe_e610.c
++++ b/drivers/net/ixgbe/base/ixgbe_e610.c
+@@ -1047,4 +1047,5 @@ static void ixgbe_parse_vsi_func_caps(struct ixgbe_hw *hw,
@@ -33 +34 @@
-@@ -1771,4 +1772,5 @@ s32 ixgbe_aci_set_event_mask(struct ixgbe_hw *hw, u8 port_num, u16 mask)
+@@ -1763,4 +1764,5 @@ s32 ixgbe_aci_set_event_mask(struct ixgbe_hw *hw, u8 port_num, u16 mask)
@@ -39,4 +40,4 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-index 6e5f7b4ae8..398c38bffd 100644
---- a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
+diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
+index 4188d83b4f..900791a93e 100644
+--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
++++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -73 +74 @@
-diff --git a/drivers/net/intel/ixgbe/base/meson.build b/drivers/net/intel/ixgbe/base/meson.build
+diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
@@ -75,2 +76,2 @@
---- a/drivers/net/intel/ixgbe/base/meson.build
-+++ b/drivers/net/intel/ixgbe/base/meson.build
+--- a/drivers/net/ixgbe/base/meson.build
++++ b/drivers/net/ixgbe/base/meson.build
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/i40e/base: fix unused value warnings' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
2025-07-18 19:28 ` patch 'net/ixgbe/base: correct definition of endianness macro' " Kevin Traynor
2025-07-18 19:28 ` patch 'net/ixgbe/base: fix compilation warnings' " Kevin Traynor
@ 2025-07-18 19:28 ` Kevin Traynor
2025-07-18 19:28 ` patch 'net/i40e/base: fix compiler " Kevin Traynor
` (171 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:28 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/d2cb553ea36f2d2085cc6b3fa431a3edf18efea9
Thanks.
Kevin
---
From d2cb553ea36f2d2085cc6b3fa431a3edf18efea9 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 28 Mar 2025 11:16:18 +0000
Subject: [PATCH] net/i40e/base: fix unused value warnings
[ upstream commit 3c2125852742d46accc3f35f4fa683768ba25e09 ]
Fix warnings about unused values - parameters, variables, etc., and
remove the warning disable flags for them. Although modifying the
base-code files is not ideal, the changes required are minor, and only
affect two files from the imported base code.
Fixes: 8db9e2a1b232 ("i40e: base driver")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/i40e/base/i40e_nvm.c | 1 +
drivers/net/i40e/base/i40e_osdep.h | 4 ++--
drivers/net/i40e/base/i40e_type.h | 14 +++++++++-----
drivers/net/i40e/base/meson.build | 3 ---
drivers/net/i40e/i40e_ethdev.c | 1 +
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/drivers/net/i40e/base/i40e_nvm.c b/drivers/net/i40e/base/i40e_nvm.c
index 3e16a0d997..00a207ca81 100644
--- a/drivers/net/i40e/base/i40e_nvm.c
+++ b/drivers/net/i40e/base/i40e_nvm.c
@@ -1749,4 +1749,5 @@ STATIC enum i40e_status_code i40e_nvmupd_get_aq_event(struct i40e_hw *hw,
u32 aq_desc_len;
+ UNREFERENCED_1PARAMETER(perrno);
i40e_debug(hw, I40E_DEBUG_NVM, "NVMUPD: %s\n", __func__);
diff --git a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h
index 8960206d8b..d056ae4ec6 100644
--- a/drivers/net/i40e/base/i40e_osdep.h
+++ b/drivers/net/i40e/base/i40e_osdep.h
@@ -185,6 +185,6 @@ struct i40e_dma_mem {
} __rte_packed;
-#define i40e_allocate_dma_mem(h, m, unused, s, a) \
- i40e_allocate_dma_mem_d(h, m, s, a)
+#define i40e_allocate_dma_mem(h, m, mt, s, a) \
+ i40e_allocate_dma_mem_d(h, m, mt, s, a)
#define i40e_free_dma_mem(h, m) i40e_free_dma_mem_d(h, m)
diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
index 7cc746f82f..968e1982a6 100644
--- a/drivers/net/i40e/base/i40e_type.h
+++ b/drivers/net/i40e/base/i40e_type.h
@@ -15,9 +15,13 @@
#define UNREFERENCED_XPARAMETER
-#define UNREFERENCED_1PARAMETER(_p) (_p);
-#define UNREFERENCED_2PARAMETER(_p, _q) (_p); (_q);
-#define UNREFERENCED_3PARAMETER(_p, _q, _r) (_p); (_q); (_r);
-#define UNREFERENCED_4PARAMETER(_p, _q, _r, _s) (_p); (_q); (_r); (_s);
-#define UNREFERENCED_5PARAMETER(_p, _q, _r, _s, _t) (_p); (_q); (_r); (_s); (_t);
+#define UNREFERENCED_1PARAMETER(_p) (void)(_p)
+#define UNREFERENCED_2PARAMETER(_p, _q) \
+ do { (void)(_p); (void)(_q); } while (0)
+#define UNREFERENCED_3PARAMETER(_p, _q, _r) \
+ do { (void)(_p); (void)(_q); (void)(_r); } while (0)
+#define UNREFERENCED_4PARAMETER(_p, _q, _r, _s) \
+ do { (void)(_p); (void)(_q); (void)(_r); (void)(_s); } while (0)
+#define UNREFERENCED_5PARAMETER(_p, _q, _r, _s, _t) \
+ do { (void)(_p); (void)(_q); (void)(_r); (void)(_s); (void)(_t); } while (0)
#define BIT(a) (1UL << (a))
diff --git a/drivers/net/i40e/base/meson.build b/drivers/net/i40e/base/meson.build
index a0912b1788..2648e5d0c4 100644
--- a/drivers/net/i40e/base/meson.build
+++ b/drivers/net/i40e/base/meson.build
@@ -14,8 +14,5 @@ sources = [
error_cflags = [
'-Wno-sign-compare',
- '-Wno-unused-value',
'-Wno-strict-aliasing',
- '-Wno-unused-but-set-variable',
- '-Wno-unused-parameter',
]
c_args = cflags
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 30dcdc68a8..b316f977d3 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -4695,4 +4695,5 @@ enum i40e_status_code
i40e_allocate_dma_mem_d(__rte_unused struct i40e_hw *hw,
struct i40e_dma_mem *mem,
+ __rte_unused enum i40e_memory_type mtype,
u64 size,
u32 alignment)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.317011560 +0100
+++ 0004-net-i40e-base-fix-unused-value-warnings.patch 2025-07-18 20:29:10.804906945 +0100
@@ -1 +1 @@
-From 3c2125852742d46accc3f35f4fa683768ba25e09 Mon Sep 17 00:00:00 2001
+From d2cb553ea36f2d2085cc6b3fa431a3edf18efea9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3c2125852742d46accc3f35f4fa683768ba25e09 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17,5 +18,5 @@
- drivers/net/intel/i40e/base/i40e_nvm.c | 1 +
- drivers/net/intel/i40e/base/i40e_osdep.h | 4 ++--
- drivers/net/intel/i40e/base/i40e_type.h | 14 +++++++++-----
- drivers/net/intel/i40e/base/meson.build | 3 ---
- drivers/net/intel/i40e/i40e_ethdev.c | 1 +
+ drivers/net/i40e/base/i40e_nvm.c | 1 +
+ drivers/net/i40e/base/i40e_osdep.h | 4 ++--
+ drivers/net/i40e/base/i40e_type.h | 14 +++++++++-----
+ drivers/net/i40e/base/meson.build | 3 ---
+ drivers/net/i40e/i40e_ethdev.c | 1 +
@@ -24 +25 @@
-diff --git a/drivers/net/intel/i40e/base/i40e_nvm.c b/drivers/net/intel/i40e/base/i40e_nvm.c
+diff --git a/drivers/net/i40e/base/i40e_nvm.c b/drivers/net/i40e/base/i40e_nvm.c
@@ -26,2 +27,2 @@
---- a/drivers/net/intel/i40e/base/i40e_nvm.c
-+++ b/drivers/net/intel/i40e/base/i40e_nvm.c
+--- a/drivers/net/i40e/base/i40e_nvm.c
++++ b/drivers/net/i40e/base/i40e_nvm.c
@@ -34,6 +35,6 @@
-diff --git a/drivers/net/intel/i40e/base/i40e_osdep.h b/drivers/net/intel/i40e/base/i40e_osdep.h
-index c04f94732a..197f4678bf 100644
---- a/drivers/net/intel/i40e/base/i40e_osdep.h
-+++ b/drivers/net/intel/i40e/base/i40e_osdep.h
-@@ -185,6 +185,6 @@ struct __rte_packed_begin i40e_dma_mem {
- } __rte_packed_end;
+diff --git a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h
+index 8960206d8b..d056ae4ec6 100644
+--- a/drivers/net/i40e/base/i40e_osdep.h
++++ b/drivers/net/i40e/base/i40e_osdep.h
+@@ -185,6 +185,6 @@ struct i40e_dma_mem {
+ } __rte_packed;
@@ -47 +48 @@
-diff --git a/drivers/net/intel/i40e/base/i40e_type.h b/drivers/net/intel/i40e/base/i40e_type.h
+diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
@@ -49,2 +50,2 @@
---- a/drivers/net/intel/i40e/base/i40e_type.h
-+++ b/drivers/net/intel/i40e/base/i40e_type.h
+--- a/drivers/net/i40e/base/i40e_type.h
++++ b/drivers/net/i40e/base/i40e_type.h
@@ -70 +71 @@
-diff --git a/drivers/net/intel/i40e/base/meson.build b/drivers/net/intel/i40e/base/meson.build
+diff --git a/drivers/net/i40e/base/meson.build b/drivers/net/i40e/base/meson.build
@@ -72,2 +73,2 @@
---- a/drivers/net/intel/i40e/base/meson.build
-+++ b/drivers/net/intel/i40e/base/meson.build
+--- a/drivers/net/i40e/base/meson.build
++++ b/drivers/net/i40e/base/meson.build
@@ -83,4 +84,4 @@
-diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
-index 1c5ab35a8b..90eba3419f 100644
---- a/drivers/net/intel/i40e/i40e_ethdev.c
-+++ b/drivers/net/intel/i40e/i40e_ethdev.c
+diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
+index 30dcdc68a8..b316f977d3 100644
+--- a/drivers/net/i40e/i40e_ethdev.c
++++ b/drivers/net/i40e/i40e_ethdev.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/i40e/base: fix compiler warnings' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (2 preceding siblings ...)
2025-07-18 19:28 ` patch 'net/i40e/base: fix unused value " Kevin Traynor
@ 2025-07-18 19:28 ` Kevin Traynor
2025-07-18 19:29 ` patch 'acl: fix build with GCC 15 on aarch64' " Kevin Traynor
` (170 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:28 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/80ccbe927d5385807c60888cc24b8273175f7a41
Thanks.
Kevin
---
From 80ccbe927d5385807c60888cc24b8273175f7a41 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 28 Mar 2025 11:16:19 +0000
Subject: [PATCH] net/i40e/base: fix compiler warnings
[ upstream commit e0a9cb8b940b539b68acc7d8221f9aeec0f20a82 ]
Add a single-line fix to the base code, and then the remaining two
compiler warning disable flags can be removed from the driver base code
build file.
Fixes: 8db9e2a1b232 ("i40e: base driver")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/i40e/base/i40e_diag.c | 2 +-
drivers/net/i40e/base/meson.build | 13 +------------
2 files changed, 2 insertions(+), 13 deletions(-)
diff --git a/drivers/net/i40e/base/i40e_diag.c b/drivers/net/i40e/base/i40e_diag.c
index 4ca102cdd5..71b2e53e85 100644
--- a/drivers/net/i40e/base/i40e_diag.c
+++ b/drivers/net/i40e/base/i40e_diag.c
@@ -35,5 +35,5 @@ static enum i40e_status_code i40e_diag_reg_pattern_test(struct i40e_hw *hw,
const u32 patterns[] = {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};
u32 pat, val, orig_val;
- int i;
+ unsigned int i;
orig_val = rd32(hw, reg);
diff --git a/drivers/net/i40e/base/meson.build b/drivers/net/i40e/base/meson.build
index 2648e5d0c4..766383101b 100644
--- a/drivers/net/i40e/base/meson.build
+++ b/drivers/net/i40e/base/meson.build
@@ -12,17 +12,6 @@ sources = [
]
-error_cflags = [
- '-Wno-sign-compare',
- '-Wno-strict-aliasing',
-]
-c_args = cflags
-foreach flag: error_cflags
- if cc.has_argument(flag)
- c_args += flag
- endif
-endforeach
-
base_lib = static_library('i40e_base', sources,
dependencies: static_rte_eal,
- c_args: c_args)
+ c_args: cflags)
base_objs = base_lib.extract_all_objects(recursive: true)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.353952112 +0100
+++ 0005-net-i40e-base-fix-compiler-warnings.patch 2025-07-18 20:29:10.805906948 +0100
@@ -1 +1 @@
-From e0a9cb8b940b539b68acc7d8221f9aeec0f20a82 Mon Sep 17 00:00:00 2001
+From 80ccbe927d5385807c60888cc24b8273175f7a41 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e0a9cb8b940b539b68acc7d8221f9aeec0f20a82 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -16,2 +17,2 @@
- drivers/net/intel/i40e/base/i40e_diag.c | 2 +-
- drivers/net/intel/i40e/base/meson.build | 13 +------------
+ drivers/net/i40e/base/i40e_diag.c | 2 +-
+ drivers/net/i40e/base/meson.build | 13 +------------
@@ -20 +21 @@
-diff --git a/drivers/net/intel/i40e/base/i40e_diag.c b/drivers/net/intel/i40e/base/i40e_diag.c
+diff --git a/drivers/net/i40e/base/i40e_diag.c b/drivers/net/i40e/base/i40e_diag.c
@@ -22,2 +23,2 @@
---- a/drivers/net/intel/i40e/base/i40e_diag.c
-+++ b/drivers/net/intel/i40e/base/i40e_diag.c
+--- a/drivers/net/i40e/base/i40e_diag.c
++++ b/drivers/net/i40e/base/i40e_diag.c
@@ -31 +32 @@
-diff --git a/drivers/net/intel/i40e/base/meson.build b/drivers/net/intel/i40e/base/meson.build
+diff --git a/drivers/net/i40e/base/meson.build b/drivers/net/i40e/base/meson.build
@@ -33,2 +34,2 @@
---- a/drivers/net/intel/i40e/base/meson.build
-+++ b/drivers/net/intel/i40e/base/meson.build
+--- a/drivers/net/i40e/base/meson.build
++++ b/drivers/net/i40e/base/meson.build
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'acl: fix build with GCC 15 on aarch64' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (3 preceding siblings ...)
2025-07-18 19:28 ` patch 'net/i40e/base: fix compiler " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'eal/linux: improve ASLR check' " Kevin Traynor
` (169 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: David Marchand; +Cc: Konstantin Ananyev, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/29e6a709e2a2a9b7291c51fc44073c80d7389264
Thanks.
Kevin
---
From 29e6a709e2a2a9b7291c51fc44073c80d7389264 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 26 Mar 2025 11:29:02 +0100
Subject: [PATCH] acl: fix build with GCC 15 on aarch64
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 6cde8a3dda49ad2721ac15faedf1965cdb4980b0 ]
Caught in OBS for Fedora Rawhide on aarch64:
[ 198s] In file included from ../lib/acl/acl_run_neon.h:7,
[ 198s] from ../lib/acl/acl_run_neon.c:5:
[ 198s] In function ‘alloc_completion’,
[ 198s] inlined from ‘acl_start_next_trie’ at
../lib/acl/acl_run.h:140:24,
[ 198s] inlined from ‘search_neon_4.isra’ at
../lib/acl/acl_run_neon.h:239:20:
[ 198s] ../lib/acl/acl_run.h:93:25: error: ‘cmplt’ may be used
uninitialized [-Werror=maybe-uninitialized]
[ 198s] 93 | if (p[n].count == 0) {
[ 198s] | ~~~~^~~~~~
[ 198s] ../lib/acl/acl_run_neon.h: In function ‘search_neon_4.isra’:
[ 198s] ../lib/acl/acl_run_neon.h:230:27: note: ‘cmplt’ declared here
[ 198s] 230 | struct completion cmplt[4];
[ 198s] | ^~~~~
The code was resetting sequentially cmpl[].count at the exact index that
later call to alloc_completion uses.
While this code seems correct, GCC 15 does not understand this (probably
when applying some optimisations).
Instead, reset cmpl[].count all at once in acl_set_flow, and cleanup the
various vectorized implementations accordingly.
Bugzilla ID: 1678
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/acl/acl_run.h | 5 +++++
lib/acl/acl_run_altivec.h | 8 ++------
lib/acl/acl_run_avx2.h | 4 +---
lib/acl/acl_run_neon.h | 8 ++------
lib/acl/acl_run_scalar.c | 4 +---
lib/acl/acl_run_sse.h | 8 ++------
6 files changed, 13 insertions(+), 24 deletions(-)
diff --git a/lib/acl/acl_run.h b/lib/acl/acl_run.h
index 7f092413cd..9fd3e60021 100644
--- a/lib/acl/acl_run.h
+++ b/lib/acl/acl_run.h
@@ -177,4 +177,6 @@ acl_set_flow(struct acl_flow_data *flows, struct completion *cmplt,
uint32_t data_num, uint32_t categories, const uint64_t *trans)
{
+ unsigned int i;
+
flows->num_packets = 0;
flows->started = 0;
@@ -188,4 +190,7 @@ acl_set_flow(struct acl_flow_data *flows, struct completion *cmplt,
flows->results = results;
flows->trans = trans;
+
+ for (i = 0; i < cmplt_size; i++)
+ cmplt[i].count = 0;
}
diff --git a/lib/acl/acl_run_altivec.h b/lib/acl/acl_run_altivec.h
index 2d398ffded..d5ccdb94f0 100644
--- a/lib/acl/acl_run_altivec.h
+++ b/lib/acl/acl_run_altivec.h
@@ -200,8 +200,6 @@ search_altivec_8(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < MAX_SEARCHES_ALTIVEC8; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < MAX_SEARCHES_ALTIVEC8; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
/* Check for any matches. */
@@ -271,8 +269,6 @@ search_altivec_4(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < MAX_SEARCHES_ALTIVEC4; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < MAX_SEARCHES_ALTIVEC4; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
/* Check for any matches. */
diff --git a/lib/acl/acl_run_avx2.h b/lib/acl/acl_run_avx2.h
index 0b8967f22e..e069fb85b2 100644
--- a/lib/acl/acl_run_avx2.h
+++ b/lib/acl/acl_run_avx2.h
@@ -172,8 +172,6 @@ search_avx2x16(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < RTE_DIM(cmplt); n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < RTE_DIM(cmplt); n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
t0 = _mm256_set_epi64x(index_array[5], index_array[4],
diff --git a/lib/acl/acl_run_neon.h b/lib/acl/acl_run_neon.h
index 63074f871d..3b9bd0cc39 100644
--- a/lib/acl/acl_run_neon.h
+++ b/lib/acl/acl_run_neon.h
@@ -173,8 +173,6 @@ search_neon_8(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < 8; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < 8; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
/* Check for any matches. */
@@ -235,8 +233,6 @@ search_neon_4(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < 4; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < 4; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
/* Check for any matches. */
diff --git a/lib/acl/acl_run_scalar.c b/lib/acl/acl_run_scalar.c
index 3d61e79409..a3661b1b6b 100644
--- a/lib/acl/acl_run_scalar.c
+++ b/lib/acl/acl_run_scalar.c
@@ -122,8 +122,6 @@ rte_acl_classify_scalar(const struct rte_acl_ctx *ctx, const uint8_t **data,
categories, ctx->trans_table);
- for (n = 0; n < MAX_SEARCHES_SCALAR; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < MAX_SEARCHES_SCALAR; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
transition0 = index_array[0];
diff --git a/lib/acl/acl_run_sse.h b/lib/acl/acl_run_sse.h
index 93286a2c38..4ec819a215 100644
--- a/lib/acl/acl_run_sse.h
+++ b/lib/acl/acl_run_sse.h
@@ -206,8 +206,6 @@ search_sse_8(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < MAX_SEARCHES_SSE8; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < MAX_SEARCHES_SSE8; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
/*
@@ -294,8 +292,6 @@ search_sse_4(const struct rte_acl_ctx *ctx, const uint8_t **data,
total_packets, categories, ctx->trans_table);
- for (n = 0; n < MAX_SEARCHES_SSE4; n++) {
- cmplt[n].count = 0;
+ for (n = 0; n < MAX_SEARCHES_SSE4; n++)
index_array[n] = acl_start_next_trie(&flows, parms, n, ctx);
- }
indices1 = _mm_loadu_si128((xmm_t *) &index_array[0]);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.381313678 +0100
+++ 0006-acl-fix-build-with-GCC-15-on-aarch64.patch 2025-07-18 20:29:10.806906951 +0100
@@ -1 +1 @@
-From 6cde8a3dda49ad2721ac15faedf1965cdb4980b0 Mon Sep 17 00:00:00 2001
+From 29e6a709e2a2a9b7291c51fc44073c80d7389264 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 6cde8a3dda49ad2721ac15faedf1965cdb4980b0 ]
+
@@ -36 +37,0 @@
-Cc: stable@dpdk.org
@@ -133 +134 @@
-index 8ffb40776c..32ebe3119b 100644
+index 3d61e79409..a3661b1b6b 100644
@@ -136 +137 @@
-@@ -125,8 +125,6 @@ rte_acl_classify_scalar(const struct rte_acl_ctx *ctx, const uint8_t **data,
+@@ -122,8 +122,6 @@ rte_acl_classify_scalar(const struct rte_acl_ctx *ctx, const uint8_t **data,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal/linux: improve ASLR check' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (4 preceding siblings ...)
2025-07-18 19:29 ` patch 'acl: fix build with GCC 15 on aarch64' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/idpf: fix truncation of constant value' " Kevin Traynor
` (168 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Yang Ming; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9d88498a1cf3abf2460b03ba691e6f8d32dd5a3d
Thanks.
Kevin
---
From 9d88498a1cf3abf2460b03ba691e6f8d32dd5a3d Mon Sep 17 00:00:00 2001
From: Yang Ming <ming.1.yang@nokia-sbell.com>
Date: Thu, 13 Mar 2025 14:19:03 +0800
Subject: [PATCH] eal/linux: improve ASLR check
[ upstream commit dcf9f9363aa9b4163d241caf8b26a84ca0c0006b ]
This change ensures that the current process is checked for
being run with 'setarch' before verifying the value of
'/proc/sys/kernel/randomize_va_space'. The '-R' or
'--addr-no-randomize' parameter of the 'setarch' command is used
to disable the randomization of the virtual address space.
Fixes: af75078fece3 ("first public release")
Signed-off-by: Yang Ming <ming.1.yang@nokia-sbell.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/eal/linux/eal_memory.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/lib/eal/linux/eal_memory.c b/lib/eal/linux/eal_memory.c
index 9dda60c0e1..5ef1575b66 100644
--- a/lib/eal/linux/eal_memory.c
+++ b/lib/eal/linux/eal_memory.c
@@ -16,4 +16,5 @@
#include <sys/file.h>
#include <sys/resource.h>
+#include <sys/personality.h>
#include <unistd.h>
#include <limits.h>
@@ -201,4 +202,15 @@ aslr_enabled(void)
{
char c;
+
+ /*
+ * Check whether the current process is executed with the command line
+ * "setarch ... --addr-no-randomize ..." or "setarch ... -R ..."
+ * This complements the sysfs check to ensure comprehensive ASLR status detection.
+ * This check is necessary to support the functionality of the "setarch" command,
+ * which can disable ASLR by setting the ADDR_NO_RANDOMIZE personality flag.
+ */
+ if ((personality(0xffffffff) & ADDR_NO_RANDOMIZE) == ADDR_NO_RANDOMIZE)
+ return 0;
+
int retval, fd = open(RANDOMIZE_VA_SPACE_FILE, O_RDONLY);
if (fd < 0)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.410768838 +0100
+++ 0007-eal-linux-improve-ASLR-check.patch 2025-07-18 20:29:10.808906957 +0100
@@ -1 +1 @@
-From dcf9f9363aa9b4163d241caf8b26a84ca0c0006b Mon Sep 17 00:00:00 2001
+From 9d88498a1cf3abf2460b03ba691e6f8d32dd5a3d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dcf9f9363aa9b4163d241caf8b26a84ca0c0006b ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 8c896379fe..7f03bb517b 100644
+index 9dda60c0e1..5ef1575b66 100644
@@ -31 +32 @@
-@@ -204,4 +205,15 @@ aslr_enabled(void)
+@@ -201,4 +202,15 @@ aslr_enabled(void)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/idpf: fix truncation of constant value' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (5 preceding siblings ...)
2025-07-18 19:29 ` patch 'eal/linux: improve ASLR check' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/e1000: fix EEPROM dump' " Kevin Traynor
` (167 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Praveen Shetty; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1b504f63efd3f50a180e01c5d2f7918adfb4d36e
Thanks.
Kevin
---
From 1b504f63efd3f50a180e01c5d2f7918adfb4d36e Mon Sep 17 00:00:00 2001
From: Praveen Shetty <praveen.shetty@intel.com>
Date: Wed, 9 Apr 2025 12:54:40 +0000
Subject: [PATCH] net/idpf: fix truncation of constant value
[ upstream commit fc3667401fd5eaf94dd3d83ee96df105641f0904 ]
Truncation of constant value compiler warning was reported in clang/msvc
compiler for the VIRTCHNL2_CAP_OEM bit setting. This is due to 64 bit
value initializing a member of a (32 bit) enum. VIRTCHNL2_CAP_OEM
capability is not used in the present dpdk code, so remove this bit
setting from the dpdk to avoid the truncation issue.
Fixes: 1feb0305e00e ("common/idpf: move related defines into enums")
Signed-off-by: Praveen Shetty <praveen.shetty@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/common/idpf/base/virtchnl2.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/common/idpf/base/virtchnl2.h b/drivers/common/idpf/base/virtchnl2.h
index 3285a2b674..cf010c0504 100644
--- a/drivers/common/idpf/base/virtchnl2.h
+++ b/drivers/common/idpf/base/virtchnl2.h
@@ -266,6 +266,4 @@ enum virtchnl2_cap_other {
*/
VIRTCHNL2_CAP_MISS_COMPL_TAG = BIT_ULL(20),
- /* This must be the last capability */
- VIRTCHNL2_CAP_OEM = BIT_ULL(63),
};
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.439792337 +0100
+++ 0008-net-idpf-fix-truncation-of-constant-value.patch 2025-07-18 20:29:10.809906960 +0100
@@ -1 +1 @@
-From fc3667401fd5eaf94dd3d83ee96df105641f0904 Mon Sep 17 00:00:00 2001
+From 1b504f63efd3f50a180e01c5d2f7918adfb4d36e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fc3667401fd5eaf94dd3d83ee96df105641f0904 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
- drivers/net/intel/idpf/base/virtchnl2.h | 2 --
+ drivers/common/idpf/base/virtchnl2.h | 2 --
@@ -21 +22 @@
-diff --git a/drivers/net/intel/idpf/base/virtchnl2.h b/drivers/net/intel/idpf/base/virtchnl2.h
+diff --git a/drivers/common/idpf/base/virtchnl2.h b/drivers/common/idpf/base/virtchnl2.h
@@ -23,2 +24,2 @@
---- a/drivers/net/intel/idpf/base/virtchnl2.h
-+++ b/drivers/net/intel/idpf/base/virtchnl2.h
+--- a/drivers/common/idpf/base/virtchnl2.h
++++ b/drivers/common/idpf/base/virtchnl2.h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/e1000: fix EEPROM dump' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (6 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/idpf: fix truncation of constant value' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ixgbe: enable ethertype filter for E610' " Kevin Traynor
` (166 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Yuan Wang; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/aab056c1b81c12083373e1f25e01c176239eaaab
Thanks.
Kevin
---
From aab056c1b81c12083373e1f25e01c176239eaaab Mon Sep 17 00:00:00 2001
From: Yuan Wang <yuanx.wang@intel.com>
Date: Tue, 15 Apr 2025 15:48:02 +0800
Subject: [PATCH] net/e1000: fix EEPROM dump
[ upstream commit b3855b93dcc890f40dce3b688f5a331dcd8d14e8 ]
There is a incorrect comparison in get_eeprom that cause EEPROM dump
fail. Allow valid case when "first + offset == word_size".
Fixes: 83c314da4c38 ("igb: add access to specific device info")
Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/e1000/igb_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 1d966d67eb..266d74b444 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -5219,5 +5219,5 @@ eth_igb_get_eeprom(struct rte_eth_dev *dev,
length = in_eeprom->length >> 1;
if ((first >= hw->nvm.word_size) ||
- ((first + length) >= hw->nvm.word_size))
+ ((first + length) > hw->nvm.word_size))
return -EINVAL;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.468168754 +0100
+++ 0009-net-e1000-fix-EEPROM-dump.patch 2025-07-18 20:29:10.812906969 +0100
@@ -1 +1 @@
-From b3855b93dcc890f40dce3b688f5a331dcd8d14e8 Mon Sep 17 00:00:00 2001
+From aab056c1b81c12083373e1f25e01c176239eaaab Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b3855b93dcc890f40dce3b688f5a331dcd8d14e8 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -15 +16 @@
- drivers/net/intel/e1000/igb_ethdev.c | 2 +-
+ drivers/net/e1000/igb_ethdev.c | 2 +-
@@ -18,5 +19,5 @@
-diff --git a/drivers/net/intel/e1000/igb_ethdev.c b/drivers/net/intel/e1000/igb_ethdev.c
-index 40f453c8d9..cb892fbf91 100644
---- a/drivers/net/intel/e1000/igb_ethdev.c
-+++ b/drivers/net/intel/e1000/igb_ethdev.c
-@@ -5220,5 +5220,5 @@ eth_igb_get_eeprom(struct rte_eth_dev *dev,
+diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
+index 1d966d67eb..266d74b444 100644
+--- a/drivers/net/e1000/igb_ethdev.c
++++ b/drivers/net/e1000/igb_ethdev.c
+@@ -5219,5 +5219,5 @@ eth_igb_get_eeprom(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe: enable ethertype filter for E610' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (7 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/e1000: fix EEPROM dump' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ixgbe: fix port mask default value in filter' " Kevin Traynor
` (165 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Kaiwen Deng; +Cc: Hailin Xu, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/00c4dc3d52b0650237a88721b5584c8145a6b64f
Thanks.
Kevin
---
From 00c4dc3d52b0650237a88721b5584c8145a6b64f Mon Sep 17 00:00:00 2001
From: Kaiwen Deng <kaiwenx.deng@intel.com>
Date: Wed, 23 Apr 2025 13:53:39 +0800
Subject: [PATCH] net/ixgbe: enable ethertype filter for E610
[ upstream commit 09766f41b320e68a27ef392af2f34ed5817bf5af ]
This commit adds the E610 MAC type to the filter support check.
Fixes: 962549bb27c7 ("net/ixgbe: move MAC type check macros")
Signed-off-by: Kaiwen Deng <kaiwenx.deng@intel.com>
Tested-by: Hailin Xu <hailinx.xu@intel.com>
---
drivers/net/ixgbe/ixgbe_ethdev.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h
index 8ad841ea2c..7804b4ca03 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.h
+++ b/drivers/net/ixgbe/ixgbe_ethdev.h
@@ -146,5 +146,5 @@
if ((type) != ixgbe_mac_82599EB && (type) != ixgbe_mac_X540 &&\
(type) != ixgbe_mac_X550 && (type) != ixgbe_mac_X550EM_x &&\
- (type) != ixgbe_mac_X550EM_a)\
+ (type) != ixgbe_mac_X550EM_a && (type) != ixgbe_mac_E610)\
return -ENOTSUP;\
} while (0)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.498530507 +0100
+++ 0010-net-ixgbe-enable-ethertype-filter-for-E610.patch 2025-07-18 20:29:10.813906972 +0100
@@ -1 +1 @@
-From 09766f41b320e68a27ef392af2f34ed5817bf5af Mon Sep 17 00:00:00 2001
+From 00c4dc3d52b0650237a88721b5584c8145a6b64f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 09766f41b320e68a27ef392af2f34ed5817bf5af ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -14 +15 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.h | 2 +-
+ drivers/net/ixgbe/ixgbe_ethdev.h | 2 +-
@@ -17,4 +18,4 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.h b/drivers/net/intel/ixgbe/ixgbe_ethdev.h
-index 5bf8de4be6..86da9fc89b 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.h
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.h
+diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h
+index 8ad841ea2c..7804b4ca03 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.h
++++ b/drivers/net/ixgbe/ixgbe_ethdev.h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe: fix port mask default value in filter' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (8 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ixgbe: enable ethertype filter for E610' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/e1000: fix igb Tx queue offloads capability' " Kevin Traynor
` (164 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Yuan Wang; +Cc: Hailin Xu, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/b9f98a5fa3a76f12fd45e72d048bc965a0555d30
Thanks.
Kevin
---
From b9f98a5fa3a76f12fd45e72d048bc965a0555d30 Mon Sep 17 00:00:00 2001
From: Yuan Wang <yuanx.wang@intel.com>
Date: Fri, 18 Apr 2025 15:43:09 +0800
Subject: [PATCH] net/ixgbe: fix port mask default value in filter
[ upstream commit c81daae2383ac655fe503e7da4767959ccc38ab7 ]
The fdir filter should mask L4 protocol in order to process raw IP
packets. However, the initial value of port mask is 0xFF and the filter
will not process raw IP packets if the flow rule does not change it.
Fixed by setting the default value to 0.
Fixes: 444505f933f1 ("net/ixgbe: fix IPv6 mask in flow director")
Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
Tested-by: Hailin Xu <hailinx.xu@intel.com>
---
drivers/net/ixgbe/ixgbe_flow.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c
index 33da2f47ec..1e3804bb15 100644
--- a/drivers/net/ixgbe/ixgbe_flow.c
+++ b/drivers/net/ixgbe/ixgbe_flow.c
@@ -1645,4 +1645,6 @@ ixgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev,
rule->mask.vlan_tci_mask = 0;
rule->mask.flex_bytes_mask = 0;
+ rule->mask.dst_port_mask = 0;
+ rule->mask.src_port_mask = 0;
/**
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.527692761 +0100
+++ 0011-net-ixgbe-fix-port-mask-default-value-in-filter.patch 2025-07-18 20:29:10.815906978 +0100
@@ -1 +1 @@
-From c81daae2383ac655fe503e7da4767959ccc38ab7 Mon Sep 17 00:00:00 2001
+From b9f98a5fa3a76f12fd45e72d048bc965a0555d30 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c81daae2383ac655fe503e7da4767959ccc38ab7 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
- drivers/net/intel/ixgbe/ixgbe_flow.c | 2 ++
+ drivers/net/ixgbe/ixgbe_flow.c | 2 ++
@@ -21 +22 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_flow.c b/drivers/net/intel/ixgbe/ixgbe_flow.c
+diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c
@@ -23,2 +24,2 @@
---- a/drivers/net/intel/ixgbe/ixgbe_flow.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_flow.c
+--- a/drivers/net/ixgbe/ixgbe_flow.c
++++ b/drivers/net/ixgbe/ixgbe_flow.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/e1000: fix igb Tx queue offloads capability' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (9 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ixgbe: fix port mask default value in filter' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ice: fix flow creation failure' " Kevin Traynor
` (163 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Kaiwen Deng; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4fc463e078bf2e408a3c5100a71e87011d1510ab
Thanks.
Kevin
---
From 4fc463e078bf2e408a3c5100a71e87011d1510ab Mon Sep 17 00:00:00 2001
From: Kaiwen Deng <kaiwenx.deng@intel.com>
Date: Mon, 14 Apr 2025 16:53:52 +0800
Subject: [PATCH] net/e1000: fix igb Tx queue offloads capability
[ upstream commit c2a1b38d779d8aed009e7f285ae95988bf9661da ]
The igb driver incorrectly assigns the tx port offload capability to the
tx queue offload capability. Return zero, for no queue-specific
capabilities instead.
Fixes: daa3b0833f08 ("net/e1000: fix Tx offload capability typos")
Signed-off-by: Kaiwen Deng <kaiwenx.deng@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/e1000/igb_rxtx.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c
index 4276bb6d31..b63de2354f 100644
--- a/drivers/net/e1000/igb_rxtx.c
+++ b/drivers/net/e1000/igb_rxtx.c
@@ -1491,9 +1491,7 @@ uint64_t
igb_get_tx_queue_offloads_capa(struct rte_eth_dev *dev)
{
- uint64_t tx_queue_offload_capa;
+ RTE_SET_USED(dev);
- tx_queue_offload_capa = igb_get_tx_port_offloads_capa(dev);
-
- return tx_queue_offload_capa;
+ return 0;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.558171998 +0100
+++ 0012-net-e1000-fix-igb-Tx-queue-offloads-capability.patch 2025-07-18 20:29:10.816906982 +0100
@@ -1 +1 @@
-From c2a1b38d779d8aed009e7f285ae95988bf9661da Mon Sep 17 00:00:00 2001
+From 4fc463e078bf2e408a3c5100a71e87011d1510ab Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c2a1b38d779d8aed009e7f285ae95988bf9661da ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/e1000/igb_rxtx.c | 6 ++----
+ drivers/net/e1000/igb_rxtx.c | 6 ++----
@@ -19 +20 @@
-diff --git a/drivers/net/intel/e1000/igb_rxtx.c b/drivers/net/intel/e1000/igb_rxtx.c
+diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c
@@ -21,2 +22,2 @@
---- a/drivers/net/intel/e1000/igb_rxtx.c
-+++ b/drivers/net/intel/e1000/igb_rxtx.c
+--- a/drivers/net/e1000/igb_rxtx.c
++++ b/drivers/net/e1000/igb_rxtx.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice: fix flow creation failure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (10 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/e1000: fix igb Tx queue offloads capability' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ice: fix support for 3 scheduler levels' " Kevin Traynor
` (162 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dhanya Pillai; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bcaa988a8f71765389071c656ae3d6e1429fc29d
Thanks.
Kevin
---
From bcaa988a8f71765389071c656ae3d6e1429fc29d Mon Sep 17 00:00:00 2001
From: Dhanya Pillai <dhanya.r.pillai@intel.com>
Date: Thu, 15 May 2025 11:23:44 +0000
Subject: [PATCH] net/ice: fix flow creation failure
[ upstream commit 1f332499adc57c86c46fdb26c923f8f56d4cb765 ]
In non-pipeline mode, priority is ignored, and a flow rule can be
created as a flow director rule or a switch rule depending only on its
pattern/action. Therefore, remove the priority field check from
ice_fdir_parse which is causing valid flow creation to return failure.
Fixes: 14b12c939f3a ("net/ice: remove pipeline mode")
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_fdir_filter.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 406918fed5..dc28328c09 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -2440,5 +2440,5 @@ ice_fdir_parse(struct ice_adapter *ad,
const struct rte_flow_item pattern[],
const struct rte_flow_action actions[],
- uint32_t priority,
+ uint32_t priority __rte_unused,
void **meta,
struct rte_flow_error *error)
@@ -2455,7 +2455,4 @@ ice_fdir_parse(struct ice_adapter *ad,
error);
- if (priority >= 1)
- return -rte_errno;
-
if (!item)
return -rte_errno;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.587397871 +0100
+++ 0013-net-ice-fix-flow-creation-failure.patch 2025-07-18 20:29:10.817906985 +0100
@@ -1 +1 @@
-From 1f332499adc57c86c46fdb26c923f8f56d4cb765 Mon Sep 17 00:00:00 2001
+From bcaa988a8f71765389071c656ae3d6e1429fc29d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1f332499adc57c86c46fdb26c923f8f56d4cb765 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_fdir_filter.c | 5 +----
+ drivers/net/ice/ice_fdir_filter.c | 5 +----
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index 2ff0090aca..d41d223d52 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -2447,5 +2447,5 @@ ice_fdir_parse(struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 406918fed5..dc28328c09 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -2440,5 +2440,5 @@ ice_fdir_parse(struct ice_adapter *ad,
@@ -31 +32 @@
-@@ -2462,7 +2462,4 @@ ice_fdir_parse(struct ice_adapter *ad,
+@@ -2455,7 +2455,4 @@ ice_fdir_parse(struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice: fix support for 3 scheduler levels' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (11 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ice: fix flow creation failure' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'vhost: fix wrapping on control virtqueue rings' " Kevin Traynor
` (161 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5075b4bbbceb75d3d7991c8e17d0b7d31d04cdd3
Thanks.
Kevin
---
From 5075b4bbbceb75d3d7991c8e17d0b7d31d04cdd3 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 6 May 2025 11:34:14 +0100
Subject: [PATCH] net/ice: fix support for 3 scheduler levels
[ upstream commit c8f20c67da13294934dc71e6c18427685ca6eb38 ]
When using only 3 scheduler levels, the VSI node needs to be a node
further down the scheduler hierarchy, rather than one up it as with all
other possible level settings (5-9). Take account of this possibility in
the code.
Fixes: 4ace7701eb44 ("net/ice: provide parameter to limit scheduler layers")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/ice/ice_tm.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/ice/ice_tm.c b/drivers/net/ice/ice_tm.c
index ff3a6cd77f..f2d8e12181 100644
--- a/drivers/net/ice/ice_tm.c
+++ b/drivers/net/ice/ice_tm.c
@@ -819,4 +819,16 @@ commit_new_hierarchy(struct rte_eth_dev *dev)
struct ice_sched_node *new_vsi_root = hw->vsi_ctx[pf->main_vsi->idx]->sched.vsi_node[0];
+ /* handle case where VSI node needs to move DOWN the hierarchy */
+ while (new_vsi_root->tx_sched_layer < new_root_level) {
+ if (new_vsi_root->num_children == 0)
+ return -1;
+ /* remove all child nodes but the first */
+ while (new_vsi_root->num_children > 1)
+ free_sched_node_recursive(pi, new_vsi_root,
+ new_vsi_root->children[1],
+ new_vsi_root->vsi_handle);
+ new_vsi_root = new_vsi_root->children[0];
+ }
+ /* handle case where VSI node needs to move UP the hierarchy */
while (new_vsi_root->tx_sched_layer > new_root_level)
new_vsi_root = new_vsi_root->parent;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.616372156 +0100
+++ 0014-net-ice-fix-support-for-3-scheduler-levels.patch 2025-07-18 20:29:10.818906988 +0100
@@ -1 +1 @@
-From c8f20c67da13294934dc71e6c18427685ca6eb38 Mon Sep 17 00:00:00 2001
+From 5075b4bbbceb75d3d7991c8e17d0b7d31d04cdd3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c8f20c67da13294934dc71e6c18427685ca6eb38 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_tm.c | 12 ++++++++++++
+ drivers/net/ice/ice_tm.c | 12 ++++++++++++
@@ -20 +21 @@
-diff --git a/drivers/net/intel/ice/ice_tm.c b/drivers/net/intel/ice/ice_tm.c
+diff --git a/drivers/net/ice/ice_tm.c b/drivers/net/ice/ice_tm.c
@@ -22,2 +23,2 @@
---- a/drivers/net/intel/ice/ice_tm.c
-+++ b/drivers/net/intel/ice/ice_tm.c
+--- a/drivers/net/ice/ice_tm.c
++++ b/drivers/net/ice/ice_tm.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'vhost: fix wrapping on control virtqueue rings' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (12 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ice: fix support for 3 scheduler levels' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'vhost/crypto: fix cipher data length' " Kevin Traynor
` (160 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: David Marchand; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/3478fefb08e696ca8b4081872f16697c3e25129e
Thanks.
Kevin
---
From 3478fefb08e696ca8b4081872f16697c3e25129e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 2 Apr 2025 08:53:58 +0200
Subject: [PATCH] vhost: fix wrapping on control virtqueue rings
[ upstream commit 38e640038798da92d1b7daf953f06fcd116cb952 ]
The idx field of a virtqueue available ring is increased by the driver
regardless of the ring size. It is for the device to mask this index
modulo the ring size (2.7.6 of the virtio 1.3 specification).
The same applies to the used ring.
Failing to mask triggers:
- crashes when popping message received on the cvq,
- system lockups (in the case of VDUSE) when the virtio-net driver waits
infinitely,
Fixes: 474f4d7840ad ("vhost: add control virtqueue")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/virtio_net_ctrl.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/lib/vhost/virtio_net_ctrl.c b/lib/vhost/virtio_net_ctrl.c
index b8ee94018e..5d411fc248 100644
--- a/lib/vhost/virtio_net_ctrl.c
+++ b/lib/vhost/virtio_net_ctrl.c
@@ -41,5 +41,5 @@ virtio_net_ctrl_pop(struct virtio_net *dev, struct vhost_virtqueue *cvq,
}
- desc_idx = cvq->avail->ring[cvq->last_avail_idx];
+ desc_idx = cvq->avail->ring[cvq->last_avail_idx & (cvq->size - 1)];
if (desc_idx >= cvq->size) {
VHOST_CONFIG_LOG(dev->ifname, ERR, "Out of range desc index, dropping");
@@ -168,6 +168,4 @@ virtio_net_ctrl_pop(struct virtio_net *dev, struct vhost_virtqueue *cvq,
cvq->last_avail_idx++;
- if (cvq->last_avail_idx >= cvq->size)
- cvq->last_avail_idx -= cvq->size;
vhost_virtqueue_reconnect_log_split(cvq);
@@ -181,6 +179,4 @@ free_err:
err:
cvq->last_avail_idx++;
- if (cvq->last_avail_idx >= cvq->size)
- cvq->last_avail_idx -= cvq->size;
vhost_virtqueue_reconnect_log_split(cvq);
@@ -232,11 +228,9 @@ virtio_net_ctrl_push(struct virtio_net *dev, struct virtio_net_ctrl_elem *ctrl_e
struct vring_used_elem *used_elem;
- used_elem = &cvq->used->ring[cvq->last_used_idx];
+ used_elem = &cvq->used->ring[cvq->last_used_idx & (cvq->size - 1)];
used_elem->id = ctrl_elem->head_idx;
used_elem->len = ctrl_elem->n_descs;
cvq->last_used_idx++;
- if (cvq->last_used_idx >= cvq->size)
- cvq->last_used_idx -= cvq->size;
rte_atomic_store_explicit((unsigned short __rte_atomic *)&cvq->used->idx,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.644603097 +0100
+++ 0015-vhost-fix-wrapping-on-control-virtqueue-rings.patch 2025-07-18 20:29:10.819906991 +0100
@@ -1 +1 @@
-From 38e640038798da92d1b7daf953f06fcd116cb952 Mon Sep 17 00:00:00 2001
+From 3478fefb08e696ca8b4081872f16697c3e25129e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 38e640038798da92d1b7daf953f06fcd116cb952 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 999e84db7c..63c0a06b4f 100644
+index b8ee94018e..5d411fc248 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'vhost/crypto: fix cipher data length' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (13 preceding siblings ...)
2025-07-18 19:29 ` patch 'vhost: fix wrapping on control virtqueue rings' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'crypto/virtio: fix cipher data source " Kevin Traynor
` (159 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Rajesh Mudimadugula; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/65567ebbb6200da3ab16fdd0b7f7e1ee32ac1fa0
Thanks.
Kevin
---
From 65567ebbb6200da3ab16fdd0b7f7e1ee32ac1fa0 Mon Sep 17 00:00:00 2001
From: Rajesh Mudimadugula <rmudimadugul@marvell.com>
Date: Thu, 3 Apr 2025 12:22:34 +0000
Subject: [PATCH] vhost/crypto: fix cipher data length
[ upstream commit 7ccd67c4185e1f4f0b975ff954e8685252bc3a18 ]
This patch fixes cipher data length, in the event of algorithm
chaining. When enqueuing crypto op to vhost backend
cipher.data.length is set correctly which is in
virtqueue_crypto_sym_pkt_header_arrange(). This field is computed
and assigned wrongly instead of using passed value. This is
rectified and using correct cipher data length in vhost crypto.
Fixes: 3bb595ecd682 ("vhost/crypto: add request handler")
Signed-off-by: Rajesh Mudimadugula <rmudimadugul@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
lib/vhost/vhost_crypto.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/vhost/vhost_crypto.c b/lib/vhost/vhost_crypto.c
index 912dae012b..7a5e290822 100644
--- a/lib/vhost/vhost_crypto.c
+++ b/lib/vhost/vhost_crypto.c
@@ -1108,6 +1108,5 @@ prepare_sym_chain_op(struct vhost_crypto *vcrypto, struct rte_crypto_op *op,
op->sym->cipher.data.offset = chain->para.cipher_start_src_offset;
- op->sym->cipher.data.length = chain->para.src_data_len -
- chain->para.cipher_start_src_offset;
+ op->sym->cipher.data.length = chain->para.len_to_cipher;
op->sym->auth.data.offset = chain->para.hash_start_src_offset;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.672715831 +0100
+++ 0016-vhost-crypto-fix-cipher-data-length.patch 2025-07-18 20:29:10.820906994 +0100
@@ -1 +1 @@
-From 7ccd67c4185e1f4f0b975ff954e8685252bc3a18 Mon Sep 17 00:00:00 2001
+From 65567ebbb6200da3ab16fdd0b7f7e1ee32ac1fa0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7ccd67c4185e1f4f0b975ff954e8685252bc3a18 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index f78daf98d1..29c9cb613d 100644
+index 912dae012b..7a5e290822 100644
@@ -26 +27 @@
-@@ -1360,6 +1360,5 @@ prepare_sym_chain_op(struct vhost_crypto *vcrypto, struct rte_crypto_op *op,
+@@ -1108,6 +1108,5 @@ prepare_sym_chain_op(struct vhost_crypto *vcrypto, struct rte_crypto_op *op,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/virtio: fix cipher data source length' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (14 preceding siblings ...)
2025-07-18 19:29 ` patch 'vhost/crypto: fix cipher data length' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'event/cnxk: fix missing HW state checks' " Kevin Traynor
` (158 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Rajesh Mudimadugula; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/b2c6f4b660fd898960430fcca12f5447de8e0f64
Thanks.
Kevin
---
From b2c6f4b660fd898960430fcca12f5447de8e0f64 Mon Sep 17 00:00:00 2001
From: Rajesh Mudimadugula <rmudimadugul@marvell.com>
Date: Thu, 3 Apr 2025 12:26:03 +0000
Subject: [PATCH] crypto/virtio: fix cipher data source length
[ upstream commit fcb4d1f48e4aecb6be4ef7a4f6f25df24fee0ea2 ]
In symmetric algorithm chaining, we need to consider both
cipher and auth data length for cipher source.
Fixes: 82adb12a1fce ("crypto/virtio: support burst enqueue/dequeue")
Signed-off-by: Rajesh Mudimadugula <rmudimadugul@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
drivers/crypto/virtio/virtio_rxtx.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/crypto/virtio/virtio_rxtx.c b/drivers/crypto/virtio/virtio_rxtx.c
index d02486661f..01977c7ec4 100644
--- a/drivers/crypto/virtio/virtio_rxtx.c
+++ b/drivers/crypto/virtio/virtio_rxtx.c
@@ -158,6 +158,8 @@ virtqueue_crypto_sym_pkt_header_arrange(
req_data->u.sym_req.u.chain.para.src_data_len =
- (sym_op->cipher.data.length +
- sym_op->cipher.data.offset);
+ RTE_MAX((sym_op->cipher.data.length +
+ sym_op->cipher.data.offset),
+ (sym_op->auth.data.length +
+ sym_op->auth.data.offset));
req_data->u.sym_req.u.chain.para.dst_data_len =
req_data->u.sym_req.u.chain.para.src_data_len;
@@ -213,4 +215,5 @@ virtqueue_crypto_sym_enqueue_xmit(
struct virtio_crypto_op_cookie *crypto_op_cookie;
struct virtio_crypto_alg_chain_session_para *para;
+ uint32_t src_len;
if (unlikely(sym_op->m_src->nb_segs != 1))
@@ -286,8 +289,11 @@ virtqueue_crypto_sym_enqueue_xmit(
}
+ src_len = RTE_MAX((sym_op->cipher.data.offset +
+ sym_op->cipher.data.length),
+ (sym_op->auth.data.length +
+ sym_op->auth.data.offset));
/* indirect vring: src data */
desc[idx].addr = rte_pktmbuf_iova_offset(sym_op->m_src, 0);
- desc[idx].len = (sym_op->cipher.data.offset
- + sym_op->cipher.data.length);
+ desc[idx].len = src_len;
desc[idx++].flags = VRING_DESC_F_NEXT;
@@ -295,10 +301,8 @@ virtqueue_crypto_sym_enqueue_xmit(
if (sym_op->m_dst) {
desc[idx].addr = rte_pktmbuf_iova_offset(sym_op->m_dst, 0);
- desc[idx].len = (sym_op->cipher.data.offset
- + sym_op->cipher.data.length);
+ desc[idx].len = src_len;
} else {
desc[idx].addr = rte_pktmbuf_iova_offset(sym_op->m_src, 0);
- desc[idx].len = (sym_op->cipher.data.offset
- + sym_op->cipher.data.length);
+ desc[idx].len = src_len;
}
desc[idx++].flags = VRING_DESC_F_WRITE | VRING_DESC_F_NEXT;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.700936578 +0100
+++ 0017-crypto-virtio-fix-cipher-data-source-length.patch 2025-07-18 20:29:10.821813025 +0100
@@ -1 +1 @@
-From fcb4d1f48e4aecb6be4ef7a4f6f25df24fee0ea2 Mon Sep 17 00:00:00 2001
+From b2c6f4b660fd898960430fcca12f5447de8e0f64 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fcb4d1f48e4aecb6be4ef7a4f6f25df24fee0ea2 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 0cc904485c..a7f1bd9753 100644
+index d02486661f..01977c7ec4 100644
@@ -22 +23 @@
-@@ -244,6 +244,8 @@ virtqueue_crypto_sym_pkt_header_arrange(
+@@ -158,6 +158,8 @@ virtqueue_crypto_sym_pkt_header_arrange(
@@ -33 +34 @@
-@@ -299,4 +301,5 @@ virtqueue_crypto_sym_enqueue_xmit_split(
+@@ -213,4 +215,5 @@ virtqueue_crypto_sym_enqueue_xmit(
@@ -39 +40 @@
-@@ -372,8 +375,11 @@ virtqueue_crypto_sym_enqueue_xmit_split(
+@@ -286,8 +289,11 @@ virtqueue_crypto_sym_enqueue_xmit(
@@ -53 +54 @@
-@@ -381,10 +387,8 @@ virtqueue_crypto_sym_enqueue_xmit_split(
+@@ -295,10 +301,8 @@ virtqueue_crypto_sym_enqueue_xmit(
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/cnxk: fix missing HW state checks' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (15 preceding siblings ...)
2025-07-18 19:29 ` patch 'crypto/virtio: fix cipher data source " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'crypto/cnxk: fix uninitialized variable' " Kevin Traynor
` (157 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Pavan Nikhilesh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/717b7326e4f851b09773171e9922fa0926b5d0a8
Thanks.
Kevin
---
From 717b7326e4f851b09773171e9922fa0926b5d0a8 Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula@marvell.com>
Date: Thu, 10 Apr 2025 23:35:44 +0530
Subject: [PATCH] event/cnxk: fix missing HW state checks
[ upstream commit f77eb8f3c655a2573aed77bea122d98efc12edef ]
Fix missing HW state checks in timer arm routine in the cases where
thread has been scheduled out while holding a bucket lock.
Fixes: 300b796262a1 ("event/cnxk: add timer arm routine")
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
drivers/event/cnxk/cnxk_tim_worker.h | 140 ++++++++++++++-------------
1 file changed, 73 insertions(+), 67 deletions(-)
diff --git a/drivers/event/cnxk/cnxk_tim_worker.h b/drivers/event/cnxk/cnxk_tim_worker.h
index 6a9ee2fd52..09f84091ab 100644
--- a/drivers/event/cnxk/cnxk_tim_worker.h
+++ b/drivers/event/cnxk/cnxk_tim_worker.h
@@ -103,5 +103,5 @@ static inline void
cnxk_tim_bkt_inc_nent(struct cnxk_tim_bkt *bktp)
{
- rte_atomic_fetch_add_explicit(&bktp->nb_entry, 1, rte_memory_order_relaxed);
+ rte_atomic_fetch_add_explicit(&bktp->nb_entry, 1, rte_memory_order_release);
}
@@ -133,4 +133,31 @@ cnxk_tim_bkt_fast_mod(uint64_t n, uint64_t d, struct rte_reciprocal_u64 R)
}
+static inline uint64_t
+cnxk_tim_bkt_wait_hbt(struct cnxk_tim_bkt *bkt)
+{
+ uint64_t hbt_state;
+
+#ifdef RTE_ARCH_ARM64
+ asm volatile(PLT_CPU_FEATURE_PREAMBLE
+ " ldxr %[hbt], [%[w1]] \n"
+ " tbz %[hbt], 33, .Ldne%= \n"
+ " sevl \n"
+ ".Lrty%=: wfe \n"
+ " ldxr %[hbt], [%[w1]] \n"
+ " tbnz %[hbt], 33, .Lrty%=\n"
+ ".Ldne%=: \n"
+ : [hbt] "=&r"(hbt_state)
+ : [w1] "r"((&bkt->w1))
+ : "memory");
+#else
+ do {
+ hbt_state = rte_atomic_load_explicit(&bkt->w1,
+ rte_memory_order_relaxed);
+ } while (hbt_state & BIT_ULL(33));
+#endif
+
+ return hbt_state;
+}
+
static inline void
cnxk_tim_format_event(const struct rte_event_timer *const tim, struct cnxk_tim_ent *const entry)
@@ -266,23 +293,14 @@ __retry:
if (unlikely(cnxk_tim_bkt_get_hbt(lock_sema))) {
if (cnxk_tim_bkt_get_nent(lock_sema) != 0) {
- uint64_t hbt_state;
-#ifdef RTE_ARCH_ARM64
- asm volatile(PLT_CPU_FEATURE_PREAMBLE
- " ldxr %[hbt], [%[w1]] \n"
- " tbz %[hbt], 33, .Ldne%= \n"
- " sevl \n"
- ".Lrty%=: wfe \n"
- " ldxr %[hbt], [%[w1]] \n"
- " tbnz %[hbt], 33, .Lrty%=\n"
- ".Ldne%=: \n"
- : [hbt] "=&r"(hbt_state)
- : [w1] "r"((&bkt->w1))
- : "memory");
-#else
- do {
- hbt_state = rte_atomic_load_explicit(&bkt->w1,
- rte_memory_order_relaxed);
- } while (hbt_state & BIT_ULL(33));
-#endif
+ uint64_t hbt_state = cnxk_tim_bkt_wait_hbt(bkt);
+
+ if (cnxk_tim_bkt_get_nent(lock_sema) != 0 &&
+ cnxk_tim_bkt_get_nent(hbt_state) == 0) {
+ cnxk_tim_bkt_dec_lock(bkt);
+ goto __retry;
+ }
+
+ if (cnxk_tim_bkt_get_nent(hbt_state) != 0)
+ hbt_state |= BIT_ULL(34);
if (!(hbt_state & BIT_ULL(34)) ||
@@ -291,4 +309,6 @@ __retry:
goto __retry;
}
+ } else {
+ cnxk_tim_bkt_wait_hbt(bkt);
}
}
@@ -322,7 +342,7 @@ __retry:
tim->impl_opaque[0] = (uintptr_t)chunk;
tim->impl_opaque[1] = (uintptr_t)bkt;
- rte_atomic_store_explicit(&tim->state, RTE_EVENT_TIMER_ARMED, rte_memory_order_release);
+ tim->state = RTE_EVENT_TIMER_ARMED;
cnxk_tim_bkt_inc_nent(bkt);
- cnxk_tim_bkt_dec_lock_relaxed(bkt);
+ cnxk_tim_bkt_dec_lock(bkt);
return 0;
@@ -349,23 +369,14 @@ __retry:
if (unlikely(cnxk_tim_bkt_get_hbt(lock_sema))) {
if (cnxk_tim_bkt_get_nent(lock_sema) != 0) {
- uint64_t hbt_state;
-#ifdef RTE_ARCH_ARM64
- asm volatile(PLT_CPU_FEATURE_PREAMBLE
- " ldxr %[hbt], [%[w1]] \n"
- " tbz %[hbt], 33, .Ldne%= \n"
- " sevl \n"
- ".Lrty%=: wfe \n"
- " ldxr %[hbt], [%[w1]] \n"
- " tbnz %[hbt], 33, .Lrty%=\n"
- ".Ldne%=: \n"
- : [hbt] "=&r"(hbt_state)
- : [w1] "r"((&bkt->w1))
- : "memory");
-#else
- do {
- hbt_state = rte_atomic_load_explicit(&bkt->w1,
- rte_memory_order_relaxed);
- } while (hbt_state & BIT_ULL(33));
-#endif
+ uint64_t hbt_state = cnxk_tim_bkt_wait_hbt(bkt);
+
+ if (cnxk_tim_bkt_get_nent(lock_sema) != 0 &&
+ cnxk_tim_bkt_get_nent(hbt_state) == 0) {
+ cnxk_tim_bkt_dec_lock(bkt);
+ goto __retry;
+ }
+
+ if (cnxk_tim_bkt_get_nent(hbt_state) != 0)
+ hbt_state |= BIT_ULL(34);
if (!(hbt_state & BIT_ULL(34)) ||
@@ -374,4 +385,6 @@ __retry:
goto __retry;
}
+ } else {
+ cnxk_tim_bkt_wait_hbt(bkt);
}
}
@@ -413,5 +426,4 @@ __retry:
return -ENOMEM;
}
- *chunk = *pent;
if (cnxk_tim_bkt_fetch_lock(lock_sema)) {
do {
@@ -420,4 +432,5 @@ __retry:
} while (cnxk_tim_bkt_fetch_lock(lock_sema) - 1);
}
+ cnxk_tim_bkt_inc_nent(bkt);
rte_atomic_thread_fence(rte_memory_order_acquire);
mirr_bkt->current_chunk = (uintptr_t)chunk;
@@ -427,12 +440,12 @@ __retry:
chunk = (struct cnxk_tim_ent *)mirr_bkt->current_chunk;
chunk += tim_ring->nb_chunk_slots - rem;
- *chunk = *pent;
+ cnxk_tim_bkt_inc_nent(bkt);
}
+ *chunk = *pent;
tim->impl_opaque[0] = (uintptr_t)chunk;
tim->impl_opaque[1] = (uintptr_t)bkt;
- rte_atomic_store_explicit(&tim->state, RTE_EVENT_TIMER_ARMED, rte_memory_order_release);
- cnxk_tim_bkt_inc_nent(bkt);
- cnxk_tim_bkt_dec_lock_relaxed(bkt);
+ tim->state = RTE_EVENT_TIMER_ARMED;
+ cnxk_tim_bkt_dec_lock(bkt);
return 0;
@@ -481,23 +494,14 @@ __retry:
if (unlikely(cnxk_tim_bkt_get_hbt(lock_sema))) {
if (cnxk_tim_bkt_get_nent(lock_sema) != 0) {
- uint64_t hbt_state;
-#ifdef RTE_ARCH_ARM64
- asm volatile(PLT_CPU_FEATURE_PREAMBLE
- " ldxr %[hbt], [%[w1]] \n"
- " tbz %[hbt], 33, .Ldne%= \n"
- " sevl \n"
- ".Lrty%=: wfe \n"
- " ldxr %[hbt], [%[w1]] \n"
- " tbnz %[hbt], 33, .Lrty%=\n"
- ".Ldne%=: \n"
- : [hbt] "=&r"(hbt_state)
- : [w1] "r"((&bkt->w1))
- : "memory");
-#else
- do {
- hbt_state = rte_atomic_load_explicit(&bkt->w1,
- rte_memory_order_relaxed);
- } while (hbt_state & BIT_ULL(33));
-#endif
+ uint64_t hbt_state = cnxk_tim_bkt_wait_hbt(bkt);
+
+ if (cnxk_tim_bkt_get_nent(lock_sema) != 0 &&
+ cnxk_tim_bkt_get_nent(hbt_state) == 0) {
+ cnxk_tim_bkt_dec_lock(bkt);
+ goto __retry;
+ }
+
+ if (cnxk_tim_bkt_get_nent(hbt_state) != 0)
+ hbt_state |= BIT_ULL(34);
if (!(hbt_state & BIT_ULL(34)) ||
@@ -506,4 +510,6 @@ __retry:
goto __retry;
}
+ } else {
+ cnxk_tim_bkt_wait_hbt(bkt);
}
}
@@ -554,5 +560,5 @@ __retry:
if (unlikely(chunk == NULL)) {
- cnxk_tim_bkt_dec_lock_relaxed(bkt);
+ cnxk_tim_bkt_dec_lock(bkt);
rte_errno = ENOMEM;
tim[index]->state = RTE_EVENT_TIMER_ERROR;
@@ -576,5 +582,5 @@ __retry:
}
- cnxk_tim_bkt_dec_lock_relaxed(bkt);
+ cnxk_tim_bkt_dec_lock(bkt);
return nb_timers;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.729382882 +0100
+++ 0018-event-cnxk-fix-missing-HW-state-checks.patch 2025-07-18 20:29:10.821906997 +0100
@@ -1 +1 @@
-From f77eb8f3c655a2573aed77bea122d98efc12edef Mon Sep 17 00:00:00 2001
+From 717b7326e4f851b09773171e9922fa0926b5d0a8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f77eb8f3c655a2573aed77bea122d98efc12edef ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/cnxk: fix uninitialized variable' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (16 preceding siblings ...)
2025-07-18 19:29 ` patch 'event/cnxk: fix missing HW state checks' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'crypto/cnxk: fix out-of-bounds access in SM2' " Kevin Traynor
` (156 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f83dfdb5b08bb80e4286ff2879d25cd90bf52a13
Thanks.
Kevin
---
From f83dfdb5b08bb80e4286ff2879d25cd90bf52a13 Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Thu, 15 May 2025 13:36:29 +0530
Subject: [PATCH] crypto/cnxk: fix uninitialized variable
[ upstream commit 1f720746bed33069c72b7ed08546aea5e9a9aed4 ]
This change fixes an uninitialized local variable as reported
in coverity issue 445390.
Coverity issue: 445390
Fixes: a8ebe94f8cc1 ("crypto/cnxk: support EdDSA")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
drivers/crypto/cnxk/cnxk_ae.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index cd66f66e70..82dce507bd 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -192,5 +192,5 @@ cnxk_ae_fill_ec_params(struct cnxk_ae_sess *sess, struct rte_crypto_asym_xform *
{
struct roc_ae_ec_ctx *ec = &sess->ec_ctx;
- union cpt_inst_w4 w4;
+ union cpt_inst_w4 w4 = {0};
switch (xform->ec.curve_id) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.758373291 +0100
+++ 0019-crypto-cnxk-fix-uninitialized-variable.patch 2025-07-18 20:29:10.822907000 +0100
@@ -1 +1 @@
-From 1f720746bed33069c72b7ed08546aea5e9a9aed4 Mon Sep 17 00:00:00 2001
+From f83dfdb5b08bb80e4286ff2879d25cd90bf52a13 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1f720746bed33069c72b7ed08546aea5e9a9aed4 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/cnxk: fix out-of-bounds access in SM2' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (17 preceding siblings ...)
2025-07-18 19:29 ` patch 'crypto/cnxk: fix uninitialized variable' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'app/crypto-perf: fix AAD offset alignment' " Kevin Traynor
` (155 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e9e52ecc9f1cf0c27eca9c190609da46098a53bf
Thanks.
Kevin
---
From e9e52ecc9f1cf0c27eca9c190609da46098a53bf Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Thu, 15 May 2025 13:35:25 +0530
Subject: [PATCH] crypto/cnxk: fix out-of-bounds access in SM2
[ upstream commit cfefc94a8c155aceb2da519b6b34a01b5caa65e3 ]
Fix coverity issue on out-of-bounds access.
Coverity issue: 403166, 403171, 403172
Fixes: 5686b573e4bb ("crypto/cnxk: support SM2")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
drivers/crypto/cnxk/cnxk_ae.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index 82dce507bd..8508ab8736 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -1091,4 +1091,7 @@ cnxk_ae_sm2_sign_prep(struct rte_crypto_sm2_op_param *sm2,
order_len = ROC_AE_EC_DATA_MAX;
+ if (pkey_len > ROC_AE_EC_DATA_MAX)
+ pkey_len = ROC_AE_EC_DATA_MAX;
+
/* Truncate input length to curve prime length */
if (message_len > prime_len)
@@ -1182,4 +1185,10 @@ cnxk_ae_sm2_verify_prep(struct rte_crypto_sm2_op_param *sm2,
order_len = ROC_AE_EC_DATA_MAX;
+ if (qx_len > ROC_AE_EC_DATA_MAX)
+ qx_len = ROC_AE_EC_DATA_MAX;
+
+ if (qy_len > ROC_AE_EC_DATA_MAX)
+ qy_len = ROC_AE_EC_DATA_MAX;
+
/* Truncate input length to curve prime length */
if (message_len > prime_len)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.786900891 +0100
+++ 0020-crypto-cnxk-fix-out-of-bounds-access-in-SM2.patch 2025-07-18 20:29:10.823907003 +0100
@@ -1 +1 @@
-From cfefc94a8c155aceb2da519b6b34a01b5caa65e3 Mon Sep 17 00:00:00 2001
+From e9e52ecc9f1cf0c27eca9c190609da46098a53bf Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cfefc94a8c155aceb2da519b6b34a01b5caa65e3 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'app/crypto-perf: fix AAD offset alignment' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (18 preceding siblings ...)
2025-07-18 19:29 ` patch 'crypto/cnxk: fix out-of-bounds access in SM2' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'crypto/qat: fix out-of-place header bytes in AEAD raw API' " Kevin Traynor
` (154 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Shani Peretz; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0077cade0785e557af763911e0c87e8f239f3f92
Thanks.
Kevin
---
From 0077cade0785e557af763911e0c87e8f239f3f92 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Tue, 11 Mar 2025 11:01:21 +0200
Subject: [PATCH] app/crypto-perf: fix AAD offset alignment
[ upstream commit 7c52aea4e68e0cacc7e41ff08fcddbd513ad7e0a ]
AAD offset in AES-GCM crypto test was calculated by adding
16-byte alignment after the IV, which is only needed in AES-CCM.
The patch correct the AAD offset calculation in AES-GCM algorithm tests.
Fixes: 0b242422d385 ("app/crypto-perf: set AAD after the crypto operation")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
---
app/test-crypto-perf/cperf_ops.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c
index 6d5f510220..f9be51e17f 100644
--- a/app/test-crypto-perf/cperf_ops.c
+++ b/app/test-crypto-perf/cperf_ops.c
@@ -689,5 +689,7 @@ cperf_set_ops_aead(struct rte_crypto_op **ops,
/* AAD is placed after the IV */
uint16_t aad_offset = iv_offset +
- RTE_ALIGN_CEIL(test_vector->aead_iv.length, 16);
+ ((options->aead_algo == RTE_CRYPTO_AEAD_AES_CCM) ?
+ RTE_ALIGN_CEIL(test_vector->aead_iv.length, 16) :
+ test_vector->aead_iv.length);
for (i = 0; i < nb_ops; i++) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.815465182 +0100
+++ 0021-app-crypto-perf-fix-AAD-offset-alignment.patch 2025-07-18 20:29:10.825021385 +0100
@@ -1 +1 @@
-From 7c52aea4e68e0cacc7e41ff08fcddbd513ad7e0a Mon Sep 17 00:00:00 2001
+From 0077cade0785e557af763911e0c87e8f239f3f92 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7c52aea4e68e0cacc7e41ff08fcddbd513ad7e0a ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 37d06f1dea..47965bbc32 100644
+index 6d5f510220..f9be51e17f 100644
@@ -23 +24 @@
-@@ -723,5 +723,7 @@ cperf_set_ops_aead(struct rte_crypto_op **ops,
+@@ -689,5 +689,7 @@ cperf_set_ops_aead(struct rte_crypto_op **ops,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/qat: fix out-of-place header bytes in AEAD raw API' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (19 preceding siblings ...)
2025-07-18 19:29 ` patch 'app/crypto-perf: fix AAD offset alignment' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' " Kevin Traynor
` (153 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Arkadiusz Kusztal; +Cc: Brian Dooley, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/ba3728749bb319bd6dd54d144ed54d464d09fe5a
Thanks.
Kevin
---
From ba3728749bb319bd6dd54d144ed54d464d09fe5a Mon Sep 17 00:00:00 2001
From: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
Date: Thu, 20 Mar 2025 16:57:02 +0000
Subject: [PATCH] crypto/qat: fix out-of-place header bytes in AEAD raw API
[ upstream commit 06597aaac85638eaa92b66f341185cd0ba39aca6 ]
This commit fixes a problem with overwriting data in the OOP header
in RAW API crypto processing when using AEAD algorithms.
Fixes: 85fec6fd9674 ("crypto/qat: unify raw data path functions")
Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Brian Dooley <brian.dooley@intel.com>
---
drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 134 +++++++++++++++++++
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c | 13 +-
2 files changed, 142 insertions(+), 5 deletions(-)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
index 35c1888082..c447f2cb45 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
@@ -7,7 +7,10 @@
#include <rte_cryptodev.h>
+#include <rte_common.h>
+#include <rte_branch_prediction.h>
#include "qat_crypto.h"
#include "qat_sym_session.h"
#include "qat_sym.h"
+#include "icp_qat_fw_la.h"
#define AES_OR_3DES_MISALIGNED (ctx->qat_mode == ICP_QAT_HW_CIPHER_CBC_MODE && \
@@ -147,4 +150,135 @@ qat_cipher_is_len_in_bits(struct qat_sym_session *ctx,
}
+static inline
+uint32_t qat_reqs_mid_set(int *error, struct icp_qat_fw_la_bulk_req *const req,
+ struct qat_sym_op_cookie *const cookie, const void *const opaque,
+ const struct rte_crypto_sgl *sgl_src, const struct rte_crypto_sgl *sgl_dst,
+ const union rte_crypto_sym_ofs ofs)
+{
+ uint32_t src_tot_length = 0; /* Returned value */
+ uint32_t dst_tot_length = 0; /* Used only for input validity checks */
+ uint32_t src_length = 0;
+ uint32_t dst_length = 0;
+ uint64_t src_data_addr = 0;
+ uint64_t dst_data_addr = 0;
+ const struct rte_crypto_vec * const vec_src = sgl_src->vec;
+ const struct rte_crypto_vec * const vec_dst = sgl_dst->vec;
+ const uint32_t n_src = sgl_src->num;
+ const uint32_t n_dst = sgl_dst->num;
+ const uint16_t offset = RTE_MAX(ofs.ofs.cipher.head, ofs.ofs.auth.head);
+ const uint8_t is_flat = !(n_src > 1 || n_dst > 1); /* Flat buffer or the SGL */
+ const uint8_t is_in_place = !n_dst; /* In-place or out-of-place */
+
+ *error = 0;
+ if (unlikely((n_src < 1 || n_src > QAT_SYM_SGL_MAX_NUMBER) ||
+ n_dst > QAT_SYM_SGL_MAX_NUMBER)) {
+ QAT_LOG(DEBUG,
+ "Invalid number of sgls, source no: %u, dst no: %u, opaque: %p",
+ n_src, n_dst, opaque);
+ *error = -1;
+ return 0;
+ }
+
+ /* --- Flat buffer --- */
+ if (is_flat) {
+ src_data_addr = vec_src->iova;
+ dst_data_addr = vec_src->iova;
+ src_length = vec_src->len;
+ dst_length = vec_src->len;
+
+ if (is_in_place)
+ goto done;
+ /* Out-of-place
+ * If OOP, we need to keep in mind that offset needs to
+ * start where the aead starts
+ */
+ dst_length = vec_dst->len;
+ /* Integer promotion here, but it does not bother this time */
+ if (unlikely(offset > src_length || offset > dst_length)) {
+ QAT_LOG(DEBUG,
+ "Invalid size of the vector parameters, source length: %u, dst length: %u, opaque: %p",
+ src_length, dst_length, opaque);
+ *error = -1;
+ return 0;
+ }
+ src_data_addr += offset;
+ dst_data_addr = vec_dst->iova + offset;
+ src_length -= offset;
+ dst_length -= offset;
+ src_tot_length = src_length;
+ dst_tot_length = dst_length;
+ goto check;
+ }
+
+ /* --- Scatter-gather list --- */
+ struct qat_sgl * const qat_sgl_src = (struct qat_sgl *)&cookie->qat_sgl_src;
+ uint16_t i;
+
+ ICP_QAT_FW_COMN_PTR_TYPE_SET(req->comn_hdr.comn_req_flags,
+ QAT_COMN_PTR_TYPE_SGL);
+ qat_sgl_src->num_bufs = n_src;
+ src_data_addr = cookie->qat_sgl_src_phys_addr;
+ /* Fill all the source buffers but the first one */
+ for (i = 1; i < n_src; i++) {
+ qat_sgl_src->buffers[i].len = (vec_src + i)->len;
+ qat_sgl_src->buffers[i].addr = (vec_src + i)->iova;
+ src_tot_length += qat_sgl_src->buffers[i].len;
+ }
+
+ if (is_in_place) {
+ /* SGL source first entry, no OOP */
+ qat_sgl_src->buffers[0].len = vec_src->len;
+ qat_sgl_src->buffers[0].addr = vec_src->iova;
+ dst_data_addr = src_data_addr;
+ goto done;
+ }
+ /* Out-of-place */
+ struct qat_sgl * const qat_sgl_dst =
+ (struct qat_sgl *)&cookie->qat_sgl_dst;
+ /*
+ * Offset reaching outside of the first buffer is not supported (RAW api).
+ * Integer promotion here, but it does not bother this time
+ */
+ if (unlikely(offset > vec_src->len || offset > vec_dst->len)) {
+ QAT_LOG(DEBUG,
+ "Invalid size of the vector parameters, source length: %u, dst length: %u, opaque: %p",
+ vec_src->len, vec_dst->len, opaque);
+ *error = -1;
+ return 0;
+ }
+ /* SGL source first entry, adjusted to OOP offsets */
+ qat_sgl_src->buffers[0].addr = vec_src->iova + offset;
+ qat_sgl_src->buffers[0].len = vec_src->len - offset;
+ /* SGL destination first entry, adjusted to OOP offsets */
+ qat_sgl_dst->buffers[0].addr = vec_dst->iova + offset;
+ qat_sgl_dst->buffers[0].len = vec_dst->len - offset;
+ /* Fill the remaining destination buffers */
+ for (i = 1; i < n_dst; i++) {
+ qat_sgl_dst->buffers[i].len = (vec_dst + i)->len;
+ qat_sgl_dst->buffers[i].addr = (vec_dst + i)->iova;
+ dst_tot_length += qat_sgl_dst->buffers[i].len;
+ }
+ dst_tot_length += qat_sgl_dst->buffers[0].len;
+ qat_sgl_dst->num_bufs = n_dst;
+ dst_data_addr = cookie->qat_sgl_dst_phys_addr;
+
+check: /* If error, return directly. If success, jump to one of these labels */
+ if (src_tot_length != dst_tot_length) {
+ QAT_LOG(DEBUG,
+ "Source length is not equal to the destination length %u, dst no: %u, opaque: %p",
+ src_tot_length, dst_tot_length, opaque);
+ *error = -1;
+ return 0;
+ }
+done:
+ req->comn_mid.opaque_data = (uintptr_t)opaque;
+ req->comn_mid.src_data_addr = src_data_addr;
+ req->comn_mid.dest_data_addr = dst_data_addr;
+ req->comn_mid.src_length = src_length;
+ req->comn_mid.dst_length = dst_length;
+
+ return src_tot_length;
+}
+
static __rte_always_inline int32_t
qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
diff --git a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
index 24e51a9318..3976d03179 100644
--- a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
+++ b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
@@ -943,4 +943,5 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ int error = 0;
req = (struct icp_qat_fw_la_bulk_req *)(
@@ -949,8 +950,10 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ data_len = qat_reqs_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], ofs);
+ /* In oop there is no offset, src/dst addresses are moved
+ * to avoid overwriting the dst header
+ */
+ ofs.ofs.cipher.head = 0;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -960,5 +963,5 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0) || error)
break;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.856646251 +0100
+++ 0022-crypto-qat-fix-out-of-place-header-bytes-in-AEAD-raw.patch 2025-07-18 20:29:10.825907009 +0100
@@ -1 +1 @@
-From 06597aaac85638eaa92b66f341185cd0ba39aca6 Mon Sep 17 00:00:00 2001
+From ba3728749bb319bd6dd54d144ed54d464d09fe5a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 06597aaac85638eaa92b66f341185cd0ba39aca6 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (20 preceding siblings ...)
2025-07-18 19:29 ` patch 'crypto/qat: fix out-of-place header bytes in AEAD raw API' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix header modify action on group 0' " Kevin Traynor
` (152 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Arkadiusz Kusztal; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0aed6d26e9282c01745a743248072c01ed37246d
Thanks.
Kevin
---
From 0aed6d26e9282c01745a743248072c01ed37246d Mon Sep 17 00:00:00 2001
From: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
Date: Mon, 28 Apr 2025 06:30:41 +0000
Subject: [PATCH] crypto/qat: fix out-of-place chain/cipher/auth headers
[ upstream commit 317d05f3721c9a740614adf77aa89d00d5302cf7 ]
This commit fixes a problem with overwriting data in the OOP header
in RAW API crypto processing when using chain, cipher and auth algorithms.
Fixes: 85fec6fd9674 ("crypto/qat: unify raw data path functions")
Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
---
drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 146 +++++++++++++++++++
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c | 40 +++--
2 files changed, 171 insertions(+), 15 deletions(-)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
index c447f2cb45..846636f57d 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
@@ -281,4 +281,150 @@ done:
}
+struct qat_sym_req_mid_info {
+ uint32_t data_len;
+ union rte_crypto_sym_ofs ofs;
+};
+
+static inline
+struct qat_sym_req_mid_info qat_sym_req_mid_set(
+ int *error, struct icp_qat_fw_la_bulk_req *const req,
+ struct qat_sym_op_cookie *const cookie, const void *const opaque,
+ const struct rte_crypto_sgl *sgl_src, const struct rte_crypto_sgl *sgl_dst,
+ const union rte_crypto_sym_ofs ofs)
+{
+ struct qat_sym_req_mid_info info = { }; /* Returned value */
+ uint32_t src_tot_length = 0;
+ uint32_t dst_tot_length = 0; /* Used only for input validity checks */
+ uint32_t src_length = 0;
+ uint32_t dst_length = 0;
+ uint64_t src_data_addr = 0;
+ uint64_t dst_data_addr = 0;
+ union rte_crypto_sym_ofs out_ofs = ofs;
+ const struct rte_crypto_vec * const vec_src = sgl_src->vec;
+ const struct rte_crypto_vec * const vec_dst = sgl_dst->vec;
+ const uint32_t n_src = sgl_src->num;
+ const uint32_t n_dst = sgl_dst->num;
+ const uint16_t offset = RTE_MIN(ofs.ofs.cipher.head, ofs.ofs.auth.head);
+ const uint8_t is_flat = !(n_src > 1 || n_dst > 1); /* Flat buffer or the SGL */
+ const uint8_t is_in_place = !n_dst; /* In-place or out-of-place */
+
+ *error = 0;
+ if (unlikely((n_src < 1 || n_src > QAT_SYM_SGL_MAX_NUMBER) ||
+ n_dst > QAT_SYM_SGL_MAX_NUMBER)) {
+ QAT_LOG(DEBUG,
+ "Invalid number of sgls, source no: %u, dst no: %u, opaque: %p",
+ n_src, n_dst, opaque);
+ *error = -1;
+ return info;
+ }
+
+ /* --- Flat buffer --- */
+ if (is_flat) {
+ src_data_addr = vec_src->iova;
+ dst_data_addr = vec_src->iova;
+ src_length = vec_src->len;
+ dst_length = vec_src->len;
+
+ if (is_in_place)
+ goto done;
+ /* Out-of-place
+ * If OOP, we need to keep in mind that offset needs to
+ * start where the aead starts
+ */
+ dst_length = vec_dst->len;
+ /* Comparison between different types, intentional */
+ if (unlikely(offset > src_length || offset > dst_length)) {
+ QAT_LOG(DEBUG,
+ "Invalid size of the vector parameters, source length: %u, dst length: %u, opaque: %p",
+ src_length, dst_length, opaque);
+ *error = -1;
+ return info;
+ }
+ out_ofs.ofs.cipher.head -= offset;
+ out_ofs.ofs.auth.head -= offset;
+ src_data_addr += offset;
+ dst_data_addr = vec_dst->iova + offset;
+ src_length -= offset;
+ dst_length -= offset;
+ src_tot_length = src_length;
+ dst_tot_length = dst_length;
+ goto check;
+ }
+
+ /* --- Scatter-gather list --- */
+ struct qat_sgl * const qat_sgl_src = (struct qat_sgl *)&cookie->qat_sgl_src;
+ uint16_t i;
+
+ ICP_QAT_FW_COMN_PTR_TYPE_SET(req->comn_hdr.comn_req_flags,
+ QAT_COMN_PTR_TYPE_SGL);
+ qat_sgl_src->num_bufs = n_src;
+ src_data_addr = cookie->qat_sgl_src_phys_addr;
+ /* Fill all the source buffers but the first one */
+ for (i = 1; i < n_src; i++) {
+ qat_sgl_src->buffers[i].len = (vec_src + i)->len;
+ qat_sgl_src->buffers[i].addr = (vec_src + i)->iova;
+ src_tot_length += qat_sgl_src->buffers[i].len;
+ }
+
+ if (is_in_place) {
+ /* SGL source first entry, no OOP */
+ qat_sgl_src->buffers[0].len = vec_src->len;
+ qat_sgl_src->buffers[0].addr = vec_src->iova;
+ dst_data_addr = src_data_addr;
+ goto done;
+ }
+ /* Out-of-place */
+ struct qat_sgl * const qat_sgl_dst =
+ (struct qat_sgl *)&cookie->qat_sgl_dst;
+ /*
+ * Offset reaching outside of the first buffer is not supported (RAW api).
+ * Integer promotion here, but it does not bother this time
+ */
+ if (unlikely(offset > vec_src->len || offset > vec_dst->len)) {
+ QAT_LOG(DEBUG,
+ "Invalid size of the vector parameters, source length: %u, dst length: %u, opaque: %p",
+ vec_src->len, vec_dst->len, opaque);
+ *error = -1;
+ return info;
+ }
+ out_ofs.ofs.cipher.head -= offset;
+ out_ofs.ofs.auth.head -= offset;
+ /* SGL source first entry, adjusted to OOP offsets */
+ qat_sgl_src->buffers[0].addr = vec_src->iova + offset;
+ qat_sgl_src->buffers[0].len = vec_src->len - offset;
+ /* SGL destination first entry, adjusted to OOP offsets */
+ qat_sgl_dst->buffers[0].addr = vec_dst->iova + offset;
+ qat_sgl_dst->buffers[0].len = vec_dst->len - offset;
+ /* Fill the remaining destination buffers */
+ for (i = 1; i < n_dst; i++) {
+ qat_sgl_dst->buffers[i].len = (vec_dst + i)->len;
+ qat_sgl_dst->buffers[i].addr = (vec_dst + i)->iova;
+ dst_tot_length += qat_sgl_dst->buffers[i].len;
+ }
+ dst_tot_length += qat_sgl_dst->buffers[0].len;
+ qat_sgl_dst->num_bufs = n_dst;
+ dst_data_addr = cookie->qat_sgl_dst_phys_addr;
+
+check: /* If error, return directly. If success, jump to one of these labels */
+ if (src_tot_length != dst_tot_length) {
+ QAT_LOG(DEBUG,
+ "Source length is not equal to the destination length %u, dst no: %u, opaque: %p",
+ src_tot_length, dst_tot_length, opaque);
+ *error = -1;
+ return info;
+ }
+done:
+ req->comn_mid.opaque_data = (uintptr_t)opaque;
+ req->comn_mid.src_data_addr = src_data_addr;
+ req->comn_mid.dest_data_addr = dst_data_addr;
+ req->comn_mid.src_length = src_length;
+ req->comn_mid.dst_length = dst_length;
+
+ info.data_len = src_tot_length;
+ info.ofs = out_ofs;
+
+ return info;
+}
+
static __rte_always_inline int32_t
qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
diff --git a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
index 3976d03179..561166203c 100644
--- a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
+++ b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
@@ -568,5 +568,9 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ struct qat_sym_req_mid_info info = { };
+ union rte_crypto_sym_ofs temp_ofs = ofs;
+ int error = 0;
+ temp_ofs.ofs.auth = temp_ofs.ofs.cipher;
req = (struct icp_qat_fw_la_bulk_req *)(
(uint8_t *)tx_queue->base_addr + tail);
@@ -574,8 +578,8 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ info = qat_sym_req_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], temp_ofs);
+ data_len = info.data_len;
+ ofs = info.ofs;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -585,5 +589,5 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0 || error))
break;
@@ -689,5 +693,9 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ struct qat_sym_req_mid_info info = { };
+ union rte_crypto_sym_ofs temp_ofs = ofs;
+ int error = 0;
+ temp_ofs.ofs.cipher = temp_ofs.ofs.auth;
req = (struct icp_qat_fw_la_bulk_req *)(
(uint8_t *)tx_queue->base_addr + tail);
@@ -695,8 +703,8 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ info = qat_sym_req_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], temp_ofs);
+ data_len = info.data_len;
+ ofs = info.ofs;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -706,5 +714,5 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0 || error))
break;
@@ -820,4 +828,6 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ struct qat_sym_req_mid_info info = { };
+ int error = 0;
req = (struct icp_qat_fw_la_bulk_req *)(
@@ -826,8 +836,8 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ info = qat_sym_req_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], ofs);
+ data_len = info.data_len;
+ ofs = info.ofs;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -837,5 +847,5 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0 || error))
break;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.887984769 +0100
+++ 0023-crypto-qat-fix-out-of-place-chain-cipher-auth-header.patch 2025-07-18 20:29:10.826907012 +0100
@@ -1 +1 @@
-From 317d05f3721c9a740614adf77aa89d00d5302cf7 Mon Sep 17 00:00:00 2001
+From 0aed6d26e9282c01745a743248072c01ed37246d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 317d05f3721c9a740614adf77aa89d00d5302cf7 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix header modify action on group 0' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (21 preceding siblings ...)
2025-07-18 19:29 ` patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: validate GTP PSC QFI width' " Kevin Traynor
` (151 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9057144d8b207d0f88115d16378a30a3757d7b7c
Thanks.
Kevin
---
From 9057144d8b207d0f88115d16378a30a3757d7b7c Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 25 Apr 2025 21:32:57 +0200
Subject: [PATCH] net/mlx5: fix header modify action on group 0
[ upstream commit f1ebb26d0d9388b6df65d493b06ce3b55adfb893 ]
HW modify header commands generated for multiple modify field
flow actions, which modify/access the same packet fields
do not have to be separated by NOPs when used on group 0.
This is because:
- On group > 0, HW uses Modify Header Pattern objects
which require NOP explicitly.
- On group 0, modify field action is implemented using
Modify Header Context object managed by FW.
FW inserts requires NOPs internally.
mlx5 PMD inserted NOP always, which caused flow/table creation
failures on group 0 flow rules.
This patch addresses that.
Fixes: 0f4aa72b99da ("net/mlx5: support flow modify field with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 5601abf90d..3d04d86911 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1377,5 +1377,6 @@ flow_hw_action_modify_field_is_shared(const struct rte_flow_action *action,
static __rte_always_inline bool
flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr,
- const struct mlx5_modification_cmd *cmd)
+ const struct mlx5_modification_cmd *cmd,
+ const struct rte_flow_attr *attr)
{
struct mlx5_modification_cmd last_cmd = { { 0 } };
@@ -1385,4 +1386,13 @@ flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr,
bool should_insert = false;
+ /*
+ * Modify header action list does not require NOPs in root table,
+ * because different type of underlying object is used:
+ * - in root table - MODIFY_HEADER_CONTEXT (does not require NOPs),
+ * - in non-root - either inline modify action or based on Modify Header Pattern
+ * (which requires NOPs).
+ */
+ if (attr->group == 0)
+ return false;
if (cmds_num == 0)
return false;
@@ -1463,5 +1473,6 @@ flow_hw_mhdr_cmd_append(struct mlx5_hw_modify_header_action *mhdr,
static __rte_always_inline int
flow_hw_converted_mhdr_cmds_append(struct mlx5_hw_modify_header_action *mhdr,
- struct mlx5_flow_dv_modify_hdr_resource *resource)
+ struct mlx5_flow_dv_modify_hdr_resource *resource,
+ const struct rte_flow_attr *attr)
{
uint32_t idx;
@@ -1471,5 +1482,5 @@ flow_hw_converted_mhdr_cmds_append(struct mlx5_hw_modify_header_action *mhdr,
struct mlx5_modification_cmd *src = &resource->actions[idx];
- if (flow_hw_should_insert_nop(mhdr, src)) {
+ if (flow_hw_should_insert_nop(mhdr, src, attr)) {
ret = flow_hw_mhdr_cmd_nop_append(mhdr);
if (ret)
@@ -1594,5 +1605,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
* on rule creation.
*/
- if (flow_hw_should_insert_nop(mhdr, &resource->actions[0])) {
+ if (flow_hw_should_insert_nop(mhdr, &resource->actions[0], attr)) {
ret = flow_hw_mhdr_cmd_nop_append(mhdr);
if (ret)
@@ -1601,5 +1612,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
}
cmds_start = mhdr->mhdr_cmds_num;
- ret = flow_hw_converted_mhdr_cmds_append(mhdr, resource);
+ ret = flow_hw_converted_mhdr_cmds_append(mhdr, resource, attr);
if (ret)
return rte_flow_error_set(error, ret, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.918484998 +0100
+++ 0024-net-mlx5-fix-header-modify-action-on-group-0.patch 2025-07-18 20:29:10.836907043 +0100
@@ -1 +1 @@
-From f1ebb26d0d9388b6df65d493b06ce3b55adfb893 Mon Sep 17 00:00:00 2001
+From 9057144d8b207d0f88115d16378a30a3757d7b7c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1ebb26d0d9388b6df65d493b06ce3b55adfb893 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 2f7b769aec..cbe6bd3ef9 100644
+index 5601abf90d..3d04d86911 100644
@@ -34 +35 @@
-@@ -1423,5 +1423,6 @@ flow_hw_action_modify_field_is_shared(const struct rte_flow_action *action,
+@@ -1377,5 +1377,6 @@ flow_hw_action_modify_field_is_shared(const struct rte_flow_action *action,
@@ -42 +43 @@
-@@ -1431,4 +1432,13 @@ flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr,
+@@ -1385,4 +1386,13 @@ flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr,
@@ -56 +57 @@
-@@ -1509,5 +1519,6 @@ flow_hw_mhdr_cmd_append(struct mlx5_hw_modify_header_action *mhdr,
+@@ -1463,5 +1473,6 @@ flow_hw_mhdr_cmd_append(struct mlx5_hw_modify_header_action *mhdr,
@@ -64 +65 @@
-@@ -1517,5 +1528,5 @@ flow_hw_converted_mhdr_cmds_append(struct mlx5_hw_modify_header_action *mhdr,
+@@ -1471,5 +1482,5 @@ flow_hw_converted_mhdr_cmds_append(struct mlx5_hw_modify_header_action *mhdr,
@@ -71 +72 @@
-@@ -1640,5 +1651,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
+@@ -1594,5 +1605,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
@@ -78 +79 @@
-@@ -1647,5 +1658,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
+@@ -1601,5 +1612,5 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: validate GTP PSC QFI width' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (22 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix header modify action on group 0' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix counter pool init error propagation' " Kevin Traynor
` (150 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/10591649bcc67efa570b6bb028b59a6626d5a590
Thanks.
Kevin
---
From 10591649bcc67efa570b6bb028b59a6626d5a590 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 25 Apr 2025 21:35:07 +0200
Subject: [PATCH] net/mlx5: validate GTP PSC QFI width
[ upstream commit 34471d1645fae0e936c44f2f6d7fea6d22e4173e ]
Add missing validation of GTP PSC QFI flow field width for
modify field flow action.
Fixes: 0f4aa72b99da ("net/mlx5: support flow modify field with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 62eb835b7c..9c52b7d25d 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -1452,4 +1452,6 @@ mlx5_flow_item_field_width(struct rte_eth_dev *dev,
return (flow_dv_get_metadata_reg(dev, attr, error) == REG_C_0) ?
rte_popcount32(priv->sh->dv_meta_mask) : 32;
+ case RTE_FLOW_FIELD_GTP_PSC_QFI:
+ return 6;
case RTE_FLOW_FIELD_POINTER:
case RTE_FLOW_FIELD_VALUE:
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:11.959302373 +0100
+++ 0025-net-mlx5-validate-GTP-PSC-QFI-width.patch 2025-07-18 20:29:10.847907077 +0100
@@ -1 +1 @@
-From 34471d1645fae0e936c44f2f6d7fea6d22e4173e Mon Sep 17 00:00:00 2001
+From 10591649bcc67efa570b6bb028b59a6626d5a590 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 34471d1645fae0e936c44f2f6d7fea6d22e4173e ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 608c42db1d..c217634d9b 100644
+index 62eb835b7c..9c52b7d25d 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix counter pool init error propagation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (23 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: validate GTP PSC QFI width' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix counter service cleanup on init failure' " Kevin Traynor
` (149 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/117b9da5ba3f43274431faab3937abee07d23e88
Thanks.
Kevin
---
From 117b9da5ba3f43274431faab3937abee07d23e88 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 25 Apr 2025 21:41:04 +0200
Subject: [PATCH] net/mlx5: fix counter pool init error propagation
[ upstream commit 8774ac32dfcf42a192f5b7785e956a8b1b754954 ]
In case of an error in mlx5_hws_cnt_pool_create(),
value stored in ret is used as "error code".
There are however a few cases inside this function,
when this variable is not set, leading to failed
assertions (e.g., when requested number of counters is bigger
than maximum supported).
This patch addresses these cases, by propagating the rte_errno
set by failing functions.
Fixes: e1c83d295dd9 ("net/mlx5: support ASO actions with non-template flow")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index eaceedd5ba..000c2b1980 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -700,6 +700,9 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
mp_name = mlx5_malloc(MLX5_MEM_ZERO, RTE_MEMZONE_NAMESIZE, 0, SOCKET_ID_ANY);
- if (mp_name == NULL)
+ if (mp_name == NULL) {
+ ret = rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+ "failed to allocate counter pool name prefix");
goto error;
+ }
snprintf(mp_name, RTE_MEMZONE_NAMESIZE, "MLX5_HWS_CNT_P_%x", dev->data->port_id);
pcfg.name = mp_name;
@@ -709,6 +712,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
pcfg.host_cpool = chost;
cpool = mlx5_hws_cnt_pool_init(priv->sh, &pcfg, &cparam, error);
- if (cpool == NULL)
+ if (cpool == NULL) {
+ ret = -rte_errno;
goto error;
+ }
ret = mlx5_hws_cnt_pool_action_create(priv, cpool);
if (ret != 0) {
@@ -732,6 +737,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
cparam.size = HWS_CNT_CACHE_SZ_DEFAULT;
cpool = mlx5_hws_cnt_pool_init(priv->sh, &pcfg, &cparam, error);
- if (cpool == NULL)
+ if (cpool == NULL) {
+ ret = -rte_errno;
goto error;
+ }
ret = mlx5_hws_cnt_pool_dcs_alloc(priv->sh, cpool, error);
if (ret != 0)
@@ -739,6 +746,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
sz = RTE_ALIGN_CEIL(mlx5_hws_cnt_pool_get_size(cpool), 4);
cpool->raw_mng = mlx5_hws_cnt_raw_data_alloc(priv->sh, sz, error);
- if (cpool->raw_mng == NULL)
+ if (cpool->raw_mng == NULL) {
+ ret = -rte_errno;
goto error;
+ }
__hws_cnt_id_load(cpool);
/*
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.002963528 +0100
+++ 0026-net-mlx5-fix-counter-pool-init-error-propagation.patch 2025-07-18 20:29:10.848907080 +0100
@@ -1 +1 @@
-From 8774ac32dfcf42a192f5b7785e956a8b1b754954 Mon Sep 17 00:00:00 2001
+From 117b9da5ba3f43274431faab3937abee07d23e88 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8774ac32dfcf42a192f5b7785e956a8b1b754954 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 7b5e7310af..fd12bcd7ec 100644
+index eaceedd5ba..000c2b1980 100644
@@ -29 +30 @@
-@@ -705,6 +705,9 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -700,6 +700,9 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
@@ -40 +41 @@
-@@ -714,6 +717,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -709,6 +712,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
@@ -50 +51 @@
-@@ -737,6 +742,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -732,6 +737,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
@@ -60 +61 @@
-@@ -744,6 +751,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -739,6 +746,8 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix counter service cleanup on init failure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (24 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix counter pool init error propagation' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix validation for GENEVE options' " Kevin Traynor
` (148 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a7ecf49c22006ce2e4452aee849cdb14399c291b
Thanks.
Kevin
---
From a7ecf49c22006ce2e4452aee849cdb14399c291b Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 25 Apr 2025 21:41:05 +0200
Subject: [PATCH] net/mlx5: fix counter service cleanup on init failure
[ upstream commit 4d78ac5f3ef7c1ae3ae194423428c0f96e9994bc ]
When initializing the counter pool in mlx5_hws_cnt_pool_create(), the
background service thread was started before pool creation completed.
If pool creation failed after the thread was started, the error handling
path did not clean up the running thread, as it assumed no resources
needed cleanup if the pool was not created.
This patch moves the creation of the background service thread to the end
of the counter pool initialization, ensuring resources are released in the
correct order during rollback. It also adds a missing "goto error" in case
the service thread initialization fails.
Fixes: 4d368e1da3a4 ("net/mlx5: support flow counter action for HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index 000c2b1980..124c552aec 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -725,10 +725,4 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
goto success;
}
- /* init cnt service if not. */
- if (priv->sh->cnt_svc == NULL) {
- ret = mlx5_hws_cnt_svc_init(priv->sh, error);
- if (ret)
- goto error;
- }
cparam.fetch_sz = HWS_CNT_CACHE_FETCH_DEFAULT;
cparam.preload_sz = HWS_CNT_CACHE_PRELOAD_DEFAULT;
@@ -765,4 +759,10 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
goto error;
}
+ /* init cnt service if not. */
+ if (priv->sh->cnt_svc == NULL) {
+ ret = mlx5_hws_cnt_svc_init(priv->sh, error);
+ if (ret)
+ goto error;
+ }
priv->sh->cnt_svc->refcnt++;
cpool->priv = priv;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.033692640 +0100
+++ 0027-net-mlx5-fix-counter-service-cleanup-on-init-failure.patch 2025-07-18 20:29:10.849907083 +0100
@@ -1 +1 @@
-From 4d78ac5f3ef7c1ae3ae194423428c0f96e9994bc Mon Sep 17 00:00:00 2001
+From a7ecf49c22006ce2e4452aee849cdb14399c291b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4d78ac5f3ef7c1ae3ae194423428c0f96e9994bc ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index fd12bcd7ec..5c7c0041aa 100644
+index 000c2b1980..124c552aec 100644
@@ -30 +31 @@
-@@ -730,10 +730,4 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -725,10 +725,4 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
@@ -41 +42 @@
-@@ -770,4 +764,10 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
+@@ -765,4 +759,10 @@ mlx5_hws_cnt_pool_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix validation for GENEVE options' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (25 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix counter service cleanup on init failure' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix GRE flow item validation' " Kevin Traynor
` (147 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/43f59d7fb7f68bf7025d6d9cf2365392fd8ee06f
Thanks.
Kevin
---
From 43f59d7fb7f68bf7025d6d9cf2365392fd8ee06f Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 27 Apr 2025 14:22:56 +0300
Subject: [PATCH] net/mlx5: fix validation for GENEVE options
[ upstream commit 3d7dae0878a36c4956084c1b5d01e225c170c1c3 ]
For non-template API on top of HWS,
geneve options parser is created by the pmd and not by the user,
therefore during validation , the parser is not yet created.
The fix is to ignore the validation of geneve options in
case the rule is a non-template rule.
The parser will be created later during rule create.
Fixes: 80c676259a04 ("net/mlx5: validate HWS template items")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 35 ++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 3d04d86911..3183efe94b 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -8362,8 +8362,9 @@ struct mlx5_hw_pattern_validation_ctx {
static int
-flow_hw_pattern_validate(struct rte_eth_dev *dev,
+__flow_hw_pattern_validate(struct rte_eth_dev *dev,
const struct rte_flow_pattern_template_attr *attr,
const struct rte_flow_item items[],
uint64_t *item_flags,
+ bool nt_flow,
struct rte_flow_error *error)
{
@@ -8533,8 +8534,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
{
last_item = MLX5_FLOW_LAYER_GENEVE_OPT;
- ret = mlx5_flow_geneve_tlv_option_validate(priv, item,
- error);
- if (ret < 0)
- return ret;
+ /*
+ * For non template the parser is internally created before
+ * the flow creation.
+ */
+ if (!nt_flow) {
+ ret = mlx5_flow_geneve_tlv_option_validate(priv, item,
+ error);
+ if (ret < 0)
+ return ret;
+ }
break;
}
@@ -8792,4 +8799,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
}
+static int
+flow_hw_pattern_validate(struct rte_eth_dev *dev,
+ const struct rte_flow_pattern_template_attr *attr,
+ const struct rte_flow_item items[],
+ uint64_t *item_flags,
+ struct rte_flow_error *error)
+{
+ return __flow_hw_pattern_validate(dev, attr, items, item_flags, false, error);
+}
+
/*
* Verify that the tested flow patterns fits STE size limit in HWS group.
@@ -14011,6 +14028,6 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
/* Validate application items only */
- ret = flow_hw_pattern_validate(dev, &pattern_template_attr, items,
- &item_flags, error);
+ ret = __flow_hw_pattern_validate(dev, &pattern_template_attr, items,
+ &item_flags, true, error);
if (ret < 0)
return 0;
@@ -15138,6 +15155,6 @@ flow_hw_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
if (external) {
/* Validate application items only */
- ret = flow_hw_pattern_validate(dev, &pattern_template_attr, items,
- &item_flags, error);
+ ret = __flow_hw_pattern_validate(dev, &pattern_template_attr, items,
+ &item_flags, true, error);
if (ret < 0)
return -rte_errno;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.064855843 +0100
+++ 0028-net-mlx5-fix-validation-for-GENEVE-options.patch 2025-07-18 20:29:10.859907113 +0100
@@ -1 +1 @@
-From 3d7dae0878a36c4956084c1b5d01e225c170c1c3 Mon Sep 17 00:00:00 2001
+From 43f59d7fb7f68bf7025d6d9cf2365392fd8ee06f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3d7dae0878a36c4956084c1b5d01e225c170c1c3 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index cbe6bd3ef9..b5e78b1588 100644
+index 3d04d86911..3183efe94b 100644
@@ -27 +28 @@
-@@ -8487,8 +8487,9 @@ struct mlx5_hw_pattern_validation_ctx {
+@@ -8362,8 +8362,9 @@ struct mlx5_hw_pattern_validation_ctx {
@@ -38 +39 @@
-@@ -8658,8 +8659,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
+@@ -8533,8 +8534,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
@@ -57 +58 @@
-@@ -8925,4 +8932,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
+@@ -8792,4 +8799,14 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
@@ -72 +73 @@
-@@ -14264,6 +14281,6 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
+@@ -14011,6 +14028,6 @@ static uintptr_t flow_hw_list_create(struct rte_eth_dev *dev,
@@ -81 +82 @@
-@@ -15403,6 +15420,6 @@ flow_hw_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -15138,6 +15155,6 @@ flow_hw_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix GRE flow item validation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (26 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix validation for GENEVE options' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5/hws: fix send queue drain on FW WQE destroy' " Kevin Traynor
` (146 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/eef73c95b14ecd8e011858a734ff89440f0ad91d
Thanks.
Kevin
---
From eef73c95b14ecd8e011858a734ff89440f0ad91d Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 27 Apr 2025 14:22:57 +0300
Subject: [PATCH] net/mlx5: fix GRE flow item validation
[ upstream commit 41e1fac36acf0af9817f158a5ab4f4719cd6af4a ]
GRE item was dereferenced w/o checking it's value.
Added a check to verify if null before using the pointer.
Fixes: 80c676259a04 ("net/mlx5: validate HWS template items")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index e909a6ab63..61833c0dcb 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -3334,8 +3334,8 @@ mlx5_flow_validate_item_gre_key(const struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_ITEM, item,
"GRE key following a wrong item");
- gre_mask = gre_item->mask;
+ gre_mask = gre_item ? gre_item->mask : NULL;
if (!gre_mask)
gre_mask = &rte_flow_item_gre_mask;
- gre_spec = gre_item->spec;
+ gre_spec = gre_item ? gre_item->spec : NULL;
if (gre_spec && (gre_mask->c_rsvd0_ver & RTE_BE16(0x2000)) &&
!(gre_spec->c_rsvd0_ver & RTE_BE16(0x2000)))
@@ -3380,6 +3380,6 @@ mlx5_flow_validate_item_gre_option(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
- const struct rte_flow_item_gre *gre_spec = gre_item->spec;
- const struct rte_flow_item_gre *gre_mask = gre_item->mask;
+ const struct rte_flow_item_gre *gre_spec = gre_item ? gre_item->spec : NULL;
+ const struct rte_flow_item_gre *gre_mask = gre_item ? gre_item->mask : NULL;
const struct rte_flow_item_gre_opt *spec = item->spec;
const struct rte_flow_item_gre_opt *mask = item->mask;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.104887710 +0100
+++ 0029-net-mlx5-fix-GRE-flow-item-validation.patch 2025-07-18 20:29:10.866907135 +0100
@@ -1 +1 @@
-From 41e1fac36acf0af9817f158a5ab4f4719cd6af4a Mon Sep 17 00:00:00 2001
+From eef73c95b14ecd8e011858a734ff89440f0ad91d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 41e1fac36acf0af9817f158a5ab4f4719cd6af4a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index cb91f4dfbe..8696cc4e95 100644
+index e909a6ab63..61833c0dcb 100644
@@ -22 +23 @@
-@@ -3335,8 +3335,8 @@ mlx5_flow_validate_item_gre_key(const struct rte_eth_dev *dev,
+@@ -3334,8 +3334,8 @@ mlx5_flow_validate_item_gre_key(const struct rte_eth_dev *dev,
@@ -33 +34 @@
-@@ -3381,6 +3381,6 @@ mlx5_flow_validate_item_gre_option(struct rte_eth_dev *dev,
+@@ -3380,6 +3380,6 @@ mlx5_flow_validate_item_gre_option(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5/hws: fix send queue drain on FW WQE destroy' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (27 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix GRE flow item validation' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix flex tunnel flow validation' " Kevin Traynor
` (145 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Alex Vesker, Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bd350a3297e3b39b1b7ee8b2b24b4237e5246132
Thanks.
Kevin
---
From bd350a3297e3b39b1b7ee8b2b24b4237e5246132 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 27 Apr 2025 14:28:21 +0300
Subject: [PATCH] net/mlx5/hws: fix send queue drain on FW WQE destroy
[ upstream commit 0394577bdc91a25338fd9a61eb2ddfedf09f2800 ]
Queue sync operation was skipped on rule destroy.
Unlike on fw wqe rule create in which both fence and notify_hw
are set to true, on destroy fence was set to false causing
previous queue operation to be stuck in the queue forever.
Example:
rule_a - HW rule, rule_b - FW WQE rule.
Sequence:
rule_a destroy, burst=1 (HW rule put to queue but no DB)
rule_b destroy, burst=0 (FW WQE rule cmd but no queue sync)
Outcome:
rule_a is stuck forever in the queue - no completion.
Fixes: 338aaf911665 ("net/mlx5/hws: add send FW match STE using gen WQE")
Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_send.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_send.c b/drivers/net/mlx5/hws/mlx5dr_send.c
index e121c7f7ed..d01fc7ef2c 100644
--- a/drivers/net/mlx5/hws/mlx5dr_send.c
+++ b/drivers/net/mlx5/hws/mlx5dr_send.c
@@ -340,5 +340,5 @@ void mlx5dr_send_stes_fw(struct mlx5dr_send_engine *queue,
/* Writing through FW can't HW fence, therefore we drain the queue */
- if (send_attr->fence)
+ if (send_attr->fence || send_attr->notify_hw)
mlx5dr_send_queue_action(ctx,
queue_id,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.153295516 +0100
+++ 0030-net-mlx5-hws-fix-send-queue-drain-on-FW-WQE-destroy.patch 2025-07-18 20:29:10.867907138 +0100
@@ -1 +1 @@
-From 0394577bdc91a25338fd9a61eb2ddfedf09f2800 Mon Sep 17 00:00:00 2001
+From bd350a3297e3b39b1b7ee8b2b24b4237e5246132 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0394577bdc91a25338fd9a61eb2ddfedf09f2800 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix flex tunnel flow validation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (28 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5/hws: fix send queue drain on FW WQE destroy' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: remove unsupported flow meter action in HWS' " Kevin Traynor
` (144 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/66d99d9d2eff1ac399b0f4dddbecb008beb25123
Thanks.
Kevin
---
From 66d99d9d2eff1ac399b0f4dddbecb008beb25123 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 30 Apr 2025 13:03:31 +0200
Subject: [PATCH] net/mlx5: fix flex tunnel flow validation
[ upstream commit 7cafa01ff9fad60d93ba4c536a28c288c36cbcee ]
Pattern template validation did not take into account
the configured tunnel mode of the flex item.
This caused validation failures for templates with
flex item registered as tunnel headers.
Specifically, any item after such flex item was still considered
as outer header, not an inner.
This patch fixes the flex item validation,
by correctly updating recognized items bitmask depending
on flex item mode.
Fixes: 80c676259a04 ("net/mlx5: validate HWS template items")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 3183efe94b..e15466117b 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -8761,10 +8761,19 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
MLX5_FLOW_ITEM_OUTER_IPV6_ROUTING_EXT;
break;
- case RTE_FLOW_ITEM_TYPE_FLEX:
- /* match mlx5dr_definer_conv_items_to_hl() */
- last_item = tunnel ?
- MLX5_FLOW_ITEM_INNER_FLEX :
- MLX5_FLOW_ITEM_OUTER_FLEX;
+ case RTE_FLOW_ITEM_TYPE_FLEX: {
+ enum rte_flow_item_flex_tunnel_mode tunnel_mode = FLEX_TUNNEL_MODE_SINGLE;
+
+ ret = mlx5_flex_get_tunnel_mode(item, &tunnel_mode);
+ if (ret < 0)
+ return rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Unable to get flex item mode");
+ if (tunnel_mode == FLEX_TUNNEL_MODE_TUNNEL)
+ last_item = MLX5_FLOW_ITEM_FLEX_TUNNEL;
+ else
+ last_item = tunnel ?
+ MLX5_FLOW_ITEM_INNER_FLEX :
+ MLX5_FLOW_ITEM_OUTER_FLEX;
break;
+ }
case RTE_FLOW_ITEM_TYPE_RANDOM:
last_item = MLX5_FLOW_ITEM_RANDOM;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.183083945 +0100
+++ 0031-net-mlx5-fix-flex-tunnel-flow-validation.patch 2025-07-18 20:29:10.876907165 +0100
@@ -1 +1 @@
-From 7cafa01ff9fad60d93ba4c536a28c288c36cbcee Mon Sep 17 00:00:00 2001
+From 66d99d9d2eff1ac399b0f4dddbecb008beb25123 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7cafa01ff9fad60d93ba4c536a28c288c36cbcee ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index e9f032f67e..d58f3d10a1 100644
+index 3183efe94b..e15466117b 100644
@@ -30 +31 @@
-@@ -8886,10 +8886,19 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
+@@ -8761,10 +8761,19 @@ __flow_hw_pattern_validate(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: remove unsupported flow meter action in HWS' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (29 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix flex tunnel flow validation' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix error notification for large flow patterns' " Kevin Traynor
` (143 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/ad77925778d2e8798609cf8142b4ab0ddbf10e9a
Thanks.
Kevin
---
From ad77925778d2e8798609cf8142b4ab0ddbf10e9a Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Sun, 4 May 2025 08:23:50 +0300
Subject: [PATCH] net/mlx5: remove unsupported flow meter action in HWS
[ upstream commit 645f240d1cd57d0be1b773c739a5845a7663eeed ]
METER flow action is not supported in MLX5 HWS mode.
Application must use METER_MARK flow action.
The patch removes METER action from HWS code.
Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with HWS")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 85 -----
drivers/net/mlx5/mlx5_flow_meter.c | 552 -----------------------------
2 files changed, 637 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index e15466117b..99cb4eba8d 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1750,33 +1750,4 @@ flow_hw_represented_port_compile(struct rte_eth_dev *dev,
}
-static __rte_always_inline int
-flow_hw_meter_compile(struct rte_eth_dev *dev,
- const struct mlx5_flow_template_table_cfg *cfg,
- uint16_t aso_mtr_pos,
- uint16_t jump_pos,
- const struct rte_flow_action *action,
- struct mlx5_hw_actions *acts,
- struct rte_flow_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_aso_mtr *aso_mtr;
- const struct rte_flow_action_meter *meter = action->conf;
- uint32_t group = cfg->attr.flow_attr.group;
-
- aso_mtr = mlx5_aso_meter_by_idx(priv, meter->mtr_id);
- acts->rule_acts[aso_mtr_pos].action = priv->mtr_bulk.action;
- acts->rule_acts[aso_mtr_pos].aso_meter.offset = aso_mtr->offset;
- acts->jump = flow_hw_jump_action_register
- (dev, cfg, aso_mtr->fm.group, error);
- if (!acts->jump)
- return -ENOMEM;
- acts->rule_acts[jump_pos].action = (!!group) ?
- acts->jump->hws_action :
- acts->jump->root_action;
- if (mlx5_aso_mtr_wait(priv, aso_mtr, true))
- return -ENOMEM;
- return 0;
-}
-
static __rte_always_inline int
flow_hw_cnt_compile(struct rte_eth_dev *dev, uint32_t start_pos,
@@ -2494,5 +2465,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
bool recom_used = false;
unsigned int of_vlan_offset;
- uint16_t jump_pos;
uint32_t ct_idx;
int ret, err;
@@ -2768,25 +2738,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
goto err;
break;
- case RTE_FLOW_ACTION_TYPE_METER:
- /*
- * METER action is compiled to 2 DR actions - ASO_METER and FT.
- * Calculated DR offset is stored only for ASO_METER and FT
- * is assumed to be the next action.
- */
- jump_pos = dr_pos + 1;
- if (actions->conf && masks->conf &&
- ((const struct rte_flow_action_meter *)
- masks->conf)->mtr_id) {
- err = flow_hw_meter_compile(dev, cfg,
- dr_pos, jump_pos, actions, acts,
- &sub_error);
- if (err)
- goto err;
- } else if (__flow_hw_act_data_general_append(priv, acts,
- actions->type,
- src_pos,
- dr_pos))
- goto err;
- break;
case RTE_FLOW_ACTION_TYPE_AGE:
ret = flow_hw_translate_group(dev, cfg, attr->group,
@@ -3476,5 +3425,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
const struct rte_flow_item *enc_item = NULL;
const struct rte_flow_action_ethdev *port_action = NULL;
- const struct rte_flow_action_meter *meter = NULL;
const struct rte_flow_action_age *age = NULL;
const struct rte_flow_action_nat64 *nat64_c = NULL;
@@ -3649,26 +3597,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
act_data->shared_meter.id);
break;
- case RTE_FLOW_ACTION_TYPE_METER:
- meter = action->conf;
- mtr_id = meter->mtr_id;
- aso_mtr = mlx5_aso_meter_by_idx(priv, mtr_id);
- rule_acts[act_data->action_dst].action =
- priv->mtr_bulk.action;
- rule_acts[act_data->action_dst].aso_meter.offset =
- aso_mtr->offset;
- jump = flow_hw_jump_action_register
- (dev, &table->cfg, aso_mtr->fm.group, NULL);
- if (!jump)
- goto error;
- MLX5_ASSERT
- (!rule_acts[act_data->action_dst + 1].action);
- rule_acts[act_data->action_dst + 1].action =
- (!!attr.group) ? jump->hws_action :
- jump->root_action;
- flow->jump = jump;
- flow->flags |= MLX5_FLOW_HW_FLOW_FLAG_FATE_JUMP;
- if (mlx5_aso_mtr_wait(priv, aso_mtr, true))
- goto error;
- break;
case RTE_FLOW_ACTION_TYPE_AGE:
aux = mlx5_flow_hw_aux(dev->data->port_id, flow);
@@ -7232,8 +7158,4 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev,
action_flags |= MLX5_FLOW_ACTION_IPV6_ROUTING_REMOVE;
break;
- case RTE_FLOW_ACTION_TYPE_METER:
- /* TODO: Validation logic */
- action_flags |= MLX5_FLOW_ACTION_METER;
- break;
case RTE_FLOW_ACTION_TYPE_METER_MARK:
ret = flow_hw_validate_action_meter_mark(dev, action, false, error);
@@ -7563,11 +7485,4 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
}
break;
- case RTE_FLOW_ACTION_TYPE_METER:
- at->dr_off[i] = curr_off;
- action_types[curr_off++] = MLX5DR_ACTION_TYP_ASO_METER;
- if (curr_off >= MLX5_HW_MAX_ACTS)
- goto err_actions_num;
- action_types[curr_off++] = MLX5DR_ACTION_TYP_TBL;
- break;
case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
type = mlx5_hw_dr_action_types[at->actions[i].type];
diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c
index 804f4371a4..4426470c8a 100644
--- a/drivers/net/mlx5/mlx5_flow_meter.c
+++ b/drivers/net/mlx5/mlx5_flow_meter.c
@@ -1157,47 +1157,4 @@ mlx5_flow_meter_policy_validate(struct rte_eth_dev *dev,
}
-#if defined(HAVE_MLX5_HWS_SUPPORT)
-/**
- * Callback to check MTR policy action validate for HWS
- *
- * @param[in] dev
- * Pointer to Ethernet device.
- * @param[in] actions
- * Pointer to meter policy action detail.
- * @param[out] error
- * Pointer to the error structure.
- *
- * @return
- * 0 on success, a negative errno value otherwise and rte_errno is set.
- */
-static int
-mlx5_flow_meter_policy_hws_validate(struct rte_eth_dev *dev,
- struct rte_mtr_meter_policy_params *policy,
- struct rte_mtr_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- const struct rte_flow_actions_template_attr attr = {
- .transfer = priv->sh->config.dv_esw_en ? 1 : 0 };
- int ret;
- int i;
-
- if (mlx5_hws_active(dev) && !mlx5_hw_ctx_validate(dev, NULL))
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,
- "non-template flow engine was not configured");
- if (!priv->mtr_en || !priv->sh->meter_aso_en)
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_METER_POLICY,
- NULL, "meter policy unsupported.");
- for (i = 0; i < RTE_COLORS; i++) {
- ret = mlx5_flow_actions_validate(dev, &attr, policy->actions[i],
- policy->actions[i], NULL);
- if (ret)
- return ret;
- }
- return 0;
-}
-#endif
-
static int
__mlx5_flow_meter_policy_delete(struct rte_eth_dev *dev,
@@ -1531,332 +1488,4 @@ mlx5_flow_meter_policy_get(struct rte_eth_dev *dev,
}
-#if defined(HAVE_MLX5_HWS_SUPPORT)
-/**
- * Callback to delete MTR policy for HWS.
- *
- * @param[in] dev
- * Pointer to Ethernet device.
- * @param[in] policy_id
- * Meter policy id.
- * @param[out] error
- * Pointer to the error structure.
- *
- * @return
- * 0 on success, a negative errno value otherwise and rte_errno is set.
- */
-static int
-mlx5_flow_meter_policy_hws_delete(struct rte_eth_dev *dev,
- uint32_t policy_id,
- struct rte_mtr_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_flow_meter_policy *mtr_policy;
- uint32_t i, j;
- uint32_t nb_flows = 0;
- int ret;
- struct rte_flow_op_attr op_attr = { .postpone = 1 };
- struct rte_flow_op_result result[RTE_COLORS * MLX5_MTR_DOMAIN_MAX];
-
- if (!priv->mtr_policy_arr)
- return mlx5_flow_meter_policy_delete(dev, policy_id, error);
- /* Meter policy must exist. */
- mtr_policy = mlx5_flow_meter_policy_find(dev, policy_id, NULL);
- if (!mtr_policy->initialized)
- return -rte_mtr_error_set(error, ENOENT,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID, NULL,
- "Meter policy does not exists.");
- /* Check policy is unused. */
- if (mtr_policy->ref_cnt)
- return -rte_mtr_error_set(error, EBUSY,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
- NULL, "Meter policy is in use.");
- rte_spinlock_lock(&priv->hw_ctrl_lock);
- for (i = 0; i < MLX5_MTR_DOMAIN_MAX; i++) {
- for (j = 0; j < RTE_COLORS; j++) {
- if (mtr_policy->hws_flow_rule[i][j]) {
- ret = rte_flow_async_destroy(dev->data->port_id,
- CTRL_QUEUE_ID(priv), &op_attr,
- mtr_policy->hws_flow_rule[i][j],
- NULL, NULL);
- if (ret < 0)
- continue;
- nb_flows++;
- }
- }
- }
- ret = rte_flow_push(dev->data->port_id, CTRL_QUEUE_ID(priv), NULL);
- while (nb_flows && (ret >= 0)) {
- ret = rte_flow_pull(dev->data->port_id,
- CTRL_QUEUE_ID(priv), result,
- nb_flows, NULL);
- nb_flows -= ret;
- }
- for (i = 0; i < MLX5_MTR_DOMAIN_MAX; i++) {
- if (mtr_policy->hws_flow_table[i])
- rte_flow_template_table_destroy(dev->data->port_id,
- mtr_policy->hws_flow_table[i], NULL);
- }
- for (i = 0; i < RTE_COLORS; i++) {
- if (mtr_policy->hws_act_templ[i])
- rte_flow_actions_template_destroy(dev->data->port_id,
- mtr_policy->hws_act_templ[i], NULL);
- }
- if (mtr_policy->hws_item_templ)
- rte_flow_pattern_template_destroy(dev->data->port_id,
- mtr_policy->hws_item_templ, NULL);
- rte_spinlock_unlock(&priv->hw_ctrl_lock);
- memset(mtr_policy, 0, sizeof(struct mlx5_flow_meter_policy));
- return 0;
-}
-
-/**
- * Callback to add MTR policy for HWS.
- *
- * @param[in] dev
- * Pointer to Ethernet device.
- * @param[out] policy_id
- * Pointer to policy id
- * @param[in] actions
- * Pointer to meter policy action detail.
- * @param[out] error
- * Pointer to the error structure.
- *
- * @return
- * 0 on success, a negative errno value otherwise and rte_errno is set.
- */
-static int
-mlx5_flow_meter_policy_hws_add(struct rte_eth_dev *dev,
- uint32_t policy_id,
- struct rte_mtr_meter_policy_params *policy,
- struct rte_mtr_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_flow_meter_policy *mtr_policy = NULL;
- const struct rte_flow_action *act;
- const struct rte_flow_action_meter *mtr;
- struct mlx5_flow_meter_info *fm;
- struct mlx5_flow_meter_policy *plc;
- uint8_t domain_color = MLX5_MTR_ALL_DOMAIN_BIT;
- bool is_rss = false;
- bool is_hierarchy = false;
- int i, j;
- uint32_t nb_colors = 0;
- uint32_t nb_flows = 0;
- int color;
- int ret;
- struct rte_flow_pattern_template_attr pta = {0};
- struct rte_flow_actions_template_attr ata = {0};
- struct rte_flow_template_table_attr ta = { {0}, 0 };
- struct rte_flow_op_attr op_attr = { .postpone = 1 };
- struct rte_flow_op_result result[RTE_COLORS * MLX5_MTR_DOMAIN_MAX];
- const uint32_t color_mask = (UINT32_C(1) << MLX5_MTR_COLOR_BITS) - 1;
- int color_reg_c_idx = mlx5_flow_get_reg_id(dev, MLX5_MTR_COLOR,
- 0, NULL);
- struct rte_flow_item_tag tag_spec = {
- .data = 0,
- .index = color_reg_c_idx
- };
- struct rte_flow_item_tag tag_mask = {
- .data = color_mask,
- .index = 0xff};
- struct rte_flow_item pattern[] = {
- [0] = {
- .type = (enum rte_flow_item_type)
- MLX5_RTE_FLOW_ITEM_TYPE_TAG,
- .spec = &tag_spec,
- .mask = &tag_mask,
- },
- [1] = { .type = RTE_FLOW_ITEM_TYPE_END }
- };
-
- if (mlx5_hws_active(dev) && !mlx5_hw_ctx_validate(dev, NULL))
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,
- "non-template flow engine was not configured");
- if (!priv->mtr_policy_arr)
- return mlx5_flow_meter_policy_add(dev, policy_id, policy, error);
- mtr_policy = mlx5_flow_meter_policy_find(dev, policy_id, NULL);
- if (mtr_policy->initialized)
- return -rte_mtr_error_set(error, EEXIST,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
- NULL, "Meter policy already exists.");
- if (!policy ||
- (!policy->actions[RTE_COLOR_RED] &&
- !policy->actions[RTE_COLOR_YELLOW] &&
- !policy->actions[RTE_COLOR_GREEN]))
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_METER_POLICY,
- NULL, "Meter policy actions are not valid.");
- if (policy->actions[RTE_COLOR_RED] == RTE_FLOW_ACTION_TYPE_END)
- mtr_policy->skip_r = 1;
- if (policy->actions[RTE_COLOR_YELLOW] == RTE_FLOW_ACTION_TYPE_END)
- mtr_policy->skip_y = 1;
- if (policy->actions[RTE_COLOR_GREEN] == RTE_FLOW_ACTION_TYPE_END)
- mtr_policy->skip_g = 1;
- if (mtr_policy->skip_r && mtr_policy->skip_y && mtr_policy->skip_g)
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
- NULL, "Meter policy actions are empty.");
- for (i = 0; i < RTE_COLORS; i++) {
- act = policy->actions[i];
- while (act && act->type != RTE_FLOW_ACTION_TYPE_END) {
- switch (act->type) {
- case RTE_FLOW_ACTION_TYPE_PORT_ID:
- /* fall-through. */
- case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT:
- domain_color &= ~(MLX5_MTR_DOMAIN_INGRESS_BIT |
- MLX5_MTR_DOMAIN_EGRESS_BIT);
- break;
- case RTE_FLOW_ACTION_TYPE_RSS:
- is_rss = true;
- /* fall-through. */
- case RTE_FLOW_ACTION_TYPE_QUEUE:
- domain_color &= ~(MLX5_MTR_DOMAIN_EGRESS_BIT |
- MLX5_MTR_DOMAIN_TRANSFER_BIT);
- break;
- case RTE_FLOW_ACTION_TYPE_METER:
- is_hierarchy = true;
- mtr = act->conf;
- fm = mlx5_flow_meter_find(priv,
- mtr->mtr_id, NULL);
- if (!fm)
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_MTR_ID, NULL,
- "Meter not found in meter hierarchy.");
- plc = mlx5_flow_meter_policy_find(dev,
- fm->policy_id,
- NULL);
- MLX5_ASSERT(plc);
- domain_color &= MLX5_MTR_ALL_DOMAIN_BIT &
- (plc->ingress <<
- MLX5_MTR_DOMAIN_INGRESS);
- domain_color &= MLX5_MTR_ALL_DOMAIN_BIT &
- (plc->egress <<
- MLX5_MTR_DOMAIN_EGRESS);
- domain_color &= MLX5_MTR_ALL_DOMAIN_BIT &
- (plc->transfer <<
- MLX5_MTR_DOMAIN_TRANSFER);
- break;
- default:
- break;
- }
- act++;
- }
- }
- if (priv->sh->config.dv_esw_en)
- domain_color &= ~(MLX5_MTR_DOMAIN_EGRESS_BIT |
- MLX5_MTR_DOMAIN_TRANSFER_BIT);
- else
- domain_color &= ~MLX5_MTR_DOMAIN_TRANSFER_BIT;
- if (!domain_color)
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
- NULL, "Meter policy domains are conflicting.");
- mtr_policy->is_rss = is_rss;
- mtr_policy->ingress = !!(domain_color & MLX5_MTR_DOMAIN_INGRESS_BIT);
- pta.ingress = mtr_policy->ingress;
- mtr_policy->egress = !!(domain_color & MLX5_MTR_DOMAIN_EGRESS_BIT);
- pta.egress = mtr_policy->egress;
- mtr_policy->transfer = !!(domain_color & MLX5_MTR_DOMAIN_TRANSFER_BIT);
- pta.transfer = mtr_policy->transfer;
- mtr_policy->group = MLX5_FLOW_TABLE_HWS_POLICY - policy_id;
- mtr_policy->is_hierarchy = is_hierarchy;
- mtr_policy->initialized = 1;
- rte_spinlock_lock(&priv->hw_ctrl_lock);
- mtr_policy->hws_item_templ =
- rte_flow_pattern_template_create(dev->data->port_id,
- &pta, pattern, NULL);
- if (!mtr_policy->hws_item_templ)
- goto policy_add_err;
- for (i = 0; i < RTE_COLORS; i++) {
- if (mtr_policy->skip_g && i == RTE_COLOR_GREEN)
- continue;
- if (mtr_policy->skip_y && i == RTE_COLOR_YELLOW)
- continue;
- if (mtr_policy->skip_r && i == RTE_COLOR_RED)
- continue;
- mtr_policy->hws_act_templ[nb_colors] =
- rte_flow_actions_template_create(dev->data->port_id,
- &ata, policy->actions[i],
- policy->actions[i], NULL);
- if (!mtr_policy->hws_act_templ[nb_colors])
- goto policy_add_err;
- nb_colors++;
- }
- for (i = 0; i < MLX5_MTR_DOMAIN_MAX; i++) {
- memset(&ta, 0, sizeof(ta));
- ta.nb_flows = RTE_COLORS;
- ta.flow_attr.group = mtr_policy->group;
- if (i == MLX5_MTR_DOMAIN_INGRESS) {
- if (!mtr_policy->ingress)
- continue;
- ta.flow_attr.ingress = 1;
- } else if (i == MLX5_MTR_DOMAIN_EGRESS) {
- if (!mtr_policy->egress)
- continue;
- ta.flow_attr.egress = 1;
- } else if (i == MLX5_MTR_DOMAIN_TRANSFER) {
- if (!mtr_policy->transfer)
- continue;
- ta.flow_attr.transfer = 1;
- }
- mtr_policy->hws_flow_table[i] =
- rte_flow_template_table_create(dev->data->port_id,
- &ta, &mtr_policy->hws_item_templ, 1,
- mtr_policy->hws_act_templ, nb_colors,
- NULL);
- if (!mtr_policy->hws_flow_table[i])
- goto policy_add_err;
- nb_colors = 0;
- for (j = 0; j < RTE_COLORS; j++) {
- if (mtr_policy->skip_g && j == RTE_COLOR_GREEN)
- continue;
- if (mtr_policy->skip_y && j == RTE_COLOR_YELLOW)
- continue;
- if (mtr_policy->skip_r && j == RTE_COLOR_RED)
- continue;
- color = rte_col_2_mlx5_col((enum rte_color)j);
- tag_spec.data = color;
- mtr_policy->hws_flow_rule[i][j] =
- rte_flow_async_create(dev->data->port_id,
- CTRL_QUEUE_ID(priv), &op_attr,
- mtr_policy->hws_flow_table[i],
- pattern, 0, policy->actions[j],
- nb_colors, NULL, NULL);
- if (!mtr_policy->hws_flow_rule[i][j])
- goto policy_add_err;
- nb_colors++;
- nb_flows++;
- }
- ret = rte_flow_push(dev->data->port_id,
- CTRL_QUEUE_ID(priv), NULL);
- if (ret < 0)
- goto policy_add_err;
- while (nb_flows) {
- ret = rte_flow_pull(dev->data->port_id,
- CTRL_QUEUE_ID(priv), result,
- nb_flows, NULL);
- if (ret < 0)
- goto policy_add_err;
- for (j = 0; j < ret; j++) {
- if (result[j].status == RTE_FLOW_OP_ERROR)
- goto policy_add_err;
- }
- nb_flows -= ret;
- }
- }
- rte_spinlock_unlock(&priv->hw_ctrl_lock);
- return 0;
-policy_add_err:
- rte_spinlock_unlock(&priv->hw_ctrl_lock);
- ret = mlx5_flow_meter_policy_hws_delete(dev, policy_id, error);
- memset(mtr_policy, 0, sizeof(struct mlx5_flow_meter_policy));
- if (ret)
- return ret;
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED,
- NULL, "Failed to create meter policy.");
-}
-#endif
/**
* Check meter validation.
@@ -2230,103 +1859,4 @@ error:
}
-#if defined(HAVE_MLX5_HWS_SUPPORT)
-/**
- * Create meter rules.
- *
- * @param[in] dev
- * Pointer to Ethernet device.
- * @param[in] meter_id
- * Meter id.
- * @param[in] params
- * Pointer to rte meter parameters.
- * @param[in] shared
- * Meter shared with other flow or not.
- * @param[out] error
- * Pointer to rte meter error structure.
- *
- * @return
- * 0 on success, a negative errno value otherwise and rte_errno is set.
- */
-static int
-mlx5_flow_meter_hws_create(struct rte_eth_dev *dev, uint32_t meter_id,
- struct rte_mtr_params *params, int shared,
- struct rte_mtr_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_flow_meter_profile *profile;
- struct mlx5_flow_meter_info *fm;
- struct mlx5_flow_meter_policy *policy = NULL;
- struct mlx5_aso_mtr *aso_mtr;
- struct mlx5_hw_q_job *job;
- int ret;
-
- if (mlx5_hws_active(dev) && !mlx5_hw_ctx_validate(dev, NULL))
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,
- "non-template flow engine was not configured");
- if (!priv->mtr_profile_arr ||
- !priv->mtr_policy_arr ||
- !priv->mtr_bulk.aso)
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,
- "Meter bulk array is not allocated.");
- /* Meter profile must exist. */
- profile = mlx5_flow_meter_profile_find(priv, params->meter_profile_id);
- if (!profile->initialized)
- return -rte_mtr_error_set(error, ENOENT,
- RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
- NULL, "Meter profile id not valid.");
- /* Meter policy must exist. */
- policy = mlx5_flow_meter_policy_find(dev,
- params->meter_policy_id, NULL);
- if (!policy->initialized)
- return -rte_mtr_error_set(error, ENOENT,
- RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
- NULL, "Meter policy id not valid.");
- /* Meter ID must be valid. */
- if (meter_id >= priv->mtr_config.nb_meters)
- return -rte_mtr_error_set(error, EINVAL,
- RTE_MTR_ERROR_TYPE_MTR_ID,
- NULL, "Meter id not valid.");
- /* Find ASO object. */
- aso_mtr = mlx5_aso_meter_by_idx(priv, meter_id);
- fm = &aso_mtr->fm;
- if (fm->initialized)
- return -rte_mtr_error_set(error, ENOENT,
- RTE_MTR_ERROR_TYPE_MTR_ID,
- NULL, "Meter object already exists.");
- /* Fill the flow meter parameters. */
- fm->meter_id = meter_id;
- fm->policy_id = params->meter_policy_id;
- fm->profile = profile;
- fm->meter_offset = meter_id;
- fm->group = policy->group;
- /* Add to the flow meter list. */
- fm->active_state = 1; /* Config meter starts as active. */
- fm->is_enable = params->meter_enable;
- fm->shared = !!shared;
- fm->initialized = 1;
- /* Update ASO flow meter by wqe. */
- job = mlx5_flow_action_job_init(priv, MLX5_HW_INV_QUEUE, NULL, NULL,
- NULL, MLX5_HW_Q_JOB_TYPE_CREATE, NULL);
- if (!job)
- return -rte_mtr_error_set(error, ENOMEM,
- RTE_MTR_ERROR_TYPE_MTR_ID,
- NULL, "No job context.");
- ret = mlx5_aso_meter_update_by_wqe(priv, MLX5_HW_INV_QUEUE, aso_mtr,
- &priv->mtr_bulk, job, true);
- if (ret) {
- flow_hw_job_put(priv, job, CTRL_QUEUE_ID(priv));
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED,
- NULL, "Failed to create devx meter.");
- }
- fm->active_state = params->meter_enable;
- rte_atomic_fetch_add_explicit(&fm->profile->ref_cnt, 1, rte_memory_order_relaxed);
- rte_atomic_fetch_add_explicit(&policy->ref_cnt, 1, rte_memory_order_relaxed);
- return 0;
-}
-#endif
-
static int
mlx5_flow_meter_params_flush(struct rte_eth_dev *dev,
@@ -2435,56 +1965,4 @@ mlx5_flow_meter_destroy(struct rte_eth_dev *dev, uint32_t meter_id,
}
-/**
- * Destroy meter rules.
- *
- * @param[in] dev
- * Pointer to Ethernet device.
- * @param[in] meter_id
- * Meter id.
- * @param[out] error
- * Pointer to rte meter error structure.
- *
- * @return
- * 0 on success, a negative errno value otherwise and rte_errno is set.
- */
-static int
-mlx5_flow_meter_hws_destroy(struct rte_eth_dev *dev, uint32_t meter_id,
- struct rte_mtr_error *error)
-{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_aso_mtr *aso_mtr;
- struct mlx5_flow_meter_info *fm;
- struct mlx5_flow_meter_policy *policy;
-
- if (!priv->mtr_profile_arr ||
- !priv->mtr_policy_arr ||
- !priv->mtr_bulk.aso)
- return -rte_mtr_error_set(error, ENOTSUP,
- RTE_MTR_ERROR_TYPE_METER_POLICY, NULL,
- "Meter bulk array is not allocated.");
- /* Find ASO object. */
- aso_mtr = mlx5_aso_meter_by_idx(priv, meter_id);
- fm = &aso_mtr->fm;
- if (!fm->initialized)
- return -rte_mtr_error_set(error, ENOENT,
- RTE_MTR_ERROR_TYPE_MTR_ID,
- NULL, "Meter object id not valid.");
- /* Meter object must not have any owner. */
- if (fm->ref_cnt > 0)
- return -rte_mtr_error_set(error, EBUSY,
- RTE_MTR_ERROR_TYPE_UNSPECIFIED,
- NULL, "Meter object is being used.");
- /* Destroy the meter profile. */
- rte_atomic_fetch_sub_explicit(&fm->profile->ref_cnt,
- 1, rte_memory_order_relaxed);
- /* Destroy the meter policy. */
- policy = mlx5_flow_meter_policy_find(dev,
- fm->policy_id, NULL);
- rte_atomic_fetch_sub_explicit(&policy->ref_cnt,
- 1, rte_memory_order_relaxed);
- memset(fm, 0, sizeof(struct mlx5_flow_meter_info));
- return 0;
-}
-
/**
* Modify meter state.
@@ -2826,12 +2304,4 @@ static const struct rte_mtr_ops mlx5_flow_mtr_hws_ops = {
.meter_profile_delete = mlx5_flow_meter_profile_hws_delete,
.meter_profile_get = mlx5_flow_meter_profile_get,
- .meter_policy_validate = mlx5_flow_meter_policy_hws_validate,
- .meter_policy_add = mlx5_flow_meter_policy_hws_add,
- .meter_policy_delete = mlx5_flow_meter_policy_hws_delete,
- .meter_policy_get = mlx5_flow_meter_policy_get,
- .create = mlx5_flow_meter_hws_create,
- .destroy = mlx5_flow_meter_hws_destroy,
- .meter_enable = mlx5_flow_meter_enable,
- .meter_disable = mlx5_flow_meter_disable,
.meter_profile_update = mlx5_flow_meter_profile_update,
.meter_dscp_table_update = NULL,
@@ -3277,12 +2747,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
}
}
- if (priv->mtr_bulk.aso) {
- for (i = 0; i < priv->mtr_config.nb_meters; i++) {
- aso_mtr = mlx5_aso_meter_by_idx(priv, i);
- fm = &aso_mtr->fm;
- if (fm->initialized)
- mlx5_flow_meter_hws_destroy(dev, i, error);
- }
- }
if (priv->policy_idx_tbl) {
MLX5_L3T_FOREACH(priv->policy_idx_tbl, i, entry) {
@@ -3310,18 +2772,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
priv->policy_idx_tbl = NULL;
}
-#if defined(HAVE_MLX5_HWS_SUPPORT)
- if (priv->mtr_policy_arr) {
- struct mlx5_flow_meter_policy *policy;
-
- for (i = 0; i < priv->mtr_config.nb_meter_policies; i++) {
- policy = mlx5_flow_meter_policy_find(dev, i,
- &policy_idx);
- if (policy->initialized) {
- mlx5_flow_meter_policy_hws_delete(dev, i,
- error);
- }
- }
- }
-#endif
if (priv->mtr_profile_tbl) {
MLX5_L3T_FOREACH(priv->mtr_profile_tbl, i, entry) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.222819280 +0100
+++ 0032-net-mlx5-remove-unsupported-flow-meter-action-in-HWS.patch 2025-07-18 20:29:10.887907199 +0100
@@ -1 +1 @@
-From 645f240d1cd57d0be1b773c739a5845a7663eeed Mon Sep 17 00:00:00 2001
+From ad77925778d2e8798609cf8142b4ab0ddbf10e9a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 645f240d1cd57d0be1b773c739a5845a7663eeed ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index d58f3d10a1..281f23366f 100644
+index e15466117b..99cb4eba8d 100644
@@ -25 +26 @@
-@@ -1796,33 +1796,4 @@ flow_hw_represented_port_compile(struct rte_eth_dev *dev,
+@@ -1750,33 +1750,4 @@ flow_hw_represented_port_compile(struct rte_eth_dev *dev,
@@ -59 +60 @@
-@@ -2546,5 +2517,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2494,5 +2465,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
@@ -65 +66 @@
-@@ -2814,25 +2784,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -2768,25 +2738,4 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
@@ -91 +92 @@
-@@ -3522,5 +3471,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
+@@ -3476,5 +3425,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
@@ -97 +98 @@
-@@ -3695,26 +3643,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
+@@ -3649,26 +3597,4 @@ flow_hw_actions_construct(struct rte_eth_dev *dev,
@@ -124 +125 @@
-@@ -7346,8 +7272,4 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev,
+@@ -7232,8 +7158,4 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev,
@@ -133 +134 @@
-@@ -7677,11 +7599,4 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
+@@ -7563,11 +7485,4 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
@@ -146 +147 @@
-index dab3c4bf77..cd6a804593 100644
+index 804f4371a4..4426470c8a 100644
@@ -149 +150 @@
-@@ -1167,47 +1167,4 @@ mlx5_flow_meter_policy_validate(struct rte_eth_dev *dev,
+@@ -1157,47 +1157,4 @@ mlx5_flow_meter_policy_validate(struct rte_eth_dev *dev,
@@ -197 +198 @@
-@@ -1541,332 +1498,4 @@ mlx5_flow_meter_policy_get(struct rte_eth_dev *dev,
+@@ -1531,332 +1488,4 @@ mlx5_flow_meter_policy_get(struct rte_eth_dev *dev,
@@ -530 +531 @@
-@@ -2240,103 +1869,4 @@ error:
+@@ -2230,103 +1859,4 @@ error:
@@ -634 +635 @@
-@@ -2445,56 +1975,4 @@ mlx5_flow_meter_destroy(struct rte_eth_dev *dev, uint32_t meter_id,
+@@ -2435,56 +1965,4 @@ mlx5_flow_meter_destroy(struct rte_eth_dev *dev, uint32_t meter_id,
@@ -691 +692 @@
-@@ -2836,12 +2314,4 @@ static const struct rte_mtr_ops mlx5_flow_mtr_hws_ops = {
+@@ -2826,12 +2304,4 @@ static const struct rte_mtr_ops mlx5_flow_mtr_hws_ops = {
@@ -704 +705 @@
-@@ -3287,12 +2757,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
+@@ -3277,12 +2747,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
@@ -717 +718 @@
-@@ -3320,18 +2782,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
+@@ -3310,18 +2772,4 @@ mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix error notification for large flow patterns' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (30 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: remove unsupported flow meter action in HWS' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix mark action with shared Rx queue' " Kevin Traynor
` (142 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5d03c253b4498ba929d5f5ee68decb90b4a53df2
Thanks.
Kevin
---
From 5d03c253b4498ba929d5f5ee68decb90b4a53df2 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Tue, 6 May 2025 16:31:51 +0300
Subject: [PATCH] net/mlx5: fix error notification for large flow patterns
[ upstream commit 3bd95360ac6d2dd761c1af07882d21d34d326ce0 ]
HWS has limited resources to translate flow pattern.
When pattern translation does not fit STE, HWS translation fails with
E2BIG error.
The patch verifies that the E2BIG error value is kept during flow
error notification.
Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_bwc.c | 2 +-
drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_bwc.c b/drivers/net/mlx5/hws/mlx5dr_bwc.c
index 9233452118..0086cd2c90 100644
--- a/drivers/net/mlx5/hws/mlx5dr_bwc.c
+++ b/drivers/net/mlx5/hws/mlx5dr_bwc.c
@@ -138,5 +138,5 @@ mlx5dr_bwc_matcher_create(struct mlx5dr_table *table,
&attr);
if (!bwc_matcher->matcher) {
- rte_errno = EINVAL;
+ /* rte_errno must be set */
goto free_at;
}
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 99cb4eba8d..a0e7a6ba0b 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -13603,5 +13603,5 @@ error:
rte_memcpy(error, &sub_error, sizeof(sub_error));
}
- return rte_flow_error_set(error, ENOMEM,
+ return rte_flow_error_set(error, rte_errno,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, "fail to register matcher");
@@ -13770,6 +13770,10 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
ret = flow_hw_register_matcher(dev, attr, items, external, *flow, &matcher, error);
- if (ret)
+ if (ret) {
+ if (rte_errno == E2BIG)
+ rte_flow_error_set(error, E2BIG, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
+ "flow pattern is too big");
goto error;
+ }
/*
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.265056285 +0100
+++ 0033-net-mlx5-fix-error-notification-for-large-flow-patte.patch 2025-07-18 20:29:10.897907230 +0100
@@ -1 +1 @@
-From 3bd95360ac6d2dd761c1af07882d21d34d326ce0 Mon Sep 17 00:00:00 2001
+From 5d03c253b4498ba929d5f5ee68decb90b4a53df2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3bd95360ac6d2dd761c1af07882d21d34d326ce0 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 281f23366f..e26093522f 100644
+index 99cb4eba8d..a0e7a6ba0b 100644
@@ -38 +39 @@
-@@ -13848,5 +13848,5 @@ error:
+@@ -13603,5 +13603,5 @@ error:
@@ -45,2 +46,2 @@
-@@ -14024,6 +14024,10 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
- }
+@@ -13770,6 +13770,10 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type,
+
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix mark action with shared Rx queue' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (31 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix error notification for large flow patterns' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: align PF and VF/SF MAC address handling' " Kevin Traynor
` (141 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/312f28ad91235b287288066ba5afc78d166f14fd
Thanks.
Kevin
---
From 312f28ad91235b287288066ba5afc78d166f14fd Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 14 May 2025 10:50:18 +0300
Subject: [PATCH] net/mlx5: fix mark action with shared Rx queue
[ upstream commit 28eeca69eb1d9bebb0105e47c82885b0a8403654 ]
Fix the assignment of the mark_flag in the shared Rx queue setup
in mlx5_flow_rxq_dynf_set(). Previously, mark_flag was not set
correctly in all cases, which could lead to incorrect flow mark
action behavior when configuring shared Rx queues.
Fixes: 2d8763432add ("net/mlx5: fix shared Rx queue data access race")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 61833c0dcb..f83ae1883d 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1866,6 +1866,6 @@ mlx5_flow_rxq_dynf_set(struct rte_eth_dev *dev)
data->flow_meta_port_mask = priv->sh->dv_meta_mask;
}
- data->mark_flag = mark_flag;
}
+ data->mark_flag = mark_flag;
}
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.305498935 +0100
+++ 0034-net-mlx5-fix-mark-action-with-shared-Rx-queue.patch 2025-07-18 20:29:10.904907251 +0100
@@ -1 +1 @@
-From 28eeca69eb1d9bebb0105e47c82885b0a8403654 Mon Sep 17 00:00:00 2001
+From 312f28ad91235b287288066ba5afc78d166f14fd Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 28eeca69eb1d9bebb0105e47c82885b0a8403654 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 8696cc4e95..3d49a2d833 100644
+index 61833c0dcb..f83ae1883d 100644
@@ -24 +25 @@
-@@ -1867,6 +1867,6 @@ mlx5_flow_rxq_dynf_set(struct rte_eth_dev *dev)
+@@ -1866,6 +1866,6 @@ mlx5_flow_rxq_dynf_set(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: align PF and VF/SF MAC address handling' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (32 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix mark action with shared Rx queue' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/sfc: fix action order on start failure' " Kevin Traynor
` (140 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gavin Li; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/adce6d130b82cc53366af54a4d3aa5acab3df1df
Thanks.
Kevin
---
From adce6d130b82cc53366af54a4d3aa5acab3df1df Mon Sep 17 00:00:00 2001
From: Gavin Li <gavinl@nvidia.com>
Date: Fri, 16 May 2025 10:10:32 +0300
Subject: [PATCH] net/mlx5: align PF and VF/SF MAC address handling
[ upstream commit 2d0665a7f7719e8cd615b64ac9f2c8c22d47450a ]
In the mlx5_dev_spawn function, the Virtual Function (VF) synchronizes MAC
addresses from the kernel using netlink. It queries the netdev-configured
MACs and populates the list in the PMD device data, including multicast
MAC addresses. These addresses are later used for control flow creation,
allowing traffic for the listed MACs to be received. However, the Physical
Function (PF) does not synchronize with the kernel and thus does not add
any multicast MAC address rules when enabling traffic. This discrepancy
causes the IFF_ALLMULTI ioctl code to malfunction, as it fails to disable
all multicast traffic, leaving the VF still able to see it.
To align PF and VF behavior, only unicast MAC address flows should be
added.
Fixes: 272733b5ebfd ("net/mlx5: use flow to enable unicast traffic")
Signed-off-by: Gavin Li <gavinl@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 3 ++-
drivers/net/mlx5/mlx5_trigger.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index b740e47404..37819932d1 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1605,5 +1605,6 @@ err_secondary:
/* Register MAC address. */
claim_zero(mlx5_mac_addr_add(eth_dev, &mac, 0, 0));
- if (sh->dev_cap.vf && sh->config.vf_nl_en)
+ /* Sync mac addresses for PF or VF/SF if vf_nl_en is true */
+ if ((!sh->dev_cap.vf && !sh->dev_cap.sf) || sh->config.vf_nl_en)
mlx5_nl_mac_addr_sync(priv->nl_socket_route,
mlx5_ifindex(eth_dev),
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 4ee44e9165..2f679a30cf 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1715,5 +1715,5 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
struct rte_ether_addr *mac = &dev->data->mac_addrs[i];
- if (!memcmp(mac, &cmp, sizeof(*mac)))
+ if (!memcmp(mac, &cmp, sizeof(*mac)) || rte_is_multicast_ether_addr(mac))
continue;
memcpy(&unicast.hdr.dst_addr.addr_bytes,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.341986825 +0100
+++ 0035-net-mlx5-align-PF-and-VF-SF-MAC-address-handling.patch 2025-07-18 20:29:10.907907260 +0100
@@ -1 +1 @@
-From 2d0665a7f7719e8cd615b64ac9f2c8c22d47450a Mon Sep 17 00:00:00 2001
+From adce6d130b82cc53366af54a4d3aa5acab3df1df Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2d0665a7f7719e8cd615b64ac9f2c8c22d47450a ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 573e846ed2..696a3e12c7 100644
+index b740e47404..37819932d1 100644
@@ -33 +34 @@
-@@ -1604,5 +1604,6 @@ err_secondary:
+@@ -1605,5 +1605,6 @@ err_secondary:
@@ -42 +43 @@
-index 8145ad4233..485984f9b0 100644
+index 4ee44e9165..2f679a30cf 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/sfc: fix action order on start failure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (33 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: align PF and VF/SF MAC address handling' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/nfp: fix crash with null RSS hash key' " Kevin Traynor
` (139 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Ivan Malov; +Cc: Andy Moreton, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/49d20b5d1e66314c63d866d8b9c4436f2df94866
Thanks.
Kevin
---
From 49d20b5d1e66314c63d866d8b9c4436f2df94866 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@arknetworks.am>
Date: Tue, 18 Mar 2025 14:53:49 +0400
Subject: [PATCH] net/sfc: fix action order on start failure
[ upstream commit 66dced1537734f9ca0616a90f748140168e93868 ]
Having incorrect order leads to an assert in efx_nic_fini().
Fixes: bc712f1c86fc ("net/sfc: support attaching to HW table")
Signed-off-by: Ivan Malov <ivan.malov@arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton@amd.com>
---
drivers/net/sfc/sfc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c
index 2cfff20f47..938c967430 100644
--- a/drivers/net/sfc/sfc.c
+++ b/drivers/net/sfc/sfc.c
@@ -531,10 +531,10 @@ fail_rx_start:
sfc_port_stop(sa);
-fail_tbls_start:
- sfc_ev_stop(sa);
-
fail_port_start:
sfc_tbls_stop(sa);
+fail_tbls_start:
+ sfc_ev_stop(sa);
+
fail_ev_start:
sfc_intr_stop(sa);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.384493315 +0100
+++ 0036-net-sfc-fix-action-order-on-start-failure.patch 2025-07-18 20:29:10.908907263 +0100
@@ -1 +1 @@
-From 66dced1537734f9ca0616a90f748140168e93868 Mon Sep 17 00:00:00 2001
+From 49d20b5d1e66314c63d866d8b9c4436f2df94866 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 66dced1537734f9ca0616a90f748140168e93868 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: fix crash with null RSS hash key' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (34 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/sfc: fix action order on start failure' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/nfp: fix hash key length logic' " Kevin Traynor
` (138 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Chaoyong He; +Cc: Long Wu, Peng Zhang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9ba34acb5fcc44f82dad90c893d94655660f6519
Thanks.
Kevin
---
From 9ba34acb5fcc44f82dad90c893d94655660f6519 Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 1 Apr 2025 15:55:07 +0800
Subject: [PATCH] net/nfp: fix crash with null RSS hash key
[ upstream commit 53df26286e4570ea328c5972fb244d8bc0008315 ]
Some testpmd application commands will use 'rss_conf->rss_key'
parameter with a NULL value to call 'rte_eth_dev_rss_hash_conf_get()'
API, and NFP PMD will coredump at these situations.
Fix this by add a check about the 'rss_conf->rss_key' pointer.
Fixes: 934e4c60fbff ("nfp: add RSS")
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
drivers/net/nfp/nfp_net_common.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index aaa515bac2..600fcd5c0e 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -2063,7 +2063,9 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
/* Reading the key byte a byte */
- for (i = 0; i < rss_conf->rss_key_len; i++) {
- key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i);
- memcpy(&rss_conf->rss_key[i], &key, 1);
+ if (rss_conf->rss_key != NULL) {
+ for (i = 0; i < rss_conf->rss_key_len; i++) {
+ key = nn_cfg_readb(hw, NFP_NET_CFG_RSS_KEY + i);
+ memcpy(&rss_conf->rss_key[i], &key, 1);
+ }
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.413042145 +0100
+++ 0037-net-nfp-fix-crash-with-null-RSS-hash-key.patch 2025-07-18 20:29:10.909907267 +0100
@@ -1 +1 @@
-From 53df26286e4570ea328c5972fb244d8bc0008315 Mon Sep 17 00:00:00 2001
+From 9ba34acb5fcc44f82dad90c893d94655660f6519 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 53df26286e4570ea328c5972fb244d8bc0008315 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: fix hash key length logic' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (35 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/nfp: fix crash with null RSS hash key' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'app/testpmd: fix RSS hash key update' " Kevin Traynor
` (137 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Chaoyong He; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/55c400bab9a7541cec577f78a069e474bf251213
Thanks.
Kevin
---
From 55c400bab9a7541cec577f78a069e474bf251213 Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 1 Apr 2025 07:09:31 -0700
Subject: [PATCH] net/nfp: fix hash key length logic
[ upstream commit 346a007e161e68950acbf59984fefc2bb6fe3982 ]
There does not exist an API for driver to get/set the hash key length
from/to the firmware.
---
drivers/net/nfp/nfp_net_common.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index 600fcd5c0e..df89595773 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -1967,7 +1967,4 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl);
- /* Writing the key size */
- nn_cfg_writeb(hw, NFP_NET_CFG_RSS_KEY_SZ, rss_conf->rss_key_len);
-
return 0;
}
@@ -2060,5 +2057,5 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
/* Reading the key size */
- rss_conf->rss_key_len = nn_cfg_readl(hw, NFP_NET_CFG_RSS_KEY_SZ);
+ rss_conf->rss_key_len = NFP_NET_CFG_RSS_KEY_SZ;
/* Reading the key byte a byte */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.442880085 +0100
+++ 0038-net-nfp-fix-hash-key-length-logic.patch 2025-07-18 20:29:10.910907270 +0100
@@ -1 +1 @@
-From 346a007e161e68950acbf59984fefc2bb6fe3982 Mon Sep 17 00:00:00 2001
+From 55c400bab9a7541cec577f78a069e474bf251213 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 346a007e161e68950acbf59984fefc2bb6fe3982 ]
+
@@ -8,15 +9,0 @@
----
- #define NFP_NET_CFG_RSS_KEY_SZ 0x28
- #define NFP_NET_CFG_MACADDR 0x0024
----
-
-The original logic try to use the 'NFP_NET_CFG_RSS_KEY_SZ' as the
-inexistent API, read from this address will get wrong hash key length
-and write to this address will overwrite the MAC address unexpected,
-which will cause very strange problem.
-
-Fixes: 934e4c60fbff ("nfp: add RSS")
-Cc: stable@dpdk.org
-
-Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
-Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'app/testpmd: fix RSS hash key update' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (36 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/nfp: fix hash key length logic' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/af_xdp: fix use after free in zero-copy Tx' " Kevin Traynor
` (136 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Chaoyong He; +Cc: Long Wu, Peng Zhang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5c7b58471af11358fb7f4e58417c0395817cf214
Thanks.
Kevin
---
From 5c7b58471af11358fb7f4e58417c0395817cf214 Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 1 Apr 2025 15:48:36 +0800
Subject: [PATCH] app/testpmd: fix RSS hash key update
[ upstream commit 24e94a4c86c52f45a7a7c139e4e8484f3afe6d8f ]
There has logic problem in 'port_rss_hash_key_update()', the user input
will be overwritten by the call to 'rte_eth_dev_rss_hash_conf_get()',
so the RSS functions will not get update as expected.
------
testpmd> show port 0 rss-hash key
RSS functions:
ipv4 ipv6
RSS key:
6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B7
3BBEAC01FA
testpmd> port config 0 rss-hash-key ipv6-tcp 6D5A56DA255B0EC24167253D
43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B73BBEAC01FA
testpmd> show port 0 rss-hash key
RSS functions:
ipv4 ipv6
RSS key:
6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA38030F20C6A42B7
3BBEAC01FA
testpmd>
------
Fixes: 8205e241b2b0 ("app/testpmd: add missing type to RSS hash commands")
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
app/test-pmd/config.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index b183f14737..d2585e0edc 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -4794,9 +4794,10 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,
rss_conf.rss_key = NULL;
rss_conf.rss_key_len = 0;
- rss_conf.rss_hf = str_to_rsstypes(rss_type);
+ rss_conf.rss_hf = 0;
diag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf);
if (diag == 0) {
rss_conf.rss_key = hash_key;
rss_conf.rss_key_len = hash_key_len;
+ rss_conf.rss_hf = str_to_rsstypes(rss_type);
diag = rte_eth_dev_rss_hash_update(port_id, &rss_conf);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.472409782 +0100
+++ 0039-app-testpmd-fix-RSS-hash-key-update.patch 2025-07-18 20:29:10.914907282 +0100
@@ -1 +1 @@
-From 24e94a4c86c52f45a7a7c139e4e8484f3afe6d8f Mon Sep 17 00:00:00 2001
+From 5c7b58471af11358fb7f4e58417c0395817cf214 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 24e94a4c86c52f45a7a7c139e4e8484f3afe6d8f ]
+
@@ -29 +30,0 @@
-Cc: stable@dpdk.org
@@ -39 +40 @@
-index e89af21cec..c32e011fa6 100644
+index b183f14737..d2585e0edc 100644
@@ -42 +43 @@
-@@ -4807,9 +4807,10 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,
+@@ -4794,9 +4794,10 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/af_xdp: fix use after free in zero-copy Tx' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (37 preceding siblings ...)
2025-07-18 19:29 ` patch 'app/testpmd: fix RSS hash key update' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix integer overflow in interrupt unmap' " Kevin Traynor
` (135 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Ariel Otilibili; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f7b74c765d4fcace202c74ae2f26671f138145f9
Thanks.
Kevin
---
From f7b74c765d4fcace202c74ae2f26671f138145f9 Mon Sep 17 00:00:00 2001
From: Ariel Otilibili <ariel.otilibili@6wind.com>
Date: Wed, 26 Feb 2025 21:08:40 +0100
Subject: [PATCH] net/af_xdp: fix use after free in zero-copy Tx
[ upstream commit a23bf7fde78b10afbbafda252f15495b26e010a9 ]
tx_bytes is computed after both legs are tested. This might
produce a use after memory free.
The computation is now moved into each leg.
Bugzilla ID: 1440
Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks")
Signed-off-by: Ariel Otilibili <ariel.otilibili@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
.mailmap | 2 +-
drivers/net/af_xdp/rte_eth_af_xdp.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.mailmap b/.mailmap
index a4bacad9a4..257dd551a6 100644
--- a/.mailmap
+++ b/.mailmap
@@ -136,5 +136,5 @@ Apeksha Gupta <apeksha.gupta@nxp.com>
Archana Muniganti <marchana@marvell.com> <muniganti.archana@caviumnetworks.com>
Archit Pandey <architpandeynitk@gmail.com>
-Ariel Otilibili <otilibil@eurecom.fr> <ariel.otilibili@6wind.com>
+Ariel Otilibili <ariel.otilibili@6wind.com> <otilibil@eurecom.fr>
Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
index 814398ba4b..092bcb73aa 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -575,4 +575,5 @@ af_xdp_tx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
offset = offset << XSK_UNALIGNED_BUF_OFFSET_SHIFT;
desc->addr = addr | offset;
+ tx_bytes += desc->len;
count++;
} else {
@@ -602,9 +603,8 @@ af_xdp_tx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
rte_memcpy(pkt, rte_pktmbuf_mtod(mbuf, void *),
desc->len);
+ tx_bytes += desc->len;
rte_pktmbuf_free(mbuf);
count++;
}
-
- tx_bytes += mbuf->pkt_len;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.517329434 +0100
+++ 0040-net-af_xdp-fix-use-after-free-in-zero-copy-Tx.patch 2025-07-18 20:29:10.917907291 +0100
@@ -1 +1 @@
-From a23bf7fde78b10afbbafda252f15495b26e010a9 Mon Sep 17 00:00:00 2001
+From f7b74c765d4fcace202c74ae2f26671f138145f9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a23bf7fde78b10afbbafda252f15495b26e010a9 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 4b781bd3fb..822936f615 100644
+index a4bacad9a4..257dd551a6 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix integer overflow in interrupt unmap' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (38 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/af_xdp: fix use after free in zero-copy Tx' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix memory leak on failure' " Kevin Traynor
` (134 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bd25f39563529fac6ee27835605dbbf56809c851
Thanks.
Kevin
---
From bd25f39563529fac6ee27835605dbbf56809c851 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:54 +0800
Subject: [PATCH] net/hns3: fix integer overflow in interrupt unmap
[ upstream commit e401c04481c7a6a4199504d6f4696c48620ff093 ]
The number of interrupt vector may exceed the range of uint8_t.
So hns3_unmap_rx_interrupt() should use uint16_t for 'vec' variable.
Fixes: 02a7b55657b2 ("net/hns3: support Rx interrupt")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c
index 25a45212be..dc70bf3cff 100644
--- a/drivers/net/hns3/hns3_common.c
+++ b/drivers/net/hns3/hns3_common.c
@@ -883,6 +883,6 @@ hns3_unmap_rx_interrupt(struct rte_eth_dev *dev)
struct hns3_adapter *hns = dev->data->dev_private;
struct hns3_hw *hw = &hns->hw;
- uint8_t base = RTE_INTR_VEC_ZERO_OFFSET;
- uint8_t vec = RTE_INTR_VEC_ZERO_OFFSET;
+ uint16_t base = RTE_INTR_VEC_ZERO_OFFSET;
+ uint16_t vec = RTE_INTR_VEC_ZERO_OFFSET;
uint16_t q_id;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.549856847 +0100
+++ 0041-net-hns3-fix-integer-overflow-in-interrupt-unmap.patch 2025-07-18 20:29:10.918859834 +0100
@@ -1 +1 @@
-From e401c04481c7a6a4199504d6f4696c48620ff093 Mon Sep 17 00:00:00 2001
+From bd25f39563529fac6ee27835605dbbf56809c851 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e401c04481c7a6a4199504d6f4696c48620ff093 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix memory leak on failure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (39 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix integer overflow in interrupt unmap' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix extra wait for link up' " Kevin Traynor
` (133 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/c9d54054fd05c4d52972102a4eae0ea2c2029199
Thanks.
Kevin
---
From c9d54054fd05c4d52972102a4eae0ea2c2029199 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:55 +0800
Subject: [PATCH] net/hns3: fix memory leak on failure
[ upstream commit 1c27385dcef1384a1a10edd86bb843b06547b161 ]
When the hns3_dfx_reg_fetch_data() function returns from processing
failure, cmd_descs is not freed, which leads to leakage.
This patch fit it.
By the way, this patch uses calloc to apply for heap memory instead
of hugepage memory.
Fixes: ef1fbd355451 ("net/hns3: add more registers to dump")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_regs.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/hns3/hns3_regs.c b/drivers/net/hns3/hns3_regs.c
index 8a6ddbfe8c..5c74f9ae2e 100644
--- a/drivers/net/hns3/hns3_regs.c
+++ b/drivers/net/hns3/hns3_regs.c
@@ -1271,5 +1271,5 @@ hns3_get_dfx_regs(struct hns3_hw *hw, struct rte_dev_reg_info *regs, uint32_t mo
max_bd_num = RTE_MAX(bd_num_list[i], max_bd_num);
- cmd_descs = rte_zmalloc(NULL, sizeof(*cmd_descs) * max_bd_num, 0);
+ cmd_descs = calloc(max_bd_num, sizeof(*cmd_descs));
if (cmd_descs == NULL)
return -ENOMEM;
@@ -1291,4 +1291,5 @@ hns3_get_dfx_regs(struct hns3_hw *hw, struct rte_dev_reg_info *regs, uint32_t mo
hns3_err(hw, "Query register number differ from the list for module %s!",
hns3_get_name_by_module(i));
+ free(cmd_descs);
return -EINVAL;
}
@@ -1297,5 +1298,5 @@ hns3_get_dfx_regs(struct hns3_hw *hw, struct rte_dev_reg_info *regs, uint32_t mo
data += regs_num;
}
- rte_free(cmd_descs);
+ free(cmd_descs);
return ret;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.581290357 +0100
+++ 0042-net-hns3-fix-memory-leak-on-failure.patch 2025-07-18 20:29:10.918907294 +0100
@@ -1 +1 @@
-From 1c27385dcef1384a1a10edd86bb843b06547b161 Mon Sep 17 00:00:00 2001
+From c9d54054fd05c4d52972102a4eae0ea2c2029199 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1c27385dcef1384a1a10edd86bb843b06547b161 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix extra wait for link up' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (40 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix memory leak on failure' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix memory leak for indirect flow action' " Kevin Traynor
` (132 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/65de22a5a498fcd9f75d52d2fc376b9129538be6
Thanks.
Kevin
---
From 65de22a5a498fcd9f75d52d2fc376b9129538be6 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:56 +0800
Subject: [PATCH] net/hns3: fix extra wait for link up
[ upstream commit 7c8cbd3c8ae0cec66fbd5acb89a62ee9742c70b4 ]
If the link auto-negotiation of the NIC is disabled,
or the flow control auto-negotiation is not supported,
it's unnecessary to wait for link establishment.
Fixes: 1f411e31a826 ("net/hns3: support flow control autoneg for copper port")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 9f7119b734..20ad249b8b 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5309,10 +5309,4 @@ hns3_get_current_fc_mode(struct rte_eth_dev *dev)
struct hns3_mac *mac = &hw->mac;
- /*
- * When the flow control mode is obtained, the device may not complete
- * auto-negotiation. It is necessary to wait for link establishment.
- */
- (void)hns3_dev_link_update(dev, 1);
-
/*
* If the link auto-negotiation of the nic is disabled, or the flow
@@ -5323,4 +5317,10 @@ hns3_get_current_fc_mode(struct rte_eth_dev *dev)
return hw->requested_fc_mode;
+ /*
+ * When the flow control mode is obtained, the device may not complete
+ * auto-negotiation. It is necessary to wait for link establishment.
+ */
+ (void)hns3_dev_link_update(dev, 1);
+
return hns3_get_autoneg_fc_mode(hw);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.612296574 +0100
+++ 0043-net-hns3-fix-extra-wait-for-link-up.patch 2025-07-18 20:29:10.921907303 +0100
@@ -1 +1 @@
-From 7c8cbd3c8ae0cec66fbd5acb89a62ee9742c70b4 Mon Sep 17 00:00:00 2001
+From 65de22a5a498fcd9f75d52d2fc376b9129538be6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7c8cbd3c8ae0cec66fbd5acb89a62ee9742c70b4 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix memory leak for indirect flow action' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (41 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix extra wait for link up' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix interrupt rollback' " Kevin Traynor
` (131 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/d3a09d4fef164931865774a0b3eb4ecd527156d3
Thanks.
Kevin
---
From d3a09d4fef164931865774a0b3eb4ecd527156d3 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:57 +0800
Subject: [PATCH] net/hns3: fix memory leak for indirect flow action
[ upstream commit 18596f7be8f93e159e98704af12b1cc8af289dd6 ]
Currently, when the application creates an indirect action,
the hns3 driver allocates a memory for the structure
rte_flow_action_handle and returns this structure pointer to
application. When the application invokes the destroy function
to destroy the indirect action, the driver releases the memory.
However, when the application destroys all flows by using the
flush function before destroying the indirect action, the memory
is not released. This patch fix it by using uint64_t instead of
rte_flow_action_handle* to store indirect action avoids memory
leakage.
Fixes: fdfcb94d8fb3 ("net/hns3: support indirect counter flow action")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_flow.c | 41 ++++++++++++++++--------------------
drivers/net/hns3/hns3_flow.h | 9 ++++++--
2 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index 266934b45b..c0238d2bfa 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -474,17 +474,18 @@ hns3_handle_action_indirect(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
- const struct rte_flow_action_handle *indir = action->conf;
+ struct rte_flow_action_handle indir;
- if (indir->indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT)
+ indir.val64 = (uint64_t)action->conf;
+ if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
action, "Invalid indirect type");
- if (hns3_counter_lookup(dev, indir->counter_id) == NULL)
+ if (hns3_counter_lookup(dev, indir.counter_id) == NULL)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
action, "Counter id not exist");
- rule->act_cnt.id = indir->counter_id;
+ rule->act_cnt.id = indir.counter_id;
rule->flags |= (HNS3_RULE_FLAG_COUNTER | HNS3_RULE_FLAG_COUNTER_INDIR);
@@ -2727,5 +2728,5 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
struct hns3_pf *pf = HNS3_DEV_PRIVATE_TO_PF(dev->data->dev_private);
const struct rte_flow_action_count *act_count;
- struct rte_flow_action_handle *handle = NULL;
+ struct rte_flow_action_handle handle;
struct hns3_flow_counter *counter;
@@ -2733,12 +2734,4 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
return NULL;
- handle = rte_zmalloc("hns3 action handle",
- sizeof(struct rte_flow_action_handle), 0);
- if (handle == NULL) {
- rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE,
- NULL, "Failed to allocate action memory");
- return NULL;
- }
-
pthread_mutex_lock(&hw->flows_lock);
@@ -2763,13 +2756,12 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
counter->indirect = true;
- handle->indirect_type = HNS3_INDIRECT_ACTION_TYPE_COUNT;
- handle->counter_id = counter->id;
+ handle.indirect_type = HNS3_INDIRECT_ACTION_TYPE_COUNT;
+ handle.counter_id = counter->id;
pthread_mutex_unlock(&hw->flows_lock);
- return handle;
+ return (struct rte_flow_action_handle *)handle.val64;
err_exit:
pthread_mutex_unlock(&hw->flows_lock);
- rte_free(handle);
return NULL;
}
@@ -2781,9 +2773,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
{
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ struct rte_flow_action_handle indir;
struct hns3_flow_counter *counter;
pthread_mutex_lock(&hw->flows_lock);
- if (handle->indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
+ indir.val64 = (uint64_t)handle;
+ if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
pthread_mutex_unlock(&hw->flows_lock);
return rte_flow_error_set(error, EINVAL,
@@ -2792,5 +2786,5 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
}
- counter = hns3_counter_lookup(dev, handle->counter_id);
+ counter = hns3_counter_lookup(dev, indir.counter_id);
if (counter == NULL) {
pthread_mutex_unlock(&hw->flows_lock);
@@ -2807,6 +2801,5 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
}
- (void)hns3_counter_release(dev, handle->counter_id);
- rte_free(handle);
+ (void)hns3_counter_release(dev, indir.counter_id);
pthread_mutex_unlock(&hw->flows_lock);
@@ -2821,4 +2814,5 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
{
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ struct rte_flow_action_handle indir;
struct rte_flow flow;
int ret;
@@ -2826,5 +2820,6 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
pthread_mutex_lock(&hw->flows_lock);
- if (handle->indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
+ indir.val64 = (uint64_t)handle;
+ if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
pthread_mutex_unlock(&hw->flows_lock);
return rte_flow_error_set(error, EINVAL,
@@ -2834,5 +2829,5 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
memset(&flow, 0, sizeof(flow));
- flow.counter_id = handle->counter_id;
+ flow.counter_id = indir.counter_id;
ret = hns3_counter_query(dev, &flow,
(struct rte_flow_query_count *)data, error);
diff --git a/drivers/net/hns3/hns3_flow.h b/drivers/net/hns3/hns3_flow.h
index 1b49673f11..612890391d 100644
--- a/drivers/net/hns3/hns3_flow.h
+++ b/drivers/net/hns3/hns3_flow.h
@@ -51,6 +51,11 @@ enum {
struct rte_flow_action_handle {
- int indirect_type;
- uint32_t counter_id;
+ union {
+ uint64_t val64;
+ struct {
+ int indirect_type;
+ uint32_t counter_id;
+ };
+ };
};
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.646322815 +0100
+++ 0044-net-hns3-fix-memory-leak-for-indirect-flow-action.patch 2025-07-18 20:29:10.923907310 +0100
@@ -1 +1 @@
-From 18596f7be8f93e159e98704af12b1cc8af289dd6 Mon Sep 17 00:00:00 2001
+From d3a09d4fef164931865774a0b3eb4ecd527156d3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 18596f7be8f93e159e98704af12b1cc8af289dd6 ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix interrupt rollback' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (42 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix memory leak for indirect flow action' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix divide by zero' " Kevin Traynor
` (130 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a232d5a1a01f22efce7c84bf0687e1e1b3157ab3
Thanks.
Kevin
---
From a232d5a1a01f22efce7c84bf0687e1e1b3157ab3 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:58 +0800
Subject: [PATCH] net/hns3: fix interrupt rollback
[ upstream commit 9e911049ac5188be7e080aa8699c0d8e97b32110 ]
When the port is started, if the Tx queue fails to be started,
the map interrupt should be rolled back.
Fixes: fdfde7a4a0f8 ("net/hns3: fix mbuf leakage")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 20ad249b8b..2b56b6e44e 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5123,5 +5123,5 @@ hns3_dev_start(struct rte_eth_dev *dev)
ret = hns3_start_all_txqs(dev);
if (ret)
- goto map_rx_inter_err;
+ goto start_all_txqs_fail;
ret = hns3_start_all_rxqs(dev);
@@ -5156,4 +5156,6 @@ hns3_dev_start(struct rte_eth_dev *dev)
start_all_rxqs_fail:
hns3_stop_all_txqs(dev);
+start_all_txqs_fail:
+ hns3_unmap_rx_interrupt(dev);
map_rx_inter_err:
(void)hns3_do_stop(hns);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.678688409 +0100
+++ 0045-net-hns3-fix-interrupt-rollback.patch 2025-07-18 20:29:10.925907316 +0100
@@ -1 +1 @@
-From 9e911049ac5188be7e080aa8699c0d8e97b32110 Mon Sep 17 00:00:00 2001
+From a232d5a1a01f22efce7c84bf0687e1e1b3157ab3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9e911049ac5188be7e080aa8699c0d8e97b32110 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix divide by zero' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (43 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix interrupt rollback' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix resources release on reset' " Kevin Traynor
` (129 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/180ac497e64dfcfc32b08abf4f2dc2171869be46
Thanks.
Kevin
---
From 180ac497e64dfcfc32b08abf4f2dc2171869be46 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:30:59 +0800
Subject: [PATCH] net/hns3: fix divide by zero
[ upstream commit a88f60f32de6f94a5acbf2101cb5e527fac0b2d2 ]
Driver may encounter divide-by-zero if the total_tqps_num
and rss_size_max in hw structure from firmware are zero.
So add some verification to them.
Fixes: d51867db65c1 ("net/hns3: add initialization")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 2b56b6e44e..2d4e348442 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -2545,4 +2545,8 @@ hns3_query_pf_resource(struct hns3_hw *hw)
hw->total_tqps_num = rte_le_to_cpu_16(req->tqp_num) +
rte_le_to_cpu_16(req->ext_tqp_num);
+ if (hw->total_tqps_num == 0) {
+ PMD_INIT_LOG(ERR, "the total tqp number of the port is 0.");
+ return -EINVAL;
+ }
ret = hns3_get_pf_max_tqp_num(hw);
if (ret)
@@ -2796,4 +2800,5 @@ static int
hns3_get_board_configuration(struct hns3_hw *hw)
{
+#define HNS3_RSS_SIZE_MAX_DEFAULT 64
struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
struct hns3_pf *pf = &hns->pf;
@@ -2814,4 +2819,9 @@ hns3_get_board_configuration(struct hns3_hw *hw)
hw->mac.media_type = cfg.media_type;
hw->rss_size_max = cfg.rss_size_max;
+ if (hw->rss_size_max == 0) {
+ PMD_INIT_LOG(WARNING, "rss_size_max is 0, already adjust to %u.",
+ HNS3_RSS_SIZE_MAX_DEFAULT);
+ hw->rss_size_max = HNS3_RSS_SIZE_MAX_DEFAULT;
+ }
memcpy(hw->mac.mac_addr, cfg.mac_addr, RTE_ETHER_ADDR_LEN);
hw->mac.phy_addr = cfg.phy_addr;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.711560672 +0100
+++ 0046-net-hns3-fix-divide-by-zero.patch 2025-07-18 20:29:10.927907322 +0100
@@ -1 +1 @@
-From a88f60f32de6f94a5acbf2101cb5e527fac0b2d2 Mon Sep 17 00:00:00 2001
+From 180ac497e64dfcfc32b08abf4f2dc2171869be46 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a88f60f32de6f94a5acbf2101cb5e527fac0b2d2 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix resources release on reset' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (44 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix divide by zero' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/nfp: fix flow rule freeing' " Kevin Traynor
` (128 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a8b88d0a0af7247776ee3b9cab0abc72e25b120e
Thanks.
Kevin
---
From a8b88d0a0af7247776ee3b9cab0abc72e25b120e Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Apr 2025 16:31:00 +0800
Subject: [PATCH] net/hns3: fix resources release on reset
[ upstream commit 361eab82df67c09cb84a9e2e66c0d93a84be610d ]
Some resources, like, unmapping Rx interrupt, doesn't perform
when execute dev_stop on reset. This will lead to other issues.
Fixes: 2790c6464725 ("net/hns3: support device reset")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 2d4e348442..9f99525e70 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5220,4 +5220,9 @@ hns3_dev_stop(struct rte_eth_dev *dev)
PMD_INIT_FUNC_TRACE();
+ if (rte_atomic_load_explicit(&hw->reset.resetting, rte_memory_order_relaxed) != 0) {
+ hns3_warn(hw, "device is resetting, stop operation is not allowed.");
+ return -EBUSY;
+ }
+
dev->data->dev_started = 0;
@@ -5226,12 +5231,10 @@ hns3_dev_stop(struct rte_eth_dev *dev)
rte_spinlock_lock(&hw->lock);
- if (rte_atomic_load_explicit(&hw->reset.resetting, rte_memory_order_relaxed) == 0) {
- hns3_tm_dev_stop_proc(hw);
- hns3_config_mac_tnl_int(hw, false);
- hns3_stop_tqps(hw);
- hns3_do_stop(hns);
- hns3_unmap_rx_interrupt(dev);
- hw->adapter_state = HNS3_NIC_CONFIGURED;
- }
+ hns3_tm_dev_stop_proc(hw);
+ hns3_config_mac_tnl_int(hw, false);
+ hns3_stop_tqps(hw);
+ hns3_do_stop(hns);
+ hns3_unmap_rx_interrupt(dev);
+ hw->adapter_state = HNS3_NIC_CONFIGURED;
hns3_rx_scattered_reset(dev);
rte_eal_alarm_cancel(hns3_service_handler, dev);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.744425887 +0100
+++ 0047-net-hns3-fix-resources-release-on-reset.patch 2025-07-18 20:29:10.929907328 +0100
@@ -1 +1 @@
-From 361eab82df67c09cb84a9e2e66c0d93a84be610d Mon Sep 17 00:00:00 2001
+From a8b88d0a0af7247776ee3b9cab0abc72e25b120e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 361eab82df67c09cb84a9e2e66c0d93a84be610d ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: fix flow rule freeing' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (45 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix resources release on reset' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/nfp: fix control message overflow' " Kevin Traynor
` (127 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Wu; +Cc: Chaoyong He, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/c0e26e76eca88e3098aacc429d3e3d3128face51
Thanks.
Kevin
---
From c0e26e76eca88e3098aacc429d3e3d3128face51 Mon Sep 17 00:00:00 2001
From: Long Wu <long.wu@corigine.com>
Date: Mon, 14 Apr 2025 14:02:26 +0800
Subject: [PATCH] net/nfp: fix flow rule freeing
[ upstream commit 80209fe2a03b900e3b5e97ea98f487aec01adecc ]
The flow number limit is stored in `priv->flow_limit` now, so
the free index should be calculated based on it, or there will
be coredump problem.
Fixes: 66df893f2fef ("net/nfp: support different flow steering rules limit")
Signed-off-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he@corigine.com>
---
drivers/net/nfp/nfp_net_flow.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c
index 7f3fff2186..0e5003ebe3 100644
--- a/drivers/net/nfp/nfp_net_flow.c
+++ b/drivers/net/nfp/nfp_net_flow.c
@@ -129,5 +129,5 @@ nfp_net_flow_position_free(struct nfp_net_priv *priv,
uint32_t index;
- index = NFP_NET_FLOW_LIMIT - 1 - nfp_flow->position;
+ index = priv->flow_limit - 1 - nfp_flow->position;
priv->flow_position[index] = false;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.777852095 +0100
+++ 0048-net-nfp-fix-flow-rule-freeing.patch 2025-07-18 20:29:10.930907331 +0100
@@ -1 +1 @@
-From 80209fe2a03b900e3b5e97ea98f487aec01adecc Mon Sep 17 00:00:00 2001
+From c0e26e76eca88e3098aacc429d3e3d3128face51 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 80209fe2a03b900e3b5e97ea98f487aec01adecc ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: fix control message overflow' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (46 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/nfp: fix flow rule freeing' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/nfp: standardize NFDk Tx descriptor endianness' " Kevin Traynor
` (126 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Wu; +Cc: Chaoyong He, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5c4260919b86848745f0676f8e4179d9556221e6
Thanks.
Kevin
---
From 5c4260919b86848745f0676f8e4179d9556221e6 Mon Sep 17 00:00:00 2001
From: Long Wu <long.wu@corigine.com>
Date: Mon, 14 Apr 2025 14:02:27 +0800
Subject: [PATCH] net/nfp: fix control message overflow
[ upstream commit 3bceb13047ea31868fb82beeb19befff636d9f20 ]
Control message will send 32 bits data every time, so the number
of write operations should be adjust correctly, or there will be
over flow problem.
Fixes: ca65f2eef224 ("net/nfp: add control message channel")
Signed-off-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he@corigine.com>
---
drivers/net/nfp/nfp_net_cmsg.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/nfp/nfp_net_cmsg.c b/drivers/net/nfp/nfp_net_cmsg.c
index 8f77c5588a..1ebd66bb0f 100644
--- a/drivers/net/nfp/nfp_net_cmsg.c
+++ b/drivers/net/nfp/nfp_net_cmsg.c
@@ -37,6 +37,7 @@ nfp_net_cmsg_xmit(struct nfp_net_hw *hw,
int ret;
uint32_t i;
+ uint32_t data_num = msg_size / sizeof(uint32_t);
- for (i = 0; i < msg_size; i++)
+ for (i = 0; i < data_num; i++)
nn_cfg_writel(&hw->super, NFP_NET_CFG_MBOX_VAL + 4 * i, *((uint32_t *)cmsg + i));
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.808406285 +0100
+++ 0049-net-nfp-fix-control-message-overflow.patch 2025-07-18 20:29:10.931810130 +0100
@@ -1 +1 @@
-From 3bceb13047ea31868fb82beeb19befff636d9f20 Mon Sep 17 00:00:00 2001
+From 5c4260919b86848745f0676f8e4179d9556221e6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3bceb13047ea31868fb82beeb19befff636d9f20 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: standardize NFDk Tx descriptor endianness' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (47 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/nfp: fix control message overflow' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/qede: fix use after free' " Kevin Traynor
` (125 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Chaoyong He; +Cc: Long Wu, Peng Zhang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/180204813aeba9ea8880118baae4a784ae2d4a6e
Thanks.
Kevin
---
From 180204813aeba9ea8880118baae4a784ae2d4a6e Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 15 Apr 2025 10:54:53 +0800
Subject: [PATCH] net/nfp: standardize NFDk Tx descriptor endianness
[ upstream commit ae1baeca61cf11beea62364bcc0a80ff261abe7c ]
The data endian of NFDk Tx descriptor should be little, and the related
logic also should modify.
Fixes: d7f6d9b21ffa ("net/nfp: adjust coding style for NFDk")
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
drivers/net/nfp/nfdk/nfp_nfdk.h | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk.h b/drivers/net/nfp/nfdk/nfp_nfdk.h
index 29d862f6f0..64c2b31308 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk.h
+++ b/drivers/net/nfp/nfdk/nfp_nfdk.h
@@ -110,17 +110,17 @@ struct nfp_net_nfdk_tx_desc {
/** Address descriptor */
struct {
- uint16_t dma_addr_hi; /**< High bits of host buf address */
- uint16_t dma_len_type; /**< Length to DMA for this desc */
- uint32_t dma_addr_lo; /**< Low 32bit of host buf addr */
+ rte_le16_t dma_addr_hi; /**< High bits of host buf address */
+ rte_le16_t dma_len_type; /**< Length to DMA for this desc */
+ rte_le32_t dma_addr_lo; /**< Low 32bit of host buf addr */
};
/** TSO descriptor */
struct {
- uint16_t mss; /**< MSS to be used for LSO */
+ rte_le16_t mss; /**< MSS to be used for LSO */
uint8_t lso_hdrlen; /**< LSO, TCP payload offset */
uint8_t lso_totsegs; /**< LSO, total segments */
uint8_t l3_offset; /**< L3 header offset */
uint8_t l4_offset; /**< L4 header offset */
- uint16_t lso_meta_res; /**< Rsvd bits in TSO metadata */
+ rte_le16_t lso_meta_res; /**< Rsvd bits in TSO metadata */
};
@@ -131,6 +131,6 @@ struct nfp_net_nfdk_tx_desc {
};
- uint32_t vals[2];
- uint64_t raw;
+ rte_le32_t vals[2];
+ rte_le64_t raw;
};
};
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.837522015 +0100
+++ 0050-net-nfp-standardize-NFDk-Tx-descriptor-endianness.patch 2025-07-18 20:29:10.931907334 +0100
@@ -1 +1 @@
-From ae1baeca61cf11beea62364bcc0a80ff261abe7c Mon Sep 17 00:00:00 2001
+From 180204813aeba9ea8880118baae4a784ae2d4a6e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ae1baeca61cf11beea62364bcc0a80ff261abe7c ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/qede: fix use after free' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (48 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/nfp: standardize NFDk Tx descriptor endianness' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'bus/fslmc: " Kevin Traynor
` (124 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/562dab834f712c051aee23e8afb16ed64c3bd99e
Thanks.
Kevin
---
From 562dab834f712c051aee23e8afb16ed64c3bd99e Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 13 Mar 2025 10:22:03 -0700
Subject: [PATCH] net/qede: fix use after free
[ upstream commit ab8caba639ee6378055b2d8518e2a97b2212c737 ]
The loop cleaning up flowdir resources was using SLIST_FOREACH
but the inner loop would call rte_free. Found by building with
address sanitizer undefined check.
Also remove needless initialization, and null check.
Fixes: f5765f66f9bb ("net/qede: refactor flow director into generic aRFS")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/qede/qede_filter.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/net/qede/qede_filter.c b/drivers/net/qede/qede_filter.c
index 14fb4338e9..cecb58c997 100644
--- a/drivers/net/qede/qede_filter.c
+++ b/drivers/net/qede/qede_filter.c
@@ -13,4 +13,11 @@
#include "qede_ethdev.h"
+#ifndef SLIST_FOREACH_SAFE
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+#endif
+
/* VXLAN tunnel classification mapping */
const struct _qede_udp_tunn_types {
@@ -155,13 +162,10 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
{
struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
- struct qede_arfs_entry *tmp = NULL;
+ struct qede_arfs_entry *tmp, *tmp2;
- SLIST_FOREACH(tmp, &qdev->arfs_info.arfs_list_head, list) {
- if (tmp) {
- rte_memzone_free(tmp->mz);
- SLIST_REMOVE(&qdev->arfs_info.arfs_list_head, tmp,
- qede_arfs_entry, list);
- rte_free(tmp);
- }
+ SLIST_FOREACH_SAFE(tmp, &qdev->arfs_info.arfs_list_head, list, tmp2) {
+ rte_memzone_free(tmp->mz);
+ SLIST_REMOVE(&qdev->arfs_info.arfs_list_head, tmp, qede_arfs_entry, list);
+ rte_free(tmp);
}
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.866837068 +0100
+++ 0051-net-qede-fix-use-after-free.patch 2025-07-18 20:29:10.932907337 +0100
@@ -1 +1 @@
-From ab8caba639ee6378055b2d8518e2a97b2212c737 Mon Sep 17 00:00:00 2001
+From 562dab834f712c051aee23e8afb16ed64c3bd99e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ab8caba639ee6378055b2d8518e2a97b2212c737 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus/fslmc: fix use after free' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (49 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/qede: fix use after free' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/null: fix packet copy' " Kevin Traynor
` (123 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Hemant Agrawal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bbb4e92be549046a558d90eaeea2439a1e5b6ea1
Thanks.
Kevin
---
From bbb4e92be549046a558d90eaeea2439a1e5b6ea1 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Wed, 16 Apr 2025 07:58:14 -0700
Subject: [PATCH] bus/fslmc: fix use after free
[ upstream commit 1cad17c43079268d9e15db62b3a1edd42df8d81e ]
The cleanup loop would dereference the dpio_dev after freeing.
Use TAILQ_FOREACH_SAFE to fix that.
Found by building with sanitizer undefined flag.
Fixes: e55d0494ab98 ("bus/fslmc: support secondary process")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
index 2dfcf7a498..bc03b4dd05 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
@@ -39,4 +39,11 @@
#include <mc/fsl_dpmng.h>
+#ifndef TAILQ_FOREACH_SAFE
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+#endif
+
#define NUM_HOST_CPUS RTE_MAX_LCORE
@@ -404,4 +411,5 @@ dpaa2_create_dpio_device(int vdev_fd,
{
struct dpaa2_dpio_dev *dpio_dev = NULL;
+ struct dpaa2_dpio_dev *dpio_tmp;
struct vfio_region_info reg_info = { .argsz = sizeof(reg_info)};
struct qbman_swp_desc p_des;
@@ -589,5 +597,5 @@ err:
/* For each element in the list, cleanup */
- TAILQ_FOREACH(dpio_dev, &dpio_dev_list, next) {
+ TAILQ_FOREACH_SAFE(dpio_dev, &dpio_dev_list, next, dpio_tmp) {
if (dpio_dev->dpio) {
dpio_disable(dpio_dev->dpio, CMD_PRI_LOW,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.898276654 +0100
+++ 0052-bus-fslmc-fix-use-after-free.patch 2025-07-18 20:29:10.933860847 +0100
@@ -1 +1 @@
-From 1cad17c43079268d9e15db62b3a1edd42df8d81e Mon Sep 17 00:00:00 2001
+From bbb4e92be549046a558d90eaeea2439a1e5b6ea1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1cad17c43079268d9e15db62b3a1edd42df8d81e ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index bad25a0ec2..e32471d8b5 100644
+index 2dfcf7a498..bc03b4dd05 100644
@@ -23 +24 @@
-@@ -40,4 +40,11 @@
+@@ -39,4 +39,11 @@
@@ -35 +36 @@
-@@ -413,4 +420,5 @@ dpaa2_create_dpio_device(int vdev_fd,
+@@ -404,4 +411,5 @@ dpaa2_create_dpio_device(int vdev_fd,
@@ -41 +42 @@
-@@ -598,5 +606,5 @@ err:
+@@ -589,5 +597,5 @@ err:
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/null: fix packet copy' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (50 preceding siblings ...)
2025-07-18 19:29 ` patch 'bus/fslmc: " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'bus/vmbus: use Hyper-V page size' " Kevin Traynor
` (122 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/37a49c7d679abb72f5d9b705b3a6325962818df1
Thanks.
Kevin
---
From 37a49c7d679abb72f5d9b705b3a6325962818df1 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 1 Apr 2025 16:47:26 -0700
Subject: [PATCH] net/null: fix packet copy
[ upstream commit 0ffd3bc09be5f77b26c16e501e4b4465b1bcb8da ]
If doing copy on transmit, can potentially copy paste the data
in the mbuf. Change to only copy data from that segment.
Fixes: c743e50c475f ("null: new poll mode driver")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/null/rte_eth_null.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
index 6764cf2ec1..966748689f 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -36,5 +36,5 @@ struct null_queue {
struct rte_mempool *mb_pool;
- struct rte_mbuf *dummy_packet;
+ void *dummy_packet;
RTE_ATOMIC(uint64_t) rx_pkts;
@@ -164,15 +164,15 @@ static uint16_t
eth_null_copy_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs)
{
- int i;
struct null_queue *h = q;
- unsigned int packet_size;
+ unsigned int i;
if ((q == NULL) || (bufs == NULL))
return 0;
- packet_size = h->internals->packet_size;
for (i = 0; i < nb_bufs; i++) {
- rte_memcpy(h->dummy_packet, rte_pktmbuf_mtod(bufs[i], void *),
- packet_size);
+ struct rte_mbuf *m = bufs[i];
+ size_t len = RTE_MIN(h->internals->packet_size, m->data_len);
+
+ rte_memcpy(h->dummy_packet, rte_pktmbuf_mtod(m, void *), len);
rte_pktmbuf_free(bufs[i]);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.928882707 +0100
+++ 0053-net-null-fix-packet-copy.patch 2025-07-18 20:29:10.933907340 +0100
@@ -1 +1 @@
-From 0ffd3bc09be5f77b26c16e501e4b4465b1bcb8da Mon Sep 17 00:00:00 2001
+From 37a49c7d679abb72f5d9b705b3a6325962818df1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0ffd3bc09be5f77b26c16e501e4b4465b1bcb8da ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus/vmbus: use Hyper-V page size' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (51 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/null: fix packet copy' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/netvsc: " Kevin Traynor
` (121 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Li; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/2b5eef54f9d941101d20b4894bb09e858687d2de
Thanks.
Kevin
---
From 2b5eef54f9d941101d20b4894bb09e858687d2de Mon Sep 17 00:00:00 2001
From: Long Li <longli@microsoft.com>
Date: Fri, 18 Apr 2025 12:32:48 -0700
Subject: [PATCH] bus/vmbus: use Hyper-V page size
[ upstream commit 30f24d33f33bbb29b1fba32b01e8c8d77400a5d5 ]
Hyper-V uses 4k page size, regardless of the system page size used.
Define Hyper-V page size for use in drivers.
The interrupt and monitor pages mapped from Hyper-V via kernel are always
4k in sizes. Use Hyper-V page size to map them.
Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Signed-off-by: Long Li <longli@microsoft.com>
---
drivers/bus/vmbus/bus_vmbus_driver.h | 4 ++++
drivers/bus/vmbus/linux/vmbus_uio.c | 2 +-
drivers/bus/vmbus/vmbus_common_uio.c | 2 +-
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/vmbus/bus_vmbus_driver.h b/drivers/bus/vmbus/bus_vmbus_driver.h
index bc394208de..0a56275437 100644
--- a/drivers/bus/vmbus/bus_vmbus_driver.h
+++ b/drivers/bus/vmbus/bus_vmbus_driver.h
@@ -15,4 +15,8 @@ extern "C" {
#endif
+#define HYPERV_PAGE_SHIFT 12
+#define HYPERV_PAGE_SIZE (1 << HYPERV_PAGE_SHIFT)
+#define HYPERV_PAGE_MASK (HYPERV_PAGE_SIZE - 1)
+
struct vmbus_channel;
struct vmbus_mon_page;
diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c
index 26edef342d..d4522f2e21 100644
--- a/drivers/bus/vmbus/linux/vmbus_uio.c
+++ b/drivers/bus/vmbus/linux/vmbus_uio.c
@@ -269,5 +269,5 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev,
file_size = sb.st_size;
- if (file_size == 0 || (file_size & (rte_mem_page_size() - 1))) {
+ if (file_size == 0 || (file_size & (HYPERV_PAGE_SIZE - 1))) {
VMBUS_LOG(ERR, "incorrect size %s: %zu",
ring_path, file_size);
diff --git a/drivers/bus/vmbus/vmbus_common_uio.c b/drivers/bus/vmbus/vmbus_common_uio.c
index 4d4613513c..13289cd9a4 100644
--- a/drivers/bus/vmbus/vmbus_common_uio.c
+++ b/drivers/bus/vmbus/vmbus_common_uio.c
@@ -202,5 +202,5 @@ vmbus_uio_map_resource(struct rte_vmbus_device *dev)
dev->int_page = (uint32_t *)((char *)uio_res->maps[HV_INT_PAGE_MAP].addr
- + (rte_mem_page_size() >> 1));
+ + (HYPERV_PAGE_SIZE >> 1));
dev->monitor_page = uio_res->maps[HV_MON_PAGE_MAP].addr;
return 0;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.959621474 +0100
+++ 0054-bus-vmbus-use-Hyper-V-page-size.patch 2025-07-18 20:29:10.934907343 +0100
@@ -1 +1 @@
-From 30f24d33f33bbb29b1fba32b01e8c8d77400a5d5 Mon Sep 17 00:00:00 2001
+From 2b5eef54f9d941101d20b4894bb09e858687d2de Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 30f24d33f33bbb29b1fba32b01e8c8d77400a5d5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/netvsc: use Hyper-V page size' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (52 preceding siblings ...)
2025-07-18 19:29 ` patch 'bus/vmbus: use Hyper-V page size' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/netvsc: add stats counters from VF' " Kevin Traynor
` (120 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Li; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/81d20aba32a4500746cc9714c61163d92d9b62ff
Thanks.
Kevin
---
From 81d20aba32a4500746cc9714c61163d92d9b62ff Mon Sep 17 00:00:00 2001
From: Long Li <longli@microsoft.com>
Date: Fri, 18 Apr 2025 12:32:50 -0700
Subject: [PATCH] net/netvsc: use Hyper-V page size
[ upstream commit 2e81551053fcfc7d57b8907a2a8720805298d723 ]
The driver should always use Hyper-V page size for implementing RNDIS and
calculating PFN (Page Frame Number) for communicating with Hyper-V VSP.
It should not use system page size as it may be different to the Hyper-V
page size.
Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Signed-off-by: Long Li <longli@microsoft.com>
---
drivers/net/netvsc/hn_rndis.c | 14 +++++++-------
drivers/net/netvsc/hn_rxtx.c | 16 ++++++++--------
drivers/net/netvsc/hn_var.h | 4 ----
3 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/drivers/net/netvsc/hn_rndis.c b/drivers/net/netvsc/hn_rndis.c
index b2dae6474a..24723ff842 100644
--- a/drivers/net/netvsc/hn_rndis.c
+++ b/drivers/net/netvsc/hn_rndis.c
@@ -68,5 +68,5 @@ hn_rndis_rid(struct hn_data *hv)
static void *hn_rndis_alloc(size_t size)
{
- return rte_zmalloc("RNDIS", size, rte_mem_page_size());
+ return rte_zmalloc("RNDIS", size, HYPERV_PAGE_SIZE);
}
@@ -266,5 +266,5 @@ static int hn_nvs_send_rndis_ctrl(struct vmbus_channel *chan,
}
- if (unlikely(reqlen > rte_mem_page_size())) {
+ if (unlikely(reqlen > HYPERV_PAGE_SIZE)) {
PMD_DRV_LOG(ERR, "RNDIS request %u greater than page size",
reqlen);
@@ -272,9 +272,9 @@ static int hn_nvs_send_rndis_ctrl(struct vmbus_channel *chan,
}
- sg.page = addr / rte_mem_page_size();
- sg.ofs = addr & PAGE_MASK;
+ sg.page = addr / HYPERV_PAGE_SIZE;
+ sg.ofs = addr & HYPERV_PAGE_MASK;
sg.len = reqlen;
- if (sg.ofs + reqlen > rte_mem_page_size()) {
+ if (sg.ofs + reqlen > HYPERV_PAGE_SIZE) {
PMD_DRV_LOG(ERR, "RNDIS request crosses page boundary");
return -EINVAL;
@@ -481,5 +481,5 @@ hn_rndis_query(struct hn_data *hv, uint32_t oid,
comp_len = sizeof(*comp) + odlen;
- comp = rte_zmalloc("QUERY", comp_len, rte_mem_page_size());
+ comp = rte_zmalloc("QUERY", comp_len, HYPERV_PAGE_SIZE);
if (!comp) {
error = -ENOMEM;
@@ -738,5 +738,5 @@ hn_rndis_set(struct hn_data *hv, uint32_t oid, const void *data, uint32_t dlen)
reqlen = sizeof(*req) + dlen;
- req = rte_zmalloc("RNDIS_SET", reqlen, rte_mem_page_size());
+ req = rte_zmalloc("RNDIS_SET", reqlen, HYPERV_PAGE_SIZE);
if (!req)
return -ENOMEM;
diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
index 9d3948e03d..c79d971904 100644
--- a/drivers/net/netvsc/hn_rxtx.c
+++ b/drivers/net/netvsc/hn_rxtx.c
@@ -1432,8 +1432,8 @@ static unsigned int hn_get_slots(const struct rte_mbuf *m)
while (m) {
unsigned int size = rte_pktmbuf_data_len(m);
- unsigned int offs = rte_mbuf_data_iova(m) & PAGE_MASK;
+ unsigned int offs = rte_mbuf_data_iova(m) & HYPERV_PAGE_MASK;
- slots += (offs + size + rte_mem_page_size() - 1) /
- rte_mem_page_size();
+ slots += (offs + size + HYPERV_PAGE_SIZE - 1) /
+ HYPERV_PAGE_SIZE;
m = m->next;
}
@@ -1450,11 +1450,11 @@ static unsigned int hn_fill_sg(struct vmbus_gpa *sg,
while (m) {
rte_iova_t addr = rte_mbuf_data_iova(m);
- unsigned int page = addr / rte_mem_page_size();
- unsigned int offset = addr & PAGE_MASK;
+ unsigned int page = addr / HYPERV_PAGE_SIZE;
+ unsigned int offset = addr & HYPERV_PAGE_MASK;
unsigned int len = rte_pktmbuf_data_len(m);
while (len > 0) {
unsigned int bytes = RTE_MIN(len,
- rte_mem_page_size() - offset);
+ HYPERV_PAGE_SIZE - offset);
sg[segs].page = page;
@@ -1499,6 +1499,6 @@ static int hn_xmit_sg(struct hn_tx_queue *txq,
((char *)txd->rndis_pkt - (char *)txq->tx_rndis);
- sg[0].page = addr / rte_mem_page_size();
- sg[0].ofs = addr & PAGE_MASK;
+ sg[0].page = addr / HYPERV_PAGE_SIZE;
+ sg[0].ofs = addr & HYPERV_PAGE_MASK;
sg[0].len = RNDIS_PACKET_MSG_OFFSET_ABS(hn_rndis_pktlen(txd->rndis_pkt));
segs = 1;
diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h
index 0f638bc5fd..f946b3d8ef 100644
--- a/drivers/net/netvsc/hn_var.h
+++ b/drivers/net/netvsc/hn_var.h
@@ -32,8 +32,4 @@
#define HN_RX_EXTMBUF_ENABLE 0
-#ifndef PAGE_MASK
-#define PAGE_MASK (rte_mem_page_size() - 1)
-#endif
-
struct hn_data;
struct hn_txdesc;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:12.990431325 +0100
+++ 0055-net-netvsc-use-Hyper-V-page-size.patch 2025-07-18 20:29:10.936907349 +0100
@@ -1 +1 @@
-From 2e81551053fcfc7d57b8907a2a8720805298d723 Mon Sep 17 00:00:00 2001
+From 81d20aba32a4500746cc9714c61163d92d9b62ff Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2e81551053fcfc7d57b8907a2a8720805298d723 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/netvsc: add stats counters from VF' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (53 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/netvsc: " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'app/testpmd: relax number of TCs in DCB command' " Kevin Traynor
` (119 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Li; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/3ddba29a651b03f0a6c295ce04b0d5b2ecddb072
Thanks.
Kevin
---
From 3ddba29a651b03f0a6c295ce04b0d5b2ecddb072 Mon Sep 17 00:00:00 2001
From: Long Li <longli@microsoft.com>
Date: Wed, 23 Apr 2025 11:57:32 -0700
Subject: [PATCH] net/netvsc: add stats counters from VF
[ upstream commit 0bb9b5aef16d3ba83066e03a87faf96da292c042 ]
The netvsc driver should add per-queue and rx_nombuf counters from VF.
Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Signed-off-by: Long Li <longli@microsoft.com>
---
drivers/net/netvsc/hn_ethdev.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
index f848157b49..88b32e442e 100644
--- a/drivers/net/netvsc/hn_ethdev.c
+++ b/drivers/net/netvsc/hn_ethdev.c
@@ -810,6 +810,6 @@ static int hn_dev_stats_get(struct rte_eth_dev *dev,
if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
- stats->q_opackets[i] = txq->stats.packets;
- stats->q_obytes[i] = txq->stats.bytes;
+ stats->q_opackets[i] += txq->stats.packets;
+ stats->q_obytes[i] += txq->stats.bytes;
}
}
@@ -827,10 +827,10 @@ static int hn_dev_stats_get(struct rte_eth_dev *dev,
if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
- stats->q_ipackets[i] = rxq->stats.packets;
- stats->q_ibytes[i] = rxq->stats.bytes;
+ stats->q_ipackets[i] += rxq->stats.packets;
+ stats->q_ibytes[i] += rxq->stats.bytes;
}
}
- stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
+ stats->rx_nombuf += dev->data->rx_mbuf_alloc_failed;
return 0;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.022523393 +0100
+++ 0056-net-netvsc-add-stats-counters-from-VF.patch 2025-07-18 20:29:10.937903855 +0100
@@ -1 +1 @@
-From 0bb9b5aef16d3ba83066e03a87faf96da292c042 Mon Sep 17 00:00:00 2001
+From 3ddba29a651b03f0a6c295ce04b0d5b2ecddb072 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0bb9b5aef16d3ba83066e03a87faf96da292c042 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index e5b052d569..ca626ccf60 100644
+index f848157b49..88b32e442e 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'app/testpmd: relax number of TCs in DCB command' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (54 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/netvsc: add stats counters from VF' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'app/testpmd: fix flow random item token' " Kevin Traynor
` (118 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/43df1b76cfb816a73f778044aec1545f990db42f
Thanks.
Kevin
---
From 43df1b76cfb816a73f778044aec1545f990db42f Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 24 Apr 2025 14:17:46 +0800
Subject: [PATCH] app/testpmd: relax number of TCs in DCB command
[ upstream commit 5f2695ee948ddaf36050f2d6b58a3437248c1663 ]
Currently, the "port config 0 dcb ..." command only supports 4 or 8
TCs. Other number of TCs may be used in actual applications.
This commit removes this restriction.
Fixes: 900550de04a7 ("app/testpmd: add dcb support")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/cmdline.c | 4 ++--
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0f9b8e36f6..e92dd9eade 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -3472,7 +3472,7 @@ cmd_config_dcb_parsed(void *parsed_result,
}
- if ((res->num_tcs != RTE_ETH_4_TCS) && (res->num_tcs != RTE_ETH_8_TCS)) {
+ if (res->num_tcs <= 1 || res->num_tcs > RTE_ETH_8_TCS) {
fprintf(stderr,
- "The invalid number of traffic class, only 4 or 8 allowed.\n");
+ "The invalid number of traffic class, only 2~8 allowed.\n");
return;
}
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index eeef49500f..38bc00705f 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -2168,5 +2168,5 @@ Set the DCB mode for an individual port::
testpmd> port config (port_id) dcb vt (on|off) (traffic_class) pfc (on|off)
-The traffic class should be 4 or 8.
+The traffic class could be 2~8.
port config - Burst
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.052450071 +0100
+++ 0057-app-testpmd-relax-number-of-TCs-in-DCB-command.patch 2025-07-18 20:29:10.947907383 +0100
@@ -1 +1 @@
-From 5f2695ee948ddaf36050f2d6b58a3437248c1663 Mon Sep 17 00:00:00 2001
+From 43df1b76cfb816a73f778044aec1545f990db42f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5f2695ee948ddaf36050f2d6b58a3437248c1663 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index b4089d281b..44fae89821 100644
+index 0f9b8e36f6..e92dd9eade 100644
@@ -24 +25 @@
-@@ -3473,7 +3473,7 @@ cmd_config_dcb_parsed(void *parsed_result,
+@@ -3472,7 +3472,7 @@ cmd_config_dcb_parsed(void *parsed_result,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'app/testpmd: fix flow random item token' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (55 preceding siblings ...)
2025-07-18 19:29 ` patch 'app/testpmd: relax number of TCs in DCB command' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mana: check vendor ID when probing RDMA device' " Kevin Traynor
` (117 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Gregory Etelson; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9449422de54736cb72098da745b37f05e8e33e1e
Thanks.
Kevin
---
From 9449422de54736cb72098da745b37f05e8e33e1e Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Mon, 19 May 2025 09:30:45 +0300
Subject: [PATCH] app/testpmd: fix flow random item token
[ upstream commit 9a18070e3fe43cd45fc5f000452853a0a45d25c2 ]
ITEM_RANDOM_VALUE token initializes 32 bits mask argument value from
a constant source buffer.
Testpmd initiated the mast value from the 3 bytes buffer -
[0xff, 0xff, 0x00].
When testpmd copied that value to 32 bits mask it accessed a memory
byte outside the source buffer.
The patch fixes the source buffer size.
Fixes: 738ef8f7c706 ("ethdev: add flow item for random matching")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 835fc3690d..eb26333759 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -5583,5 +5583,5 @@ static const struct token token_list[] = {
item_param),
.args = ARGS(ARGS_ENTRY_MASK(struct rte_flow_item_random,
- value, "\xff\xff")),
+ value, "\x00\x00\xff\xff")),
},
[ITEM_GRE_KEY] = {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.093392747 +0100
+++ 0058-app-testpmd-fix-flow-random-item-token.patch 2025-07-18 20:29:10.954907405 +0100
@@ -1 +1 @@
-From 9a18070e3fe43cd45fc5f000452853a0a45d25c2 Mon Sep 17 00:00:00 2001
+From 9449422de54736cb72098da745b37f05e8e33e1e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9a18070e3fe43cd45fc5f000452853a0a45d25c2 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 998527590f..fc807ad8cf 100644
+index 835fc3690d..eb26333759 100644
@@ -28 +29 @@
-@@ -5592,5 +5592,5 @@ static const struct token token_list[] = {
+@@ -5583,5 +5583,5 @@ static const struct token token_list[] = {
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mana: check vendor ID when probing RDMA device' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (56 preceding siblings ...)
2025-07-18 19:29 ` patch 'app/testpmd: fix flow random item token' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ntnic: avoid divide by zero' " Kevin Traynor
` (116 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Long Li; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/90b684d7a0fbe29a8aa5b91c39bb8729ed5d5c24
Thanks.
Kevin
---
From 90b684d7a0fbe29a8aa5b91c39bb8729ed5d5c24 Mon Sep 17 00:00:00 2001
From: Long Li <longli@microsoft.com>
Date: Mon, 12 May 2025 14:52:02 -0700
Subject: [PATCH] net/mana: check vendor ID when probing RDMA device
[ upstream commit be4ed96378811e572860cac558bff54b5c361992 ]
The RDMA kernel driver may expose two MANA RDMA devices, for RC and RAW
QP types. The purpose is to support fast service mode at SOC. Depending
on kernel version, the probe may fail if DPDK picks up the wrong device.
Add check for vendor_part_id and RAW QP capability when probing the MANA
device. This check is compatible with all kernel versions.
Fixes: 517ed6e2d590 ("net/mana: add basic driver with build environment")
Signed-off-by: Long Li <longli@microsoft.com>
---
drivers/net/mana/mana.c | 14 ++++++++++++++
drivers/net/mana/mana.h | 4 ++++
2 files changed, 18 insertions(+)
diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c
index 2934da29f7..c42a987a30 100644
--- a/drivers/net/mana/mana.c
+++ b/drivers/net/mana/mana.c
@@ -1491,4 +1491,18 @@ mana_pci_probe_mac(struct rte_pci_device *pci_dev,
}
+ if (dev_attr.orig_attr.vendor_part_id) {
+ if (dev_attr.orig_attr.vendor_part_id !=
+ GDMA_DEVICE_MANA) {
+ DRV_LOG(INFO, "Skip device vendor part id %x",
+ dev_attr.orig_attr.vendor_part_id);
+ continue;
+ }
+ if (!dev_attr.raw_packet_caps) {
+ DRV_LOG(INFO,
+ "Skip device without RAW support");
+ continue;
+ }
+ }
+
for (port = 1; port <= dev_attr.orig_attr.phys_port_cnt;
port++) {
diff --git a/drivers/net/mana/mana.h b/drivers/net/mana/mana.h
index 855d98911b..6309cae76b 100644
--- a/drivers/net/mana/mana.h
+++ b/drivers/net/mana/mana.h
@@ -13,4 +13,8 @@ struct mana_shared_data {
};
+/* vendor_part_id returned from ibv_query_device */
+#define GDMA_DEVICE_MANA 2
+#define GDMA_DEVICE_MANA_IB 3
+
#define MANA_MAX_MTU 9000
#define MIN_RX_BUF_SIZE 1024
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.131148102 +0100
+++ 0059-net-mana-check-vendor-ID-when-probing-RDMA-device.patch 2025-07-18 20:29:10.955907408 +0100
@@ -1 +1 @@
-From be4ed96378811e572860cac558bff54b5c361992 Mon Sep 17 00:00:00 2001
+From 90b684d7a0fbe29a8aa5b91c39bb8729ed5d5c24 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit be4ed96378811e572860cac558bff54b5c361992 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ntnic: avoid divide by zero' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (57 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mana: check vendor ID when probing RDMA device' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/ntnic: fix ring queue operation' " Kevin Traynor
` (115 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Danylo Vodopianov; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/cc5b54d0d2c07c676771ed09e74322f6512e6cc1
Thanks.
Kevin
---
From cc5b54d0d2c07c676771ed09e74322f6512e6cc1 Mon Sep 17 00:00:00 2001
From: Danylo Vodopianov <dvo-plv@napatech.com>
Date: Mon, 5 May 2025 09:13:01 +0200
Subject: [PATCH] net/ntnic: avoid divide by zero
[ upstream commit 8bbae3e37cf309e8ffc5292bf9d41c44a217f7f1 ]
Fix CID issue 457736 divide by 0. It was avoided by
adding adittional checking on the return value
for function.
Fixes: effa04693274 ("net/ntnic: add statistics")
Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
drivers/net/ntnic/nthw/stat/nthw_stat.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ntnic/nthw/stat/nthw_stat.c b/drivers/net/ntnic/nthw/stat/nthw_stat.c
index b0db7b1984..d3e9225e58 100644
--- a/drivers/net/ntnic/nthw/stat/nthw_stat.c
+++ b/drivers/net/ntnic/nthw/stat/nthw_stat.c
@@ -319,4 +319,8 @@ int nthw_stat_init(nthw_stat_t *p, nthw_fpga_t *p_fpga, int n_instance)
if (p->mp_fld_load_bin) {
uint32_t rpp = nthw_fpga_get_product_param(p_fpga, NT_RPP_PER_PS, 0);
+ if (rpp == 0) {
+ NT_LOG(ERR, NTHW, "RPP has wrong value"); /* Avoid divide by 0 */
+ return -1;
+ }
uint32_t bin =
(uint32_t)(((PORT_LOAD_WINDOWS_SIZE * 1000000000000ULL) / (32ULL * rpp)) -
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.162673752 +0100
+++ 0060-net-ntnic-avoid-divide-by-zero.patch 2025-07-18 20:29:10.956907411 +0100
@@ -1 +1 @@
-From 8bbae3e37cf309e8ffc5292bf9d41c44a217f7f1 Mon Sep 17 00:00:00 2001
+From cc5b54d0d2c07c676771ed09e74322f6512e6cc1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8bbae3e37cf309e8ffc5292bf9d41c44a217f7f1 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 2ddef052a5..9bb97bf311 100644
+index b0db7b1984..d3e9225e58 100644
@@ -22 +23 @@
-@@ -320,4 +320,8 @@ int nthw_stat_init(nthw_stat_t *p, nthw_fpga_t *p_fpga, int n_instance)
+@@ -319,4 +319,8 @@ int nthw_stat_init(nthw_stat_t *p, nthw_fpga_t *p_fpga, int n_instance)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ntnic: fix ring queue operation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (58 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ntnic: avoid divide by zero' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/hns3: fix CRC data segment' " Kevin Traynor
` (114 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Danylo Vodopianov; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/cd05b2212e2d228d5ed206edf2bd35d6c2c2bdc8
Thanks.
Kevin
---
From cd05b2212e2d228d5ed206edf2bd35d6c2c2bdc8 Mon Sep 17 00:00:00 2001
From: Danylo Vodopianov <dvo-plv@napatech.com>
Date: Mon, 5 May 2025 09:13:06 +0200
Subject: [PATCH] net/ntnic: fix ring queue operation
[ upstream commit 13b59c07d6827e3cd7f746997b97fcffb5992435 ]
User should call rte_ring_dequeue_zc_elem_finish to complete the
dequeue operation. However this complete step if record absent.
This change rework queue read operation.
Fixes: 96c8249be53e ("net/ntnic: learn flow queue handling")
Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
.../profile_inline/flow_api_profile_inline.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c b/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
index ff8eb502f4..5325657551 100644
--- a/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
+++ b/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
@@ -404,16 +404,12 @@ static uint32_t flm_lrn_update(struct flow_eth_dev *dev, uint32_t *inf_word_cnt,
{
read_record r = flm_lrn_queue_get_read_buffer(flm_lrn_queue_arr);
+ uint32_t handled_records = 0;
if (r.num) {
- uint32_t handled_records = 0;
-
- if (hw_mod_flm_lrn_data_set_flush(&dev->ndev->be, HW_FLM_FLOW_LRN_DATA, r.p, r.num,
- &handled_records, inf_word_cnt, sta_word_cnt)) {
+ if (hw_mod_flm_lrn_data_set_flush(&dev->ndev->be, HW_FLM_FLOW_LRN_DATA, r.p,
+ r.num, &handled_records, inf_word_cnt, sta_word_cnt))
NT_LOG(ERR, FILTER, "Flow programming failed");
-
- } else if (handled_records > 0) {
- flm_lrn_queue_release_read_buffer(flm_lrn_queue_arr, handled_records);
- }
}
+ flm_lrn_queue_release_read_buffer(flm_lrn_queue_arr, handled_records);
return r.num;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.192578837 +0100
+++ 0061-net-ntnic-fix-ring-queue-operation.patch 2025-07-18 20:29:10.959907420 +0100
@@ -1 +1 @@
-From 13b59c07d6827e3cd7f746997b97fcffb5992435 Mon Sep 17 00:00:00 2001
+From cd05b2212e2d228d5ed206edf2bd35d6c2c2bdc8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 13b59c07d6827e3cd7f746997b97fcffb5992435 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index cb6a66a061..f78c6fbf49 100644
+index ff8eb502f4..5325657551 100644
@@ -23 +24 @@
-@@ -399,16 +399,12 @@ static uint32_t flm_lrn_update(struct flow_eth_dev *dev, uint32_t *inf_word_cnt,
+@@ -404,16 +404,12 @@ static uint32_t flm_lrn_update(struct flow_eth_dev *dev, uint32_t *inf_word_cnt,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix CRC data segment' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (59 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/ntnic: fix ring queue operation' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/tap: fix qdisc add failure handling' " Kevin Traynor
` (113 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/3639d36cb4f2118b3f422d9124a4e525e4a028ea
Thanks.
Kevin
---
From 3639d36cb4f2118b3f422d9124a4e525e4a028ea Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Fri, 16 May 2025 15:15:18 +0800
Subject: [PATCH] net/hns3: fix CRC data segment
[ upstream commit 7a99b6ca9d079e9364ba61d3fe802a4761739c8f ]
When the packet is received into a multisegment mbuf and
the last segment contains only CRC data, the driver should
not release this segment. Otherwise, the application cannot
look the CRC data. This patch fixes it.
Fixes: 8973d7c4ca12 ("net/hns3: support keeping CRC")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_rxtx.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 09e39cb673..00a105129d 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -2387,16 +2387,14 @@ hns3_rxd_to_vlan_tci(struct hns3_rx_queue *rxq, struct rte_mbuf *mb,
static inline void
-recalculate_data_len(struct rte_mbuf *first_seg, struct rte_mbuf *last_seg,
- struct rte_mbuf *rxm, struct hns3_rx_queue *rxq,
- uint16_t data_len)
+recalculate_data_len(struct rte_mbuf *last_seg, struct rte_mbuf *rxm,
+ struct hns3_rx_queue *rxq)
{
+ uint16_t data_len = rxm->data_len;
uint8_t crc_len = rxq->crc_len;
if (data_len <= crc_len) {
- rte_pktmbuf_free_seg(rxm);
- first_seg->nb_segs--;
+ rxm->data_len = 0;
last_seg->data_len = (uint16_t)(last_seg->data_len -
(crc_len - data_len));
- last_seg->next = NULL;
} else
rxm->data_len = (uint16_t)(data_len - crc_len);
@@ -2729,6 +2727,5 @@ hns3_recv_scattered_pkts(void *rx_queue,
if (unlikely(rxq->crc_len > 0)) {
first_seg->pkt_len -= rxq->crc_len;
- recalculate_data_len(first_seg, last_seg, rxm, rxq,
- rxm->data_len);
+ recalculate_data_len(last_seg, rxm, rxq);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.226353663 +0100
+++ 0062-net-hns3-fix-CRC-data-segment.patch 2025-07-18 20:29:10.961907426 +0100
@@ -1 +1 @@
-From 7a99b6ca9d079e9364ba61d3fe802a4761739c8f Mon Sep 17 00:00:00 2001
+From 3639d36cb4f2118b3f422d9124a4e525e4a028ea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7a99b6ca9d079e9364ba61d3fe802a4761739c8f ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index bb7ffee12c..49b6f16ccd 100644
+index 09e39cb673..00a105129d 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/tap: fix qdisc add failure handling' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (60 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/hns3: fix CRC data segment' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'net/mlx5: fix VLAN stripping on hairpin queue' " Kevin Traynor
` (112 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Yan Lu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1c12ebb23098986c34fa9ac1983124d840f294d6
Thanks.
Kevin
---
From 1c12ebb23098986c34fa9ac1983124d840f294d6 Mon Sep 17 00:00:00 2001
From: Yan Lu <luyan@cmss.chinamobile.com>
Date: Wed, 21 May 2025 09:33:13 +0800
Subject: [PATCH] net/tap: fix qdisc add failure handling
[ upstream commit 02a68649e6fb55d8975c726e3073ee9d12c20bac ]
The errno variable was assigned a positive value in the previous handling,
but here it is compared against -EEXIST,
When the tap already exists, this would falsely report an error.
Fixes: 6fc6de7e0eaf ("net/tap: update netlink error code management")
Signed-off-by: Yan Lu <luyan@cmss.chinamobile.com>
---
.mailmap | 1 +
drivers/net/tap/tap_tcmsgs.c | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 257dd551a6..9211e53fc7 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1728,4 +1728,5 @@ Yang Ming <ming.1.yang@nokia-sbell.com>
Yang Zhang <zy107165@alibaba-inc.com>
Yanjie Xu <yanjie.xu@intel.com>
+Yan Lu <luyan@cmss.chinamobile.com>
Yan Xia <yanx.xia@intel.com>
Yao-Po Wang <blue119@gmail.com>
diff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c
index 1755b57519..caca9445c8 100644
--- a/drivers/net/tap/tap_tcmsgs.c
+++ b/drivers/net/tap/tap_tcmsgs.c
@@ -262,5 +262,5 @@ qdisc_create_multiq(int nlsk_fd, unsigned int ifindex)
err = qdisc_add_multiq(nlsk_fd, ifindex);
- if (err < 0 && errno != -EEXIST) {
+ if (err < 0 && errno != EEXIST) {
TAP_LOG(ERR, "Could not add multiq qdisc (%d): %s",
errno, strerror(errno));
@@ -288,5 +288,5 @@ qdisc_create_ingress(int nlsk_fd, unsigned int ifindex)
err = qdisc_add_ingress(nlsk_fd, ifindex);
- if (err < 0 && errno != -EEXIST) {
+ if (err < 0 && errno != EEXIST) {
TAP_LOG(ERR, "Could not add ingress qdisc (%d): %s",
errno, strerror(errno));
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.258493708 +0100
+++ 0063-net-tap-fix-qdisc-add-failure-handling.patch 2025-07-18 20:29:10.963907432 +0100
@@ -1 +1 @@
-From 02a68649e6fb55d8975c726e3073ee9d12c20bac Mon Sep 17 00:00:00 2001
+From 1c12ebb23098986c34fa9ac1983124d840f294d6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 02a68649e6fb55d8975c726e3073ee9d12c20bac ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 59ee5f7d30..df3674cc7f 100644
+index 257dd551a6..9211e53fc7 100644
@@ -23,2 +24,2 @@
-@@ -1747,4 +1747,5 @@ Yang Zhang <zy107165@alibaba-inc.com>
- Yaniv Rosner <yrosner@nvidia.com>
+@@ -1728,4 +1728,5 @@ Yang Ming <ming.1.yang@nokia-sbell.com>
+ Yang Zhang <zy107165@alibaba-inc.com>
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix VLAN stripping on hairpin queue' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (61 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/tap: fix qdisc add failure handling' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:29 ` patch 'mem: fix lockup on address space shortage' " Kevin Traynor
` (111 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/82d26cdd09f8f0c24f6751f4395b006a798355ba
Thanks.
Kevin
---
From 82d26cdd09f8f0c24f6751f4395b006a798355ba Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Fri, 25 Apr 2025 21:49:13 +0200
Subject: [PATCH] net/mlx5: fix VLAN stripping on hairpin queue
[ upstream commit 468334f07a9298fb4ff05e6cdcbbde64b0da4aa2 ]
Rx hairpin queues support VLAN stripping,
but if port was started and application attempted
to configure stripping on hairpin queue,
segfault was triggered because of NULL dereference.
Underlying function, which was updating the RQ was passing
wrong object handle for hairpin queues.
This patch fixes that.
Fixes: e79c9be91515 ("net/mlx5: support Rx hairpin queues")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_devx.c | 2 ++
drivers/net/mlx5/mlx5_vlan.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index 8ebe784000..b9d29ca7d5 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -89,4 +89,6 @@ mlx5_rxq_obj_modify_rq_vlan_strip(struct mlx5_rxq_priv *rxq, int on)
rq_attr.vsd = (on ? 0 : 1);
rq_attr.modify_bitmask = MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_VSD;
+ if (rxq->ctrl->is_hairpin)
+ return mlx5_devx_cmd_modify_rq(rxq->ctrl->obj->rq, &rq_attr);
return mlx5_devx_cmd_modify_rq(rxq->devx_rq.rq, &rq_attr);
}
diff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c
index 43a314a679..7c7ac78dfe 100644
--- a/drivers/net/mlx5/mlx5_vlan.c
+++ b/drivers/net/mlx5/mlx5_vlan.c
@@ -108,5 +108,5 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
return;
}
- DRV_LOG(DEBUG, "port %u set VLAN stripping offloads %d for port %uqueue %d",
+ DRV_LOG(DEBUG, "port %u set VLAN stripping offloads %d for port %u queue %d",
dev->data->port_id, on, rxq_data->port_id, queue);
if (rxq->ctrl->obj == NULL) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.289635486 +0100
+++ 0064-net-mlx5-fix-VLAN-stripping-on-hairpin-queue.patch 2025-07-18 20:29:10.964907435 +0100
@@ -1 +1 @@
-From 468334f07a9298fb4ff05e6cdcbbde64b0da4aa2 Mon Sep 17 00:00:00 2001
+From 82d26cdd09f8f0c24f6751f4395b006a798355ba Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 468334f07a9298fb4ff05e6cdcbbde64b0da4aa2 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 9711746edb..6c79a634f9 100644
+index 8ebe784000..b9d29ca7d5 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'mem: fix lockup on address space shortage' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (62 preceding siblings ...)
2025-07-18 19:29 ` patch 'net/mlx5: fix VLAN stripping on hairpin queue' " Kevin Traynor
@ 2025-07-18 19:29 ` Kevin Traynor
2025-07-18 19:30 ` patch 'test/malloc: improve resiliency' " Kevin Traynor
` (110 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:29 UTC (permalink / raw)
To: Dengdui Huang; +Cc: Dmitry Kozlyuk, Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/de2ffd73f2895a71067a27f7a9f93d60a3afd4ea
Thanks.
Kevin
---
From de2ffd73f2895a71067a27f7a9f93d60a3afd4ea Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Thu, 3 Apr 2025 10:57:36 +0800
Subject: [PATCH] mem: fix lockup on address space shortage
[ upstream commit 6643d1cad3b8a90a0e5ec4a4afa0d9f61dc5b34e ]
When the process address space is insufficient, mmap will fail,
which will cause an infinite loop.
This patch stops attempting mmap if it fails and
the requested size cannot be reduced.
Fixes: b7cc54187ea4 ("mem: move virtual area function in common directory")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/common/eal_common_memory.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/eal/common/eal_common_memory.c b/lib/eal/common/eal_common_memory.c
index a185e0b580..0c997201bd 100644
--- a/lib/eal/common/eal_common_memory.c
+++ b/lib/eal/common/eal_common_memory.c
@@ -102,6 +102,10 @@ eal_get_virtual_area(void *requested_addr, size_t *size,
mapped_addr = eal_mem_reserve(
requested_addr, (size_t)map_sz, reserve_flags);
- if ((mapped_addr == NULL) && allow_shrink)
- *size -= page_sz;
+ if (mapped_addr == NULL) {
+ if (allow_shrink)
+ *size -= page_sz;
+ else
+ break;
+ }
if ((mapped_addr != NULL) && addr_is_hint &&
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.320019595 +0100
+++ 0065-mem-fix-lockup-on-address-space-shortage.patch 2025-07-18 20:29:10.965907438 +0100
@@ -1 +1 @@
-From 6643d1cad3b8a90a0e5ec4a4afa0d9f61dc5b34e Mon Sep 17 00:00:00 2001
+From de2ffd73f2895a71067a27f7a9f93d60a3afd4ea Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6643d1cad3b8a90a0e5ec4a4afa0d9f61dc5b34e ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index a2f64408f4..bfa36b8268 100644
+index a185e0b580..0c997201bd 100644
@@ -25 +26 @@
-@@ -103,6 +103,10 @@ eal_get_virtual_area(void *requested_addr, size_t *size,
+@@ -102,6 +102,10 @@ eal_get_virtual_area(void *requested_addr, size_t *size,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/malloc: improve resiliency' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (63 preceding siblings ...)
2025-07-18 19:29 ` patch 'mem: fix lockup on address space shortage' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'trace: fix overflow in per-lcore trace buffer' " Kevin Traynor
` (109 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/935bcec6d4bc380929e209d06baac9d7e3df61e4
Thanks.
Kevin
---
From 935bcec6d4bc380929e209d06baac9d7e3df61e4 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Wed, 26 Mar 2025 17:13:24 +0000
Subject: [PATCH] test/malloc: improve resiliency
[ upstream commit 7777215715d475b5e884179de39ff4bc6b8cbf72 ]
The test case "test_multi_alloc_statistics" was brittle in that it did
some allocations and frees and then checked statistics without
considering the initial state of the malloc heaps. This meant that,
depending on what allocations/frees were done beforehand, the test can
sometimes fail.
We can improve resiliency by running the test using a new malloc heap,
which means it is unaffected by any previous allocations.
Bugzilla ID: 1579
Fixes: a40a1f8231b4 ("app: various tests update")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_malloc.c | 77 +++++++++++++++++++++++++++++++++++-------
1 file changed, 64 insertions(+), 13 deletions(-)
diff --git a/app/test/test_malloc.c b/app/test/test_malloc.c
index 02a7d8ef20..d6f8da3b24 100644
--- a/app/test/test_malloc.c
+++ b/app/test/test_malloc.c
@@ -26,4 +26,5 @@
#include <rte_cycles.h>
#include <rte_random.h>
+#include <rte_eal_paging.h>
#include <rte_string_fns.h>
@@ -268,4 +269,5 @@ static int
test_multi_alloc_statistics(void)
{
+ int ret = -1; /* default return is error, cleared at end on success */
int socket = 0;
struct rte_malloc_socket_stats pre_stats, post_stats ,first_stats, second_stats;
@@ -273,4 +275,40 @@ test_multi_alloc_statistics(void)
int align = 1024;
int overhead = 0;
+ const size_t pgsz = rte_mem_page_size();
+ const size_t heap_size = (1 << 22);
+
+ if (pgsz > heap_size) {
+ printf("Page size (%zu) is bigger than heap size, skipping alloc stats test\n",
+ pgsz);
+ return TEST_SKIPPED;
+ }
+ if (heap_size % pgsz != 0) {
+ printf("Heap size (%zu) is not a multiple of page size (%zu), skipping alloc stats test\n",
+ heap_size, pgsz);
+ return TEST_SKIPPED;
+ }
+
+ if (rte_malloc_heap_create(__func__) != 0) {
+ printf("Failed to create test malloc heap\n");
+ goto end;
+ }
+
+ /* Allocate some memory using malloc and add it to our test heap. */
+ void *unaligned_memory = malloc(heap_size + pgsz);
+ if (unaligned_memory == NULL) {
+ printf("Failed to allocate memory\n");
+ goto cleanup_empty_heap;
+ }
+ void *memory = RTE_PTR_ALIGN(unaligned_memory, pgsz);
+ if (rte_malloc_heap_memory_add(__func__, memory, heap_size, NULL,
+ heap_size / pgsz, pgsz) != 0) {
+ printf("Failed to add memory to heap\n");
+ goto cleanup_allocated_memory;
+ }
+ socket = rte_malloc_heap_get_socket(__func__);
+ if (socket < 0) {
+ printf("Failed to get socket for test malloc heap.\n");
+ goto cleanup_all;
+ }
/* Dynamically calculate the overhead by allocating one cacheline and
@@ -281,5 +319,5 @@ test_multi_alloc_statistics(void)
void *dummy = rte_malloc_socket(NULL, RTE_CACHE_LINE_SIZE, 0, socket);
if (dummy == NULL)
- return -1;
+ goto cleanup_all;
rte_malloc_get_socket_stats(socket, &post_stats);
@@ -296,5 +334,6 @@ test_multi_alloc_statistics(void)
void *p1 = rte_malloc_socket("stats", size , align, socket);
if (!p1)
- return -1;
+ goto cleanup_all;
+
rte_free(p1);
rte_malloc_dump_stats(stdout, "stats");
@@ -309,5 +348,5 @@ test_multi_alloc_statistics(void)
(post_stats.free_count != pre_stats.free_count)) {
printf("Malloc statistics are incorrect - freed alloc\n");
- return -1;
+ goto cleanup_all;
}
/* Check two consecutive allocations */
@@ -317,10 +356,10 @@ test_multi_alloc_statistics(void)
void *p2 = rte_malloc_socket("add", size ,align, socket);
if (!p2)
- return -1;
+ goto cleanup_all;
rte_malloc_get_socket_stats(socket,&first_stats);
void *p3 = rte_malloc_socket("add2", size,align, socket);
if (!p3)
- return -1;
+ goto cleanup_all;
rte_malloc_get_socket_stats(socket,&second_stats);
@@ -334,5 +373,5 @@ test_multi_alloc_statistics(void)
if(second_stats.heap_totalsz_bytes != first_stats.heap_totalsz_bytes) {
printf("Incorrect heap statistics: Total size \n");
- return -1;
+ goto cleanup_all;
}
/* Check allocated size is equal to two additions plus overhead */
@@ -340,15 +379,15 @@ test_multi_alloc_statistics(void)
size + overhead + first_stats.heap_allocsz_bytes) {
printf("Incorrect heap statistics: Allocated size \n");
- return -1;
+ goto cleanup_all;
}
/* Check that allocation count increments correctly i.e. +1 */
if (second_stats.alloc_count != first_stats.alloc_count + 1) {
printf("Incorrect heap statistics: Allocated count \n");
- return -1;
+ goto cleanup_all;
}
if (second_stats.free_count != first_stats.free_count){
printf("Incorrect heap statistics: Free count \n");
- return -1;
+ goto cleanup_all;
}
@@ -356,10 +395,10 @@ test_multi_alloc_statistics(void)
if (post_stats.greatest_free_size != pre_stats.greatest_free_size) {
printf("Incorrect heap statistics: Greatest free size \n");
- return -1;
+ goto cleanup_all;
}
/* Free size must equal the original free size minus the new allocation*/
if (first_stats.heap_freesz_bytes <= second_stats.heap_freesz_bytes) {
printf("Incorrect heap statistics: Free size \n");
- return -1;
+ goto cleanup_all;
}
@@ -370,7 +409,19 @@ test_multi_alloc_statistics(void)
(post_stats.free_count != pre_stats.free_count)) {
printf("Malloc statistics are incorrect - freed alloc\n");
- return -1;
+ goto cleanup_all;
}
- return 0;
+
+ /* set return value as success before cleanup */
+ ret = 0;
+
+ /* cleanup */
+cleanup_all:
+ rte_malloc_heap_memory_remove(__func__, memory, heap_size);
+cleanup_allocated_memory:
+ free(unaligned_memory);
+cleanup_empty_heap:
+ rte_malloc_heap_destroy(__func__);
+end:
+ return ret;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.350744772 +0100
+++ 0066-test-malloc-improve-resiliency.patch 2025-07-18 20:29:10.966907441 +0100
@@ -1 +1 @@
-From 7777215715d475b5e884179de39ff4bc6b8cbf72 Mon Sep 17 00:00:00 2001
+From 935bcec6d4bc380929e209d06baac9d7e3df61e4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7777215715d475b5e884179de39ff4bc6b8cbf72 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'trace: fix overflow in per-lcore trace buffer' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (64 preceding siblings ...)
2025-07-18 19:30 ` patch 'test/malloc: improve resiliency' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/octeon_ep: fix buffer refill' " Kevin Traynor
` (108 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Oleksandr Nahnybida; +Cc: Sunil Kumar Kori, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/91e27c004f719228fcd6bce52fc554819f4da3e6
Thanks.
Kevin
---
From 91e27c004f719228fcd6bce52fc554819f4da3e6 Mon Sep 17 00:00:00 2001
From: Oleksandr Nahnybida <oleksandrn@interfacemasters.com>
Date: Thu, 24 Apr 2025 20:08:18 +0300
Subject: [PATCH] trace: fix overflow in per-lcore trace buffer
[ upstream commit 3c440cdfe87a2925af1be023e66bdf0bffc423a4 ]
Offset should be aligned first before checking if there is free space for
another write.
Bugzilla ID: 1665
Fixes: 032a7e5499a0 ("trace: implement provider payload")
Signed-off-by: Oleksandr Nahnybida <oleksandrn@interfacemasters.com>
Acked-by: Sunil Kumar Kori <skori@marvell.com>
---
lib/eal/include/rte_trace_point.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h
index 87b5f43c3c..71aea97bf2 100644
--- a/lib/eal/include/rte_trace_point.h
+++ b/lib/eal/include/rte_trace_point.h
@@ -325,5 +325,5 @@ __rte_trace_mem_get(uint64_t in)
}
/* Check the wrap around case */
- uint32_t offset = trace->offset;
+ uint32_t offset = RTE_ALIGN_CEIL(trace->offset, __RTE_TRACE_EVENT_HEADER_SZ);
if (unlikely((offset + sz) >= trace->len)) {
/* Disable the trace event if it in DISCARD mode */
@@ -333,6 +333,4 @@ __rte_trace_mem_get(uint64_t in)
offset = 0;
}
- /* Align to event header size */
- offset = RTE_ALIGN_CEIL(offset, __RTE_TRACE_EVENT_HEADER_SZ);
void *mem = RTE_PTR_ADD(&trace->mem[0], offset);
offset += sz;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.380904482 +0100
+++ 0067-trace-fix-overflow-in-per-lcore-trace-buffer.patch 2025-07-18 20:29:10.967907444 +0100
@@ -1 +1 @@
-From 3c440cdfe87a2925af1be023e66bdf0bffc423a4 Mon Sep 17 00:00:00 2001
+From 91e27c004f719228fcd6bce52fc554819f4da3e6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3c440cdfe87a2925af1be023e66bdf0bffc423a4 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 8a317d31d2..343e0271b3 100644
+index 87b5f43c3c..71aea97bf2 100644
@@ -23 +24 @@
-@@ -329,5 +329,5 @@ __rte_trace_mem_get(uint64_t in)
+@@ -325,5 +325,5 @@ __rte_trace_mem_get(uint64_t in)
@@ -30 +31 @@
-@@ -337,6 +337,4 @@ __rte_trace_mem_get(uint64_t in)
+@@ -333,6 +333,4 @@ __rte_trace_mem_get(uint64_t in)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/octeon_ep: fix buffer refill' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (65 preceding siblings ...)
2025-07-18 19:30 ` patch 'trace: fix overflow in per-lcore trace buffer' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/cnxk: fix aura offset' " Kevin Traynor
` (107 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Vidya Sagar Velumuri; +Cc: Vamsi Attunuru, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/31097f329005a26fc69bd7e429194f783c57d0b1
Thanks.
Kevin
---
From 31097f329005a26fc69bd7e429194f783c57d0b1 Mon Sep 17 00:00:00 2001
From: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Date: Mon, 24 Mar 2025 16:38:50 +0530
Subject: [PATCH] net/octeon_ep: fix buffer refill
[ upstream commit fc3106f82afb3adc885e4fe3d4a83214e900062f ]
Fix the buffer refill for SDP output queue
Fixes: ab09499e809c ("net/octeon_ep: add SSE Rx")
Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Acked-by: Vamsi Attunuru <vattunuru@marvell.com>
---
drivers/net/octeon_ep/cnxk_ep_rx.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/octeon_ep/cnxk_ep_rx.h b/drivers/net/octeon_ep/cnxk_ep_rx.h
index 83677e1c6f..5db32c4448 100644
--- a/drivers/net/octeon_ep/cnxk_ep_rx.h
+++ b/drivers/net/octeon_ep/cnxk_ep_rx.h
@@ -73,9 +73,8 @@ cnxk_ep_rx_refill(struct otx_ep_droq *droq)
count = droq->read_idx;
rc = cnxk_ep_rx_refill_mbuf(droq, count);
- if (unlikely(rc)) {
+ if (unlikely(rc))
droq->stats.rx_alloc_failure++;
- return;
- }
- desc_refilled += count;
+ else
+ desc_refilled += count;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.421966962 +0100
+++ 0068-net-octeon_ep-fix-buffer-refill.patch 2025-07-18 20:29:10.968431240 +0100
@@ -1 +1 @@
-From fc3106f82afb3adc885e4fe3d4a83214e900062f Mon Sep 17 00:00:00 2001
+From 31097f329005a26fc69bd7e429194f783c57d0b1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fc3106f82afb3adc885e4fe3d4a83214e900062f ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/cnxk: fix aura offset' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (66 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/octeon_ep: fix buffer refill' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/cnxk: fix E-tag pattern parsing' " Kevin Traynor
` (106 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Nawal Kishor; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6cfc6ca79203f7e9fb61d0b111450b2ae9c8bf9a
Thanks.
Kevin
---
From 6cfc6ca79203f7e9fb61d0b111450b2ae9c8bf9a Mon Sep 17 00:00:00 2001
From: Nawal Kishor <nkishor@marvell.com>
Date: Mon, 24 Mar 2025 12:05:25 +0530
Subject: [PATCH] common/cnxk: fix aura offset
[ upstream commit 270cd2d12d55eb1dc7677344160dac44aca3030c ]
Aura field width has reduced from 20 bits in cn10k/cn9k
to 17 bits in cn20k. Adjust the setting of aura offset in
NPA_LF_POOL_OP_INT register accordingly based on the platform.
Fixes: 620fc02bf7eb ("common/cnxk: accommodate change in aura field width")
Signed-off-by: Nawal Kishor <nkishor@marvell.com>
---
drivers/common/cnxk/roc_npa_irq.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/common/cnxk/roc_npa_irq.c b/drivers/common/cnxk/roc_npa_irq.c
index 0a19319ebf..3142a40c8c 100644
--- a/drivers/common/cnxk/roc_npa_irq.c
+++ b/drivers/common/cnxk/roc_npa_irq.c
@@ -105,12 +105,13 @@ npa_q_irq_get_and_clear(struct npa_lf *lf, uint32_t q, uint32_t off,
uint64_t mask)
{
- uint64_t reg, wdata;
+ uint64_t reg, wdata, shift;
uint8_t qint;
- wdata = (uint64_t)q << 44;
+ shift = roc_model_is_cn20k() ? 47 : 44;
+ wdata = (uint64_t)q << shift;
reg = roc_atomic64_add_nosync(wdata, (int64_t *)(lf->base + off));
if (reg & BIT_ULL(42) /* OP_ERR */) {
- plt_err("Failed execute irq get off=0x%x", off);
+ plt_err("Failed execute irq get off=0x%x reg=0x%" PRIu64, off, reg);
return 0;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.450970423 +0100
+++ 0069-common-cnxk-fix-aura-offset.patch 2025-07-18 20:29:10.968907447 +0100
@@ -1 +1 @@
-From 270cd2d12d55eb1dc7677344160dac44aca3030c Mon Sep 17 00:00:00 2001
+From 6cfc6ca79203f7e9fb61d0b111450b2ae9c8bf9a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 270cd2d12d55eb1dc7677344160dac44aca3030c ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/cnxk: fix E-tag pattern parsing' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (67 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/cnxk: fix aura offset' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/cnxk: fix CQ tail drop' " Kevin Traynor
` (105 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Satheesh Paul; +Cc: Kiran Kumar K, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/71a46e1a8a9d7f45c979b456171c207b149733b4
Thanks.
Kevin
---
From 71a46e1a8a9d7f45c979b456171c207b149733b4 Mon Sep 17 00:00:00 2001
From: Satheesh Paul <psatheesh@marvell.com>
Date: Thu, 22 May 2025 15:41:16 +0530
Subject: [PATCH] common/cnxk: fix E-tag pattern parsing
[ upstream commit a610e32b96768b84436ba523bc97af88df4d6963 ]
E-tag pattern parsing was using wrong length leading
to a segfault. Fixing this by using the correct length
of the pattern item.
Fixes: c34ea71b878d ("common/cnxk: add NPC parsing API")
Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Reviewed-by: Kiran Kumar K <kirankumark@marvell.com>
---
drivers/common/cnxk/roc_npc.c | 5 +++--
drivers/common/cnxk/roc_npc_parse.c | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c
index 53f278c764..9c7bd0e15c 100644
--- a/drivers/common/cnxk/roc_npc.c
+++ b/drivers/common/cnxk/roc_npc.c
@@ -940,8 +940,9 @@ npc_parse_pattern(struct npc *npc, const struct roc_npc_item_info pattern[],
pst->mcam_mask = (uint8_t *)flow->mcam_mask;
- while (pattern->type != ROC_NPC_ITEM_TYPE_END &&
- layer < PLT_DIM(parse_stage_funcs)) {
+ while (pattern->type != ROC_NPC_ITEM_TYPE_END && layer < PLT_DIM(parse_stage_funcs)) {
/* Skip place-holders */
pattern = npc_parse_skip_void_and_any_items(pattern);
+ if (pattern->type == ROC_NPC_ITEM_TYPE_END)
+ break;
pst->pattern = pattern;
diff --git a/drivers/common/cnxk/roc_npc_parse.c b/drivers/common/cnxk/roc_npc_parse.c
index 0aaf86c768..18ce71a5cc 100644
--- a/drivers/common/cnxk/roc_npc_parse.c
+++ b/drivers/common/cnxk/roc_npc_parse.c
@@ -530,4 +530,5 @@ npc_parse_lb(struct npc_parse_state *pst)
lt = NPC_LT_LB_ETAG;
lflags = 0;
+ info.len = pattern->size;
last_pattern = pst->pattern;
@@ -544,5 +545,4 @@ npc_parse_lb(struct npc_parse_state *pst)
last_pattern = pattern;
}
- info.len = pattern->size;
} else if (pst->pattern->type == ROC_NPC_ITEM_TYPE_QINQ) {
info.hw_mask = NULL;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.480625823 +0100
+++ 0070-common-cnxk-fix-E-tag-pattern-parsing.patch 2025-07-18 20:29:10.969907450 +0100
@@ -1 +1 @@
-From a610e32b96768b84436ba523bc97af88df4d6963 Mon Sep 17 00:00:00 2001
+From 71a46e1a8a9d7f45c979b456171c207b149733b4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a610e32b96768b84436ba523bc97af88df4d6963 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 1f2461e026..50106b8773 100644
+index 53f278c764..9c7bd0e15c 100644
@@ -24 +25 @@
-@@ -996,8 +996,9 @@ npc_parse_pattern(struct npc *npc, const struct roc_npc_item_info pattern[],
+@@ -940,8 +940,9 @@ npc_parse_pattern(struct npc *npc, const struct roc_npc_item_info pattern[],
@@ -37 +38 @@
-index b52024f434..37b43995db 100644
+index 0aaf86c768..18ce71a5cc 100644
@@ -40 +41 @@
-@@ -532,4 +532,5 @@ npc_parse_lb(struct npc_parse_state *pst)
+@@ -530,4 +530,5 @@ npc_parse_lb(struct npc_parse_state *pst)
@@ -46 +47 @@
-@@ -546,5 +547,4 @@ npc_parse_lb(struct npc_parse_state *pst)
+@@ -544,5 +545,4 @@ npc_parse_lb(struct npc_parse_state *pst)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/cnxk: fix CQ tail drop' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (68 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/cnxk: fix E-tag pattern parsing' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/cnxk: fix descriptor count update on reconfig' " Kevin Traynor
` (104 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Nithin Dabilpuram; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/14213101c2ea12410489ee66a484907a54c3612c
Thanks.
Kevin
---
From 14213101c2ea12410489ee66a484907a54c3612c Mon Sep 17 00:00:00 2001
From: Nithin Dabilpuram <ndabilpuram@marvell.com>
Date: Wed, 28 May 2025 17:21:16 +0530
Subject: [PATCH] common/cnxk: fix CQ tail drop
[ upstream commit dc8f10bb36bbd9dd961e4baba693181add66c962 ]
CQ tail drop feature is currently supposed to be enabled
when inline IPsec is disabled. But since XQE drop is not
enabled, CQ tail drop is implicitly disabled. Fix the same.
Fixes: c8c967e11717 ("common/cnxk: support enabling AURA tail drop for RQ")
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
drivers/common/cnxk/roc_nix.h | 2 ++
drivers/common/cnxk/roc_nix_queue.c | 11 +++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index f213823b9b..e2df09c75e 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -355,4 +355,6 @@ struct roc_nix_rq {
/* SPB aura drop enable */
bool spb_drop_ena;
+ /* XQE drop enable */
+ bool xqe_drop_ena;
/* End of Input parameters */
struct roc_nix *roc_nix;
diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c
index e852211ba4..39bd051c94 100644
--- a/drivers/common/cnxk/roc_nix_queue.c
+++ b/drivers/common/cnxk/roc_nix_queue.c
@@ -531,5 +531,5 @@ nix_rq_cn9k_cfg(struct dev *dev, struct roc_nix_rq *rq, uint16_t qints,
/* Many to one reduction */
aq->rq.qint_idx = rq->qid % qints;
- aq->rq.xqe_drop_ena = 1;
+ aq->rq.xqe_drop_ena = rq->xqe_drop_ena;
/* If RED enabled, then fill enable for all cases */
@@ -614,4 +614,5 @@ nix_rq_cn10k_cfg(struct dev *dev, struct roc_nix_rq *rq, uint16_t qints, bool cf
aq->rq.wqe_caching = 1;
+ aq->rq.xqe_drop_ena = 0;
aq->rq.good_utag = rq->tag_mask >> 24;
aq->rq.bad_utag = rq->tag_mask >> 24;
@@ -633,4 +634,6 @@ nix_rq_cn10k_cfg(struct dev *dev, struct roc_nix_rq *rq, uint16_t qints, bool cf
aq->rq.ltag = rq->tag_mask & BITMASK_ULL(24, 0);
aq->rq.cq = rq->cqid;
+ if (rq->xqe_drop_ena)
+ aq->rq.xqe_drop_ena = 1;
}
@@ -681,5 +684,4 @@ nix_rq_cn10k_cfg(struct dev *dev, struct roc_nix_rq *rq, uint16_t qints, bool cf
/* Many to one reduction */
aq->rq.qint_idx = rq->qid % qints;
- aq->rq.xqe_drop_ena = 0;
aq->rq.lpb_drop_ena = rq->lpb_drop_ena;
aq->rq.spb_drop_ena = rq->spb_drop_ena;
@@ -726,4 +728,5 @@ nix_rq_cn10k_cfg(struct dev *dev, struct roc_nix_rq *rq, uint16_t qints, bool cf
aq->rq_mask.ltag = ~aq->rq_mask.ltag;
aq->rq_mask.cq = ~aq->rq_mask.cq;
+ aq->rq_mask.xqe_drop_ena = ~aq->rq_mask.xqe_drop_ena;
}
@@ -951,4 +954,8 @@ roc_nix_rq_init(struct roc_nix *roc_nix, struct roc_nix_rq *rq, bool ena)
rq->tc = ROC_NIX_PFC_CLASS_INVALID;
+ /* Enable XQE/CQ drop on cn10k to count pkt drops only when inline is disabled */
+ if (roc_model_is_cn10k() && !roc_nix_inl_inb_is_enabled(roc_nix))
+ rq->xqe_drop_ena = true;
+
if (is_cn9k)
rc = nix_rq_cn9k_cfg(dev, rq, nix->qints, false, ena);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.512200897 +0100
+++ 0071-common-cnxk-fix-CQ-tail-drop.patch 2025-07-18 20:29:10.971907457 +0100
@@ -1 +1 @@
-From dc8f10bb36bbd9dd961e4baba693181add66c962 Mon Sep 17 00:00:00 2001
+From 14213101c2ea12410489ee66a484907a54c3612c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dc8f10bb36bbd9dd961e4baba693181add66c962 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 80392e7e1b..1e543d8f11 100644
+index f213823b9b..e2df09c75e 100644
@@ -23 +24 @@
-@@ -356,4 +356,6 @@ struct roc_nix_rq {
+@@ -355,4 +355,6 @@ struct roc_nix_rq {
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/cnxk: fix descriptor count update on reconfig' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (69 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/cnxk: fix CQ tail drop' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'ethdev: fix error struct in flow configure' " Kevin Traynor
` (103 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Rahul Bhansali; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0aaff9e61e169216b26e9cdeadab392decc764b0
Thanks.
Kevin
---
From 0aaff9e61e169216b26e9cdeadab392decc764b0 Mon Sep 17 00:00:00 2001
From: Rahul Bhansali <rbhansali@marvell.com>
Date: Wed, 28 May 2025 17:21:19 +0530
Subject: [PATCH] net/cnxk: fix descriptor count update on reconfig
[ upstream commit ad23295cb8217390b9f966ad5ee10a4e21f9c20b ]
In Rx queue setup, input descriptors count is updated as per
requirement, and stored. But during port reconfig , this
descriptor count will change again in rx queue setup.
Hence, will need to store the initial input descriptor count.
Fixes: a86144cd9ded ("net/cnxk: add Rx queue setup and release")
Signed-off-by: Rahul Bhansali <rbhansali@marvell.com>
---
drivers/net/cnxk/cnxk_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c
index ea980a6d5e..462a8a33e2 100644
--- a/drivers/net/cnxk/cnxk_ethdev.c
+++ b/drivers/net/cnxk/cnxk_ethdev.c
@@ -642,4 +642,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
struct cnxk_eth_rxq_sp *rxq_sp;
struct rte_mempool_ops *ops;
+ uint32_t desc_cnt = nb_desc;
const char *platform_ops;
struct roc_nix_rq *rq;
@@ -763,5 +764,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
/* Queue config should reflect global offloads */
rxq_sp->qconf.conf.rx.offloads = dev->rx_offloads;
- rxq_sp->qconf.nb_desc = nb_desc;
+ rxq_sp->qconf.nb_desc = desc_cnt;
rxq_sp->qconf.mp = lpb_pool;
rxq_sp->tc = 0;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.543161954 +0100
+++ 0072-net-cnxk-fix-descriptor-count-update-on-reconfig.patch 2025-07-18 20:29:10.972907460 +0100
@@ -1 +1 @@
-From ad23295cb8217390b9f966ad5ee10a4e21f9c20b Mon Sep 17 00:00:00 2001
+From 0aaff9e61e169216b26e9cdeadab392decc764b0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ad23295cb8217390b9f966ad5ee10a4e21f9c20b ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 85fdb4dc91..fc17841bca 100644
+index ea980a6d5e..462a8a33e2 100644
@@ -23 +24 @@
-@@ -654,4 +654,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
+@@ -642,4 +642,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
@@ -29 +30 @@
-@@ -779,5 +780,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
+@@ -763,5 +764,5 @@ cnxk_nix_rx_queue_setup(struct rte_eth_dev *eth_dev, uint16_t qid,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'ethdev: fix error struct in flow configure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (70 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/cnxk: fix descriptor count update on reconfig' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice/base: fix type conversion' " Kevin Traynor
` (102 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Maayan Kashani; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e743b62f364744bdeeb256a14fda31523c72291c
Thanks.
Kevin
---
From e743b62f364744bdeeb256a14fda31523c72291c Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 29 May 2025 08:56:10 +0300
Subject: [PATCH] ethdev: fix error struct in flow configure
[ upstream commit af7ac22d8da82398065d5f3c799c17a7cec3a6af ]
rte_flow_configure() returned error value w/o filling the
error struct which caused a crash on complain function.
Filling the error struct fixed the issue.
Fixes: 4ff58b734bc9 ("ethdev: introduce flow engine configuration")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
---
lib/ethdev/rte_flow.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
index 4a7735b5ab..9a14242965 100644
--- a/lib/ethdev/rte_flow.c
+++ b/lib/ethdev/rte_flow.c
@@ -1694,5 +1694,5 @@ rte_flow_configure(uint16_t port_id,
"Device with port_id=%"PRIu16" is not configured.",
port_id);
- return -EINVAL;
+ goto error;
}
if (dev->data->dev_started != 0) {
@@ -1700,13 +1700,13 @@ rte_flow_configure(uint16_t port_id,
"Device with port_id=%"PRIu16" already started.",
port_id);
- return -EINVAL;
+ goto error;
}
if (port_attr == NULL) {
FLOW_LOG(ERR, "Port %"PRIu16" info is NULL.", port_id);
- return -EINVAL;
+ goto error;
}
if (queue_attr == NULL) {
FLOW_LOG(ERR, "Port %"PRIu16" queue info is NULL.", port_id);
- return -EINVAL;
+ goto error;
}
if ((port_attr->flags & RTE_FLOW_PORT_FLAG_SHARE_INDIRECT) &&
@@ -1729,4 +1729,8 @@ rte_flow_configure(uint16_t port_id,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, rte_strerror(ENOTSUP));
+error:
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ NULL, rte_strerror(EINVAL));
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.573770473 +0100
+++ 0073-ethdev-fix-error-struct-in-flow-configure.patch 2025-07-18 20:29:10.973907463 +0100
@@ -1 +1 @@
-From af7ac22d8da82398065d5f3c799c17a7cec3a6af Mon Sep 17 00:00:00 2001
+From e743b62f364744bdeeb256a14fda31523c72291c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit af7ac22d8da82398065d5f3c799c17a7cec3a6af ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 9f8d8f3dc2..fe8f43caff 100644
+index 4a7735b5ab..9a14242965 100644
@@ -23 +24 @@
-@@ -1726,5 +1726,5 @@ rte_flow_configure(uint16_t port_id,
+@@ -1694,5 +1694,5 @@ rte_flow_configure(uint16_t port_id,
@@ -30 +31 @@
-@@ -1732,13 +1732,13 @@ rte_flow_configure(uint16_t port_id,
+@@ -1700,13 +1700,13 @@ rte_flow_configure(uint16_t port_id,
@@ -47 +48 @@
-@@ -1761,4 +1761,8 @@ rte_flow_configure(uint16_t port_id,
+@@ -1729,4 +1729,8 @@ rte_flow_configure(uint16_t port_id,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice/base: fix type conversion' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (71 preceding siblings ...)
2025-07-18 19:30 ` patch 'ethdev: fix error struct in flow configure' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice/base: fix media type check' " Kevin Traynor
` (101 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Waldemar Dworakowski; +Cc: Dhanya Pillai, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0418eab283515a30fcb8ddadab35408a83d7f312
Thanks.
Kevin
---
From 0418eab283515a30fcb8ddadab35408a83d7f312 Mon Sep 17 00:00:00 2001
From: Waldemar Dworakowski <waldemar.dworakowski@intel.com>
Date: Tue, 27 May 2025 13:17:20 +0000
Subject: [PATCH] net/ice/base: fix type conversion
[ upstream commit 16517011abfb4974af4eba63ad5a5e2aa65ef3ee ]
In ice_sched_move_vsi_to_agg() int16 is used to pass 8 bit value
which causes a compiler warning:
warning C4244: 'function' : conversion from 'UINT16' to 'UINT8',
possible loss of data
Changed variable type to avoid conversion
Fixes: aff06930682c ("net/ice/base: remove 255 limit on sched child nodes")
Signed-off-by: Waldemar Dworakowski <waldemar.dworakowski@intel.com>
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_sched.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ice/base/ice_sched.c b/drivers/net/ice/base/ice_sched.c
index 1f520bb7c0..a8a149f541 100644
--- a/drivers/net/ice/base/ice_sched.c
+++ b/drivers/net/ice/base/ice_sched.c
@@ -2384,5 +2384,6 @@ ice_sched_move_vsi_to_agg(struct ice_port_info *pi, u16 vsi_handle, u32 agg_id,
u8 aggl, vsil;
int status;
- u16 i;
+ u16 j;
+ u8 i;
tc_node = ice_sched_get_tc_node(pi, tc);
@@ -2410,7 +2411,7 @@ ice_sched_move_vsi_to_agg(struct ice_port_info *pi, u16 vsi_handle, u32 agg_id,
/* Check if the aggregator subtree has any free node to add the VSI */
- for (i = 0; i < agg_node->num_children; i++) {
+ for (j = 0; j < agg_node->num_children; j++) {
parent = ice_sched_get_free_vsi_parent(pi->hw,
- agg_node->children[i],
+ agg_node->children[j],
num_nodes);
if (parent)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.616398602 +0100
+++ 0074-net-ice-base-fix-type-conversion.patch 2025-07-18 20:29:10.976907472 +0100
@@ -1 +1 @@
-From 16517011abfb4974af4eba63ad5a5e2aa65ef3ee Mon Sep 17 00:00:00 2001
+From 0418eab283515a30fcb8ddadab35408a83d7f312 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 16517011abfb4974af4eba63ad5a5e2aa65ef3ee ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
- drivers/net/intel/ice/base/ice_sched.c | 7 ++++---
+ drivers/net/ice/base/ice_sched.c | 7 ++++---
@@ -24 +25 @@
-diff --git a/drivers/net/intel/ice/base/ice_sched.c b/drivers/net/intel/ice/base/ice_sched.c
+diff --git a/drivers/net/ice/base/ice_sched.c b/drivers/net/ice/base/ice_sched.c
@@ -26,2 +27,2 @@
---- a/drivers/net/intel/ice/base/ice_sched.c
-+++ b/drivers/net/intel/ice/base/ice_sched.c
+--- a/drivers/net/ice/base/ice_sched.c
++++ b/drivers/net/ice/base/ice_sched.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice/base: fix media type check' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (72 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice/base: fix type conversion' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice/base: fix integer overflow' " Kevin Traynor
` (100 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Paul Greenwalt; +Cc: Dhanya Pillai, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e76921b1b738677b3d0671cb027f1d1d69b57ec2
Thanks.
Kevin
---
From e76921b1b738677b3d0671cb027f1d1d69b57ec2 Mon Sep 17 00:00:00 2001
From: Paul Greenwalt <paul.greenwalt@intel.com>
Date: Tue, 27 May 2025 13:17:21 +0000
Subject: [PATCH] net/ice/base: fix media type check
[ upstream commit a9ed25d9bcaf0808341811bd95b31151ca66b5bf ]
Found a typo in original implementation of ice_set_media_type,
where one of the checks for FIBER looks for C2C media type
instead of C2M. This results in failure of this check for some
AOC devices, consequently setting the media type as AUI.
Fixes: e7bd7d54a26b ("net/ice/base: improve PHY media capabilities handling")
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/base/ice_common.c b/drivers/net/ice/base/ice_common.c
index c8047ca59f..74434c8fd2 100644
--- a/drivers/net/ice/base/ice_common.c
+++ b/drivers/net/ice/base/ice_common.c
@@ -453,5 +453,5 @@ static void ice_set_media_type(struct ice_port_info *pi)
phy_type_high & ICE_MEDIA_OPT_PHY_TYPE_HIGH_M) &&
(phy_type_low & ICE_MEDIA_C2M_PHY_TYPE_LOW_M ||
- phy_type_high & ICE_MEDIA_C2C_PHY_TYPE_HIGH_M)))
+ phy_type_high & ICE_MEDIA_C2M_PHY_TYPE_HIGH_M)))
*media_type = ICE_MEDIA_FIBER;
/* else if PHY types are only DA, or DA and C2C, then media type DA */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.649854649 +0100
+++ 0075-net-ice-base-fix-media-type-check.patch 2025-07-18 20:29:10.979907481 +0100
@@ -1 +1 @@
-From a9ed25d9bcaf0808341811bd95b31151ca66b5bf Mon Sep 17 00:00:00 2001
+From e76921b1b738677b3d0671cb027f1d1d69b57ec2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a9ed25d9bcaf0808341811bd95b31151ca66b5bf ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
- drivers/net/intel/ice/base/ice_common.c | 2 +-
+ drivers/net/ice/base/ice_common.c | 2 +-
@@ -21,4 +22,4 @@
-diff --git a/drivers/net/intel/ice/base/ice_common.c b/drivers/net/intel/ice/base/ice_common.c
-index fce9b070cf..69070b740e 100644
---- a/drivers/net/intel/ice/base/ice_common.c
-+++ b/drivers/net/intel/ice/base/ice_common.c
+diff --git a/drivers/net/ice/base/ice_common.c b/drivers/net/ice/base/ice_common.c
+index c8047ca59f..74434c8fd2 100644
+--- a/drivers/net/ice/base/ice_common.c
++++ b/drivers/net/ice/base/ice_common.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice/base: fix integer overflow' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (73 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice/base: fix media type check' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice/base: fix typo in device ID description' " Kevin Traynor
` (99 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Lukasz Krakowiak; +Cc: Dhanya Pillai, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a0e9d250c7d2ec42687a05a04aac58a76ee5d964
Thanks.
Kevin
---
From a0e9d250c7d2ec42687a05a04aac58a76ee5d964 Mon Sep 17 00:00:00 2001
From: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
Date: Tue, 27 May 2025 13:17:22 +0000
Subject: [PATCH] net/ice/base: fix integer overflow
[ upstream commit 152ebcea022feb1498fed591f92ebcf394a16ea7 ]
Fix integer overflow in power of two calculation. Flagged by internal
static analysis.
Fixes: aa1cd410fa64 ("net/ice/base: add flow module")
Signed-off-by: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_type.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
index 35f832eb9f..69cc91fd95 100644
--- a/drivers/net/ice/base/ice_type.h
+++ b/drivers/net/ice/base/ice_type.h
@@ -26,5 +26,5 @@
static inline bool ice_is_pow2(u64 val)
{
- return (val && !(val & (val - 1)));
+ return val != 0 && (val & (val - 1)) == 0;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.684013153 +0100
+++ 0076-net-ice-base-fix-integer-overflow.patch 2025-07-18 20:29:10.980907484 +0100
@@ -1 +1 @@
-From 152ebcea022feb1498fed591f92ebcf394a16ea7 Mon Sep 17 00:00:00 2001
+From a0e9d250c7d2ec42687a05a04aac58a76ee5d964 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 152ebcea022feb1498fed591f92ebcf394a16ea7 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/ice/base/ice_type.h | 2 +-
+ drivers/net/ice/base/ice_type.h | 2 +-
@@ -19,4 +20,4 @@
-diff --git a/drivers/net/intel/ice/base/ice_type.h b/drivers/net/intel/ice/base/ice_type.h
-index 297a5ea890..ae3b944d6e 100644
---- a/drivers/net/intel/ice/base/ice_type.h
-+++ b/drivers/net/intel/ice/base/ice_type.h
+diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
+index 35f832eb9f..69cc91fd95 100644
+--- a/drivers/net/ice/base/ice_type.h
++++ b/drivers/net/ice/base/ice_type.h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice/base: fix typo in device ID description' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (74 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice/base: fix integer overflow' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/dpaax: fix PDCP key command race condition' " Kevin Traynor
` (98 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Lukasz Krakowiak; +Cc: Dhanya Pillai, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/3e540b56180c57d099ea0a8bf0da8fb2fad552c7
Thanks.
Kevin
---
From 3e540b56180c57d099ea0a8bf0da8fb2fad552c7 Mon Sep 17 00:00:00 2001
From: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
Date: Tue, 27 May 2025 13:17:24 +0000
Subject: [PATCH] net/ice/base: fix typo in device ID description
[ upstream commit e54cf1fec8517f9ec1ec6bdca6fd9e6b0dd2c307 ]
Fix typo in desc for dev ID 579F.
Fixes: 6fd3889c1779 ("net/ice/base: support E824S and E825 devices")
Signed-off-by: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_devids.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/base/ice_devids.h b/drivers/net/ice/base/ice_devids.h
index 807b5d0c29..20c6dbd4a5 100644
--- a/drivers/net/ice/base/ice_devids.h
+++ b/drivers/net/ice/base/ice_devids.h
@@ -91,5 +91,5 @@
/* Intel(R) Ethernet Connection E825-C for SFP */
#define ICE_DEV_ID_E825C_SFP 0x579E
-/* Intel(R) Ethernet Connection E825-C 1GbE */
+/* Intel(R) Ethernet Connection E825-C 10GbE */
#define ICE_DEV_ID_E825C_SGMII 0x579F
#define ICE_DEV_ID_C825X 0x0DCD
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.717471656 +0100
+++ 0077-net-ice-base-fix-typo-in-device-ID-description.patch 2025-07-18 20:29:10.982069830 +0100
@@ -1 +1 @@
-From e54cf1fec8517f9ec1ec6bdca6fd9e6b0dd2c307 Mon Sep 17 00:00:00 2001
+From 3e540b56180c57d099ea0a8bf0da8fb2fad552c7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e54cf1fec8517f9ec1ec6bdca6fd9e6b0dd2c307 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -15 +16 @@
- drivers/net/intel/ice/base/ice_devids.h | 2 +-
+ drivers/net/ice/base/ice_devids.h | 2 +-
@@ -18 +19 @@
-diff --git a/drivers/net/intel/ice/base/ice_devids.h b/drivers/net/intel/ice/base/ice_devids.h
+diff --git a/drivers/net/ice/base/ice_devids.h b/drivers/net/ice/base/ice_devids.h
@@ -20,2 +21,2 @@
---- a/drivers/net/intel/ice/base/ice_devids.h
-+++ b/drivers/net/intel/ice/base/ice_devids.h
+--- a/drivers/net/ice/base/ice_devids.h
++++ b/drivers/net/ice/base/ice_devids.h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/dpaax: fix PDCP key command race condition' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (75 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice/base: fix typo in device ID description' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/dpaax: fix PDCP AES only 12-bit SN' " Kevin Traynor
` (97 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/12cf9a6edfd0173beada2311f912e303702cedeb
Thanks.
Kevin
---
From 12cf9a6edfd0173beada2311f912e303702cedeb Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <g.singh@nxp.com>
Date: Wed, 21 May 2025 12:26:50 +0530
Subject: [PATCH] common/dpaax: fix PDCP key command race condition
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 684faacc0fde7110c31c640669381dbf19f447f8 ]
A race condition between loading the key into CAAM’s internal
memory and initiating cryptographic operations can cause SEC
errors in PDCP AES algorithm combinations.
To mitigate this, the CALM instruction is added for the
12-bit SN case, and the older version of the descriptor
is used for the 18-bit SN case.
Fixes: 6127fff842a7 ("common/dpaax: remove outdated caamflib code")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/common/dpaax/caamflib/desc/pdcp.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/common/dpaax/caamflib/desc/pdcp.h b/drivers/common/dpaax/caamflib/desc/pdcp.h
index 9ada3905c5..f4379ede2c 100644
--- a/drivers/common/dpaax/caamflib/desc/pdcp.h
+++ b/drivers/common/dpaax/caamflib/desc/pdcp.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause or GPL-2.0+
* Copyright 2008-2013 Freescale Semiconductor, Inc.
- * Copyright 2019-2023 NXP
+ * Copyright 2019-2025 NXP
*/
@@ -1982,6 +1982,5 @@ pdcp_insert_uplane_no_int_op(struct program *p,
cipherdata->keylen, INLINE_KEY(cipherdata));
- if ((sn_size == PDCP_SN_SIZE_15) ||
- (rta_sec_era >= RTA_SEC_ERA_10)) {
+ if (sn_size == PDCP_SN_SIZE_15) {
PROTOCOL(p, dir, OP_PCLID_LTE_PDCP_USER,
(uint16_t)cipherdata->algtype);
@@ -2748,4 +2747,5 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,
INLINE_KEY(cipherdata));
+ JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM);
if (authdata)
PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.747249309 +0100
+++ 0078-common-dpaax-fix-PDCP-key-command-race-condition.patch 2025-07-18 20:29:10.982907490 +0100
@@ -1 +1 @@
-From 684faacc0fde7110c31c640669381dbf19f447f8 Mon Sep 17 00:00:00 2001
+From 12cf9a6edfd0173beada2311f912e303702cedeb Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 684faacc0fde7110c31c640669381dbf19f447f8 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/dpaax: fix PDCP AES only 12-bit SN' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (76 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/dpaax: fix PDCP key command race condition' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/dpaa2_sec: fix uninitialized variable' " Kevin Traynor
` (96 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/13accd53baf6dbd893be30be5337256ddeb7f692
Thanks.
Kevin
---
From 13accd53baf6dbd893be30be5337256ddeb7f692 Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <g.singh@nxp.com>
Date: Wed, 21 May 2025 12:26:51 +0530
Subject: [PATCH] common/dpaax: fix PDCP AES only 12-bit SN
[ upstream commit f0ccfc4ddc7a01f4544b8a2913cc3d3f7c8b8832 ]
This workaround fixes the invalid key command SEC error.
Fixes: 6127fff842a7 ("common/dpaax: remove outdated caamflib code")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/common/dpaax/caamflib/desc/pdcp.h | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/common/dpaax/caamflib/desc/pdcp.h b/drivers/common/dpaax/caamflib/desc/pdcp.h
index f4379ede2c..c90eff26a8 100644
--- a/drivers/common/dpaax/caamflib/desc/pdcp.h
+++ b/drivers/common/dpaax/caamflib/desc/pdcp.h
@@ -620,5 +620,5 @@ pdcp_insert_cplane_enc_only_op(struct program *p,
cipherdata->keylen, INLINE_KEY(cipherdata));
- if ((sn_size != PDCP_SN_SIZE_18 &&
+ if ((authdata && sn_size != PDCP_SN_SIZE_18 &&
!(rta_sec_era == RTA_SEC_ERA_8 &&
authdata->algtype == 0))
@@ -632,4 +632,5 @@ pdcp_insert_cplane_enc_only_op(struct program *p,
return 0;
}
+
/* Non-proto is supported only for 5bit cplane and 18bit uplane */
switch (sn_size) {
@@ -2720,5 +2721,5 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,
case PDCP_CIPHER_TYPE_SNOW:
case PDCP_CIPHER_TYPE_NULL:
- if (rta_sec_era == RTA_SEC_ERA_8 &&
+ if (rta_sec_era >= RTA_SEC_ERA_8 &&
authdata && authdata->algtype == 0){
err = pdcp_insert_uplane_with_int_op(p, swap,
@@ -2730,4 +2731,15 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf,
break;
}
+ if (rta_sec_era >= RTA_SEC_ERA_8 &&
+ cipherdata->algtype == PDCP_CIPHER_TYPE_AES
+ && !authdata
+ && sn_size == PDCP_SN_SIZE_12) {
+ err = pdcp_insert_cplane_enc_only_op(p, swap, cipherdata,
+ authdata,
+ OP_TYPE_ENCAP_PROTOCOL, sn_size);
+ if (err)
+ return err;
+ break;
+ }
if (pdb_type != PDCP_PDB_TYPE_FULL_PDB) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.778291944 +0100
+++ 0079-common-dpaax-fix-PDCP-AES-only-12-bit-SN.patch 2025-07-18 20:29:10.983907493 +0100
@@ -1 +1 @@
-From f0ccfc4ddc7a01f4544b8a2913cc3d3f7c8b8832 Mon Sep 17 00:00:00 2001
+From 13accd53baf6dbd893be30be5337256ddeb7f692 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f0ccfc4ddc7a01f4544b8a2913cc3d3f7c8b8832 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/dpaa2_sec: fix uninitialized variable' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (77 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/dpaax: fix PDCP AES only 12-bit SN' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/cnxk: update SG list population' " Kevin Traynor
` (95 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Vanshika Shukla; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/138fc65ec3d6ca7552c69be32013b28afa2d6216
Thanks.
Kevin
---
From 138fc65ec3d6ca7552c69be32013b28afa2d6216 Mon Sep 17 00:00:00 2001
From: Vanshika Shukla <vanshika.shukla@nxp.com>
Date: Wed, 21 May 2025 12:26:54 +0530
Subject: [PATCH] crypto/dpaa2_sec: fix uninitialized variable
[ upstream commit db4bef492253c23c0ff3e4c4a8124eb5af09f971 ]
Fixes the uninitialized variable.
Fixes: 1182b364312c ("crypto/dpaax_sec: set authdata in non-auth case")
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
index 7ad8fd47dd..2381b43565 100644
--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
@@ -3576,4 +3576,5 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev,
session->auth_key.length = 0;
session->auth_alg = 0;
+ authdata.algtype = PDCP_AUTH_TYPE_NULL;
}
authdata.key = (size_t)session->auth_key.data;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.809654836 +0100
+++ 0080-crypto-dpaa2_sec-fix-uninitialized-variable.patch 2025-07-18 20:29:10.985907499 +0100
@@ -1 +1 @@
-From db4bef492253c23c0ff3e4c4a8124eb5af09f971 Mon Sep 17 00:00:00 2001
+From 138fc65ec3d6ca7552c69be32013b28afa2d6216 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit db4bef492253c23c0ff3e4c4a8124eb5af09f971 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index 925d2709d2..5995eb58d8 100644
+index 7ad8fd47dd..2381b43565 100644
@@ -20 +21 @@
-@@ -3577,4 +3577,5 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev,
+@@ -3576,4 +3576,5 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/cnxk: update SG list population' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (78 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/dpaa2_sec: fix uninitialized variable' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/cnxk: fix QP stats' " Kevin Traynor
` (94 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Vidya Sagar Velumuri; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f8606f15ef1fae94bd4b003c24cf2e93f24706e3
Thanks.
Kevin
---
From f8606f15ef1fae94bd4b003c24cf2e93f24706e3 Mon Sep 17 00:00:00 2001
From: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Date: Tue, 27 May 2025 09:30:31 +0530
Subject: [PATCH] crypto/cnxk: update SG list population
[ upstream commit 3644dc3205e6be1a33eb6303c29731acac5b9aaa ]
Update the last seg with length before populating the scatter list.
Fixes: 9a126e7cf088 ("crypto/cnxk: support TLS padding verification")
Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
---
drivers/crypto/cnxk/cn10k_tls_ops.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/cnxk/cn10k_tls_ops.h b/drivers/crypto/cnxk/cn10k_tls_ops.h
index e8e2547f68..c5ef3027ac 100644
--- a/drivers/crypto/cnxk/cn10k_tls_ops.h
+++ b/drivers/crypto/cnxk/cn10k_tls_ops.h
@@ -137,4 +137,6 @@ process_tls_write(struct roc_cpt_lf *lf, struct rte_crypto_op *cop, struct cn10k
g_size_bytes = ((i + 3) / 4) * sizeof(struct roc_sglist_comp);
+ /* Output Scatter List */
+ last_seg->data_len += sess->max_extended_len + pad_bytes;
i = 0;
scatter_comp = (struct roc_sglist_comp *)((uint8_t *)gather_comp + g_size_bytes);
@@ -157,6 +159,4 @@ process_tls_write(struct roc_cpt_lf *lf, struct rte_crypto_op *cop, struct cn10k
w4.s.opcode_minor = pad_len;
- /* Output Scatter List */
- last_seg->data_len += sess->max_extended_len + pad_bytes;
inst->w4.u64 = w4.u64;
} else {
@@ -190,4 +190,6 @@ process_tls_write(struct roc_cpt_lf *lf, struct rte_crypto_op *cop, struct cn10k
g_size_bytes = ((i + 2) / 3) * sizeof(struct roc_sg2list_comp);
+ /* Output Scatter List */
+ last_seg->data_len += sess->max_extended_len + pad_bytes;
i = 0;
scatter_comp = (struct roc_sg2list_comp *)((uint8_t *)gather_comp + g_size_bytes);
@@ -210,6 +212,4 @@ process_tls_write(struct roc_cpt_lf *lf, struct rte_crypto_op *cop, struct cn10k
w4.s.param1 = w4.s.dlen;
w4.s.param2 = cop->param1.tls_record.content_type;
- /* Output Scatter List */
- last_seg->data_len += sess->max_extended_len + pad_bytes;
inst->w4.u64 = w4.u64;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.841522955 +0100
+++ 0081-crypto-cnxk-update-SG-list-population.patch 2025-07-18 20:29:10.986907503 +0100
@@ -1 +1 @@
-From 3644dc3205e6be1a33eb6303c29731acac5b9aaa Mon Sep 17 00:00:00 2001
+From f8606f15ef1fae94bd4b003c24cf2e93f24706e3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3644dc3205e6be1a33eb6303c29731acac5b9aaa ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/cnxk: fix QP stats' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (79 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/cnxk: update SG list population' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/virtio: fix driver cleanup' " Kevin Traynor
` (93 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Tejasree Kondoj; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/75867221463a679bc86bbbef5ea1bc0626ff7ae7
Thanks.
Kevin
---
From 75867221463a679bc86bbbef5ea1bc0626ff7ae7 Mon Sep 17 00:00:00 2001
From: Tejasree Kondoj <ktejasree@marvell.com>
Date: Tue, 27 May 2025 09:30:33 +0530
Subject: [PATCH] crypto/cnxk: fix QP stats
[ upstream commit a82f46b03b0f91cbd6d9f2fb1efd4947b8f69231 ]
Fixed queue pair stats PMD API.
Fixes: bf52722b9377 ("crypto/cnxk: add PMD API to get queue stats")
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
---
drivers/crypto/cnxk/cnxk_cryptodev_ops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
index a82db13a8e..26cd9f0147 100644
--- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
+++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c
@@ -1210,5 +1210,5 @@ rte_pmd_cnxk_crypto_qp_stats_get(struct rte_pmd_cnxk_crypto_qptr *qptr,
stats->ctx_enc_pkts = plt_read64(lf->rbase + CPT_LF_CTX_ENC_PKT_CNT);
stats->ctx_enc_bytes = plt_read64(lf->rbase + CPT_LF_CTX_ENC_BYTE_CNT);
- stats->ctx_dec_bytes = plt_read64(lf->rbase + CPT_LF_CTX_DEC_BYTE_CNT);
+ stats->ctx_dec_pkts = plt_read64(lf->rbase + CPT_LF_CTX_DEC_PKT_CNT);
stats->ctx_dec_bytes = plt_read64(lf->rbase + CPT_LF_CTX_DEC_BYTE_CNT);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.871790127 +0100
+++ 0082-crypto-cnxk-fix-QP-stats.patch 2025-07-18 20:29:10.987907506 +0100
@@ -1 +1 @@
-From a82f46b03b0f91cbd6d9f2fb1efd4947b8f69231 Mon Sep 17 00:00:00 2001
+From 75867221463a679bc86bbbef5ea1bc0626ff7ae7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a82f46b03b0f91cbd6d9f2fb1efd4947b8f69231 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index 613ce11ec1..61f3e135aa 100644
+index a82db13a8e..26cd9f0147 100644
@@ -20 +21 @@
-@@ -1219,5 +1219,5 @@ rte_pmd_cnxk_crypto_qp_stats_get(struct rte_pmd_cnxk_crypto_qptr *qptr,
+@@ -1210,5 +1210,5 @@ rte_pmd_cnxk_crypto_qp_stats_get(struct rte_pmd_cnxk_crypto_qptr *qptr,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/virtio: fix driver cleanup' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (80 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/cnxk: fix QP stats' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal: fix return value of lcore role' " Kevin Traynor
` (92 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/b626ee594ce8a046af1ebb6f24183575cd8919d5
Thanks.
Kevin
---
From b626ee594ce8a046af1ebb6f24183575cd8919d5 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Thu, 29 May 2025 11:45:53 +0000
Subject: [PATCH] crypto/virtio: fix driver cleanup
[ upstream commit 6adb7f4ae156341958463db80951d8f528932e9f ]
Improper cleanup resulted in a segfault when more
than 1 device was used
Fixes: 6f0175ff53e0 ("crypto/virtio: support basic PMD ops")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
drivers/crypto/virtio/virtio_cryptodev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c
index b4a6fae9e0..034a479994 100644
--- a/drivers/crypto/virtio/virtio_cryptodev.c
+++ b/drivers/crypto/virtio/virtio_cryptodev.c
@@ -779,6 +779,5 @@ virtio_crypto_dev_uninit(struct rte_cryptodev *cryptodev)
cryptodev->dequeue_burst = NULL;
- rte_free(cryptodev->data);
- cryptodev->data = NULL;
+ rte_cryptodev_pmd_release_device(cryptodev);
VIRTIO_CRYPTO_DRV_LOG_INFO("dev_uninit completed");
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.901646530 +0100
+++ 0083-crypto-virtio-fix-driver-cleanup.patch 2025-07-18 20:29:10.988907509 +0100
@@ -1 +1 @@
-From 6adb7f4ae156341958463db80951d8f528932e9f Mon Sep 17 00:00:00 2001
+From b626ee594ce8a046af1ebb6f24183575cd8919d5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6adb7f4ae156341958463db80951d8f528932e9f ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f591cf0c7a..299898e585 100644
+index b4a6fae9e0..034a479994 100644
@@ -22 +23 @@
-@@ -626,6 +626,5 @@ virtio_crypto_dev_uninit(struct rte_cryptodev *cryptodev)
+@@ -779,6 +779,5 @@ virtio_crypto_dev_uninit(struct rte_cryptodev *cryptodev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal: fix return value of lcore role' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (81 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/virtio: fix driver cleanup' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal: warn if no lcore is available' " Kevin Traynor
` (91 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Pavan Nikhilesh; +Cc: Morten Brørup, Konstantin Ananyev, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4cf7ad1d4188a27e94da43ef59fd07bfce7c2bbe
Thanks.
Kevin
---
From 4cf7ad1d4188a27e94da43ef59fd07bfce7c2bbe Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula@marvell.com>
Date: Wed, 21 May 2025 01:47:26 +0530
Subject: [PATCH] eal: fix return value of lcore role
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 65e03bc2f35109cb33ad4a6e244d5ea90e78fcde ]
Update rte_lcore_has_role() to return false instead of a
negative value for invalid lcore IDs, removing the need
for callers to pre-validate the ID.
Fixes: b0a1502a277c ("eal: make semantics of lcore role function more intuitive")
Suggested-by: Morten Brørup <mb@smartsharesystems.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
lib/eal/common/eal_common_lcore.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/eal/common/eal_common_lcore.c b/lib/eal/common/eal_common_lcore.c
index 820a6534b1..10a523b8fa 100644
--- a/lib/eal/common/eal_common_lcore.c
+++ b/lib/eal/common/eal_common_lcore.c
@@ -80,5 +80,5 @@ rte_lcore_has_role(unsigned int lcore_id, enum rte_lcore_role_t role)
if (lcore_id >= RTE_MAX_LCORE)
- return -EINVAL;
+ return 0;
return cfg->lcore_role[lcore_id] == role;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.932537491 +0100
+++ 0084-eal-fix-return-value-of-lcore-role.patch 2025-07-18 20:29:10.989748243 +0100
@@ -1 +1 @@
-From 65e03bc2f35109cb33ad4a6e244d5ea90e78fcde Mon Sep 17 00:00:00 2001
+From 4cf7ad1d4188a27e94da43ef59fd07bfce7c2bbe Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 65e03bc2f35109cb33ad4a6e244d5ea90e78fcde ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 294267177d..9dd6c72055 100644
+index 820a6534b1..10a523b8fa 100644
@@ -28 +29 @@
-@@ -88,5 +88,5 @@ rte_lcore_has_role(unsigned int lcore_id, enum rte_lcore_role_t role)
+@@ -80,5 +80,5 @@ rte_lcore_has_role(unsigned int lcore_id, enum rte_lcore_role_t role)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal: warn if no lcore is available' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (82 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal: fix return value of lcore role' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'test/lcore: fix race in per-lcore test' " Kevin Traynor
` (90 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: David Marchand; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/466f5576ce8812c2d726e3e1f48cc19f8f8fb6ae
Thanks.
Kevin
---
From 466f5576ce8812c2d726e3e1f48cc19f8f8fb6ae Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Thu, 8 May 2025 07:19:15 +0200
Subject: [PATCH] eal: warn if no lcore is available
[ upstream commit 2ea1d30dc938866a983156473579d10bddb4951e ]
On systems with more cpu than RTE_MAX_LCORE, starting DPDK with
cores >= RTE_MAX_LCORE ends up with an ambiguous error log.
Example with RTE_MAX_LCORE=8:
$ taskset -c 8 ./build/app/dpdk-testpmd
EAL: Detected CPU lcores: 8
EAL: Detected NUMA nodes: 1
EAL: Invalid 'command line' arguments.
EAL: Error - exiting with code: 1
Cannot init EAL: Invalid argument
Add a better hint to help the user.
Fixes: 2eba8d21f3c9 ("eal: restrict cores auto detection")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/common/eal_common_options.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index 79db9a47dd..5811de130e 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -2050,4 +2050,9 @@ eal_adjust_config(struct internal_config *internal_cfg)
eal_auto_detect_cores(cfg);
+ if (cfg->lcore_count == 0) {
+ EAL_LOG(ERR, "No detected lcore is enabled, please check the core list");
+ return -1;
+ }
+
if (internal_conf->process_type == RTE_PROC_AUTO)
internal_conf->process_type = eal_proc_type_detect();
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.962552935 +0100
+++ 0085-eal-warn-if-no-lcore-is-available.patch 2025-07-18 20:29:10.989907512 +0100
@@ -1 +1 @@
-From 2ea1d30dc938866a983156473579d10bddb4951e Mon Sep 17 00:00:00 2001
+From 466f5576ce8812c2d726e3e1f48cc19f8f8fb6ae Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2ea1d30dc938866a983156473579d10bddb4951e ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index b6fff7ec05..b194d0ee06 100644
+index 79db9a47dd..5811de130e 100644
@@ -32 +33 @@
-@@ -2053,4 +2053,9 @@ eal_adjust_config(struct internal_config *internal_cfg)
+@@ -2050,4 +2050,9 @@ eal_adjust_config(struct internal_config *internal_cfg)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/lcore: fix race in per-lcore test' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (83 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal: warn if no lcore is available' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'bus: cleanup device lists' " Kevin Traynor
` (89 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: David Marchand; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/d522170814a9150569920a82e73ec916e96d7ced
Thanks.
Kevin
---
From d522170814a9150569920a82e73ec916e96d7ced Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 17 Mar 2025 15:30:15 +0100
Subject: [PATCH] test/lcore: fix race in per-lcore test
[ upstream commit 7c37826c2b87966f3b11b2c74dc720fcc1e0e6f5 ]
In some CI, this unit test can fail, as the main thread may get
rescheduled while lcores execute the callback waiting 100ms.
Bugzilla ID: 1668
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
app/test/test_per_lcore.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/app/test/test_per_lcore.c b/app/test/test_per_lcore.c
index 63c5c80c24..9c72f0fa21 100644
--- a/app/test/test_per_lcore.c
+++ b/app/test/test_per_lcore.c
@@ -60,9 +60,20 @@ display_vars(__rte_unused void *arg)
static int
-test_per_lcore_delay(__rte_unused void *arg)
+test_per_lcore_delay(void *arg)
{
+ RTE_ATOMIC(bool) *wait;
+
rte_delay_ms(100);
printf("wait 100ms on lcore %u\n", rte_lcore_id());
+ if (arg == NULL)
+ return 0;
+
+ wait = arg;
+ while (rte_atomic_load_explicit(wait, rte_memory_order_relaxed)) {
+ rte_delay_ms(100);
+ printf("wait 100ms on lcore %u\n", rte_lcore_id());
+ }
+
return 0;
}
@@ -71,4 +82,5 @@ static int
test_per_lcore(void)
{
+ RTE_ATOMIC(bool) wait = true;
unsigned lcore_id;
int ret;
@@ -87,5 +99,5 @@ test_per_lcore(void)
/* test if it could do remote launch twice at the same time or not */
- ret = rte_eal_mp_remote_launch(test_per_lcore_delay, NULL, SKIP_MAIN);
+ ret = rte_eal_mp_remote_launch(test_per_lcore_delay, &wait, SKIP_MAIN);
if (ret < 0) {
printf("It fails to do remote launch but it should able to do\n");
@@ -98,4 +110,5 @@ test_per_lcore(void)
return -1;
}
+ rte_atomic_store_explicit(&wait, false, rte_memory_order_relaxed);
RTE_LCORE_FOREACH_WORKER(lcore_id) {
if (rte_eal_wait_lcore(lcore_id) < 0)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:13.992821197 +0100
+++ 0086-test-lcore-fix-race-in-per-lcore-test.patch 2025-07-18 20:29:10.990907515 +0100
@@ -1 +1 @@
-From 7c37826c2b87966f3b11b2c74dc720fcc1e0e6f5 Mon Sep 17 00:00:00 2001
+From d522170814a9150569920a82e73ec916e96d7ced Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7c37826c2b87966f3b11b2c74dc720fcc1e0e6f5 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus: cleanup device lists' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (84 preceding siblings ...)
2025-07-18 19:30 ` patch 'test/lcore: fix race in per-lcore test' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal/linux: unregister alarm callback before free' " Kevin Traynor
` (88 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Morten Brørup, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1b5dfa8745d22cbd1ee6c4a72a6e5636a66eace6
Thanks.
Kevin
---
From 1b5dfa8745d22cbd1ee6c4a72a6e5636a66eace6 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 20 Feb 2025 16:09:06 +0800
Subject: [PATCH] bus: cleanup device lists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 398bb775edc5434ad94578a5e6c49fa1328acc0f ]
Although eal_bus_cleanup() is not invoked for multiple times, this is a
good programming habit to remove the device object from list when
cleanup bus.
Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
Fixes: 62b906cf06ba ("bus/uacce: introduce UACCE bus")
Fixes: 65780eada9d9 ("bus/vmbus: support cleanup")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
drivers/bus/pci/pci_common.c | 1 +
drivers/bus/uacce/uacce.c | 1 +
drivers/bus/vdev/vdev.c | 1 +
drivers/bus/vmbus/vmbus_common.c | 1 +
4 files changed, 4 insertions(+)
diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
index 70faae4e44..57c355e474 100644
--- a/drivers/bus/pci/pci_common.c
+++ b/drivers/bus/pci/pci_common.c
@@ -450,4 +450,5 @@ free:
dev->vfio_req_intr_handle = NULL;
+ TAILQ_REMOVE(&rte_pci_bus.device_list, dev, next);
pci_free(RTE_PCI_DEVICE_INTERNAL(dev));
}
diff --git a/drivers/bus/uacce/uacce.c b/drivers/bus/uacce/uacce.c
index c1529c38c0..36d5d48abb 100644
--- a/drivers/bus/uacce/uacce.c
+++ b/drivers/bus/uacce/uacce.c
@@ -455,4 +455,5 @@ uacce_cleanup(void)
free:
+ TAILQ_REMOVE(&uacce_bus.device_list, dev, next);
memset(dev, 0, sizeof(*dev));
free(dev);
diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index ec7abe7cda..ae79cfd049 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -597,4 +597,5 @@ vdev_cleanup(void)
dev->device.driver = NULL;
free:
+ TAILQ_REMOVE(&vdev_device_list, dev, next);
free(dev);
}
diff --git a/drivers/bus/vmbus/vmbus_common.c b/drivers/bus/vmbus/vmbus_common.c
index 8a965d10d9..4dac5a6298 100644
--- a/drivers/bus/vmbus/vmbus_common.c
+++ b/drivers/bus/vmbus/vmbus_common.c
@@ -239,4 +239,5 @@ rte_vmbus_cleanup(void)
dev->driver = NULL;
dev->device.driver = NULL;
+ TAILQ_REMOVE(&rte_vmbus_bus.device_list, dev, next);
free(dev);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.035079075 +0100
+++ 0087-bus-cleanup-device-lists.patch 2025-07-18 20:29:10.991907518 +0100
@@ -1 +1 @@
-From 398bb775edc5434ad94578a5e6c49fa1328acc0f Mon Sep 17 00:00:00 2001
+From 1b5dfa8745d22cbd1ee6c4a72a6e5636a66eace6 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 398bb775edc5434ad94578a5e6c49fa1328acc0f ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 5df4086f31..c88634f790 100644
+index 70faae4e44..57c355e474 100644
@@ -31 +32 @@
-@@ -452,4 +452,5 @@ free:
+@@ -450,4 +450,5 @@ free:
@@ -38 +39 @@
-index 9b8ac23952..f5343ed87a 100644
+index c1529c38c0..36d5d48abb 100644
@@ -41 +42 @@
-@@ -456,4 +456,5 @@ uacce_cleanup(void)
+@@ -455,4 +455,5 @@ uacce_cleanup(void)
@@ -48 +49 @@
-index beee8c4033..be375f63dc 100644
+index ec7abe7cda..ae79cfd049 100644
@@ -51 +52 @@
-@@ -604,4 +604,5 @@ vdev_cleanup(void)
+@@ -597,4 +597,5 @@ vdev_cleanup(void)
@@ -58 +59 @@
-index ac04ee11f8..a787d8b18d 100644
+index 8a965d10d9..4dac5a6298 100644
@@ -61 +62 @@
-@@ -241,4 +241,5 @@ rte_vmbus_cleanup(void)
+@@ -239,4 +239,5 @@ rte_vmbus_cleanup(void)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal/linux: unregister alarm callback before free' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (85 preceding siblings ...)
2025-07-18 19:30 ` patch 'bus: cleanup device lists' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal/freebsd: " Kevin Traynor
` (87 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Rui Ferreira; +Cc: Konstantin Ananyev, Thomas Monjalon, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/28861cd46f6c52379a43e43059aa0ade08a180ce
Thanks.
Kevin
---
From 28861cd46f6c52379a43e43059aa0ade08a180ce Mon Sep 17 00:00:00 2001
From: Rui Ferreira <rui.ferreira1@h-partners.com>
Date: Fri, 30 May 2025 09:18:43 +0100
Subject: [PATCH] eal/linux: unregister alarm callback before free
[ upstream commit d84bf0d9aeb474d89a412b6af8e947b16bfcb895 ]
This was flagged by Address sanitizer as a use after free. The
intr_handle ptr is shared between the main thread and the interrupt
thread. The interrupt thread can dereference the ptr after free (from
the alarm callback). free is called when the main thread cleans up.
The interrupt thread never terminates (eal_intr_thread_main) so
use rte_intr_callback_unregister_sync during cleanup to
ensure the callback is removed before freeing the ptr.
To be more defensive clear out the pointer and registration
variable if we can unregister.
rte_intr_callback_unregister_sync may (optionally) use traces
so the alarm cleanup must happen before eal_trace_fini to avoid
accessing freed memory.
Bugzilla ID: 1683
Fixes: 90b13ab8d4f7 ("alarm: remove direct access to interrupt handle")
Signed-off-by: Rui Ferreira <rui.ferreira1@h-partners.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
.mailmap | 1 +
lib/eal/linux/eal.c | 2 +-
lib/eal/linux/eal_alarm.c | 9 ++++++++-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index 9211e53fc7..2acdcfd272 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1325,4 +1325,5 @@ Roy Franz <roy.franz@cavium.com>
Roy Pledge <roy.pledge@nxp.com>
Roy Shterman <roy.shterman@vastdata.com>
+Rui Ferreira <rui.ferreira1@h-partners.com>
Ruifeng Wang <ruifeng.wang@arm.com>
Rushil Gupta <rushilg@google.com>
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index b1e63e37fc..a13d8f559a 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1324,8 +1324,8 @@ rte_eal_cleanup(void)
rte_mp_channel_cleanup();
eal_bus_cleanup();
+ rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
eal_mp_dev_hotplug_cleanup();
- rte_eal_alarm_cleanup();
/* after this point, any DPDK pointers will become dangling */
rte_eal_memory_detach();
diff --git a/lib/eal/linux/eal_alarm.c b/lib/eal/linux/eal_alarm.c
index 9fe14ade63..44748c7650 100644
--- a/lib/eal/linux/eal_alarm.c
+++ b/lib/eal/linux/eal_alarm.c
@@ -57,5 +57,12 @@ void
rte_eal_alarm_cleanup(void)
{
- rte_intr_instance_free(intr_handle);
+ /* unregister callback using intr_handle in interrupt thread */
+ int ret = rte_intr_callback_unregister_sync(intr_handle,
+ eal_alarm_callback, (void *)-1);
+ if (ret >= 0) {
+ rte_intr_instance_free(intr_handle);
+ intr_handle = NULL;
+ handler_registered = 0;
+ }
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.068439178 +0100
+++ 0088-eal-linux-unregister-alarm-callback-before-free.patch 2025-07-18 20:29:10.994907527 +0100
@@ -1 +1 @@
-From d84bf0d9aeb474d89a412b6af8e947b16bfcb895 Mon Sep 17 00:00:00 2001
+From 28861cd46f6c52379a43e43059aa0ade08a180ce Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d84bf0d9aeb474d89a412b6af8e947b16bfcb895 ]
+
@@ -24 +25,0 @@
-Cc: stable@dpdk.org
@@ -36 +37 @@
-index fb90483bee..9135f06efc 100644
+index 9211e53fc7..2acdcfd272 100644
@@ -39 +40 @@
-@@ -1340,4 +1340,5 @@ Roy Franz <roy.franz@cavium.com>
+@@ -1325,4 +1325,5 @@ Roy Franz <roy.franz@cavium.com>
@@ -44 +45 @@
- Rupesh Chiluka <rchiluka@marvell.com>
+ Rushil Gupta <rushilg@google.com>
@@ -46 +47 @@
-index 20f777b8b0..de90ab3b86 100644
+index b1e63e37fc..a13d8f559a 100644
@@ -49 +50 @@
-@@ -1329,8 +1329,8 @@ rte_eal_cleanup(void)
+@@ -1324,8 +1324,8 @@ rte_eal_cleanup(void)
@@ -60 +61 @@
-index b216a007a3..eb6a21d4f0 100644
+index 9fe14ade63..44748c7650 100644
@@ -63 +64 @@
-@@ -58,5 +58,12 @@ void
+@@ -57,5 +57,12 @@ void
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal/freebsd: unregister alarm callback before free' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (86 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal/linux: unregister alarm callback before free' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'bus/pci/bsd: fix device existence check' " Kevin Traynor
` (86 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Rui Ferreira; +Cc: Bruce Richardson, Thomas Monjalon, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0fce285ecb5e64805f02ff05c11ede111eb90816
Thanks.
Kevin
---
From 0fce285ecb5e64805f02ff05c11ede111eb90816 Mon Sep 17 00:00:00 2001
From: Rui Ferreira <rui.ferreira1@h-partners.com>
Date: Fri, 30 May 2025 09:18:44 +0100
Subject: [PATCH] eal/freebsd: unregister alarm callback before free
[ upstream commit cf1937a96dcf63f6e00e3181654a845edb1fd682 ]
Unregister callback on cleanup to avoid use after free from the
interrupt thread (eal_intr_thread_main).
To be more defensive, set ptr to NULL if we can unregister.
rte_intr_callback_unregister_sync may (optionally) use traces
so the alarm cleanup must happen before eal_trace_fini to avoid
accessing freed memory.
Bugzilla ID: 1683
Fixes: 90b13ab8d4f7 ("alarm: remove direct access to interrupt handle")
Signed-off-by: Rui Ferreira <rui.ferreira1@h-partners.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
lib/eal/freebsd/eal.c | 2 +-
lib/eal/freebsd/eal_alarm.c | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index d07cff8651..2cb693a90b 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -902,7 +902,7 @@ rte_eal_cleanup(void)
rte_mp_channel_cleanup();
eal_bus_cleanup();
+ rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
- rte_eal_alarm_cleanup();
/* after this point, any DPDK pointers will become dangling */
rte_eal_memory_detach();
diff --git a/lib/eal/freebsd/eal_alarm.c b/lib/eal/freebsd/eal_alarm.c
index 3680f5caba..65e8a4eb6b 100644
--- a/lib/eal/freebsd/eal_alarm.c
+++ b/lib/eal/freebsd/eal_alarm.c
@@ -50,5 +50,11 @@ void
rte_eal_alarm_cleanup(void)
{
- rte_intr_instance_free(intr_handle);
+ /* unregister callback using intr_handle in interrupt thread */
+ int ret = rte_intr_callback_unregister_sync(intr_handle,
+ eal_alarm_callback, (void *)-1);
+ if (ret >= 0) {
+ rte_intr_instance_free(intr_handle);
+ intr_handle = NULL;
+ }
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.102706320 +0100
+++ 0089-eal-freebsd-unregister-alarm-callback-before-free.patch 2025-07-18 20:29:10.995907530 +0100
@@ -1 +1 @@
-From cf1937a96dcf63f6e00e3181654a845edb1fd682 Mon Sep 17 00:00:00 2001
+From 0fce285ecb5e64805f02ff05c11ede111eb90816 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cf1937a96dcf63f6e00e3181654a845edb1fd682 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index d6fffa2170..45adfad668 100644
+index d07cff8651..2cb693a90b 100644
@@ -31 +32 @@
-@@ -907,7 +907,7 @@ rte_eal_cleanup(void)
+@@ -902,7 +902,7 @@ rte_eal_cleanup(void)
@@ -41 +42 @@
-index 28f285fdef..c03e281e67 100644
+index 3680f5caba..65e8a4eb6b 100644
@@ -44 +45 @@
-@@ -51,5 +51,11 @@ void
+@@ -50,5 +50,11 @@ void
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus/pci/bsd: fix device existence check' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (87 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal/freebsd: " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'power/intel_uncore: fix crash closing uninitialized driver' " Kevin Traynor
` (85 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Jake Freeland; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/78e15dd8952bdd7c4a914ca007f9dd074dc6d144
Thanks.
Kevin
---
From 78e15dd8952bdd7c4a914ca007f9dd074dc6d144 Mon Sep 17 00:00:00 2001
From: Jake Freeland <jfree@freebsd.org>
Date: Tue, 6 May 2025 12:40:44 -0500
Subject: [PATCH] bus/pci/bsd: fix device existence check
[ upstream commit 6d4e6dbccc3bd965bfd5e5836d7cb21c1b1f9c6c ]
Use open(2) instead of access(2) to check for the existence of the target
device. This avoids a possible race condition where the device file is
removed after a successful call to access(2) but before open(2).
This also fixes any potential bugs associated with passing open(2)-style
flags into access(2). i.e. access(2) does not formally support the O_RDWR
flag.
Fixes: 764bf26873b9 ("add FreeBSD support")
Signed-off-by: Jake Freeland <jfree@freebsd.org>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/bus/pci/bsd/pci.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/bus/pci/bsd/pci.c b/drivers/bus/pci/bsd/pci.c
index 2f88252418..5168eb2e22 100644
--- a/drivers/bus/pci/bsd/pci.c
+++ b/drivers/bus/pci/bsd/pci.c
@@ -104,4 +104,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
char devname[PATH_MAX]; /* contains the /dev/uioX */
struct rte_pci_addr *loc;
+ int fd;
loc = &dev->addr;
@@ -110,12 +111,18 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
dev->addr.bus, dev->addr.devid, dev->addr.function);
- if (access(devname, O_RDWR) < 0) {
- PCI_LOG(WARNING, " "PCI_PRI_FMT" not managed by UIO driver, skipping",
- loc->domain, loc->bus, loc->devid, loc->function);
- return 1;
+ fd = open(devname, O_RDWR);
+ if (fd < 0) {
+ if (errno == ENOENT) {
+ PCI_LOG(WARNING, PCI_PRI_FMT" not managed by UIO driver, skipping",
+ loc->domain, loc->bus, loc->devid, loc->function);
+ return 1;
+ }
+ PCI_LOG(ERR, "Failed to open device file for " PCI_PRI_FMT " (%s)",
+ loc->domain, loc->bus, loc->devid, loc->function, devname);
+ return -1;
}
/* save fd if in primary process */
- if (rte_intr_fd_set(dev->intr_handle, open(devname, O_RDWR))) {
+ if (rte_intr_fd_set(dev->intr_handle, fd)) {
PCI_LOG(WARNING, "Failed to save fd");
goto error;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.136436213 +0100
+++ 0090-bus-pci-bsd-fix-device-existence-check.patch 2025-07-18 20:29:10.996747187 +0100
@@ -1 +1 @@
-From 6d4e6dbccc3bd965bfd5e5836d7cb21c1b1f9c6c Mon Sep 17 00:00:00 2001
+From 78e15dd8952bdd7c4a914ca007f9dd074dc6d144 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6d4e6dbccc3bd965bfd5e5836d7cb21c1b1f9c6c ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 2508e36a85..3f13e1d6ac 100644
+index 2f88252418..5168eb2e22 100644
@@ -27 +28 @@
-@@ -107,4 +107,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
+@@ -104,4 +104,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
@@ -33 +34 @@
-@@ -113,12 +114,18 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
+@@ -110,12 +111,18 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'power/intel_uncore: fix crash closing uninitialized driver' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (88 preceding siblings ...)
2025-07-18 19:30 ` patch 'bus/pci/bsd: fix device existence check' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net: fix IPv6 check for IPv4 compat' " Kevin Traynor
` (84 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Kevin Laatz, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f2a8997ad18a6c2190ff92013a4ddaeb355e5894
Thanks.
Kevin
---
From f2a8997ad18a6c2190ff92013a4ddaeb355e5894 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Thu, 15 May 2025 17:58:53 +0100
Subject: [PATCH] power/intel_uncore: fix crash closing uninitialized driver
[ upstream commit 74c4b081825123350578f18dc838ec0bf69ba03b ]
When the power_intel_uncore_autotest unit test is run as an unprivileged
user which cannot init the power library, it crashes the unit test
binary due to calling "rte_power_uncore_exit" after the first test case
(initialization) fails. This crash is due to trying to write to NULL
file handles.
Fix the crash by checking each file handle is non-null before writing to
it and closing it.
Fixes: 60b8a661a957 ("power: add Intel uncore frequency control")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
---
drivers/power/intel_uncore/intel_uncore.c | 35 ++++++++++++-----------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/drivers/power/intel_uncore/intel_uncore.c b/drivers/power/intel_uncore/intel_uncore.c
index 804ad5d755..6759ea1445 100644
--- a/drivers/power/intel_uncore/intel_uncore.c
+++ b/drivers/power/intel_uncore/intel_uncore.c
@@ -308,25 +308,26 @@ power_intel_uncore_exit(unsigned int pkg, unsigned int die)
ui = &uncore_info[pkg][die];
- if (fprintf(ui->f_cur_min, "%u", ui->org_min_freq) < 0) {
- POWER_LOG(ERR, "Fail to write original uncore frequency for "
- "pkg %02u die %02u", ui->pkg, ui->die);
- return -1;
+ if (ui->f_cur_min != NULL) {
+ if (fprintf(ui->f_cur_min, "%u", ui->org_min_freq) < 0) {
+ POWER_LOG(ERR, "Fail to write original uncore frequency for pkg %02u die %02u",
+ ui->pkg, ui->die);
+ return -1;
+ }
+ fflush(ui->f_cur_min);
+ fclose(ui->f_cur_min);
+ ui->f_cur_min = NULL;
}
- if (fprintf(ui->f_cur_max, "%u", ui->org_max_freq) < 0) {
- POWER_LOG(ERR, "Fail to write original uncore frequency for "
- "pkg %02u die %02u", ui->pkg, ui->die);
- return -1;
+ if (ui->f_cur_max != NULL) {
+ if (fprintf(ui->f_cur_max, "%u", ui->org_max_freq) < 0) {
+ POWER_LOG(ERR, "Fail to write original uncore frequency for pkg %02u die %02u",
+ ui->pkg, ui->die);
+ return -1;
+ }
+ fflush(ui->f_cur_max);
+ fclose(ui->f_cur_max);
+ ui->f_cur_max = NULL;
}
- fflush(ui->f_cur_min);
- fflush(ui->f_cur_max);
-
- /* Close FD of setting freq */
- fclose(ui->f_cur_min);
- fclose(ui->f_cur_max);
- ui->f_cur_min = NULL;
- ui->f_cur_max = NULL;
-
return 0;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.168562677 +0100
+++ 0091-power-intel_uncore-fix-crash-closing-uninitialized-d.patch 2025-07-18 20:29:10.996907533 +0100
@@ -1 +1 @@
-From 74c4b081825123350578f18dc838ec0bf69ba03b Mon Sep 17 00:00:00 2001
+From f2a8997ad18a6c2190ff92013a4ddaeb355e5894 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 74c4b081825123350578f18dc838ec0bf69ba03b ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net: fix IPv6 check for IPv4 compat' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (89 preceding siblings ...)
2025-07-18 19:30 ` patch 'power/intel_uncore: fix crash closing uninitialized driver' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'pcapng: fix null dereference in close' " Kevin Traynor
` (83 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Robin Jarry; +Cc: Junxiao Shi, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/c672cdfb7d9ad98135cd99dc4da23fd651adde76
Thanks.
Kevin
---
From c672cdfb7d9ad98135cd99dc4da23fd651adde76 Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Mon, 24 Feb 2025 15:47:26 +0100
Subject: [PATCH] net: fix IPv6 check for IPv4 compat
[ upstream commit bd221bea7080a0c7d18daef4d47924bb59e71664 ]
The RFC states that the first 96 bits should be compared, not the first
32 bits.
Add unit tests to ensure this works.
Bugzilla ID: 1664
Fixes: 3d6d85f58c1c ("net: add utilities for well known IPv6 address types")
Reported-by: Junxiao Shi <sunnylandh@gmail.com>
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
.mailmap | 2 +-
app/test/test_net_ip6.c | 26 ++++++++++++++++++++++++++
lib/net/rte_ip6.h | 4 ++--
3 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/.mailmap b/.mailmap
index 2acdcfd272..bd43f25315 100644
--- a/.mailmap
+++ b/.mailmap
@@ -764,5 +764,5 @@ Junlong Wang <wang.junlong1@zte.com.cn>
Jun Qiu <jun.qiu@jaguarmicro.com>
Jun W Zhou <junx.w.zhou@intel.com>
-Junxiao Shi <git@mail1.yoursunny.com>
+Junxiao Shi <git@mail1.yoursunny.com> <sunnylandh@gmail.com>
Jun Wang <junwang01@cestc.cn>
Jun Yang <jun.yang@nxp.com>
diff --git a/app/test/test_net_ip6.c b/app/test/test_net_ip6.c
index 9cc10b1f71..cfc5509403 100644
--- a/app/test/test_net_ip6.c
+++ b/app/test/test_net_ip6.c
@@ -100,4 +100,6 @@ test_ipv6_addr_kind(void)
TEST_ASSERT(!rte_ipv6_addr_is_loopback(&zero_addr), "");
TEST_ASSERT(!rte_ipv6_addr_is_mcast(&zero_addr), "");
+ TEST_ASSERT(rte_ipv6_addr_is_v4compat(&zero_addr), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&zero_addr), "");
const struct rte_ipv6_addr ucast =
@@ -107,4 +109,6 @@ test_ipv6_addr_kind(void)
TEST_ASSERT(!rte_ipv6_addr_is_loopback(&ucast), "");
TEST_ASSERT(!rte_ipv6_addr_is_mcast(&ucast), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4compat(&ucast), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&ucast), "");
const struct rte_ipv6_addr mcast = RTE_IPV6(0xff01, 0, 0, 0, 0, 0, 0, 1);
@@ -113,4 +117,6 @@ test_ipv6_addr_kind(void)
TEST_ASSERT(!rte_ipv6_addr_is_loopback(&mcast), "");
TEST_ASSERT(rte_ipv6_addr_is_mcast(&mcast), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4compat(&mcast), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&mcast), "");
const struct rte_ipv6_addr lo = RTE_IPV6_ADDR_LOOPBACK;
@@ -119,4 +125,6 @@ test_ipv6_addr_kind(void)
TEST_ASSERT(rte_ipv6_addr_is_loopback(&lo), "");
TEST_ASSERT(!rte_ipv6_addr_is_mcast(&lo), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4compat(&lo), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&lo), "");
const struct rte_ipv6_addr local =
@@ -126,4 +134,22 @@ test_ipv6_addr_kind(void)
TEST_ASSERT(!rte_ipv6_addr_is_loopback(&local), "");
TEST_ASSERT(!rte_ipv6_addr_is_mcast(&local), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4compat(&local), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&local), "");
+
+ const struct rte_ipv6_addr v4compat = RTE_IPV6(0, 0, 0, 0, 0, 0, 0xc0a8, 0x0001);
+ TEST_ASSERT(!rte_ipv6_addr_is_unspec(&v4compat), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_linklocal(&v4compat), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_loopback(&v4compat), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_mcast(&v4compat), "");
+ TEST_ASSERT(rte_ipv6_addr_is_v4compat(&v4compat), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4mapped(&v4compat), "");
+
+ const struct rte_ipv6_addr v4mapped = RTE_IPV6(0, 0, 0, 0, 0, 0xffff, 0xc0a8, 0x0001);
+ TEST_ASSERT(!rte_ipv6_addr_is_unspec(&v4mapped), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_linklocal(&v4mapped), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_loopback(&v4mapped), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_mcast(&v4mapped), "");
+ TEST_ASSERT(!rte_ipv6_addr_is_v4compat(&v4mapped), "");
+ TEST_ASSERT(rte_ipv6_addr_is_v4mapped(&v4mapped), "");
return TEST_SUCCESS;
diff --git a/lib/net/rte_ip6.h b/lib/net/rte_ip6.h
index 992ab5ee1f..8763ccbb5e 100644
--- a/lib/net/rte_ip6.h
+++ b/lib/net/rte_ip6.h
@@ -308,5 +308,5 @@ rte_ipv6_addr_is_v4compat(const struct rte_ipv6_addr *ip)
{
const struct rte_ipv6_addr unspec = RTE_IPV6_ADDR_UNSPEC;
- return rte_ipv6_addr_eq_prefix(ip, &unspec, 32) && !rte_ipv6_addr_is_loopback(ip);
+ return rte_ipv6_addr_eq_prefix(ip, &unspec, 96) && !rte_ipv6_addr_is_loopback(ip);
}
@@ -326,5 +326,5 @@ rte_ipv6_addr_is_v4mapped(const struct rte_ipv6_addr *ip)
{
const struct rte_ipv6_addr prefix = RTE_IPV6_ADDR_PREFIX_V4MAPPED;
- return rte_ipv6_addr_eq_prefix(ip, &prefix, 32);
+ return rte_ipv6_addr_eq_prefix(ip, &prefix, 96);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.200556362 +0100
+++ 0092-net-fix-IPv6-check-for-IPv4-compat.patch 2025-07-18 20:29:10.998907539 +0100
@@ -1 +1 @@
-From bd221bea7080a0c7d18daef4d47924bb59e71664 Mon Sep 17 00:00:00 2001
+From c672cdfb7d9ad98135cd99dc4da23fd651adde76 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bd221bea7080a0c7d18daef4d47924bb59e71664 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 9135f06efc..595841dba4 100644
+index 2acdcfd272..bd43f25315 100644
@@ -27 +28 @@
-@@ -771,5 +771,5 @@ Junlong Wang <wang.junlong1@zte.com.cn>
+@@ -764,5 +764,5 @@ Junlong Wang <wang.junlong1@zte.com.cn>
@@ -90 +91 @@
-index 92558a124a..98bcac3f4d 100644
+index 992ab5ee1f..8763ccbb5e 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'pcapng: fix null dereference in close' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (90 preceding siblings ...)
2025-07-18 19:30 ` patch 'net: fix IPv6 check for IPv4 compat' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/qat: fix size calculation for memset' " Kevin Traynor
` (82 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Ariel Otilibili; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f0b892c99960cbc2069c60fcb9e23f206e2bd51e
Thanks.
Kevin
---
From f0b892c99960cbc2069c60fcb9e23f206e2bd51e Mon Sep 17 00:00:00 2001
From: Ariel Otilibili <ariel.otilibili@6wind.com>
Date: Mon, 24 Feb 2025 17:40:31 +0100
Subject: [PATCH] pcapng: fix null dereference in close
[ upstream commit b24a6349ae1d56b947186c9545349fca1ca87614 ]
rte_pcapng_close() might dereference a null pointer; as example,
PVS-Studio gives its usage in test_pcapng.c: indeed, that call to
rte_pcapng_close() might receive a null pointer.
Link: https://pvs-studio.com/en/docs/warnings/v522/
Link: https://github.com/DPDK/dpdk/blob/e5176f23ae8b31437c3e5eb875c81f95bf3a9942/app/test/test_pcapng.c#L438
Fixes: 8d23ce8f5ee9 ("pcapng: add new library for writing pcapng files")
Suggested-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Ariel Otilibili <ariel.otilibili@6wind.com>
---
lib/pcapng/rte_pcapng.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/pcapng/rte_pcapng.c b/lib/pcapng/rte_pcapng.c
index 16485b27cb..66c16ba227 100644
--- a/lib/pcapng/rte_pcapng.c
+++ b/lib/pcapng/rte_pcapng.c
@@ -717,5 +717,7 @@ void
rte_pcapng_close(rte_pcapng_t *self)
{
- close(self->outfd);
- free(self);
+ if (self) {
+ close(self->outfd);
+ free(self);
+ }
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.234486737 +0100
+++ 0093-pcapng-fix-null-dereference-in-close.patch 2025-07-18 20:29:10.999943414 +0100
@@ -1 +1 @@
-From b24a6349ae1d56b947186c9545349fca1ca87614 Mon Sep 17 00:00:00 2001
+From f0b892c99960cbc2069c60fcb9e23f206e2bd51e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b24a6349ae1d56b947186c9545349fca1ca87614 ]
+
@@ -22 +24 @@
-index cacbefdc50..2a07b4c1f5 100644
+index 16485b27cb..66c16ba227 100644
@@ -25 +27 @@
-@@ -725,5 +725,7 @@ void
+@@ -717,5 +717,7 @@ void
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/qat: fix size calculation for memset' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (91 preceding siblings ...)
2025-07-18 19:30 ` patch 'pcapng: fix null dereference in close' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix link on Windows' " Kevin Traynor
` (81 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/87d3b0a982c03790726d513d5914a209d2929aba
Thanks.
Kevin
---
From 87d3b0a982c03790726d513d5914a209d2929aba Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 20 Feb 2025 08:27:14 -0800
Subject: [PATCH] crypto/qat: fix size calculation for memset
[ upstream commit 99763482361f08c77c9752985d7a7fd9adecd719 ]
The memset was always doing 0 bytes since size computed later.
Link: https://pvs-studio.com/en/blog/posts/cpp/1179/
Fixes: 3a80d7fb2ecd ("crypto/qat: support SHA3 plain hash")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/crypto/qat/qat_sym_session.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index 3279deb325..5a4bac8c46 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -2347,5 +2347,5 @@ int qat_sym_cd_cipher_set(struct qat_sym_session *cdesc,
}
-int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
+static int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
const uint8_t *authkey,
uint32_t authkeylen,
@@ -2621,25 +2621,25 @@ int qat_sym_cd_auth_set(struct qat_sym_session *cdesc,
case ICP_QAT_HW_AUTH_ALGO_SHA3_224:
/* Plain SHA3-224 */
- memset(cdesc->cd_cur_ptr, 0, state1_size);
state1_size = qat_hash_get_state1_size(
cdesc->qat_hash_alg);
+ memset(cdesc->cd_cur_ptr, 0, state1_size);
break;
case ICP_QAT_HW_AUTH_ALGO_SHA3_256:
/* Plain SHA3-256 */
- memset(cdesc->cd_cur_ptr, 0, state1_size);
state1_size = qat_hash_get_state1_size(
cdesc->qat_hash_alg);
+ memset(cdesc->cd_cur_ptr, 0, state1_size);
break;
case ICP_QAT_HW_AUTH_ALGO_SHA3_384:
/* Plain SHA3-384 */
- memset(cdesc->cd_cur_ptr, 0, state1_size);
state1_size = qat_hash_get_state1_size(
cdesc->qat_hash_alg);
+ memset(cdesc->cd_cur_ptr, 0, state1_size);
break;
case ICP_QAT_HW_AUTH_ALGO_SHA3_512:
/* Plain SHA3-512 */
- memset(cdesc->cd_cur_ptr, 0, state1_size);
state1_size = qat_hash_get_state1_size(
cdesc->qat_hash_alg);
+ memset(cdesc->cd_cur_ptr, 0, state1_size);
break;
case ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC:
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.267087311 +0100
+++ 0094-crypto-qat-fix-size-calculation-for-memset.patch 2025-07-18 20:29:11.000907545 +0100
@@ -1 +1 @@
-From 99763482361f08c77c9752985d7a7fd9adecd719 Mon Sep 17 00:00:00 2001
+From 87d3b0a982c03790726d513d5914a209d2929aba Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 99763482361f08c77c9752985d7a7fd9adecd719 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 7f370f03fb..5d831b3106 100644
+index 3279deb325..5a4bac8c46 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix link on Windows' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (92 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/qat: fix size calculation for memset' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: avoid setting kernel MTU if not needed' " Kevin Traynor
` (80 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Andre Muezerie; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e225716e63cda946eef8e50956492e2581731c88
Thanks.
Kevin
---
From e225716e63cda946eef8e50956492e2581731c88 Mon Sep 17 00:00:00 2001
From: Andre Muezerie <andremue@linux.microsoft.com>
Date: Mon, 5 May 2025 07:45:37 -0700
Subject: [PATCH] net/mlx5: fix link on Windows
[ upstream commit 4031a5f261754ad5d4125e84888316d0678f43e7 ]
When compiling DPDK with mlx5 using clang on Windows with
"debug" buildtype the error below is hit:
net_mlx5_mlx5_flow_dv.c.obj : error LNK2019: unresolved external symbol
mlx5_geneve_tlv_parser_create referenced in function
flow_dv_discover_priorities
drivers\rte_net_mlx5-25.dll : fatal error LNK1120: 1 unresolved externals
With a "release" buildtype the error is not seen, which explains why this
issue was not reported earlier.
The same problem will show up with MSVC, but patches which are still under
review are needed for this to be hit with MSVC.
The cause of this problem seems to be that mlx5_flow_geneve.c is only
compiled on Linux. This patch fixes the issue by compiling the file on all
operating systems. It also sorts the file names in meson.build in
alphabetical order.
Fixes: f5177bdc8b76 ("net/mlx5: add GENEVE TLV options parser API")
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/meson.build | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index 78a8648b43..6a91692759 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -18,11 +18,14 @@ headers = files('rte_pmd_mlx5.h')
sources = files(
'mlx5.c',
+ 'mlx5_devx.c',
'mlx5_ethdev.c',
'mlx5_flow.c',
- 'mlx5_flow_meter.c',
- 'mlx5_flow_dv.c',
'mlx5_flow_aso.c',
+ 'mlx5_flow_dv.c',
'mlx5_flow_flex.c',
+ 'mlx5_flow_geneve.c',
+ 'mlx5_flow_meter.c',
'mlx5_mac.c',
+ 'mlx5_nta_rss.c',
'mlx5_rss.c',
'mlx5_rx.c',
@@ -31,6 +34,6 @@ sources = files(
'mlx5_rxtx.c',
'mlx5_stats.c',
- 'mlx5_trigger.c',
'mlx5_trace.c',
+ 'mlx5_trigger.c',
'mlx5_tx.c',
'mlx5_tx_empw.c',
@@ -38,19 +41,16 @@ sources = files(
'mlx5_tx_nompw.c',
'mlx5_tx_txpp.c',
- 'mlx5_txq.c',
'mlx5_txpp.c',
- 'mlx5_vlan.c',
+ 'mlx5_txq.c',
'mlx5_utils.c',
- 'mlx5_devx.c',
- 'mlx5_nta_rss.c',
+ 'mlx5_vlan.c',
)
if is_linux
sources += files(
- 'mlx5_flow_geneve.c',
'mlx5_flow_hw.c',
- 'mlx5_hws_cnt.c',
'mlx5_flow_quota.c',
'mlx5_flow_verbs.c',
+ 'mlx5_hws_cnt.c',
'mlx5_nta_split.c',
)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.300654657 +0100
+++ 0095-net-mlx5-fix-link-on-Windows.patch 2025-07-18 20:29:11.001907548 +0100
@@ -1 +1 @@
-From 4031a5f261754ad5d4125e84888316d0678f43e7 Mon Sep 17 00:00:00 2001
+From e225716e63cda946eef8e50956492e2581731c88 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4031a5f261754ad5d4125e84888316d0678f43e7 ]
+
@@ -26 +27,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: avoid setting kernel MTU if not needed' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (93 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix link on Windows' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix hypervisor detection in VLAN workaround' " Kevin Traynor
` (79 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a9ea24c564ab79d37387995c0c3cc33e17f771b6
Thanks.
Kevin
---
From a9ea24c564ab79d37387995c0c3cc33e17f771b6 Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Wed, 28 May 2025 11:36:44 +0200
Subject: [PATCH] net/mlx5: avoid setting kernel MTU if not needed
[ upstream commit f1f9113a08b202d302ba9448d351c04da48ff46d ]
This patch checks whether the Kernel MTU has the same value
as the requested one at port configuration time, and skip
setting it if it is the same.
Doing this, we can avoid the application to require
NET_ADMIN capability, as in v23.11.
Fixes: 10859ecf09c4 ("net/mlx5: fix MTU configuration")
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_ethdev.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 7708a0b808..f2ae75a8e1 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -648,4 +648,12 @@ mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
if (ret)
return ret;
+
+ if (kern_mtu == mtu) {
+ priv->mtu = mtu;
+ DRV_LOG(DEBUG, "port %u adapter MTU was already set to %u",
+ dev->data->port_id, mtu);
+ return 0;
+ }
+
/* Set kernel interface MTU first. */
ret = mlx5_set_mtu(dev, mtu);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.333097682 +0100
+++ 0096-net-mlx5-avoid-setting-kernel-MTU-if-not-needed.patch 2025-07-18 20:29:11.002907552 +0100
@@ -1 +1 @@
-From f1f9113a08b202d302ba9448d351c04da48ff46d Mon Sep 17 00:00:00 2001
+From a9ea24c564ab79d37387995c0c3cc33e17f771b6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1f9113a08b202d302ba9448d351c04da48ff46d ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index a50320075c..b7df39ace9 100644
+index 7708a0b808..f2ae75a8e1 100644
@@ -26 +27 @@
-@@ -679,4 +679,12 @@ mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
+@@ -648,4 +648,12 @@ mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix hypervisor detection in VLAN workaround' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (94 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: avoid setting kernel MTU if not needed' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix template flow rule identification' " Kevin Traynor
` (78 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/b872565b569019a80ddecdd2df96066d7d1de0f0
Thanks.
Kevin
---
From b872565b569019a80ddecdd2df96066d7d1de0f0 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Fri, 6 Dec 2024 16:26:05 +0200
Subject: [PATCH] net/mlx5: fix hypervisor detection in VLAN workaround
[ upstream commit 8518a4e55980b23dfc7d855aefbef0df02e450e0 ]
The mlx5 PMD provides a specific workaround for the VMware ESXi
hypervisor, enabling on-demand routing configuration to virtual
machines. This workaround activates when the device type is
a Virtual Function and either an ESXi hypervisor is detected
or the hypervisor type is unknown.
For non-x86 architectures the function rte_hypervisor_get()
consistently returns an unknown type, which triggers the workaround
automatically without any actual needs. If there are VLAN support
requirements, this can lead to failures in inserting default control
flows.
Do not trigger the workaround for unknown hypervisor type
in non-x86 environments.
Fixes: dfedf3e3f9d2 ("net/mlx5: add workaround for VLAN in virtual machine")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_vlan_os.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_vlan_os.c b/drivers/net/mlx5/linux/mlx5_vlan_os.c
index 81611a8d3f..353484de3f 100644
--- a/drivers/net/mlx5/linux/mlx5_vlan_os.c
+++ b/drivers/net/mlx5/linux/mlx5_vlan_os.c
@@ -113,14 +113,14 @@ mlx5_vlan_vmwa_init(struct rte_eth_dev *dev, uint32_t ifindex)
hv_type = rte_hypervisor_get();
switch (hv_type) {
+#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_X86_64)
+ /* Always misdetected on ARM archs, let's ignore this */
case RTE_HYPERVISOR_UNKNOWN:
+#endif
case RTE_HYPERVISOR_VMWARE:
- /*
- * The "white list" of configurations
- * to engage the workaround.
- */
+ /* The list of configurations to engage the workaround. */
break;
default:
/*
- * The configuration is not found in the "white list".
+ * The configuration is not found in the list.
* We should not engage the VLAN workaround.
*/
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.366144085 +0100
+++ 0097-net-mlx5-fix-hypervisor-detection-in-VLAN-workaround.patch 2025-07-18 20:29:11.003502450 +0100
@@ -1 +1 @@
-From 8518a4e55980b23dfc7d855aefbef0df02e450e0 Mon Sep 17 00:00:00 2001
+From b872565b569019a80ddecdd2df96066d7d1de0f0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8518a4e55980b23dfc7d855aefbef0df02e450e0 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix template flow rule identification' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (95 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix hypervisor detection in VLAN workaround' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ixgbe/base: fix link status for E610' " Kevin Traynor
` (77 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Junfeng Guo; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/709450b4cbdf30afd4cbe652dc7ed1901dda8b6f
Thanks.
Kevin
---
From 709450b4cbdf30afd4cbe652dc7ed1901dda8b6f Mon Sep 17 00:00:00 2001
From: Junfeng Guo <junfengg@nvidia.com>
Date: Thu, 5 Jun 2025 13:07:34 +0300
Subject: [PATCH] net/mlx5: fix template flow rule identification
[ upstream commit 82e0453609e59d66b0fce9c59ce0380d7bc39e17 ]
Set the flag nt_rule to be FALSE whenever the flow rule is created
through template API. This would ensure that this flow is always
treated as template API flow after mlx5_ipool_malloc without being
zeroing via memset.
Otherwise, some tables or template actions may be still in use for
port init stage when attaching a port for template or non-template
rule, in scenarios where the uninitialized memory nt_rule happens
to contain a TRUE value.
Fixes: 2fda185a8c1c ("net/mlx5: reuse flow fields")
Fixes: 63296851fadb ("net/mlx5: support flow rule update")
Signed-off-by: Junfeng Guo <junfengg@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index a0e7a6ba0b..f60b7b0cc0 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3889,4 +3889,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
goto error;
}
+ flow->nt_rule = false;
rule_acts = flow_hw_get_dr_action_buffer(priv, table, action_template_index, queue);
/*
@@ -4095,5 +4096,5 @@ flow_hw_async_flow_update(struct rte_eth_dev *dev,
aux = mlx5_flow_hw_aux(dev->data->port_id, of);
nf = &aux->upd_flow;
- memset(nf, 0, sizeof(struct rte_flow_hw));
+ nf->nt_rule = false;
rule_acts = flow_hw_get_dr_action_buffer(priv, table, action_template_index, queue);
/*
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.397657882 +0100
+++ 0098-net-mlx5-fix-template-flow-rule-identification.patch 2025-07-18 20:29:11.011907579 +0100
@@ -1 +1 @@
-From 82e0453609e59d66b0fce9c59ce0380d7bc39e17 Mon Sep 17 00:00:00 2001
+From 709450b4cbdf30afd4cbe652dc7ed1901dda8b6f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 82e0453609e59d66b0fce9c59ce0380d7bc39e17 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index e26093522f..af2e7a84a5 100644
+index a0e7a6ba0b..f60b7b0cc0 100644
@@ -30 +31 @@
-@@ -3936,4 +3936,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
+@@ -3889,4 +3889,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
@@ -36 +37 @@
-@@ -4142,5 +4143,5 @@ flow_hw_async_flow_update(struct rte_eth_dev *dev,
+@@ -4095,5 +4096,5 @@ flow_hw_async_flow_update(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe/base: fix link status for E610' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (96 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix template flow rule identification' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/hns3: check requirement for hardware GRO' " Kevin Traynor
` (76 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Jedrzej Jagielski
Cc: Andrzej Wilczynski, Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/63c0f5745a03a784c0f49cf402a7d9a9b6a9cbf7
Thanks.
Kevin
---
From 63c0f5745a03a784c0f49cf402a7d9a9b6a9cbf7 Mon Sep 17 00:00:00 2001
From: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date: Mon, 9 Jun 2025 11:25:35 +0100
Subject: [PATCH] net/ixgbe/base: fix link status for E610
[ upstream commit adbd71030575771813a9a89a72845d259db764c4 ]
E610 adapter no longer uses the VFLINKS register to read PF's link speed
and linkup state. Currently this leads to mismatch between actual link
status and that what VF driver shows to the OS.
Add new mailbox operation to let the VF driver request the PF driver
to provide the actual link data. Update the mailbox api to v1.6.
Incorporate both ways of getting link status within the legacy
ixgbe_check_mac_link_vf() function.
Fixes: c6cb313da739 ("net/ixgbe/base: add link management for E610")
Signed-off-by: Andrzej Wilczynski <andrzejx.wilczynski@intel.com>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ixgbe/base/ixgbe_mbx.h | 4 +
drivers/net/ixgbe/base/ixgbe_vf.c | 126 ++++++++++++++++++++++-------
drivers/net/ixgbe/base/ixgbe_vf.h | 2 +
3 files changed, 105 insertions(+), 27 deletions(-)
diff --git a/drivers/net/ixgbe/base/ixgbe_mbx.h b/drivers/net/ixgbe/base/ixgbe_mbx.h
index 434f7c6a69..e3b4338fb1 100644
--- a/drivers/net/ixgbe/base/ixgbe_mbx.h
+++ b/drivers/net/ixgbe/base/ixgbe_mbx.h
@@ -102,4 +102,5 @@ enum ixgbe_pfvf_api_rev {
ixgbe_mbox_api_14, /* API version 1.4, linux/freebsd VF driver */
ixgbe_mbox_api_15, /* API version 1.5, linux/freebsd VF driver */
+ ixgbe_mbox_api_16, /* API version 1.6, linux/freebsd VF driver */
/* This value should always be last */
ixgbe_mbox_api_unknown, /* indicates that API version is not known */
@@ -126,4 +127,7 @@ enum ixgbe_pfvf_api_rev {
#define IXGBE_VF_GET_LINK_STATE 0x10 /* get vf link state */
+/* mailbox API, version 1.6 VF requests */
+#define IXGBE_VF_GET_PF_LINK_STATE 0x11 /* get status of the link on PF */
+
/* mode choices for IXGBE_VF_UPDATE_XCAST_MODE */
enum ixgbevf_xcast_modes {
diff --git a/drivers/net/ixgbe/base/ixgbe_vf.c b/drivers/net/ixgbe/base/ixgbe_vf.c
index 37556a9300..46a62bb851 100644
--- a/drivers/net/ixgbe/base/ixgbe_vf.c
+++ b/drivers/net/ixgbe/base/ixgbe_vf.c
@@ -410,4 +410,5 @@ s32 ixgbevf_update_xcast_mode(struct ixgbe_hw *hw, int xcast_mode)
case ixgbe_mbox_api_13:
case ixgbe_mbox_api_15:
+ case ixgbe_mbox_api_16:
break;
default:
@@ -456,4 +457,45 @@ s32 ixgbe_get_link_state_vf(struct ixgbe_hw *hw, bool *link_state)
}
+/**
+ * ixgbevf_get_pf_link_state - Get PF's link status
+ * @hw: pointer to the HW structure
+ * @speed - link speed
+ * @link_up - indicate if link is up/down
+ *
+ * Ask PF to provide link_up state and speed of the link.
+ *
+ * Return: IXGBE_ERR_MBX in the case of mailbox error,
+ * IXGBE_ERR_FEATURE_NOT_SUPPORTED if the op is not supported or 0 on success.
+ */
+int ixgbevf_get_pf_link_state(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
+ bool *link_up)
+{
+ u32 msgbuf[3] = {};
+ int err;
+
+ switch (hw->api_version) {
+ case ixgbe_mbox_api_16:
+ break;
+ default:
+ return IXGBE_ERR_FEATURE_NOT_SUPPORTED;
+ }
+
+ msgbuf[0] = IXGBE_VF_GET_PF_LINK_STATE;
+
+ err = ixgbevf_write_msg_read_ack(hw, msgbuf, msgbuf, 6);
+ if (err || (msgbuf[0] & IXGBE_VT_MSGTYPE_FAILURE)) {
+ err = IXGBE_ERR_MBX;
+ *speed = IXGBE_LINK_SPEED_UNKNOWN;
+ /* No need to set @link_up to false as it will be done in
+ * ixgbe_check_mac_link_vf().
+ */
+ } else {
+ *speed = msgbuf[1];
+ *link_up = msgbuf[2];
+ }
+
+ return err;
+}
+
/**
* ixgbe_set_vfta_vf - Set/Unset vlan filter table address
@@ -570,34 +612,23 @@ s32 ixgbe_setup_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed speed,
/**
- * ixgbe_check_mac_link_vf - Get link/speed status
- * @hw: pointer to hardware structure
- * @speed: pointer to link speed
- * @link_up: true is link is up, false otherwise
- * @autoneg_wait_to_complete: true when waiting for completion is needed
+ * ixgbe_read_vflinks - Read VFLINKS register
+ * @hw: pointer to the HW structure
+ * @speed - link speed
+ * @link_up - indicate if link is up/down
*
- * Reads the links register to determine if link is up and the current speed
- **/
-s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
- bool *link_up, bool autoneg_wait_to_complete)
+ * Get linkup status and link speed from the VFLINKS register.
+ */
+static void ixgbe_read_vflinks(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
+ bool *link_up)
{
- struct ixgbe_mbx_info *mbx = &hw->mbx;
struct ixgbe_mac_info *mac = &hw->mac;
- s32 ret_val = IXGBE_SUCCESS;
- u32 in_msg = 0;
u32 links_reg;
- UNREFERENCED_1PARAMETER(autoneg_wait_to_complete);
-
- /* If we were hit with a reset drop the link */
- if (!mbx->ops[0].check_for_rst(hw, 0) || !mbx->timeout)
- mac->get_link_status = true;
-
- if (!mac->get_link_status)
- goto out;
-
/* if link status is down no point in checking to see if pf is up */
links_reg = IXGBE_READ_REG(hw, IXGBE_VFLINKS);
- if (!(links_reg & IXGBE_LINKS_UP))
- goto out;
+ if (!(links_reg & IXGBE_LINKS_UP)) {
+ *link_up = false;
+ return;
+ }
/* for SFP+ modules and DA cables on 82599 it can take up to 500usecs
@@ -611,8 +642,12 @@ s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
links_reg = IXGBE_READ_REG(hw, IXGBE_VFLINKS);
- if (!(links_reg & IXGBE_LINKS_UP))
- goto out;
+ if (!(links_reg & IXGBE_LINKS_UP)) {
+ *link_up = false;
+ return;
+ }
}
}
+ /* We have link at this point */
+ *link_up = true;
switch (links_reg & IXGBE_LINKS_SPEED_82599) {
@@ -629,6 +664,5 @@ s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
case IXGBE_LINKS_SPEED_100_82599:
*speed = IXGBE_LINK_SPEED_100_FULL;
- if (hw->mac.type == ixgbe_mac_X550_vf ||
- hw->mac.type == ixgbe_mac_E610_vf) {
+ if (hw->mac.type == ixgbe_mac_X550_vf) {
if (links_reg & IXGBE_LINKS_SPEED_NON_STD)
*speed = IXGBE_LINK_SPEED_5GB_FULL;
@@ -644,4 +678,41 @@ s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
*speed = IXGBE_LINK_SPEED_UNKNOWN;
}
+}
+
+/**
+ * ixgbe_check_mac_link_vf - Get link/speed status
+ * @hw: pointer to hardware structure
+ * @speed: pointer to link speed
+ * @link_up: true is link is up, false otherwise
+ * @autoneg_wait_to_complete: true when waiting for completion is needed
+ *
+ * Reads the links register to determine if link is up and the current speed
+ */
+s32 ixgbe_check_mac_link_vf(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
+ bool *link_up, bool autoneg_wait_to_complete)
+{
+ struct ixgbe_mbx_info *mbx = &hw->mbx;
+ struct ixgbe_mac_info *mac = &hw->mac;
+ s32 ret_val = IXGBE_SUCCESS;
+ u32 in_msg = 0;
+
+ UNREFERENCED_1PARAMETER(autoneg_wait_to_complete);
+
+ /* If we were hit with a reset drop the link */
+ if (!mbx->ops[0].check_for_rst(hw, 0) || !mbx->timeout)
+ mac->get_link_status = true;
+
+ if (!mac->get_link_status)
+ goto out;
+
+ if (hw->mac.type != ixgbe_mac_E610_vf) {
+ ixgbe_read_vflinks(hw, speed, link_up);
+ if (*link_up == false)
+ goto out;
+ } else {
+ ret_val = ixgbevf_get_pf_link_state(hw, speed, link_up);
+ if (ret_val)
+ goto out;
+ }
/* if the read failed it could just be a mailbox collision, best wait
@@ -743,4 +814,5 @@ int ixgbevf_get_queues(struct ixgbe_hw *hw, unsigned int *num_tcs,
case ixgbe_mbox_api_13:
case ixgbe_mbox_api_15:
+ case ixgbe_mbox_api_16:
break;
default:
diff --git a/drivers/net/ixgbe/base/ixgbe_vf.h b/drivers/net/ixgbe/base/ixgbe_vf.h
index bd10865d57..ca532fae07 100644
--- a/drivers/net/ixgbe/base/ixgbe_vf.h
+++ b/drivers/net/ixgbe/base/ixgbe_vf.h
@@ -114,4 +114,6 @@ int ixgbevf_negotiate_api_version(struct ixgbe_hw *hw, int api);
int ixgbevf_get_queues(struct ixgbe_hw *hw, unsigned int *num_tcs,
unsigned int *default_tc);
+int ixgbevf_get_pf_link_state(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
+ bool *link_up);
#endif /* __IXGBE_VF_H__ */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.439962672 +0100
+++ 0099-net-ixgbe-base-fix-link-status-for-E610.patch 2025-07-18 20:29:11.013907585 +0100
@@ -1 +1 @@
-From adbd71030575771813a9a89a72845d259db764c4 Mon Sep 17 00:00:00 2001
+From 63c0f5745a03a784c0f49cf402a7d9a9b6a9cbf7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit adbd71030575771813a9a89a72845d259db764c4 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -24,3 +25,3 @@
- drivers/net/intel/ixgbe/base/ixgbe_mbx.h | 4 +
- drivers/net/intel/ixgbe/base/ixgbe_vf.c | 126 ++++++++++++++++++-----
- drivers/net/intel/ixgbe/base/ixgbe_vf.h | 2 +
+ drivers/net/ixgbe/base/ixgbe_mbx.h | 4 +
+ drivers/net/ixgbe/base/ixgbe_vf.c | 126 ++++++++++++++++++++++-------
+ drivers/net/ixgbe/base/ixgbe_vf.h | 2 +
@@ -29 +30 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_mbx.h b/drivers/net/intel/ixgbe/base/ixgbe_mbx.h
+diff --git a/drivers/net/ixgbe/base/ixgbe_mbx.h b/drivers/net/ixgbe/base/ixgbe_mbx.h
@@ -31,2 +32,2 @@
---- a/drivers/net/intel/ixgbe/base/ixgbe_mbx.h
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_mbx.h
+--- a/drivers/net/ixgbe/base/ixgbe_mbx.h
++++ b/drivers/net/ixgbe/base/ixgbe_mbx.h
@@ -47 +48 @@
-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
@@ -49,2 +50,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
@@ -221 +222 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_vf.h b/drivers/net/intel/ixgbe/base/ixgbe_vf.h
+diff --git a/drivers/net/ixgbe/base/ixgbe_vf.h b/drivers/net/ixgbe/base/ixgbe_vf.h
@@ -223,2 +224,2 @@
---- a/drivers/net/intel/ixgbe/base/ixgbe_vf.h
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_vf.h
+--- a/drivers/net/ixgbe/base/ixgbe_vf.h
++++ b/drivers/net/ixgbe/base/ixgbe_vf.h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: check requirement for hardware GRO' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (97 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ixgbe/base: fix link status for E610' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/hns3: allow Tx vector when fast free not enabled' " Kevin Traynor
` (75 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/2b7f9c7142618bcf4754835ee1bf569ea42fb82f
Thanks.
Kevin
---
From 2b7f9c7142618bcf4754835ee1bf569ea42fb82f Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Mon, 9 Jun 2025 21:06:49 +0800
Subject: [PATCH] net/hns3: check requirement for hardware GRO
[ upstream commit ae68b5d91c632a1dde839123f27b0317cf094170 ]
The HIP08 platform requires that data address be 64-byte aligned
for the GRO feature.
Most applications already use 64-byte aligned. So a check is added
to avoid using the GRO function when 64-byte aligned is used.
Fixes: d14c995b775a ("net/hns3: check Rx DMA address alignmnent")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_rxtx.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 00a105129d..bfe4c0fa2e 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -277,10 +277,23 @@ static int
hns3_check_rx_dma_addr(struct hns3_hw *hw, uint64_t dma_addr)
{
+ uint64_t rx_offload = hw->data->dev_conf.rxmode.offloads;
uint64_t rem;
rem = dma_addr & (hw->rx_dma_addr_align - 1);
if (rem > 0) {
- hns3_err(hw, "The IO address of the beginning of the mbuf data "
- "must be %u-byte aligned", hw->rx_dma_addr_align);
+ hns3_err(hw,
+ "mbuf DMA address must be %u-byte aligned",
+ hw->rx_dma_addr_align);
+ return -EINVAL;
+ }
+
+ /*
+ * This check is for HIP08 network engine. The GRO function
+ * requires that mbuf DMA address is 64-byte aligned.
+ */
+ rem = dma_addr & (HNS3_RX_DMA_ADDR_ALIGN_128 - 1);
+ if ((rx_offload & RTE_ETH_RX_OFFLOAD_TCP_LRO) && rem > 0) {
+ hns3_err(hw,
+ "GRO requires that mbuf DMA address be 64-byte aligned");
return -EINVAL;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.472660495 +0100
+++ 0100-net-hns3-check-requirement-for-hardware-GRO.patch 2025-07-18 20:29:11.015907591 +0100
@@ -1 +1 @@
-From ae68b5d91c632a1dde839123f27b0317cf094170 Mon Sep 17 00:00:00 2001
+From 2b7f9c7142618bcf4754835ee1bf569ea42fb82f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ae68b5d91c632a1dde839123f27b0317cf094170 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index bde46733b0..f9fde3948a 100644
+index 00a105129d..bfe4c0fa2e 100644
@@ -24 +25 @@
-@@ -282,10 +282,23 @@ static int
+@@ -277,10 +277,23 @@ static int
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: allow Tx vector when fast free not enabled' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (98 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/hns3: check requirement for hardware GRO' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/mlx5: fix dependency detection on Windows' " Kevin Traynor
` (74 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/544e88781a775aa758c769994d19b515b23eae5f
Thanks.
Kevin
---
From 544e88781a775aa758c769994d19b515b23eae5f Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Mon, 9 Jun 2025 21:06:50 +0800
Subject: [PATCH] net/hns3: allow Tx vector when fast free not enabled
[ upstream commit e05cb702ca70aecdf01041274cd6ffc9233a726d ]
Currently, the Tx vector algorithm is only enabled
when tx_offload is RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE.
If no offloads are enabled, then vector algorithm can also be used.
The vector algorithm does not support other transmit offloads.
Fixes: e31f123db06b ("net/hns3: support NEON Tx")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_rxtx_vec.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/hns3/hns3_rxtx_vec.c b/drivers/net/hns3/hns3_rxtx_vec.c
index 9708ec614e..c3d288ea5a 100644
--- a/drivers/net/hns3/hns3_rxtx_vec.c
+++ b/drivers/net/hns3/hns3_rxtx_vec.c
@@ -17,9 +17,9 @@ int
hns3_tx_check_vec_support(struct rte_eth_dev *dev)
{
- struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode;
+ uint64_t tx_offloads = dev->data->dev_conf.txmode.offloads;
struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;
- /* Only support RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE */
- if (txmode->offloads != RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE)
+ /* Only support when Tx offloads is RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE or 0. */
+ if (tx_offloads != RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE && tx_offloads != 0)
return -ENOTSUP;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.506978002 +0100
+++ 0101-net-hns3-allow-Tx-vector-when-fast-free-not-enabled.patch 2025-07-18 20:29:11.016992072 +0100
@@ -1 +1 @@
-From e05cb702ca70aecdf01041274cd6ffc9233a726d Mon Sep 17 00:00:00 2001
+From 544e88781a775aa758c769994d19b515b23eae5f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e05cb702ca70aecdf01041274cd6ffc9233a726d ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index bf37ce51b1..9fb66ea2de 100644
+index 9708ec614e..c3d288ea5a 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/mlx5: fix dependency detection on Windows' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (99 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/hns3: allow Tx vector when fast free not enabled' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix crash in HWS counter pool destroy' " Kevin Traynor
` (73 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: David Marchand; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5ae25db6cad44ce9bb675ba31f143ef7af46b0bd
Thanks.
Kevin
---
From 5ae25db6cad44ce9bb675ba31f143ef7af46b0bd Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 13 Jun 2025 08:50:20 +0200
Subject: [PATCH] common/mlx5: fix dependency detection on Windows
[ upstream commit 2dd1f6656ec9690fbcbd782f03fba5c38b32d9f3 ]
UNH reported a build failure in a env that seems to have partially
installed mlx5 dependencies.
Has header "mlx5devx.h" : YES
drivers\common\mlx5\windows\meson.build:10:0: ERROR: C shared or
static library 'mlx5devx' not found
The actual reason why the header is seen and the library is not, may be
due to a bug in meson itself.
In any case, don't *require* mlx5dev library when testing its presence.
Fixes: 85c51a4ffab8 ("common/mlx5: get Windows dependency from standard variables")
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/common/mlx5/windows/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/common/mlx5/windows/meson.build b/drivers/common/mlx5/windows/meson.build
index f60daed840..c3bd3aac26 100644
--- a/drivers/common/mlx5/windows/meson.build
+++ b/drivers/common/mlx5/windows/meson.build
@@ -8,5 +8,5 @@ if not cc.has_header('mlx5devx.h')
endif
-devxlib = cc.find_library('mlx5devx', required: true)
+devxlib = cc.find_library('mlx5devx', required: false)
if not devxlib.found()
build = false
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.539635841 +0100
+++ 0102-common-mlx5-fix-dependency-detection-on-Windows.patch 2025-07-18 20:29:11.017256320 +0100
@@ -1 +1 @@
-From 2dd1f6656ec9690fbcbd782f03fba5c38b32d9f3 Mon Sep 17 00:00:00 2001
+From 5ae25db6cad44ce9bb675ba31f143ef7af46b0bd Mon Sep 17 00:00:00 2001
@@ -4,0 +5,2 @@
+
+[ upstream commit 2dd1f6656ec9690fbcbd782f03fba5c38b32d9f3 ]
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix crash in HWS counter pool destroy' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (100 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/mlx5: fix dependency detection on Windows' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix access to auxiliary flow data' " Kevin Traynor
` (72 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/36fbed3222ee533bf84abc4007ee3d48caa60f96
Thanks.
Kevin
---
From 36fbed3222ee533bf84abc4007ee3d48caa60f96 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Wed, 25 Jun 2025 12:32:47 +0300
Subject: [PATCH] net/mlx5: fix crash in HWS counter pool destroy
[ upstream commit 0aa0d0e85011116d545318b79e28cb177f5da825 ]
When there is not enough memory, counter pool creation fails.
As a result, the pool is being destroyed.
Since not all pointers were initialized during creation,
Need to check for null pointer in destruction.
Fixes: 13ea6bdcc7ee ("net/mlx5: support counters in cross port shared mode")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index 124c552aec..dda3b61376 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -797,5 +797,5 @@ mlx5_hws_cnt_pool_destroy(struct mlx5_dev_ctx_shared *sh,
rte_spinlock_unlock(&sh->cpool_lock);
if (cpool->cfg.host_cpool == NULL) {
- if (--sh->cnt_svc->refcnt == 0)
+ if (sh->cnt_svc && --sh->cnt_svc->refcnt == 0)
mlx5_hws_cnt_svc_deinit(sh);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.571252639 +0100
+++ 0103-net-mlx5-fix-crash-in-HWS-counter-pool-destroy.patch 2025-07-18 20:29:11.017907597 +0100
@@ -1 +1 @@
-From 0aa0d0e85011116d545318b79e28cb177f5da825 Mon Sep 17 00:00:00 2001
+From 36fbed3222ee533bf84abc4007ee3d48caa60f96 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0aa0d0e85011116d545318b79e28cb177f5da825 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 83db242bf9..fce7a7e815 100644
+index 124c552aec..dda3b61376 100644
@@ -24 +25 @@
-@@ -811,5 +811,5 @@ mlx5_hws_cnt_pool_destroy(struct mlx5_dev_ctx_shared *sh,
+@@ -797,5 +797,5 @@ mlx5_hws_cnt_pool_destroy(struct mlx5_dev_ctx_shared *sh,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix access to auxiliary flow data' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (101 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix crash in HWS counter pool destroy' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/mlx5: fix extraction of auxiliary device name' " Kevin Traynor
` (71 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/dfaef2bbf027ae77412ea60834d66ad4a13d051b
Thanks.
Kevin
---
From dfaef2bbf027ae77412ea60834d66ad4a13d051b Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Wed, 25 Jun 2025 12:43:39 +0300
Subject: [PATCH] net/mlx5: fix access to auxiliary flow data
[ upstream commit 92a5b06c150ec5c28d7fb734d1ea1e7d5b4cb26f ]
The MLX5 PMD keeps non-essential flow data in an auxiliary structure
to reduce flow L1 cache usage.
The auxiliary data location differs in template and non-template flows.
The PMD tried to fetch flow template table from a non-template flow object
and accessed stale memory address.
This change separates the `mlx5_flow_hw_aux()` implementation
for async template and sync non-template flows.
Fixes: 27d171b88031 ("net/mlx5: abstract flow action and enable reconfigure")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index f60b7b0cc0..6781bad9b7 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -130,10 +130,14 @@ mlx5_flow_hw_aux(uint16_t port_id, struct rte_flow_hw *flow)
struct rte_flow_template_table *table = flow->table;
- if (rte_flow_template_table_resizable(port_id, &table->cfg.attr)) {
- size_t offset = sizeof(struct rte_flow_hw) + mlx5dr_rule_get_handle_size();
+ if (!flow->nt_rule) {
+ if (rte_flow_template_table_resizable(port_id, &table->cfg.attr)) {
+ size_t offset = sizeof(struct rte_flow_hw) + mlx5dr_rule_get_handle_size();
- return RTE_PTR_ADD(flow, offset);
+ return RTE_PTR_ADD(flow, offset);
+ } else {
+ return &table->flow_aux[flow->idx - 1];
+ }
} else {
- return ((flow->nt_rule) ? flow->nt2hws->flow_aux : &table->flow_aux[flow->idx - 1]);
+ return flow->nt2hws->flow_aux;
}
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.603789381 +0100
+++ 0104-net-mlx5-fix-access-to-auxiliary-flow-data.patch 2025-07-18 20:29:11.026907625 +0100
@@ -1 +1 @@
-From 92a5b06c150ec5c28d7fb734d1ea1e7d5b4cb26f Mon Sep 17 00:00:00 2001
+From dfaef2bbf027ae77412ea60834d66ad4a13d051b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 92a5b06c150ec5c28d7fb734d1ea1e7d5b4cb26f ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index f7f85effba..a211b8ac52 100644
+index f60b7b0cc0..6781bad9b7 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/mlx5: fix extraction of auxiliary device name' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (102 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix access to auxiliary flow data' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix crash on age query with indirect conntrack' " Kevin Traynor
` (70 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f85e8a3a02cd958581357b0e7162ef070ba7c2aa
Thanks.
Kevin
---
From f85e8a3a02cd958581357b0e7162ef070ba7c2aa Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Sun, 15 Jun 2025 10:41:29 +0300
Subject: [PATCH] common/mlx5: fix extraction of auxiliary device name
[ upstream commit a60378a398fd95e6de69401e8ed06fcc3f4a3929 ]
The PMD reads auxiliary network device name from the Linux sysfs.
The current implementation closed directory context before it copied
a file name from that directory into internal buffer.
The result was uncertain.
This change closes sysfs directory after file name was copied.
Fixes: 777b72a9339c ("common/mlx5: support auxiliary bus")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/common/mlx5/linux/mlx5_common_auxiliary.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/common/mlx5/linux/mlx5_common_auxiliary.c b/drivers/common/mlx5/linux/mlx5_common_auxiliary.c
index 33479ffd68..60ea67049d 100644
--- a/drivers/common/mlx5/linux/mlx5_common_auxiliary.c
+++ b/drivers/common/mlx5/linux/mlx5_common_auxiliary.c
@@ -37,12 +37,15 @@ mlx5_auxiliary_get_child_name(const char *dev, const char *node,
break;
}
- closedir(dir);
if (dent == NULL) {
rte_errno = ENOENT;
- return -rte_errno;
+ goto end;
}
if (rte_strscpy(child, dent->d_name, size) < 0)
- return -rte_errno;
- return 0;
+ goto end;
+ rte_errno = 0;
+
+end:
+ closedir(dir);
+ return -rte_errno;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.647118453 +0100
+++ 0105-common-mlx5-fix-extraction-of-auxiliary-device-name.patch 2025-07-18 20:29:11.027995294 +0100
@@ -1 +1 @@
-From a60378a398fd95e6de69401e8ed06fcc3f4a3929 Mon Sep 17 00:00:00 2001
+From f85e8a3a02cd958581357b0e7162ef070ba7c2aa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a60378a398fd95e6de69401e8ed06fcc3f4a3929 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index b4ea604820..3ee2f4638a 100644
+index 33479ffd68..60ea67049d 100644
@@ -27 +28 @@
-@@ -39,12 +39,15 @@ mlx5_auxiliary_get_child_name(const char *dev, const char *node,
+@@ -37,12 +37,15 @@ mlx5_auxiliary_get_child_name(const char *dev, const char *node,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix crash on age query with indirect conntrack' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (103 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/mlx5: fix extraction of auxiliary device name' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/mlx5: fix WQE size calculation for Tx queue' " Kevin Traynor
` (69 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/af137849d7691165c94a1f96d24edc10e2af9182
Thanks.
Kevin
---
From af137849d7691165c94a1f96d24edc10e2af9182 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Thu, 26 Jun 2025 09:07:02 -0400
Subject: [PATCH] net/mlx5: fix crash on age query with indirect conntrack
[ upstream commit 3bb6e3bf05284f0668e2ac14ce4b90a2909dff99 ]
This patch fixes a segmentation fault that occurs when querying the
AGE action of a flow rule that uses indirect connection tracking (CT).
Background:
AGE and CT indices share a union in the mlx5 flow struct. When using CT
without age, the age index is invalid. Querying AGE in this case leads
to a crash due to reading an invalid pointer.
Solution:
Add a check in `flow_dv_query()` to prevent AGE queries on indirect CT
actions. This is the correct fix rather than null-checking the pool.
Steps to reproduce:
1. Create an indirect CT action:
flow indirect_action 0 create ingress action conntrack / end
2. Create a root rule with jump:
flow create 0 ingress pattern eth / ipv4 / tcp / end actions jump group 3 / end
3. Create a group 3 rule using the indirect action:
flow create 0 group 3 ingress pattern eth / ipv4 / tcp / end actions indirect 0 / jump group 5 / end
4. Create a group 5 rule matching CT state:
flow create 0 group 5 ingress pattern eth / ipv4 / tcp / conntrack is 1 / end actions queue index 5 / end
5. Querying the first rule causes segfault:
flow query 0 1 age
Fixes: 2d084f69aa26 ("net/mlx5: add translation of connection tracking action")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/.mailmap b/.mailmap
index bd43f25315..6a039f1be3 100644
--- a/.mailmap
+++ b/.mailmap
@@ -805,4 +805,5 @@ Kevin Traynor <ktraynor@redhat.com>
Ke Xu <ke1.xu@intel.com>
Ke Zhang <ke1x.zhang@intel.com>
+Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Khoa To <khot@microsoft.com>
Kiran KN <kirankn@juniper.net>
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 9c52b7d25d..9fad6e8095 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -18133,4 +18133,9 @@ flow_dv_query(struct rte_eth_dev *dev,
break;
case RTE_FLOW_ACTION_TYPE_AGE:
+ if (flow->indirect_type == MLX5_INDIRECT_ACTION_TYPE_CT)
+ return rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "age not available");
ret = flow_dv_query_age(dev, flow, data, error);
break;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.690090582 +0100
+++ 0106-net-mlx5-fix-crash-on-age-query-with-indirect-conntr.patch 2025-07-18 20:29:11.040907668 +0100
@@ -1 +1 @@
-From 3bb6e3bf05284f0668e2ac14ce4b90a2909dff99 Mon Sep 17 00:00:00 2001
+From af137849d7691165c94a1f96d24edc10e2af9182 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3bb6e3bf05284f0668e2ac14ce4b90a2909dff99 ]
+
@@ -35 +36,0 @@
-Cc: stable@dpdk.org
@@ -45 +46 @@
-index 8483d96ec5..6126f7e472 100644
+index bd43f25315..6a039f1be3 100644
@@ -48 +49 @@
-@@ -813,4 +813,5 @@ Kevin Traynor <ktraynor@redhat.com>
+@@ -805,4 +805,5 @@ Kevin Traynor <ktraynor@redhat.com>
@@ -55 +56 @@
-index d555a9cdcb..7b9e5018b8 100644
+index 9c52b7d25d..9fad6e8095 100644
@@ -58 +59 @@
-@@ -18147,4 +18147,9 @@ flow_dv_query(struct rte_eth_dev *dev,
+@@ -18133,4 +18133,9 @@ flow_dv_query(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix WQE size calculation for Tx queue' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (104 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix crash on age query with indirect conntrack' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal/x86: fix C++ build' " Kevin Traynor
` (68 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Bing Zhao; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4ca5b4c3e0299a05c111e323f9a190413308cf78
Thanks.
Kevin
---
From 4ca5b4c3e0299a05c111e323f9a190413308cf78 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Fri, 27 Jun 2025 11:25:02 +0300
Subject: [PATCH] net/mlx5: fix WQE size calculation for Tx queue
[ upstream commit 5c0c1a13c34aa57c6e18f9ba852a9b5807c58b72 ]
The txq_calc_wqebb_cnt() should be consistent with the calculation in
the function mlx5_txq_devx_obj_new(). Or when the input descriptor
number is 512, the WQE size will be wrongly considered to be 30 when
no max_inline_data is zero in some cases. The total number of WQE will
be considered as 256 and that is incorrect.
Adjusting the WQE size will solve the wrong calculation when the
calculated WQE size is less than 64B.
Fixes: 38b4b397a57d ("net/mlx5: add Tx configuration and setup")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_txq.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 3e93517323..d0b9576b09 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -709,4 +709,5 @@ txq_calc_wqebb_cnt(struct mlx5_txq_ctrl *txq_ctrl)
MLX5_ESEG_MIN_INLINE_SIZE +
txq_ctrl->max_inline_data;
+ wqe_size = RTE_MAX(wqe_size, MLX5_WQE_SIZE);
return rte_align32pow2(wqe_size * desc) / MLX5_WQE_SIZE;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.735242335 +0100
+++ 0107-net-mlx5-fix-WQE-size-calculation-for-Tx-queue.patch 2025-07-18 20:29:11.041907671 +0100
@@ -1 +1 @@
-From 5c0c1a13c34aa57c6e18f9ba852a9b5807c58b72 Mon Sep 17 00:00:00 2001
+From 4ca5b4c3e0299a05c111e323f9a190413308cf78 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5c0c1a13c34aa57c6e18f9ba852a9b5807c58b72 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 5db12f5c64..8ee8108497 100644
+index 3e93517323..d0b9576b09 100644
@@ -28 +29 @@
-@@ -710,4 +710,5 @@ txq_calc_wqebb_cnt(struct mlx5_txq_ctrl *txq_ctrl)
+@@ -709,4 +709,5 @@ txq_calc_wqebb_cnt(struct mlx5_txq_ctrl *txq_ctrl)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal/x86: fix C++ build' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (105 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/mlx5: fix WQE size calculation for Tx queue' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ixgbe: fix indentation' " Kevin Traynor
` (67 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Edvard Fagerholm; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f2c7ad2a87de7e33270894224f34bc42513a9ad1
Thanks.
Kevin
---
From f2c7ad2a87de7e33270894224f34bc42513a9ad1 Mon Sep 17 00:00:00 2001
From: Edvard Fagerholm <edvard.fagerholm@gmail.com>
Date: Tue, 24 Jun 2025 22:58:10 +0300
Subject: [PATCH] eal/x86: fix C++ build
[ upstream commit 2c6f1f0a847898732c18c8b37821850f1b48aa9d ]
RTE_FORCE_INTRINSICS with a C++ compiler causes rte_atomic.h and
rte_byteorder.h to emit on x86 an extern "C" without a closing
brace.
Fixes: 719834a6849e ("use C linkage where appropriate in headers")
Signed-off-by: Edvard Fagerholm <edvard.fagerholm@gmail.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
.mailmap | 1 +
lib/eal/x86/include/rte_atomic.h | 6 +++---
lib/eal/x86/include/rte_byteorder.h | 9 +++++----
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/.mailmap b/.mailmap
index 6a039f1be3..5c01a6eaa1 100644
--- a/.mailmap
+++ b/.mailmap
@@ -392,4 +392,5 @@ Dzmitry Sautsa <dzmitryx.sautsa@intel.com>
Ed Czeck <ed.czeck@atomicrules.com>
Eduard Serra <eserra@vmware.com>
+Edvard Fagerholm <edvard.fagerholm@gmail.com>
Edward Makarov <makarov@kraftway.ru>
Edwin Brossette <edwin.brossette@6wind.com>
diff --git a/lib/eal/x86/include/rte_atomic.h b/lib/eal/x86/include/rte_atomic.h
index c72c47c83e..e071e4234e 100644
--- a/lib/eal/x86/include/rte_atomic.h
+++ b/lib/eal/x86/include/rte_atomic.h
@@ -283,10 +283,10 @@ static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v)
}
+#endif /* !RTE_FORCE_INTRINSICS */
+
#ifdef __cplusplus
}
#endif
-#endif
-
#ifdef RTE_ARCH_I686
#include "rte_atomic_32.h"
@@ -295,5 +295,5 @@ static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v)
#endif
-#endif
+#endif /* !RTE_TOOLCHAIN_MSVC */
#endif /* _RTE_ATOMIC_X86_H_ */
diff --git a/lib/eal/x86/include/rte_byteorder.h b/lib/eal/x86/include/rte_byteorder.h
index 5a49ffcd50..bcf4a02225 100644
--- a/lib/eal/x86/include/rte_byteorder.h
+++ b/lib/eal/x86/include/rte_byteorder.h
@@ -49,8 +49,4 @@ static inline uint32_t rte_arch_bswap32(uint32_t _x)
}
-#ifdef __cplusplus
-}
-#endif
-
#define rte_bswap16(x) ((uint16_t)(__builtin_constant_p(x) ? \
rte_constant_bswap16(x) : \
@@ -70,4 +66,9 @@ static inline uint32_t rte_arch_bswap32(uint32_t _x)
#include "rte_byteorder_64.h"
#endif
+
+#endif /* !RTE_FORCE_INTRINSICS */
+
+#ifdef __cplusplus
+}
#endif
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.767999496 +0100
+++ 0108-eal-x86-fix-C-build.patch 2025-07-18 20:29:11.043907677 +0100
@@ -1 +1 @@
-From 2c6f1f0a847898732c18c8b37821850f1b48aa9d Mon Sep 17 00:00:00 2001
+From f2c7ad2a87de7e33270894224f34bc42513a9ad1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2c6f1f0a847898732c18c8b37821850f1b48aa9d ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 6126f7e472..c6d72058bb 100644
+index 6a039f1be3..5c01a6eaa1 100644
@@ -25 +26 @@
-@@ -395,4 +395,5 @@ Dzmitry Sautsa <dzmitryx.sautsa@intel.com>
+@@ -392,4 +392,5 @@ Dzmitry Sautsa <dzmitryx.sautsa@intel.com>
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe: fix indentation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (106 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal/x86: fix C++ build' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice: fix querying RSS hash for DCF' " Kevin Traynor
` (66 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/eee8759f1c338c977701c8bce059b9e707b7f327
Thanks.
Kevin
---
From eee8759f1c338c977701c8bce059b9e707b7f327 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 12 Jun 2025 12:11:16 +0100
Subject: [PATCH] net/ixgbe: fix indentation
[ upstream commit 5a7d607748c2d4c59c8a7b4747ade69096846497 ]
There is wrong indentation in `ixgbe_set_tx_function`. Fix it.
Fixes: 46bc9d7513d1 ("ixgbe: fix multi-process support")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ixgbe/ixgbe_rxtx.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
index 5c5601907d..5184372c80 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -2557,6 +2557,7 @@ ixgbe_set_tx_function(struct rte_eth_dev *dev, struct ixgbe_tx_queue *txq)
#endif
dev->tx_pkt_burst = ixgbe_xmit_pkts_vec;
- } else
- dev->tx_pkt_burst = ixgbe_xmit_pkts_simple;
+ } else {
+ dev->tx_pkt_burst = ixgbe_xmit_pkts_simple;
+ }
} else {
PMD_INIT_LOG(DEBUG, "Using full-featured tx code path");
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.803185130 +0100
+++ 0109-net-ixgbe-fix-indentation.patch 2025-07-18 20:29:11.046907686 +0100
@@ -1 +1 @@
-From 5a7d607748c2d4c59c8a7b4747ade69096846497 Mon Sep 17 00:00:00 2001
+From eee8759f1c338c977701c8bce059b9e707b7f327 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5a7d607748c2d4c59c8a7b4747ade69096846497 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -14 +15 @@
- drivers/net/intel/ixgbe/ixgbe_rxtx.c | 5 +++--
+ drivers/net/ixgbe/ixgbe_rxtx.c | 5 +++--
@@ -17,5 +18,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-index f75821029d..8fbb795097 100644
---- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
-@@ -2683,6 +2683,7 @@ ixgbe_set_tx_function(struct rte_eth_dev *dev, struct ci_tx_queue *txq)
+diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
+index 5c5601907d..5184372c80 100644
+--- a/drivers/net/ixgbe/ixgbe_rxtx.c
++++ b/drivers/net/ixgbe/ixgbe_rxtx.c
+@@ -2557,6 +2557,7 @@ ixgbe_set_tx_function(struct rte_eth_dev *dev, struct ixgbe_tx_queue *txq)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice: fix querying RSS hash for DCF' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (107 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ixgbe: fix indentation' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/ice: fix handling empty DCF RSS hash' " Kevin Traynor
` (65 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Mingjin Ye; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a2631c0d90f09f2b3a19d2e7ef8f566fdba56195
Thanks.
Kevin
---
From a2631c0d90f09f2b3a19d2e7ef8f566fdba56195 Mon Sep 17 00:00:00 2001
From: Mingjin Ye <mingjinx.ye@intel.com>
Date: Wed, 18 Jun 2025 07:08:43 +0000
Subject: [PATCH] net/ice: fix querying RSS hash for DCF
[ upstream commit 5c5641ec00d3db04a5c123e86a09a3b4c8c748b9 ]
When getting the rss hash configuration, return the currently configured
rss_hf instead of the default value.
Fixes: c223cadc9e5f ("net/ice: support RSS hash configuration in DCF mode")
Signed-off-by: Mingjin Ye <mingjinx.ye@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_dcf_ethdev.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c
index 91f4943a11..930cf147f6 100644
--- a/drivers/net/ice/ice_dcf_ethdev.c
+++ b/drivers/net/ice/ice_dcf_ethdev.c
@@ -1452,6 +1452,5 @@ ice_dcf_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
return -ENOTSUP;
- /* Just set it to default value now. */
- rss_conf->rss_hf = ICE_RSS_OFFLOAD_ALL;
+ rss_conf->rss_hf = dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
if (!rss_conf->rss_key)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.838435749 +0100
+++ 0110-net-ice-fix-querying-RSS-hash-for-DCF.patch 2025-07-18 20:29:11.047907689 +0100
@@ -1 +1 @@
-From 5c5641ec00d3db04a5c123e86a09a3b4c8c748b9 Mon Sep 17 00:00:00 2001
+From a2631c0d90f09f2b3a19d2e7ef8f566fdba56195 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5c5641ec00d3db04a5c123e86a09a3b4c8c748b9 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -15 +16 @@
- drivers/net/intel/ice/ice_dcf_ethdev.c | 3 +--
+ drivers/net/ice/ice_dcf_ethdev.c | 3 +--
@@ -18,4 +19,4 @@
-diff --git a/drivers/net/intel/ice/ice_dcf_ethdev.c b/drivers/net/intel/ice/ice_dcf_ethdev.c
-index 88d943d432..778722a869 100644
---- a/drivers/net/intel/ice/ice_dcf_ethdev.c
-+++ b/drivers/net/intel/ice/ice_dcf_ethdev.c
+diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c
+index 91f4943a11..930cf147f6 100644
+--- a/drivers/net/ice/ice_dcf_ethdev.c
++++ b/drivers/net/ice/ice_dcf_ethdev.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ice: fix handling empty DCF RSS hash' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (108 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice: fix querying RSS hash for DCF' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'net/iavf: fix VLAN strip setting after enabling filter' " Kevin Traynor
` (64 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Mingjin Ye; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/07aa27430330d72e1427c3781b8dfe731ac028c1
Thanks.
Kevin
---
From 07aa27430330d72e1427c3781b8dfe731ac028c1 Mon Sep 17 00:00:00 2001
From: Mingjin Ye <mingjinx.ye@intel.com>
Date: Wed, 18 Jun 2025 07:08:44 +0000
Subject: [PATCH] net/ice: fix handling empty DCF RSS hash
[ upstream commit a84f23cfb52c0505f87b07e919e1c01ff3e38eb2 ]
The driver does nothing if the rss key is NULL or zero-length during the
rss hash update. Extract the update rss key code from
ice_dcf_dev_rss_hash_update to ice_dcf_set_rss_key and make it
consistent with the pf behaviour, and with other drivers, e.g. i40e.
Fixes: c223cadc9e5f ("net/ice: support RSS hash configuration in DCF mode")
Signed-off-by: Mingjin Ye <mingjinx.ye@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_dcf_ethdev.c | 35 +++++++++++++++++++-------------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c
index 930cf147f6..ef0c607dd1 100644
--- a/drivers/net/ice/ice_dcf_ethdev.c
+++ b/drivers/net/ice/ice_dcf_ethdev.c
@@ -1394,29 +1394,36 @@ ice_dcf_dev_rss_reta_query(struct rte_eth_dev *dev,
static int
-ice_dcf_dev_rss_hash_update(struct rte_eth_dev *dev,
- struct rte_eth_rss_conf *rss_conf)
+ice_dcf_set_rss_key(struct ice_dcf_hw *hw, uint8_t *key, uint8_t key_len)
{
- struct ice_dcf_adapter *adapter = dev->data->dev_private;
- struct ice_dcf_hw *hw = &adapter->real_hw;
- int ret;
-
- if (!(hw->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF))
- return -ENOTSUP;
-
/* HENA setting, it is enabled by default, no change */
- if (!rss_conf->rss_key || rss_conf->rss_key_len == 0) {
+ if (!key || key_len == 0) {
PMD_DRV_LOG(DEBUG, "No key to be configured");
return 0;
- } else if (rss_conf->rss_key_len != hw->vf_res->rss_key_size) {
+ } else if (key_len != hw->vf_res->rss_key_size) {
PMD_DRV_LOG(ERR, "The size of hash key configured "
"(%d) doesn't match the size of hardware can "
- "support (%d)", rss_conf->rss_key_len,
+ "support (%d)", key_len,
hw->vf_res->rss_key_size);
return -EINVAL;
}
- rte_memcpy(hw->rss_key, rss_conf->rss_key, rss_conf->rss_key_len);
+ rte_memcpy(hw->rss_key, key, key_len);
- ret = ice_dcf_configure_rss_key(hw);
+ return ice_dcf_configure_rss_key(hw);
+}
+
+static int
+ice_dcf_dev_rss_hash_update(struct rte_eth_dev *dev,
+ struct rte_eth_rss_conf *rss_conf)
+{
+ struct ice_dcf_adapter *adapter = dev->data->dev_private;
+ struct ice_dcf_hw *hw = &adapter->real_hw;
+ int ret;
+
+ if (!(hw->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RSS_PF))
+ return -ENOTSUP;
+
+ /* set hash key */
+ ret = ice_dcf_set_rss_key(hw, rss_conf->rss_key, rss_conf->rss_key_len);
if (ret)
return ret;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.871081540 +0100
+++ 0111-net-ice-fix-handling-empty-DCF-RSS-hash.patch 2025-07-18 20:29:11.048907693 +0100
@@ -1 +1 @@
-From a84f23cfb52c0505f87b07e919e1c01ff3e38eb2 Mon Sep 17 00:00:00 2001
+From 07aa27430330d72e1427c3781b8dfe731ac028c1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a84f23cfb52c0505f87b07e919e1c01ff3e38eb2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_dcf_ethdev.c | 35 +++++++++++++++-----------
+ drivers/net/ice/ice_dcf_ethdev.c | 35 +++++++++++++++++++-------------
@@ -20,4 +21,4 @@
-diff --git a/drivers/net/intel/ice/ice_dcf_ethdev.c b/drivers/net/intel/ice/ice_dcf_ethdev.c
-index 778722a869..499062be40 100644
---- a/drivers/net/intel/ice/ice_dcf_ethdev.c
-+++ b/drivers/net/intel/ice/ice_dcf_ethdev.c
+diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c
+index 930cf147f6..ef0c607dd1 100644
+--- a/drivers/net/ice/ice_dcf_ethdev.c
++++ b/drivers/net/ice/ice_dcf_ethdev.c
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/iavf: fix VLAN strip setting after enabling filter' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (109 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/ice: fix handling empty DCF RSS hash' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'vhost: search virtqueues driver data in read-only area' " Kevin Traynor
` (63 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Amiya Ranjan Mohakud; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/856e6a751b36cde62a2f1c766027985597046529
Thanks.
Kevin
---
From 856e6a751b36cde62a2f1c766027985597046529 Mon Sep 17 00:00:00 2001
From: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Date: Mon, 23 Jun 2025 23:41:36 +0530
Subject: [PATCH] net/iavf: fix VLAN strip setting after enabling filter
[ upstream commit 3bfad066f9b4764981c9ad90a750fa6f1afcf15a ]
For i40e kernel drivers which support either vlan(v1) or vlan(v2)
VIRTCHNL OP, it will set strip on when setting filter on.
But DPDK side will not change strip flag.
To be consistent with DPDL side, explicitly disable strip again.
Bugzilla ID: 1725
Fixes: e25c7ed114b2 ("net/iavf: fix VLAN offload strip flag")
Signed-off-by: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Reviewed-by: Ciara Loftus <ciara.loftus@intel.com>
---
.mailmap | 1 +
drivers/net/iavf/iavf_ethdev.c | 68 +++++++++++++++++++---------------
2 files changed, 40 insertions(+), 29 deletions(-)
diff --git a/.mailmap b/.mailmap
index 5c01a6eaa1..c2b4d45128 100644
--- a/.mailmap
+++ b/.mailmap
@@ -89,4 +89,5 @@ Amit Bernstein <amitbern@amazon.com>
Amit Gupta <agupta3@marvell.com>
Amit Prakash Shukla <amitprakashs@marvell.com>
+Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Amr Mokhtar <amr.mokhtar@intel.com>
Amruta Zende <amruta.zende@intel.com>
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 2ea84cef6d..3dfccb9969 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1378,38 +1378,19 @@ iavf_dev_del_mac_addr(struct rte_eth_dev *dev, uint32_t index)
static int
-iavf_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
+iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
{
- struct iavf_adapter *adapter =
- IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
- struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
- struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
- int err;
-
- if (adapter->closed)
- return -EIO;
-
- if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN_V2) {
- err = iavf_add_del_vlan_v2(adapter, vlan_id, on);
- if (err)
- return -EIO;
- return 0;
- }
-
- if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN))
- return -ENOTSUP;
-
- err = iavf_add_del_vlan(adapter, vlan_id, on);
- if (err)
- return -EIO;
-
- /* For i40e kernel driver which only supports vlan(v1) VIRTCHNL OP,
+ /* For i40e kernel drivers which supports both vlan(v1 & v2) VIRTCHNL OP,
* it will set strip on when setting filter on but dpdk side will not
- * change strip flag. To be consistent with dpdk side, disable strip
- * again.
+ * change strip flag. To be consistent with dpdk side, explicitly disable
+ * strip again.
*
- * For i40e kernel driver which supports vlan v2, dpdk will invoke vlan v2
- * related function, so it won't go through here.
*/
+ struct iavf_adapter *adapter =
+ IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+ struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
+ int err;
+
if (adapter->hw.mac.type == IAVF_MAC_XL710 ||
+ adapter->hw.mac.type == IAVF_MAC_VF ||
adapter->hw.mac.type == IAVF_MAC_X722_VF) {
if (on && !(dev_conf->rxmode.offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP)) {
@@ -1422,4 +1403,33 @@ iavf_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
}
+static int
+iavf_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
+{
+ struct iavf_adapter *adapter =
+ IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+ struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
+ int err;
+
+ if (adapter->closed)
+ return -EIO;
+
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN_V2) {
+ err = iavf_add_del_vlan_v2(adapter, vlan_id, on);
+ if (err)
+ return -EIO;
+
+ return iavf_disable_vlan_strip_ex(dev, on);
+ }
+
+ if (!(vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN))
+ return -ENOTSUP;
+
+ err = iavf_add_del_vlan(adapter, vlan_id, on);
+ if (err)
+ return -EIO;
+
+ return iavf_disable_vlan_strip_ex(dev, on);
+}
+
static void
iavf_iterate_vlan_filters_v2(struct rte_eth_dev *dev, bool enable)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.904024680 +0100
+++ 0112-net-iavf-fix-VLAN-strip-setting-after-enabling-filte.patch 2025-07-18 20:29:11.052907705 +0100
@@ -1 +1 @@
-From 3bfad066f9b4764981c9ad90a750fa6f1afcf15a Mon Sep 17 00:00:00 2001
+From 856e6a751b36cde62a2f1c766027985597046529 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3bfad066f9b4764981c9ad90a750fa6f1afcf15a ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -18,2 +19,2 @@
- .mailmap | 1 +
- drivers/net/intel/iavf/iavf_ethdev.c | 68 ++++++++++++++++------------
+ .mailmap | 1 +
+ drivers/net/iavf/iavf_ethdev.c | 68 +++++++++++++++++++---------------
@@ -23 +24 @@
-index c6d72058bb..1b238970fb 100644
+index 5c01a6eaa1..c2b4d45128 100644
@@ -32,5 +33,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index 02649c19b2..c33fdd9069 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
-@@ -1379,38 +1379,19 @@ iavf_dev_del_mac_addr(struct rte_eth_dev *dev, uint32_t index)
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 2ea84cef6d..3dfccb9969 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
+@@ -1378,38 +1378,19 @@ iavf_dev_del_mac_addr(struct rte_eth_dev *dev, uint32_t index)
@@ -85 +86 @@
-@@ -1423,4 +1404,33 @@ iavf_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
+@@ -1422,4 +1403,33 @@ iavf_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'vhost: search virtqueues driver data in read-only area' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (110 preceding siblings ...)
2025-07-18 19:30 ` patch 'net/iavf: fix VLAN strip setting after enabling filter' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'vhost: fix net control virtqueue used length' " Kevin Traynor
` (62 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Eugenio Pérez; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a9dd00834294c645f287c18bda2ce89af0c7069e
Thanks.
Kevin
---
From a9dd00834294c645f287c18bda2ce89af0c7069e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>
Date: Thu, 5 Jun 2025 13:35:51 +0200
Subject: [PATCH] vhost: search virtqueues driver data in read-only area
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3bd0c97b56c8e3c198d604871f35c125afdc4dc4 ]
The virtqueues driver areas are read-only for the device.
While they are exposed as Read/Write to Vhost-user and
regular VDUSE backends, they are only exposed as Read-only
when the control Virtqueue is shadowed by QEMU with VDUSE
backend.
This patch makes the backend to request these areas as
Read-only, so that it can be accessed in all the
configurations.
Fixes: eefac9536a90 ("vhost: postpone device creation until rings are mapped")
Fixes: 2d1541e2b6b3 ("vhost: add vring address setup for packed queues")
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/vhost.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c
index c41c29ca57..71bde74c34 100644
--- a/lib/vhost/vhost.c
+++ b/lib/vhost/vhost.c
@@ -497,5 +497,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
vq->desc = (struct vring_desc *)(uintptr_t)vhost_iova_to_vva(dev, vq,
vq->ring_addrs.desc_user_addr,
- &size, VHOST_ACCESS_RW);
+ &size, VHOST_ACCESS_RO);
if (!vq->desc || size != req_size)
return -1;
@@ -508,5 +508,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
vq->avail = (struct vring_avail *)(uintptr_t)vhost_iova_to_vva(dev, vq,
vq->ring_addrs.avail_user_addr,
- &size, VHOST_ACCESS_RW);
+ &size, VHOST_ACCESS_RO);
if (!vq->avail || size != req_size)
return -1;
@@ -544,5 +544,5 @@ vring_translate_packed(struct virtio_net *dev, struct vhost_virtqueue *vq)
vq->driver_event = (struct vring_packed_desc_event *)(uintptr_t)
vhost_iova_to_vva(dev, vq, vq->ring_addrs.avail_user_addr,
- &size, VHOST_ACCESS_RW);
+ &size, VHOST_ACCESS_RO);
if (!vq->driver_event || size != req_size)
return -1;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.952593429 +0100
+++ 0113-vhost-search-virtqueues-driver-data-in-read-only-are.patch 2025-07-18 20:29:11.053907708 +0100
@@ -1 +1 @@
-From 3bd0c97b56c8e3c198d604871f35c125afdc4dc4 Mon Sep 17 00:00:00 2001
+From a9dd00834294c645f287c18bda2ce89af0c7069e Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3bd0c97b56c8e3c198d604871f35c125afdc4dc4 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -30 +31 @@
-index 0353a04dc8..a2e3e2635d 100644
+index c41c29ca57..71bde74c34 100644
@@ -33 +34 @@
-@@ -498,5 +498,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
+@@ -497,5 +497,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
@@ -40 +41 @@
-@@ -509,5 +509,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
+@@ -508,5 +508,5 @@ vring_translate_split(struct virtio_net *dev, struct vhost_virtqueue *vq)
@@ -47 +48 @@
-@@ -545,5 +545,5 @@ vring_translate_packed(struct virtio_net *dev, struct vhost_virtqueue *vq)
+@@ -544,5 +544,5 @@ vring_translate_packed(struct virtio_net *dev, struct vhost_virtqueue *vq)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'vhost: fix net control virtqueue used length' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (111 preceding siblings ...)
2025-07-18 19:30 ` patch 'vhost: search virtqueues driver data in read-only area' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'eal/unix: fix log message for madvise failure' " Kevin Traynor
` (61 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Eugenio Pérez; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/d27ea2d70ec65624846680f74c7f9cc981265b9a
Thanks.
Kevin
---
From d27ea2d70ec65624846680f74c7f9cc981265b9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>
Date: Thu, 5 Jun 2025 13:35:34 +0200
Subject: [PATCH] vhost: fix net control virtqueue used length
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 69244dbc485d72ecf25d561ed085ecece69f6f33 ]
By the standard this is the number of bytes written.
Fixes: 474f4d7840ad ("vhost: add control virtqueue")
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/virtio_net_ctrl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/vhost/virtio_net_ctrl.c b/lib/vhost/virtio_net_ctrl.c
index 5d411fc248..61c4e54421 100644
--- a/lib/vhost/virtio_net_ctrl.c
+++ b/lib/vhost/virtio_net_ctrl.c
@@ -230,5 +230,5 @@ virtio_net_ctrl_push(struct virtio_net *dev, struct virtio_net_ctrl_elem *ctrl_e
used_elem = &cvq->used->ring[cvq->last_used_idx & (cvq->size - 1)];
used_elem->id = ctrl_elem->head_idx;
- used_elem->len = ctrl_elem->n_descs;
+ used_elem->len = sizeof(*ctrl_elem->desc_ack);
cvq->last_used_idx++;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:14.988538774 +0100
+++ 0114-vhost-fix-net-control-virtqueue-used-length.patch 2025-07-18 20:29:11.054907711 +0100
@@ -1 +1 @@
-From 69244dbc485d72ecf25d561ed085ecece69f6f33 Mon Sep 17 00:00:00 2001
+From d27ea2d70ec65624846680f74c7f9cc981265b9a Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 69244dbc485d72ecf25d561ed085ecece69f6f33 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 63c0a06b4f..603a8db728 100644
+index 5d411fc248..61c4e54421 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eal/unix: fix log message for madvise failure' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (112 preceding siblings ...)
2025-07-18 19:30 ` patch 'vhost: fix net control virtqueue used length' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'buildtools/test: scan muti-line registrations' " Kevin Traynor
` (60 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Morten Brørup; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9fc1a3fb2e5bd0a21d2e665cc113e93f9bf2317f
Thanks.
Kevin
---
From 9fc1a3fb2e5bd0a21d2e665cc113e93f9bf2317f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20Br=C3=B8rup?= <mb@smartsharesystems.com>
Date: Tue, 24 Jun 2025 08:03:31 +0000
Subject: [PATCH] eal/unix: fix log message for madvise failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 58d5d5e8269055b6bb11b18fb5897fee3fa73363 ]
In eal_mem_set_dump(), when madvise() failed, an incorrect reason was
logged.
Fixes: c4b89ecb64ea ("eal: introduce memory management wrappers")
Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/unix/eal_unix_memory.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/eal/unix/eal_unix_memory.c b/lib/eal/unix/eal_unix_memory.c
index 97969a401b..4fd066a290 100644
--- a/lib/eal/unix/eal_unix_memory.c
+++ b/lib/eal/unix/eal_unix_memory.c
@@ -85,5 +85,5 @@ eal_mem_set_dump(void *virt, size_t size, bool dump)
if (ret) {
EAL_LOG(DEBUG, "madvise(%p, %#zx, %d) failed: %s",
- virt, size, flags, strerror(rte_errno));
+ virt, size, flags, strerror(errno));
rte_errno = errno;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.022855096 +0100
+++ 0115-eal-unix-fix-log-message-for-madvise-failure.patch 2025-07-18 20:29:11.055639385 +0100
@@ -1 +1 @@
-From 58d5d5e8269055b6bb11b18fb5897fee3fa73363 Mon Sep 17 00:00:00 2001
+From 9fc1a3fb2e5bd0a21d2e665cc113e93f9bf2317f Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 58d5d5e8269055b6bb11b18fb5897fee3fa73363 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 61e914b8db..650151facb 100644
+index 97969a401b..4fd066a290 100644
@@ -25 +26 @@
-@@ -90,5 +90,5 @@ eal_mem_set_dump(void *virt, size_t size, bool dump)
+@@ -85,5 +85,5 @@ eal_mem_set_dump(void *virt, size_t size, bool dump)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'buildtools/test: scan muti-line registrations' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (113 preceding siblings ...)
2025-07-18 19:30 ` patch 'eal/unix: fix log message for madvise failure' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/cnxk: fix includes' " Kevin Traynor
` (59 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Marat Khalili; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/2e783994260f5efde0d19ebc383bb16357698cef
Thanks.
Kevin
---
From 2e783994260f5efde0d19ebc383bb16357698cef Mon Sep 17 00:00:00 2001
From: Marat Khalili <marat.khalili@huawei.com>
Date: Wed, 18 Jun 2025 13:39:46 +0100
Subject: [PATCH] buildtools/test: scan muti-line registrations
[ upstream commit 778688b445e1d42e2e30cca29c0301dc94f32af5 ]
Test list is currently generated by scanning all files for macros
starting with `REGISTER_` and ending with `_TEST`. Unfortunately, this
was done line-by-line, and macros split into several lines were silently
ignored resulting in tests being excluded from test suites without any
warning.
Make regular expression multiline, capturing everything until the
closing parenthesis. (There should be no nested parentheses due to the
nature of the arguments these macros accept.)
The rest of the functionality stays the same. The result was manually
compared to be identical to the previous version.
Fixes: 0aeaf75df879 ("test: define unit tests suites based on test types")
Signed-off-by: Marat Khalili <marat.khalili@huawei.com>
---
buildtools/get-test-suites.py | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/buildtools/get-test-suites.py b/buildtools/get-test-suites.py
index fd22d25f36..c3a99a862e 100644
--- a/buildtools/get-test-suites.py
+++ b/buildtools/get-test-suites.py
@@ -7,8 +7,10 @@ import re
input_list = sys.argv[1:]
-test_def_regex = re.compile(r"REGISTER_([A-Z]+)_TEST\s*\(\s*([a-z0-9_]+)")
+test_def_regex = re.compile(
+ r"^\s*REGISTER_([A-Z]+)_TEST\s*\(\s*([a-z0-9_]+)[^)]*\)", re.MULTILINE)
test_suites = {}
# track tests not in any test suite.
-non_suite_regex = re.compile(r"REGISTER_TEST_COMMAND\s*\(\s*([a-z0-9_]+)")
+non_suite_regex = re.compile(
+ r"^\s*REGISTER_TEST_COMMAND\s*\(\s*([a-z0-9_]+)[^)]*\)", re.MULTILINE)
non_suite_tests = []
@@ -21,10 +23,9 @@ def get_fast_test_params(test_name, ln):
for fname in input_list:
with open(fname, "r", encoding="utf-8") as f:
- contents = [ln.strip() for ln in f.readlines()]
- test_lines = [ln for ln in contents if test_def_regex.match(ln)]
- non_suite_tests.extend([non_suite_regex.match(ln).group(1)
- for ln in contents if non_suite_regex.match(ln)])
- for ln in test_lines:
- (test_suite, test_name) = test_def_regex.match(ln).group(1, 2)
+ contents = f.read()
+ non_suite_tests.extend(
+ match.group(1) for match in non_suite_regex.finditer(contents))
+ for match in test_def_regex.finditer(contents):
+ (test_suite, test_name) = match.group(1, 2)
suite_name = f"{test_suite.lower()}-tests"
if suite_name in test_suites:
@@ -33,5 +34,6 @@ for fname in input_list:
test_suites[suite_name] = [test_name]
if suite_name == "fast-tests":
- test_suites["fast-tests"][-1] += get_fast_test_params(test_name, ln)
+ test_suites["fast-tests"][-1] += get_fast_test_params(
+ test_name, match.group(0))
for suite in test_suites.keys():
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.058408970 +0100
+++ 0116-buildtools-test-scan-muti-line-registrations.patch 2025-07-18 20:29:11.055907714 +0100
@@ -1 +1 @@
-From 778688b445e1d42e2e30cca29c0301dc94f32af5 Mon Sep 17 00:00:00 2001
+From 2e783994260f5efde0d19ebc383bb16357698cef Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 778688b445e1d42e2e30cca29c0301dc94f32af5 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/cnxk: fix includes' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (114 preceding siblings ...)
2025-07-18 19:30 ` patch 'buildtools/test: scan muti-line registrations' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'common/cnxk: fix qsize in CPT iq enable' " Kevin Traynor
` (58 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Tejasree Kondoj; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/9dcdadfcb737b275bdceda566c6f72f06199c946
Thanks.
Kevin
---
From 9dcdadfcb737b275bdceda566c6f72f06199c946 Mon Sep 17 00:00:00 2001
From: Tejasree Kondoj <ktejasree@marvell.com>
Date: Mon, 9 Jun 2025 16:10:32 +0530
Subject: [PATCH] crypto/cnxk: fix includes
[ upstream commit 09988bf334a18751f9b5ead9272f2b1ff2ff6866 ]
Fixing compilation failure by including
required headers.
Fixes: 26bb5c4de63e ("crypto/cnxk: add CPT raw submission PMD API")
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
---
drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
index 02278605a2..46861ab2cf 100644
--- a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
+++ b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
@@ -14,4 +14,7 @@
#include <stdint.h>
+#include <rte_crypto.h>
+#include <rte_security.h>
+
/* Forward declarations */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.092575506 +0100
+++ 0117-crypto-cnxk-fix-includes.patch 2025-07-18 20:29:11.056907717 +0100
@@ -1 +1 @@
-From 09988bf334a18751f9b5ead9272f2b1ff2ff6866 Mon Sep 17 00:00:00 2001
+From 9dcdadfcb737b275bdceda566c6f72f06199c946 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 09988bf334a18751f9b5ead9272f2b1ff2ff6866 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'common/cnxk: fix qsize in CPT iq enable' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (115 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/cnxk: fix includes' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' " Kevin Traynor
` (57 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/437fb19508efd7a1607fb3c8cf104b1b9cede04b
Thanks.
Kevin
---
From 437fb19508efd7a1607fb3c8cf104b1b9cede04b Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Mon, 9 Jun 2025 16:10:37 +0530
Subject: [PATCH] common/cnxk: fix qsize in CPT iq enable
[ upstream commit 8c60a3ff2367e4c1189fac431ccb046107b91357 ]
Reconfigure qsize in each CPT iq enable call.
Fixes: 3bf878395591 ("common/cnxk: move instruction queue enable to ROC")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
---
drivers/common/cnxk/roc_cpt.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/common/cnxk/roc_cpt.c b/drivers/common/cnxk/roc_cpt.c
index 90433e2390..d0ea254e07 100644
--- a/drivers/common/cnxk/roc_cpt.c
+++ b/drivers/common/cnxk/roc_cpt.c
@@ -1122,7 +1122,12 @@ void
roc_cpt_iq_enable(struct roc_cpt_lf *lf)
{
+ union cpt_lf_q_size lf_q_size;
union cpt_lf_inprog lf_inprog;
union cpt_lf_ctl lf_ctl;
+ /* Reconfigure the QSIZE register to ensure NQ_PTR and DQ_PTR are reset */
+ lf_q_size.u = plt_read64(lf->rbase + CPT_LF_Q_SIZE);
+ plt_write64(lf_q_size.u, lf->rbase + CPT_LF_Q_SIZE);
+
/* Disable command queue */
roc_cpt_iq_disable(lf);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.126705105 +0100
+++ 0118-common-cnxk-fix-qsize-in-CPT-iq-enable.patch 2025-07-18 20:29:11.057907720 +0100
@@ -1 +1 @@
-From 8c60a3ff2367e4c1189fac431ccb046107b91357 Mon Sep 17 00:00:00 2001
+From 437fb19508efd7a1607fb3c8cf104b1b9cede04b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8c60a3ff2367e4c1189fac431ccb046107b91357 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index b4bf0ccd64..d1ba2b8858 100644
+index 90433e2390..d0ea254e07 100644
@@ -20 +21 @@
-@@ -1126,7 +1126,12 @@ void
+@@ -1122,7 +1122,12 @@ void
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (116 preceding siblings ...)
2025-07-18 19:30 ` patch 'common/cnxk: fix qsize in CPT iq enable' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'examples/ipsec-secgw: fix crash with IPv6' " Kevin Traynor
` (56 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/18094203969a14dca33e43ac8468ba73a0b52e5f
Thanks.
Kevin
---
From 18094203969a14dca33e43ac8468ba73a0b52e5f Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Thu, 12 Jun 2025 10:14:14 +0000
Subject: [PATCH] crypto/qat: fix out-of-place chain/cipher/auth headers
[ upstream commit 068acf11cec0597735c9d82c8f4972251c736717 ]
Extend the original fix to gen3 and gen4 code.
Fixes: 317d05f3721c ("crypto/qat: fix out-of-place chain/cipher/auth headers")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c | 13 ++++++++-----
drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c | 13 ++++++++-----
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
index af664fb9b9..e677fde393 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
@@ -645,4 +645,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ int error = 0;
req = (struct icp_qat_fw_la_bulk_req *)(
@@ -651,8 +652,10 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ data_len = qat_reqs_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], ofs);
+ /* In oop there is no offset, src/dst addresses are moved
+ * to avoid overwriting the dst header
+ */
+ ofs.ofs.cipher.head = 0;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -662,5 +665,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0) || error)
break;
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
index 6a5d6e78b9..638da1a173 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
@@ -419,4 +419,5 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
struct qat_sym_op_cookie *cookie =
qp->op_cookies[tail >> tx_queue->trailz];
+ int error = 0;
req = (struct icp_qat_fw_la_bulk_req *)(
@@ -425,8 +426,10 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
if (vec->dest_sgl) {
- data_len = qat_sym_build_req_set_data(req,
- user_data[i], cookie,
- vec->src_sgl[i].vec, vec->src_sgl[i].num,
- vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+ data_len = qat_reqs_mid_set(&error, req, cookie, user_data[i],
+ &vec->src_sgl[i], &vec->dest_sgl[i], ofs);
+ /* In oop there is no offset, src/dst addresses are moved
+ * to avoid overwriting the dst header
+ */
+ ofs.ofs.cipher.head = 0;
} else {
data_len = qat_sym_build_req_set_data(req,
@@ -436,5 +439,5 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
}
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0) || error)
break;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.161866260 +0100
+++ 0119-crypto-qat-fix-out-of-place-chain-cipher-auth-header.patch 2025-07-18 20:29:11.058907723 +0100
@@ -1 +1 @@
-From 068acf11cec0597735c9d82c8f4972251c736717 Mon Sep 17 00:00:00 2001
+From 18094203969a14dca33e43ac8468ba73a0b52e5f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 068acf11cec0597735c9d82c8f4972251c736717 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 478e766b97..428430882d 100644
+index af664fb9b9..e677fde393 100644
@@ -22 +23 @@
-@@ -644,4 +644,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -645,4 +645,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -28 +29 @@
-@@ -650,8 +651,10 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -651,8 +652,10 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -43 +44 @@
-@@ -661,5 +664,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -662,5 +665,5 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'examples/ipsec-secgw: fix crash with IPv6' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (117 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/qat: fix out-of-place chain/cipher/auth headers' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'examples/ipsec-secgw: fix crash in event vector mode' " Kevin Traynor
` (55 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Rakesh Kudurumalla; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a9eabc9d05e721bef57dfe08a160dd5de37c262b
Thanks.
Kevin
---
From a9eabc9d05e721bef57dfe08a160dd5de37c262b Mon Sep 17 00:00:00 2001
From: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Date: Thu, 27 Mar 2025 12:33:00 +0530
Subject: [PATCH] examples/ipsec-secgw: fix crash with IPv6
[ upstream commit d03869e8e9c7c46bf7637d221ca6921516764109 ]
While running ipsec-secgw application if IPv6 rules are not
configured in IPsec configuration, LPM look up fails and
destination port is updated as BAD_PORT. During process_packet
ethernet_hdr is updated resulting in crash due to out of bound.
This patch fixes the same.
Fixes: 6eb3ba03995c ("examples/ipsec-secgw: support poll mode NEON LPM lookup")
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
---
examples/ipsec-secgw/ipsec_neon.h | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/examples/ipsec-secgw/ipsec_neon.h b/examples/ipsec-secgw/ipsec_neon.h
index 8b93b4b52e..fc04000336 100644
--- a/examples/ipsec-secgw/ipsec_neon.h
+++ b/examples/ipsec-secgw/ipsec_neon.h
@@ -24,4 +24,5 @@ processx4_step3(struct rte_mbuf *pkts[FWDSTEP], uint16_t dst_port[FWDSTEP],
uint32_t *p[FWDSTEP];
struct rte_mbuf *pkt;
+ uint16_t port;
uint32_t val;
uint8_t i;
@@ -35,5 +36,6 @@ processx4_step3(struct rte_mbuf *pkts[FWDSTEP], uint16_t dst_port[FWDSTEP],
p[i] = rte_pktmbuf_mtod(pkt, uint32_t *);
- ve[i] = vreinterpretq_u32_s32(val_eth[dst_port[i]]);
+ port = (dst_port[i] == BAD_PORT) ? 0 : dst_port[i];
+ ve[i] = vreinterpretq_u32_s32(val_eth[port]);
te[i] = vld1q_u32(p[i]);
@@ -77,4 +79,5 @@ process_packet(struct rte_mbuf *pkt, uint16_t *dst_port, uint64_t tx_offloads,
struct rte_ether_hdr *eth_hdr;
uint32x4_t te, ve;
+ uint16_t port;
uint32_t val;
@@ -86,5 +89,6 @@ process_packet(struct rte_mbuf *pkt, uint16_t *dst_port, uint64_t tx_offloads,
te = vld1q_u32((uint32_t *)eth_hdr);
- ve = vreinterpretq_u32_s32(val_eth[dst_port[0]]);
+ port = (dst_port[0] == BAD_PORT) ? 0 : dst_port[0];
+ ve = vreinterpretq_u32_s32(val_eth[port]);
val = vgetq_lane_u32(te, 3);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.196591821 +0100
+++ 0120-examples-ipsec-secgw-fix-crash-with-IPv6.patch 2025-07-18 20:29:11.060020069 +0100
@@ -1 +1 @@
-From d03869e8e9c7c46bf7637d221ca6921516764109 Mon Sep 17 00:00:00 2001
+From a9eabc9d05e721bef57dfe08a160dd5de37c262b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d03869e8e9c7c46bf7637d221ca6921516764109 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'examples/ipsec-secgw: fix crash in event vector mode' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (118 preceding siblings ...)
2025-07-18 19:30 ` patch 'examples/ipsec-secgw: fix crash with IPv6' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'test/crypto: fix auth and cipher case IV length' " Kevin Traynor
` (54 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Rakesh Kudurumalla; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e7a0239da2a9ab36776394cae04b3f213649d0b8
Thanks.
Kevin
---
From e7a0239da2a9ab36776394cae04b3f213649d0b8 Mon Sep 17 00:00:00 2001
From: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Date: Wed, 18 Jun 2025 14:00:06 +0530
Subject: [PATCH] examples/ipsec-secgw: fix crash in event vector mode
[ upstream commit 811383ef109d8dae04c0681b84de09c51f153543 ]
Launching ipsec-secgw application in event vector mode
after traffic has started results in segfault because
we are receiving few IPSec packet and application is trying
to decrypt IPsec packets using lookaside protocol.
This contradicts inline event mode.This patch fixes the same
by freeing IPsec packets and processing only plain packets.
Fixes: 1d5078c6cf19 ("examples/ipsec-secgw: support event vector in lookaside mode")
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
examples/ipsec-secgw/ipsec_worker.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/examples/ipsec-secgw/ipsec_worker.c b/examples/ipsec-secgw/ipsec_worker.c
index e0690fc8d9..04609964cd 100644
--- a/examples/ipsec-secgw/ipsec_worker.c
+++ b/examples/ipsec-secgw/ipsec_worker.c
@@ -701,4 +701,7 @@ ipsec_ev_inbound_route_pkts(struct rte_event_vector *vec,
struct rte_mbuf *pkt;
struct ipsec_sa *sa;
+ uint8_t mask = (1UL << RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO) |
+ (1UL << RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL);
+
j = ipsec_ev_route_ip_pkts(vec, rt, t);
@@ -708,5 +711,5 @@ ipsec_ev_inbound_route_pkts(struct rte_event_vector *vec,
pkt = t->ipsec.pkts[i];
sa = ipsec_mask_saptr(t->ipsec.saptr[i]);
- if (unlikely(sa == NULL)) {
+ if (unlikely(sa == NULL) || ((1UL << sa->sessions[0].type) & mask)) {
free_pkts(&pkt, 1);
continue;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.230616530 +0100
+++ 0121-examples-ipsec-secgw-fix-crash-in-event-vector-mode.patch 2025-07-18 20:29:11.060925432 +0100
@@ -1 +1 @@
-From 811383ef109d8dae04c0681b84de09c51f153543 Mon Sep 17 00:00:00 2001
+From e7a0239da2a9ab36776394cae04b3f213649d0b8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 811383ef109d8dae04c0681b84de09c51f153543 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/crypto: fix auth and cipher case IV length' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (119 preceding siblings ...)
2025-07-18 19:30 ` patch 'examples/ipsec-secgw: fix crash in event vector mode' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'test/crypto: set to null after freeing operation' " Kevin Traynor
` (53 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e09886a466a9c727ac5df627c76aae0779daeb3d
Thanks.
Kevin
---
From e09886a466a9c727ac5df627c76aae0779daeb3d Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Wed, 18 Jun 2025 12:54:08 +0000
Subject: [PATCH] test/crypto: fix auth and cipher case IV length
[ upstream commit c479e33bcf0173f08fd48269fb223e605b6caa41 ]
Set maximum IV length to 32 bytes to include both auth IV
and cipher IV.
Fixes: fd01a9be38d5 ("test/crypto: move IV to crypto op private data")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
---
app/test/test_cryptodev.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/app/test/test_cryptodev.h b/app/test/test_cryptodev.h
index 190a220c73..7981c33d48 100644
--- a/app/test/test_cryptodev.h
+++ b/app/test/test_cryptodev.h
@@ -41,5 +41,9 @@
#define TRUNCATED_DIGEST_BYTE_LENGTH_SHA512 (32)
-#define MAXIMUM_IV_LENGTH (16)
+/*
+ * maximum IV length need to include both the
+ * auth IV length (16 bytes) and the cipher IV length (16 bytes)
+ */
+#define MAXIMUM_IV_LENGTH (32)
#define AES_GCM_J0_LENGTH (16)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.265288992 +0100
+++ 0122-test-crypto-fix-auth-and-cipher-case-IV-length.patch 2025-07-18 20:29:11.061484119 +0100
@@ -1 +1 @@
-From c479e33bcf0173f08fd48269fb223e605b6caa41 Mon Sep 17 00:00:00 2001
+From e09886a466a9c727ac5df627c76aae0779daeb3d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c479e33bcf0173f08fd48269fb223e605b6caa41 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index a80c11baf4..e243cf945a 100644
+index 190a220c73..7981c33d48 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/crypto: set to null after freeing operation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (120 preceding siblings ...)
2025-07-18 19:30 ` patch 'test/crypto: fix auth and cipher case IV length' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'crypto/openssl: include private exponent in RSA session' " Kevin Traynor
` (52 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f34209e81fa525b89326b55bccf1ff62a6843808
Thanks.
Kevin
---
From f34209e81fa525b89326b55bccf1ff62a6843808 Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Wed, 18 Jun 2025 12:54:09 +0000
Subject: [PATCH] test/crypto: set to null after freeing operation
[ upstream commit 74164b5881526bffc142eb53b89d8900366222d3 ]
Set pointer to NULL post rte_crypto_op_free operation.
Fixes: 3bf0db60f5d2 ("test/crypto: add queue pair depth used count")
Fixes: 202d375c60bc ("app/test: add cryptodev unit and performance tests")
Fixes: ffbe3be0d4b5 ("app/test: add libcrypto")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
---
app/test/test_cryptodev.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index d76cdf26d7..8a175b9e70 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -2597,4 +2597,5 @@ test_queue_pair_descriptor_count(void)
rte_pktmbuf_free(ops_deq[i]->sym->m_src);
rte_crypto_op_free(ops_deq[i]);
+ ops_deq[i] = NULL;
}
@@ -14754,4 +14755,5 @@ test_multi_session(void)
/* free crypto operation structure */
rte_crypto_op_free(ut_params->op);
+ ut_params->op = NULL;
/*
@@ -14895,4 +14897,5 @@ test_multi_session_random_usage(void)
rte_crypto_op_free(ut_paramz[j].ut_params.op);
+ ut_paramz[j].ut_params.op = NULL;
/*
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.299510058 +0100
+++ 0123-test-crypto-set-to-null-after-freeing-operation.patch 2025-07-18 20:29:11.069907757 +0100
@@ -1 +1 @@
-From 74164b5881526bffc142eb53b89d8900366222d3 Mon Sep 17 00:00:00 2001
+From f34209e81fa525b89326b55bccf1ff62a6843808 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 74164b5881526bffc142eb53b89d8900366222d3 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 7535ef6974..5229ac2bf6 100644
+index d76cdf26d7..8a175b9e70 100644
@@ -22 +23 @@
-@@ -2626,4 +2626,5 @@ test_queue_pair_descriptor_count(void)
+@@ -2597,4 +2597,5 @@ test_queue_pair_descriptor_count(void)
@@ -28 +29 @@
-@@ -14790,4 +14791,5 @@ test_multi_session(void)
+@@ -14754,4 +14755,5 @@ test_multi_session(void)
@@ -34 +35 @@
-@@ -14934,4 +14936,5 @@ test_multi_session_random_usage(void)
+@@ -14895,4 +14897,5 @@ test_multi_session_random_usage(void)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/openssl: include private exponent in RSA session' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (121 preceding siblings ...)
2025-07-18 19:30 ` patch 'test/crypto: set to null after freeing operation' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:30 ` patch 'test/crypto: fix RSA vector as per RFC 8017' " Kevin Traynor
` (51 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/0c16ebf9f3d4f2b11ec6d24adec33fa35a43feb3
Thanks.
Kevin
---
From 0c16ebf9f3d4f2b11ec6d24adec33fa35a43feb3 Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Fri, 20 Jun 2025 13:49:16 +0530
Subject: [PATCH] crypto/openssl: include private exponent in RSA session
[ upstream commit 9020477270c5dc93e1a347b90d5248b10e8cc4e3 ]
If private exponent is available, it should be included within
RSA session as per RFC 8017 (A.1.2). OpenSSL 1.1.1 implementation
rely on this private exponent, to implicitly reject invalid cipher.
Hence, check if it is available for session and include it.
Fixes: 3e9d6bd447fb ("crypto/openssl: add RSA and mod asym operations")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
drivers/crypto/openssl/rte_openssl_pmd_ops.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
index 18f096abfd..f0bdd1e1f5 100644
--- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c
+++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
@@ -1026,5 +1026,5 @@ static int openssl_set_asym_session_parameters(
goto err_rsa;
- if (xform->rsa.key_type == RTE_RSA_KEY_TYPE_EXP) {
+ if (xform->rsa.d.length > 0) {
d = BN_bin2bn(
(const unsigned char *)xform->rsa.d.data,
@@ -1035,5 +1035,7 @@ static int openssl_set_asym_session_parameters(
goto err_rsa;
}
- } else {
+ }
+
+ if (xform->rsa.key_type == RTE_RSA_KEY_TYPE_QT) {
p = BN_bin2bn((const unsigned char *)
xform->rsa.qt.p.data,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.357098761 +0100
+++ 0124-crypto-openssl-include-private-exponent-in-RSA-sessi.patch 2025-07-18 20:29:11.070907760 +0100
@@ -1 +1 @@
-From 9020477270c5dc93e1a347b90d5248b10e8cc4e3 Mon Sep 17 00:00:00 2001
+From 0c16ebf9f3d4f2b11ec6d24adec33fa35a43feb3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9020477270c5dc93e1a347b90d5248b10e8cc4e3 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 04e018f3df..d3aa396c76 100644
+index 18f096abfd..f0bdd1e1f5 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/crypto: fix RSA vector as per RFC 8017' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (122 preceding siblings ...)
2025-07-18 19:30 ` patch 'crypto/openssl: include private exponent in RSA session' " Kevin Traynor
@ 2025-07-18 19:30 ` Kevin Traynor
2025-07-18 19:31 ` patch 'test/crypto: fix RSA decrypt validation' " Kevin Traynor
` (50 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:30 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6fe3cdedf18322a99b80382feb009586b5376be8
Thanks.
Kevin
---
From 6fe3cdedf18322a99b80382feb009586b5376be8 Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Fri, 20 Jun 2025 13:49:17 +0530
Subject: [PATCH] test/crypto: fix RSA vector as per RFC 8017
[ upstream commit 653ef76297342061b51c208412cedd46d9c71907 ]
As per RFC 8017 (A.1.2), RSA private key should be represented
with both exponent and CRT forms of data for inter operability.
Fixes: a379799cbaaf ("test/crypto: add RSA key type CRT")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
app/test/test_cryptodev_asym.c | 16 ++++++++---
app/test/test_cryptodev_rsa_test_vectors.h | 32 +++++-----------------
2 files changed, 19 insertions(+), 29 deletions(-)
diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index e2f74702ad..0d47b7b299 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -236,4 +236,5 @@ test_rsa_sign_verify(void)
struct rte_mempool *sess_mpool = ts_params->session_mpool;
uint8_t dev_id = ts_params->valid_devs[0];
+ struct rte_crypto_asym_xform xform;
void *sess = NULL;
struct rte_cryptodev_info dev_info;
@@ -251,5 +252,8 @@ test_rsa_sign_verify(void)
}
- ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
+ memcpy(&xform, &rsa_xform, sizeof(rsa_xform));
+ xform.rsa.key_type = RTE_RSA_KEY_TYPE_EXP;
+
+ ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
if (ret < 0) {
@@ -276,4 +280,5 @@ test_rsa_enc_dec(void)
struct rte_mempool *sess_mpool = ts_params->session_mpool;
uint8_t dev_id = ts_params->valid_devs[0];
+ struct rte_crypto_asym_xform xform;
void *sess = NULL;
struct rte_cryptodev_info dev_info;
@@ -291,5 +296,8 @@ test_rsa_enc_dec(void)
}
- ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
+ memcpy(&xform, &rsa_xform, sizeof(rsa_xform));
+ xform.rsa.key_type = RTE_RSA_KEY_TYPE_EXP;
+
+ ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
if (ret < 0) {
@@ -330,5 +338,5 @@ test_rsa_sign_verify_crt(void)
}
- ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);
+ ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
if (ret < 0) {
@@ -370,5 +378,5 @@ test_rsa_enc_dec_crt(void)
}
- ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);
+ ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
if (ret < 0) {
diff --git a/app/test/test_cryptodev_rsa_test_vectors.h b/app/test/test_cryptodev_rsa_test_vectors.h
index 1b7b451387..9652b0d43a 100644
--- a/app/test/test_cryptodev_rsa_test_vectors.h
+++ b/app/test/test_cryptodev_rsa_test_vectors.h
@@ -341,5 +341,5 @@ uint8_t rsa_qInv[] = {
};
-/** rsa xform using exponent key */
+/** rsa xform (of QT private key type by default) */
struct rte_crypto_asym_xform rsa_xform = {
.next = NULL,
@@ -355,27 +355,4 @@ struct rte_crypto_asym_xform rsa_xform = {
.length = sizeof(rsa_e)
},
- .key_type = RTE_RSA_KEY_TYPE_EXP,
- .d = {
- .data = rsa_d,
- .length = sizeof(rsa_d)
- }
- }
-};
-
-/** rsa xform using quintuple key */
-struct rte_crypto_asym_xform rsa_xform_crt = {
- .next = NULL,
- .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,
- .rsa = {
- .padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5,
- .n = {
- .data = rsa_n,
- .length = sizeof(rsa_n)
- },
- .e = {
- .data = rsa_e,
- .length = sizeof(rsa_e)
- },
- .key_type = RTE_RSA_KEY_TYPE_QT,
.qt = {
.p = {
@@ -399,5 +376,10 @@ struct rte_crypto_asym_xform rsa_xform_crt = {
.length = sizeof(rsa_qInv)
},
- }
+ },
+ .d = {
+ .data = rsa_d,
+ .length = sizeof(rsa_d)
+ },
+ .key_type = RTE_RSA_KEY_TYPE_QT
}
};
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.391901810 +0100
+++ 0125-test-crypto-fix-RSA-vector-as-per-RFC-8017.patch 2025-07-18 20:29:11.072907766 +0100
@@ -1 +1 @@
-From 653ef76297342061b51c208412cedd46d9c71907 Mon Sep 17 00:00:00 2001
+From 6fe3cdedf18322a99b80382feb009586b5376be8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 653ef76297342061b51c208412cedd46d9c71907 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 46bbc520e6..87c26322d0 100644
+index e2f74702ad..0d47b7b299 100644
@@ -22,2 +23,2 @@
-@@ -261,4 +261,5 @@ test_rsa_sign_verify(void)
- struct rte_cryptodev_asym_capability_idx idx;
+@@ -236,4 +236,5 @@ test_rsa_sign_verify(void)
+ struct rte_mempool *sess_mpool = ts_params->session_mpool;
@@ -28 +29 @@
-@@ -281,5 +282,8 @@ test_rsa_sign_verify(void)
+@@ -251,5 +252,8 @@ test_rsa_sign_verify(void)
@@ -38,2 +39,2 @@
-@@ -307,4 +311,5 @@ test_rsa_enc_dec(void)
- struct rte_cryptodev_asym_capability_idx idx;
+@@ -276,4 +280,5 @@ test_rsa_enc_dec(void)
+ struct rte_mempool *sess_mpool = ts_params->session_mpool;
@@ -44 +45 @@
-@@ -327,5 +332,8 @@ test_rsa_enc_dec(void)
+@@ -291,5 +296,8 @@ test_rsa_enc_dec(void)
@@ -54 +55 @@
-@@ -372,5 +380,5 @@ test_rsa_sign_verify_crt(void)
+@@ -330,5 +338,5 @@ test_rsa_sign_verify_crt(void)
@@ -61 +62 @@
-@@ -418,5 +426,5 @@ test_rsa_enc_dec_crt(void)
+@@ -370,5 +378,5 @@ test_rsa_enc_dec_crt(void)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/crypto: fix RSA decrypt validation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (123 preceding siblings ...)
2025-07-18 19:30 ` patch 'test/crypto: fix RSA vector as per RFC 8017' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'test/crypto: fix EdDSA vector description' " Kevin Traynor
` (49 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4c9b62031566d4e6ef2960ad7bdcef8df3ea27b9
Thanks.
Kevin
---
From 4c9b62031566d4e6ef2960ad7bdcef8df3ea27b9 Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Fri, 20 Jun 2025 13:49:18 +0530
Subject: [PATCH] test/crypto: fix RSA decrypt validation
[ upstream commit 9af3fa536ec23d254d15fea4ec0e58442e56409e ]
Following RSA encrypt op, same plaintext buffer is used as output
buffer for decrypt op, hence comparing plaintext buffer against
same buffer pointer in crypto op always succeed irrespective of
whether decrypt op succeeds or not. This patch fixes this issue
with a local buffer for crypto op.
Fixes: 5ae36995f10f ("test/crypto: move RSA enqueue/dequeue into functions")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
app/test/test_cryptodev_asym.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index 0d47b7b299..cb5e07368a 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -152,5 +152,8 @@ queue_ops_rsa_enc_dec(void *sess)
struct rte_crypto_asym_op *asym_op;
uint8_t cipher_buf[TEST_DATA_SIZE] = {0};
- int ret, status = TEST_SUCCESS;
+ uint8_t msg_buf[TEST_DATA_SIZE] = {0};
+ int ret, status;
+
+ memcpy(msg_buf, rsaplaintext.data, rsaplaintext.len);
/* Set up crypto op data structure */
@@ -167,5 +170,5 @@ queue_ops_rsa_enc_dec(void *sess)
asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_ENCRYPT;
- asym_op->rsa.message.data = rsaplaintext.data;
+ asym_op->rsa.message.data = msg_buf;
asym_op->rsa.cipher.data = cipher_buf;
asym_op->rsa.cipher.length = RTE_DIM(rsa_n);
@@ -202,4 +205,5 @@ queue_ops_rsa_enc_dec(void *sess)
asym_op->rsa.message.length = RTE_DIM(rsa_n);
asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;
+ memset(asym_op->rsa.message.data, 0, asym_op->rsa.message.length);
/* Process crypto operation */
@@ -218,9 +222,18 @@ queue_ops_rsa_enc_dec(void *sess)
goto error_exit;
}
- status = TEST_SUCCESS;
+
+ if (result_op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {
+ RTE_LOG(ERR, USER1, "Expected crypto op to succeed\n");
+ status = TEST_FAILED;
+ goto error_exit;
+ }
+
ret = rsa_verify(&rsaplaintext, result_op);
- if (ret)
+ if (ret) {
status = TEST_FAILED;
+ goto error_exit;
+ }
+ status = TEST_SUCCESS;
error_exit:
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.428471122 +0100
+++ 0126-test-crypto-fix-RSA-decrypt-validation.patch 2025-07-18 20:29:11.074907772 +0100
@@ -1 +1 @@
-From 9af3fa536ec23d254d15fea4ec0e58442e56409e Mon Sep 17 00:00:00 2001
+From 4c9b62031566d4e6ef2960ad7bdcef8df3ea27b9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9af3fa536ec23d254d15fea4ec0e58442e56409e ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 87c26322d0..20afb5e98b 100644
+index 0d47b7b299..cb5e07368a 100644
@@ -24 +25 @@
-@@ -176,5 +176,8 @@ queue_ops_rsa_enc_dec(void *sess)
+@@ -152,5 +152,8 @@ queue_ops_rsa_enc_dec(void *sess)
@@ -34 +35 @@
-@@ -191,5 +194,5 @@ queue_ops_rsa_enc_dec(void *sess)
+@@ -167,5 +170,5 @@ queue_ops_rsa_enc_dec(void *sess)
@@ -41 +42 @@
-@@ -226,4 +229,5 @@ queue_ops_rsa_enc_dec(void *sess)
+@@ -202,4 +205,5 @@ queue_ops_rsa_enc_dec(void *sess)
@@ -47 +48 @@
-@@ -242,9 +246,18 @@ queue_ops_rsa_enc_dec(void *sess)
+@@ -218,9 +222,18 @@ queue_ops_rsa_enc_dec(void *sess)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'test/crypto: fix EdDSA vector description' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (124 preceding siblings ...)
2025-07-18 19:31 ` patch 'test/crypto: fix RSA decrypt validation' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix dequeue with CQ depth <= 16' " Kevin Traynor
` (48 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Sucharitha Sarananaga; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/7edd6f239e149533e7442363bc7ffcbe645ba4e8
Thanks.
Kevin
---
From 7edd6f239e149533e7442363bc7ffcbe645ba4e8 Mon Sep 17 00:00:00 2001
From: Sucharitha Sarananaga <ssarananaga@marvell.com>
Date: Mon, 16 Jun 2025 06:33:50 +0000
Subject: [PATCH] test/crypto: fix EdDSA vector description
[ upstream commit 9f45766699f0dc066ee4dc5908a9c9e8bdc46e8c ]
Changed the message parameter from 1 to 3 in the EdDSA 25519PH test
vector description.
Fixes: 2fba5232e77e ("test/crypto: add asymmetric EdDSA cases")
Signed-off-by: Sucharitha Sarananaga <ssarananaga@marvell.com>
---
app/test/test_cryptodev_eddsa_test_vectors.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/test_cryptodev_eddsa_test_vectors.h b/app/test/test_cryptodev_eddsa_test_vectors.h
index 047b667640..cb04f96834 100644
--- a/app/test/test_cryptodev_eddsa_test_vectors.h
+++ b/app/test/test_cryptodev_eddsa_test_vectors.h
@@ -341,5 +341,5 @@ crypto_testsuite_eddsa_params eddsa_test_params[] = {
},
{
- .description = "EdDSA 25519PH (msg=1, ph=1)",
+ .description = "EdDSA 25519PH (msg=3, ph=1)",
.pkey = {
.data = {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.464640540 +0100
+++ 0127-test-crypto-fix-EdDSA-vector-description.patch 2025-07-18 20:29:11.075907775 +0100
@@ -1 +1 @@
-From 9f45766699f0dc066ee4dc5908a9c9e8bdc46e8c Mon Sep 17 00:00:00 2001
+From 7edd6f239e149533e7442363bc7ffcbe645ba4e8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9f45766699f0dc066ee4dc5908a9c9e8bdc46e8c ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix dequeue with CQ depth <= 16' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (125 preceding siblings ...)
2025-07-18 19:31 ` patch 'test/crypto: fix EdDSA vector description' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix validaton of LDB port COS ID arguments' " Kevin Traynor
` (47 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: Tirthendu Sarkar, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/8a644d6c9a20059c40624d41d35e2874e84cfae5
Thanks.
Kevin
---
From 8a644d6c9a20059c40624d41d35e2874e84cfae5 Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Wed, 18 Jun 2025 23:03:10 -0500
Subject: [PATCH] event/dlb2: fix dequeue with CQ depth <= 16
[ upstream commit 0b92203cdae06dee0626e46e62b9c34450e776d8 ]
When application configures a DIR port with CQ depth less than 8, DLB PMD
sets port's cq_depth as 8 and token reservation is used to make the
effective cq_depth smaller. However, while setting port's cq_depth_mask
application configured CQ depth was used resulting in reading incorrect
cachelines while dequeuing. Use PMD calculated CQ depth for cq_depth_mask
calculation.
Fixes: 3a6d0c04e7fb3e ("event/dlb2: add port setup")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
Signed-off-by: Tirthendu Sarkar <tirthendu.sarkar@intel.com>
---
drivers/event/dlb2/dlb2.c | 4 ++--
drivers/event/dlb2/pf/dlb2_pf.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index 934fcafcfe..c5ab31f52b 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -1850,7 +1850,7 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
if (dlb2->poll_mode == DLB2_CQ_POLL_MODE_SPARSE)
- qm_port->cq_depth_mask = (cfg.cq_depth * 4) - 1;
+ qm_port->cq_depth_mask = (qm_port->cq_depth * 4) - 1;
else
- qm_port->cq_depth_mask = cfg.cq_depth - 1;
+ qm_port->cq_depth_mask = qm_port->cq_depth - 1;
qm_port->gen_bit_shift = rte_popcount32(qm_port->cq_depth_mask);
diff --git a/drivers/event/dlb2/pf/dlb2_pf.c b/drivers/event/dlb2/pf/dlb2_pf.c
index ed4e6e424c..31b5487d85 100644
--- a/drivers/event/dlb2/pf/dlb2_pf.c
+++ b/drivers/event/dlb2/pf/dlb2_pf.c
@@ -401,5 +401,5 @@ dlb2_pf_dir_port_create(struct dlb2_hw_dev *handle,
* cache line.
*/
- alloc_sz = cfg->cq_depth * qe_sz;
+ alloc_sz = RTE_MAX(cfg->cq_depth, DLB2_MIN_HARDWARE_CQ_DEPTH) * qe_sz;
alloc_sz = RTE_CACHE_LINE_ROUNDUP(alloc_sz);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.498906834 +0100
+++ 0128-event-dlb2-fix-dequeue-with-CQ-depth-16.patch 2025-07-18 20:29:11.078907784 +0100
@@ -1 +1 @@
-From 0b92203cdae06dee0626e46e62b9c34450e776d8 Mon Sep 17 00:00:00 2001
+From 8a644d6c9a20059c40624d41d35e2874e84cfae5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0b92203cdae06dee0626e46e62b9c34450e776d8 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 08291b10b8..bec1e88074 100644
+index 934fcafcfe..c5ab31f52b 100644
@@ -27 +28 @@
-@@ -1952,7 +1952,7 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
+@@ -1850,7 +1850,7 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
@@ -38 +39 @@
-index ac432b81ad..cd2788c035 100644
+index ed4e6e424c..31b5487d85 100644
@@ -41 +42 @@
-@@ -428,5 +428,5 @@ dlb2_pf_dir_port_create(struct dlb2_hw_dev *handle,
+@@ -401,5 +401,5 @@ dlb2_pf_dir_port_create(struct dlb2_hw_dev *handle,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix validaton of LDB port COS ID arguments' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (126 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix dequeue with CQ depth <= 16' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix num single link ports for DLB2.5' " Kevin Traynor
` (46 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/95d3b02eb18b8a3b7ac7dfe27e3eb03416864eab
Thanks.
Kevin
---
From 95d3b02eb18b8a3b7ac7dfe27e3eb03416864eab Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Wed, 18 Jun 2025 23:03:11 -0500
Subject: [PATCH] event/dlb2: fix validaton of LDB port COS ID arguments
[ upstream commit 49b5fe1a6d59edb32c2bd50459ed499a794b9c91 ]
While providing port_cos as vdev/pf CLI argument, the port numbers should
take into account all ports (LDB and DIR) that are created by the
application and the same order should be provided for port_cos parameter.
This fix add checks to ensure that above is validated correctly.
Fixes: bec8901bfe9f ("event/dlb2: support ldb port specific COS")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
---
drivers/event/dlb2/dlb2.c | 32 +++++++++++++++++++++++---------
drivers/event/dlb2/dlb2_priv.h | 1 -
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index c5ab31f52b..8efba3109b 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -138,8 +138,6 @@ dlb2_init_port_cos(struct dlb2_eventdev *dlb2, int *port_cos)
dlb2->ev_ports[q].cos_id = port_cos[q];
if (port_cos[q] != DLB2_COS_DEFAULT &&
- dlb2->cos_ports[port_cos[q]] < DLB2_MAX_NUM_LDB_PORTS_PER_COS) {
+ dlb2->cos_ports[port_cos[q]] < DLB2_MAX_NUM_LDB_PORTS_PER_COS)
dlb2->cos_ports[port_cos[q]]++;
- dlb2->max_cos_port = q;
- }
}
}
@@ -448,6 +446,6 @@ set_port_cos(const char *key __rte_unused,
void *opaque)
{
+ int first, last, cos_id, i, ports_per_cos[DLB2_COS_NUM_VALS] = {0};
struct dlb2_port_cos *port_cos = opaque;
- int first, last, cos_id, i;
if (value == NULL || opaque == NULL) {
@@ -483,4 +481,12 @@ set_port_cos(const char *key __rte_unused,
port_cos->cos_id[i] = cos_id; /* indexed by port */
+ for (i = 0; i < DLB2_MAX_NUM_PORTS_ALL; i++)
+ if (port_cos->cos_id[i] != DLB2_COS_DEFAULT &&
+ ++ports_per_cos[port_cos->cos_id[i]] > DLB2_MAX_NUM_LDB_PORTS_PER_COS) {
+ DLB2_LOG_ERR("Error parsing ldb port cos_id devarg: More than 16 ports for "
+ "cos_id %d.", port_cos->cos_id[i]);
+ return -EINVAL;
+ }
+
return 0;
}
@@ -783,7 +789,8 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
uint8_t device_version)
{
- int ret = 0;
- uint32_t cos_ports = 0;
+ uint32_t total_asked_ports;
struct dlb2_create_sched_domain_args *cfg;
+ uint32_t cos_ports = 0, max_cos_port = 0;
+ int ret = 0;
if (resources_asked == NULL) {
@@ -793,4 +800,6 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
}
+ total_asked_ports = resources_asked->num_ldb_ports + resources_asked->num_dir_ports;
+
/* Map generic qm resources to dlb2 resources */
cfg = &handle->cfg.resources;
@@ -814,7 +823,12 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
dlb2->cos_ports[2] + dlb2->cos_ports[3];
- if (cos_ports > resources_asked->num_ldb_ports ||
- (cos_ports && dlb2->max_cos_port >= resources_asked->num_ldb_ports)) {
- DLB2_LOG_ERR("dlb2: num_ldb_ports < cos_ports");
+ for (int i = 0; i < DLB2_MAX_NUM_PORTS_ALL; i++) {
+ if (dlb2->ev_ports[i].cos_id != DLB2_COS_DEFAULT)
+ max_cos_port = i;
+ }
+
+ if (cos_ports > resources_asked->num_ldb_ports || max_cos_port >= total_asked_ports) {
+ DLB2_LOG_ERR("dlb2: Insufficient num_ldb_ports=%d: cos_ports=%d max_cos_port=%d",
+ resources_asked->num_ldb_ports, cos_ports, max_cos_port);
ret = EINVAL;
goto error_exit;
diff --git a/drivers/event/dlb2/dlb2_priv.h b/drivers/event/dlb2/dlb2_priv.h
index 52da31ed31..4118d69465 100644
--- a/drivers/event/dlb2/dlb2_priv.h
+++ b/drivers/event/dlb2/dlb2_priv.h
@@ -650,5 +650,4 @@ struct dlb2_eventdev {
uint32_t cos_ports[DLB2_COS_NUM_VALS]; /* total ldb ports in each class */
uint32_t cos_bw[DLB2_COS_NUM_VALS]; /* bandwidth per cos domain */
- uint8_t max_cos_port; /* Max LDB port from any cos */
bool enable_cq_weight;
};
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.538720939 +0100
+++ 0129-event-dlb2-fix-validaton-of-LDB-port-COS-ID-argument.patch 2025-07-18 20:29:11.081907794 +0100
@@ -1 +1 @@
-From 49b5fe1a6d59edb32c2bd50459ed499a794b9c91 Mon Sep 17 00:00:00 2001
+From 95d3b02eb18b8a3b7ac7dfe27e3eb03416864eab Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 49b5fe1a6d59edb32c2bd50459ed499a794b9c91 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index bec1e88074..8722e62948 100644
+index c5ab31f52b..8efba3109b 100644
@@ -24 +25 @@
-@@ -195,8 +195,6 @@ dlb2_init_port_cos(struct dlb2_eventdev *dlb2, int *port_cos)
+@@ -138,8 +138,6 @@ dlb2_init_port_cos(struct dlb2_eventdev *dlb2, int *port_cos)
@@ -34 +35 @@
-@@ -532,6 +530,6 @@ set_port_cos(const char *key __rte_unused,
+@@ -448,6 +446,6 @@ set_port_cos(const char *key __rte_unused,
@@ -42 +43 @@
-@@ -567,4 +565,12 @@ set_port_cos(const char *key __rte_unused,
+@@ -483,4 +481,12 @@ set_port_cos(const char *key __rte_unused,
@@ -55 +56 @@
-@@ -867,7 +873,8 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
+@@ -783,7 +789,8 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
@@ -66 +67 @@
-@@ -877,4 +884,6 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
+@@ -793,4 +800,6 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
@@ -73 +74 @@
-@@ -898,7 +907,12 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
+@@ -814,7 +823,12 @@ dlb2_hw_create_sched_domain(struct dlb2_eventdev *dlb2,
@@ -90 +91 @@
-index 4dd7532519..285d427397 100644
+index 52da31ed31..4118d69465 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix num single link ports for DLB2.5' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (127 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix validaton of LDB port COS ID arguments' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix QID depth xstat' " Kevin Traynor
` (45 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bada281c1272a36fca2a602354ca8c2b6a04fc96
Thanks.
Kevin
---
From bada281c1272a36fca2a602354ca8c2b6a04fc96 Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Wed, 18 Jun 2025 23:03:12 -0500
Subject: [PATCH] event/dlb2: fix num single link ports for DLB2.5
[ upstream commit a1a4dd731edb609d54c0ac5fc9f4652527138dc1 ]
DLB 2.0 device has 64 single linked or directed ports.
DLB 2.5 device has 96 single linked ports.
This commit fixes issue of rte_event_dev_info_get returning 64
instead of 96 single link ports for DLB2.5
Fixes: 4ce7bf9ec1c7 ("event/dlb2: add v2.5 get resources")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
---
drivers/event/dlb2/dlb2.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index 8efba3109b..bfa0e14f5c 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -185,8 +185,5 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
*/
- if (dlb2->max_cq_depth != DLB2_DEFAULT_CQ_DEPTH)
- num_ldb_ports = DLB2_MAX_HL_ENTRIES / dlb2->max_cq_depth;
- else
- num_ldb_ports = dlb2->hw_rsrc_query_results.num_ldb_ports;
+ num_ldb_ports = dlb2->hw_rsrc_query_results.num_ldb_ports;
evdev_dlb2_default_info.max_event_queues =
@@ -195,4 +192,7 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
evdev_dlb2_default_info.max_event_ports = num_ldb_ports;
+ evdev_dlb2_default_info.max_single_link_event_port_queue_pairs =
+ dlb2->hw_rsrc_query_results.num_dir_ports;
+
if (dlb2->version == DLB2_HW_V2_5) {
evdev_dlb2_default_info.max_num_events =
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.577070246 +0100
+++ 0130-event-dlb2-fix-num-single-link-ports-for-DLB2.5.patch 2025-07-18 20:29:11.084907803 +0100
@@ -1 +1 @@
-From a1a4dd731edb609d54c0ac5fc9f4652527138dc1 Mon Sep 17 00:00:00 2001
+From bada281c1272a36fca2a602354ca8c2b6a04fc96 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a1a4dd731edb609d54c0ac5fc9f4652527138dc1 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 8722e62948..69dc3cf7c9 100644
+index 8efba3109b..bfa0e14f5c 100644
@@ -23 +24 @@
-@@ -242,8 +242,5 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
+@@ -185,8 +185,5 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
@@ -33 +34 @@
-@@ -252,4 +249,7 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
+@@ -195,4 +192,7 @@ dlb2_hw_query_resources(struct dlb2_eventdev *dlb2)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix QID depth xstat' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (128 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix num single link ports for DLB2.5' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix default credits based on HW version' " Kevin Traynor
` (44 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f0bc6dc05789af9042bc3b5682de23f8c9225d8f
Thanks.
Kevin
---
From f0bc6dc05789af9042bc3b5682de23f8c9225d8f Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Wed, 18 Jun 2025 23:03:15 -0500
Subject: [PATCH] event/dlb2: fix QID depth xstat
[ upstream commit 9891a50af0693ffef8471fdb1fb09ff8799c39f6 ]
update QID depth xstats counter in vector dequeue path
Fixes: 000a7b8e7582 ("event/dlb2: optimize dequeue operation")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
---
drivers/event/dlb2/dlb2.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index bfa0e14f5c..12c045f4e3 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -3912,4 +3912,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
DLB2_INC_STAT(qm_port->ev_port->stats.rx_sched_cnt[hw_sched3],
1);
+ DLB2_INC_STAT(qm_port->ev_port->stats.queue[ev_qid3].\
+ qid_depth[RTE_PMD_DLB2_GET_QID_DEPTH(&events[3])], 1);
/* fallthrough */
case 3:
@@ -3919,4 +3921,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
DLB2_INC_STAT(qm_port->ev_port->stats.rx_sched_cnt[hw_sched2],
1);
+ DLB2_INC_STAT(qm_port->ev_port->stats.queue[ev_qid2].\
+ qid_depth[RTE_PMD_DLB2_GET_QID_DEPTH(&events[2])], 1);
/* fallthrough */
case 2:
@@ -3927,4 +3931,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
DLB2_INC_STAT(qm_port->ev_port->stats.rx_sched_cnt[hw_sched1],
1);
+ DLB2_INC_STAT(qm_port->ev_port->stats.queue[ev_qid1].\
+ qid_depth[RTE_PMD_DLB2_GET_QID_DEPTH(&events[1])], 1);
/* fallthrough */
case 1:
@@ -3934,4 +3940,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
DLB2_INC_STAT(qm_port->ev_port->stats.rx_sched_cnt[hw_sched0],
1);
+ DLB2_INC_STAT(qm_port->ev_port->stats.queue[ev_qid0].\
+ qid_depth[RTE_PMD_DLB2_GET_QID_DEPTH(&events[0])], 1);
}
qm_port->reorder_id += valid_events;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.614531154 +0100
+++ 0131-event-dlb2-fix-QID-depth-xstat.patch 2025-07-18 20:29:11.087907812 +0100
@@ -1 +1 @@
-From 9891a50af0693ffef8471fdb1fb09ff8799c39f6 Mon Sep 17 00:00:00 2001
+From f0bc6dc05789af9042bc3b5682de23f8c9225d8f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9891a50af0693ffef8471fdb1fb09ff8799c39f6 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index f9bdfb3503..fd8cc70f3c 100644
+index bfa0e14f5c..12c045f4e3 100644
@@ -20 +21 @@
-@@ -4146,4 +4146,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
+@@ -3912,4 +3912,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
@@ -27 +28 @@
-@@ -4153,4 +4155,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
+@@ -3919,4 +3921,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
@@ -34 +35 @@
-@@ -4161,4 +4165,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
+@@ -3927,4 +3931,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
@@ -41 +42 @@
-@@ -4168,4 +4174,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
+@@ -3934,4 +3940,6 @@ _process_deq_qes_vec_impl(struct dlb2_port *qm_port,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix default credits based on HW version' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (129 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix QID depth xstat' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'event/dlb2: fix public symbol namespace' " Kevin Traynor
` (43 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Tirthendu Sarkar; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6aa233092b8baf40acba040f950f51f621509e9c
Thanks.
Kevin
---
From 6aa233092b8baf40acba040f950f51f621509e9c Mon Sep 17 00:00:00 2001
From: Tirthendu Sarkar <tirthendu.sarkar@intel.com>
Date: Wed, 18 Jun 2025 23:03:16 -0500
Subject: [PATCH] event/dlb2: fix default credits based on HW version
[ upstream commit 07a08b13b3bc65abe295557d1dc2609e7f4afc45 ]
dlb2_eventdev_info_get() that implements rte_event_dev_info_get() should
return the maximum available credits as supported by HW.
Set maximum credits before device probing by checking HW version.
Fixes: b66a418d2ad3 ("event/dlb2: add v2.5 probe")
Signed-off-by: Tirthendu Sarkar <tirthendu.sarkar@intel.com>
---
drivers/event/dlb2/pf/dlb2_pf.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/event/dlb2/pf/dlb2_pf.c b/drivers/event/dlb2/pf/dlb2_pf.c
index 31b5487d85..de2f22ac1e 100644
--- a/drivers/event/dlb2/pf/dlb2_pf.c
+++ b/drivers/event/dlb2/pf/dlb2_pf.c
@@ -730,4 +730,6 @@ dlb2_eventdev_pci_init(struct rte_eventdev *eventdev)
dlb2 = dlb2_pmd_priv(eventdev); /* rte_zmalloc_socket mem */
dlb2->version = DLB2_HW_DEVICE_FROM_PCI_ID(pci_dev);
+ if (dlb2->version == DLB2_HW_V2_5)
+ dlb2_args.max_num_events = DLB2_MAX_NUM_CREDITS(DLB2_HW_V2_5);
/* Were we invoked with runtime parameters? */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.652874205 +0100
+++ 0132-event-dlb2-fix-default-credits-based-on-HW-version.patch 2025-07-18 20:29:11.088907815 +0100
@@ -1 +1 @@
-From 07a08b13b3bc65abe295557d1dc2609e7f4afc45 Mon Sep 17 00:00:00 2001
+From 6aa233092b8baf40acba040f950f51f621509e9c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 07a08b13b3bc65abe295557d1dc2609e7f4afc45 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 15a06bee4f..edcdfb319f 100644
+index 31b5487d85..de2f22ac1e 100644
@@ -23 +24 @@
-@@ -790,4 +790,6 @@ dlb2_eventdev_pci_init(struct rte_eventdev *eventdev)
+@@ -730,4 +730,6 @@ dlb2_eventdev_pci_init(struct rte_eventdev *eventdev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'event/dlb2: fix public symbol namespace' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (130 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix default credits based on HW version' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'app/eventdev: fix number of releases sent during cleanup' " Kevin Traynor
` (42 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/5ac3674a4726e8c399840be1e3040dc550f633d3
Thanks.
Kevin
---
From 5ac3674a4726e8c399840be1e3040dc550f633d3 Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Thu, 19 Jun 2025 17:31:50 -0500
Subject: [PATCH] event/dlb2: fix public symbol namespace
[ upstream commit e31d4679575571890974730c989aa286cb516398 ]
Added RTE_PMD_DLB2_ prefix to dlb2 token pop mode enums
to avoid namespace conflict. These enums are passed to public
API rte_pmd_dlb2_set_token_pop_mode().
Fixes: c667583d82f4 ("event/dlb2: add token pop API")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
---
drivers/event/dlb2/dlb2.c | 28 +++++++++++++++-------------
drivers/event/dlb2/dlb2_priv.h | 2 +-
drivers/event/dlb2/dlb2_selftest.c | 6 +++---
drivers/event/dlb2/rte_pmd_dlb2.c | 4 ++--
drivers/event/dlb2/rte_pmd_dlb2.h | 23 ++++++++++++-----------
5 files changed, 33 insertions(+), 30 deletions(-)
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index 12c045f4e3..07a37d9aad 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -1672,5 +1672,5 @@ dlb2_hw_create_ldb_port(struct dlb2_eventdev *dlb2,
* performance reasons.
*/
- if (qm_port->token_pop_mode == DELAYED_POP) {
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP) {
dlb2->event_dev->enqueue_burst =
dlb2_event_enqueue_burst_delayed;
@@ -1881,5 +1881,5 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
/* Directed ports are auto-pop, by default. */
- qm_port->token_pop_mode = AUTO_POP;
+ qm_port->token_pop_mode = RTE_PMD_DLB2_AUTO_POP;
qm_port->owed_tokens = 0;
qm_port->issued_releases = 0;
@@ -3133,5 +3133,5 @@ __dlb2_event_enqueue_burst_reorder(void *event_port,
}
- if (use_delayed && qm_port->token_pop_mode == DELAYED_POP &&
+ if (use_delayed && qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP &&
(events[i].op == RTE_EVENT_OP_FORWARD ||
events[i].op == RTE_EVENT_OP_RELEASE) &&
@@ -3238,5 +3238,5 @@ __dlb2_event_enqueue_burst(void *event_port,
if (use_delayed &&
- qm_port->token_pop_mode == DELAYED_POP &&
+ qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP &&
(ev->op == RTE_EVENT_OP_FORWARD ||
ev->op == RTE_EVENT_OP_RELEASE) &&
@@ -3388,5 +3388,5 @@ dlb2_event_release(struct dlb2_eventdev *dlb2,
int16_t thresh = qm_port->token_pop_thresh;
- if (qm_port->token_pop_mode == DELAYED_POP &&
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP &&
qm_port->issued_releases >= thresh - 1) {
/* Insert the token pop QE */
@@ -4132,5 +4132,5 @@ dlb2_hw_dequeue_sparse(struct dlb2_eventdev *dlb2,
if (num) {
- if (qm_port->token_pop_mode == AUTO_POP)
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_AUTO_POP)
dlb2_consume_qe_immediate(qm_port, num);
@@ -4260,5 +4260,5 @@ dlb2_hw_dequeue(struct dlb2_eventdev *dlb2,
if (num) {
- if (qm_port->token_pop_mode == AUTO_POP)
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_AUTO_POP)
dlb2_consume_qe_immediate(qm_port, num);
@@ -4297,5 +4297,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
__dlb2_event_enqueue_burst_reorder(event_port, NULL, 0,
- qm_port->token_pop_mode == DELAYED_POP);
+ qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP);
} else {
dlb2_event_release(dlb2, ev_port->id, out_rels);
@@ -4305,5 +4305,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
}
- if (qm_port->token_pop_mode == DEFERRED_POP && qm_port->owed_tokens)
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_DEFERRED_POP && qm_port->owed_tokens)
dlb2_consume_qe_immediate(qm_port, qm_port->owed_tokens);
@@ -4346,5 +4346,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
__dlb2_event_enqueue_burst_reorder(event_port,
release_burst, RTE_DIM(release_burst),
- qm_port->token_pop_mode == DELAYED_POP);
+ qm_port->token_pop_mode ==
+ RTE_PMD_DLB2_DELAYED_POP);
num_releases = 0;
}
@@ -4354,5 +4355,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
if (num_releases)
__dlb2_event_enqueue_burst_reorder(event_port, release_burst
- , num_releases, qm_port->token_pop_mode == DELAYED_POP);
+ , num_releases,
+ qm_port->token_pop_mode == RTE_PMD_DLB2_DELAYED_POP);
} else {
dlb2_event_release(dlb2, ev_port->id, out_rels);
@@ -4363,5 +4365,5 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
}
- if (qm_port->token_pop_mode == DEFERRED_POP && qm_port->owed_tokens)
+ if (qm_port->token_pop_mode == RTE_PMD_DLB2_DEFERRED_POP && qm_port->owed_tokens)
dlb2_consume_qe_immediate(qm_port, qm_port->owed_tokens);
@@ -4805,5 +4807,5 @@ dlb2_primary_eventdev_probe(struct rte_eventdev *dev,
/* Initialize each port's token pop mode */
for (i = 0; i < DLB2_MAX_NUM_PORTS(dlb2->version); i++)
- dlb2->ev_ports[i].qm_port.token_pop_mode = AUTO_POP;
+ dlb2->ev_ports[i].qm_port.token_pop_mode = RTE_PMD_DLB2_AUTO_POP;
rte_spinlock_init(&dlb2->qm_instance.resource_lock);
diff --git a/drivers/event/dlb2/dlb2_priv.h b/drivers/event/dlb2/dlb2_priv.h
index 4118d69465..ea4fdacad8 100644
--- a/drivers/event/dlb2/dlb2_priv.h
+++ b/drivers/event/dlb2/dlb2_priv.h
@@ -348,5 +348,5 @@ struct dlb2_port {
uint16_t dir_credits;
uint32_t dequeue_depth;
- enum dlb2_token_pop_mode token_pop_mode;
+ enum rte_pmd_dlb2_token_pop_mode token_pop_mode;
union dlb2_port_config cfg;
RTE_ATOMIC(uint32_t) *credit_pool[DLB2_NUM_QUEUE_TYPES];
diff --git a/drivers/event/dlb2/dlb2_selftest.c b/drivers/event/dlb2/dlb2_selftest.c
index 62aa11d981..87d98700c9 100644
--- a/drivers/event/dlb2/dlb2_selftest.c
+++ b/drivers/event/dlb2/dlb2_selftest.c
@@ -1106,5 +1106,5 @@ test_deferred_sched(void)
}
- ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 0, DEFERRED_POP);
+ ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 0, RTE_PMD_DLB2_DEFERRED_POP);
if (ret < 0) {
printf("%d: Error setting deferred scheduling\n", __LINE__);
@@ -1112,5 +1112,5 @@ test_deferred_sched(void)
}
- ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 1, DEFERRED_POP);
+ ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 1, RTE_PMD_DLB2_DEFERRED_POP);
if (ret < 0) {
printf("%d: Error setting deferred scheduling\n", __LINE__);
@@ -1258,5 +1258,5 @@ test_delayed_pop(void)
}
- ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 0, DELAYED_POP);
+ ret = rte_pmd_dlb2_set_token_pop_mode(evdev, 0, RTE_PMD_DLB2_DELAYED_POP);
if (ret < 0) {
printf("%d: Error setting deferred scheduling\n", __LINE__);
diff --git a/drivers/event/dlb2/rte_pmd_dlb2.c b/drivers/event/dlb2/rte_pmd_dlb2.c
index 43990e46ac..20681b25ed 100644
--- a/drivers/event/dlb2/rte_pmd_dlb2.c
+++ b/drivers/event/dlb2/rte_pmd_dlb2.c
@@ -13,5 +13,5 @@ int
rte_pmd_dlb2_set_token_pop_mode(uint8_t dev_id,
uint8_t port_id,
- enum dlb2_token_pop_mode mode)
+ enum rte_pmd_dlb2_token_pop_mode mode)
{
struct dlb2_eventdev *dlb2;
@@ -23,5 +23,5 @@ rte_pmd_dlb2_set_token_pop_mode(uint8_t dev_id,
dlb2 = dlb2_pmd_priv(dev);
- if (mode >= NUM_TOKEN_POP_MODES)
+ if (mode >= RTE_PMD_DLB2_NUM_TOKEN_POP_MODES)
return -EINVAL;
diff --git a/drivers/event/dlb2/rte_pmd_dlb2.h b/drivers/event/dlb2/rte_pmd_dlb2.h
index 207ce6a3fd..31ce20d414 100644
--- a/drivers/event/dlb2/rte_pmd_dlb2.h
+++ b/drivers/event/dlb2/rte_pmd_dlb2.h
@@ -50,16 +50,16 @@ extern "C" {
* Selects the token pop mode for a DLB2 port.
*/
-enum dlb2_token_pop_mode {
+enum rte_pmd_dlb2_token_pop_mode {
/* Pop the CQ tokens immediately after dequeuing. */
- AUTO_POP,
+ RTE_PMD_DLB2_AUTO_POP,
/* Pop CQ tokens after (dequeue_depth - 1) events are released.
* Supported on load-balanced ports only.
*/
- DELAYED_POP,
+ RTE_PMD_DLB2_DELAYED_POP,
/* Pop the CQ tokens during next dequeue operation. */
- DEFERRED_POP,
+ RTE_PMD_DLB2_DEFERRED_POP,
/* NUM_TOKEN_POP_MODES must be last */
- NUM_TOKEN_POP_MODES
+ RTE_PMD_DLB2_NUM_TOKEN_POP_MODES
};
@@ -69,6 +69,7 @@ enum dlb2_token_pop_mode {
*
* Configure the token pop mode for a DLB2 port. By default, all ports use
- * AUTO_POP. This function must be called before calling rte_event_port_setup()
- * for the port, but after calling rte_event_dev_configure().
+ * RTE_PMD_DLB2_AUTO_POP. This function must be called before calling
+ * rte_event_port_setup() for the port, but after calling
+ * rte_event_dev_configure().
*
* @param dev_id
@@ -81,7 +82,7 @@ enum dlb2_token_pop_mode {
* @return
* - 0: Success
- * - EINVAL: Invalid dev_id, port_id, or mode
- * - EINVAL: The DLB2 is not configured, is already running, or the port is
- * already setup
+ * - EINVAL: Invalid parameter dev_id, port_id, or mode
+ * - EINVAL: The DLB2 device is not configured or is already running,
+ * or the port is already setup
*/
@@ -90,5 +91,5 @@ int
rte_pmd_dlb2_set_token_pop_mode(uint8_t dev_id,
uint8_t port_id,
- enum dlb2_token_pop_mode mode);
+ enum rte_pmd_dlb2_token_pop_mode mode);
#ifdef __cplusplus
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.687719753 +0100
+++ 0133-event-dlb2-fix-public-symbol-namespace.patch 2025-07-18 20:29:11.091907824 +0100
@@ -1 +1 @@
-From e31d4679575571890974730c989aa286cb516398 Mon Sep 17 00:00:00 2001
+From 5ac3674a4726e8c399840be1e3040dc550f633d3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e31d4679575571890974730c989aa286cb516398 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index fd8cc70f3c..084875f1c8 100644
+index 12c045f4e3..07a37d9aad 100644
@@ -26 +27 @@
-@@ -1820,5 +1820,5 @@ dlb2_hw_create_ldb_port(struct dlb2_eventdev *dlb2,
+@@ -1672,5 +1672,5 @@ dlb2_hw_create_ldb_port(struct dlb2_eventdev *dlb2,
@@ -33 +34 @@
-@@ -2022,5 +2022,5 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
+@@ -1881,5 +1881,5 @@ dlb2_hw_create_dir_port(struct dlb2_eventdev *dlb2,
@@ -40 +41 @@
-@@ -3360,5 +3360,5 @@ __dlb2_event_enqueue_burst_reorder(void *event_port,
+@@ -3133,5 +3133,5 @@ __dlb2_event_enqueue_burst_reorder(void *event_port,
@@ -47 +48 @@
-@@ -3469,5 +3469,5 @@ __dlb2_event_enqueue_burst(void *event_port,
+@@ -3238,5 +3238,5 @@ __dlb2_event_enqueue_burst(void *event_port,
@@ -54 +55 @@
-@@ -3621,5 +3621,5 @@ dlb2_event_release(struct dlb2_eventdev *dlb2,
+@@ -3388,5 +3388,5 @@ dlb2_event_release(struct dlb2_eventdev *dlb2,
@@ -61 +62 @@
-@@ -4366,5 +4366,5 @@ dlb2_hw_dequeue_sparse(struct dlb2_eventdev *dlb2,
+@@ -4132,5 +4132,5 @@ dlb2_hw_dequeue_sparse(struct dlb2_eventdev *dlb2,
@@ -68 +69 @@
-@@ -4496,5 +4496,5 @@ dlb2_hw_dequeue(struct dlb2_eventdev *dlb2,
+@@ -4260,5 +4260,5 @@ dlb2_hw_dequeue(struct dlb2_eventdev *dlb2,
@@ -75 +76 @@
-@@ -4541,5 +4541,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
+@@ -4297,5 +4297,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
@@ -82 +83 @@
-@@ -4549,5 +4549,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
+@@ -4305,5 +4305,5 @@ dlb2_event_dequeue_burst(void *event_port, struct rte_event *ev, uint16_t num,
@@ -89 +90 @@
-@@ -4598,5 +4598,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
+@@ -4346,5 +4346,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
@@ -97 +98 @@
-@@ -4606,5 +4607,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
+@@ -4354,5 +4355,6 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
@@ -105 +106 @@
-@@ -4615,5 +4617,5 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
+@@ -4363,5 +4365,5 @@ dlb2_event_dequeue_burst_sparse(void *event_port, struct rte_event *ev,
@@ -112 +113 @@
-@@ -5143,5 +5145,5 @@ dlb2_primary_eventdev_probe(struct rte_eventdev *dev,
+@@ -4805,5 +4807,5 @@ dlb2_primary_eventdev_probe(struct rte_eventdev *dev,
@@ -120 +121 @@
-index 30d1d5b9ae..7a5cbcca1e 100644
+index 4118d69465..ea4fdacad8 100644
@@ -123 +124 @@
-@@ -350,5 +350,5 @@ struct dlb2_port {
+@@ -348,5 +348,5 @@ struct dlb2_port {
@@ -156 +157 @@
-index b75010027d..80186dd07d 100644
+index 43990e46ac..20681b25ed 100644
@@ -159 +160 @@
-@@ -15,5 +15,5 @@ int
+@@ -13,5 +13,5 @@ int
@@ -166 +167 @@
-@@ -25,5 +25,5 @@ rte_pmd_dlb2_set_token_pop_mode(uint8_t dev_id,
+@@ -23,5 +23,5 @@ rte_pmd_dlb2_set_token_pop_mode(uint8_t dev_id,
@@ -174 +175 @@
-index f58ef2168d..33e741261d 100644
+index 207ce6a3fd..31ce20d414 100644
@@ -226 +227 @@
- /** Set inflight threshold for flow migration */
+ #ifdef __cplusplus
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'app/eventdev: fix number of releases sent during cleanup' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (131 preceding siblings ...)
2025-07-18 19:31 ` patch 'event/dlb2: fix public symbol namespace' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'eventdev: fix flag types consistency' " Kevin Traynor
` (41 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pravin Pathak; +Cc: Pavan Nikhilesh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/97a1a3b6c5b27b6fafd4a257a83e588aa881b7ba
Thanks.
Kevin
---
From 97a1a3b6c5b27b6fafd4a257a83e588aa881b7ba Mon Sep 17 00:00:00 2001
From: Pravin Pathak <pravin.pathak@intel.com>
Date: Sun, 22 Jun 2025 13:13:52 -0500
Subject: [PATCH] app/eventdev: fix number of releases sent during cleanup
[ upstream commit c2ef482eaa0928ee47abe71cd740456a68d88e77 ]
During cleanup, only send releases for events app was
not able to enqueue. Current code is sending releases for
entire dequeue burst.
Fixes: f0b68c0b2af7 ("app/eventdev: clean up worker state before exit")
Signed-off-by: Pravin Pathak <pravin.pathak@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
app/test-eventdev/test_perf_common.c | 4 ++--
app/test-eventdev/test_pipeline_common.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 627f07caa1..897d980ad8 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -1712,7 +1712,7 @@ perf_worker_cleanup(struct rte_mempool *const pool, uint8_t dev_id,
rte_mempool_put(pool, events[i].event_ptr);
- for (i = 0; i < nb_deq; i++)
+ for (i = nb_enq; i < nb_deq; i++)
events[i].op = RTE_EVENT_OP_RELEASE;
- rte_event_enqueue_burst(dev_id, port_id, events, nb_deq);
+ rte_event_enqueue_burst(dev_id, port_id, events + nb_enq, nb_deq - nb_enq);
}
rte_event_port_quiesce(dev_id, port_id, perf_event_port_flush, pool);
diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
index 204117ef7f..c1382ac188 100644
--- a/app/test-eventdev/test_pipeline_common.c
+++ b/app/test-eventdev/test_pipeline_common.c
@@ -685,8 +685,8 @@ pipeline_worker_cleanup(uint8_t dev, uint8_t port, struct rte_event ev[],
}
- for (i = 0; i < deq; i++)
+ for (i = enq; i < deq; i++)
ev[i].op = RTE_EVENT_OP_RELEASE;
- rte_event_enqueue_burst(dev, port, ev, deq);
+ rte_event_enqueue_burst(dev, port, ev + enq, deq - enq);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.727906124 +0100
+++ 0134-app-eventdev-fix-number-of-releases-sent-during-clea.patch 2025-07-18 20:29:11.093907830 +0100
@@ -1 +1 @@
-From c2ef482eaa0928ee47abe71cd740456a68d88e77 Mon Sep 17 00:00:00 2001
+From 97a1a3b6c5b27b6fafd4a257a83e588aa881b7ba Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c2ef482eaa0928ee47abe71cd740456a68d88e77 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 4709de8b07..f77557e765 100644
+index 627f07caa1..897d980ad8 100644
@@ -24 +25 @@
-@@ -1834,7 +1834,7 @@ perf_worker_cleanup(struct rte_mempool *const pool, uint8_t dev_id,
+@@ -1712,7 +1712,7 @@ perf_worker_cleanup(struct rte_mempool *const pool, uint8_t dev_id,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'eventdev: fix flag types consistency' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (132 preceding siblings ...)
2025-07-18 19:31 ` patch 'app/eventdev: fix number of releases sent during cleanup' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ntnic: unmap DMA during queue release' " Kevin Traynor
` (40 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Mattias Rönnblom; +Cc: Jerin Jacob, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a3f90ac8fda920647c60774dbb8daf34aaba7b5b
Thanks.
Kevin
---
From a3f90ac8fda920647c60774dbb8daf34aaba7b5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mattias=20R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>
Date: Thu, 26 Jun 2025 16:18:44 +0200
Subject: [PATCH] eventdev: fix flag types consistency
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3734cf22abf8c467d093dcdc83a025ce1aa186db ]
Make RTE_EVENT_DEV_CAP_* flags' type consistent with the
rte_event_dev_info.event_dev_cap's type.
Make RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT consistent with
rte_event_dev_config.event_dev_cfg.
Make RTE_EVENT_QUEUE_CFG_* consistent with
rte_event_queue_conf.event_queue_cfg.
Make RTE_EVENT_PORT_CFG_* consistent with
rte_event_port_conf.event_port_cfg.
Make RTE_EVENT_TIMER_ADAPTER_CAP_* consistent with the caps parameter
in rte_event_eth_rx_adapter_caps_get().
The flags were all unsigned long longs (64 bits), but the
event_dev_cap, event_dev_cfg, event_queue_cfg, and event_port_cfg
fields and the caps parameter are all uint32_t. This change makes the
flags uint32_ts.
Fixes: 71f238432865 ("eventdev: introduce event driven programming model")
Fixes: 73e6b8c93dca ("eventdev: introduce burst mode capability")
Fixes: ec36d881f56d ("eventdev: add implicit release disable capability")
Fixes: 29653a7bfec1 ("eventdev: extend capability flags")
Fixes: bd99189724b8 ("eventdev: negate maintenance capability flag")
Fixes: d007a7f39de3 ("eventdev: introduce link profiles")
Fixes: acc65ee307f7 ("eventdev: introduce event pre-scheduling")
Fixes: c1bdd86d04d1 ("eventdev: add event port pre-schedule modify")
Fixes: acc65ee307f7 ("eventdev: introduce event pre-scheduling")
Fixes: 47d05b292820 ("eventdev: add timer adapter common code")
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
---
lib/eventdev/rte_eventdev.h | 67 +++++++++++++++++++------------------
1 file changed, 34 insertions(+), 33 deletions(-)
diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
index fabd1490db..7649882b53 100644
--- a/lib/eventdev/rte_eventdev.h
+++ b/lib/eventdev/rte_eventdev.h
@@ -238,6 +238,7 @@
*/
-#include <rte_compat.h>
+#include <rte_bitops.h>
#include <rte_common.h>
+#include <rte_compat.h>
#include <rte_errno.h>
#include <rte_mbuf_pool_ops.h>
@@ -250,5 +251,5 @@ struct rte_event;
/* Event device capability bitmap flags */
-#define RTE_EVENT_DEV_CAP_QUEUE_QOS (1ULL << 0)
+#define RTE_EVENT_DEV_CAP_QUEUE_QOS RTE_BIT32(0)
/**< Event scheduling prioritization is based on the priority and weight
* associated with each event queue.
@@ -268,5 +269,5 @@ struct rte_event;
* @see rte_event_queue_attr_set()
*/
-#define RTE_EVENT_DEV_CAP_EVENT_QOS (1ULL << 1)
+#define RTE_EVENT_DEV_CAP_EVENT_QOS RTE_BIT32(1)
/**< Event scheduling prioritization is based on the priority associated with
* each event.
@@ -282,5 +283,5 @@ struct rte_event;
* @see rte_event_enqueue_burst()
*/
-#define RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED (1ULL << 2)
+#define RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED RTE_BIT32(2)
/**< Event device operates in distributed scheduling mode.
*
@@ -292,5 +293,5 @@ struct rte_event;
* @see rte_event_dev_service_id_get()
*/
-#define RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES (1ULL << 3)
+#define RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES RTE_BIT32(3)
/**< Event device is capable of accepting enqueued events, of any type
* advertised as supported by the device, to all destination queues.
@@ -316,5 +317,5 @@ struct rte_event;
* @see rte_event_enqueue_burst()
*/
-#define RTE_EVENT_DEV_CAP_BURST_MODE (1ULL << 4)
+#define RTE_EVENT_DEV_CAP_BURST_MODE RTE_BIT32(4)
/**< Event device is capable of operating in burst mode for enqueue(forward,
* release) and dequeue operation.
@@ -327,5 +328,5 @@ struct rte_event;
* @see rte_event_enqueue_burst()
*/
-#define RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE (1ULL << 5)
+#define RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE RTE_BIT32(5)
/**< Event device ports support disabling the implicit release feature, in
* which the port will release all unreleased events in its dequeue operation.
@@ -340,5 +341,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_NONSEQ_MODE (1ULL << 6)
+#define RTE_EVENT_DEV_CAP_NONSEQ_MODE RTE_BIT32(6)
/**< Event device is capable of operating in non-sequential mode.
*
@@ -352,5 +353,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK (1ULL << 7)
+#define RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK RTE_BIT32(7)
/**< Event device is capable of reconfiguring the queue/port link at runtime.
*
@@ -363,5 +364,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT (1ULL << 8)
+#define RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT RTE_BIT32(8)
/**< Event device is capable of setting up links between multiple queues and a single port.
*
@@ -373,5 +374,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_CARRY_FLOW_ID (1ULL << 9)
+#define RTE_EVENT_DEV_CAP_CARRY_FLOW_ID RTE_BIT32(9)
/**< Event device preserves the flow ID from the enqueued event to the dequeued event.
*
@@ -382,5 +383,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE (1ULL << 10)
+#define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE RTE_BIT32(10)
/**< Event device *does not* require calls to rte_event_maintain().
*
@@ -395,5 +396,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR (1ULL << 11)
+#define RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR RTE_BIT32(11)
/**< Event device is capable of changing the queue attributes at runtime i.e
* after rte_event_queue_setup() or rte_event_dev_start() call sequence.
@@ -405,5 +406,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_PROFILE_LINK (1ULL << 12)
+#define RTE_EVENT_DEV_CAP_PROFILE_LINK RTE_BIT32(12)
/**< Event device is capable of supporting multiple link profiles per event port.
*
@@ -419,5 +420,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_ATOMIC (1ULL << 13)
+#define RTE_EVENT_DEV_CAP_ATOMIC RTE_BIT32(13)
/**< Event device is capable of atomic scheduling.
* When this flag is set, the application can configure queues with scheduling type
@@ -427,5 +428,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_ORDERED (1ULL << 14)
+#define RTE_EVENT_DEV_CAP_ORDERED RTE_BIT32(14)
/**< Event device is capable of ordered scheduling.
* When this flag is set, the application can configure queues with scheduling type
@@ -435,5 +436,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_PARALLEL (1ULL << 15)
+#define RTE_EVENT_DEV_CAP_PARALLEL RTE_BIT32(15)
/**< Event device is capable of parallel scheduling.
* When this flag is set, the application can configure queues with scheduling type
@@ -443,5 +444,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ (1ULL << 16)
+#define RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ RTE_BIT32(16)
/**< Event device is capable of independent enqueue.
* A new capability, RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ, will indicate that Eventdev
@@ -462,5 +463,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE (1ULL << 17)
+#define RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE RTE_BIT32(17)
/**< Event device supports event pre-scheduling.
*
@@ -474,5 +475,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE_ADAPTIVE (1ULL << 18)
+#define RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE_ADAPTIVE RTE_BIT32(18)
/**< Event device supports adaptive event pre-scheduling.
*
@@ -486,5 +487,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_PER_PORT_PRESCHEDULE (1ULL << 19)
+#define RTE_EVENT_DEV_CAP_PER_PORT_PRESCHEDULE RTE_BIT32(19)
/**< Event device supports event pre-scheduling per event port.
*
@@ -496,5 +497,5 @@ struct rte_event;
*/
-#define RTE_EVENT_DEV_CAP_PRESCHEDULE_EXPLICIT (1ULL << 20)
+#define RTE_EVENT_DEV_CAP_PRESCHEDULE_EXPLICIT RTE_BIT32(20)
/**< Event device supports explicit pre-scheduling.
*
@@ -734,5 +735,5 @@ rte_event_dev_attr_get(uint8_t dev_id, uint32_t attr_id,
/* Event device configuration bitmap flags */
-#define RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT (1ULL << 0)
+#define RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT RTE_BIT32(0)
/**< Override the global *dequeue_timeout_ns* and use per dequeue timeout in ns.
* @see rte_event_dequeue_timeout_ticks(), rte_event_dequeue_burst()
@@ -874,5 +875,5 @@ rte_event_dev_configure(uint8_t dev_id,
/* Event queue configuration bitmap flags */
-#define RTE_EVENT_QUEUE_CFG_ALL_TYPES (1ULL << 0)
+#define RTE_EVENT_QUEUE_CFG_ALL_TYPES RTE_BIT32(0)
/**< Allow events with schedule types ATOMIC, ORDERED, and PARALLEL to be enqueued to this queue.
*
@@ -888,5 +889,5 @@ rte_event_dev_configure(uint8_t dev_id,
* @see rte_event_enqueue_burst()
*/
-#define RTE_EVENT_QUEUE_CFG_SINGLE_LINK (1ULL << 1)
+#define RTE_EVENT_QUEUE_CFG_SINGLE_LINK RTE_BIT32(1)
/**< This event queue links only to a single event port.
*
@@ -1114,5 +1115,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
/* Event port configuration bitmap flags */
-#define RTE_EVENT_PORT_CFG_DISABLE_IMPL_REL (1ULL << 0)
+#define RTE_EVENT_PORT_CFG_DISABLE_IMPL_REL RTE_BIT32(0)
/**< Configure the port not to release outstanding events in
* rte_event_dev_dequeue_burst(). If set, all events received through
@@ -1121,5 +1122,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
* RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE capable.
*/
-#define RTE_EVENT_PORT_CFG_SINGLE_LINK (1ULL << 1)
+#define RTE_EVENT_PORT_CFG_SINGLE_LINK RTE_BIT32(1)
/**< This event port links only to a single event queue.
* The queue it links with should be similarly configured with the
@@ -1129,5 +1130,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
* @see rte_event_port_setup(), rte_event_port_link()
*/
-#define RTE_EVENT_PORT_CFG_HINT_PRODUCER (1ULL << 2)
+#define RTE_EVENT_PORT_CFG_HINT_PRODUCER RTE_BIT32(2)
/**< Hint that this event port will primarily enqueue events to the system.
* A PMD can optimize its internal workings by assuming that this port is
@@ -1139,5 +1140,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
* @see rte_event_port_setup()
*/
-#define RTE_EVENT_PORT_CFG_HINT_CONSUMER (1ULL << 3)
+#define RTE_EVENT_PORT_CFG_HINT_CONSUMER RTE_BIT32(3)
/**< Hint that this event port will primarily dequeue events from the system.
* A PMD can optimize its internal workings by assuming that this port is
@@ -1150,5 +1151,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
* @see rte_event_port_setup()
*/
-#define RTE_EVENT_PORT_CFG_HINT_WORKER (1ULL << 4)
+#define RTE_EVENT_PORT_CFG_HINT_WORKER RTE_BIT32(4)
/**< Hint that this event port will primarily pass existing events through.
* A PMD can optimize its internal workings by assuming that this port is
@@ -1161,5 +1162,5 @@ rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
* @see rte_event_port_setup()
*/
-#define RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ (1ULL << 5)
+#define RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ RTE_BIT32(5)
/**< Flag to enable independent enqueue. Must not be set if the device
* is not RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ capable. This feature
@@ -1836,8 +1837,8 @@ rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id,
uint32_t *caps);
-#define RTE_EVENT_TIMER_ADAPTER_CAP_INTERNAL_PORT (1ULL << 0)
+#define RTE_EVENT_TIMER_ADAPTER_CAP_INTERNAL_PORT RTE_BIT32(0)
/**< This flag is set when the timer mechanism is in HW. */
-#define RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC (1ULL << 1)
+#define RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC RTE_BIT32(1)
/**< This flag is set if periodic mode is supported. */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.770179227 +0100
+++ 0135-eventdev-fix-flag-types-consistency.patch 2025-07-18 20:29:11.095907837 +0100
@@ -1 +1 @@
-From 3734cf22abf8c467d093dcdc83a025ce1aa186db Mon Sep 17 00:00:00 2001
+From a3f90ac8fda920647c60774dbb8daf34aaba7b5b Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3734cf22abf8c467d093dcdc83a025ce1aa186db ]
+
@@ -39 +40,0 @@
-Cc: stable@dpdk.org
@@ -48 +49 @@
-index 3c7fcbf0be..88c52a5520 100644
+index fabd1490db..7649882b53 100644
@@ -270 +271 @@
-@@ -1840,8 +1841,8 @@ rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id,
+@@ -1836,8 +1837,8 @@ rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ntnic: unmap DMA during queue release' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (133 preceding siblings ...)
2025-07-18 19:31 ` patch 'eventdev: fix flag types consistency' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix ntuple filter parsing' " Kevin Traynor
` (39 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Oleksandr Kolomeiets; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4719664fc8d68658bd2187851a72a0ec5e752c18
Thanks.
Kevin
---
From 4719664fc8d68658bd2187851a72a0ec5e752c18 Mon Sep 17 00:00:00 2001
From: Oleksandr Kolomeiets <okl-plv@napatech.com>
Date: Tue, 1 Jul 2025 12:20:27 +0200
Subject: [PATCH] net/ntnic: unmap DMA during queue release
[ upstream commit 842c1cee225ca8c79a8a321e2194f83d54a4495a ]
Perform unmapping in a default container, which is used by queues.
Handle multiple mappings when IOMMU is unoptimized.
Fixes: c1c139535591 ("net/ntnic: add VFIO module")
Signed-off-by: Oleksandr Kolomeiets <okl-plv@napatech.com>
---
drivers/net/ntnic/include/ntos_drv.h | 1 +
drivers/net/ntnic/ntnic_ethdev.c | 26 ++++++++++++++++++++++++--
drivers/net/ntnic/ntnic_vfio.c | 3 ---
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ntnic/include/ntos_drv.h b/drivers/net/ntnic/include/ntos_drv.h
index f6ce442d17..cf3bb2396b 100644
--- a/drivers/net/ntnic/include/ntos_drv.h
+++ b/drivers/net/ntnic/include/ntos_drv.h
@@ -52,4 +52,5 @@ struct hwq_s {
int vf_num;
struct nthw_memory_descriptor virt_queues_ctrl;
+ struct nthw_memory_descriptor pkt_buffers_ctrl;
struct nthw_memory_descriptor *pkt_buffers;
};
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 2a2643a106..3c668a41ef 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -879,4 +879,8 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
return -1;
+ hwq->pkt_buffers_ctrl.virt_addr = virt_addr;
+ hwq->pkt_buffers_ctrl.phys_addr = (void *)iova_addr;
+ hwq->pkt_buffers_ctrl.len = size;
+
for (i = 0; i < num_descr; i++) {
hwq->pkt_buffers[i].virt_addr =
@@ -900,7 +904,11 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
hwq->virt_queues_ctrl.virt_addr = virt;
hwq->virt_queues_ctrl.phys_addr = (void *)(iova_addr);
- hwq->virt_queues_ctrl.len = 0x100000;
+ hwq->virt_queues_ctrl.len = ONE_G_SIZE;
iova_addr += 0x100000;
+ hwq->pkt_buffers_ctrl.virt_addr = NULL;
+ hwq->pkt_buffers_ctrl.phys_addr = NULL;
+ hwq->pkt_buffers_ctrl.len = 0;
+
NT_LOG(DBG, NTNIC,
"VFIO MMAP: virt_addr=%p phys_addr=%p size=%" PRIX32 " hpa=%" PRIX64 "",
@@ -947,5 +955,5 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
int res = nt_vfio_dma_unmap(vf_num, hwq->virt_queues_ctrl.virt_addr,
- (uint64_t)hwq->virt_queues_ctrl.phys_addr, ONE_G_SIZE);
+ (uint64_t)hwq->virt_queues_ctrl.phys_addr, hwq->virt_queues_ctrl.len);
if (res != 0) {
@@ -954,4 +962,18 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
}
+ if (hwq->pkt_buffers_ctrl.virt_addr != NULL &&
+ hwq->pkt_buffers_ctrl.phys_addr != NULL &&
+ hwq->pkt_buffers_ctrl.len > 0) {
+ int res = nt_vfio_dma_unmap(vf_num,
+ hwq->pkt_buffers_ctrl.virt_addr,
+ (uint64_t)hwq->pkt_buffers_ctrl.phys_addr,
+ hwq->pkt_buffers_ctrl.len);
+
+ if (res != 0) {
+ NT_LOG(ERR, NTNIC, "VFIO UNMMAP FAILED! res %i, vf_num %i", res, vf_num);
+ return -1;
+ }
+ }
+
release_hw_virtio_queues(hwq);
rte_free(hwq->pkt_buffers);
diff --git a/drivers/net/ntnic/ntnic_vfio.c b/drivers/net/ntnic/ntnic_vfio.c
index a62234353b..8ddf676b99 100644
--- a/drivers/net/ntnic/ntnic_vfio.c
+++ b/drivers/net/ntnic/ntnic_vfio.c
@@ -213,7 +213,4 @@ nt_vfio_dma_unmap(int vf_num, void *virt_addr, uint64_t iova_addr, uint64_t size
}
- if (vfio->container_fd == -1)
- return 0;
-
int res = rte_vfio_container_dma_unmap(vfio->container_fd, gp_virt_base, iova_addr, size);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.807999110 +0100
+++ 0136-net-ntnic-unmap-DMA-during-queue-release.patch 2025-07-18 20:29:11.097907843 +0100
@@ -1 +1 @@
-From 842c1cee225ca8c79a8a321e2194f83d54a4495a Mon Sep 17 00:00:00 2001
+From 4719664fc8d68658bd2187851a72a0ec5e752c18 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 842c1cee225ca8c79a8a321e2194f83d54a4495a ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index cef3c5c277..047c077057 100644
+index f6ce442d17..cf3bb2396b 100644
@@ -30 +31 @@
-index d875e7c236..79ef9e7e7c 100644
+index 2a2643a106..3c668a41ef 100644
@@ -33 +34 @@
-@@ -880,4 +880,8 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
+@@ -879,4 +879,8 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
@@ -42 +43 @@
-@@ -901,7 +905,11 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
+@@ -900,7 +904,11 @@ static int allocate_hw_virtio_queues(struct rte_eth_dev *eth_dev, int vf_num, st
@@ -55 +56 @@
-@@ -949,5 +957,5 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
+@@ -947,5 +955,5 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
@@ -62 +63 @@
-@@ -956,4 +964,18 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
+@@ -954,4 +962,18 @@ static int deallocate_hw_virtio_queues(struct hwq_s *hwq)
@@ -82 +83 @@
-index 8d955e8342..1031b3cf67 100644
+index a62234353b..8ddf676b99 100644
@@ -85 +86 @@
-@@ -212,7 +212,4 @@ nt_vfio_dma_unmap(int vf_num, void *virt_addr, uint64_t iova_addr, uint64_t size
+@@ -213,7 +213,4 @@ nt_vfio_dma_unmap(int vf_num, void *virt_addr, uint64_t iova_addr, uint64_t size
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix ntuple filter parsing' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (134 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ntnic: unmap DMA during queue release' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix raw pattern match for FDIR rule' " Kevin Traynor
` (38 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/bd50b4bd8c263b302d6d24f71bda115b6ec0f231
Thanks.
Kevin
---
From bd50b4bd8c263b302d6d24f71bda115b6ec0f231 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:44 +0800
Subject: [PATCH] net/txgbe: fix ntuple filter parsing
[ upstream commit bed0e6aba0aef7a1e67d3ee620873817f00a511d ]
The rule is incorrectly parsed to ntuple filter when setting the pattern
likes:
flow create ... ipv4 / udp dst is ... / raw ... / end actions ... / end
It causes the rule to be created successfully, but not works. Fix it to
parse for FDIR rules.
Fixes: b7eeecb17556 ("net/txgbe: parse n-tuple filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_flow.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 5d2dd45368..e0b1e1e5ba 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -362,5 +362,5 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr,
if (item->type != RTE_FLOW_ITEM_TYPE_END &&
(!item->spec && !item->mask)) {
- goto action;
+ goto item_end;
}
@@ -491,4 +491,5 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr,
}
+item_end:
/* check if the next not void item is END */
item = next_no_void_pattern(pattern, item);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.843865190 +0100
+++ 0137-net-txgbe-fix-ntuple-filter-parsing.patch 2025-07-18 20:29:11.099907849 +0100
@@ -1 +1 @@
-From bed0e6aba0aef7a1e67d3ee620873817f00a511d Mon Sep 17 00:00:00 2001
+From bd50b4bd8c263b302d6d24f71bda115b6ec0f231 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bed0e6aba0aef7a1e67d3ee620873817f00a511d ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 1d854d0767..269f0b54e3 100644
+index 5d2dd45368..e0b1e1e5ba 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix raw pattern match for FDIR rule' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (135 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix ntuple filter parsing' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix packet type for FDIR filter' " Kevin Traynor
` (37 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/cac9d1b2e71b6bcf4c9603f6a92eed5f38f1681c
Thanks.
Kevin
---
From cac9d1b2e71b6bcf4c9603f6a92eed5f38f1681c Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:45 +0800
Subject: [PATCH] net/txgbe: fix raw pattern match for FDIR rule
[ upstream commit aa4974765499225e13225190a0dc6adaab785c80 ]
The raw pattern is required to be two hex bytes on hardware, but it is
string in the raw item. So the length of raw spec should be 4, and the
string should be converted to the two hex bytes. And relative of raw
spec is supported to be optical.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.h | 5 ++-
drivers/net/txgbe/txgbe_fdir.c | 24 +++++++++++++--
drivers/net/txgbe/txgbe_flow.c | 53 ++++++++++++++++++++++++--------
3 files changed, 67 insertions(+), 15 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index 302ea9f037..50a81ca1ec 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -117,4 +117,5 @@ struct txgbe_fdir_rule {
uint8_t queue; /* assigned rx queue */
uint8_t flex_bytes_offset;
+ bool flex_relative;
};
@@ -122,4 +123,5 @@ struct txgbe_hw_fdir_info {
struct txgbe_hw_fdir_mask mask;
uint8_t flex_bytes_offset;
+ bool flex_relative;
uint16_t collision;
uint16_t free;
@@ -557,6 +559,7 @@ void txgbe_set_ivar_map(struct txgbe_hw *hw, int8_t direction,
int txgbe_fdir_configure(struct rte_eth_dev *dev);
int txgbe_fdir_set_input_mask(struct rte_eth_dev *dev);
+uint16_t txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule);
int txgbe_fdir_set_flexbytes_offset(struct rte_eth_dev *dev,
- uint16_t offset);
+ uint16_t offset, uint16_t flex_base);
int txgbe_fdir_filter_program(struct rte_eth_dev *dev,
struct txgbe_fdir_rule *rule,
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index f627ab681d..75bf30c00c 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -259,7 +259,22 @@ txgbe_fdir_store_input_mask(struct rte_eth_dev *dev)
}
+uint16_t
+txgbe_fdir_get_flex_base(struct txgbe_fdir_rule *rule)
+{
+ if (!rule->flex_relative)
+ return TXGBE_FDIRFLEXCFG_BASE_MAC;
+
+ if (rule->input.flow_type & TXGBE_ATR_L4TYPE_MASK)
+ return TXGBE_FDIRFLEXCFG_BASE_PAY;
+
+ if (rule->input.flow_type & TXGBE_ATR_L3TYPE_MASK)
+ return TXGBE_FDIRFLEXCFG_BASE_L3;
+
+ return TXGBE_FDIRFLEXCFG_BASE_L2;
+}
+
int
txgbe_fdir_set_flexbytes_offset(struct rte_eth_dev *dev,
- uint16_t offset)
+ uint16_t offset, uint16_t flex_base)
{
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
@@ -269,5 +284,5 @@ txgbe_fdir_set_flexbytes_offset(struct rte_eth_dev *dev,
uint32_t flexreg, flex;
flexreg = rd32(hw, TXGBE_FDIRFLEXCFG(i / 4));
- flex = TXGBE_FDIRFLEXCFG_BASE_MAC;
+ flex = flex_base;
flex |= TXGBE_FDIRFLEXCFG_OFST(offset / 2);
flexreg &= ~(TXGBE_FDIRFLEXCFG_ALL(~0UL, i % 4));
@@ -911,4 +926,9 @@ txgbe_fdir_flush(struct rte_eth_dev *dev)
info->remove = 0;
+ memset(&info->mask, 0, sizeof(struct txgbe_hw_fdir_mask));
+ info->mask_added = false;
+ info->flex_relative = false;
+ info->flex_bytes_offset = 0;
+
return ret;
}
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index e0b1e1e5ba..210928a4fe 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2067,4 +2067,6 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
/* 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) {
@@ -2083,4 +2085,5 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
}
+ rule->b_mask = TRUE;
raw_mask = item->mask;
@@ -2099,17 +2102,19 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
}
+ rule->b_spec = TRUE;
raw_spec = item->spec;
/* check spec */
- if (raw_spec->relative != 0 ||
- raw_spec->search != 0 ||
+ 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 != 2 ||
+ raw_spec->length != 4 ||
/* pattern can't be 0xffff */
(raw_spec->pattern[0] == 0xff &&
- raw_spec->pattern[1] == 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,
@@ -2121,5 +2126,7 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
/* check pattern mask */
if (raw_mask->pattern[0] != 0xff ||
- raw_mask->pattern[1] != 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,
@@ -2130,8 +2137,17 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
rule->mask.flex_bytes_mask = 0xffff;
- rule->input.flex_bytes =
- (((uint16_t)raw_spec->pattern[1]) << 8) |
- raw_spec->pattern[0];
+ /* 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;
}
@@ -2834,8 +2850,14 @@ txgbe_flow_create(struct rte_eth_dev *dev,
fdir_info->flex_bytes_offset =
fdir_rule.flex_bytes_offset;
+ fdir_info->flex_relative = fdir_rule.flex_relative;
- if (fdir_rule.mask.flex_bytes_mask)
+ if (fdir_rule.mask.flex_bytes_mask) {
+ uint16_t flex_base;
+
+ flex_base = txgbe_fdir_get_flex_base(&fdir_rule);
txgbe_fdir_set_flexbytes_offset(dev,
- fdir_rule.flex_bytes_offset);
+ fdir_rule.flex_bytes_offset,
+ flex_base);
+ }
ret = txgbe_fdir_set_input_mask(dev);
@@ -2859,5 +2881,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
if (fdir_info->flex_bytes_offset !=
- fdir_rule.flex_bytes_offset)
+ fdir_rule.flex_bytes_offset ||
+ fdir_info->flex_relative !=
+ fdir_rule.flex_relative)
goto out;
}
@@ -3087,6 +3111,11 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
fdir_rule_ptr, entries);
rte_free(fdir_rule_ptr);
- if (TAILQ_EMPTY(&filter_fdir_list))
+ if (TAILQ_EMPTY(&filter_fdir_list)) {
+ memset(&fdir_info->mask, 0,
+ sizeof(struct txgbe_hw_fdir_mask));
fdir_info->mask_added = false;
+ fdir_info->flex_relative = false;
+ fdir_info->flex_bytes_offset = 0;
+ }
}
break;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.879656568 +0100
+++ 0138-net-txgbe-fix-raw-pattern-match-for-FDIR-rule.patch 2025-07-18 20:29:11.101907855 +0100
@@ -1 +1 @@
-From aa4974765499225e13225190a0dc6adaab785c80 Mon Sep 17 00:00:00 2001
+From cac9d1b2e71b6bcf4c9603f6a92eed5f38f1681c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit aa4974765499225e13225190a0dc6adaab785c80 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 36d51fcbb8..0a3c634937 100644
+index 302ea9f037..50a81ca1ec 100644
@@ -37 +38 @@
-@@ -562,6 +564,7 @@ void txgbe_set_ivar_map(struct txgbe_hw *hw, int8_t direction,
+@@ -557,6 +559,7 @@ void txgbe_set_ivar_map(struct txgbe_hw *hw, int8_t direction,
@@ -92 +93 @@
-index 269f0b54e3..8670c3e1d7 100644
+index e0b1e1e5ba..210928a4fe 100644
@@ -162 +163 @@
-@@ -2837,8 +2853,14 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -2834,8 +2850,14 @@ txgbe_flow_create(struct rte_eth_dev *dev,
@@ -179 +180 @@
-@@ -2862,5 +2884,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -2859,5 +2881,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
@@ -188 +189 @@
-@@ -3090,6 +3114,11 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
+@@ -3087,6 +3111,11 @@ txgbe_flow_destroy(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix packet type for FDIR filter' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (136 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix raw pattern match for FDIR rule' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix to create FDIR filter for SCTP packet' " Kevin Traynor
` (36 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6ed8313d388c3d5d66b2f4f319f908f65a4751ac
Thanks.
Kevin
---
From 6ed8313d388c3d5d66b2f4f319f908f65a4751ac Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:46 +0800
Subject: [PATCH] net/txgbe: fix packet type for FDIR filter
[ upstream commit 8d10841e5acd381c7831e421103872d12e806780 ]
To match the packet type more flexibly when the pattern is default, add
packet type mask for FDIR filters.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_type.h | 20 +--
drivers/net/txgbe/txgbe_ethdev.h | 3 +-
drivers/net/txgbe/txgbe_fdir.c | 16 +--
drivers/net/txgbe/txgbe_flow.c | 188 +++++++++++++++-------------
4 files changed, 116 insertions(+), 111 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h
index 4371876649..383438ea3c 100644
--- a/drivers/net/txgbe/base/txgbe_type.h
+++ b/drivers/net/txgbe/base/txgbe_type.h
@@ -89,6 +89,9 @@ enum {
#define TXGBE_ATR_L4TYPE_TCP 0x2
#define TXGBE_ATR_L4TYPE_SCTP 0x3
-#define TXGBE_ATR_TUNNEL_MASK 0x10
-#define TXGBE_ATR_TUNNEL_ANY 0x10
+#define TXGBE_ATR_TYPE_MASK_TUN 0x80
+#define TXGBE_ATR_TYPE_MASK_TUN_OUTIP 0x40
+#define TXGBE_ATR_TYPE_MASK_TUN_TYPE 0x20
+#define TXGBE_ATR_TYPE_MASK_L3P 0x10
+#define TXGBE_ATR_TYPE_MASK_L4P 0x08
enum txgbe_atr_flow_type {
TXGBE_ATR_FLOW_TYPE_IPV4 = 0x0,
@@ -100,12 +103,4 @@ enum txgbe_atr_flow_type {
TXGBE_ATR_FLOW_TYPE_TCPV6 = 0x6,
TXGBE_ATR_FLOW_TYPE_SCTPV6 = 0x7,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_IPV4 = 0x10,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_UDPV4 = 0x11,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_TCPV4 = 0x12,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_SCTPV4 = 0x13,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_IPV6 = 0x14,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_UDPV6 = 0x15,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_TCPV6 = 0x16,
- TXGBE_ATR_FLOW_TYPE_TUNNELED_SCTPV6 = 0x17,
};
@@ -117,9 +112,6 @@ struct txgbe_atr_input {
* vm_pool - 1 byte
* flow_type - 1 byte
- * vlan_id - 2 bytes
+ * pkt_type - 2 bytes
* src_ip - 16 bytes
- * inner_mac - 6 bytes
- * cloud_mode - 2 bytes
- * tni_vni - 4 bytes
* dst_ip - 16 bytes
* src_port - 2 bytes
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index 50a81ca1ec..5134c3d99e 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -92,6 +92,5 @@ struct txgbe_hw_fdir_mask {
uint16_t flex_bytes_mask;
uint8_t mac_addr_byte_mask;
- uint32_t tunnel_id_mask;
- uint8_t tunnel_type_mask;
+ uint8_t pkt_type_mask; /* reversed mask for hw */
};
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 75bf30c00c..0d12fb9a11 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -188,16 +188,10 @@ txgbe_fdir_set_input_mask(struct rte_eth_dev *dev)
}
- /*
- * Program the relevant mask registers. If src/dst_port or src/dst_addr
- * are zero, then assume a full mask for that field. Also assume that
- * a VLAN of 0 is unspecified, so mask that out as well. L4type
- * cannot be masked out in this implementation.
- */
- if (info->mask.dst_port_mask == 0 && info->mask.src_port_mask == 0) {
- /* use the L4 protocol mask for raw IPv4/IPv6 traffic */
- fdirm |= TXGBE_FDIRMSK_L4P;
- }
+ /* use the L4 protocol mask for raw IPv4/IPv6 traffic */
+ if (info->mask.pkt_type_mask == 0 && info->mask.dst_port_mask == 0 &&
+ info->mask.src_port_mask == 0)
+ info->mask.pkt_type_mask |= TXGBE_FDIRMSK_L4P;
- /* TBD: don't support encapsulation yet */
+ fdirm |= info->mask.pkt_type_mask;
wr32(hw, TXGBE_FDIRMSK, fdirm);
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index 210928a4fe..abed0c1e00 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -1488,6 +1488,39 @@ static inline uint8_t signature_match(const struct rte_flow_item pattern[])
}
+static void
+txgbe_fdir_parse_flow_type(struct txgbe_atr_input *input, u8 ptid, bool tun)
+{
+ if (!tun)
+ ptid = TXGBE_PTID_PKT_IP;
+
+ switch (input->flow_type & TXGBE_ATR_L4TYPE_MASK) {
+ case TXGBE_ATR_L4TYPE_UDP:
+ ptid |= TXGBE_PTID_TYP_UDP;
+ break;
+ case TXGBE_ATR_L4TYPE_TCP:
+ ptid |= TXGBE_PTID_TYP_TCP;
+ break;
+ case TXGBE_ATR_L4TYPE_SCTP:
+ ptid |= TXGBE_PTID_TYP_SCTP;
+ break;
+ default:
+ break;
+ }
+
+ switch (input->flow_type & TXGBE_ATR_L3TYPE_MASK) {
+ case TXGBE_ATR_L3TYPE_IPV4:
+ break;
+ case TXGBE_ATR_L3TYPE_IPV6:
+ ptid |= TXGBE_PTID_PKT_IPV6;
+ break;
+ default:
+ break;
+ }
+
+ input->pkt_type = cpu_to_be16(ptid);
+}
+
/**
- * Parse the rule to see if it is a IP or MAC VLAN flow director rule.
+ * Parse the rule to see if it is a IP flow director rule.
* And get the flow director filter info BTW.
* UDP/TCP/SCTP PATTERN:
@@ -1556,5 +1589,4 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
const struct rte_flow_item_raw *raw_mask;
const struct rte_flow_item_raw *raw_spec;
- u32 ptype = 0;
uint8_t j;
@@ -1586,4 +1618,7 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
memset(&rule->mask, 0, sizeof(struct txgbe_hw_fdir_mask));
+ rule->mask.pkt_type_mask = TXGBE_ATR_TYPE_MASK_L3P |
+ TXGBE_ATR_TYPE_MASK_L4P;
+ memset(&rule->input, 0, sizeof(struct txgbe_atr_input));
/**
@@ -1688,5 +1723,7 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
} else {
if (item->type != RTE_FLOW_ITEM_TYPE_IPV4 &&
- item->type != RTE_FLOW_ITEM_TYPE_VLAN) {
+ item->type != RTE_FLOW_ITEM_TYPE_VLAN &&
+ item->type != RTE_FLOW_ITEM_TYPE_IPV6 &&
+ item->type != RTE_FLOW_ITEM_TYPE_RAW) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -1696,4 +1733,6 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
}
}
+ if (item->type == RTE_FLOW_ITEM_TYPE_VLAN)
+ item = next_no_fuzzy_pattern(pattern, item);
}
@@ -1705,5 +1744,5 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
*/
rule->input.flow_type = TXGBE_ATR_FLOW_TYPE_IPV4;
- ptype = txgbe_ptype_table[TXGBE_PT_IPV4];
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P;
/*Not supported last point for range*/
if (item->last) {
@@ -1717,29 +1756,24 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
* others should be masked.
*/
- if (!item->mask) {
- 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;
+ if (item->mask) {
+ rule->b_mask = TRUE;
+ ipv4_mask = item->mask;
+ if (ipv4_mask->hdr.version_ihl ||
+ ipv4_mask->hdr.type_of_service ||
+ ipv4_mask->hdr.total_length ||
+ ipv4_mask->hdr.packet_id ||
+ ipv4_mask->hdr.fragment_offset ||
+ ipv4_mask->hdr.time_to_live ||
+ ipv4_mask->hdr.next_proto_id ||
+ ipv4_mask->hdr.hdr_checksum) {
+ 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.dst_ipv4_mask = ipv4_mask->hdr.dst_addr;
+ rule->mask.src_ipv4_mask = ipv4_mask->hdr.src_addr;
}
- rule->b_mask = TRUE;
- ipv4_mask = item->mask;
- if (ipv4_mask->hdr.version_ihl ||
- ipv4_mask->hdr.type_of_service ||
- ipv4_mask->hdr.total_length ||
- ipv4_mask->hdr.packet_id ||
- ipv4_mask->hdr.fragment_offset ||
- ipv4_mask->hdr.time_to_live ||
- ipv4_mask->hdr.next_proto_id ||
- ipv4_mask->hdr.hdr_checksum) {
- 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.dst_ipv4_mask = ipv4_mask->hdr.dst_addr;
- rule->mask.src_ipv4_mask = ipv4_mask->hdr.src_addr;
if (item->spec) {
@@ -1777,14 +1811,12 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
*/
rule->input.flow_type = TXGBE_ATR_FLOW_TYPE_IPV6;
- ptype = txgbe_ptype_table[TXGBE_PT_IPV6];
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P;
/**
* 1. must signature match
* 2. not support last
- * 3. mask must not null
*/
if (rule->mode != RTE_FDIR_MODE_SIGNATURE ||
- item->last ||
- !item->mask) {
+ item->last) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -1794,22 +1826,11 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
}
- rule->b_mask = TRUE;
- ipv6_mask = item->mask;
- if (ipv6_mask->hdr.vtc_flow ||
- ipv6_mask->hdr.payload_len ||
- ipv6_mask->hdr.proto ||
- ipv6_mask->hdr.hop_limits) {
- 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 src addr mask */
- for (j = 0; j < 16; j++) {
- if (ipv6_mask->hdr.src_addr.a[j] == UINT8_MAX) {
- rule->mask.src_ipv6_mask |= 1 << j;
- } else if (ipv6_mask->hdr.src_addr.a[j] != 0) {
+ if (item->mask) {
+ rule->b_mask = TRUE;
+ ipv6_mask = item->mask;
+ if (ipv6_mask->hdr.vtc_flow ||
+ ipv6_mask->hdr.payload_len ||
+ ipv6_mask->hdr.proto ||
+ ipv6_mask->hdr.hop_limits) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -1818,16 +1839,29 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
return -rte_errno;
}
- }
- /* 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) {
- 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 src addr mask */
+ for (j = 0; j < 16; j++) {
+ if (ipv6_mask->hdr.src_addr.a[j] == UINT8_MAX) {
+ rule->mask.src_ipv6_mask |= 1 << j;
+ } else if (ipv6_mask->hdr.src_addr.a[j] != 0) {
+ 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 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) {
+ 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;
+ }
}
}
@@ -1867,8 +1901,6 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
*/
rule->input.flow_type |= TXGBE_ATR_L4TYPE_TCP;
- if (rule->input.flow_type & TXGBE_ATR_FLOW_TYPE_IPV6)
- ptype = txgbe_ptype_table[TXGBE_PT_IPV6_TCP];
- else
- ptype = txgbe_ptype_table[TXGBE_PT_IPV4_TCP];
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+
/*Not supported last point for range*/
if (item->last) {
@@ -1934,8 +1966,6 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
*/
rule->input.flow_type |= TXGBE_ATR_L4TYPE_UDP;
- if (rule->input.flow_type & TXGBE_ATR_FLOW_TYPE_IPV6)
- ptype = txgbe_ptype_table[TXGBE_PT_IPV6_UDP];
- else
- ptype = txgbe_ptype_table[TXGBE_PT_IPV4_UDP];
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+
/*Not supported last point for range*/
if (item->last) {
@@ -1996,8 +2026,6 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
*/
rule->input.flow_type |= TXGBE_ATR_L4TYPE_SCTP;
- if (rule->input.flow_type & TXGBE_ATR_FLOW_TYPE_IPV6)
- ptype = txgbe_ptype_table[TXGBE_PT_IPV6_SCTP];
- else
- ptype = txgbe_ptype_table[TXGBE_PT_IPV4_SCTP];
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+
/*Not supported last point for range*/
if (item->last) {
@@ -2164,15 +2192,5 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
}
- rule->input.pkt_type = cpu_to_be16(txgbe_encode_ptype(ptype));
-
- if (rule->input.flow_type & TXGBE_ATR_FLOW_TYPE_IPV6) {
- if (rule->input.flow_type & TXGBE_ATR_L4TYPE_MASK)
- rule->input.pkt_type &= 0xFFFF;
- else
- rule->input.pkt_type &= 0xF8FF;
-
- rule->input.flow_type &= TXGBE_ATR_L3TYPE_MASK |
- TXGBE_ATR_L4TYPE_MASK;
- }
+ txgbe_fdir_parse_flow_type(&rule->input, 0, false);
return txgbe_parse_fdir_act_attr(attr, actions, rule, error);
@@ -2861,4 +2879,6 @@ txgbe_flow_create(struct rte_eth_dev *dev,
}
+ fdir_info->mask.pkt_type_mask =
+ fdir_rule.mask.pkt_type_mask;
ret = txgbe_fdir_set_input_mask(dev);
if (ret)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.915467725 +0100
+++ 0139-net-txgbe-fix-packet-type-for-FDIR-filter.patch 2025-07-18 20:29:11.104907864 +0100
@@ -1 +1 @@
-From 8d10841e5acd381c7831e421103872d12e806780 Mon Sep 17 00:00:00 2001
+From 6ed8313d388c3d5d66b2f4f319f908f65a4751ac Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8d10841e5acd381c7831e421103872d12e806780 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -61 +62 @@
-index 0a3c634937..01e8a9fc05 100644
+index 50a81ca1ec..5134c3d99e 100644
@@ -99 +100 @@
-index 8670c3e1d7..bce88aebd3 100644
+index 210928a4fe..abed0c1e00 100644
@@ -367 +368 @@
-@@ -2864,4 +2882,6 @@ txgbe_flow_create(struct rte_eth_dev *dev,
+@@ -2861,4 +2879,6 @@ txgbe_flow_create(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix to create FDIR filter for SCTP packet' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (137 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix packet type for FDIR filter' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix FDIR perfect mode for IPv6' " Kevin Traynor
` (35 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/4eb460ede5db8e26dc7050d61c008a68df402b4c
Thanks.
Kevin
---
From 4eb460ede5db8e26dc7050d61c008a68df402b4c Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:47 +0800
Subject: [PATCH] net/txgbe: fix to create FDIR filter for SCTP packet
[ upstream commit 0db38d54b57a963bab33dca65c1795eefdca2dd5 ]
The check for the mask of SCTP item is repeated and wrong, fix it to
make it work.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
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 abed0c1e00..d87739f54c 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2068,17 +2068,4 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
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;
- }
item = next_no_fuzzy_pattern(pattern, item);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.946724823 +0100
+++ 0140-net-txgbe-fix-to-create-FDIR-filter-for-SCTP-packet.patch 2025-07-18 20:29:11.106907870 +0100
@@ -1 +1 @@
-From 0db38d54b57a963bab33dca65c1795eefdca2dd5 Mon Sep 17 00:00:00 2001
+From 4eb460ede5db8e26dc7050d61c008a68df402b4c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0db38d54b57a963bab33dca65c1795eefdca2dd5 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index bce88aebd3..c7cbf96a46 100644
+index abed0c1e00..d87739f54c 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix FDIR perfect mode for IPv6' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (138 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix to create FDIR filter for SCTP packet' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix to create FDIR filter for tunnel packet' " Kevin Traynor
` (34 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1e3b146e4468441cc773b7a378d158e12bab61b3
Thanks.
Kevin
---
From 1e3b146e4468441cc773b7a378d158e12bab61b3 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:48 +0800
Subject: [PATCH] net/txgbe: fix FDIR perfect mode for IPv6
[ upstream commit db4878838ad0e978352cad411f4a72d0cead81fe ]
Perfect mode of FDIR rules to filter IPv6 packets is supported by
hardware. Remove the restriction and fix the setting.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_fdir.c | 22 ++++++++--------------
drivers/net/txgbe/txgbe_flow.c | 7 +------
2 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 0d12fb9a11..0efd43b59a 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -211,13 +211,10 @@ txgbe_fdir_set_input_mask(struct rte_eth_dev *dev)
wr32(hw, TXGBE_FDIRDIP4MSK, ~info->mask.dst_ipv4_mask);
- if (mode == RTE_FDIR_MODE_SIGNATURE) {
- /*
- * 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);
-
- wr32(hw, TXGBE_FDIRIP6MSK, ~fdiripv6m);
- }
+ /*
+ * 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);
+ wr32(hw, TXGBE_FDIRIP6MSK, ~fdiripv6m);
return 0;
@@ -643,4 +640,6 @@ fdir_write_perfect_filter(struct txgbe_hw *hw,
fdircmd |= TXGBE_FDIRPICMD_POOL(input->vm_pool);
+ if (input->flow_type & TXGBE_ATR_L3TYPE_IPV6)
+ fdircmd |= TXGBE_FDIRPICMD_IP6;
wr32(hw, TXGBE_FDIRPICMD, fdircmd);
@@ -811,9 +810,4 @@ txgbe_fdir_filter_program(struct rte_eth_dev *dev,
if (is_perfect) {
- if (rule->input.flow_type & TXGBE_ATR_L3TYPE_IPV6) {
- PMD_DRV_LOG(ERR, "IPv6 is not supported in"
- " perfect mode!");
- return -ENOTSUP;
- }
fdirhash = atr_compute_perfect_hash(&rule->input,
TXGBE_DEV_FDIR_CONF(dev)->pballoc);
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index d87739f54c..b2a2e35351 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -1813,10 +1813,5 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P;
- /**
- * 1. must signature match
- * 2. not support last
- */
- if (rule->mode != RTE_FDIR_MODE_SIGNATURE ||
- item->last) {
+ if (item->last) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:15.977497412 +0100
+++ 0141-net-txgbe-fix-FDIR-perfect-mode-for-IPv6.patch 2025-07-18 20:29:11.108907876 +0100
@@ -1 +1 @@
-From db4878838ad0e978352cad411f4a72d0cead81fe Mon Sep 17 00:00:00 2001
+From 1e3b146e4468441cc773b7a378d158e12bab61b3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit db4878838ad0e978352cad411f4a72d0cead81fe ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -60 +61 @@
-index c7cbf96a46..145ee8a452 100644
+index d87739f54c..b2a2e35351 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix to create FDIR filter for tunnel packet' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (139 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix FDIR perfect mode for IPv6' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix reserved extra FDIR headroom' " Kevin Traynor
` (33 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/07eee8a0d85b840aff239360a2fcb393dcbcb826
Thanks.
Kevin
---
From 07eee8a0d85b840aff239360a2fcb393dcbcb826 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:49 +0800
Subject: [PATCH] net/txgbe: fix to create FDIR filter for tunnel packet
[ upstream commit a1851465f8252ee75a26d05b9b2d3dca7023e8f2 ]
Fix to create FDIR rules for VXLAN/GRE/NVGRE/GENEVE packets, they will
match the rules in the inner layers.
Fixes: b973ee26747a ("net/txgbe: parse flow director filter")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
doc/guides/nics/features/txgbe.ini | 2 +
drivers/net/txgbe/txgbe_ethdev.h | 1 -
drivers/net/txgbe/txgbe_flow.c | 591 +++++++++++++++++++++++------
3 files changed, 481 insertions(+), 113 deletions(-)
diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini
index be0af3dfad..ef9f0cfa0a 100644
--- a/doc/guides/nics/features/txgbe.ini
+++ b/doc/guides/nics/features/txgbe.ini
@@ -59,4 +59,6 @@ eth = P
e_tag = Y
fuzzy = Y
+geneve = Y
+gre = Y
ipv4 = Y
ipv6 = Y
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index 5134c3d99e..288d9a43da 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -91,5 +91,4 @@ struct txgbe_hw_fdir_mask {
uint16_t dst_port_mask;
uint16_t flex_bytes_mask;
- uint8_t mac_addr_byte_mask;
uint8_t pkt_type_mask; /* reversed mask for hw */
};
diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index b2a2e35351..7482cbbf63 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -2180,39 +2180,27 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused,
/**
- * Parse the rule to see if it is a VxLAN or NVGRE flow director rule.
+ * Parse the rule to see if it is a IP tunnel flow director rule.
* And get the flow director filter info BTW.
- * VxLAN PATTERN:
- * The first not void item must be ETH.
- * The second not void item must be IPV4/ IPV6.
- * The third not void item must be NVGRE.
- * The next not void item must be END.
- * NVGRE PATTERN:
- * The first not void item must be ETH.
- * The second not void item must be IPV4/ IPV6.
- * The third not void item must be NVGRE.
+ * PATTERN:
+ * The first not void item can be ETH or IPV4 or IPV6 or UDP or tunnel type.
+ * The second not void item must be IPV4 or IPV6 if the first one is ETH.
+ * The next not void item could be UDP or tunnel type.
+ * The next not void item could be a certain inner layer.
* The next not void item must be END.
* ACTION:
- * The first not void action should be QUEUE or DROP.
- * The second not void optional action should be MARK,
- * mark_id is a uint32_t number.
+ * The first not void action should be QUEUE.
* The next not void action should be END.
- * VxLAN pattern example:
+ * pattern example:
* ITEM Spec Mask
* ETH NULL NULL
- * IPV4/IPV6 NULL NULL
+ * IPV4 NULL NULL
* UDP NULL NULL
- * VxLAN vni{0x00, 0x32, 0x54} {0xFF, 0xFF, 0xFF}
- * MAC VLAN tci 0x2016 0xEFFF
- * END
- * NEGRV pattern example:
- * ITEM Spec Mask
+ * VXLAN NULL NULL
* ETH NULL NULL
- * IPV4/IPV6 NULL NULL
- * NVGRE protocol 0x6558 0xFFFF
- * tni{0x00, 0x32, 0x54} {0xFF, 0xFF, 0xFF}
- * MAC VLAN tci 0x2016 0xEFFF
+ * IPV4 src_addr 192.168.1.20 0xFFFFFFFF
+ * dst_addr 192.167.3.50 0xFFFFFFFF
+ * UDP/TCP/SCTP src_port 80 0xFFFF
+ * dst_port 80 0xFFFF
* END
- * other members in mask and spec should set to 0x00.
- * item->last should be NULL.
*/
static int
@@ -2225,4 +2213,15 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
const struct rte_flow_item *item;
const struct rte_flow_item_eth *eth_mask;
+ const struct rte_flow_item_ipv4 *ipv4_spec;
+ const struct rte_flow_item_ipv4 *ipv4_mask;
+ const struct rte_flow_item_ipv6 *ipv6_spec;
+ const struct rte_flow_item_ipv6 *ipv6_mask;
+ const struct rte_flow_item_tcp *tcp_spec;
+ const struct rte_flow_item_tcp *tcp_mask;
+ const struct rte_flow_item_udp *udp_spec;
+ const struct rte_flow_item_udp *udp_mask;
+ const struct rte_flow_item_sctp *sctp_spec;
+ const struct rte_flow_item_sctp *sctp_mask;
+ u8 ptid = 0;
uint32_t j;
@@ -2253,10 +2252,12 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
*/
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
- memset(&rule->mask, 0xFF, sizeof(struct txgbe_hw_fdir_mask));
- rule->mask.vlan_tci_mask = 0;
+ memset(&rule->mask, 0, sizeof(struct txgbe_hw_fdir_mask));
+ rule->mask.pkt_type_mask = TXGBE_ATR_TYPE_MASK_TUN_OUTIP |
+ TXGBE_ATR_TYPE_MASK_L3P |
+ TXGBE_ATR_TYPE_MASK_L4P;
/**
* The first not void item should be
- * MAC or IPv4 or IPv6 or UDP or VxLAN.
+ * MAC or IPv4 or IPv6 or UDP or tunnel.
*/
item = next_no_void_pattern(pattern, NULL);
@@ -2266,5 +2267,7 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
item->type != RTE_FLOW_ITEM_TYPE_UDP &&
item->type != RTE_FLOW_ITEM_TYPE_VXLAN &&
- item->type != RTE_FLOW_ITEM_TYPE_NVGRE) {
+ item->type != RTE_FLOW_ITEM_TYPE_NVGRE &&
+ item->type != RTE_FLOW_ITEM_TYPE_GRE &&
+ item->type != RTE_FLOW_ITEM_TYPE_GENEVE) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2274,5 +2277,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
}
- rule->mode = RTE_FDIR_MODE_PERFECT_TUNNEL;
+ rule->mode = RTE_FDIR_MODE_PERFECT;
+ ptid = TXGBE_PTID_PKT_TUN;
/* Skip MAC. */
@@ -2296,4 +2300,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
/* Check if the next not void item is IPv4 or IPv6. */
item = next_no_void_pattern(pattern, item);
+ if (item->type == RTE_FLOW_ITEM_TYPE_VLAN)
+ item = next_no_fuzzy_pattern(pattern, item);
if (item->type != RTE_FLOW_ITEM_TYPE_IPV4 &&
item->type != RTE_FLOW_ITEM_TYPE_IPV6) {
@@ -2309,4 +2315,6 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
if (item->type == RTE_FLOW_ITEM_TYPE_IPV4 ||
item->type == RTE_FLOW_ITEM_TYPE_IPV6) {
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_TUN_OUTIP;
+
/* Only used to describe the protocol stack. */
if (item->spec || item->mask) {
@@ -2325,8 +2333,15 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
}
- /* Check if the next not void item is UDP or NVGRE. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_IPV6)
+ ptid |= TXGBE_PTID_TUN_IPV6;
+
item = next_no_void_pattern(pattern, item);
- if (item->type != RTE_FLOW_ITEM_TYPE_UDP &&
- item->type != RTE_FLOW_ITEM_TYPE_NVGRE) {
+ if (item->type != RTE_FLOW_ITEM_TYPE_IPV4 &&
+ item->type != RTE_FLOW_ITEM_TYPE_IPV6 &&
+ item->type != RTE_FLOW_ITEM_TYPE_UDP &&
+ item->type != RTE_FLOW_ITEM_TYPE_VXLAN &&
+ item->type != RTE_FLOW_ITEM_TYPE_GRE &&
+ item->type != RTE_FLOW_ITEM_TYPE_NVGRE &&
+ item->type != RTE_FLOW_ITEM_TYPE_GENEVE) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2339,4 +2354,29 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
/* Skip UDP. */
if (item->type == RTE_FLOW_ITEM_TYPE_UDP) {
+ /*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;
+ }
+
+ /* Check if the next not void item is VxLAN or GENEVE. */
+ item = next_no_void_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_VXLAN &&
+ item->type != RTE_FLOW_ITEM_TYPE_GENEVE) {
+ 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;
+ }
+ }
+
+ /* Skip tunnel. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_VXLAN ||
+ item->type == RTE_FLOW_ITEM_TYPE_GRE ||
+ item->type == RTE_FLOW_ITEM_TYPE_NVGRE ||
+ item->type == RTE_FLOW_ITEM_TYPE_GENEVE) {
/* Only used to describe the protocol stack. */
if (item->spec || item->mask) {
@@ -2355,7 +2395,13 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
}
- /* Check if the next not void item is VxLAN. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_GRE)
+ ptid |= TXGBE_PTID_TUN_EIG;
+ else
+ ptid |= TXGBE_PTID_TUN_EIGM;
+
item = next_no_void_pattern(pattern, item);
- if (item->type != RTE_FLOW_ITEM_TYPE_VXLAN) {
+ if (item->type != RTE_FLOW_ITEM_TYPE_ETH &&
+ item->type != RTE_FLOW_ITEM_TYPE_IPV4 &&
+ item->type != RTE_FLOW_ITEM_TYPE_IPV6) {
memset(rule, 0, sizeof(struct txgbe_fdir_rule));
rte_flow_error_set(error, EINVAL,
@@ -2366,98 +2412,419 @@ txgbe_parse_fdir_filter_tunnel(const struct rte_flow_attr *attr,
}
- /* check if the next not void item is MAC */
- item = next_no_void_pattern(pattern, item);
- if (item->type != RTE_FLOW_ITEM_TYPE_ETH) {
- 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 MAC info. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_ETH) {
+ /**
+ * Only support vlan and dst MAC address,
+ * others should be masked.
+ */
+ if (item->spec && !item->mask) {
+ 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;
+ }
+
+ if (item->mask) {
+ rule->b_mask = TRUE;
+ eth_mask = item->mask;
- /**
- * Only support vlan and dst MAC address,
- * others should be masked.
- */
-
- if (!item->mask) {
- 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;
+ /* Ether type should be masked. */
+ if (eth_mask->hdr.ether_type) {
+ 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;
+ }
+
+ /**
+ * src MAC address must be masked,
+ * and don't support dst MAC address mask.
+ */
+ for (j = 0; j < RTE_ETHER_ADDR_LEN; j++) {
+ if (eth_mask->hdr.src_addr.addr_bytes[j] ||
+ eth_mask->hdr.dst_addr.addr_bytes[j] != 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;
+ }
+ }
+
+ /* When no VLAN, considered as full mask. */
+ rule->mask.vlan_tci_mask = rte_cpu_to_be_16(0xEFFF);
+ }
+
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (rule->mask.vlan_tci_mask) {
+ if (item->type != RTE_FLOW_ITEM_TYPE_VLAN) {
+ 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;
+ }
+ } else {
+ if (item->type != RTE_FLOW_ITEM_TYPE_IPV4 &&
+ item->type != RTE_FLOW_ITEM_TYPE_IPV6 &&
+ item->type != RTE_FLOW_ITEM_TYPE_VLAN) {
+ 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;
+ }
+ }
+ if (item->type == RTE_FLOW_ITEM_TYPE_VLAN) {
+ ptid |= TXGBE_PTID_TUN_EIGMV;
+ item = next_no_fuzzy_pattern(pattern, item);
+ }
}
- /*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;
+
+ /* Get the IPV4 info. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_IPV4) {
+ /**
+ * Set the flow type even if there's no content
+ * as we must have a flow type.
+ */
+ rule->input.flow_type = TXGBE_ATR_FLOW_TYPE_IPV4;
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P;
+
+ /*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;
+ }
+ /**
+ * Only care about src & dst addresses,
+ * others should be masked.
+ */
+ if (item->spec && !item->mask) {
+ 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;
+ }
+ if (item->mask) {
+ rule->b_mask = TRUE;
+ ipv4_mask = item->mask;
+ if (ipv4_mask->hdr.version_ihl ||
+ ipv4_mask->hdr.type_of_service ||
+ ipv4_mask->hdr.total_length ||
+ ipv4_mask->hdr.packet_id ||
+ ipv4_mask->hdr.fragment_offset ||
+ ipv4_mask->hdr.time_to_live ||
+ ipv4_mask->hdr.next_proto_id ||
+ ipv4_mask->hdr.hdr_checksum) {
+ 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.dst_ipv4_mask = ipv4_mask->hdr.dst_addr;
+ rule->mask.src_ipv4_mask = ipv4_mask->hdr.src_addr;
+ }
+ if (item->spec) {
+ rule->b_spec = TRUE;
+ ipv4_spec = item->spec;
+ rule->input.dst_ip[0] =
+ ipv4_spec->hdr.dst_addr;
+ rule->input.src_ip[0] =
+ ipv4_spec->hdr.src_addr;
+ }
+
+ /**
+ * Check if the next not void item is
+ * TCP or UDP or SCTP or END.
+ */
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_TCP &&
+ item->type != RTE_FLOW_ITEM_TYPE_UDP &&
+ item->type != RTE_FLOW_ITEM_TYPE_SCTP &&
+ 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;
+ }
}
- rule->b_mask = TRUE;
- eth_mask = item->mask;
-
- /* Ether type should be masked. */
- if (eth_mask->hdr.ether_type) {
- 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 IPV6 info. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_IPV6) {
+ /**
+ * Set the flow type even if there's no content
+ * as we must have a flow type.
+ */
+ rule->input.flow_type = TXGBE_ATR_FLOW_TYPE_IPV6;
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P;
+
+ if (item->last) {
+ memset(rule, 0, sizeof(struct txgbe_fdir_rule));
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ item, "Not supported last point for range");
+ return -rte_errno;
+ }
+ if (item->spec && !item->mask) {
+ 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;
+ }
+ if (item->mask) {
+ rule->b_mask = TRUE;
+ ipv6_mask = item->mask;
+ if (ipv6_mask->hdr.vtc_flow ||
+ ipv6_mask->hdr.payload_len ||
+ ipv6_mask->hdr.proto ||
+ ipv6_mask->hdr.hop_limits) {
+ 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 src addr mask */
+ for (j = 0; j < 16; j++) {
+ if (ipv6_mask->hdr.src_addr.a[j] == UINT8_MAX) {
+ rule->mask.src_ipv6_mask |= 1 << j;
+ } else if (ipv6_mask->hdr.src_addr.a[j] != 0) {
+ 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 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) {
+ 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;
+ }
+ }
+ }
+ if (item->spec) {
+ rule->b_spec = TRUE;
+ ipv6_spec = item->spec;
+ rte_memcpy(rule->input.src_ip,
+ &ipv6_spec->hdr.src_addr, 16);
+ rte_memcpy(rule->input.dst_ip,
+ &ipv6_spec->hdr.dst_addr, 16);
+ }
+
+ /**
+ * Check if the next not void item is
+ * TCP or UDP or SCTP or END.
+ */
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (item->type != RTE_FLOW_ITEM_TYPE_TCP &&
+ item->type != RTE_FLOW_ITEM_TYPE_UDP &&
+ item->type != RTE_FLOW_ITEM_TYPE_SCTP &&
+ 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;
+ }
}
- /* src MAC address should be masked. */
- for (j = 0; j < RTE_ETHER_ADDR_LEN; j++) {
- if (eth_mask->hdr.src_addr.addr_bytes[j]) {
- memset(rule, 0,
- sizeof(struct txgbe_fdir_rule));
+ /* Get the TCP info. */
+ if (item->type == RTE_FLOW_ITEM_TYPE_TCP) {
+ /**
+ * Set the flow type even if there's no content
+ * as we must have a flow type.
+ */
+ rule->input.flow_type |= TXGBE_ATR_L4TYPE_TCP;
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+
+ /*Not supported last point for range*/
+ if (item->last) {
rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ITEM,
- item, "Not supported by fdir filter");
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+ item, "Not supported last point for range");
+ return -rte_errno;
+ }
+ /**
+ * Only care about src & dst ports,
+ * others should be masked.
+ */
+ if (!item->mask) {
+ 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;
+ tcp_mask = item->mask;
+ if (tcp_mask->hdr.sent_seq ||
+ tcp_mask->hdr.recv_ack ||
+ tcp_mask->hdr.data_off ||
+ tcp_mask->hdr.tcp_flags ||
+ tcp_mask->hdr.rx_win ||
+ tcp_mask->hdr.cksum ||
+ tcp_mask->hdr.tcp_urp) {
+ 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.src_port_mask = tcp_mask->hdr.src_port;
+ rule->mask.dst_port_mask = tcp_mask->hdr.dst_port;
+
+ if (item->spec) {
+ rule->b_spec = TRUE;
+ tcp_spec = item->spec;
+ rule->input.src_port =
+ tcp_spec->hdr.src_port;
+ rule->input.dst_port =
+ tcp_spec->hdr.dst_port;
+ }
}
- rule->mask.mac_addr_byte_mask = 0;
- for (j = 0; j < ETH_ADDR_LEN; j++) {
- /* It's a per byte mask. */
- if (eth_mask->hdr.dst_addr.addr_bytes[j] == 0xFF) {
- rule->mask.mac_addr_byte_mask |= 0x1 << j;
- } else if (eth_mask->hdr.dst_addr.addr_bytes[j]) {
+
+ /* Get the UDP info */
+ if (item->type == RTE_FLOW_ITEM_TYPE_UDP) {
+ /**
+ * Set the flow type even if there's no content
+ * as we must have a flow type.
+ */
+ rule->input.flow_type |= TXGBE_ATR_L4TYPE_UDP;
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+ /*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;
+ }
+ /**
+ * Only care about src & dst ports,
+ * others should be masked.
+ */
+ if (!item->mask) {
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");
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ item, "Not supported by fdir filter");
return -rte_errno;
}
+ rule->b_mask = TRUE;
+ udp_mask = item->mask;
+ if (udp_mask->hdr.dgram_len ||
+ udp_mask->hdr.dgram_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;
+ }
+ rule->mask.src_port_mask = udp_mask->hdr.src_port;
+ rule->mask.dst_port_mask = udp_mask->hdr.dst_port;
+
+ if (item->spec) {
+ rule->b_spec = TRUE;
+ udp_spec = item->spec;
+ rule->input.src_port =
+ udp_spec->hdr.src_port;
+ rule->input.dst_port =
+ udp_spec->hdr.dst_port;
+ }
}
- /* When no vlan, considered as full mask. */
- rule->mask.vlan_tci_mask = rte_cpu_to_be_16(0xEFFF);
-
- /**
- * Check if the next not void item is vlan or ipv4.
- * IPv6 is not supported.
- */
- item = next_no_void_pattern(pattern, item);
- if (item->type != RTE_FLOW_ITEM_TYPE_VLAN &&
- item->type != RTE_FLOW_ITEM_TYPE_IPV4) {
- 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 SCTP info */
+ if (item->type == RTE_FLOW_ITEM_TYPE_SCTP) {
+ /**
+ * Set the flow type even if there's no content
+ * as we must have a flow type.
+ */
+ rule->input.flow_type |= TXGBE_ATR_L4TYPE_SCTP;
+ rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L4P;
+
+ /*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;
+ }
+
+ /**
+ * Only care about src & dst ports,
+ * others should be masked.
+ */
+ if (!item->mask) {
+ 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;
+ sctp_mask = item->mask;
+ if (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;
+ }
+ rule->mask.src_port_mask = sctp_mask->hdr.src_port;
+ rule->mask.dst_port_mask = sctp_mask->hdr.dst_port;
+
+ if (item->spec) {
+ rule->b_spec = TRUE;
+ sctp_spec = item->spec;
+ rule->input.src_port =
+ sctp_spec->hdr.src_port;
+ rule->input.dst_port =
+ 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;
+ }
}
- /*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;
+
+ if (item->type != RTE_FLOW_ITEM_TYPE_END) {
+ /* check if the next not void item is END */
+ item = next_no_fuzzy_pattern(pattern, item);
+ if (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;
+ }
}
- /**
- * If the tags is 0, it means don't care about the VLAN.
- * Do nothing.
- */
+ txgbe_fdir_parse_flow_type(&rule->input, ptid, true);
return txgbe_parse_fdir_act_attr(attr, actions, rule, error);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.009429124 +0100
+++ 0142-net-txgbe-fix-to-create-FDIR-filter-for-tunnel-packe.patch 2025-07-18 20:29:11.111907886 +0100
@@ -1 +1 @@
-From a1851465f8252ee75a26d05b9b2d3dca7023e8f2 Mon Sep 17 00:00:00 2001
+From 07eee8a0d85b840aff239360a2fcb393dcbcb826 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a1851465f8252ee75a26d05b9b2d3dca7023e8f2 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index 01e8a9fc05..c2d0950d2c 100644
+index 5134c3d99e..288d9a43da 100644
@@ -41 +42 @@
-index 145ee8a452..99a76daca0 100644
+index b2a2e35351..7482cbbf63 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix reserved extra FDIR headroom' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (140 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix to create FDIR filter for tunnel packet' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix MAC control frame forwarding' " Kevin Traynor
` (32 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/881863c82012133d22eedcad15b8cf46c17dc41e
Thanks.
Kevin
---
From 881863c82012133d22eedcad15b8cf46c17dc41e Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:50 +0800
Subject: [PATCH] net/txgbe: fix reserved extra FDIR headroom
[ upstream commit 3f5886d6435eb7e9add005d8e7dc880841a51465 ]
Remove redundant 256KB FDIR headroom reservation. FDIR headroom was
already allocated in txgbe_fdir_configure() when FDIR is enabled, the
second reservation resulted in 256KB less available RX packet buffer than
the theoretical size.
Fixes: 8bdc7882f376 ("net/txgbe: support DCB")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_hw.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c
index dd5d3ea1fe..82e8012654 100644
--- a/drivers/net/txgbe/base/txgbe_hw.c
+++ b/drivers/net/txgbe/base/txgbe_hw.c
@@ -2107,7 +2107,5 @@ void txgbe_set_pba(struct txgbe_hw *hw, int num_pb, u32 headroom,
UNREFERENCED_PARAMETER(hw);
-
- /* Reserve headroom */
- pbsize -= headroom;
+ UNREFERENCED_PARAMETER(headroom);
if (!num_pb)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.041361113 +0100
+++ 0143-net-txgbe-fix-reserved-extra-FDIR-headroom.patch 2025-07-18 20:29:11.113907892 +0100
@@ -1 +1 @@
-From 3f5886d6435eb7e9add005d8e7dc880841a51465 Mon Sep 17 00:00:00 2001
+From 881863c82012133d22eedcad15b8cf46c17dc41e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3f5886d6435eb7e9add005d8e7dc880841a51465 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index ae2ad87c83..76b9ee3c0a 100644
+index dd5d3ea1fe..82e8012654 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix MAC control frame forwarding' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (141 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix reserved extra FDIR headroom' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ngbe: " Kevin Traynor
` (31 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/b15ccd9412b471d0d52b7988f223c353bfcd3959
Thanks.
Kevin
---
From b15ccd9412b471d0d52b7988f223c353bfcd3959 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:53 +0800
Subject: [PATCH] net/txgbe: fix MAC control frame forwarding
[ upstream commit b71127393a37cda0de6ca088f9945ee1a148e712 ]
Test Failure on the case "test_pause_fwd_port_stop_start", which expect
MAC control frame forwarding setting still working after port stop/start.
Fix the bug to pass the test case.
Fixes: 69ce8c8a4ce3 ("net/txgbe: support flow control")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_hw.c | 9 +++++++++
drivers/net/txgbe/base/txgbe_type.h | 1 +
drivers/net/txgbe/txgbe_ethdev.c | 1 +
3 files changed, 11 insertions(+)
diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c
index 82e8012654..63447fa59a 100644
--- a/drivers/net/txgbe/base/txgbe_hw.c
+++ b/drivers/net/txgbe/base/txgbe_hw.c
@@ -227,4 +227,13 @@ s32 txgbe_setup_fc(struct txgbe_hw *hw)
}
+ /*
+ * Reconfig mac ctrl frame fwd rule to make sure it still
+ * working after port stop/start.
+ */
+ wr32m(hw, TXGBE_MACRXFLT, TXGBE_MACRXFLT_CTL_MASK,
+ (hw->fc.mac_ctrl_frame_fwd ?
+ TXGBE_MACRXFLT_CTL_NOPS : TXGBE_MACRXFLT_CTL_DROP));
+ txgbe_flush(hw);
+
DEBUGOUT("Set up FC; reg = 0x%08X", reg);
out:
diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h
index 383438ea3c..65527a22e7 100644
--- a/drivers/net/txgbe/base/txgbe_type.h
+++ b/drivers/net/txgbe/base/txgbe_type.h
@@ -300,4 +300,5 @@ struct txgbe_fc_info {
u32 low_water[TXGBE_DCB_TC_MAX]; /* Flow Ctrl Low-water */
u16 pause_time; /* Flow Control Pause timer */
+ u8 mac_ctrl_frame_fwd; /* Forward MAC control frames */
bool send_xon; /* Flow control send XON */
bool strict_ieee; /* Strict IEEE mode */
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index ea9faba2c0..7cb475d6e9 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -3587,4 +3587,5 @@ txgbe_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
hw->fc.send_xon = fc_conf->send_xon;
hw->fc.disable_fc_autoneg = !fc_conf->autoneg;
+ hw->fc.mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd;
err = txgbe_fc_enable(hw);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.070676283 +0100
+++ 0144-net-txgbe-fix-MAC-control-frame-forwarding.patch 2025-07-18 20:29:11.118907907 +0100
@@ -1 +1 @@
-From b71127393a37cda0de6ca088f9945ee1a148e712 Mon Sep 17 00:00:00 2001
+From b15ccd9412b471d0d52b7988f223c353bfcd3959 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b71127393a37cda0de6ca088f9945ee1a148e712 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 76b9ee3c0a..42cd0e0e2c 100644
+index 82e8012654..63447fa59a 100644
@@ -49 +50 @@
-index e5736bf387..b68a0557be 100644
+index ea9faba2c0..7cb475d6e9 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ngbe: fix MAC control frame forwarding' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (142 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix MAC control frame forwarding' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: fix device statistics' " Kevin Traynor
` (30 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e58a17a64a7eede07d9ba4994a7feff0286878a0
Thanks.
Kevin
---
From e58a17a64a7eede07d9ba4994a7feff0286878a0 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:54 +0800
Subject: [PATCH] net/ngbe: fix MAC control frame forwarding
[ upstream commit 31ae872822cdc89cd00926c3e162781ef927ca24 ]
Test failure on the case "test_pause_fwd_port_stop_start", which expect
MAC control frame forwarding setting still working after port stop/start.
Fix the bug to pass the test case.
Fixes: f40e9f0e2278 ("net/ngbe: support flow control")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/base/ngbe_hw.c | 9 +++++++++
drivers/net/ngbe/base/ngbe_type.h | 1 +
drivers/net/ngbe/ngbe_ethdev.c | 1 +
3 files changed, 11 insertions(+)
diff --git a/drivers/net/ngbe/base/ngbe_hw.c b/drivers/net/ngbe/base/ngbe_hw.c
index 1caeececf0..0b7f3e8bae 100644
--- a/drivers/net/ngbe/base/ngbe_hw.c
+++ b/drivers/net/ngbe/base/ngbe_hw.c
@@ -865,4 +865,13 @@ s32 ngbe_setup_fc_em(struct ngbe_hw *hw)
}
+ /*
+ * Reconfig mac ctrl frame fwd rule to make sure it still
+ * working after port stop/start.
+ */
+ wr32m(hw, NGBE_MACRXFLT, NGBE_MACRXFLT_CTL_MASK,
+ (hw->fc.mac_ctrl_frame_fwd ?
+ NGBE_MACRXFLT_CTL_NOPS : NGBE_MACRXFLT_CTL_DROP));
+ ngbe_flush(hw);
+
err = hw->phy.set_pause_adv(hw, reg_cu);
diff --git a/drivers/net/ngbe/base/ngbe_type.h b/drivers/net/ngbe/base/ngbe_type.h
index a987bbe25b..6a3cada617 100644
--- a/drivers/net/ngbe/base/ngbe_type.h
+++ b/drivers/net/ngbe/base/ngbe_type.h
@@ -109,4 +109,5 @@ struct ngbe_fc_info {
u32 low_water; /* Flow Ctrl Low-water */
u16 pause_time; /* Flow Control Pause timer */
+ u8 mac_ctrl_frame_fwd; /* Forward MAC control frames */
bool send_xon; /* Flow control send XON */
bool strict_ieee; /* Strict IEEE mode */
diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index 08e87471f6..a8f847de8d 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -2421,4 +2421,5 @@ ngbe_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
hw->fc.send_xon = fc_conf->send_xon;
hw->fc.disable_fc_autoneg = !fc_conf->autoneg;
+ hw->fc.mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd;
err = hw->mac.fc_enable(hw);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.103336375 +0100
+++ 0145-net-ngbe-fix-MAC-control-frame-forwarding.patch 2025-07-18 20:29:11.121907916 +0100
@@ -1 +1 @@
-From 31ae872822cdc89cd00926c3e162781ef927ca24 Mon Sep 17 00:00:00 2001
+From e58a17a64a7eede07d9ba4994a7feff0286878a0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 31ae872822cdc89cd00926c3e162781ef927ca24 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 6688ae6a31..bf09f8a817 100644
+index 1caeececf0..0b7f3e8bae 100644
@@ -24 +25 @@
-@@ -866,4 +866,13 @@ s32 ngbe_setup_fc_em(struct ngbe_hw *hw)
+@@ -865,4 +865,13 @@ s32 ngbe_setup_fc_em(struct ngbe_hw *hw)
@@ -39 +40 @@
-index 7a3b52ffd4..fc571c7457 100644
+index a987bbe25b..6a3cada617 100644
@@ -42 +43 @@
-@@ -113,4 +113,5 @@ struct ngbe_fc_info {
+@@ -109,4 +109,5 @@ struct ngbe_fc_info {
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: fix device statistics' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (143 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ngbe: " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ngbe: " Kevin Traynor
` (29 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f679ea273e24812f0340c9df1c676e57ffa34e9a
Thanks.
Kevin
---
From f679ea273e24812f0340c9df1c676e57ffa34e9a Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:55 +0800
Subject: [PATCH] net/txgbe: fix device statistics
[ upstream commit d1406cf06220c78245bbb9db258f488e97f903e0 ]
The extend statistic "rx_undersize_errors" is incorrectly read as the
counter of frames received with a length error, which names
"rx_length_error". And "rx_undersize_errors" is the counter of
shorter-than-64B frames received without any errors.
In addition, "tx_broadcast_packets" should use rd64() to get the full
count on the low and high registers.
Fixes: c9bb590d4295 ("net/txgbe: support device statistics")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index 7cb475d6e9..ed4f1c1360 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -2251,5 +2251,5 @@ txgbe_read_stats_registers(struct txgbe_hw *hw,
hw_stats->rx_broadcast_packets += rd64(hw, TXGBE_MACRXOCTL);
- hw_stats->tx_broadcast_packets += rd32(hw, TXGBE_MACTXOCTL);
+ hw_stats->tx_broadcast_packets += rd64(hw, TXGBE_MACTXOCTL);
hw_stats->rx_size_64_packets += rd64(hw, TXGBE_MACRX1TO64L);
@@ -2270,5 +2270,6 @@ txgbe_read_stats_registers(struct txgbe_hw *hw,
rd64(hw, TXGBE_MACTX1024TOMAXL);
- hw_stats->rx_undersize_errors += rd64(hw, TXGBE_MACRXERRLENL);
+ hw_stats->rx_length_errors += rd64(hw, TXGBE_MACRXERRLENL);
+ hw_stats->rx_undersize_errors += rd32(hw, TXGBE_MACRXUNDERSIZE);
hw_stats->rx_oversize_cnt += rd32(hw, TXGBE_MACRXOVERSIZE);
hw_stats->rx_jabber_errors += rd32(hw, TXGBE_MACRXJABBER);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.134220500 +0100
+++ 0146-net-txgbe-fix-device-statistics.patch 2025-07-18 20:29:11.124907925 +0100
@@ -1 +1 @@
-From d1406cf06220c78245bbb9db258f488e97f903e0 Mon Sep 17 00:00:00 2001
+From f679ea273e24812f0340c9df1c676e57ffa34e9a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d1406cf06220c78245bbb9db258f488e97f903e0 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index b68a0557be..580579094b 100644
+index 7cb475d6e9..ed4f1c1360 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ngbe: fix device statistics' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (144 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: fix device statistics' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: restrict VLAN strip configuration on VF' " Kevin Traynor
` (28 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a09cf04d7af5da46df6dca2febf4b10db4085e58
Thanks.
Kevin
---
From a09cf04d7af5da46df6dca2febf4b10db4085e58 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:56 +0800
Subject: [PATCH] net/ngbe: fix device statistics
[ upstream commit a65009b7621a60faeb1bbefe65160eb5646925dc ]
The extend statistic "rx_undersize_errors" is incorrectly read as the
counter of frames received with a length error, which names
"rx_length_error". And "rx_undersize_errors" is the counter of
shorter-than-64B frames received without any errors.
In addition, "tx_broadcast_packets" should use rd64() to get the full
count on the low and high registers.
Fixes: fdb1e851975a ("net/ngbe: support basic statistics")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_ethdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index a8f847de8d..d3ac40299f 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -1430,5 +1430,5 @@ ngbe_read_stats_registers(struct ngbe_hw *hw,
hw_stats->rx_broadcast_packets += rd64(hw, NGBE_MACRXOCTL);
- hw_stats->tx_broadcast_packets += rd32(hw, NGBE_MACTXOCTL);
+ hw_stats->tx_broadcast_packets += rd64(hw, NGBE_MACTXOCTL);
hw_stats->rx_size_64_packets += rd64(hw, NGBE_MACRX1TO64L);
@@ -1449,5 +1449,6 @@ ngbe_read_stats_registers(struct ngbe_hw *hw,
rd64(hw, NGBE_MACTX1024TOMAXL);
- hw_stats->rx_undersize_errors += rd64(hw, NGBE_MACRXERRLENL);
+ hw_stats->rx_length_errors += rd64(hw, NGBE_MACRXERRLENL);
+ hw_stats->rx_undersize_errors += rd32(hw, NGBE_MACRXUNDERSIZE);
hw_stats->rx_oversize_cnt += rd32(hw, NGBE_MACRXOVERSIZE);
hw_stats->rx_jabber_errors += rd32(hw, NGBE_MACRXJABBER);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.166175378 +0100
+++ 0147-net-ngbe-fix-device-statistics.patch 2025-07-18 20:29:11.125907929 +0100
@@ -1 +1 @@
-From a65009b7621a60faeb1bbefe65160eb5646925dc Mon Sep 17 00:00:00 2001
+From a09cf04d7af5da46df6dca2febf4b10db4085e58 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a65009b7621a60faeb1bbefe65160eb5646925dc ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: restrict VLAN strip configuration on VF' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (145 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ngbe: " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/txgbe: add LRO flag in mbuf when enabled' " Kevin Traynor
` (27 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6554f3a1b18a64fca2bbdb9d4ae9f2941ca2ec73
Thanks.
Kevin
---
From 6554f3a1b18a64fca2bbdb9d4ae9f2941ca2ec73 Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:57 +0800
Subject: [PATCH] net/txgbe: restrict VLAN strip configuration on VF
[ upstream commit b8c3d76e790cb06b54469b71a1af822de50c790d ]
Fix the same issue as PF in commit 66364efcf958 ("net/txgbe: restrict
configuration of VLAN strip offload").
There is a hardware limitation that Rx ring config register is not
writable when Rx ring is enabled, i.e. the TXGBE_RXCFG_ENA bit is set.
But disabling the ring when there is traffic will cause ring get stuck.
So restrict the configuration of VLAN strip offload only if device is
started.
Fixes: aa1ae7941e71 ("net/txgbe: support VF VLAN")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev_vf.c | 31 +++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c b/drivers/net/txgbe/txgbe_ethdev_vf.c
index d075f9d232..67e1dc696b 100644
--- a/drivers/net/txgbe/txgbe_ethdev_vf.c
+++ b/drivers/net/txgbe/txgbe_ethdev_vf.c
@@ -865,5 +865,5 @@ txgbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
static void
-txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+txgbevf_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on)
{
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
@@ -876,18 +876,26 @@ txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
ctrl = rd32(hw, TXGBE_RXCFG(queue));
- txgbe_dev_save_rx_queue(hw, queue);
if (on)
ctrl |= TXGBE_RXCFG_VLAN;
else
ctrl &= ~TXGBE_RXCFG_VLAN;
- wr32(hw, TXGBE_RXCFG(queue), 0);
- msec_delay(100);
- txgbe_dev_store_rx_queue(hw, queue);
- wr32m(hw, TXGBE_RXCFG(queue),
- TXGBE_RXCFG_VLAN | TXGBE_RXCFG_ENA, ctrl);
+ wr32(hw, TXGBE_RXCFG(queue), ctrl);
txgbe_vlan_hw_strip_bitmap_set(dev, queue, on);
}
+static void
+txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+{
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
+
+ if (!hw->adapter_stopped) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return;
+ }
+
+ txgbevf_vlan_strip_q_set(dev, queue, on);
+}
+
static int
txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
@@ -902,5 +910,5 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
rxq = dev->data->rx_queues[i];
on = !!(rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP);
- txgbevf_vlan_strip_queue_set(dev, i, on);
+ txgbevf_vlan_strip_q_set(dev, i, on);
}
}
@@ -912,4 +920,11 @@ static int
txgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
{
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
+
+ if (!hw->adapter_stopped && (mask & RTE_ETH_VLAN_STRIP_MASK)) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return -EPERM;
+ }
+
txgbe_config_vlan_strip_on_all_queues(dev, mask);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.195543614 +0100
+++ 0148-net-txgbe-restrict-VLAN-strip-configuration-on-VF.patch 2025-07-18 20:29:11.126907931 +0100
@@ -1 +1 @@
-From b8c3d76e790cb06b54469b71a1af822de50c790d Mon Sep 17 00:00:00 2001
+From 6554f3a1b18a64fca2bbdb9d4ae9f2941ca2ec73 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b8c3d76e790cb06b54469b71a1af822de50c790d ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index c0d8aa15b2..847febf8c3 100644
+index d075f9d232..67e1dc696b 100644
@@ -27 +28 @@
-@@ -936,5 +936,5 @@ txgbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
+@@ -865,5 +865,5 @@ txgbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
@@ -34 +35 @@
-@@ -947,18 +947,26 @@ txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+@@ -876,18 +876,26 @@ txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
@@ -67 +68 @@
-@@ -973,5 +981,5 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
+@@ -902,5 +910,5 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
@@ -74 +75 @@
-@@ -983,4 +991,11 @@ static int
+@@ -912,4 +920,11 @@ static int
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/txgbe: add LRO flag in mbuf when enabled' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (146 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: restrict VLAN strip configuration on VF' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/hns3: fix queue TC configuration on VF' " Kevin Traynor
` (26 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jiawen Wu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/7561876ee31af8ff142bb4c1a90a6dc62f8bd8aa
Thanks.
Kevin
---
From 7561876ee31af8ff142bb4c1a90a6dc62f8bd8aa Mon Sep 17 00:00:00 2001
From: Jiawen Wu <jiawenwu@trustnetic.com>
Date: Fri, 13 Jun 2025 16:41:59 +0800
Subject: [PATCH] net/txgbe: add LRO flag in mbuf when enabled
[ upstream commit 5bc6a8b17afbf299773a70315ad95262d8f6d0ac ]
When LRO is enabled, the driver must set the LRO flag in received
aggregated packets to indicate LRO processing to upper-layer
applications. Add the missing LRO flag into the ol_flags field of mbuf
to fix it.
Fixes: 0e484278c85f ("net/txgbe: support Rx")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 4e4b78fb43..46e73a89cb 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -1794,4 +1794,6 @@ txgbe_fill_cluster_head_buf(struct rte_mbuf *head, struct txgbe_rx_desc *desc,
pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
pkt_flags |= txgbe_rxd_pkt_info_to_pkt_flags(pkt_info);
+ if (TXGBE_RXD_RSCCNT(desc->qw0.dw0))
+ pkt_flags |= RTE_MBUF_F_RX_LRO;
head->ol_flags = pkt_flags;
head->packet_type = txgbe_rxd_pkt_info_to_pkt_type(pkt_info,
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.224307688 +0100
+++ 0149-net-txgbe-add-LRO-flag-in-mbuf-when-enabled.patch 2025-07-18 20:29:11.129907941 +0100
@@ -1 +1 @@
-From 5bc6a8b17afbf299773a70315ad95262d8f6d0ac Mon Sep 17 00:00:00 2001
+From 7561876ee31af8ff142bb4c1a90a6dc62f8bd8aa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5bc6a8b17afbf299773a70315ad95262d8f6d0ac ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index a85d417ff6..e6f33739c4 100644
+index 4e4b78fb43..46e73a89cb 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/hns3: fix queue TC configuration on VF' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (147 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/txgbe: add LRO flag in mbuf when enabled' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/bonding: avoid RSS RETA update in flow isolation mode' " Kevin Traynor
` (25 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Chengwen Feng; +Cc: Dengdui Huang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/362128b06fd312ae99e7566befda20da52f976ba
Thanks.
Kevin
---
From 362128b06fd312ae99e7566befda20da52f976ba Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Tue, 1 Jul 2025 17:09:59 +0800
Subject: [PATCH] net/hns3: fix queue TC configuration on VF
[ upstream commit a542f48bc0ec83c296ae01ad691479c17caf99b5 ]
The VF cannot configure the mapping of queue to TC by directly writing
the register. Instead, the mapping must be modified by using firmware
command.
Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_cmd.h | 8 ++++++++
drivers/net/hns3/hns3_rxtx.c | 26 +++++++++++++++++++++-----
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h
index 4d707c13b2..e21a2b652f 100644
--- a/drivers/net/hns3/hns3_cmd.h
+++ b/drivers/net/hns3/hns3_cmd.h
@@ -179,4 +179,5 @@ enum hns3_opcode_type {
/* TQP commands */
HNS3_OPC_QUERY_TX_STATUS = 0x0B03,
+ HNS3_OPC_TQP_TX_QUEUE_TC = 0x0B04,
HNS3_OPC_QUERY_RX_STATUS = 0x0B13,
HNS3_OPC_CFG_COM_TQP_QUEUE = 0x0B20,
@@ -971,4 +972,11 @@ struct hns3_reset_tqp_queue_cmd {
};
+struct hns3vf_tx_ring_tc_cmd {
+ uint16_t tqp_id;
+ uint16_t rsv1;
+ uint8_t tc_id;
+ uint8_t rsv2[19];
+};
+
#define HNS3_CFG_RESET_MAC_B 3
#define HNS3_CFG_RESET_FUNC_B 7
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index bfe4c0fa2e..8680e76797 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -1176,10 +1176,12 @@ hns3_init_txq(struct hns3_tx_queue *txq)
}
-static void
+static int
hns3_init_tx_ring_tc(struct hns3_adapter *hns)
{
+ struct hns3_cmd_desc desc;
+ struct hns3vf_tx_ring_tc_cmd *req = (struct hns3vf_tx_ring_tc_cmd *)desc.data;
struct hns3_hw *hw = &hns->hw;
struct hns3_tx_queue *txq;
- int i, num;
+ int i, num, ret;
for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
@@ -1196,7 +1198,22 @@ hns3_init_tx_ring_tc(struct hns3_adapter *hns)
continue;
- hns3_write_dev(txq, HNS3_RING_TX_TC_REG, tc_queue->tc);
+ if (!hns->is_vf) {
+ hns3_write_dev(txq, HNS3_RING_TX_TC_REG, tc_queue->tc);
+ continue;
+ }
+
+ hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_TQP_TX_QUEUE_TC, false);
+ req->tqp_id = rte_cpu_to_le_16(num);
+ req->tc_id = tc_queue->tc;
+ ret = hns3_cmd_send(hw, &desc, 1);
+ if (ret != 0) {
+ hns3_err(hw, "config Tx queue (%u)'s TC failed! ret = %d.",
+ num, ret);
+ return ret;
+ }
}
}
+
+ return 0;
}
@@ -1274,7 +1291,6 @@ hns3_init_tx_queues(struct hns3_adapter *hns)
hns3_init_txq(txq);
}
- hns3_init_tx_ring_tc(hns);
- return 0;
+ return hns3_init_tx_ring_tc(hns);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.254656354 +0100
+++ 0150-net-hns3-fix-queue-TC-configuration-on-VF.patch 2025-07-18 20:29:11.132907950 +0100
@@ -1 +1 @@
-From a542f48bc0ec83c296ae01ad691479c17caf99b5 Mon Sep 17 00:00:00 2001
+From 362128b06fd312ae99e7566befda20da52f976ba Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a542f48bc0ec83c296ae01ad691479c17caf99b5 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -43 +44 @@
-index f9fde3948a..785e06db9c 100644
+index bfe4c0fa2e..8680e76797 100644
@@ -46 +47 @@
-@@ -1181,10 +1181,12 @@ hns3_init_txq(struct hns3_tx_queue *txq)
+@@ -1176,10 +1176,12 @@ hns3_init_txq(struct hns3_tx_queue *txq)
@@ -61 +62 @@
-@@ -1201,7 +1203,22 @@ hns3_init_tx_ring_tc(struct hns3_adapter *hns)
+@@ -1196,7 +1198,22 @@ hns3_init_tx_ring_tc(struct hns3_adapter *hns)
@@ -85 +86 @@
-@@ -1279,7 +1296,6 @@ hns3_init_tx_queues(struct hns3_adapter *hns)
+@@ -1274,7 +1291,6 @@ hns3_init_tx_queues(struct hns3_adapter *hns)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/bonding: avoid RSS RETA update in flow isolation mode' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (148 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/hns3: fix queue TC configuration on VF' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/iavf: fix VLAN strip disabling for ADQ v2 capability' " Kevin Traynor
` (24 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Madhuker Mythri; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/c5ab91d4e9a9510455eb382fe64170e9069a55ec
Thanks.
Kevin
---
From c5ab91d4e9a9510455eb382fe64170e9069a55ec Mon Sep 17 00:00:00 2001
From: Madhuker Mythri <madhuker.mythri@oracle.com>
Date: Fri, 4 Jul 2025 19:20:31 +0530
Subject: [PATCH] net/bonding: avoid RSS RETA update in flow isolation mode
[ upstream commit a0000859ffbaaaf90bbb9c0f2f5bb7a3d4f5bc9f ]
In bonding PMD, member_start() function checks whether RSS(mq_mode) is
enabled and then calling the RSS rte_eth_dev_rss_reta_update() API, which
is returning error in-case of device configured in flow isolation-mode.
When the device configured with flow isolation mode RSS reta update is not
required and the API was not supported. For example in-case of mlx5 PMD,
RSS reta update API was not supported, when the device is configured in
flow isolation-mode.
So, added check to verify if the device is configured in flow-isolation
mode, then do not call the rte_eth_dev_rss_reta_update() API.
Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration")
Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com>
---
drivers/net/bonding/rte_eth_bond_pmd.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 9d72140b82..062ec26d64 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1905,10 +1905,11 @@ member_start(struct rte_eth_dev *bonding_eth_dev,
}
- /* If RSS is enabled for bonding, synchronize RETA */
- if (bonding_eth_dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) {
+ /*
+ * If flow-isolation is not enabled, then check whether RSS is enabled for
+ * bonding, synchronize RETA
+ */
+ if (internals->flow_isolated_valid == 0 &&
+ (bonding_eth_dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS)) {
int i;
- struct bond_dev_private *internals;
-
- internals = bonding_eth_dev->data->dev_private;
for (i = 0; i < internals->member_count; i++) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.285195064 +0100
+++ 0151-net-bonding-avoid-RSS-RETA-update-in-flow-isolation-.patch 2025-07-18 20:29:11.134907956 +0100
@@ -1 +1 @@
-From a0000859ffbaaaf90bbb9c0f2f5bb7a3d4f5bc9f Mon Sep 17 00:00:00 2001
+From c5ab91d4e9a9510455eb382fe64170e9069a55ec Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a0000859ffbaaaf90bbb9c0f2f5bb7a3d4f5bc9f ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 83339bae3d..4906701a95 100644
+index 9d72140b82..062ec26d64 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/iavf: fix VLAN strip disabling for ADQ v2 capability' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (149 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/bonding: avoid RSS RETA update in flow isolation mode' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/i40e: fix RSS on plain IPv4' " Kevin Traynor
` (23 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Amiya Ranjan Mohakud; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e8b84cfc5a78ac13072121a772e6c114e47af0b5
Thanks.
Kevin
---
From e8b84cfc5a78ac13072121a772e6c114e47af0b5 Mon Sep 17 00:00:00 2001
From: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Date: Thu, 3 Jul 2025 15:50:46 +0530
Subject: [PATCH] net/iavf: fix VLAN strip disabling for ADQ v2 capability
[ upstream commit 5503bbc975b3ab46240e0ce5da1a6003c8f5dbb5 ]
Ensure the correct virtchnl op is called for disabling vlan stripping by
checking if the device supports either v1 or v2 vlan capability and
choosing the op accordingly.
Bugzilla ID: 1735
Fixes: 3bfad066f9b4 ("net/iavf: fix VLAN strip setting after enabling filter")
Signed-off-by: Amiya Ranjan Mohakud <amiyaranjan.mohakud@gmail.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 3dfccb9969..8dd1f4b103 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1388,4 +1388,5 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
struct iavf_adapter *adapter =
IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+ struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter);
struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
int err;
@@ -1395,5 +1396,8 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
adapter->hw.mac.type == IAVF_MAC_X722_VF) {
if (on && !(dev_conf->rxmode.offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP)) {
- err = iavf_disable_vlan_strip(adapter);
+ if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_VLAN_V2)
+ err = iavf_config_vlan_strip_v2(adapter, false);
+ else
+ err = iavf_disable_vlan_strip(adapter);
if (err)
return -EIO;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.315479677 +0100
+++ 0152-net-iavf-fix-VLAN-strip-disabling-for-ADQ-v2-capabil.patch 2025-07-18 20:29:11.135907959 +0100
@@ -1 +1 @@
-From 5503bbc975b3ab46240e0ce5da1a6003c8f5dbb5 Mon Sep 17 00:00:00 2001
+From e8b84cfc5a78ac13072121a772e6c114e47af0b5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5503bbc975b3ab46240e0ce5da1a6003c8f5dbb5 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/iavf/iavf_ethdev.c | 6 +++++-
+ drivers/net/iavf/iavf_ethdev.c | 6 +++++-
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
-index c33fdd9069..335a8126c4 100644
---- a/drivers/net/intel/iavf/iavf_ethdev.c
-+++ b/drivers/net/intel/iavf/iavf_ethdev.c
-@@ -1389,4 +1389,5 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
+diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
+index 3dfccb9969..8dd1f4b103 100644
+--- a/drivers/net/iavf/iavf_ethdev.c
++++ b/drivers/net/iavf/iavf_ethdev.c
+@@ -1388,4 +1388,5 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
@@ -30 +31 @@
-@@ -1396,5 +1397,8 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
+@@ -1395,5 +1396,8 @@ iavf_disable_vlan_strip_ex(struct rte_eth_dev *dev, int on)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/i40e: fix RSS on plain IPv4' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (150 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/iavf: fix VLAN strip disabling for ADQ v2 capability' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/octeon_ep: increase mailbox timeout' " Kevin Traynor
` (22 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Dhanya Pillai; +Cc: Morten Brørup, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/026a4bd924acb30ec7ed294ae78b63209903dcbc
Thanks.
Kevin
---
From 026a4bd924acb30ec7ed294ae78b63209903dcbc Mon Sep 17 00:00:00 2001
From: Dhanya Pillai <dhanya.r.pillai@intel.com>
Date: Sat, 5 Jul 2025 21:54:07 +0000
Subject: [PATCH] net/i40e: fix RSS on plain IPv4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 5d47e73e5f4f2eb69bd73f642cfd72b49436bf96 ]
Currently, i40e driver is missing the flag reporting RSS support for
plain IPv4. Configuring rss function to RTE_ETH_RSS_IPV4 returns an
error: "invalid rss hash function value", even though the HW supports
RSS on plain IPv4 traffic.
Fixes: a286ebeb0714 ("net/i40e: add dynamic mapping of SW flow types to HW pctypes")
Reported-by: Morten Brørup <mb@smartsharesystems.com>
Signed-off-by: Dhanya Pillai <dhanya.r.pillai@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/i40e/i40e_rxtx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 839c8a5442..0392c41005 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -3716,4 +3716,6 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev)
ad->pctypes_mask = 0ULL;
+ ad->pctypes_tbl[RTE_ETH_FLOW_IPV4] =
+ (1ULL << I40E_FILTER_PCTYPE_NONF_IPV4_OTHER);
ad->pctypes_tbl[RTE_ETH_FLOW_FRAG_IPV4] =
(1ULL << I40E_FILTER_PCTYPE_FRAG_IPV4);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.345745292 +0100
+++ 0153-net-i40e-fix-RSS-on-plain-IPv4.patch 2025-07-18 20:29:11.137907965 +0100
@@ -1 +1 @@
-From 5d47e73e5f4f2eb69bd73f642cfd72b49436bf96 Mon Sep 17 00:00:00 2001
+From 026a4bd924acb30ec7ed294ae78b63209903dcbc Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 5d47e73e5f4f2eb69bd73f642cfd72b49436bf96 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
- drivers/net/intel/i40e/i40e_rxtx.c | 2 ++
+ drivers/net/i40e/i40e_rxtx.c | 2 ++
@@ -24,5 +25,5 @@
-diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
-index 0b06130fe5..aba3c11ee5 100644
---- a/drivers/net/intel/i40e/i40e_rxtx.c
-+++ b/drivers/net/intel/i40e/i40e_rxtx.c
-@@ -3658,4 +3658,6 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev)
+diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
+index 839c8a5442..0392c41005 100644
+--- a/drivers/net/i40e/i40e_rxtx.c
++++ b/drivers/net/i40e/i40e_rxtx.c
+@@ -3716,4 +3716,6 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/octeon_ep: increase mailbox timeout' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (151 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/i40e: fix RSS on plain IPv4' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'bus/auxiliary: fix crash in cleanup' " Kevin Traynor
` (21 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Mohamed Feroz Abdul Majeeth; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/84da56317cb6e5dda4015c6677155d5bfc76adae
Thanks.
Kevin
---
From 84da56317cb6e5dda4015c6677155d5bfc76adae Mon Sep 17 00:00:00 2001
From: Mohamed Feroz Abdul Majeeth <mabdulmajeet@marvell.com>
Date: Fri, 27 Jun 2025 15:48:53 +0530
Subject: [PATCH] net/octeon_ep: increase mailbox timeout
[ upstream commit e90979eebbea093f6bab2d7c222fc5f5c9a85eff ]
Extend the mailbox timeout to 2500 ms in the driver
to ensure firmware responses are received, preventing premature
timeouts in mailbox request handling. This improves reliability
of control network APIs, addressing issues where the previous
timeout was too short for consistent operation.
Fixes: c836a7ba33ee ("net/octeon_ep: support mailbox between VF and PF")
Signed-off-by: Mohamed Feroz Abdul Majeeth <mabdulmajeet@marvell.com>
---
.mailmap | 1 +
drivers/net/octeon_ep/otx_ep_mbox.h | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index c2b4d45128..fc55ecbb4a 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1053,4 +1053,5 @@ Mitch Williams <mitch.a.williams@intel.com>
Mit Matelske <mit@pt.net>
Mohamad Noor Alim Hussin <mohamad.noor.alim.hussin@intel.com>
+Mohamed Feroz Abdul Majeeth <mabdulmajeet@marvell.com>
Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Mohammad Iqbal Ahmad <mahmad@marvell.com>
diff --git a/drivers/net/octeon_ep/otx_ep_mbox.h b/drivers/net/octeon_ep/otx_ep_mbox.h
index ec96e4edc5..c5841b59a6 100644
--- a/drivers/net/octeon_ep/otx_ep_mbox.h
+++ b/drivers/net/octeon_ep/otx_ep_mbox.h
@@ -70,5 +70,5 @@ enum otx_ep_link_autoneg {
};
-#define OTX_EP_MBOX_TIMEOUT_MS 1200
+#define OTX_EP_MBOX_TIMEOUT_MS 2500
#define OTX_EP_MBOX_MAX_RETRIES 2
#define OTX_EP_MBOX_MAX_DATA_SIZE 6
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.387608790 +0100
+++ 0154-net-octeon_ep-increase-mailbox-timeout.patch 2025-07-18 20:29:11.139907971 +0100
@@ -1 +1 @@
-From e90979eebbea093f6bab2d7c222fc5f5c9a85eff Mon Sep 17 00:00:00 2001
+From 84da56317cb6e5dda4015c6677155d5bfc76adae Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e90979eebbea093f6bab2d7c222fc5f5c9a85eff ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 37655f4a57..50ea382f73 100644
+index c2b4d45128..fc55ecbb4a 100644
@@ -25 +26 @@
-@@ -1066,4 +1066,5 @@ Mitch Williams <mitch.a.williams@intel.com>
+@@ -1053,4 +1053,5 @@ Mitch Williams <mitch.a.williams@intel.com>
@@ -32 +33 @@
-index 4f7afe7635..1a49780ce1 100644
+index ec96e4edc5..c5841b59a6 100644
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus/auxiliary: fix crash in cleanup' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (152 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/octeon_ep: increase mailbox timeout' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/mlx5: fix masked indirect age action validation' " Kevin Traynor
` (20 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a16363c20fc190c47b89b47ecd19bab802393f38
Thanks.
Kevin
---
From a16363c20fc190c47b89b47ecd19bab802393f38 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Mon, 7 Jul 2025 13:06:48 +0300
Subject: [PATCH] bus/auxiliary: fix crash in cleanup
[ upstream commit f03c01f601b1b8d90f62c8a5acead72c04797d7a ]
DPDK auxiliary bus first creates a list of known devices in the
`auxiliary_bus.device_list` and then tries to attach a driver to each
device on that list.
If the driver attachment has failed, a device will remain on the list.
The device destruction did not validate driver existence and
crashed.
The patch validates auxiliary device driver before accessing
driver related resources.
Fixes: 1afce3086cf4 ("bus/auxiliary: introduce auxiliary bus")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/bus/auxiliary/auxiliary_common.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c
index e6cbc4d356..b19b226a43 100644
--- a/drivers/bus/auxiliary/auxiliary_common.c
+++ b/drivers/bus/auxiliary/auxiliary_common.c
@@ -161,4 +161,6 @@ rte_auxiliary_driver_remove_dev(struct rte_auxiliary_device *dev)
drv = dev->driver;
+ if (drv == NULL)
+ return 0;
AUXILIARY_LOG(DEBUG, "Driver %s remove auxiliary device %s on NUMA node %i",
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.416879934 +0100
+++ 0155-bus-auxiliary-fix-crash-in-cleanup.patch 2025-07-18 20:29:11.140913466 +0100
@@ -1 +1 @@
-From f03c01f601b1b8d90f62c8a5acead72c04797d7a Mon Sep 17 00:00:00 2001
+From a16363c20fc190c47b89b47ecd19bab802393f38 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f03c01f601b1b8d90f62c8a5acead72c04797d7a ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index 5c6c6b0ef2..ac766e283e 100644
+index e6cbc4d356..b19b226a43 100644
@@ -31 +32 @@
-@@ -164,4 +164,6 @@ rte_auxiliary_driver_remove_dev(struct rte_auxiliary_device *dev)
+@@ -161,4 +161,6 @@ rte_auxiliary_driver_remove_dev(struct rte_auxiliary_device *dev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix masked indirect age action validation' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (153 preceding siblings ...)
2025-07-18 19:31 ` patch 'bus/auxiliary: fix crash in cleanup' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/mlx5: fix out-of-order completions in ordinary Rx burst' " Kevin Traynor
` (19 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/70489cbd83bb37f766dc1efebbc71b1b465b5ef2
Thanks.
Kevin
---
From 70489cbd83bb37f766dc1efebbc71b1b465b5ef2 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 1 Jul 2025 12:32:53 +0200
Subject: [PATCH] net/mlx5: fix masked indirect age action validation
[ upstream commit 6ed1ce029d6bd89a47968cd92d99cdf7ece8ac96 ]
Masked indirect age flow action is not supported in
actions templates.
Up to this patch, this case was checked only through
debug assertion. As a side effect, in a build without assertions,
this lead to a segfault on the attempt to create
a table using actions template with masked indirect age action.
To prevent the segfault, this patch adds relevant validation
to actions template creation and removes the debug assertion
which now becomes redundant.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 6781bad9b7..586500753a 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1318,8 +1318,4 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
}
break;
- case MLX5_INDIRECT_ACTION_TYPE_AGE:
- /* Not supported, prevent by validate function. */
- MLX5_ASSERT(0);
- break;
case MLX5_INDIRECT_ACTION_TYPE_CT:
if (flow_hw_ct_compile(dev, MLX5_HW_INV_QUEUE,
@@ -6332,4 +6328,8 @@ flow_hw_validate_action_indirect(struct rte_eth_dev *dev,
break;
case RTE_FLOW_ACTION_TYPE_AGE:
+ if (action->conf && mask->conf)
+ return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION,
+ action,
+ "Fixed indirect age action is not supported");
ret = flow_hw_validate_action_age(dev, action, *action_flags,
*fixed_cnt, error);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.446058582 +0100
+++ 0156-net-mlx5-fix-masked-indirect-age-action-validation.patch 2025-07-18 20:29:11.149908002 +0100
@@ -1 +1 @@
-From 6ed1ce029d6bd89a47968cd92d99cdf7ece8ac96 Mon Sep 17 00:00:00 2001
+From 70489cbd83bb37f766dc1efebbc71b1b465b5ef2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6ed1ce029d6bd89a47968cd92d99cdf7ece8ac96 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 4ecc2bacfc..6dc16f80d3 100644
+index 6781bad9b7..586500753a 100644
@@ -29 +30 @@
-@@ -1352,8 +1352,4 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
+@@ -1318,8 +1318,4 @@ flow_hw_shared_action_translate(struct rte_eth_dev *dev,
@@ -38 +39 @@
-@@ -6406,4 +6402,8 @@ flow_hw_validate_action_indirect(struct rte_eth_dev *dev,
+@@ -6332,4 +6328,8 @@ flow_hw_validate_action_indirect(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix out-of-order completions in ordinary Rx burst' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (154 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/mlx5: fix masked indirect age action validation' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'examples/ntb: check more heap allocations' " Kevin Traynor
` (18 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f22dca1f87a4cc856e9221aae5de4df58b19a7b3
Thanks.
Kevin
---
From f22dca1f87a4cc856e9221aae5de4df58b19a7b3 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Tue, 8 Jul 2025 13:46:41 +0300
Subject: [PATCH] net/mlx5: fix out-of-order completions in ordinary Rx burst
[ upstream commit 5f9223611f3570c974b9c8e6c0b62db605fb3076 ]
The existing Rx burst routines suppose the completions in CQ
arrive in order and address the WQEs in receiving queue in order.
That is not true for the shared RQs, CQEs can arrive in out of
order and to address appropriate WQE we should fetch its index
from the CQE wqe_counter field.
Also, we can advance the RQ CI if and only if all the WQEs are
handled in the covered range. This requires slide window to track
handled WQEs. We support the out-of-order window size up to the
full queue size.
Fixes: 09c2555303be ("net/mlx5: support shared Rx queue")
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_verbs.c | 8 +-
drivers/net/mlx5/mlx5_devx.c | 7 +-
drivers/net/mlx5/mlx5_ethdev.c | 8 +-
drivers/net/mlx5/mlx5_rx.c | 284 +++++++++++++++++++++++++++-
drivers/net/mlx5/mlx5_rx.h | 28 ++-
drivers/net/mlx5/mlx5_rxq.c | 11 +-
6 files changed, 334 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_verbs.c b/drivers/net/mlx5/linux/mlx5_verbs.c
index 454bd7c77e..9011319a3e 100644
--- a/drivers/net/mlx5/linux/mlx5_verbs.c
+++ b/drivers/net/mlx5/linux/mlx5_verbs.c
@@ -398,5 +398,11 @@ mlx5_rxq_ibv_obj_new(struct mlx5_rxq_priv *rxq)
rxq_data->rq_db = rwq.dbrec;
rxq_data->cq_arm_sn = 0;
- mlx5_rxq_initialize(rxq_data);
+ ret = mlx5_rxq_initialize(rxq_data);
+ if (ret) {
+ DRV_LOG(ERR, "Port %u Rx queue %u RQ initialization failure.",
+ priv->dev_data->port_id, rxq->idx);
+ rte_errno = ENOMEM;
+ goto error;
+ }
rxq_data->cq_ci = 0;
priv->dev_data->rx_queue_state[idx] = RTE_ETH_QUEUE_STATE_STARTED;
diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index b9d29ca7d5..f9081b0e30 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -710,5 +710,10 @@ mlx5_rxq_devx_obj_new(struct mlx5_rxq_priv *rxq)
}
if (!rxq_ctrl->started) {
- mlx5_rxq_initialize(rxq_data);
+ if (mlx5_rxq_initialize(rxq_data)) {
+ DRV_LOG(ERR, "Port %u Rx queue %u RQ initialization failure.",
+ priv->dev_data->port_id, rxq->idx);
+ rte_errno = ENOMEM;
+ goto error;
+ }
rxq_ctrl->wqn = rxq->devx_rq.rq->id;
}
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index f2ae75a8e1..ddfe968a99 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -618,4 +618,5 @@ mlx5_dev_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
if (dev->rx_pkt_burst == mlx5_rx_burst ||
+ dev->rx_pkt_burst == mlx5_rx_burst_out_of_order ||
dev->rx_pkt_burst == mlx5_rx_burst_mprq ||
dev->rx_pkt_burst == mlx5_rx_burst_vec ||
@@ -688,5 +689,10 @@ mlx5_select_rx_function(struct rte_eth_dev *dev)
MLX5_ASSERT(dev != NULL);
- if (mlx5_check_vec_rx_support(dev) > 0) {
+ if (mlx5_shared_rq_enabled(dev)) {
+ rx_pkt_burst = mlx5_rx_burst_out_of_order;
+ DRV_LOG(DEBUG, "port %u forced to use SPRQ"
+ " Rx function with Out-of-Order completions",
+ dev->data->port_id);
+ } else if (mlx5_check_vec_rx_support(dev) > 0) {
if (mlx5_mprq_enabled(dev)) {
rx_pkt_burst = mlx5_rx_burst_mprq_vec;
diff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c
index 5e58eb8bc9..0f2152fdb0 100644
--- a/drivers/net/mlx5/mlx5_rx.c
+++ b/drivers/net/mlx5/mlx5_rx.c
@@ -42,5 +42,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
uint16_t cqe_n, uint16_t cqe_mask,
volatile struct mlx5_mini_cqe8 **mcqe,
- uint16_t *skip_cnt, bool mprq);
+ uint16_t *skip_cnt, bool mprq, uint32_t *widx);
static __rte_always_inline uint32_t
@@ -221,4 +221,6 @@ mlx5_rx_burst_mode_get(struct rte_eth_dev *dev,
if (pkt_burst == mlx5_rx_burst) {
snprintf(mode->info, sizeof(mode->info), "%s", "Scalar");
+ } else if (pkt_burst == mlx5_rx_burst_out_of_order) {
+ snprintf(mode->info, sizeof(mode->info), "%s", "Scalar Out-of-Order");
} else if (pkt_burst == mlx5_rx_burst_mprq) {
snprintf(mode->info, sizeof(mode->info), "%s", "Multi-Packet RQ");
@@ -359,4 +361,75 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
}
+static inline void mlx5_rq_win_reset(struct mlx5_rxq_data *rxq)
+{
+ static_assert(MLX5_WINOOO_BITS == (sizeof(*rxq->rq_win_data) * CHAR_BIT),
+ "Invalid out-of-order window bitwidth");
+ rxq->rq_win_idx = 0;
+ rxq->rq_win_cnt = 0;
+ if (rxq->rq_win_data != NULL && rxq->rq_win_idx_mask != 0)
+ memset(rxq->rq_win_data, 0, (rxq->rq_win_idx_mask + 1) * sizeof(*rxq->rq_win_data));
+}
+
+static inline int mlx5_rq_win_init(struct mlx5_rxq_data *rxq)
+{
+ struct mlx5_rxq_ctrl *ctrl = container_of(rxq, struct mlx5_rxq_ctrl, rxq);
+ uint32_t win_size, win_mask;
+
+ /* Set queue size as window size */
+ win_size = 1u << rxq->elts_n;
+ win_size = RTE_MAX(win_size, MLX5_WINOOO_BITS);
+ win_size = win_size / MLX5_WINOOO_BITS;
+ win_mask = win_size - 1;
+ if (win_mask != rxq->rq_win_idx_mask || rxq->rq_win_data == NULL) {
+ mlx5_free(rxq->rq_win_data);
+ rxq->rq_win_idx_mask = 0;
+ rxq->rq_win_data = mlx5_malloc(MLX5_MEM_RTE,
+ win_size * sizeof(*rxq->rq_win_data),
+ RTE_CACHE_LINE_SIZE, ctrl->socket);
+ if (rxq->rq_win_data == NULL)
+ return -ENOMEM;
+ rxq->rq_win_idx_mask = (uint16_t)win_mask;
+ }
+ mlx5_rq_win_reset(rxq);
+ return 0;
+}
+
+static inline bool mlx5_rq_win_test(struct mlx5_rxq_data *rxq)
+{
+ return !!rxq->rq_win_cnt;
+}
+
+static inline void mlx5_rq_win_update(struct mlx5_rxq_data *rxq, uint32_t delta)
+{
+ uint32_t idx;
+
+ idx = (delta / MLX5_WINOOO_BITS) + rxq->rq_win_idx;
+ idx &= rxq->rq_win_idx_mask;
+ rxq->rq_win_cnt = 1;
+ rxq->rq_win_data[idx] |= 1u << (delta % MLX5_WINOOO_BITS);
+}
+
+static inline uint32_t mlx5_rq_win_advance(struct mlx5_rxq_data *rxq, uint32_t delta)
+{
+ uint32_t idx;
+
+ idx = (delta / MLX5_WINOOO_BITS) + rxq->rq_win_idx;
+ idx &= rxq->rq_win_idx_mask;
+ rxq->rq_win_data[idx] |= 1u << (delta % MLX5_WINOOO_BITS);
+ ++rxq->rq_win_cnt;
+ if (delta >= MLX5_WINOOO_BITS)
+ return 0;
+ delta = 0;
+ while (~rxq->rq_win_data[idx] == 0) {
+ rxq->rq_win_data[idx] = 0;
+ MLX5_ASSERT(rxq->rq_win_cnt >= MLX5_WINOOO_BITS);
+ rxq->rq_win_cnt -= MLX5_WINOOO_BITS;
+ idx = (idx + 1) & rxq->rq_win_idx_mask;
+ rxq->rq_win_idx = idx;
+ delta += MLX5_WINOOO_BITS;
+ }
+ return delta;
+}
+
/**
* Initialize Rx WQ and indexes.
@@ -365,5 +438,5 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
* Pointer to RX queue structure.
*/
-void
+int
mlx5_rxq_initialize(struct mlx5_rxq_data *rxq)
{
@@ -414,6 +487,10 @@ mlx5_rxq_initialize(struct mlx5_rxq_data *rxq)
/* Update doorbell counter. */
rxq->rq_ci = wqe_n >> rxq->sges_n;
+ rxq->rq_ci_ooo = rxq->rq_ci;
+ if (mlx5_rq_win_init(rxq))
+ return -ENOMEM;
rte_io_wmb();
*rxq->rq_db = rte_cpu_to_be_32(rxq->rq_ci);
+ return 0;
}
@@ -524,4 +601,7 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
rxq_ctrl->dump_file_n++;
}
+ /* Try to find the actual cq_ci in hardware for shared queue. */
+ if (rxq->shared)
+ rxq_sync_cq(rxq);
rxq->err_state = MLX5_RXQ_ERR_STATE_NEED_READY;
/* Fall-through */
@@ -583,5 +663,6 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
&rxq->fake_mbuf;
}
- mlx5_rxq_initialize(rxq);
+ if (mlx5_rxq_initialize(rxq))
+ return MLX5_RECOVERY_ERROR_RET;
rxq->err_state = MLX5_RXQ_ERR_STATE_NO_ERROR;
return MLX5_RECOVERY_COMPLETED_RET;
@@ -613,4 +694,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
* @param mprq
* Indication if it is called from MPRQ.
+ * @param[out] widx
+ * Store WQE index from CQE to support out of order completions. NULL
+ * can be specified if index is not needed
+ *
* @return
* 0 in case of empty CQE,
@@ -624,5 +709,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
uint16_t cqe_n, uint16_t cqe_mask,
volatile struct mlx5_mini_cqe8 **mcqe,
- uint16_t *skip_cnt, bool mprq)
+ uint16_t *skip_cnt, bool mprq, uint32_t *widx)
{
struct rxq_zip *zip = &rxq->zip;
@@ -640,4 +725,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
len = rte_be_to_cpu_32((*mc)[zip->ai & 7].byte_cnt &
rxq->byte_mask);
+ if (widx != NULL)
+ *widx = zip->wqe_idx + zip->ai;
*mcqe = &(*mc)[zip->ai & 7];
if (rxq->cqe_comp_layout) {
@@ -693,4 +780,7 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
if (unlikely(ret == MLX5_CQE_STATUS_ERR ||
rxq->err_state)) {
+ /* We should try to track out-pf-order WQE */
+ if (widx != NULL)
+ *widx = rte_be_to_cpu_16(cqe->wqe_counter);
ret = mlx5_rx_err_handle(rxq, 0, 1, skip_cnt);
if (ret == MLX5_CQE_STATUS_HW_OWN)
@@ -737,4 +827,8 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
zip->ca = cq_ci;
zip->na = zip->ca + 7;
+ if (widx != NULL) {
+ zip->wqe_idx = rte_be_to_cpu_16(cqe->wqe_counter);
+ *widx = zip->wqe_idx;
+ }
/* Compute the next non compressed CQE. */
zip->cq_ci = rxq->cq_ci + zip->cqe_cnt;
@@ -761,4 +855,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
++rxq->cq_ci;
len = rte_be_to_cpu_32(cqe->byte_cnt);
+ if (widx != NULL)
+ *widx = rte_be_to_cpu_16(cqe->wqe_counter);
if (rxq->cqe_comp_layout) {
volatile struct mlx5_cqe *next;
@@ -976,5 +1072,6 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
if (!pkt) {
cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_mask];
- len = mlx5_rx_poll_len(rxq, cqe, cqe_n, cqe_mask, &mcqe, &skip_cnt, false);
+ len = mlx5_rx_poll_len(rxq, cqe, cqe_n, cqe_mask,
+ &mcqe, &skip_cnt, false, NULL);
if (unlikely(len & MLX5_ERROR_CQE_MASK)) {
/* We drop packets with non-critical errors */
@@ -1062,4 +1159,179 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
}
+/**
+ * DPDK callback for RX with Out-of-Order completions support.
+ *
+ * @param dpdk_rxq
+ * Generic pointer to RX queue structure.
+ * @param[out] pkts
+ * Array to store received packets.
+ * @param pkts_n
+ * Maximum number of packets in array.
+ *
+ * @return
+ * Number of packets successfully received (<= pkts_n).
+ */
+uint16_t
+mlx5_rx_burst_out_of_order(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
+{
+ struct mlx5_rxq_data *rxq = dpdk_rxq;
+ const uint32_t wqe_n = 1 << rxq->elts_n;
+ const uint32_t wqe_mask = wqe_n - 1;
+ const uint32_t cqe_n = 1 << rxq->cqe_n;
+ const uint32_t cqe_mask = cqe_n - 1;
+ const unsigned int sges_n = rxq->sges_n;
+ const uint32_t pkt_mask = wqe_mask >> sges_n;
+ struct rte_mbuf *pkt = NULL;
+ struct rte_mbuf *seg = NULL;
+ volatile struct mlx5_cqe *cqe =
+ &(*rxq->cqes)[rxq->cq_ci & cqe_mask];
+ unsigned int i = 0;
+ int len = 0; /* keep its value across iterations. */
+ const uint32_t rq_ci = rxq->rq_ci;
+ uint32_t idx = 0;
+
+ do {
+ volatile struct mlx5_wqe_data_seg *wqe;
+ struct rte_mbuf *rep = NULL;
+ volatile struct mlx5_mini_cqe8 *mcqe = NULL;
+ uint32_t delta;
+ uint16_t skip_cnt;
+
+ if (!pkt) {
+ cqe = &(*rxq->cqes)[rxq->cq_ci & cqe_mask];
+ rte_prefetch0(cqe);
+ /* Allocate from the first packet mbuf pool */
+ rep = (*rxq->elts)[0];
+ /* We must allocate before CQE consuming to allow retry */
+ rep = rte_mbuf_raw_alloc(rep->pool);
+ if (unlikely(rep == NULL)) {
+ ++rxq->stats.rx_nombuf;
+ break;
+ }
+ len = mlx5_rx_poll_len(rxq, cqe, cqe_n, cqe_mask,
+ &mcqe, &skip_cnt, false, &idx);
+ if (unlikely(len == MLX5_CRITICAL_ERROR_CQE_RET)) {
+ rte_mbuf_raw_free(rep);
+ mlx5_rq_win_reset(rxq);
+ break;
+ }
+ if (len == 0) {
+ rte_mbuf_raw_free(rep);
+ break;
+ }
+ idx &= pkt_mask;
+ delta = (idx - rxq->rq_ci) & pkt_mask;
+ MLX5_ASSERT(delta < ((rxq->rq_win_idx_mask + 1) * MLX5_WINOOO_BITS));
+ if (likely(!mlx5_rq_win_test(rxq))) {
+ /* No out of order completions in sliding window */
+ if (likely(delta == 0))
+ rxq->rq_ci++;
+ else
+ mlx5_rq_win_update(rxq, delta);
+ } else {
+ /* We have out of order completions */
+ rxq->rq_ci += mlx5_rq_win_advance(rxq, delta);
+ }
+ if (rxq->zip.ai == 0)
+ rxq->rq_ci_ooo = rxq->rq_ci;
+ idx <<= sges_n;
+ /* We drop packets with non-critical errors */
+ if (unlikely(len & MLX5_ERROR_CQE_MASK)) {
+ rte_mbuf_raw_free(rep);
+ continue;
+ }
+ }
+ wqe = &((volatile struct mlx5_wqe_data_seg *)rxq->wqes)[idx];
+ if (unlikely(pkt))
+ NEXT(seg) = (*rxq->elts)[idx];
+ seg = (*rxq->elts)[idx];
+ rte_prefetch0(seg);
+ rte_prefetch0(wqe);
+ /* Allocate the buf from the same pool. */
+ if (unlikely(rep == NULL)) {
+ rep = rte_mbuf_raw_alloc(seg->pool);
+ if (unlikely(rep == NULL)) {
+ ++rxq->stats.rx_nombuf;
+ if (!pkt) {
+ /*
+ * no buffers before we even started,
+ * bail out silently.
+ */
+ break;
+ }
+ while (pkt != seg) {
+ MLX5_ASSERT(pkt != (*rxq->elts)[idx]);
+ rep = NEXT(pkt);
+ NEXT(pkt) = NULL;
+ NB_SEGS(pkt) = 1;
+ rte_mbuf_raw_free(pkt);
+ pkt = rep;
+ }
+ break;
+ }
+ }
+ if (!pkt) {
+ pkt = seg;
+ MLX5_ASSERT(len >= (rxq->crc_present << 2));
+ pkt->ol_flags &= RTE_MBUF_F_EXTERNAL;
+ if (rxq->cqe_comp_layout && mcqe)
+ cqe = &rxq->title_cqe;
+ rxq_cq_to_mbuf(rxq, pkt, cqe, mcqe);
+ if (rxq->crc_present)
+ len -= RTE_ETHER_CRC_LEN;
+ PKT_LEN(pkt) = len;
+ if (cqe->lro_num_seg > 1) {
+ mlx5_lro_update_hdr
+ (rte_pktmbuf_mtod(pkt, uint8_t *), cqe,
+ mcqe, rxq, len);
+ pkt->ol_flags |= RTE_MBUF_F_RX_LRO;
+ pkt->tso_segsz = len / cqe->lro_num_seg;
+ }
+ }
+ DATA_LEN(rep) = DATA_LEN(seg);
+ PKT_LEN(rep) = PKT_LEN(seg);
+ SET_DATA_OFF(rep, DATA_OFF(seg));
+ PORT(rep) = PORT(seg);
+ (*rxq->elts)[idx] = rep;
+ /*
+ * Fill NIC descriptor with the new buffer. The lkey and size
+ * of the buffers are already known, only the buffer address
+ * changes.
+ */
+ wqe->addr = rte_cpu_to_be_64(rte_pktmbuf_mtod(rep, uintptr_t));
+ /* If there's only one MR, no need to replace LKey in WQE. */
+ if (unlikely(mlx5_mr_btree_len(&rxq->mr_ctrl.cache_bh) > 1))
+ wqe->lkey = mlx5_rx_mb2mr(rxq, rep);
+ if (len > DATA_LEN(seg)) {
+ len -= DATA_LEN(seg);
+ ++NB_SEGS(pkt);
+ ++idx;
+ idx &= wqe_mask;
+ continue;
+ }
+ DATA_LEN(seg) = len;
+#ifdef MLX5_PMD_SOFT_COUNTERS
+ /* Increment bytes counter. */
+ rxq->stats.ibytes += PKT_LEN(pkt);
+#endif
+ /* Return packet. */
+ *(pkts++) = pkt;
+ pkt = NULL;
+ ++i;
+ } while (i < pkts_n);
+ if (unlikely(i == 0 && rq_ci == rxq->rq_ci_ooo))
+ return 0;
+ /* Update the consumer index. */
+ rte_io_wmb();
+ *rxq->cq_db = rte_cpu_to_be_32(rxq->cq_ci);
+ rte_io_wmb();
+ *rxq->rq_db = rte_cpu_to_be_32(rxq->rq_ci_ooo);
+#ifdef MLX5_PMD_SOFT_COUNTERS
+ /* Increment packets counter. */
+ rxq->stats.ipackets += i;
+#endif
+ return i;
+}
+
/**
* Update LRO packet TCP header.
@@ -1220,5 +1492,5 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
}
cqe = &(*rxq->cqes)[rxq->cq_ci & cq_mask];
- ret = mlx5_rx_poll_len(rxq, cqe, cqe_n, cq_mask, &mcqe, &skip_cnt, true);
+ ret = mlx5_rx_poll_len(rxq, cqe, cqe_n, cq_mask, &mcqe, &skip_cnt, true, NULL);
if (unlikely(ret & MLX5_ERROR_CQE_MASK)) {
if (ret == MLX5_CRITICAL_ERROR_CQE_RET) {
diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h
index 6c48a37be7..6ec5f82022 100644
--- a/drivers/net/mlx5/mlx5_rx.h
+++ b/drivers/net/mlx5/mlx5_rx.h
@@ -23,4 +23,5 @@
/* Support tunnel matching. */
#define MLX5_FLOW_TUNNEL 10
+#define MLX5_WINOOO_BITS (sizeof(uint32_t) * CHAR_BIT)
#define RXQ_PORT(rxq_ctrl) LIST_FIRST(&(rxq_ctrl)->owners)->priv
@@ -47,4 +48,5 @@ struct rxq_zip {
uint32_t na; /* Next array index. */
uint32_t cq_ci; /* The next CQE. */
+ uint16_t wqe_idx; /* WQE index */
};
@@ -107,4 +109,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
uint32_t elts_ci;
uint32_t rq_ci;
+ uint32_t rq_ci_ooo;
uint16_t consumed_strd; /* Number of consumed strides in WQE. */
uint32_t rq_pi;
@@ -147,4 +150,8 @@ struct __rte_cache_aligned mlx5_rxq_data {
struct mlx5_eth_rxseg rxseg[MLX5_MAX_RXQ_NSEG];
/* Buffer split segment descriptions - sizes, offsets, pools. */
+ uint16_t rq_win_cnt; /* Number of packets in the sliding window data. */
+ uint16_t rq_win_idx_mask; /* Sliding window index wrapping mask. */
+ uint16_t rq_win_idx; /* Index of the first element in sliding window. */
+ uint32_t *rq_win_data; /* Out-of-Order completions sliding window. */
};
@@ -286,5 +293,6 @@ int mlx5_hrxq_modify(struct rte_eth_dev *dev, uint32_t hxrq_idx,
uint16_t mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n);
-void mlx5_rxq_initialize(struct mlx5_rxq_data *rxq);
+uint16_t mlx5_rx_burst_out_of_order(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n);
+int mlx5_rxq_initialize(struct mlx5_rxq_data *rxq);
__rte_noinline int mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
uint16_t err_n, uint16_t *skip_cnt);
@@ -312,4 +320,5 @@ uint16_t mlx5_rx_burst_vec(void *dpdk_rxq, struct rte_mbuf **pkts,
uint16_t mlx5_rx_burst_mprq_vec(void *dpdk_rxq, struct rte_mbuf **pkts,
uint16_t pkts_n);
+void rxq_sync_cq(struct mlx5_rxq_data *rxq);
static int mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq);
@@ -642,4 +651,21 @@ mlx5_mprq_enabled(struct rte_eth_dev *dev)
}
+/**
+ * Check whether Shared RQ is enabled for the device.
+ *
+ * @param dev
+ * Pointer to Ethernet device.
+ *
+ * @return
+ * 0 if disabled, otherwise enabled.
+ */
+static __rte_always_inline int
+mlx5_shared_rq_enabled(struct rte_eth_dev *dev)
+{
+ struct mlx5_priv *priv = dev->data->dev_private;
+
+ return !LIST_EMPTY(&priv->sh->shared_rxqs);
+}
+
/**
* Check whether given RxQ is external.
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 6047529535..75733339e4 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -421,5 +421,5 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx)
/* Fetches and drops all SW-owned and error CQEs to synchronize CQ. */
-static void
+void
rxq_sync_cq(struct mlx5_rxq_data *rxq)
{
@@ -593,5 +593,11 @@ mlx5_rx_queue_start_primary(struct rte_eth_dev *dev, uint16_t idx)
}
/* Reinitialize RQ - set WQEs. */
- mlx5_rxq_initialize(rxq_data);
+ ret = mlx5_rxq_initialize(rxq_data);
+ if (ret) {
+ DRV_LOG(ERR, "Port %u Rx queue %u RQ initialization failure.",
+ priv->dev_data->port_id, rxq->idx);
+ rte_errno = ENOMEM;
+ return ret;
+ }
rxq_data->err_state = MLX5_RXQ_ERR_STATE_NO_ERROR;
/* Set actual queue state. */
@@ -2306,4 +2312,5 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
LIST_REMOVE(rxq_ctrl, share_entry);
LIST_REMOVE(rxq_ctrl, next);
+ mlx5_free(rxq_ctrl->rxq.rq_win_data);
mlx5_free(rxq_ctrl);
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.483936765 +0100
+++ 0157-net-mlx5-fix-out-of-order-completions-in-ordinary-Rx.patch 2025-07-18 20:29:11.154908017 +0100
@@ -1 +1 @@
-From 5f9223611f3570c974b9c8e6c0b62db605fb3076 Mon Sep 17 00:00:00 2001
+From f22dca1f87a4cc856e9221aae5de4df58b19a7b3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5f9223611f3570c974b9c8e6c0b62db605fb3076 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -48 +49 @@
-index 0ee16ba4f0..10bd93c29a 100644
+index b9d29ca7d5..f9081b0e30 100644
@@ -51 +52 @@
-@@ -684,5 +684,10 @@ mlx5_rxq_devx_obj_new(struct mlx5_rxq_priv *rxq)
+@@ -710,5 +710,10 @@ mlx5_rxq_devx_obj_new(struct mlx5_rxq_priv *rxq)
@@ -64 +65 @@
-index b7df39ace9..68d1c1bfa7 100644
+index f2ae75a8e1..ddfe968a99 100644
@@ -67 +68 @@
-@@ -649,4 +649,5 @@ mlx5_dev_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
+@@ -618,4 +618,5 @@ mlx5_dev_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
@@ -73 +74 @@
-@@ -719,5 +720,10 @@ mlx5_select_rx_function(struct rte_eth_dev *dev)
+@@ -688,5 +689,10 @@ mlx5_select_rx_function(struct rte_eth_dev *dev)
@@ -86 +87 @@
-index 5f4a93fe8c..5e8c312d00 100644
+index 5e58eb8bc9..0f2152fdb0 100644
@@ -89 +90 @@
-@@ -43,5 +43,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -42,5 +42,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -96 +97 @@
-@@ -222,4 +222,6 @@ mlx5_rx_burst_mode_get(struct rte_eth_dev *dev,
+@@ -221,4 +221,6 @@ mlx5_rx_burst_mode_get(struct rte_eth_dev *dev,
@@ -103 +104 @@
-@@ -360,4 +362,75 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -359,4 +361,75 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -179 +180 @@
-@@ -366,5 +439,5 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -365,5 +438,5 @@ rxq_cq_to_pkt_type(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -186 +187 @@
-@@ -415,6 +488,10 @@ mlx5_rxq_initialize(struct mlx5_rxq_data *rxq)
+@@ -414,6 +487,10 @@ mlx5_rxq_initialize(struct mlx5_rxq_data *rxq)
@@ -197 +198 @@
-@@ -525,4 +602,7 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
+@@ -524,4 +601,7 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
@@ -205 +206 @@
-@@ -584,5 +664,6 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
+@@ -583,5 +663,6 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
@@ -213 +214 @@
-@@ -614,4 +695,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
+@@ -613,4 +694,8 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
@@ -222 +223 @@
-@@ -625,5 +710,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -624,5 +709,5 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -229 +230 @@
-@@ -641,4 +726,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -640,4 +725,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -236 +237 @@
-@@ -694,4 +781,7 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -693,4 +780,7 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -244 +245 @@
-@@ -738,4 +828,8 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -737,4 +827,8 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -253 +254 @@
-@@ -762,4 +856,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
+@@ -761,4 +855,6 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
@@ -260 +261 @@
-@@ -977,5 +1073,6 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
+@@ -976,5 +1072,6 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
@@ -268 +269 @@
-@@ -1063,4 +1160,179 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
+@@ -1062,4 +1159,179 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
@@ -448 +449 @@
-@@ -1221,5 +1493,5 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
+@@ -1220,5 +1492,5 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
@@ -456 +457 @@
-index 6380895502..4f3d73e3c4 100644
+index 6c48a37be7..6ec5f82022 100644
@@ -465 +466 @@
-@@ -65,4 +66,5 @@ struct rxq_zip {
+@@ -47,4 +48,5 @@ struct rxq_zip {
@@ -471 +472 @@
-@@ -125,4 +127,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
+@@ -107,4 +109,5 @@ struct __rte_cache_aligned mlx5_rxq_data {
@@ -477 +478 @@
-@@ -165,4 +168,8 @@ struct __rte_cache_aligned mlx5_rxq_data {
+@@ -147,4 +150,8 @@ struct __rte_cache_aligned mlx5_rxq_data {
@@ -486 +487 @@
-@@ -306,5 +313,6 @@ int mlx5_hrxq_modify(struct rte_eth_dev *dev, uint32_t hxrq_idx,
+@@ -286,5 +293,6 @@ int mlx5_hrxq_modify(struct rte_eth_dev *dev, uint32_t hxrq_idx,
@@ -494 +495 @@
-@@ -332,4 +340,5 @@ uint16_t mlx5_rx_burst_vec(void *dpdk_rxq, struct rte_mbuf **pkts,
+@@ -312,4 +320,5 @@ uint16_t mlx5_rx_burst_vec(void *dpdk_rxq, struct rte_mbuf **pkts,
@@ -500 +501 @@
-@@ -662,4 +671,21 @@ mlx5_mprq_enabled(struct rte_eth_dev *dev)
+@@ -642,4 +651,21 @@ mlx5_mprq_enabled(struct rte_eth_dev *dev)
@@ -523 +524 @@
-index 2e9bcbea4d..77c5848c37 100644
+index 6047529535..75733339e4 100644
@@ -526 +527 @@
-@@ -422,5 +422,5 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx)
+@@ -421,5 +421,5 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx)
@@ -533 +534 @@
-@@ -594,5 +594,11 @@ mlx5_rx_queue_start_primary(struct rte_eth_dev *dev, uint16_t idx)
+@@ -593,5 +593,11 @@ mlx5_rx_queue_start_primary(struct rte_eth_dev *dev, uint16_t idx)
@@ -546 +547 @@
-@@ -2361,4 +2367,5 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
+@@ -2306,4 +2312,5 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'examples/ntb: check more heap allocations' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (155 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/mlx5: fix out-of-order completions in ordinary Rx burst' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'examples/ipsec-secgw: fix number of queue pairs' " Kevin Traynor
` (17 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Bing Zhao; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/d7169bb15d919bf45d5857288173da87e8cf934d
Thanks.
Kevin
---
From d7169bb15d919bf45d5857288173da87e8cf934d Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@nvidia.com>
Date: Wed, 21 May 2025 20:23:33 +0300
Subject: [PATCH] examples/ntb: check more heap allocations
[ upstream commit 0c1a5ff96bfca1ac513b64f081a20f4992c6fcc0 ]
In some rare case, the libc memory heap allocation may fail and
return NULL pointer. Before accessing the memory via the pointer,
the NULL pointer check should be done to ensure the code locates
in the safe side and no crash.
Some newer GCC version will check this by default and report warning
on this. Adding the NULL pointer check will help to get rid of such
warning.
Fixes: 5194299d6ef5 ("examples/ntb: support more functions")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
---
examples/ntb/ntb_fwd.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c
index 37d60208e3..33f3c1ef17 100644
--- a/examples/ntb/ntb_fwd.c
+++ b/examples/ntb/ntb_fwd.c
@@ -775,4 +775,8 @@ ntb_stats_clear(void)
}
ids = malloc(sizeof(uint32_t) * nb_ids);
+ if (ids == NULL) {
+ printf("Cannot allocate memory for statistics IDs\n");
+ return;
+ }
for (i = 0; i < nb_ids; i++)
ids[i] = i;
@@ -844,7 +848,18 @@ ntb_stats_display(void)
}
ids = malloc(sizeof(uint32_t) * nb_ids);
+ if (ids == NULL) {
+ printf("Cannot allocate memory for statistics IDs\n");
+ free(xstats_names);
+ return;
+ }
for (i = 0; i < nb_ids; i++)
ids[i] = i;
values = malloc(sizeof(uint64_t) * nb_ids);
+ if (values == NULL) {
+ printf("Cannot allocate memory to save fetching values\n");
+ free(xstats_names);
+ free(ids);
+ return;
+ }
if (nb_ids != rte_rawdev_xstats_get(dev_id, ids, values, nb_ids)) {
printf("Error: Unable to get xstats\n");
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.518690420 +0100
+++ 0158-examples-ntb-check-more-heap-allocations.patch 2025-07-18 20:29:11.156073403 +0100
@@ -1 +1 @@
-From 0c1a5ff96bfca1ac513b64f081a20f4992c6fcc0 Mon Sep 17 00:00:00 2001
+From d7169bb15d919bf45d5857288173da87e8cf934d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0c1a5ff96bfca1ac513b64f081a20f4992c6fcc0 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'examples/ipsec-secgw: fix number of queue pairs' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (156 preceding siblings ...)
2025-07-18 19:31 ` patch 'examples/ntb: check more heap allocations' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'dts: fix deterministic doc' " Kevin Traynor
` (16 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Volodymyr Fialko; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1e9f40fa2f6d564bb832f8fc185450dde557c938
Thanks.
Kevin
---
From 1e9f40fa2f6d564bb832f8fc185450dde557c938 Mon Sep 17 00:00:00 2001
From: Volodymyr Fialko <vfialko@marvell.com>
Date: Wed, 9 Jul 2025 10:23:25 +0200
Subject: [PATCH] examples/ipsec-secgw: fix number of queue pairs
[ upstream commit 7e6d6106a4ef052d6a2a6bd6e83c5b16a36c65c9 ]
Fix a mismatch between the signature of the cryptodevs_init() function
and the arguments passed to it during the call. This caused incorrect
initialization of queue pairs in ipsec-secgw example.
Fixes: 253265f8fb97 ("examples/ipsec-secgw: reduce queues for event lookaside")
Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
---
examples/ipsec-secgw/ipsec-secgw.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index 063cc8768e..fe489f9a56 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -2995,14 +2995,5 @@ main(int32_t argc, char **argv)
sess_sz = max_session_size();
- /*
- * In event mode request minimum number of crypto queues
- * to be reserved equal to number of ports.
- */
- if (eh_conf->mode == EH_PKT_TRANSFER_MODE_EVENT)
- nb_crypto_qp = rte_eth_dev_count_avail();
- else
- nb_crypto_qp = 0;
-
- nb_crypto_qp = cryptodevs_init(nb_crypto_qp);
+ nb_crypto_qp = cryptodevs_init(eh_conf->mode);
if (nb_bufs_in_pool == 0) {
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.549622652 +0100
+++ 0159-examples-ipsec-secgw-fix-number-of-queue-pairs.patch 2025-07-18 20:29:11.156908023 +0100
@@ -1 +1 @@
-From 7e6d6106a4ef052d6a2a6bd6e83c5b16a36c65c9 Mon Sep 17 00:00:00 2001
+From 1e9f40fa2f6d564bb832f8fc185450dde557c938 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7e6d6106a4ef052d6a2a6bd6e83c5b16a36c65c9 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'dts: fix deterministic doc' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (157 preceding siblings ...)
2025-07-18 19:31 ` patch 'examples/ipsec-secgw: fix number of queue pairs' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/e1000: fix xstats name' " Kevin Traynor
` (15 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Clemens Famulla-Conrad; +Cc: Luca Vizzarro, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/aad310ede343b3786400e292270df4f8902ba161
Thanks.
Kevin
---
From aad310ede343b3786400e292270df4f8902ba161 Mon Sep 17 00:00:00 2001
From: Clemens Famulla-Conrad <cfamullaconrad@suse.com>
Date: Wed, 11 Jun 2025 16:05:30 +0200
Subject: [PATCH] dts: fix deterministic doc
[ upstream commit 5603ab87f2ed666c59cdb3ef7a210c68f3af1f2d ]
Previously, `capture_name` defaulted to a "dynamic" value.
This caused non-deterministic documentation and could lead
to overwriting capture files if the method was called
multiple times within a single Python process.
Bugzilla ID: 1718
Fixes: cecfe0aabf58 ("dts: add traffic generator abstractions")
Signed-off-by: Clemens Famulla-Conrad <cfamullaconrad@suse.com>
Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
---
.mailmap | 1 +
.../traffic_generator/capturing_traffic_generator.py | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index fc55ecbb4a..4b8a6fc21d 100644
--- a/.mailmap
+++ b/.mailmap
@@ -275,4 +275,5 @@ Ciara Loftus <ciara.loftus@intel.com>
Ciara Power <ciara.power@intel.com>
Claire Murphy <claire.k.murphy@intel.com>
+Clemens Famulla-Conrad <cfamullaconrad@suse.com>
Cody Doucette <doucette@bu.edu>
Congwen Zhang <zhang.congwen@zte.com.cn>
diff --git a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
index 66a77da9c4..f485043f73 100644
--- a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
+++ b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
@@ -71,5 +71,5 @@ class CapturingTrafficGenerator(TrafficGenerator):
filter_config: PacketFilteringConfig,
duration: float,
- capture_name: str = _get_default_capture_name(),
+ capture_name: str = "",
) -> list[Packet]:
"""Send `packets` and capture received traffic.
@@ -105,4 +105,7 @@ class CapturingTrafficGenerator(TrafficGenerator):
)
+ if not capture_name:
+ capture_name = _get_default_capture_name()
+
self._logger.debug(f"Received packets: {get_packet_summaries(received_packets)}")
self._write_capture_from_packets(capture_name, received_packets)
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.582029778 +0100
+++ 0160-dts-fix-deterministic-doc.patch 2025-07-18 20:29:11.158908030 +0100
@@ -1 +1 @@
-From 5603ab87f2ed666c59cdb3ef7a210c68f3af1f2d Mon Sep 17 00:00:00 2001
+From aad310ede343b3786400e292270df4f8902ba161 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5603ab87f2ed666c59cdb3ef7a210c68f3af1f2d ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index eba7383c7d..c7d55c7386 100644
+index fc55ecbb4a..4b8a6fc21d 100644
@@ -26 +27 @@
-@@ -277,4 +277,5 @@ Ciara Loftus <ciara.loftus@intel.com>
+@@ -275,4 +275,5 @@ Ciara Loftus <ciara.loftus@intel.com>
@@ -33 +34 @@
-index 61e5033f0b..a85858ba07 100644
+index 66a77da9c4..f485043f73 100644
@@ -36 +37 @@
-@@ -73,5 +73,5 @@ class CapturingTrafficGenerator(TrafficGenerator):
+@@ -71,5 +71,5 @@ class CapturingTrafficGenerator(TrafficGenerator):
@@ -43 +44 @@
-@@ -107,4 +107,7 @@ class CapturingTrafficGenerator(TrafficGenerator):
+@@ -105,4 +105,7 @@ class CapturingTrafficGenerator(TrafficGenerator):
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/e1000: fix xstats name' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (158 preceding siblings ...)
2025-07-18 19:31 ` patch 'dts: fix deterministic doc' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/mlx5: fix maximal queue size query' " Kevin Traynor
` (14 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Kaiwen Deng; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6d6bc1ee499253919cfc97b178c728787e01f37a
Thanks.
Kevin
---
From 6d6bc1ee499253919cfc97b178c728787e01f37a Mon Sep 17 00:00:00 2001
From: Kaiwen Deng <kaiwenx.deng@intel.com>
Date: Thu, 10 Apr 2025 13:52:46 +0800
Subject: [PATCH] net/e1000: fix xstats name
[ upstream commit 9303834c26ec7b3fb91f84d2c953ce4dae3073fb ]
The igb and igc xstats names need to be corrected:
tx_size_1023_to_max_packets should be tx_size_1024_to_max_packets.
Fixes: 38552317dcef ("igb: add extended stats")
Fixes: e6defdfddc3b ("net/igc: enable statistics")
Signed-off-by: Kaiwen Deng <kaiwenx.deng@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/e1000/igb_ethdev.c | 2 +-
drivers/net/igc/igc_ethdev.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 266d74b444..2b7a7f54d2 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -486,5 +486,5 @@ static const struct rte_igb_xstats_name_off rte_igb_stats_strings[] = {
{"tx_size_512_to_1023_packets", offsetof(struct e1000_hw_stats,
ptc1023)},
- {"tx_size_1023_to_max_packets", offsetof(struct e1000_hw_stats,
+ {"tx_size_1024_to_max_packets", offsetof(struct e1000_hw_stats,
ptc1522)},
{"tx_multicast_packets", offsetof(struct e1000_hw_stats, mptc)},
diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c
index bf9143ccd8..6bd0885a03 100644
--- a/drivers/net/igc/igc_ethdev.c
+++ b/drivers/net/igc/igc_ethdev.c
@@ -178,5 +178,5 @@ static const struct rte_igc_xstats_name_off rte_igc_stats_strings[] = {
{"tx_size_512_to_1023_packets", offsetof(struct igc_hw_stats,
ptc1023)},
- {"tx_size_1023_to_max_packets", offsetof(struct igc_hw_stats,
+ {"tx_size_1024_to_max_packets", offsetof(struct igc_hw_stats,
ptc1522)},
{"tx_multicast_packets", offsetof(struct igc_hw_stats, mptc)},
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.613660801 +0100
+++ 0161-net-e1000-fix-xstats-name.patch 2025-07-18 20:29:11.162908042 +0100
@@ -1 +1 @@
-From 9303834c26ec7b3fb91f84d2c953ce4dae3073fb Mon Sep 17 00:00:00 2001
+From 6d6bc1ee499253919cfc97b178c728787e01f37a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9303834c26ec7b3fb91f84d2c953ce4dae3073fb ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -16,2 +17,2 @@
- drivers/net/intel/e1000/igb_ethdev.c | 2 +-
- drivers/net/intel/e1000/igc_ethdev.c | 2 +-
+ drivers/net/e1000/igb_ethdev.c | 2 +-
+ drivers/net/igc/igc_ethdev.c | 2 +-
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/e1000/igb_ethdev.c b/drivers/net/intel/e1000/igb_ethdev.c
-index cbd2f15f5f..40f453c8d9 100644
---- a/drivers/net/intel/e1000/igb_ethdev.c
-+++ b/drivers/net/intel/e1000/igb_ethdev.c
-@@ -487,5 +487,5 @@ static const struct rte_igb_xstats_name_off rte_igb_stats_strings[] = {
+diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
+index 266d74b444..2b7a7f54d2 100644
+--- a/drivers/net/e1000/igb_ethdev.c
++++ b/drivers/net/e1000/igb_ethdev.c
+@@ -486,5 +486,5 @@ static const struct rte_igb_xstats_name_off rte_igb_stats_strings[] = {
@@ -31,6 +32,6 @@
-diff --git a/drivers/net/intel/e1000/igc_ethdev.c b/drivers/net/intel/e1000/igc_ethdev.c
-index e712cfcf7c..68444e4fba 100644
---- a/drivers/net/intel/e1000/igc_ethdev.c
-+++ b/drivers/net/intel/e1000/igc_ethdev.c
-@@ -182,5 +182,5 @@ static const struct rte_igc_xstats_name_off rte_igc_stats_strings[] = {
- {"tx_size_512_to_1023_packets", offsetof(struct e1000_hw_stats,
+diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c
+index bf9143ccd8..6bd0885a03 100644
+--- a/drivers/net/igc/igc_ethdev.c
++++ b/drivers/net/igc/igc_ethdev.c
+@@ -178,5 +178,5 @@ static const struct rte_igc_xstats_name_off rte_igc_stats_strings[] = {
+ {"tx_size_512_to_1023_packets", offsetof(struct igc_hw_stats,
@@ -38,2 +39,2 @@
-- {"tx_size_1023_to_max_packets", offsetof(struct e1000_hw_stats,
-+ {"tx_size_1024_to_max_packets", offsetof(struct e1000_hw_stats,
+- {"tx_size_1023_to_max_packets", offsetof(struct igc_hw_stats,
++ {"tx_size_1024_to_max_packets", offsetof(struct igc_hw_stats,
@@ -41 +42 @@
- {"tx_multicast_packets", offsetof(struct e1000_hw_stats, mptc)},
+ {"tx_multicast_packets", offsetof(struct igc_hw_stats, mptc)},
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/mlx5: fix maximal queue size query' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (159 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/e1000: fix xstats name' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'bus/vmbus: align ring buffer data to page boundary' " Kevin Traynor
` (13 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Viacheslav Ovsiienko; +Cc: Edwin Brossette, Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/355a5224b5a3467646e36950b4cd5844a05d5060
Thanks.
Kevin
---
From 355a5224b5a3467646e36950b4cd5844a05d5060 Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Date: Wed, 14 May 2025 10:55:30 +0300
Subject: [PATCH] net/mlx5: fix maximal queue size query
[ upstream commit 9de8acd30d5adfc5b9703d15a3e1babc7d4ddacc ]
The mlx5 PMD manages the device using two modes: the Verbs API
and the DevX API. Each API offers its own method for querying
the maximum work queue size (in descriptors).
The corrected patch enhanced the rte_eth_dev_info_get() API
support in mlx5 PMD to return the true maximum number of descriptors.
It also implemented a limit check during queue creation, but this
was applied only to "DevX mode." Consequently, the "Verbs mode"
was overlooked, leading to malfunction on legacy NICs that do
not support DevX.
This patch adds support for Verbs mode, and all limit checks are
updated accordingly.
Fixes: 4c3d7961d900 ("net/mlx5: fix reported Rx/Tx descriptor limits")
Reported-by: Edwin Brossette <edwin.brossette@6wind.com>
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/common/mlx5/mlx5_prm.h | 1 +
drivers/net/mlx5/mlx5.h | 1 +
drivers/net/mlx5/mlx5_devx.c | 2 +-
drivers/net/mlx5/mlx5_ethdev.c | 39 +++++++++++++++++++++++++++++----
drivers/net/mlx5/mlx5_rxq.c | 2 +-
drivers/net/mlx5/mlx5_trigger.c | 4 ++--
drivers/net/mlx5/mlx5_txq.c | 12 +++++-----
7 files changed, 47 insertions(+), 14 deletions(-)
diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index 2d82807bc2..d24fd197ba 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -42,4 +42,5 @@
#define MLX5_CQ_INDEX_WIDTH 24
#define MLX5_WQ_INDEX_WIDTH 16
+#define MLX5_WQ_INDEX_MAX (1u << (MLX5_WQ_INDEX_WIDTH - 1))
/* WQE Segment sizes in bytes. */
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 856d432c69..8849334755 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -2273,4 +2273,5 @@ int mlx5_representor_info_get(struct rte_eth_dev *dev,
uint16_t mlx5_representor_id_encode(const struct mlx5_switch_info *info,
enum rte_eth_representor_type hpf_type);
+uint16_t mlx5_dev_get_max_wq_size(struct mlx5_dev_ctx_shared *sh);
int mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info);
int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size);
diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index f9081b0e30..7ca95e81c6 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -1627,5 +1627,5 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
/* Create Send Queue object with DevX. */
wqe_n = RTE_MIN((1UL << txq_data->elts_n) * wqe_size,
- (uint32_t)priv->sh->dev_cap.max_qp_wr);
+ (uint32_t)mlx5_dev_get_max_wq_size(priv->sh));
log_desc_n = log2above(wqe_n);
ret = mlx5_txq_create_devx_sq_resources(dev, idx, log_desc_n);
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index ddfe968a99..68d1c1bfa7 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -315,4 +315,35 @@ mlx5_set_txlimit_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
}
+/**
+ * Get maximal work queue size in WQEs
+ *
+ * @param sh
+ * Pointer to the device shared context.
+ * @return
+ * Maximal number of WQEs in queue
+ */
+uint16_t
+mlx5_dev_get_max_wq_size(struct mlx5_dev_ctx_shared *sh)
+{
+ uint16_t max_wqe = MLX5_WQ_INDEX_MAX;
+
+ if (sh->cdev->config.devx) {
+ /* use HCA properties for DevX config */
+ MLX5_ASSERT(sh->cdev->config.hca_attr.log_max_wq_sz != 0);
+ MLX5_ASSERT(sh->cdev->config.hca_attr.log_max_wq_sz < MLX5_WQ_INDEX_WIDTH);
+ if (sh->cdev->config.hca_attr.log_max_wq_sz != 0 &&
+ sh->cdev->config.hca_attr.log_max_wq_sz < MLX5_WQ_INDEX_WIDTH)
+ max_wqe = 1u << sh->cdev->config.hca_attr.log_max_wq_sz;
+ } else {
+ /* use IB device capabilities */
+ MLX5_ASSERT(sh->dev_cap.max_qp_wr > 0);
+ MLX5_ASSERT((unsigned int)sh->dev_cap.max_qp_wr <= MLX5_WQ_INDEX_MAX);
+ if (sh->dev_cap.max_qp_wr > 0 &&
+ (uint32_t)sh->dev_cap.max_qp_wr <= MLX5_WQ_INDEX_MAX)
+ max_wqe = (uint16_t)sh->dev_cap.max_qp_wr;
+ }
+ return max_wqe;
+}
+
/**
* DPDK callback to get information about the device.
@@ -328,4 +359,5 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
struct mlx5_priv *priv = dev->data->dev_private;
unsigned int max;
+ uint16_t max_wqe;
/* FIXME: we should ask the device for these values. */
@@ -360,8 +392,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
mlx5_set_default_params(dev, info);
mlx5_set_txlimit_params(dev, info);
- info->rx_desc_lim.nb_max =
- 1 << priv->sh->cdev->config.hca_attr.log_max_wq_sz;
- info->tx_desc_lim.nb_max =
- 1 << priv->sh->cdev->config.hca_attr.log_max_wq_sz;
+ max_wqe = mlx5_dev_get_max_wq_size(priv->sh);
+ info->rx_desc_lim.nb_max = max_wqe;
+ info->tx_desc_lim.nb_max = max_wqe;
if (priv->sh->cdev->config.hca_attr.mem_rq_rmp &&
priv->obj_ops.rxq_obj_new == devx_obj_ops.rxq_obj_new)
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 75733339e4..508d27d318 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -662,5 +662,5 @@ mlx5_rx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc,
bool empty;
- if (*desc > 1 << priv->sh->cdev->config.hca_attr.log_max_wq_sz) {
+ if (*desc > mlx5_dev_get_max_wq_size(priv->sh)) {
DRV_LOG(ERR,
"port %u number of descriptors requested for Rx queue"
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 2f679a30cf..485984f9b0 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -218,6 +218,6 @@ mlx5_rxq_start(struct rte_eth_dev *dev)
return -rte_errno;
}
- DRV_LOG(DEBUG, "Port %u dev_cap.max_qp_wr is %d.",
- dev->data->port_id, priv->sh->dev_cap.max_qp_wr);
+ DRV_LOG(DEBUG, "Port %u max work queue size is %d.",
+ dev->data->port_id, mlx5_dev_get_max_wq_size(priv->sh));
DRV_LOG(DEBUG, "Port %u dev_cap.max_sge is %d.",
dev->data->port_id, priv->sh->dev_cap.max_sge);
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index d0b9576b09..f74af5471e 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -334,5 +334,5 @@ mlx5_tx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc)
struct mlx5_priv *priv = dev->data->dev_private;
- if (*desc > 1 << priv->sh->cdev->config.hca_attr.log_max_wq_sz) {
+ if (*desc > mlx5_dev_get_max_wq_size(priv->sh)) {
DRV_LOG(ERR,
"port %u number of descriptors requested for Tx queue"
@@ -729,5 +729,5 @@ txq_calc_inline_max(struct mlx5_txq_ctrl *txq_ctrl)
unsigned int wqe_size;
- wqe_size = priv->sh->dev_cap.max_qp_wr / desc;
+ wqe_size = mlx5_dev_get_max_wq_size(priv->sh) / desc;
if (!wqe_size)
return 0;
@@ -1084,4 +1084,5 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_txq_ctrl *tmpl;
+ uint16_t max_wqe;
tmpl = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, sizeof(*tmpl) +
@@ -1109,11 +1110,10 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
if (txq_adjust_params(tmpl))
goto error;
- if (txq_calc_wqebb_cnt(tmpl) >
- priv->sh->dev_cap.max_qp_wr) {
+ max_wqe = mlx5_dev_get_max_wq_size(priv->sh);
+ if (txq_calc_wqebb_cnt(tmpl) > max_wqe) {
DRV_LOG(ERR,
"port %u Tx WQEBB count (%d) exceeds the limit (%d),"
" try smaller queue size",
- dev->data->port_id, txq_calc_wqebb_cnt(tmpl),
- priv->sh->dev_cap.max_qp_wr);
+ dev->data->port_id, txq_calc_wqebb_cnt(tmpl), max_wqe);
rte_errno = ENOMEM;
goto error;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.648964724 +0100
+++ 0162-net-mlx5-fix-maximal-queue-size-query.patch 2025-07-18 20:29:11.171908069 +0100
@@ -1 +1 @@
-From 9de8acd30d5adfc5b9703d15a3e1babc7d4ddacc Mon Sep 17 00:00:00 2001
+From 355a5224b5a3467646e36950b4cd5844a05d5060 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9de8acd30d5adfc5b9703d15a3e1babc7d4ddacc ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -37 +38 @@
-index 742c274a85..7accdeab87 100644
+index 2d82807bc2..d24fd197ba 100644
@@ -47 +48 @@
-index 36f11b9c51..5695d0f54a 100644
+index 856d432c69..8849334755 100644
@@ -50 +51 @@
-@@ -2304,4 +2304,5 @@ int mlx5_representor_info_get(struct rte_eth_dev *dev,
+@@ -2273,4 +2273,5 @@ int mlx5_representor_info_get(struct rte_eth_dev *dev,
@@ -57 +58 @@
-index a12891a983..9711746edb 100644
+index f9081b0e30..7ca95e81c6 100644
@@ -60 +61 @@
-@@ -1594,5 +1594,5 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
+@@ -1627,5 +1627,5 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
@@ -68 +69 @@
-index 7708a0b808..a50320075c 100644
+index ddfe968a99..68d1c1bfa7 100644
@@ -126 +127 @@
-index ab29b43875..b676e5394b 100644
+index 75733339e4..508d27d318 100644
@@ -129 +130 @@
-@@ -657,5 +657,5 @@ mlx5_rx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc,
+@@ -662,5 +662,5 @@ mlx5_rx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc,
@@ -137 +138 @@
-index 4ee44e9165..8145ad4233 100644
+index 2f679a30cf..485984f9b0 100644
@@ -150 +151 @@
-index ddd3a66282..5fee5bc4e8 100644
+index d0b9576b09..f74af5471e 100644
@@ -153 +154 @@
-@@ -335,5 +335,5 @@ mlx5_tx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc)
+@@ -334,5 +334,5 @@ mlx5_tx_queue_pre_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t *desc)
@@ -167 +168 @@
-@@ -1055,4 +1055,5 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1084,4 +1084,5 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
@@ -173,3 +174,3 @@
-@@ -1079,11 +1080,10 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
- txq_set_params(tmpl);
- txq_adjust_params(tmpl);
+@@ -1109,11 +1110,10 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+ if (txq_adjust_params(tmpl))
+ goto error;
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'bus/vmbus: align ring buffer data to page boundary' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (160 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/mlx5: fix maximal queue size query' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'crypto/virtio: add request check on request side' " Kevin Traynor
` (12 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Long Li; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/254594c9522e8e9127f86d4cfd594f5f52e2abde
Thanks.
Kevin
---
From 254594c9522e8e9127f86d4cfd594f5f52e2abde Mon Sep 17 00:00:00 2001
From: Long Li <longli@microsoft.com>
Date: Fri, 18 Apr 2025 12:32:47 -0700
Subject: [PATCH] bus/vmbus: align ring buffer data to page boundary
[ upstream commit c54fa45817932057dd8f275fa1b8e4dcaede7813 ]
The ring buffer data region always starts at the system page boundary
after ring buffer head. The current code assumes the system page size is
4k. This is not always correct.
Fix this by using system page size for addressing ring buffer data.
Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Signed-off-by: Long Li <longli@microsoft.com>
---
drivers/bus/vmbus/rte_vmbus_reg.h | 9 +++------
drivers/bus/vmbus/vmbus_bufring.c | 9 ++++++---
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/vmbus/rte_vmbus_reg.h b/drivers/bus/vmbus/rte_vmbus_reg.h
index e3299aa871..a12c7e2715 100644
--- a/drivers/bus/vmbus/rte_vmbus_reg.h
+++ b/drivers/bus/vmbus/rte_vmbus_reg.h
@@ -101,12 +101,9 @@ struct vmbus_bufring {
} feature_bits;
- /* Pad it to rte_mem_page_size() so that data starts on page boundary */
- uint8_t reserved2[4028];
-
/*
- * Ring data starts here + RingDataStartOffset
- * !!! DO NOT place any fields below this !!!
+ * This is the end of ring buffer head. The ring buffer data is system
+ * page aligned and starts at rte_mem_page_size() from the beginning
+ * of this structure
*/
- uint8_t data[];
} __rte_packed;
diff --git a/drivers/bus/vmbus/vmbus_bufring.c b/drivers/bus/vmbus/vmbus_bufring.c
index c78619dc44..fcb97287dc 100644
--- a/drivers/bus/vmbus/vmbus_bufring.c
+++ b/drivers/bus/vmbus/vmbus_bufring.c
@@ -37,5 +37,8 @@ void vmbus_br_setup(struct vmbus_br *br, void *buf, unsigned int blen)
br->vbr = buf;
br->windex = br->vbr->windex;
- br->dsize = blen - sizeof(struct vmbus_bufring);
+
+ /* The ring buffer data starts at the 2nd page of the ring buffer */
+ RTE_VERIFY(blen > rte_mem_page_size());
+ br->dsize = blen - rte_mem_page_size();
}
@@ -73,5 +76,5 @@ vmbus_txbr_copyto(const struct vmbus_br *tbr, uint32_t windex,
const void *src0, uint32_t cplen)
{
- uint8_t *br_data = tbr->vbr->data;
+ uint8_t *br_data = (uint8_t *)tbr->vbr + rte_mem_page_size();
uint32_t br_dsize = tbr->dsize;
const uint8_t *src = src0;
@@ -171,5 +174,5 @@ vmbus_rxbr_copyfrom(const struct vmbus_br *rbr, uint32_t rindex,
void *dst0, size_t cplen)
{
- const uint8_t *br_data = rbr->vbr->data;
+ const uint8_t *br_data = (uint8_t *)rbr->vbr + rte_mem_page_size();
uint32_t br_dsize = rbr->dsize;
uint8_t *dst = dst0;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.690458446 +0100
+++ 0163-bus-vmbus-align-ring-buffer-data-to-page-boundary.patch 2025-07-18 20:29:11.172856915 +0100
@@ -1 +1 @@
-From c54fa45817932057dd8f275fa1b8e4dcaede7813 Mon Sep 17 00:00:00 2001
+From 254594c9522e8e9127f86d4cfd594f5f52e2abde Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c54fa45817932057dd8f275fa1b8e4dcaede7813 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 54a26d12bd..fb7e3043ec 100644
+index e3299aa871..a12c7e2715 100644
@@ -25 +26 @@
-@@ -101,12 +101,9 @@ struct __rte_packed_begin vmbus_bufring {
+@@ -101,12 +101,9 @@ struct vmbus_bufring {
@@ -39 +40 @@
- } __rte_packed_end;
+ } __rte_packed;
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'crypto/virtio: add request check on request side' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (161 preceding siblings ...)
2025-07-18 19:31 ` patch 'bus/vmbus: align ring buffer data to page boundary' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'ethdev: keep promiscuous/allmulti value before disabling' " Kevin Traynor
` (11 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Fan Zhang, Yu Jiang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/e59b0a9a4005bef7085c5290a47044841dc41cfa
Thanks.
Kevin
---
From e59b0a9a4005bef7085c5290a47044841dc41cfa Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Fri, 23 May 2025 14:04:50 +0000
Subject: [PATCH] crypto/virtio: add request check on request side
[ upstream commit 9771f037ec8c6592126be49ca50953d1a14a0335 ]
Add same request checks on the request side.
Fixes: b2866f473369 ("vhost/crypto: fix missed request check for copy mode")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Fan Zhang <fanzhang.oss@gmail.com>
Tested-by: Yu Jiang <yux.jiang@intel.com>
---
drivers/crypto/virtio/virtio_rxtx.c | 41 +++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/drivers/crypto/virtio/virtio_rxtx.c b/drivers/crypto/virtio/virtio_rxtx.c
index 01977c7ec4..b18b50428d 100644
--- a/drivers/crypto/virtio/virtio_rxtx.c
+++ b/drivers/crypto/virtio/virtio_rxtx.c
@@ -108,4 +108,39 @@ virtqueue_dequeue_burst_rx(struct virtqueue *vq,
}
+
+static __rte_always_inline uint8_t
+virtqueue_crypto_check_cipher_request(struct virtio_crypto_cipher_data_req *req)
+{
+ if (likely((req->para.iv_len <= VIRTIO_CRYPTO_MAX_IV_SIZE) &&
+ (req->para.src_data_len <= RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.dst_data_len >= req->para.src_data_len) &&
+ (req->para.dst_data_len <= RTE_MBUF_DEFAULT_BUF_SIZE)))
+ return VIRTIO_CRYPTO_OK;
+ return VIRTIO_CRYPTO_BADMSG;
+}
+
+static __rte_always_inline uint8_t
+virtqueue_crypto_check_chain_request(struct virtio_crypto_alg_chain_data_req *req)
+{
+ if (likely((req->para.iv_len <= VIRTIO_CRYPTO_MAX_IV_SIZE) &&
+ (req->para.src_data_len <= RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.dst_data_len >= req->para.src_data_len) &&
+ (req->para.dst_data_len <= RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.cipher_start_src_offset <
+ RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.len_to_cipher <= RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.hash_start_src_offset <
+ RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.len_to_hash <= RTE_MBUF_DEFAULT_BUF_SIZE) &&
+ (req->para.cipher_start_src_offset + req->para.len_to_cipher <=
+ req->para.src_data_len) &&
+ (req->para.hash_start_src_offset + req->para.len_to_hash <=
+ req->para.src_data_len) &&
+ (req->para.dst_data_len + req->para.hash_result_len <=
+ RTE_MBUF_DEFAULT_BUF_SIZE)))
+ return VIRTIO_CRYPTO_OK;
+ return VIRTIO_CRYPTO_BADMSG;
+}
+
static int
virtqueue_crypto_sym_pkt_header_arrange(
@@ -143,4 +178,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
req_data->u.sym_req.u.cipher.para.dst_data_len =
req_data->u.sym_req.u.cipher.para.src_data_len;
+ if (virtqueue_crypto_check_cipher_request(
+ &req_data->u.sym_req.u.cipher) != VIRTIO_CRYPTO_OK)
+ return -1;
break;
case VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING:
@@ -182,4 +220,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
req_data->u.sym_req.u.chain.para.hash_result_len =
chain_para->u.mac_param.hash_result_len;
+ if (virtqueue_crypto_check_chain_request(
+ &req_data->u.sym_req.u.chain) != VIRTIO_CRYPTO_OK)
+ return -1;
break;
default:
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.722579738 +0100
+++ 0164-crypto-virtio-add-request-check-on-request-side.patch 2025-07-18 20:29:11.172908072 +0100
@@ -1 +1 @@
-From 9771f037ec8c6592126be49ca50953d1a14a0335 Mon Sep 17 00:00:00 2001
+From e59b0a9a4005bef7085c5290a47044841dc41cfa Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9771f037ec8c6592126be49ca50953d1a14a0335 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -15,2 +16,2 @@
- drivers/crypto/virtio/virtio_rxtx.c | 40 +++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
+ drivers/crypto/virtio/virtio_rxtx.c | 41 +++++++++++++++++++++++++++++
+ 1 file changed, 41 insertions(+)
@@ -19 +20 @@
-index a7f1bd9753..00988e18b1 100644
+index 01977c7ec4..b18b50428d 100644
@@ -22 +23 @@
-@@ -194,4 +194,38 @@ virtqueue_dequeue_burst_rx_packed(struct virtqueue *vq,
+@@ -108,4 +108,39 @@ virtqueue_dequeue_burst_rx(struct virtqueue *vq,
@@ -24,0 +26 @@
++
@@ -59 +61 @@
- static inline int
+ static int
@@ -61 +63 @@
-@@ -229,4 +263,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
+@@ -143,4 +178,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
@@ -69 +71 @@
-@@ -268,4 +305,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
+@@ -182,4 +220,7 @@ virtqueue_crypto_sym_pkt_header_arrange(
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'ethdev: keep promiscuous/allmulti value before disabling' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (162 preceding siblings ...)
2025-07-18 19:31 ` patch 'crypto/virtio: add request check on request side' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ixgbe/base: fix lock checker errors' " Kevin Traynor
` (10 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Sunyang Wu; +Cc: Morten Brørup, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/f23a5bb368641f38f7b5d8eb5247297b324baaf1
Thanks.
Kevin
---
From f23a5bb368641f38f7b5d8eb5247297b324baaf1 Mon Sep 17 00:00:00 2001
From: Sunyang Wu <sunyang.wu@jaguarmicro.com>
Date: Thu, 22 May 2025 15:42:42 +0800
Subject: [PATCH] ethdev: keep promiscuous/allmulti value before disabling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 00add16978762a8bcd98cd9465503194dc4c1e9a ]
The values were reset to 0 before calling the driver function
for disabling promiscuous or allmulticast,
which could lead the driver to skip disabling.
The values of the promiscuous and allmulticast variables
are set after calling the driver, according to the return value.
Fixes: af75078fece3 ("first public release")
Signed-off-by: Sunyang Wu <sunyang.wu@jaguarmicro.com>
Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/ethdev/rte_ethdev.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index 5d24fd6865..58cb952121 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -2979,8 +2979,7 @@ rte_eth_promiscuous_disable(uint16_t port_id)
return -ENOTSUP;
- dev->data->promiscuous = 0;
diag = (*dev->dev_ops->promiscuous_disable)(dev);
- if (diag != 0)
- dev->data->promiscuous = 1;
+ if (diag == 0)
+ dev->data->promiscuous = 0;
diag = eth_err(port_id, diag);
@@ -3044,8 +3043,8 @@ rte_eth_allmulticast_disable(uint16_t port_id)
if (*dev->dev_ops->allmulticast_disable == NULL)
return -ENOTSUP;
- dev->data->all_multicast = 0;
+
diag = (*dev->dev_ops->allmulticast_disable)(dev);
- if (diag != 0)
- dev->data->all_multicast = 1;
+ if (diag == 0)
+ dev->data->all_multicast = 0;
diag = eth_err(port_id, diag);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.753400231 +0100
+++ 0165-ethdev-keep-promiscuous-allmulti-value-before-disabl.patch 2025-07-18 20:29:11.174908079 +0100
@@ -1 +1 @@
-From 00add16978762a8bcd98cd9465503194dc4c1e9a Mon Sep 17 00:00:00 2001
+From f23a5bb368641f38f7b5d8eb5247297b324baaf1 Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 00add16978762a8bcd98cd9465503194dc4c1e9a ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index d4197322a0..dd7c00bc94 100644
+index 5d24fd6865..58cb952121 100644
@@ -29 +30 @@
-@@ -3045,8 +3045,7 @@ rte_eth_promiscuous_disable(uint16_t port_id)
+@@ -2979,8 +2979,7 @@ rte_eth_promiscuous_disable(uint16_t port_id)
@@ -33 +34 @@
- diag = dev->dev_ops->promiscuous_disable(dev);
+ diag = (*dev->dev_ops->promiscuous_disable)(dev);
@@ -40,2 +41,2 @@
-@@ -3113,8 +3112,8 @@ rte_eth_allmulticast_disable(uint16_t port_id)
- if (dev->dev_ops->allmulticast_disable == NULL)
+@@ -3044,8 +3043,8 @@ rte_eth_allmulticast_disable(uint16_t port_id)
+ if (*dev->dev_ops->allmulticast_disable == NULL)
@@ -45 +46 @@
- diag = dev->dev_ops->allmulticast_disable(dev);
+ diag = (*dev->dev_ops->allmulticast_disable)(dev);
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe/base: fix lock checker errors' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (163 preceding siblings ...)
2025-07-18 19:31 ` patch 'ethdev: keep promiscuous/allmulti value before disabling' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/nfp: standardize Rx descriptor endianness' " Kevin Traynor
` (9 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6785173ef4e12b2e941fe5c236dedf16898795b3
Thanks.
Kevin
---
From 6785173ef4e12b2e941fe5c236dedf16898795b3 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 28 Mar 2025 11:16:17 +0000
Subject: [PATCH] net/ixgbe/base: fix lock checker errors
[ upstream commit b4ce09b852e27dc37c18ebff52ea994cd5253352 ]
When building on FreeBSD, errors are reported in the base code by the
lock checker (-Wthread-safety). For example:
../drivers/net/intel/ixgbe/base/ixgbe_osdep.c:42:1: error: mutex 'lock->mutex' is still held at the end of function [-Werror,-Wthread-safety-analysis]
42 | }
| ^
These errors are due to the checker not recognising the lock wrapper
functions. We can avoid these errors by converting these functions into
macros. While converting the lock macros, we can also convert the memory
allocation functions too, which allows us to remove the osdep.c file
entirely from the build.
Fixes: 30b19d1b5c43 ("net/ixgbe/base: add definitions for E610")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/ixgbe/base/ixgbe_osdep.c | 47 ----------------------------
drivers/net/ixgbe/base/ixgbe_osdep.h | 18 ++++++-----
drivers/net/ixgbe/base/meson.build | 1 -
3 files changed, 10 insertions(+), 56 deletions(-)
delete mode 100644 drivers/net/ixgbe/base/ixgbe_osdep.c
diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.c b/drivers/net/ixgbe/base/ixgbe_osdep.c
deleted file mode 100644
index d3d7e8e116..0000000000
--- a/drivers/net/ixgbe/base/ixgbe_osdep.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2024 Intel Corporation
- */
-
-#include <stdlib.h>
-
-#include <rte_common.h>
-
-#include "ixgbe_osdep.h"
-
-void *
-ixgbe_calloc(struct ixgbe_hw __rte_unused *hw, size_t count, size_t size)
-{
- return malloc(count * size);
-}
-
-void *
-ixgbe_malloc(struct ixgbe_hw __rte_unused *hw, size_t size)
-{
- return malloc(size);
-}
-
-void
-ixgbe_free(struct ixgbe_hw __rte_unused *hw, void *addr)
-{
- free(addr);
-}
-
-void ixgbe_init_lock(struct ixgbe_lock *lock)
-{
- pthread_mutex_init(&lock->mutex, NULL);
-}
-
-void ixgbe_destroy_lock(struct ixgbe_lock *lock)
-{
- pthread_mutex_destroy(&lock->mutex);
-}
-
-void ixgbe_acquire_lock(struct ixgbe_lock *lock)
-{
- pthread_mutex_lock(&lock->mutex);
-}
-
-void ixgbe_release_lock(struct ixgbe_lock *lock)
-{
- pthread_mutex_unlock(&lock->mutex);
-}
diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
index 900791a93e..cacb85cf29 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -12,4 +12,6 @@
#include <stdarg.h>
#include <stdbool.h>
+#include <malloc.h>
+
#include <rte_common.h>
#include <rte_debug.h>
@@ -51,5 +53,5 @@
#define true 1
#ifndef RTE_EXEC_ENV_WINDOWS
-#define min(a,b) RTE_MIN(a,b)
+#define min(a,b) RTE_MIN(a,b)
#endif
@@ -164,12 +166,12 @@ struct ixgbe_lock {
};
-void *ixgbe_calloc(struct ixgbe_hw *hw, size_t count, size_t size);
-void *ixgbe_malloc(struct ixgbe_hw *hw, size_t size);
-void ixgbe_free(struct ixgbe_hw *hw, void *addr);
+#define ixgbe_calloc(hw, c, s) ((void)hw, calloc(c, s))
+#define ixgbe_malloc(hw, s) ((void)hw, malloc(s))
+#define ixgbe_free(hw, a) ((void)hw, free(a))
-void ixgbe_init_lock(struct ixgbe_lock *lock);
-void ixgbe_destroy_lock(struct ixgbe_lock *lock);
-void ixgbe_acquire_lock(struct ixgbe_lock *lock);
-void ixgbe_release_lock(struct ixgbe_lock *lock);
+#define ixgbe_init_lock(lock) pthread_mutex_init(&(lock)->mutex, NULL)
+#define ixgbe_destroy_lock(lock) pthread_mutex_destroy(&(lock)->mutex)
+#define ixgbe_acquire_lock(lock) pthread_mutex_lock(&(lock)->mutex)
+#define ixgbe_release_lock(lock) pthread_mutex_unlock(&(lock)->mutex)
#endif /* _IXGBE_OS_H_ */
diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
index 64e0bfd7be..2af8a55e92 100644
--- a/drivers/net/ixgbe/base/meson.build
+++ b/drivers/net/ixgbe/base/meson.build
@@ -13,5 +13,4 @@ sources = [
'ixgbe_hv_vf.c',
'ixgbe_mbx.c',
- 'ixgbe_osdep.c',
'ixgbe_phy.c',
'ixgbe_vf.c',
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.789390814 +0100
+++ 0166-net-ixgbe-base-fix-lock-checker-errors.patch 2025-07-18 20:29:11.175908082 +0100
@@ -1 +1 @@
-From b4ce09b852e27dc37c18ebff52ea994cd5253352 Mon Sep 17 00:00:00 2001
+From 6785173ef4e12b2e941fe5c236dedf16898795b3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b4ce09b852e27dc37c18ebff52ea994cd5253352 ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -25,3 +26,3 @@
- drivers/net/intel/ixgbe/base/ixgbe_osdep.c | 47 ----------------------
- drivers/net/intel/ixgbe/base/ixgbe_osdep.h | 18 +++++----
- drivers/net/intel/ixgbe/base/meson.build | 1 -
+ drivers/net/ixgbe/base/ixgbe_osdep.c | 47 ----------------------------
+ drivers/net/ixgbe/base/ixgbe_osdep.h | 18 ++++++-----
+ drivers/net/ixgbe/base/meson.build | 1 -
@@ -29 +30 @@
- delete mode 100644 drivers/net/intel/ixgbe/base/ixgbe_osdep.c
+ delete mode 100644 drivers/net/ixgbe/base/ixgbe_osdep.c
@@ -31 +32 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_osdep.c b/drivers/net/intel/ixgbe/base/ixgbe_osdep.c
+diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.c b/drivers/net/ixgbe/base/ixgbe_osdep.c
@@ -34 +35 @@
---- a/drivers/net/intel/ixgbe/base/ixgbe_osdep.c
+--- a/drivers/net/ixgbe/base/ixgbe_osdep.c
@@ -84,4 +85,4 @@
-diff --git a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-index 398c38bffd..53d0422193 100644
---- a/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
-+++ b/drivers/net/intel/ixgbe/base/ixgbe_osdep.h
+diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
+index 900791a93e..cacb85cf29 100644
+--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
++++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -122 +123 @@
-diff --git a/drivers/net/intel/ixgbe/base/meson.build b/drivers/net/intel/ixgbe/base/meson.build
+diff --git a/drivers/net/ixgbe/base/meson.build b/drivers/net/ixgbe/base/meson.build
@@ -124,2 +125,2 @@
---- a/drivers/net/intel/ixgbe/base/meson.build
-+++ b/drivers/net/intel/ixgbe/base/meson.build
+--- a/drivers/net/ixgbe/base/meson.build
++++ b/drivers/net/ixgbe/base/meson.build
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: standardize Rx descriptor endianness' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (164 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ixgbe/base: fix lock checker errors' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/nfp: standardize NFD3 Tx " Kevin Traynor
` (8 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Chaoyong He; +Cc: Long Wu, Peng Zhang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/6933653df808e357efa9caa5b957de940ea4bb58
Thanks.
Kevin
---
From 6933653df808e357efa9caa5b957de940ea4bb58 Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 15 Apr 2025 10:54:51 +0800
Subject: [PATCH] net/nfp: standardize Rx descriptor endianness
[ upstream commit 22252c56bfa2085072d25e0f741111eb0dfa81de ]
The data endian of Rx descriptor should be little endian, and the
related logic also should modify.
Fixes: 3745dd9dd86f ("net/nfp: adjust coding style for NFD3")
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
drivers/net/nfp/flower/nfp_flower_ctrl.c | 10 ++++---
drivers/net/nfp/nfp_net_meta.c | 8 ++++--
drivers/net/nfp/nfp_rxtx.c | 36 ++++++++++++++----------
drivers/net/nfp/nfp_rxtx.h | 16 +++++------
drivers/net/nfp/nfp_rxtx_vec_avx2.c | 6 ++--
5 files changed, 45 insertions(+), 31 deletions(-)
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 21bf26b738..23d1b770d8 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -23,4 +23,5 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue,
uint16_t nb_pkts)
{
+ uint16_t data_len;
uint64_t dma_addr;
uint16_t avail = 0;
@@ -79,7 +80,8 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue,
mb = rxb->mbuf;
rxb->mbuf = new_mb;
+ data_len = rte_le_to_cpu_16(rxds->rxd.data_len);
/* Size of this segment */
- mb->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds);
+ mb->data_len = data_len - NFP_DESC_META_LEN(rxds);
/* Size of the whole packet. We just support 1 segment */
mb->pkt_len = mb->data_len;
@@ -112,8 +114,8 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue,
rxds->vals[0] = 0;
rxds->vals[1] = 0;
- dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
+ dma_addr = rte_mbuf_data_iova_default(new_mb);
rxds->fld.dd = 0;
- rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
- rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
+ rxds->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff);
+ rxds->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);
nb_hold++;
diff --git a/drivers/net/nfp/nfp_net_meta.c b/drivers/net/nfp/nfp_net_meta.c
index 70169eba6b..6dfe7f0eb2 100644
--- a/drivers/net/nfp/nfp_net_meta.c
+++ b/drivers/net/nfp/nfp_net_meta.c
@@ -112,4 +112,5 @@ nfp_net_meta_parse_vlan(const struct nfp_net_meta_parsed *meta,
struct rte_mbuf *mb)
{
+ uint16_t flags;
uint32_t ctrl = rxq->hw->super.ctrl;
@@ -132,5 +133,6 @@ nfp_net_meta_parse_vlan(const struct nfp_net_meta_parsed *meta,
}
} else if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) {
- if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) {
+ flags = rte_le_to_cpu_16(rxd->rxd.flags);
+ if ((flags & PCIE_DESC_RX_VLAN) != 0) {
mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info);
mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
@@ -235,8 +237,10 @@ nfp_net_meta_parse(struct nfp_net_rx_desc *rxds,
struct nfp_net_meta_parsed *meta)
{
+ uint16_t flags;
uint8_t *meta_base;
rte_be32_t meta_header;
meta->flags = 0;
+ flags = rte_le_to_cpu_16(rxds->rxd.flags);
if (unlikely(NFP_DESC_META_LEN(rxds) == 0))
@@ -259,5 +263,5 @@ nfp_net_meta_parse(struct nfp_net_rx_desc *rxds,
break;
case NFP_NET_METAFORMAT_SINGLE:
- if ((rxds->rxd.flags & PCIE_DESC_RX_RSS) != 0) {
+ if ((flags & PCIE_DESC_RX_RSS) != 0) {
nfp_net_meta_parse_single(meta_base, meta_header, meta);
nfp_net_meta_parse_hash(meta, rxq, mb);
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 35fb637b21..5a43fa26a8 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -122,4 +122,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
struct rte_mbuf *mb)
{
+ uint16_t flags;
struct nfp_net_hw *hw = rxq->hw;
@@ -127,7 +128,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
return;
+ flags = rte_le_to_cpu_16(rxd->rxd.flags);
+
/* If IPv4 and IP checksum error, fail */
- if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) != 0 &&
- (rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK) == 0))
+ if (unlikely((flags & PCIE_DESC_RX_IP4_CSUM) != 0 &&
+ (flags & PCIE_DESC_RX_IP4_CSUM_OK) == 0))
mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
else
@@ -135,9 +138,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
/* If neither UDP nor TCP return */
- if ((rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) == 0 &&
- (rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM) == 0)
+ if ((flags & PCIE_DESC_RX_TCP_CSUM) == 0 &&
+ (flags & PCIE_DESC_RX_UDP_CSUM) == 0)
return;
- if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK) != 0)
+ if (likely(flags & PCIE_DESC_RX_L4_CSUM_OK) != 0)
mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
else
@@ -165,10 +168,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
}
- dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(mbuf));
+ dma_addr = rte_mbuf_data_iova_default(mbuf);
rxd = &rxq->rxds[i];
rxd->fld.dd = 0;
- rxd->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
- rxd->fld.dma_addr_lo = dma_addr & 0xffffffff;
+ rxd->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff);
+ rxd->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);
rxe[i].mbuf = mbuf;
@@ -356,11 +359,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq,
struct rte_mbuf *mb)
{
+ uint16_t rxd_ptype;
struct nfp_net_hw *hw = rxq->hw;
struct nfp_ptype_parsed nfp_ptype;
- uint16_t rxd_ptype = rxds->rxd.offload_info;
if ((hw->super.ctrl_ext & NFP_NET_CFG_CTRL_PKT_TYPE) == 0)
return;
+ rxd_ptype = rte_le_to_cpu_16(rxds->rxd.offload_info);
if (rxd_ptype == 0 || (rxds->rxd.flags & PCIE_DESC_RX_VLAN) != 0)
return;
@@ -410,4 +414,5 @@ nfp_net_recv_pkts(void *rx_queue,
uint16_t nb_pkts)
{
+ uint16_t data_len;
uint64_t dma_addr;
uint16_t avail = 0;
@@ -470,12 +475,13 @@ nfp_net_recv_pkts(void *rx_queue,
mb = rxb->mbuf;
rxb->mbuf = new_mb;
+ data_len = rte_le_to_cpu_16(rxds->rxd.data_len);
PMD_RX_LOG(DEBUG, "Packet len: %u, mbuf_size: %u.",
- rxds->rxd.data_len, rxq->mbuf_size);
+ data_len, rxq->mbuf_size);
/* Size of this segment */
- mb->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds);
+ mb->data_len = data_len - NFP_DESC_META_LEN(rxds);
/* Size of the whole packet. We just support 1 segment */
- mb->pkt_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds);
+ mb->pkt_len = data_len - NFP_DESC_META_LEN(rxds);
if (unlikely((mb->data_len + hw->rx_offset) > rxq->mbuf_size)) {
@@ -512,8 +518,8 @@ nfp_net_recv_pkts(void *rx_queue,
rxds->vals[0] = 0;
rxds->vals[1] = 0;
- dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
+ dma_addr = rte_mbuf_data_iova_default(new_mb);
rxds->fld.dd = 0;
- rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
- rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
+ rxds->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff);
+ rxds->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);
nb_hold++;
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index c717d97003..def2d72f10 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -119,22 +119,22 @@ struct nfp_net_rx_desc {
/** Freelist descriptor. */
struct {
- uint16_t dma_addr_hi; /**< High bits of buffer address. */
- uint8_t spare; /**< Reserved, must be zero. */
- uint8_t dd; /**< Whether descriptor available. */
- uint32_t dma_addr_lo; /**< Low bits of buffer address. */
+ rte_le16_t dma_addr_hi; /**< High bits of buffer address. */
+ uint8_t spare; /**< Reserved, must be zero. */
+ uint8_t dd; /**< Whether descriptor available. */
+ rte_le32_t dma_addr_lo; /**< Low bits of buffer address. */
} __rte_packed fld;
/** RX descriptor. */
struct {
- uint16_t data_len; /**< Length of frame + metadata. */
+ rte_le16_t data_len; /**< Length of frame + metadata. */
uint8_t reserved; /**< Reserved, must be zero. */
uint8_t meta_len_dd; /**< Length of metadata + done flag. */
- uint16_t flags; /**< RX flags. */
- uint16_t offload_info; /**< Offloading info. */
+ rte_le16_t flags; /**< RX flags. */
+ rte_le16_t offload_info; /**< Offloading info. */
} __rte_packed rxd;
/** Reserved. */
- uint32_t vals[2];
+ rte_le32_t vals[2];
};
};
diff --git a/drivers/net/nfp/nfp_rxtx_vec_avx2.c b/drivers/net/nfp/nfp_rxtx_vec_avx2.c
index 66d003f64d..faf3d167d9 100644
--- a/drivers/net/nfp/nfp_rxtx_vec_avx2.c
+++ b/drivers/net/nfp/nfp_rxtx_vec_avx2.c
@@ -93,10 +93,12 @@ nfp_vec_avx2_recv_set_rxpkt1(struct nfp_net_rxq *rxq,
struct rte_mbuf *rx_pkt)
{
+ uint16_t data_len;
struct nfp_net_hw *hw = rxq->hw;
struct nfp_net_meta_parsed meta;
- rx_pkt->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds);
+ data_len = rte_le_to_cpu_16(rxds->rxd.data_len);
+ rx_pkt->data_len = data_len - NFP_DESC_META_LEN(rxds);
/* Size of the whole packet. We just support 1 segment */
- rx_pkt->pkt_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds);
+ rx_pkt->pkt_len = data_len - NFP_DESC_META_LEN(rxds);
/* Filling the received mbuf with packet info */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.820732353 +0100
+++ 0167-net-nfp-standardize-Rx-descriptor-endianness.patch 2025-07-18 20:29:11.177908088 +0100
@@ -1 +1 @@
-From 22252c56bfa2085072d25e0f741111eb0dfa81de Mon Sep 17 00:00:00 2001
+From 6933653df808e357efa9caa5b957de940ea4bb58 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 22252c56bfa2085072d25e0f741111eb0dfa81de ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -92 +93 @@
-index e0c1fb0987..c86bba9d87 100644
+index 35fb637b21..5a43fa26a8 100644
@@ -95 +96 @@
-@@ -123,4 +123,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
+@@ -122,4 +122,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
@@ -101 +102 @@
-@@ -128,7 +129,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
+@@ -127,7 +128,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
@@ -113 +114 @@
-@@ -136,9 +139,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
+@@ -135,9 +138,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
@@ -126 +127 @@
-@@ -166,10 +169,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
+@@ -165,10 +168,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
@@ -140 +141 @@
-@@ -357,11 +360,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq,
+@@ -356,11 +359,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq,
@@ -154 +155 @@
-@@ -411,4 +415,5 @@ nfp_net_recv_pkts(void *rx_queue,
+@@ -410,4 +414,5 @@ nfp_net_recv_pkts(void *rx_queue,
@@ -160 +161 @@
-@@ -471,12 +476,13 @@ nfp_net_recv_pkts(void *rx_queue,
+@@ -470,12 +475,13 @@ nfp_net_recv_pkts(void *rx_queue,
@@ -177 +178 @@
-@@ -513,8 +519,8 @@ nfp_net_recv_pkts(void *rx_queue,
+@@ -512,8 +518,8 @@ nfp_net_recv_pkts(void *rx_queue,
@@ -190 +191 @@
-index 4e0ed9da38..cbb6df201f 100644
+index c717d97003..def2d72f10 100644
@@ -195 +196 @@
- struct __rte_packed_begin {
+ struct {
@@ -204 +205 @@
- } __rte_packed_end fld;
+ } __rte_packed fld;
@@ -207 +208 @@
- struct __rte_packed_begin {
+ struct {
@@ -217 +218 @@
- } __rte_packed_end rxd;
+ } __rte_packed rxd;
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/nfp: standardize NFD3 Tx descriptor endianness' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (165 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/nfp: standardize Rx descriptor endianness' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'doc: add kernel options required for mlx5' " Kevin Traynor
` (7 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Chaoyong He; +Cc: Long Wu, Peng Zhang, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1a18833d453a5f78890ddc2170ceee5a7bd9a4c3
Thanks.
Kevin
---
From 1a18833d453a5f78890ddc2170ceee5a7bd9a4c3 Mon Sep 17 00:00:00 2001
From: Chaoyong He <chaoyong.he@corigine.com>
Date: Tue, 15 Apr 2025 10:54:52 +0800
Subject: [PATCH] net/nfp: standardize NFD3 Tx descriptor endianness
[ upstream commit 1095bb0f86fafee3c7dca7b2dd23075ae869f689 ]
The data endian of NFD3 Tx descriptor should be little, and the related
logic also should modify.
Fixes: 3745dd9dd86f ("net/nfp: adjust coding style for NFD3")
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
drivers/net/nfp/flower/nfp_flower_ctrl.c | 4 ++--
drivers/net/nfp/nfd3/nfp_nfd3.h | 14 +++++++-------
drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 8 ++++----
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index 23d1b770d8..6ac2caf367 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -195,8 +195,8 @@ nfp_flower_ctrl_vnic_nfd3_xmit(struct nfp_app_fw_flower *app_fw_flower,
dma_addr = rte_mbuf_data_iova(mbuf);
- txds->data_len = mbuf->pkt_len;
+ txds->data_len = rte_cpu_to_le_16(mbuf->pkt_len);
txds->dma_len = txds->data_len;
txds->dma_addr_hi = (dma_addr >> 32) & 0xff;
- txds->dma_addr_lo = (dma_addr & 0xffffffff);
+ txds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);
txds->offset_eop = FLOWER_PKT_DATA_OFFSET | NFD3_DESC_TX_EOP;
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3.h b/drivers/net/nfp/nfd3/nfp_nfd3.h
index 3ba562cc3f..6e636a86b8 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3.h
+++ b/drivers/net/nfp/nfd3/nfp_nfd3.h
@@ -18,11 +18,11 @@ struct nfp_net_nfd3_tx_desc {
union {
struct {
- uint8_t dma_addr_hi; /**< High bits of host buf address */
- uint16_t dma_len; /**< Length to DMA for this desc */
+ uint8_t dma_addr_hi; /**< High bits of host buf address */
+ rte_le16_t dma_len; /**< Length to DMA for this desc */
/** Offset in buf where pkt starts + highest bit is eop flag */
uint8_t offset_eop;
- uint32_t dma_addr_lo; /**< Low 32bit of host buf addr */
+ rte_le32_t dma_addr_lo; /**< Low 32bit of host buf addr */
- uint16_t mss; /**< MSS to be used for LSO */
+ rte_le16_t mss; /**< MSS to be used for LSO */
uint8_t lso_hdrlen; /**< LSO, where the data starts */
uint8_t flags; /**< TX Flags, see @NFD3_DESC_TX_* */
@@ -33,9 +33,9 @@ struct nfp_net_nfd3_tx_desc {
uint8_t l4_offset; /**< L4 header offset */
};
- uint16_t vlan; /**< VLAN tag to add if indicated */
+ rte_le16_t vlan; /**< VLAN tag to add if indicated */
};
- uint16_t data_len; /**< Length of frame + meta data */
+ rte_le16_t data_len; /**< Length of frame + meta data */
} __rte_packed;
- uint32_t vals[4];
+ rte_le32_t vals[4];
};
};
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index 3ffcbb2576..6466a5a4fb 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -140,5 +140,5 @@ nfp_net_nfd3_tx_vlan(struct nfp_net_txq *txq,
if ((mb->ol_flags & RTE_MBUF_F_TX_VLAN) != 0) {
txd->flags |= NFD3_DESC_TX_VLAN;
- txd->vlan = mb->vlan_tci;
+ txd->vlan = rte_cpu_to_le_16(mb->vlan_tci);
}
}
@@ -301,5 +301,5 @@ nfp_net_nfd3_xmit_pkts_common(void *tx_queue,
* multisegment packet, but TSO info needs to be in all of them.
*/
- txd.data_len = pkt->pkt_len;
+ txd.data_len = rte_cpu_to_le_16((uint16_t)pkt->pkt_len);
nfp_net_nfd3_tx_tso(txq, &txd, pkt);
nfp_net_nfd3_tx_cksum(txq, &txd, pkt);
@@ -331,8 +331,8 @@ nfp_net_nfd3_xmit_pkts_common(void *tx_queue,
/* Filling descriptors fields */
- txds->dma_len = dma_size;
+ txds->dma_len = rte_cpu_to_le_16(dma_size);
txds->data_len = txd.data_len;
txds->dma_addr_hi = (dma_addr >> 32) & 0xff;
- txds->dma_addr_lo = (dma_addr & 0xffffffff);
+ txds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);
free_descs--;
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.853261081 +0100
+++ 0168-net-nfp-standardize-NFD3-Tx-descriptor-endianness.patch 2025-07-18 20:29:11.178908091 +0100
@@ -1 +1 @@
-From 1095bb0f86fafee3c7dca7b2dd23075ae869f689 Mon Sep 17 00:00:00 2001
+From 1a18833d453a5f78890ddc2170ceee5a7bd9a4c3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1095bb0f86fafee3c7dca7b2dd23075ae869f689 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -37 +38 @@
-index 96ea23b3df..dc24f4fa1d 100644
+index 3ba562cc3f..6e636a86b8 100644
@@ -42 +43 @@
- struct __rte_packed_begin {
+ struct {
@@ -64 +65 @@
- } __rte_packed_end;
+ } __rte_packed;
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'doc: add kernel options required for mlx5' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (166 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/nfp: standardize NFD3 Tx " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ixgbe: remove VLAs' " Kevin Traynor
` (6 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Jaromír Smrček; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/18205cff93d374981b60976d0abba9f49207f24a
Thanks.
Kevin
---
From 18205cff93d374981b60976d0abba9f49207f24a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jarom=C3=ADr=20Smr=C4=8Dek?= <4plague@gmail.com>
Date: Tue, 10 Jun 2025 10:02:43 +0300
Subject: [PATCH] doc: add kernel options required for mlx5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[ upstream commit 3101799fce0016061ff7aa9c3c2ad7155aff1073 ]
On some kernels (Debian 6.6, 6.9 and 6.10 tested),
there is a missing option for "TC recirculation"
that prevents MLX5 driver to include CONFIG_MLX5_CLS_ACT
in the compilation, thus preventing PF1
from properly working in multiport-eswitch mode.
Fixes: 11c73de9ef63 ("net/mlx5: probe multi-port E-Switch device")
Signed-off-by: Jaromír Smrček <4plague@gmail.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
.mailmap | 1 +
doc/guides/nics/mlx5.rst | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 4b8a6fc21d..0406784341 100644
--- a/.mailmap
+++ b/.mailmap
@@ -642,4 +642,5 @@ Jan Sokolowski <jan.sokolowski@intel.com>
Jan Viktorin <viktorin@cesnet.cz> <viktorin@rehivetech.com>
Jan Wickbom <jan.wickbom@ericsson.com>
+Jaromír Smrček <4plague@gmail.com>
Jaroslaw Gawin <jaroslawx.gawin@intel.com>
Jaroslaw Ilgiewicz <jaroslaw.ilgiewicz@intel.com>
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 896f9a0027..a826214e9f 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -1723,5 +1723,5 @@ Supported HCAs:
Supported mlx5 kernel modules versions:
-- Upstream Linux - from version 6.3.
+- Upstream Linux - from version 6.3 with CONFIG_NET_TC_SKB_EXT and CONFIG_MLX5_CLS_ACT enabled.
- Modules packaged in MLNX_OFED - from version v23.04-0.5.3.3.
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.884330510 +0100
+++ 0169-doc-add-kernel-options-required-for-mlx5.patch 2025-07-18 20:29:11.181908100 +0100
@@ -1 +1 @@
-From 3101799fce0016061ff7aa9c3c2ad7155aff1073 Mon Sep 17 00:00:00 2001
+From 18205cff93d374981b60976d0abba9f49207f24a Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit 3101799fce0016061ff7aa9c3c2ad7155aff1073 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 3dec1492aa..8483d96ec5 100644
+index 4b8a6fc21d..0406784341 100644
@@ -29,3 +30,3 @@
-@@ -646,4 +646,5 @@ Jan Wickbom <jan.wickbom@ericsson.com>
- Jananee Parthasarathy <jananeex.m.parthasarathy@intel.com>
- Janardhanan Arumugam <janardhanan.arumugam@intel.com>
+@@ -642,4 +642,5 @@ Jan Sokolowski <jan.sokolowski@intel.com>
+ Jan Viktorin <viktorin@cesnet.cz> <viktorin@rehivetech.com>
+ Jan Wickbom <jan.wickbom@ericsson.com>
@@ -36 +37 @@
-index 9957802d44..c1dcb9ca68 100644
+index 896f9a0027..a826214e9f 100644
@@ -39 +40 @@
-@@ -1762,5 +1762,5 @@ Supported HCAs:
+@@ -1723,5 +1723,5 @@ Supported HCAs:
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe: remove VLAs' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (167 preceding siblings ...)
2025-07-18 19:31 ` patch 'doc: add kernel options required for mlx5' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ixgbe: skip MACsec stats for E610' " Kevin Traynor
` (5 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Konstantin Ananyev; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/a69a881978973983718b2aecc9acfd651d6a08ad
Thanks.
Kevin
---
From a69a881978973983718b2aecc9acfd651d6a08ad Mon Sep 17 00:00:00 2001
From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Date: Wed, 5 Feb 2025 17:33:13 -0800
Subject: [PATCH] net/ixgbe: remove VLAs
[ upstream commit 948a4bbdeac9f1eef0c62b96bd1b59b1f9a021cc ]
1) ../drivers/net/ixgbe/ixgbe_ethdev.c:3556:46: warning:
variable length array used [-Wvla]
2) ../drivers/net/ixgbe/ixgbe_ethdev.c:3739:23: warning:
variable length array used [-Wvla]
3) ../drivers/net/ixgbe/ixgbe_rxtx_vec_common.h:17:24: warning:
variable length array used [-Wvla]
For first two cases: in fact ixgbe_xstats_calc_num() always returns
constant value, so it should be safe to replace that function invocation
just with a macro that performs same calculations.
For case #3: reassemble_packets() is invoked only by
ixgbe_recv_scattered_burst_vec().
And in turn, ixgbe_recv_scattered_burst_vec() operates only on fixed
max amount of packets per call: RTE_IXGBE_MAX_RX_BURST.
So, it should be safe to replace VLA with fixed size array.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/net/ixgbe/ixgbe_ethdev.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 20b625c824..e0e4802e34 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3472,9 +3472,14 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
/* This function calculates the number of xstats based on the current config */
+
+#define IXGBE_XSTATS_CALC_NUM \
+ (IXGBE_NB_HW_STATS + IXGBE_NB_MACSEC_STATS + \
+ (IXGBE_NB_RXQ_PRIO_STATS * IXGBE_NB_RXQ_PRIO_VALUES) + \
+ (IXGBE_NB_TXQ_PRIO_STATS * IXGBE_NB_TXQ_PRIO_VALUES))
+
static unsigned
-ixgbe_xstats_calc_num(void) {
- return IXGBE_NB_HW_STATS + IXGBE_NB_MACSEC_STATS +
- (IXGBE_NB_RXQ_PRIO_STATS * IXGBE_NB_RXQ_PRIO_VALUES) +
- (IXGBE_NB_TXQ_PRIO_STATS * IXGBE_NB_TXQ_PRIO_VALUES);
+ixgbe_xstats_calc_num(void)
+{
+ return IXGBE_XSTATS_CALC_NUM;
}
@@ -3592,6 +3597,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
uint16_t i;
- uint16_t size = ixgbe_xstats_calc_num();
- struct rte_eth_xstat_name xstats_names_copy[size];
+ struct rte_eth_xstat_name xstats_names_copy[IXGBE_XSTATS_CALC_NUM];
+ const uint16_t size = RTE_DIM(xstats_names_copy);
ixgbe_dev_xstats_get_names_by_id(dev, NULL, xstats_names_copy,
@@ -3775,6 +3780,6 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
uint16_t i;
- uint16_t size = ixgbe_xstats_calc_num();
- uint64_t values_copy[size];
+ uint64_t values_copy[IXGBE_XSTATS_CALC_NUM];
+ const uint16_t size = RTE_DIM(values_copy);
ixgbe_dev_xstats_get_by_id(dev, NULL, values_copy, size);
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.931631060 +0100
+++ 0170-net-ixgbe-remove-VLAs.patch 2025-07-18 20:29:11.185908112 +0100
@@ -1 +1 @@
-From 948a4bbdeac9f1eef0c62b96bd1b59b1f9a021cc Mon Sep 17 00:00:00 2001
+From a69a881978973983718b2aecc9acfd651d6a08ad Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 948a4bbdeac9f1eef0c62b96bd1b59b1f9a021cc ]
+
@@ -26 +28 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 21 +++++++++++++--------
+ drivers/net/ixgbe/ixgbe_ethdev.c | 21 +++++++++++++--------
@@ -29,5 +31,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index 5f18fbaad5..c79ecd6eec 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -3438,9 +3438,14 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
+diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
+index 20b625c824..e0e4802e34 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -3472,9 +3472,14 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
@@ -52 +54 @@
-@@ -3558,6 +3563,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
+@@ -3592,6 +3597,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
@@ -61 +63 @@
-@@ -3741,6 +3746,6 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
+@@ -3775,6 +3780,6 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ixgbe: skip MACsec stats for E610' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (168 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ixgbe: remove VLAs' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/cnxk: fix lock for security session operations' " Kevin Traynor
` (4 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Kaiwen Deng; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1dff4472fa5daf25a19fc488188da4a83c7eb408
Thanks.
Kevin
---
From 1dff4472fa5daf25a19fc488188da4a83c7eb408 Mon Sep 17 00:00:00 2001
From: Kaiwen Deng <kaiwenx.deng@intel.com>
Date: Tue, 10 Jun 2025 13:42:25 +0800
Subject: [PATCH] net/ixgbe: skip MACsec stats for E610
[ upstream commit e24ffb2b28b43e3583d357a568c2f7548e0be88a ]
E610 device does not support MACsec, so the xstats for MACsec are
meaningless for this device.
Exclude MACsec stats from the xstats info display for E610 device.
Fixes: 316637762a5f ("net/ixgbe/base: enable E610 device")
Signed-off-by: Kaiwen Deng <kaiwenx.deng@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ixgbe/ixgbe_ethdev.c | 119 +++++++++++++++++--------------
1 file changed, 66 insertions(+), 53 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index e0e4802e34..7812a5ada6 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3355,36 +3355,38 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
}
/* MACsec Stats registers */
- macsec_stats->out_pkts_untagged += IXGBE_READ_REG(hw, IXGBE_LSECTXUT);
- macsec_stats->out_pkts_encrypted +=
- IXGBE_READ_REG(hw, IXGBE_LSECTXPKTE);
- macsec_stats->out_pkts_protected +=
- IXGBE_READ_REG(hw, IXGBE_LSECTXPKTP);
- macsec_stats->out_octets_encrypted +=
- IXGBE_READ_REG(hw, IXGBE_LSECTXOCTE);
- macsec_stats->out_octets_protected +=
- IXGBE_READ_REG(hw, IXGBE_LSECTXOCTP);
- macsec_stats->in_pkts_untagged += IXGBE_READ_REG(hw, IXGBE_LSECRXUT);
- macsec_stats->in_pkts_badtag += IXGBE_READ_REG(hw, IXGBE_LSECRXBAD);
- macsec_stats->in_pkts_nosci += IXGBE_READ_REG(hw, IXGBE_LSECRXNOSCI);
- macsec_stats->in_pkts_unknownsci +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXUNSCI);
- macsec_stats->in_octets_decrypted +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXOCTD);
- macsec_stats->in_octets_validated +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXOCTV);
- macsec_stats->in_pkts_unchecked += IXGBE_READ_REG(hw, IXGBE_LSECRXUNCH);
- macsec_stats->in_pkts_delayed += IXGBE_READ_REG(hw, IXGBE_LSECRXDELAY);
- macsec_stats->in_pkts_late += IXGBE_READ_REG(hw, IXGBE_LSECRXLATE);
- for (i = 0; i < 2; i++) {
- macsec_stats->in_pkts_ok +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXOK(i));
- macsec_stats->in_pkts_invalid +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXINV(i));
- macsec_stats->in_pkts_notvalid +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXNV(i));
+ if (hw->mac.type != ixgbe_mac_E610) {
+ macsec_stats->out_pkts_untagged += IXGBE_READ_REG(hw, IXGBE_LSECTXUT);
+ macsec_stats->out_pkts_encrypted +=
+ IXGBE_READ_REG(hw, IXGBE_LSECTXPKTE);
+ macsec_stats->out_pkts_protected +=
+ IXGBE_READ_REG(hw, IXGBE_LSECTXPKTP);
+ macsec_stats->out_octets_encrypted +=
+ IXGBE_READ_REG(hw, IXGBE_LSECTXOCTE);
+ macsec_stats->out_octets_protected +=
+ IXGBE_READ_REG(hw, IXGBE_LSECTXOCTP);
+ macsec_stats->in_pkts_untagged += IXGBE_READ_REG(hw, IXGBE_LSECRXUT);
+ macsec_stats->in_pkts_badtag += IXGBE_READ_REG(hw, IXGBE_LSECRXBAD);
+ macsec_stats->in_pkts_nosci += IXGBE_READ_REG(hw, IXGBE_LSECRXNOSCI);
+ macsec_stats->in_pkts_unknownsci +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXUNSCI);
+ macsec_stats->in_octets_decrypted +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXOCTD);
+ macsec_stats->in_octets_validated +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXOCTV);
+ macsec_stats->in_pkts_unchecked += IXGBE_READ_REG(hw, IXGBE_LSECRXUNCH);
+ macsec_stats->in_pkts_delayed += IXGBE_READ_REG(hw, IXGBE_LSECRXDELAY);
+ macsec_stats->in_pkts_late += IXGBE_READ_REG(hw, IXGBE_LSECRXLATE);
+ for (i = 0; i < 2; i++) {
+ macsec_stats->in_pkts_ok +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXOK(i));
+ macsec_stats->in_pkts_invalid +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXINV(i));
+ macsec_stats->in_pkts_notvalid +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXNV(i));
+ }
+ macsec_stats->in_pkts_unusedsa += IXGBE_READ_REG(hw, IXGBE_LSECRXUNSA);
+ macsec_stats->in_pkts_notusingsa +=
+ IXGBE_READ_REG(hw, IXGBE_LSECRXNUSA);
}
- macsec_stats->in_pkts_unusedsa += IXGBE_READ_REG(hw, IXGBE_LSECRXUNSA);
- macsec_stats->in_pkts_notusingsa +=
- IXGBE_READ_REG(hw, IXGBE_LSECRXNUSA);
}
@@ -3479,13 +3481,17 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
static unsigned
-ixgbe_xstats_calc_num(void)
+ixgbe_xstats_calc_num(struct rte_eth_dev *dev)
{
+ struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ if (hw->mac.type == ixgbe_mac_E610)
+ return IXGBE_XSTATS_CALC_NUM - IXGBE_NB_MACSEC_STATS;
return IXGBE_XSTATS_CALC_NUM;
}
-static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
+static int ixgbe_dev_xstats_get_names(struct rte_eth_dev *dev,
struct rte_eth_xstat_name *xstats_names, __rte_unused unsigned int size)
{
- const unsigned cnt_stats = ixgbe_xstats_calc_num();
+ struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ const unsigned int cnt_stats = ixgbe_xstats_calc_num(dev);
unsigned stat, i, count;
@@ -3506,9 +3512,11 @@ static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
/* MACsec Stats */
- for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
- strlcpy(xstats_names[count].name,
- rte_ixgbe_macsec_strings[i].name,
- sizeof(xstats_names[count].name));
- count++;
+ if (hw->mac.type != ixgbe_mac_E610) {
+ for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
+ strlcpy(xstats_names[count].name,
+ rte_ixgbe_macsec_strings[i].name,
+ sizeof(xstats_names[count].name));
+ count++;
+ }
}
@@ -3545,5 +3553,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
{
if (!ids) {
- const unsigned int cnt_stats = ixgbe_xstats_calc_num();
+ struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ const unsigned int cnt_stats = ixgbe_xstats_calc_num(dev);
unsigned int stat, i, count;
@@ -3564,9 +3573,11 @@ static int ixgbe_dev_xstats_get_names_by_id(
/* MACsec Stats */
- for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
- strlcpy(xstats_names[count].name,
- rte_ixgbe_macsec_strings[i].name,
- sizeof(xstats_names[count].name));
- count++;
+ if (hw->mac.type != ixgbe_mac_E610) {
+ for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
+ strlcpy(xstats_names[count].name,
+ rte_ixgbe_macsec_strings[i].name,
+ sizeof(xstats_names[count].name));
+ count++;
+ }
}
@@ -3644,5 +3655,5 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
unsigned i, stat, count = 0;
- count = ixgbe_xstats_calc_num();
+ count = ixgbe_xstats_calc_num(dev);
if (n < count)
@@ -3673,9 +3684,11 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
/* MACsec Stats */
- for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
- xstats[count].value = *(uint64_t *)(((char *)macsec_stats) +
- rte_ixgbe_macsec_strings[i].offset);
- xstats[count].id = count;
- count++;
+ if (hw->mac.type != ixgbe_mac_E610) {
+ for (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {
+ xstats[count].value = *(uint64_t *)(((char *)macsec_stats) +
+ rte_ixgbe_macsec_strings[i].offset);
+ xstats[count].id = count;
+ count++;
+ }
}
@@ -3720,5 +3733,5 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
unsigned int i, stat, count = 0;
- count = ixgbe_xstats_calc_num();
+ count = ixgbe_xstats_calc_num(dev);
if (!ids && n < count)
@@ -3804,5 +3817,5 @@ ixgbe_dev_xstats_reset(struct rte_eth_dev *dev)
dev->data->dev_private);
- unsigned count = ixgbe_xstats_calc_num();
+ unsigned int count = ixgbe_xstats_calc_num(dev);
/* HW registers are cleared on read */
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:16.970242208 +0100
+++ 0171-net-ixgbe-skip-MACsec-stats-for-E610.patch 2025-07-18 20:29:11.189908125 +0100
@@ -1 +1 @@
-From e24ffb2b28b43e3583d357a568c2f7548e0be88a Mon Sep 17 00:00:00 2001
+From 1dff4472fa5daf25a19fc488188da4a83c7eb408 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e24ffb2b28b43e3583d357a568c2f7548e0be88a ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 119 ++++++++++++++-----------
+ drivers/net/ixgbe/ixgbe_ethdev.c | 119 +++++++++++++++++--------------
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index f1fd271a0a..1aae40be15 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -3359,36 +3359,38 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
+diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
+index e0e4802e34..7812a5ada6 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -3355,36 +3355,38 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
@@ -94 +95 @@
-@@ -3483,13 +3485,17 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
+@@ -3479,13 +3481,17 @@ ixgbe_dev_stats_reset(struct rte_eth_dev *dev)
@@ -115 +116 @@
-@@ -3510,9 +3516,11 @@ static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
+@@ -3506,9 +3512,11 @@ static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
@@ -132 +133 @@
-@@ -3549,5 +3557,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
+@@ -3545,5 +3553,6 @@ static int ixgbe_dev_xstats_get_names_by_id(
@@ -140 +141 @@
-@@ -3568,9 +3577,11 @@ static int ixgbe_dev_xstats_get_names_by_id(
+@@ -3564,9 +3573,11 @@ static int ixgbe_dev_xstats_get_names_by_id(
@@ -157 +158 @@
-@@ -3648,5 +3659,5 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -3644,5 +3655,5 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
@@ -164 +165 @@
-@@ -3677,9 +3688,11 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -3673,9 +3684,11 @@ ixgbe_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
@@ -181 +182 @@
-@@ -3724,5 +3737,5 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
+@@ -3720,5 +3733,5 @@ ixgbe_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
@@ -188 +189 @@
-@@ -3808,5 +3821,5 @@ ixgbe_dev_xstats_reset(struct rte_eth_dev *dev)
+@@ -3804,5 +3817,5 @@ ixgbe_dev_xstats_reset(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/cnxk: fix lock for security session operations' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (169 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ixgbe: skip MACsec stats for E610' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'doc: fix missing feature matrix for event device' " Kevin Traynor
` (3 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Rahul Bhansali; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/2c7e1dabd495e0c2233f387ba7f3a9bb2615334b
Thanks.
Kevin
---
From 2c7e1dabd495e0c2233f387ba7f3a9bb2615334b Mon Sep 17 00:00:00 2001
From: Rahul Bhansali <rbhansali@marvell.com>
Date: Mon, 23 Jun 2025 10:19:06 +0530
Subject: [PATCH] net/cnxk: fix lock for security session operations
[ upstream commit 9bebc33703df999a405ed7103dc45230d0f1fbda ]
Add fixes to have lock on security session update, write and read to
prevent corruption.
Fixes: a72e15611303 ("net/cnxk: add PMD API for IPsec SA base and flush")
Fixes: 8efa348e8160 ("net/cnxk: support custom SA index")
Signed-off-by: Rahul Bhansali <rbhansali@marvell.com>
---
drivers/net/cnxk/cn10k_ethdev_sec.c | 65 +++++++++++++++++++++++------
drivers/net/cnxk/cnxk_ethdev_sec.c | 60 ++++++++++++++++++++++++--
2 files changed, 109 insertions(+), 16 deletions(-)
diff --git a/drivers/net/cnxk/cn10k_ethdev_sec.c b/drivers/net/cnxk/cn10k_ethdev_sec.c
index 6acab8afa0..35b1665a10 100644
--- a/drivers/net/cnxk/cn10k_ethdev_sec.c
+++ b/drivers/net/cnxk/cn10k_ethdev_sec.c
@@ -801,5 +801,4 @@ cn10k_eth_sec_session_create(void *device,
}
- memset(eth_sec, 0, sizeof(struct cnxk_eth_sec_sess));
sess_priv.u64 = 0;
@@ -811,4 +810,6 @@ cn10k_eth_sec_session_create(void *device,
roc_nix_inl_dev_lock();
+ memset(eth_sec, 0, sizeof(struct cnxk_eth_sec_sess));
+
if (inbound) {
struct roc_ot_ipsec_inb_sa *inb_sa, *inb_sa_dptr;
@@ -1016,5 +1017,5 @@ cn10k_eth_sec_session_create(void *device,
rte_spinlock_unlock(lock);
- plt_nix_dbg("Created %s session with spi=%u, sa_idx=%u inl_dev=%u",
+ plt_nix_dbg("Created %s session with spi=0x%x, sa_idx=0x%x inl_dev=%u",
inbound ? "inbound" : "outbound", eth_sec->spi,
eth_sec->sa_idx, eth_sec->inl_dev);
@@ -1098,5 +1099,5 @@ cn10k_eth_sec_session_destroy(void *device, struct rte_security_session *sess)
rte_spinlock_unlock(lock);
- plt_nix_dbg("Destroyed %s session with spi=%u, sa_idx=%u, inl_dev=%u",
+ plt_nix_dbg("Destroyed %s session with spi=0x%x, sa_idx=0x%x, inl_dev=%u",
eth_sec->inb ? "inbound" : "outbound", eth_sec->spi,
eth_sec->sa_idx, eth_sec->inl_dev);
@@ -1121,5 +1122,6 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
struct rte_crypto_sym_xform *crypto;
struct cnxk_eth_sec_sess *eth_sec;
- bool inbound;
+ bool inbound, inl_dev;
+ rte_spinlock_t *lock;
int rc;
@@ -1136,4 +1138,12 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
return -ENOENT;
+ inl_dev = !!dev->inb.inl_dev;
+ lock = inbound ? &dev->inb.lock : &dev->outb.lock;
+ rte_spinlock_lock(lock);
+
+ /* Acquire lock on inline dev for inbound */
+ if (inbound && inl_dev)
+ roc_nix_inl_dev_lock();
+
eth_sec->spi = conf->ipsec.spi;
@@ -1150,5 +1160,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
true);
if (rc)
- return -EINVAL;
+ goto err;
/* Use cookie for original data */
inb_sa_dptr->w1.s.cookie = inb_sa->w1.s.cookie;
@@ -1168,5 +1178,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
sizeof(struct roc_ot_ipsec_inb_sa));
if (rc)
- return -EINVAL;
+ goto err;
/* Save userdata in inb private area */
@@ -1185,5 +1195,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
rc = cnxk_ot_ipsec_outb_sa_fill(outb_sa_dptr, ipsec, crypto);
if (rc)
- return -EINVAL;
+ goto err;
/* Save rlen info */
@@ -1214,5 +1224,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
sizeof(struct roc_ot_ipsec_outb_sa));
if (rc)
- return -EINVAL;
+ goto err;
/* Save userdata */
@@ -1221,10 +1231,24 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
}
+ if (inbound && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ plt_nix_dbg("Updated %s session with spi=0x%x, sa_idx=0x%x inl_dev=%u",
+ inbound ? "inbound" : "outbound", eth_sec->spi, eth_sec->sa_idx,
+ eth_sec->inl_dev);
return 0;
+
+err:
+ if (inbound && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ return rc;
}
static int
cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
- struct rte_security_stats *stats)
+ struct rte_security_stats *stats)
{
struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)device;
@@ -1232,4 +1256,6 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
struct cnxk_macsec_sess *macsec_sess;
struct cnxk_eth_sec_sess *eth_sec;
+ rte_spinlock_t *lock;
+ bool inl_dev, inb;
int rc;
@@ -1242,8 +1268,16 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
}
- rc = roc_nix_inl_sa_sync(&dev->nix, eth_sec->sa, eth_sec->inb,
- ROC_NIX_INL_SA_OP_FLUSH);
+ inl_dev = !!dev->inb.inl_dev;
+ inb = eth_sec->inb;
+ lock = inb ? &dev->inb.lock : &dev->outb.lock;
+ rte_spinlock_lock(lock);
+
+ /* Acquire lock on inline dev for inbound */
+ if (inb && inl_dev)
+ roc_nix_inl_dev_lock();
+
+ rc = roc_nix_inl_sa_sync(&dev->nix, eth_sec->sa, eth_sec->inb, ROC_NIX_INL_SA_OP_FLUSH);
if (rc)
- return -EINVAL;
+ goto err;
rte_delay_ms(1);
@@ -1262,5 +1296,10 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
}
- return 0;
+err:
+ if (inb && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ return rc;
}
diff --git a/drivers/net/cnxk/cnxk_ethdev_sec.c b/drivers/net/cnxk/cnxk_ethdev_sec.c
index ef75e5f0f1..063e86a236 100644
--- a/drivers/net/cnxk/cnxk_ethdev_sec.c
+++ b/drivers/net/cnxk/cnxk_ethdev_sec.c
@@ -344,6 +344,23 @@ rte_pmd_cnxk_sa_flush(uint16_t portid, union rte_pmd_cnxk_ipsec_hw_sa *sess, boo
struct rte_eth_dev *eth_dev = &rte_eth_devices[portid];
struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
+ rte_spinlock_t *lock;
+ bool inl_dev;
+ int rc;
- return roc_nix_inl_sa_sync(&dev->nix, sess, inb, ROC_NIX_INL_SA_OP_FLUSH);
+ inl_dev = !!dev->inb.inl_dev;
+ lock = inb ? &dev->inb.lock : &dev->outb.lock;
+ rte_spinlock_lock(lock);
+
+ /* Acquire lock on inline dev for inbound */
+ if (inb && inl_dev)
+ roc_nix_inl_dev_lock();
+
+ rc = roc_nix_inl_sa_sync(&dev->nix, sess, inb, ROC_NIX_INL_SA_OP_FLUSH);
+
+ if (inb && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ return rc;
}
@@ -355,4 +372,6 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
struct cnxk_eth_sec_sess *eth_sec;
+ rte_spinlock_t *lock;
+ bool inl_dev;
void *sa;
int rc;
@@ -364,11 +383,29 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
sa = sess;
+ inl_dev = !!dev->inb.inl_dev;
+ lock = inb ? &dev->inb.lock : &dev->outb.lock;
+ rte_spinlock_lock(lock);
+
+ /* Acquire lock on inline dev for inbound */
+ if (inb && inl_dev)
+ roc_nix_inl_dev_lock();
+
rc = roc_nix_inl_sa_sync(&dev->nix, sa, inb, ROC_NIX_INL_SA_OP_FLUSH);
if (rc)
- return -EINVAL;
+ goto err;
+
+ if (inb && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
memcpy(data, sa, len);
return 0;
+err:
+ if (inb && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ return rc;
}
@@ -381,5 +418,8 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
struct cnxk_eth_sec_sess *eth_sec;
struct roc_nix_inl_dev_q *q;
+ rte_spinlock_t *lock;
+ bool inl_dev;
void *sa;
+ int rc;
eth_sec = cnxk_eth_sec_sess_get_by_sess(dev, sess);
@@ -393,5 +433,19 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
return -EAGAIN;
- return roc_nix_inl_ctx_write(&dev->nix, data, sa, inb, len);
+ inl_dev = !!dev->inb.inl_dev;
+ lock = inb ? &dev->inb.lock : &dev->outb.lock;
+ rte_spinlock_lock(lock);
+
+ /* Acquire lock on inline dev for inbound */
+ if (inb && inl_dev)
+ roc_nix_inl_dev_lock();
+
+ rc = roc_nix_inl_ctx_write(&dev->nix, data, sa, inb, len);
+
+ if (inb && inl_dev)
+ roc_nix_inl_dev_unlock();
+ rte_spinlock_unlock(lock);
+
+ return rc;
}
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:17.007989215 +0100
+++ 0172-net-cnxk-fix-lock-for-security-session-operations.patch 2025-07-18 20:29:11.191908131 +0100
@@ -1 +1 @@
-From 9bebc33703df999a405ed7103dc45230d0f1fbda Mon Sep 17 00:00:00 2001
+From 2c7e1dabd495e0c2233f387ba7f3a9bb2615334b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9bebc33703df999a405ed7103dc45230d0f1fbda ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 0dc5c22444..110630596e 100644
+index 6acab8afa0..35b1665a10 100644
@@ -23,2 +24,2 @@
-@@ -787,5 +787,4 @@ cn10k_eth_sec_session_create(void *device,
- inl_dev = !!dev->inb.inl_dev;
+@@ -801,5 +801,4 @@ cn10k_eth_sec_session_create(void *device,
+ }
@@ -29 +30 @@
-@@ -797,4 +796,6 @@ cn10k_eth_sec_session_create(void *device,
+@@ -811,4 +810,6 @@ cn10k_eth_sec_session_create(void *device,
@@ -36 +37 @@
-@@ -1008,5 +1009,5 @@ cn10k_eth_sec_session_create(void *device,
+@@ -1016,5 +1017,5 @@ cn10k_eth_sec_session_create(void *device,
@@ -43 +44 @@
-@@ -1090,5 +1091,5 @@ cn10k_eth_sec_session_destroy(void *device, struct rte_security_session *sess)
+@@ -1098,5 +1099,5 @@ cn10k_eth_sec_session_destroy(void *device, struct rte_security_session *sess)
@@ -50 +51 @@
-@@ -1113,5 +1114,6 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1121,5 +1122,6 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -58 +59 @@
-@@ -1128,4 +1130,12 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1136,4 +1138,12 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -71,2 +72,2 @@
-@@ -1141,5 +1151,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
- rc = cnxk_ot_ipsec_inb_sa_fill(inb_sa_dptr, ipsec, crypto);
+@@ -1150,5 +1160,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+ true);
@@ -78 +79 @@
-@@ -1159,5 +1169,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1168,5 +1178,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -85 +86 @@
-@@ -1176,5 +1186,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1185,5 +1195,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -92 +93 @@
-@@ -1205,5 +1215,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1214,5 +1224,5 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -99 +100 @@
-@@ -1212,10 +1222,24 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
+@@ -1221,10 +1231,24 @@ cn10k_eth_sec_session_update(void *device, struct rte_security_session *sess,
@@ -125 +126 @@
-@@ -1223,4 +1247,6 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
+@@ -1232,4 +1256,6 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
@@ -132 +133 @@
-@@ -1233,8 +1259,16 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
+@@ -1242,8 +1268,16 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
@@ -149,0 +151 @@
+ rte_delay_ms(1);
@@ -151,2 +153 @@
- stats->protocol = RTE_SECURITY_PROTOCOL_IPSEC;
-@@ -1252,5 +1286,10 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
+@@ -1262,5 +1296,10 @@ cn10k_eth_sec_session_stats_get(void *device, struct rte_security_session *sess,
@@ -165 +166 @@
-index 614997bd3d..ac6ee79f78 100644
+index ef75e5f0f1..063e86a236 100644
@@ -168 +169 @@
-@@ -355,6 +355,23 @@ rte_pmd_cnxk_sa_flush(uint16_t portid, union rte_pmd_cnxk_ipsec_hw_sa *sess, boo
+@@ -344,6 +344,23 @@ rte_pmd_cnxk_sa_flush(uint16_t portid, union rte_pmd_cnxk_ipsec_hw_sa *sess, boo
@@ -193 +194 @@
-@@ -367,4 +384,6 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
+@@ -355,4 +372,6 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
@@ -200 +201 @@
-@@ -376,11 +395,29 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
+@@ -364,11 +383,29 @@ rte_pmd_cnxk_hw_sa_read(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_hw
@@ -231 +232 @@
-@@ -394,5 +431,8 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
+@@ -381,5 +418,8 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
@@ -240 +241 @@
-@@ -406,5 +446,19 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
+@@ -393,5 +433,19 @@ rte_pmd_cnxk_hw_sa_write(uint16_t portid, void *sess, union rte_pmd_cnxk_ipsec_h
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'doc: fix missing feature matrix for event device' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (170 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/cnxk: fix lock for security session operations' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ena: fix control path interrupt mode' " Kevin Traynor
` (2 subsequent siblings)
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Pavan Nikhilesh; +Cc: Jerin Jacob, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/1b243f4fcfaee86b6204c5e1879091ca5103fc3f
Thanks.
Kevin
---
From 1b243f4fcfaee86b6204c5e1879091ca5103fc3f Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula@marvell.com>
Date: Sat, 14 Jun 2025 04:45:19 +0530
Subject: [PATCH] doc: fix missing feature matrix for event device
[ upstream commit 0f13711244c242801b5a89ed2b5014a3b5973bc8 ]
Fix missing feature matrix addition for event device DMA.
Fixes: 66a30a29387a ("eventdev/dma: introduce DMA adapter")
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
---
.gitignore | 1 +
doc/guides/conf.py | 7 ++++++-
doc/guides/eventdevs/features/cnxk.ini | 8 ++++++++
doc/guides/eventdevs/overview.rst | 8 ++++++++
4 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 903fe9bc64..99954bc40b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,4 +27,5 @@ doc/guides/eventdevs/overview_tx_adptr_feature_table.txt
doc/guides/eventdevs/overview_crypto_adptr_feature_table.txt
doc/guides/eventdevs/overview_timer_adptr_feature_table.txt
+doc/guides/eventdevs/overview_dma_adptr_feature_table.txt
# ignore generated ctags/cscope files
diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index e7508ea1d5..6af3dd77ad 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -478,6 +478,11 @@ def setup(app):
'Features availability for Crypto adapters',
'Feature')
+ table_file = dirname(__file__) + '/eventdevs/overview_dma_adptr_feature_table.txt'
+ generate_overview_table(table_file, 5,
+ 'DMA adapter Features',
+ 'Features availability for DMA adapters',
+ 'Feature')
table_file = dirname(__file__) + '/eventdevs/overview_timer_adptr_feature_table.txt'
- generate_overview_table(table_file, 5,
+ generate_overview_table(table_file, 6,
'Timer adapter Features',
'Features availability for Timer adapters',
diff --git a/doc/guides/eventdevs/features/cnxk.ini b/doc/guides/eventdevs/features/cnxk.ini
index 5ba528f086..af093dda61 100644
--- a/doc/guides/eventdevs/features/cnxk.ini
+++ b/doc/guides/eventdevs/features/cnxk.ini
@@ -30,4 +30,12 @@ internal_port = Y
event_vector = Y
+;
+; Features of a default DMA adapter.
+;
+[DMA adapter Features]
+internal_port_op_new = Y
+internal_port_op_fwd = Y
+internal_port_vchan_ev_bind =
+
[Crypto adapter Features]
internal_port_op_fwd = Y
diff --git a/doc/guides/eventdevs/overview.rst b/doc/guides/eventdevs/overview.rst
index 3c5ee515f8..8d1d34bb57 100644
--- a/doc/guides/eventdevs/overview.rst
+++ b/doc/guides/eventdevs/overview.rst
@@ -33,4 +33,12 @@ Crypto device adapter supported features
.. include:: overview_crypto_adptr_feature_table.txt
+DMA adapter supported features
+------------------------------
+
+.. _table_dma_adapter_features:
+
+.. include:: overview_dma_adptr_feature_table.txt
+
+
Timer adapter supported features
--------------------------------
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:17.042384309 +0100
+++ 0173-doc-fix-missing-feature-matrix-for-event-device.patch 2025-07-18 20:29:11.192989482 +0100
@@ -1 +1 @@
-From 0f13711244c242801b5a89ed2b5014a3b5973bc8 Mon Sep 17 00:00:00 2001
+From 1b243f4fcfaee86b6204c5e1879091ca5103fc3f Mon Sep 17 00:00:00 2001
@@ -6,2 +6,3 @@
-Fix missing feature matrix addition for event device DMA and
-vector adapters.
+[ upstream commit 0f13711244c242801b5a89ed2b5014a3b5973bc8 ]
+
+Fix missing feature matrix addition for event device DMA.
@@ -10,2 +10,0 @@
-Fixes: e12c3754da7a ("eventdev/vector: introduce event vector adapter")
-Cc: stable@dpdk.org
@@ -16,5 +15,5 @@
- .gitignore | 2 ++
- doc/guides/conf.py | 12 +++++++++++-
- doc/guides/eventdevs/features/cnxk.ini | 8 ++++++++
- doc/guides/eventdevs/overview.rst | 15 +++++++++++++++
- 4 files changed, 36 insertions(+), 1 deletion(-)
+ .gitignore | 1 +
+ doc/guides/conf.py | 7 ++++++-
+ doc/guides/eventdevs/features/cnxk.ini | 8 ++++++++
+ doc/guides/eventdevs/overview.rst | 8 ++++++++
+ 4 files changed, 23 insertions(+), 1 deletion(-)
@@ -23 +22 @@
-index 48b4ce2908..c5349f6e97 100644
+index 903fe9bc64..99954bc40b 100644
@@ -26 +25 @@
-@@ -27,4 +27,6 @@ doc/guides/eventdevs/overview_tx_adptr_feature_table.txt
+@@ -27,4 +27,5 @@ doc/guides/eventdevs/overview_tx_adptr_feature_table.txt
@@ -30 +28,0 @@
-+doc/guides/eventdevs/overview_vector_adptr_feature_table.txt
@@ -34 +32 @@
-index 565f5705d8..4b1059c202 100644
+index e7508ea1d5..6af3dd77ad 100644
@@ -37 +35 @@
-@@ -478,9 +478,19 @@ def setup(app):
+@@ -478,6 +478,11 @@ def setup(app):
@@ -50,8 +47,0 @@
- 'Feature')
-+ table_file = dirname(__file__) + '/eventdevs/overview_vector_adptr_feature_table.txt'
-+ generate_overview_table(table_file, 7,
-+ 'Vector adapter Features',
-+ 'Features availability for Vector adapters',
-+ 'Feature')
-
- if Version(sphinx_version) < Version('1.3.1'):
@@ -76 +66 @@
-index 3c5ee515f8..decae3bd4e 100644
+index 3c5ee515f8..8d1d34bb57 100644
@@ -92,10 +81,0 @@
-@@ -39,2 +47,9 @@ Timer adapter supported features
-
- .. include:: overview_timer_adptr_feature_table.txt
-+
-+Event vector adapter supported features
-+---------------------------------------
-+
-+.. _table_vector_adapter_features:
-+
-+.. include:: overview_vector_adptr_feature_table.txt
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ena: fix control path interrupt mode' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (171 preceding siblings ...)
2025-07-18 19:31 ` patch 'doc: fix missing feature matrix for event device' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'net/ena: fix aenq timeout with low poll interval' " Kevin Traynor
2025-07-18 19:31 ` patch 'examples/flow_filtering: fix make clean' " Kevin Traynor
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/95dd517436d94f47a593af53ac8ddc6d4c6e4969
Thanks.
Kevin
---
From 95dd517436d94f47a593af53ac8ddc6d4c6e4969 Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Mon, 30 Jun 2025 14:15:25 +0300
Subject: [PATCH] net/ena: fix control path interrupt mode
[ upstream commit 99bfe66911cabf8f2ae1c17e05970e969bbfe794 ]
Fixed the device initialization routine to correctly handle
failure during the registration or enabling of interrupts
when operating in control path interrupt mode.
Fixes: ca1dfa85f0d3 ("net/ena: add control path pure polling mode")
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
drivers/net/ena/ena_ethdev.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index aea2e5c929..93dca8f146 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -2434,6 +2434,14 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
if (!adapter->control_path_poll_interval) {
/* Control path interrupt mode */
- rte_intr_callback_register(intr_handle, ena_control_path_handler, eth_dev);
- rte_intr_enable(intr_handle);
+ rc = rte_intr_callback_register(intr_handle, ena_control_path_handler, eth_dev);
+ if (unlikely(rc < 0)) {
+ PMD_DRV_LOG_LINE(ERR, "Failed to register control path interrupt");
+ goto err_stats_destroy;
+ }
+ rc = rte_intr_enable(intr_handle);
+ if (unlikely(rc < 0)) {
+ PMD_DRV_LOG_LINE(ERR, "Failed to enable control path interrupt");
+ goto err_control_path_destroy;
+ }
ena_com_set_admin_polling_mode(ena_dev, false);
} else {
@@ -2454,4 +2462,12 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
return 0;
err_control_path_destroy:
+ if (!adapter->control_path_poll_interval) {
+ rc = rte_intr_callback_unregister_sync(intr_handle,
+ ena_control_path_handler,
+ eth_dev);
+ if (unlikely(rc < 0))
+ PMD_INIT_LOG_LINE(ERR, "Failed to unregister interrupt handler");
+ }
+err_stats_destroy:
rte_free(adapter->drv_stats);
err_rss_destroy:
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:17.075419975 +0100
+++ 0174-net-ena-fix-control-path-interrupt-mode.patch 2025-07-18 20:29:11.193908137 +0100
@@ -1 +1 @@
-From 99bfe66911cabf8f2ae1c17e05970e969bbfe794 Mon Sep 17 00:00:00 2001
+From 95dd517436d94f47a593af53ac8ddc6d4c6e4969 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 99bfe66911cabf8f2ae1c17e05970e969bbfe794 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -17,3 +18,2 @@
- doc/guides/rel_notes/release_25_07.rst | 2 ++
- drivers/net/ena/ena_ethdev.c | 20 ++++++++++++++++++--
- 2 files changed, 20 insertions(+), 2 deletions(-)
+ drivers/net/ena/ena_ethdev.c | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
@@ -21,11 +20,0 @@
-diff --git a/doc/guides/rel_notes/release_25_07.rst b/doc/guides/rel_notes/release_25_07.rst
-index 54e2634794..017bada33e 100644
---- a/doc/guides/rel_notes/release_25_07.rst
-+++ b/doc/guides/rel_notes/release_25_07.rst
-@@ -77,4 +77,6 @@ New Features
- * Added support for enabling fragment bypass mode for egress packets.
- This mode bypasses the PPS limit enforced by EC2 for fragmented egress packets on every ENI.
-+ * Fixed the device initialization routine to correctly handle failure during the registration
-+ or enabling of interrupts when operating in control path interrupt mode.
-
- * **Added Mucse rnp net driver.**
@@ -33 +22 @@
-index 8ef6e55248..eb33ca2c6e 100644
+index aea2e5c929..93dca8f146 100644
@@ -36 +25 @@
-@@ -2466,6 +2466,14 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2434,6 +2434,14 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
@@ -53 +42 @@
-@@ -2486,4 +2494,12 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2454,4 +2462,12 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
@@ -65 +54 @@
- err_indirect_table_destroy:
+ err_rss_destroy:
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'net/ena: fix aenq timeout with low poll interval' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (172 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ena: fix control path interrupt mode' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
2025-07-18 19:31 ` patch 'examples/flow_filtering: fix make clean' " Kevin Traynor
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/7cf4b46ba87fe83b7b66474ddcc9c36a4e020b6a
Thanks.
Kevin
---
From 7cf4b46ba87fe83b7b66474ddcc9c36a4e020b6a Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Mon, 30 Jun 2025 14:16:00 +0300
Subject: [PATCH] net/ena: fix aenq timeout with low poll interval
[ upstream commit 7905edcda144899abebf1504036fde6b3439e398 ]
The driver can work in polling-based functionality of the admin
queue, eliminating the need for interrupts in the control-path.
This mode is mandatory when using the uio_pci_generic driver,
which lacks interrupt support.
The control_path_poll_interval devarg is being set within the range
[1..1000]. A value of 0 disables the polling mechanism.
This value defines the interval in milliseconds at which the driver
checks for asynchronous notifications from the device.
Testing revealed that setting this interval below 500 milliseconds
might lead to false detection of device unresponsiveness.
This patch clamps the user-defined value to the updated valid range
[500..1000] that ensures reliable aenq monitoring.
Fixes: ca1dfa85f0d3 ("net/ena: add control path pure polling mode")
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
doc/guides/nics/ena.rst | 4 +++-
drivers/net/ena/ena_ethdev.c | 24 ++++++++++--------------
drivers/net/ena/ena_ethdev.h | 3 ++-
3 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/doc/guides/nics/ena.rst b/doc/guides/nics/ena.rst
index a34575dc9b..b1b85e6ab1 100644
--- a/doc/guides/nics/ena.rst
+++ b/doc/guides/nics/ena.rst
@@ -137,5 +137,7 @@ Runtime Configuration
0 - Disable (Admin queue will work in interrupt mode).
- [1..1000] - Number of milliseconds to wait between periodic inspection of the admin queues.
+ [500..1000] - Time in milliseconds to wait between periodic checks of the admin queues.
+ If a value outside this range is specified, the driver will automatically adjust it
+ to fit within the valid range.
**A non-zero value for this devarg is mandatory for control path functionality
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 93dca8f146..160aa79137 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -31,4 +31,6 @@
((rte_pktmbuf_mtod_offset(mbuf, struct rte_tcp_hdr *, \
mbuf->l3_len + mbuf->l2_len)->data_off) >> 4)
+#define CLAMP_VAL(val, min, max) \
+ (RTE_MIN(RTE_MAX((val), (typeof(val))(min)), (typeof(val))(max)))
#define ETH_GSTRING_LEN 32
@@ -3746,23 +3748,17 @@ static int ena_process_uint_devarg(const char *key,
}
} else if (strcmp(key, ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL) == 0) {
- if (uint64_value > ENA_MAX_CONTROL_PATH_POLL_INTERVAL_MSEC) {
- PMD_INIT_LOG_LINE(ERR,
- "Control path polling interval is too long: %" PRIu64 " msecs. "
- "Maximum allowed: %d msecs.",
- uint64_value, ENA_MAX_CONTROL_PATH_POLL_INTERVAL_MSEC);
- return -EINVAL;
- } else if (uint64_value == 0) {
+ if (uint64_value == 0) {
PMD_INIT_LOG_LINE(INFO,
- "Control path polling interval is set to zero. Operating in "
- "interrupt mode.");
- adapter->control_path_poll_interval = 0;
+ "Control path polling is disabled - Operating in interrupt mode");
} else {
+ uint64_value = CLAMP_VAL(uint64_value,
+ ENA_MIN_CONTROL_PATH_POLL_INTERVAL_MSEC,
+ ENA_MAX_CONTROL_PATH_POLL_INTERVAL_MSEC);
PMD_INIT_LOG_LINE(INFO,
- "Control path polling interval is set to %" PRIu64 " msecs.",
+ "Control path polling interval is %" PRIu64 " msec",
uint64_value);
- adapter->control_path_poll_interval = uint64_value * USEC_PER_MSEC;
}
+ adapter->control_path_poll_interval = uint64_value * (USEC_PER_MSEC);
}
-
return 0;
}
@@ -4041,5 +4037,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ena,
ENA_DEVARG_LLQ_POLICY "=<0|1|2|3> "
ENA_DEVARG_MISS_TXC_TO "=<uint>"
- ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "=<0-1000>");
+ ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "= 0|<500-1000> ");
RTE_LOG_REGISTER_SUFFIX(ena_logtype_init, init, NOTICE);
RTE_LOG_REGISTER_SUFFIX(ena_logtype_driver, driver, NOTICE);
diff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h
index b8aead8f46..d3ec19957c 100644
--- a/drivers/net/ena/ena_ethdev.h
+++ b/drivers/net/ena/ena_ethdev.h
@@ -45,5 +45,6 @@
#define ENA_DEFAULT_MISSING_COMP 256U
-#define ENA_MAX_CONTROL_PATH_POLL_INTERVAL_MSEC 1000
+#define ENA_MAX_CONTROL_PATH_POLL_INTERVAL_MSEC 1000U
+#define ENA_MIN_CONTROL_PATH_POLL_INTERVAL_MSEC 500U
/* While processing submitted and completed descriptors (rx and tx path
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:17.111156786 +0100
+++ 0175-net-ena-fix-aenq-timeout-with-low-poll-interval.patch 2025-07-18 20:29:11.196908146 +0100
@@ -1 +1 @@
-From 7905edcda144899abebf1504036fde6b3439e398 Mon Sep 17 00:00:00 2001
+From 7cf4b46ba87fe83b7b66474ddcc9c36a4e020b6a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7905edcda144899abebf1504036fde6b3439e398 ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -28,5 +29,4 @@
- doc/guides/nics/ena.rst | 4 +++-
- doc/guides/rel_notes/release_25_07.rst | 2 ++
- drivers/net/ena/ena_ethdev.c | 24 ++++++++++--------------
- drivers/net/ena/ena_ethdev.h | 3 ++-
- 4 files changed, 17 insertions(+), 16 deletions(-)
+ doc/guides/nics/ena.rst | 4 +++-
+ drivers/net/ena/ena_ethdev.c | 24 ++++++++++--------------
+ drivers/net/ena/ena_ethdev.h | 3 ++-
+ 3 files changed, 15 insertions(+), 16 deletions(-)
@@ -35 +35 @@
-index 41c22804e1..cfc78f1e6a 100644
+index a34575dc9b..b1b85e6ab1 100644
@@ -47,11 +46,0 @@
-diff --git a/doc/guides/rel_notes/release_25_07.rst b/doc/guides/rel_notes/release_25_07.rst
-index 017bada33e..6f49bf8f90 100644
---- a/doc/guides/rel_notes/release_25_07.rst
-+++ b/doc/guides/rel_notes/release_25_07.rst
-@@ -79,4 +79,6 @@ New Features
- * Fixed the device initialization routine to correctly handle failure during the registration
- or enabling of interrupts when operating in control path interrupt mode.
-+ * Fixed an issue where the device might be incorrectly reported as unresponsive when using
-+ polling-based admin queue functionality with a poll interval of less than 500 milliseconds.
-
- * **Added Mucse rnp net driver.**
@@ -59 +48 @@
-index eb33ca2c6e..04a698b58c 100644
+index 93dca8f146..160aa79137 100644
@@ -69 +58 @@
-@@ -3757,23 +3759,17 @@ static int ena_process_uint_devarg(const char *key,
+@@ -3746,23 +3748,17 @@ static int ena_process_uint_devarg(const char *key,
@@ -100 +89 @@
-@@ -4082,5 +4078,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ena,
+@@ -4041,5 +4037,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ena,
@@ -103,3 +92,2 @@
-- ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "=<0-1000>")
-+ ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "= 0|<500-1000> "
- ENA_DEVARG_ENABLE_FRAG_BYPASS "=<0|1> ");
+- ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "=<0-1000>");
++ ENA_DEVARG_CONTROL_PATH_POLL_INTERVAL "= 0|<500-1000> ");
@@ -106,0 +95 @@
+ RTE_LOG_REGISTER_SUFFIX(ena_logtype_driver, driver, NOTICE);
@@ -108 +97 @@
-index e3cb4919c5..830135bcfd 100644
+index b8aead8f46..d3ec19957c 100644
@@ -111 +100 @@
-@@ -43,5 +43,6 @@
+@@ -45,5 +45,6 @@
^ permalink raw reply [flat|nested] 176+ messages in thread
* patch 'examples/flow_filtering: fix make clean' has been queued to stable release 24.11.3
2025-07-18 19:28 patch 'net/fm10k/base: fix compilation warnings' has been queued to stable release 24.11.3 Kevin Traynor
` (173 preceding siblings ...)
2025-07-18 19:31 ` patch 'net/ena: fix aenq timeout with low poll interval' " Kevin Traynor
@ 2025-07-18 19:31 ` Kevin Traynor
174 siblings, 0 replies; 176+ messages in thread
From: Kevin Traynor @ 2025-07-18 19:31 UTC (permalink / raw)
To: Tanzeel Ahmed; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 24.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/23/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: 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/3c343b83e732da91b86b1e618a40337c14467fca
Thanks.
Kevin
---
From 3c343b83e732da91b86b1e618a40337c14467fca Mon Sep 17 00:00:00 2001
From: Tanzeel Ahmed <tanzeelahmed713@gmail.com>
Date: Sat, 29 Mar 2025 12:53:33 -0700
Subject: [PATCH] examples/flow_filtering: fix make clean
[ upstream commit ab79c1ba245646055cac3a3c6ec3544b217c6751 ]
make clean is unable to delete build directory
because *.o files are not removed.
Fixes: 16158f349000 ("examples/flow_filtering: introduce use cases snippets")
Signed-off-by: Tanzeel Ahmed <tanzeelahmed713@gmail.com>
---
.mailmap | 1 +
examples/flow_filtering/Makefile | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 0406784341..41072fda31 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1521,4 +1521,5 @@ Takuya Asada <syuu@cloudius-systems.com>
Tal Avraham <talavr@annapurnalabs.com>
Tal Shnaiderman <talshn@nvidia.com> <talshn@mellanox.com>
+Tanzeel Ahmed <tanzeelahmed713@gmail.com>
Tao Y Yang <tao.y.yang@intel.com>
Tao Zhu <taox.zhu@intel.com>
diff --git a/examples/flow_filtering/Makefile b/examples/flow_filtering/Makefile
index 9998ed10b5..653e3319a2 100644
--- a/examples/flow_filtering/Makefile
+++ b/examples/flow_filtering/Makefile
@@ -51,4 +51,4 @@ build:
.PHONY: clean
clean:
- rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
+ rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared build/*.o
test -d build && rmdir -p build || true
--
2.50.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-07-18 20:29:17.147802081 +0100
+++ 0176-examples-flow_filtering-fix-make-clean.patch 2025-07-18 20:29:11.198908152 +0100
@@ -1 +1 @@
-From ab79c1ba245646055cac3a3c6ec3544b217c6751 Mon Sep 17 00:00:00 2001
+From 3c343b83e732da91b86b1e618a40337c14467fca Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ab79c1ba245646055cac3a3c6ec3544b217c6751 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 50ea382f73..eba7383c7d 100644
+index 0406784341..41072fda31 100644
@@ -22 +23,2 @@
-@@ -1540,4 +1540,5 @@ Tal Avraham <talavr@annapurnalabs.com>
+@@ -1521,4 +1521,5 @@ Takuya Asada <syuu@cloudius-systems.com>
+ Tal Avraham <talavr@annapurnalabs.com>
@@ -24 +25,0 @@
- Tamar Mashiah <tmashiah@nvidia.com>
@@ -29 +30 @@
-index 13bbafd9e8..f1e10b14dd 100644
+index 9998ed10b5..653e3319a2 100644
@@ -32 +33 @@
-@@ -43,4 +43,4 @@ build:
+@@ -51,4 +51,4 @@ build:
^ permalink raw reply [flat|nested] 176+ messages in thread