* patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11
@ 2025-10-27 16:18 luca.boccassi
2025-10-27 16:18 ` patch 'eal: fix plugin dir walk' " luca.boccassi
` (77 more replies)
0 siblings, 78 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Praveen Kaligineedi; +Cc: Joshua Washington, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/1d1ce9c3bf042be1763e2164ab6427f2d674a590
Thanks.
Luca Boccassi
---
From 1d1ce9c3bf042be1763e2164ab6427f2d674a590 Mon Sep 17 00:00:00 2001
From: Praveen Kaligineedi <pkaligineedi@google.com>
Date: Thu, 4 Sep 2025 13:59:32 -0700
Subject: [PATCH] net/gve: allocate Rx QPL pages using malloc
Allocating QPL for an RX queue might fail if enough contiguous IOVA
memory cannot be allocated. This can commonly occur when using 2MB huge
pages because the 1024 4K buffers are allocated for each RX ring by
default, resulting in 4MB for each ring. However, the only requirement
for RX QPLs is that each 4K buffer be IOVA contiguous, not the entire
QPL. Therefore, malloc will be used to allocate RX QPLs instead.
Note that TX queues require the entire QPL to be IOVA contiguous, so it
will continue to use the memzone-based allocation.
Fixes: a46583cf43c8 ("net/gve: support Rx/Tx")
Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
Signed-off-by: Joshua Washington <joshwash@google.com>
---
drivers/net/gve/gve_ethdev.c | 142 +++++++++++++++++++++++++++++------
drivers/net/gve/gve_ethdev.h | 5 +-
drivers/net/gve/gve_rx.c | 4 +-
3 files changed, 126 insertions(+), 25 deletions(-)
diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index 0796d37760..43b2b8b2b0 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -28,13 +28,45 @@ gve_write_version(uint8_t *driver_version_register)
writeb('\n', driver_version_register);
}
+static const struct rte_memzone *
+gve_alloc_using_mz(const char *name, uint32_t num_pages)
+{
+ const struct rte_memzone *mz;
+ mz = rte_memzone_reserve_aligned(name, num_pages * PAGE_SIZE,
+ rte_socket_id(),
+ RTE_MEMZONE_IOVA_CONTIG, PAGE_SIZE);
+ if (mz == NULL)
+ PMD_DRV_LOG(ERR, "Failed to alloc memzone %s.", name);
+ return mz;
+}
+
+static int
+gve_alloc_using_malloc(void **bufs, uint32_t num_entries)
+{
+ uint32_t i;
+
+ for (i = 0; i < num_entries; i++) {
+ bufs[i] = rte_malloc_socket(NULL, PAGE_SIZE, PAGE_SIZE, rte_socket_id());
+ if (bufs[i] == NULL) {
+ PMD_DRV_LOG(ERR, "Failed to malloc");
+ goto free_bufs;
+ }
+ }
+ return 0;
+
+free_bufs:
+ while (i > 0)
+ rte_free(bufs[--i]);
+
+ return -ENOMEM;
+}
+
static int
-gve_alloc_queue_page_list(struct gve_priv *priv, uint32_t id, uint32_t pages)
+gve_alloc_queue_page_list(struct gve_priv *priv, uint32_t id, uint32_t pages,
+ bool is_rx)
{
- char z_name[RTE_MEMZONE_NAMESIZE];
struct gve_queue_page_list *qpl;
- const struct rte_memzone *mz;
- dma_addr_t page_bus;
+ int err = 0;
uint32_t i;
if (priv->num_registered_pages + pages >
@@ -45,31 +77,79 @@ gve_alloc_queue_page_list(struct gve_priv *priv, uint32_t id, uint32_t pages)
return -EINVAL;
}
qpl = &priv->qpl[id];
- snprintf(z_name, sizeof(z_name), "gve_%s_qpl%d", priv->pci_dev->device.name, id);
- mz = rte_memzone_reserve_aligned(z_name, pages * PAGE_SIZE,
- rte_socket_id(),
- RTE_MEMZONE_IOVA_CONTIG, PAGE_SIZE);
- if (mz == NULL) {
- PMD_DRV_LOG(ERR, "Failed to alloc %s.", z_name);
- return -ENOMEM;
- }
+
qpl->page_buses = rte_zmalloc("qpl page buses", pages * sizeof(dma_addr_t), 0);
if (qpl->page_buses == NULL) {
PMD_DRV_LOG(ERR, "Failed to alloc qpl %u page buses", id);
return -ENOMEM;
}
- page_bus = mz->iova;
- for (i = 0; i < pages; i++) {
- qpl->page_buses[i] = page_bus;
- page_bus += PAGE_SIZE;
+
+ if (is_rx) {
+ /* RX QPL need not be IOVA contiguous.
+ * Allocate 4K size buffers using malloc
+ */
+ qpl->qpl_bufs = rte_zmalloc("qpl bufs",
+ pages * sizeof(void *), 0);
+ if (qpl->qpl_bufs == NULL) {
+ PMD_DRV_LOG(ERR, "Failed to alloc qpl bufs");
+ err = -ENOMEM;
+ goto free_qpl_page_buses;
+ }
+
+ err = gve_alloc_using_malloc(qpl->qpl_bufs, pages);
+ if (err)
+ goto free_qpl_page_bufs;
+
+ /* Populate the IOVA addresses */
+ for (i = 0; i < pages; i++)
+ qpl->page_buses[i] =
+ rte_malloc_virt2iova(qpl->qpl_bufs[i]);
+ } else {
+ char z_name[RTE_MEMZONE_NAMESIZE];
+
+ snprintf(z_name, sizeof(z_name), "gve_%s_qpl%d", priv->pci_dev->device.name, id);
+
+ /* TX QPL needs to be IOVA contiguous
+ * Allocate QPL using memzone
+ */
+ qpl->mz = gve_alloc_using_mz(z_name, pages);
+ if (!qpl->mz) {
+ err = -ENOMEM;
+ goto free_qpl_page_buses;
+ }
+
+ /* Populate the IOVA addresses */
+ for (i = 0; i < pages; i++)
+ qpl->page_buses[i] = qpl->mz->iova + i * PAGE_SIZE;
}
+
qpl->id = id;
- qpl->mz = mz;
qpl->num_entries = pages;
priv->num_registered_pages += pages;
return 0;
+
+free_qpl_page_bufs:
+ rte_free(qpl->qpl_bufs);
+free_qpl_page_buses:
+ rte_free(qpl->page_buses);
+ return err;
+}
+
+/*
+ * Free QPL bufs in RX QPLs. Should not be used on TX QPLs.
+ **/
+static void
+gve_free_qpl_bufs(struct gve_queue_page_list *qpl)
+{
+ uint32_t i;
+
+ for (i = 0; i < qpl->num_entries; i++)
+ rte_free(qpl->qpl_bufs[i]);
+
+ rte_free(qpl->qpl_bufs);
+ qpl->qpl_bufs = NULL;
}
static void
@@ -79,9 +159,22 @@ gve_free_qpls(struct gve_priv *priv)
uint16_t nb_rxqs = priv->max_nb_rxq;
uint32_t i;
- for (i = 0; i < nb_txqs + nb_rxqs; i++) {
- if (priv->qpl[i].mz != NULL)
+ if (priv->queue_format != GVE_GQI_QPL_FORMAT)
+ return;
+
+ /* Free TX QPLs. */
+ for (i = 0; i < nb_txqs; i++) {
+ if (priv->qpl[i].mz) {
rte_memzone_free(priv->qpl[i].mz);
+ priv->qpl[i].mz = NULL;
+ }
+ rte_free(priv->qpl[i].page_buses);
+ }
+
+ /* Free RX QPLs. */
+ for (; i < nb_rxqs; i++) {
+ if (priv->qpl[i].qpl_bufs)
+ gve_free_qpl_bufs(&priv->qpl[i]);
rte_free(priv->qpl[i].page_buses);
}
@@ -562,11 +655,16 @@ gve_init_priv(struct gve_priv *priv, bool skip_describe_device)
}
for (i = 0; i < priv->max_nb_txq + priv->max_nb_rxq; i++) {
- if (i < priv->max_nb_txq)
+ bool is_rx;
+
+ if (i < priv->max_nb_txq) {
pages = priv->tx_pages_per_qpl;
- else
+ is_rx = false;
+ } else {
pages = priv->rx_data_slot_cnt;
- err = gve_alloc_queue_page_list(priv, i, pages);
+ is_rx = true;
+ }
+ err = gve_alloc_queue_page_list(priv, i, pages, is_rx);
if (err != 0) {
PMD_DRV_LOG(ERR, "Failed to alloc qpl %u.", i);
goto err_qpl;
diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h
index b7702a1249..effacc2795 100644
--- a/drivers/net/gve/gve_ethdev.h
+++ b/drivers/net/gve/gve_ethdev.h
@@ -39,7 +39,10 @@ struct gve_queue_page_list {
uint32_t id; /* unique id */
uint32_t num_entries;
dma_addr_t *page_buses; /* the dma addrs of the pages */
- const struct rte_memzone *mz;
+ union {
+ const struct rte_memzone *mz; /* memzone allocated for TX queue */
+ void **qpl_bufs; /* RX qpl-buffer list allocated using malloc*/
+ };
};
/* A TX desc ring entry */
diff --git a/drivers/net/gve/gve_rx.c b/drivers/net/gve/gve_rx.c
index 50f9f5c370..e020b4af10 100644
--- a/drivers/net/gve/gve_rx.c
+++ b/drivers/net/gve/gve_rx.c
@@ -105,9 +105,9 @@ gve_rx_burst(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
len = rte_be_to_cpu_16(rxd->len) - GVE_RX_PAD;
rxe = rxq->sw_ring[rx_id];
if (rxq->is_gqi_qpl) {
- addr = (uint64_t)(rxq->qpl->mz->addr) + rx_id * PAGE_SIZE + GVE_RX_PAD;
+ addr = (uint64_t)rxq->qpl->qpl_bufs[rx_id] + GVE_RX_PAD;
rte_memcpy((void *)((size_t)rxe->buf_addr + rxe->data_off),
- (void *)(size_t)addr, len);
+ (void *)(size_t)addr, len);
}
rxe->pkt_len = len;
rxe->data_len = len;
--
2.47.3
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'eal: fix plugin dir walk' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'cmdline: fix port list parsing' " luca.boccassi
` (76 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/61274adade73841b501017af50721b96c4c1e19b
Thanks.
Luca Boccassi
---
From 61274adade73841b501017af50721b96c4c1e19b Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 20 Dec 2024 09:34:31 +0100
Subject: [PATCH] eal: fix plugin dir walk
[ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ]
For '.' and '..' directories (or any short file name),
a out of bound issue occurs.
Caught by UBSan:
EAL: Detected shared linkage of DPDK
../lib/eal/common/eal_common_options.c:420:15: runtime error: index -2
out of bounds for type 'char[256]'
#0 0x7f867eedf206 in eal_plugindir_init
eal_common_options.c
#1 0x7f867eede58a in eal_plugins_init
(build/lib/librte_eal.so.25+0xde58a)
(BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c)
#2 0x7f867efb8587 in rte_eal_init
(build/lib/librte_eal.so.25+0x1b8587)
(BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c)
#3 0x55b62360861e in main
(/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x9e061e)
(BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd)
#4 0x7f8667429d8f in __libc_start_call_main
csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#5 0x7f8667429e3f in __libc_start_main
csu/../csu/libc-start.c:392:3
#6 0x55b622d9d444 in _start
(/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x175444)
(BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/eal/common/eal_common_options.c:420:15 in
../lib/eal/common/eal_common_options.c:421:15:
runtime error: index 18446744073709551609 out of bounds
for type 'char[256]'
Fixes: c57f6e5c604a ("eal: fix plugin loading")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eal/common/eal_common_options.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index 8570f8f03e..b9ee8e05bf 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -397,12 +397,21 @@ eal_plugins_init(void)
}
#else
+static bool
+ends_with(const char *str, const char *tail)
+{
+ size_t tail_len = strlen(tail);
+ size_t str_len = strlen(str);
+
+ return str_len >= tail_len && strcmp(&str[str_len - tail_len], tail) == 0;
+}
+
static int
eal_plugindir_init(const char *path)
{
- DIR *d = NULL;
struct dirent *dent = NULL;
char sopath[PATH_MAX];
+ DIR *d = NULL;
if (path == NULL || *path == '\0')
return 0;
@@ -416,12 +425,8 @@ eal_plugindir_init(const char *path)
while ((dent = readdir(d)) != NULL) {
struct stat sb;
- int nlen = strnlen(dent->d_name, sizeof(dent->d_name));
- /* check if name ends in .so or .so.ABI_VERSION */
- if (strcmp(&dent->d_name[nlen - 3], ".so") != 0 &&
- strcmp(&dent->d_name[nlen - 4 - strlen(ABI_VERSION)],
- ".so."ABI_VERSION) != 0)
+ if (!ends_with(dent->d_name, ".so") && !ends_with(dent->d_name, ".so."ABI_VERSION))
continue;
snprintf(sopath, sizeof(sopath), "%s/%s", path, dent->d_name);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:34.944218833 +0000
+++ 0002-eal-fix-plugin-dir-walk.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From c32e203ee23473ccf3c8526d12e1c59f17c50eab Mon Sep 17 00:00:00 2001
+From 61274adade73841b501017af50721b96c4c1e19b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ]
+
@@ -39 +40,0 @@
-Cc: stable@dpdk.org
@@ -49 +50 @@
-index 3169dd069f..2f91b96190 100644
+index 8570f8f03e..b9ee8e05bf 100644
@@ -52 +53 @@
-@@ -399,12 +399,21 @@ eal_plugins_init(void)
+@@ -397,12 +397,21 @@ eal_plugins_init(void)
@@ -75 +76 @@
-@@ -418,12 +427,8 @@ eal_plugindir_init(const char *path)
+@@ -416,12 +425,8 @@ eal_plugindir_init(const char *path)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'cmdline: fix port list parsing' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
2025-10-27 16:18 ` patch 'eal: fix plugin dir walk' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'cmdline: fix highest bit " luca.boccassi
` (75 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Marat Khalili, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/712571041c9a7b6cc7fde5eeb504855d2c05d36a
Thanks.
Luca Boccassi
---
From 712571041c9a7b6cc7fde5eeb504855d2c05d36a Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:47:33 +0100
Subject: [PATCH] cmdline: fix port list parsing
[ upstream commit 48e03475262798e6758b9c767e87e2f88375072c ]
Doing arithmetic with the NULL pointer is undefined.
Caught by UBSan:
../lib/cmdline/cmdline_parse_portlist.c:40:19: runtime error:
applying non-zero offset 1 to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/cmdline/cmdline_parse_portlist.c:40:19 in
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Marat Khalili <marat.khalili@huawei.com>
---
lib/cmdline/cmdline_parse_portlist.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/lib/cmdline/cmdline_parse_portlist.c b/lib/cmdline/cmdline_parse_portlist.c
index 2e2294553a..290e61f211 100644
--- a/lib/cmdline/cmdline_parse_portlist.c
+++ b/lib/cmdline/cmdline_parse_portlist.c
@@ -31,15 +31,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
static int
parse_ports(cmdline_portlist_t *pl, const char *str)
{
+ const char *first = str;
size_t ps, pe;
- const char *first, *last;
char *end;
- for (first = str, last = first;
- first != NULL && last != NULL;
- first = last + 1) {
-
- last = strchr(first, ',');
+ while (first != NULL) {
+ const char *last = strchr(first, ',');
errno = 0;
ps = strtoul(first, &end, 10);
@@ -63,6 +60,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
return -1;
parse_set_list(pl, ps, pe);
+ first = (last == NULL ? NULL : last + 1);
}
return 0;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:34.977880376 +0000
+++ 0003-cmdline-fix-port-list-parsing.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From 48e03475262798e6758b9c767e87e2f88375072c Mon Sep 17 00:00:00 2001
+From 712571041c9a7b6cc7fde5eeb504855d2c05d36a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 48e03475262798e6758b9c767e87e2f88375072c ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index ef6ce223b5..549f6d9671 100644
+index 2e2294553a..290e61f211 100644
@@ -29 +30 @@
-@@ -33,15 +33,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
+@@ -31,15 +31,12 @@ parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
@@ -48 +49 @@
-@@ -65,6 +62,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
+@@ -63,6 +60,7 @@ parse_ports(cmdline_portlist_t *pl, const char *str)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'cmdline: fix highest bit port list parsing' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
2025-10-27 16:18 ` patch 'eal: fix plugin dir walk' " luca.boccassi
2025-10-27 16:18 ` patch 'cmdline: fix port list parsing' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'tailq: fix lookup macro' " luca.boccassi
` (74 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Marat Khalili, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/60da73d65687b69136d2da18072777f5de6a6c9f
Thanks.
Luca Boccassi
---
From 60da73d65687b69136d2da18072777f5de6a6c9f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:50:48 +0100
Subject: [PATCH] cmdline: fix highest bit port list parsing
[ upstream commit f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 ]
pl->map is a uint32_t.
Caught by UBSan:
../lib/cmdline/cmdline_parse_portlist.c:27:17: runtime error:
left shift of 1 by 31 places cannot be represented in type 'int'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
../lib/cmdline/cmdline_parse_portlist.c:27:17 in
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Marat Khalili <marat.khalili@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/cmdline/cmdline_parse_portlist.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/cmdline/cmdline_parse_portlist.c b/lib/cmdline/cmdline_parse_portlist.c
index 290e61f211..6b7096579e 100644
--- a/lib/cmdline/cmdline_parse_portlist.c
+++ b/lib/cmdline/cmdline_parse_portlist.c
@@ -9,7 +9,9 @@
#include <string.h>
#include <errno.h>
+#include <rte_bitops.h>
#include <rte_string_fns.h>
+
#include "cmdline_parse.h"
#include "cmdline_parse_portlist.h"
@@ -24,7 +26,8 @@ static void
parse_set_list(cmdline_portlist_t *pl, size_t low, size_t high)
{
do {
- pl->map |= (1 << low++);
+ pl->map |= RTE_BIT32(low);
+ low++;
} while (low <= high);
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.010248872 +0000
+++ 0004-cmdline-fix-highest-bit-port-list-parsing.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 Mon Sep 17 00:00:00 2001
+From 60da73d65687b69136d2da18072777f5de6a6c9f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3a07a33d7b3a0b153f7f5b60c13bebede9a9104 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 549f6d9671..3efe4143e3 100644
+index 290e61f211..6b7096579e 100644
@@ -30 +31,2 @@
-@@ -10,7 +10,9 @@
+@@ -9,7 +9,9 @@
+ #include <string.h>
@@ -33 +34,0 @@
- #include <eal_export.h>
@@ -40 +41 @@
-@@ -26,7 +28,8 @@ static void
+@@ -24,7 +26,8 @@ static void
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'tailq: fix lookup macro' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (2 preceding siblings ...)
2025-10-27 16:18 ` patch 'cmdline: fix highest bit " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'hash: fix unaligned access in predictable RSS' " luca.boccassi
` (73 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/315102b82aae7bb6dc5bbf31f129d073994e30d3
Thanks.
Luca Boccassi
---
From 315102b82aae7bb6dc5bbf31f129d073994e30d3 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 17:09:54 +0100
Subject: [PATCH] tailq: fix lookup macro
[ upstream commit 5d2d4033abe5bb17f6e328fad1a615553573abd5 ]
Doing arithmetic with the NULL pointer is undefined.
Caught by UBSan:
../app/test/test_tailq.c:111:9: runtime error:
member access within null pointer of type 'struct rte_tailq_head'
Fixes: f6b4f6c9c123 ("tailq: use a single cast macro")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eal/include/rte_tailq.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib/eal/include/rte_tailq.h b/lib/eal/include/rte_tailq.h
index 0f67f9e4db..e1d8d15c8d 100644
--- a/lib/eal/include/rte_tailq.h
+++ b/lib/eal/include/rte_tailq.h
@@ -70,11 +70,12 @@ struct rte_tailq_elem {
* @return
* The return value from rte_eal_tailq_lookup, typecast to the appropriate
* structure pointer type.
- * NULL on error, since the tailq_head is the first
- * element in the rte_tailq_head structure.
+ * NULL on error.
*/
-#define RTE_TAILQ_LOOKUP(name, struct_name) \
- RTE_TAILQ_CAST(rte_eal_tailq_lookup(name), struct_name)
+#define RTE_TAILQ_LOOKUP(name, struct_name) __extension__ ({ \
+ struct rte_tailq_head *head = rte_eal_tailq_lookup(name); \
+ head == NULL ? NULL : RTE_TAILQ_CAST(head, struct_name); \
+})
/**
* Dump tail queues to a file.
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.042830494 +0000
+++ 0005-tailq-fix-lookup-macro.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From 5d2d4033abe5bb17f6e328fad1a615553573abd5 Mon Sep 17 00:00:00 2001
+From 315102b82aae7bb6dc5bbf31f129d073994e30d3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5d2d4033abe5bb17f6e328fad1a615553573abd5 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 89f7ef2134..e7caed6812 100644
+index 0f67f9e4db..e1d8d15c8d 100644
@@ -26 +27 @@
-@@ -69,11 +69,12 @@ struct rte_tailq_elem {
+@@ -70,11 +70,12 @@ struct rte_tailq_elem {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'hash: fix unaligned access in predictable RSS' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (3 preceding siblings ...)
2025-10-27 16:18 ` patch 'tailq: fix lookup macro' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'graph: fix unaligned access in stats' " luca.boccassi
` (72 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Vladimir Medvedkin, Konstantin Ananyev,
Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c9c2860199be5e07d4dade6e1229df0593208a57
Thanks.
Luca Boccassi
---
From c9c2860199be5e07d4dade6e1229df0593208a57 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 18 Jun 2025 17:33:38 +0200
Subject: [PATCH] hash: fix unaligned access in predictable RSS
[ upstream commit b70d04d8ac6d47b221500d418df1de2b2c65b50a ]
Caught by UBSan:
../lib/hash/rte_thash.c:421:8: runtime error: load of misaligned address
0x0001816c2da3 for type 'uint32_t' (aka 'unsigned int'),
which requires 4 byte alignment
Fixes: 28ebff11c2dc ("hash: add predictable RSS")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/hash/rte_thash.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c
index 363603c102..188cfca6c2 100644
--- a/lib/hash/rte_thash.c
+++ b/lib/hash/rte_thash.c
@@ -437,10 +437,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
static inline uint32_t
get_subvalue(struct rte_thash_ctx *ctx, uint32_t offset)
{
- uint32_t *tmp, val;
+ uint32_t tmp, val;
- tmp = (uint32_t *)(&ctx->hash_key[offset >> 3]);
- val = rte_be_to_cpu_32(*tmp);
+ tmp = *(unaligned_uint32_t *)&ctx->hash_key[offset >> 3];
+ val = rte_be_to_cpu_32(tmp);
val >>= (TOEPLITZ_HASH_LEN - ((offset & (CHAR_BIT - 1)) +
ctx->reta_sz_log));
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.075253233 +0000
+++ 0006-hash-fix-unaligned-access-in-predictable-RSS.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From b70d04d8ac6d47b221500d418df1de2b2c65b50a Mon Sep 17 00:00:00 2001
+From c9c2860199be5e07d4dade6e1229df0593208a57 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b70d04d8ac6d47b221500d418df1de2b2c65b50a ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 6c662bf14f..0f9ed20d0d 100644
+index 363603c102..188cfca6c2 100644
@@ -28 +29 @@
-@@ -415,10 +415,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
+@@ -437,10 +437,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct thash_lfsr *lfsr,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'graph: fix unaligned access in stats' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (4 preceding siblings ...)
2025-10-27 16:18 ` patch 'hash: fix unaligned access in predictable RSS' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'eventdev: fix listing timer adapters with telemetry' " luca.boccassi
` (71 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand; +Cc: Kiran Kumar K, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/f4c9a3f5434a2ff68bbd783b41eaf402a416b22f
Thanks.
Luca Boccassi
---
From f4c9a3f5434a2ff68bbd783b41eaf402a416b22f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 4 Jul 2025 11:15:03 +0200
Subject: [PATCH] graph: fix unaligned access in stats
[ upstream commit 826af93a68f358f8eb4f363e42d114b93fde0d69 ]
UBSan reports:
../lib/graph/graph_stats.c:208:13: runtime error:
member access within misaligned address 0x000054742c50
for type 'struct rte_graph_cluster_stats',
which requires 64 byte alignment
../lib/graph/graph_stats.c:257:12: runtime error:
member access within misaligned address 0x00002219fd30
for type 'struct rte_graph_cluster_stats',
which requires 64 byte alignment
The current code goes into various complex (non aligned) reallocations /
memset / memcpy.
Simplify this by computing how many nodes are present in the
cluster of graphes.
Then directly call rte_malloc for the whole stats object.
As a bonus, this change also fixes leaks:
- if any error occurred before call to rte_malloc, since the xstats
objects stored in the glibc allocated stats object were not freed,
- if an allocation failure occurs, with constructs using
ptr = realloc(ptr, sz), since the original ptr is lost,
Fixes: af1ae8b6a32c ("graph: implement stats")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kiran Kumar K <kirankumark@marvell.com>
---
lib/graph/graph_stats.c | 96 +++++++++++++++++++++++------------------
1 file changed, 55 insertions(+), 41 deletions(-)
diff --git a/lib/graph/graph_stats.c b/lib/graph/graph_stats.c
index c0140ba922..da2cff7a36 100644
--- a/lib/graph/graph_stats.c
+++ b/lib/graph/graph_stats.c
@@ -35,7 +35,6 @@ struct rte_graph_cluster_stats {
rte_node_t max_nodes;
int socket_id;
void *cookie;
- size_t sz;
struct cluster_node clusters[];
} __rte_cache_aligned;
@@ -99,15 +98,55 @@ graph_cluster_stats_cb(bool is_first, bool is_last, void *cookie,
return 0;
};
+static uint32_t
+cluster_count_nodes(const struct cluster *cluster)
+{
+ rte_node_t *nodes = NULL;
+ uint32_t max_nodes = 0;
+
+ for (unsigned int i = 0; i < cluster->nb_graphs; i++) {
+ struct graph_node *graph_node;
+
+ STAILQ_FOREACH(graph_node, &cluster->graphs[i]->node_list, next) {
+ rte_node_t *new_nodes;
+ unsigned int n;
+
+ for (n = 0; n < max_nodes; n++) {
+ if (nodes[n] != graph_node->node->id)
+ continue;
+ break;
+ }
+ if (n != max_nodes)
+ continue;
+
+ max_nodes++;
+ new_nodes = realloc(nodes, max_nodes * sizeof(nodes[0]));
+ if (new_nodes == NULL) {
+ free(nodes);
+ return 0;
+ }
+ nodes = new_nodes;
+ nodes[n] = graph_node->node->id;
+ }
+ }
+ free(nodes);
+
+ return max_nodes;
+}
+
static struct rte_graph_cluster_stats *
stats_mem_init(struct cluster *cluster,
const struct rte_graph_cluster_stats_param *prm)
{
- size_t sz = sizeof(struct rte_graph_cluster_stats);
struct rte_graph_cluster_stats *stats;
rte_graph_cluster_stats_cb_t fn;
int socket_id = prm->socket_id;
uint32_t cluster_node_size;
+ uint32_t max_nodes;
+
+ max_nodes = cluster_count_nodes(cluster);
+ if (max_nodes == 0)
+ return NULL;
/* Fix up callback */
fn = prm->fn;
@@ -119,25 +158,23 @@ stats_mem_init(struct cluster *cluster,
cluster_node_size += cluster->nb_graphs * sizeof(struct rte_node *);
cluster_node_size = RTE_ALIGN(cluster_node_size, RTE_CACHE_LINE_SIZE);
- stats = realloc(NULL, sz);
+ stats = rte_zmalloc_socket(NULL, sizeof(struct rte_graph_cluster_stats) +
+ max_nodes * cluster_node_size, 0, socket_id);
if (stats) {
- memset(stats, 0, sz);
stats->fn = fn;
stats->cluster_node_size = cluster_node_size;
stats->max_nodes = 0;
stats->socket_id = socket_id;
stats->cookie = prm->cookie;
- stats->sz = sz;
}
return stats;
}
static int
-stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+stats_mem_populate(struct rte_graph_cluster_stats *stats,
struct rte_graph *graph, struct graph_node *graph_node)
{
- struct rte_graph_cluster_stats *stats = *stats_in;
rte_node_t id = graph_node->node->id;
struct cluster_node *cluster;
struct rte_node *node;
@@ -162,41 +199,22 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
cluster = RTE_PTR_ADD(cluster, stats->cluster_node_size);
}
- /* Hey, it is a new node, allocate space for it in the reel */
- stats = realloc(stats, stats->sz + stats->cluster_node_size);
- if (stats == NULL)
- SET_ERR_JMP(ENOMEM, err, "Realloc failed");
- *stats_in = NULL;
-
- /* Clear the new struct cluster_node area */
- cluster = RTE_PTR_ADD(stats, stats->sz),
- memset(cluster, 0, stats->cluster_node_size);
memcpy(cluster->stat.name, graph_node->node->name, RTE_NODE_NAMESIZE);
cluster->stat.id = graph_node->node->id;
cluster->stat.hz = rte_get_timer_hz();
node = graph_node_id_to_ptr(graph, id);
if (node == NULL)
- SET_ERR_JMP(ENOENT, free, "Failed to find node %s in graph %s",
+ SET_ERR_JMP(ENOENT, err, "Failed to find node %s in graph %s",
graph_node->node->name, graph->name);
cluster->nodes[cluster->nb_nodes++] = node;
- stats->sz += stats->cluster_node_size;
stats->max_nodes++;
- *stats_in = stats;
return 0;
-free:
- free(stats);
err:
return -rte_errno;
}
-static void
-stats_mem_fini(struct rte_graph_cluster_stats *stats)
-{
- free(stats);
-}
-
static void
cluster_init(struct cluster *cluster)
{
@@ -265,10 +283,7 @@ struct rte_graph_cluster_stats *
rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
{
struct rte_graph_cluster_stats *stats, *rc = NULL;
- struct graph_node *graph_node;
struct cluster cluster;
- struct graph *graph;
- const char *pattern;
rte_graph_t i;
/* Sanity checks */
@@ -286,35 +301,34 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
graph_spinlock_lock();
/* Expand graph pattern and add the graph to the cluster */
for (i = 0; i < prm->nb_graph_patterns; i++) {
- pattern = prm->graph_patterns[i];
- if (expand_pattern_to_cluster(&cluster, pattern))
+ if (expand_pattern_to_cluster(&cluster, prm->graph_patterns[i]))
goto bad_pattern;
}
/* Alloc the stats memory */
stats = stats_mem_init(&cluster, prm);
if (stats == NULL)
- SET_ERR_JMP(ENOMEM, bad_pattern, "Failed alloc stats memory");
+ SET_ERR_JMP(ENOMEM, bad_pattern, "Failed rte_malloc for stats memory");
/* Iterate over M(Graph) x N (Nodes in graph) */
for (i = 0; i < cluster.nb_graphs; i++) {
+ struct graph_node *graph_node;
+ struct graph *graph;
+
graph = cluster.graphs[i];
STAILQ_FOREACH(graph_node, &graph->node_list, next) {
struct rte_graph *graph_fp = graph->graph;
- if (stats_mem_populate(&stats, graph_fp, graph_node))
+ if (stats_mem_populate(stats, graph_fp, graph_node))
goto realloc_fail;
}
}
- /* Finally copy to hugepage memory to avoid pressure on rte_realloc */
- rc = rte_malloc_socket(NULL, stats->sz, 0, stats->socket_id);
- if (rc)
- rte_memcpy(rc, stats, stats->sz);
- else
- SET_ERR_JMP(ENOMEM, realloc_fail, "rte_malloc failed");
+ rc = stats;
+ stats = NULL;
realloc_fail:
- stats_mem_fini(stats);
+ if (stats != NULL)
+ rte_graph_cluster_stats_destroy(stats);
bad_pattern:
graph_spinlock_unlock();
cluster_fini(&cluster);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.116080658 +0000
+++ 0007-graph-fix-unaligned-access-in-stats.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From 826af93a68f358f8eb4f363e42d114b93fde0d69 Mon Sep 17 00:00:00 2001
+From f4c9a3f5434a2ff68bbd783b41eaf402a416b22f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 826af93a68f358f8eb4f363e42d114b93fde0d69 ]
+
@@ -32 +33,0 @@
-Cc: stable@dpdk.org
@@ -37,2 +38,2 @@
- lib/graph/graph_stats.c | 102 +++++++++++++++++++++++-----------------
- 1 file changed, 58 insertions(+), 44 deletions(-)
+ lib/graph/graph_stats.c | 96 +++++++++++++++++++++++------------------
+ 1 file changed, 55 insertions(+), 41 deletions(-)
@@ -41 +42 @@
-index 583ad8dbd5..e0fc8fd25c 100644
+index c0140ba922..da2cff7a36 100644
@@ -44 +45,2 @@
-@@ -37,7 +37,6 @@ struct __rte_cache_aligned rte_graph_cluster_stats {
+@@ -35,7 +35,6 @@ struct rte_graph_cluster_stats {
+ rte_node_t max_nodes;
@@ -46 +47,0 @@
- bool dispatch;
@@ -51,3 +52,3 @@
- };
-@@ -178,15 +177,55 @@ graph_cluster_stats_cb_dispatch(bool is_first, bool is_last, void *cookie,
- return graph_cluster_stats_cb(true, is_first, is_last, cookie, stat);
+ } __rte_cache_aligned;
+@@ -99,15 +98,55 @@ graph_cluster_stats_cb(bool is_first, bool is_last, void *cookie,
+ return 0;
@@ -109 +110 @@
-@@ -203,25 +242,23 @@ stats_mem_init(struct cluster *cluster,
+@@ -119,25 +158,23 @@ stats_mem_init(struct cluster *cluster,
@@ -138 +139 @@
-@@ -247,21 +284,12 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
+@@ -162,41 +199,22 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
@@ -160,30 +160,0 @@
- if (graph_node->node->xstats) {
-@@ -270,7 +298,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- sizeof(uint64_t) * graph_node->node->xstats->nb_xstats,
- RTE_CACHE_LINE_SIZE, stats->socket_id);
- if (cluster->stat.xstat_count == NULL)
-- SET_ERR_JMP(ENOMEM, free, "Failed to allocate memory node %s graph %s",
-+ SET_ERR_JMP(ENOMEM, err, "Failed to allocate memory node %s graph %s",
- graph_node->node->name, graph->name);
-
- cluster->stat.xstat_desc = rte_zmalloc_socket(NULL,
-@@ -278,7 +306,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- RTE_CACHE_LINE_SIZE, stats->socket_id);
- if (cluster->stat.xstat_desc == NULL) {
- rte_free(cluster->stat.xstat_count);
-- SET_ERR_JMP(ENOMEM, free, "Failed to allocate memory node %s graph %s",
-+ SET_ERR_JMP(ENOMEM, err, "Failed to allocate memory node %s graph %s",
- graph_node->node->name, graph->name);
- }
-
-@@ -288,30 +316,20 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
- RTE_NODE_XSTAT_DESC_SIZE) < 0) {
- rte_free(cluster->stat.xstat_count);
- rte_free(cluster->stat.xstat_desc);
-- SET_ERR_JMP(E2BIG, free,
-+ SET_ERR_JMP(E2BIG, err,
- "Error description overflow node %s graph %s",
- graph_node->node->name, graph->name);
- }
- }
- }
@@ -211 +182 @@
-@@ -381,10 +399,7 @@ struct rte_graph_cluster_stats *
+@@ -265,10 +283,7 @@ struct rte_graph_cluster_stats *
@@ -222 +193 @@
-@@ -402,37 +417,36 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
+@@ -286,35 +301,34 @@ rte_graph_cluster_stats_create(const struct rte_graph_cluster_stats_param *prm)
@@ -250,2 +220,0 @@
- if (graph->graph->model == RTE_GRAPH_MODEL_MCORE_DISPATCH)
- stats->dispatch = true;
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'eventdev: fix listing timer adapters with telemetry' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (5 preceding siblings ...)
2025-10-27 16:18 ` patch 'graph: fix unaligned access in stats' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'cfgfile: fix section count with no name' " luca.boccassi
` (70 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/9ce4cdfd42be9d762d88fc760a5525861ae68970
Thanks.
Luca Boccassi
---
From 9ce4cdfd42be9d762d88fc760a5525861ae68970 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Fri, 4 Jul 2025 14:58:25 +0200
Subject: [PATCH] eventdev: fix listing timer adapters with telemetry
[ upstream commit 94b2ff7ee1976f80dd4822dab090bbbf693d12ca ]
If no timer adapter is created, listing with telemetry can lead to crash
and is reported by UBSan as an undefined behavior:
../lib/eventdev/rte_event_timer_adapter.c:1418:13:
runtime error: applying zero offset to null pointer
../lib/eventdev/rte_event_timer_adapter.c:1464:13:
runtime error: applying zero offset to null pointer
Fixes: 791dfec24d00 ("eventdev/timer: add telemetry")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/eventdev/rte_event_timer_adapter.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eventdev/rte_event_timer_adapter.c b/lib/eventdev/rte_event_timer_adapter.c
index 34968f3105..c248d7c8d0 100644
--- a/lib/eventdev/rte_event_timer_adapter.c
+++ b/lib/eventdev/rte_event_timer_adapter.c
@@ -1324,7 +1324,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
adapter_id = atoi(params);
- if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
+ if (adapters == NULL || adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id);
return -EINVAL;
}
@@ -1365,7 +1365,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
adapter_id = atoi(params);
- if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
+ if (adapters == NULL || adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) {
EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id);
return -EINVAL;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.149899760 +0000
+++ 0008-eventdev-fix-listing-timer-adapters-with-telemetry.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From 94b2ff7ee1976f80dd4822dab090bbbf693d12ca Mon Sep 17 00:00:00 2001
+From 9ce4cdfd42be9d762d88fc760a5525861ae68970 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 94b2ff7ee1976f80dd4822dab090bbbf693d12ca ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index 06ce478d90..af98b1d9f6 100644
+index 34968f3105..c248d7c8d0 100644
@@ -28 +29 @@
-@@ -1410,7 +1410,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
+@@ -1324,7 +1324,7 @@ handle_ta_info(const char *cmd __rte_unused, const char *params,
@@ -37 +38 @@
-@@ -1456,7 +1456,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
+@@ -1365,7 +1365,7 @@ handle_ta_stats(const char *cmd __rte_unused, const char *params,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'cfgfile: fix section count with no name' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (6 preceding siblings ...)
2025-10-27 16:18 ` patch 'eventdev: fix listing timer adapters with telemetry' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " luca.boccassi
` (69 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: David Marchand
Cc: Bruce Richardson, Cristian Dumitrescu, Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/1fe0c716154309029fa3a5d4fc550e159edaee35
Thanks.
Luca Boccassi
---
From 1fe0c716154309029fa3a5d4fc550e159edaee35 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Mon, 3 Feb 2025 13:33:19 +0100
Subject: [PATCH] cfgfile: fix section count with no name
[ upstream commit 02bce2f1e938b409bb6f85391510a2a33ecc1443 ]
Passing a NULL to strncmp is incorrect.
+ ------------------------------------------------------- +
+ Test Suite : Test Cfgfile Unit Test Suite
+ ------------------------------------------------------- +
../lib/cfgfile/rte_cfgfile.c:475:7: runtime error: null pointer passed as
argument 2, which is declared to never be null
On the other hand, it seems the intent was to count all sections, so
skip the whole loop and section name comparisons.
Fixes: c54e7234bc9e ("test/cfgfile: add basic unit tests")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/cfgfile/rte_cfgfile.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/cfgfile/rte_cfgfile.c b/lib/cfgfile/rte_cfgfile.c
index e2f77d2b64..b3701eeeb4 100644
--- a/lib/cfgfile/rte_cfgfile.c
+++ b/lib/cfgfile/rte_cfgfile.c
@@ -465,10 +465,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
int
rte_cfgfile_num_sections(struct rte_cfgfile *cfg, const char *sectionname,
-size_t length)
+ size_t length)
{
- int i;
int num_sections = 0;
+ int i;
+
+ if (sectionname == NULL)
+ return cfg->num_sections;
+
for (i = 0; i < cfg->num_sections; i++) {
if (strncmp(cfg->sections[i].name, sectionname, length) == 0)
num_sections++;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.181996801 +0000
+++ 0009-cfgfile-fix-section-count-with-no-name.patch 2025-10-27 15:54:34.719947643 +0000
@@ -1 +1 @@
-From 02bce2f1e938b409bb6f85391510a2a33ecc1443 Mon Sep 17 00:00:00 2001
+From 1fe0c716154309029fa3a5d4fc550e159edaee35 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 02bce2f1e938b409bb6f85391510a2a33ecc1443 ]
+
@@ -28 +30 @@
-index 8bbdcf146e..9723ec756f 100644
+index e2f77d2b64..b3701eeeb4 100644
@@ -31,2 +33,2 @@
-@@ -477,10 +477,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
- RTE_EXPORT_SYMBOL(rte_cfgfile_num_sections)
+@@ -465,10 +465,14 @@ int rte_cfgfile_close(struct rte_cfgfile *cfg)
+
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/vmxnet3: fix mapping of mempools to queues' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (7 preceding siblings ...)
2025-10-27 16:18 ` patch 'cfgfile: fix section count with no name' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: increase size of set cores list command' " luca.boccassi
` (68 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Ronak Doshi; +Cc: Jochen Behrens, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/38e40353dda82698162d1acf959c57bb0ac60f1c
Thanks.
Luca Boccassi
---
From 38e40353dda82698162d1acf959c57bb0ac60f1c Mon Sep 17 00:00:00 2001
From: Ronak Doshi <ronak.doshi@broadcom.com>
Date: Wed, 9 Jul 2025 21:29:03 +0000
Subject: [PATCH] net/vmxnet3: fix mapping of mempools to queues
[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ]
Index bitmask variable used was uint8_t, too small for bitmask with
9 or more queues. This patch changes it to uint16_t for now, to be
same as in the Vmxnet3_MemoryRegion structure. This way txQueues
can be lesser than rxQueues and have correct mapping of memory regions.
Also, the patch fixes memory region check as 16 queues are allowed on
both RX and TX.
Fixes: 6a113992060e ("net/vmxnet3: add cmd to register memory region")
Signed-off-by: Ronak Doshi <ronak.doshi@broadcom.com>
Acked-by: Jochen Behrens <jochen.behrens@broadcom.com>
---
drivers/net/vmxnet3/base/vmxnet3_defs.h | 3 +++
drivers/net/vmxnet3/vmxnet3_ethdev.c | 23 ++++++++++++++---------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/drivers/net/vmxnet3/base/vmxnet3_defs.h b/drivers/net/vmxnet3/base/vmxnet3_defs.h
index bd6695e69d..04167b6743 100644
--- a/drivers/net/vmxnet3/base/vmxnet3_defs.h
+++ b/drivers/net/vmxnet3/base/vmxnet3_defs.h
@@ -575,6 +575,9 @@ enum vmxnet3_intr_type {
/* addition 1 for events */
#define VMXNET3_MAX_INTRS 25
+/* Max number of queues that can request memreg, for both RX and TX. */
+#define VMXNET3_MAX_MEMREG_QUEUES 16
+
/* Version 6 and later will use below macros */
#define VMXNET3_EXT_MAX_TX_QUEUES 32
#define VMXNET3_EXT_MAX_RX_QUEUES 32
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index f4cdb1bb31..eadfd6f230 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -725,14 +725,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
Vmxnet3_DriverShared *shared = hw->shared;
Vmxnet3_CmdInfo *cmdInfo;
struct rte_mempool *mp[VMXNET3_MAX_RX_QUEUES];
- uint8_t index[VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES];
- uint32_t num, i, j, size;
+ uint16_t index[VMXNET3_MAX_MEMREG_QUEUES];
+ uint16_t tx_index_mask;
+ uint32_t num, tx_num, i, j, size;
if (hw->memRegsPA == 0) {
const struct rte_memzone *mz;
size = sizeof(Vmxnet3_MemRegs) +
- (VMXNET3_MAX_RX_QUEUES + VMXNET3_MAX_TX_QUEUES) *
+ (2 * VMXNET3_MAX_MEMREG_QUEUES) *
sizeof(Vmxnet3_MemoryRegion);
mz = gpa_zone_reserve(dev, size, "memRegs", rte_socket_id(), 8,
@@ -746,7 +747,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
hw->memRegsPA = mz->iova;
}
- num = hw->num_rx_queues;
+ num = RTE_MIN(hw->num_rx_queues, VMXNET3_MAX_MEMREG_QUEUES);
+ tx_num = RTE_MIN(hw->num_tx_queues, VMXNET3_MAX_MEMREG_QUEUES);
+ tx_index_mask = (uint16_t)((1UL << tx_num) - 1);
for (i = 0; i < num; i++) {
vmxnet3_rx_queue_t *rxq = dev->data->rx_queues[i];
@@ -781,13 +784,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
(uintptr_t)STAILQ_FIRST(&mp[i]->mem_list)->iova;
mr->length = STAILQ_FIRST(&mp[i]->mem_list)->len <= INT32_MAX ?
STAILQ_FIRST(&mp[i]->mem_list)->len : INT32_MAX;
- mr->txQueueBits = index[i];
mr->rxQueueBits = index[i];
+ /* tx uses same pool, but there may be fewer tx queues */
+ mr->txQueueBits = index[i] & tx_index_mask;
PMD_INIT_LOG(INFO,
"index: %u startPA: %" PRIu64 " length: %u, "
- "rxBits: %x",
- j, mr->startPA, mr->length, mr->rxQueueBits);
+ "rxBits: %x, txBits: %x",
+ j, mr->startPA, mr->length,
+ mr->rxQueueBits, mr->txQueueBits);
j++;
}
hw->memRegs->numRegs = j;
@@ -995,8 +1000,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
}
/* Check memregs restrictions first */
- if (dev->data->nb_rx_queues <= VMXNET3_MAX_RX_QUEUES &&
- dev->data->nb_tx_queues <= VMXNET3_MAX_TX_QUEUES) {
+ if (dev->data->nb_rx_queues <= VMXNET3_MAX_MEMREG_QUEUES &&
+ dev->data->nb_tx_queues <= VMXNET3_MAX_MEMREG_QUEUES) {
ret = vmxnet3_dev_setup_memreg(dev);
if (ret == 0) {
VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.214323919 +0000
+++ 0010-net-vmxnet3-fix-mapping-of-mempools-to-queues.patch 2025-10-27 15:54:34.723947744 +0000
@@ -1 +1 @@
-From 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 Mon Sep 17 00:00:00 2001
+From 38e40353dda82698162d1acf959c57bb0ac60f1c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 387b6e0cca4ebbb1d2f8c03da5b9d4051dfef913 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index a6bb281d8d..15d4d88c5c 100644
+index bd6695e69d..04167b6743 100644
@@ -28 +29 @@
-@@ -598,6 +598,9 @@ enum vmxnet3_intr_type {
+@@ -575,6 +575,9 @@ enum vmxnet3_intr_type {
@@ -39 +40 @@
-index 15ca25b187..e19aa43888 100644
+index f4cdb1bb31..eadfd6f230 100644
@@ -42 +43 @@
-@@ -801,14 +801,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -725,14 +725,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -61 +62 @@
-@@ -822,7 +823,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -746,7 +747,9 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -72 +73 @@
-@@ -857,13 +860,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
+@@ -781,13 +784,15 @@ vmxnet3_dev_setup_memreg(struct rte_eth_dev *dev)
@@ -91 +92 @@
-@@ -1087,8 +1092,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
+@@ -995,8 +1000,8 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'app/testpmd: increase size of set cores list command' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (8 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/dpaa2: fix shaper rate' " luca.boccassi
` (67 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Dengdui Huang; +Cc: Chengwen Feng, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/51fe85245db78a68ace64aabe67450965c56e171
Thanks.
Luca Boccassi
---
From 51fe85245db78a68ace64aabe67450965c56e171 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Tue, 8 Jul 2025 20:51:59 +0800
Subject: [PATCH] app/testpmd: increase size of set cores list command
[ upstream commit d0f4f0779898e41a940e9a6f83f782750ffbfbb7 ]
The cmdline_fixed_string_t has a length of only 128, which will
become insufficient when there are many cores, so it should be
replaced with a cmdline_multi_string_t of larger capacity.
Fixes: af75078fece3 ("first public release")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test-pmd/cmdline.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index c4aab4defa..3d888a2f78 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -3491,7 +3491,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
value = 0;
nb_item = 0;
value_ok = 0;
- for (i = 0; i < strnlen(str, STR_TOKEN_SIZE); i++) {
+ for (i = 0; i < strnlen(str, STR_MULTI_TOKEN_SIZE); i++) {
c = str[i];
if ((c >= '0') && (c <= '9')) {
value = (unsigned int) (value * 10 + (c - '0'));
@@ -3542,7 +3542,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
struct cmd_set_list_result {
cmdline_fixed_string_t cmd_keyword;
cmdline_fixed_string_t list_name;
- cmdline_fixed_string_t list_of_items;
+ cmdline_multi_string_t list_of_items;
};
static void cmd_set_list_parsed(void *parsed_result,
@@ -3591,7 +3591,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
"corelist#portlist");
static cmdline_parse_token_string_t cmd_set_list_of_items =
TOKEN_STRING_INITIALIZER(struct cmd_set_list_result, list_of_items,
- NULL);
+ TOKEN_STRING_MULTI);
static cmdline_parse_inst_t cmd_set_fwd_list = {
.f = cmd_set_list_parsed,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.249535185 +0000
+++ 0011-app-testpmd-increase-size-of-set-cores-list-command.patch 2025-10-27 15:54:34.731947944 +0000
@@ -1 +1 @@
-From d0f4f0779898e41a940e9a6f83f782750ffbfbb7 Mon Sep 17 00:00:00 2001
+From 51fe85245db78a68ace64aabe67450965c56e171 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d0f4f0779898e41a940e9a6f83f782750ffbfbb7 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 7b4e27eddf..801dee4456 100644
+index c4aab4defa..3d888a2f78 100644
@@ -23 +24 @@
-@@ -4063,7 +4063,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
+@@ -3491,7 +3491,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
@@ -32 +33 @@
-@@ -4114,7 +4114,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
+@@ -3542,7 +3542,7 @@ parse_item_list(const char *str, const char *item_name, unsigned int max_items,
@@ -41 +42 @@
-@@ -4163,7 +4163,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
+@@ -3591,7 +3591,7 @@ static cmdline_parse_token_string_t cmd_set_list_name =
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/dpaa2: fix shaper rate' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (9 preceding siblings ...)
2025-10-27 16:18 ` patch 'app/testpmd: increase size of set cores list command' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: monitor state of primary process' " luca.boccassi
` (66 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Gagandeep Singh; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/548ea3aa37583adf216897406d4c9e56c4c682d2
Thanks.
Luca Boccassi
---
From 548ea3aa37583adf216897406d4c9e56c4c682d2 Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <g.singh@nxp.com>
Date: Wed, 2 Jul 2025 15:21:41 +0530
Subject: [PATCH] net/dpaa2: fix shaper rate
[ upstream commit 953b5576093dcd148b674bd2d53e5482970c1270 ]
This patch fixes the shaper rate by configuring the
user given rate in bytes. Earlier driver was considering
the user given rate value in bits.
Fixes: ac624068ee25 ("net/dpaa2: support traffic management")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa2/dpaa2_tm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/dpaa2/dpaa2_tm.c b/drivers/net/dpaa2/dpaa2_tm.c
index 0633259624..9b9cbe4259 100644
--- a/drivers/net/dpaa2/dpaa2_tm.c
+++ b/drivers/net/dpaa2/dpaa2_tm.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021 NXP
+ * Copyright 2020-2024 NXP
*/
#include <rte_ethdev.h>
@@ -726,12 +726,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
tx_cr_shaper.max_burst_size =
node->profile->params.committed.size;
tx_cr_shaper.rate_limit =
- node->profile->params.committed.rate /
- (1024 * 1024);
+ (node->profile->params.committed.rate /
+ (1024 * 1024)) * 8;
tx_er_shaper.max_burst_size =
node->profile->params.peak.size;
tx_er_shaper.rate_limit =
- node->profile->params.peak.rate / (1024 * 1024);
+ (node->profile->params.peak.rate / (1024 * 1024)) * 8;
/* root node */
if (node->parent == NULL) {
DPAA2_PMD_DEBUG("LNI S.rate = %u, burst =%u\n",
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.288904851 +0000
+++ 0012-net-dpaa2-fix-shaper-rate.patch 2025-10-27 15:54:34.731947944 +0000
@@ -1 +1 @@
-From 953b5576093dcd148b674bd2d53e5482970c1270 Mon Sep 17 00:00:00 2001
+From 548ea3aa37583adf216897406d4c9e56c4c682d2 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 953b5576093dcd148b674bd2d53e5482970c1270 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f91392b092..dbf66c756e 100644
+index 0633259624..9b9cbe4259 100644
@@ -24 +25 @@
-- * Copyright 2020-2023 NXP
+- * Copyright 2020-2021 NXP
@@ -29 +30 @@
-@@ -733,12 +733,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
+@@ -726,12 +726,12 @@ dpaa2_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail,
@@ -44 +45 @@
- DPAA2_PMD_DEBUG("LNI S.rate = %u, burst =%u",
+ DPAA2_PMD_DEBUG("LNI S.rate = %u, burst =%u\n",
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'app/testpmd: monitor state of primary process' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (10 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/dpaa2: fix shaper rate' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: fix conntrack action query' " luca.boccassi
` (65 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/7b609f1130635dd8e03954a0c4d9e265742d4ad4
Thanks.
Luca Boccassi
---
From 7b609f1130635dd8e03954a0c4d9e265742d4ad4 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Mon, 4 Aug 2025 07:33:22 -0400
Subject: [PATCH] app/testpmd: monitor state of primary process
[ upstream commit 7628f5bbb7e882e57c956d98731cac12a436c9a7 ]
In secondary processes, accessing device after primary has exited
will cause crash.
This patch adds a mechanism in testpmd to monitor the primary process
from the secondary process.
When primary process exits it forces secondary to exit avoiding
issues from cleanup logic.
Fixes: a550baf24af9 ("app/testpmd: support multi-process")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test-pmd/testpmd.c | 47 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 340c713c19..a293018341 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -101,12 +101,14 @@
uint16_t verbose_level = 0; /**< Silent by default. */
int testpmd_logtype; /**< Log type for testpmd logs */
+/* Maximum delay for exiting after primary process. */
+#define MONITOR_INTERVAL (500 * 1000)
+
/* use main core for command line ? */
uint8_t interactive = 0;
uint8_t auto_start = 0;
uint8_t tx_first;
char cmdline_filename[PATH_MAX] = {0};
-
/*
* NUMA support configuration.
* When set, the NUMA support attempts to dispatch the allocation of the
@@ -4431,6 +4433,38 @@ signal_handler(int signum __rte_unused)
prompt_exit();
}
+#ifndef RTE_EXEC_ENV_WINDOWS
+/* Alarm signal handler, used to check that primary process */
+static void
+monitor_primary(void *arg __rte_unused)
+{
+ if (rte_eal_primary_proc_alive(NULL)) {
+ rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+ } else {
+ /*
+ * If primary process exits, then all the device information
+ * is no longer valid. Calling any cleanup code is going to
+ * run into use after free.
+ */
+ fprintf(stderr, "\nPrimary process is no longer active, exiting...\n");
+ exit(EXIT_FAILURE);
+ }
+}
+
+/* Setup handler to check when primary exits. */
+static int
+enable_primary_monitor(void)
+{
+ return rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+}
+
+static void
+disable_primary_monitor(void)
+{
+ rte_eal_alarm_cancel(monitor_primary, NULL);
+}
+#endif
+
int
main(int argc, char** argv)
{
@@ -4462,6 +4496,12 @@ main(int argc, char** argv)
rte_exit(EXIT_FAILURE, "Cannot init EAL: %s\n",
rte_strerror(rte_errno));
+#ifndef RTE_EXEC_ENV_WINDOWS
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
+ enable_primary_monitor() < 0)
+ rte_exit(EXIT_FAILURE, "Cannot setup primary monitor");
+#endif
+
/* allocate port structures, and init them */
init_port();
@@ -4659,6 +4699,11 @@ main(int argc, char** argv)
}
}
+#ifndef RTE_EXEC_ENV_WINDOWS
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY)
+ disable_primary_monitor();
+#endif
+
pmd_test_exit();
#ifdef RTE_LIB_PDUMP
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.320924375 +0000
+++ 0013-app-testpmd-monitor-state-of-primary-process.patch 2025-10-27 15:54:34.731947944 +0000
@@ -1 +1 @@
-From 7628f5bbb7e882e57c956d98731cac12a436c9a7 Mon Sep 17 00:00:00 2001
+From 7b609f1130635dd8e03954a0c4d9e265742d4ad4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7628f5bbb7e882e57c956d98731cac12a436c9a7 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index db52ed22f1..0f58a31eb5 100644
+index 340c713c19..a293018341 100644
@@ -27 +28 @@
-@@ -102,13 +102,15 @@
+@@ -101,12 +101,14 @@
@@ -39 +39,0 @@
- bool echo_cmdline_file;
@@ -44 +44 @@
-@@ -4363,6 +4365,38 @@ signal_handler(int signum __rte_unused)
+@@ -4431,6 +4433,38 @@ signal_handler(int signum __rte_unused)
@@ -83 +83 @@
-@@ -4394,6 +4428,12 @@ main(int argc, char** argv)
+@@ -4462,6 +4496,12 @@ main(int argc, char** argv)
@@ -96 +96 @@
-@@ -4587,6 +4627,11 @@ main(int argc, char** argv)
+@@ -4659,6 +4699,11 @@ main(int argc, char** argv)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'app/testpmd: fix conntrack action query' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (11 preceding siblings ...)
2025-10-27 16:18 ` patch 'app/testpmd: monitor state of primary process' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'doc: add conntrack state inspect command to testpmd guide' " luca.boccassi
` (64 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Khadem Ullah, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/e75914bd0227e2afaef58e9b4bf81a4bd94160e4
Thanks.
Luca Boccassi
---
From e75914bd0227e2afaef58e9b4bf81a4bd94160e4 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 12 Aug 2025 11:43:23 +0200
Subject: [PATCH] app/testpmd: fix conntrack action query
[ upstream commit d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 ]
RTE_FLOW_ACTION_TYPE_CONNTRACK handling was missing in a switch case
which filtered action types which have action query support in testpmd.
This prevented the conntrack query to succeed.
Fixes: 4d07cbefe3ba ("app/testpmd: add commands for conntrack")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/test-pmd/config.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 17c335e625..c76a8cb11c 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -2001,6 +2001,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
switch (pia->type) {
case RTE_FLOW_ACTION_TYPE_AGE:
case RTE_FLOW_ACTION_TYPE_COUNT:
+ case RTE_FLOW_ACTION_TYPE_CONNTRACK:
break;
default:
fprintf(stderr,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.356930040 +0000
+++ 0014-app-testpmd-fix-conntrack-action-query.patch 2025-10-27 15:54:34.735948044 +0000
@@ -1 +1 @@
-From d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 Mon Sep 17 00:00:00 2001
+From e75914bd0227e2afaef58e9b4bf81a4bd94160e4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d23bcfb1821cf134deb6e7ae171fcf0238a8bc98 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 85f148a174..c1bd6921ea 100644
+index 17c335e625..c76a8cb11c 100644
@@ -24 +25,2 @@
-@@ -2171,6 +2171,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
+@@ -2001,6 +2001,7 @@ port_action_handle_query(portid_t port_id, uint32_t id)
+ switch (pia->type) {
@@ -27 +28,0 @@
- case RTE_FLOW_ACTION_TYPE_QUOTA:
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'doc: add conntrack state inspect command to testpmd guide' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (12 preceding siblings ...)
2025-10-27 16:18 ` patch 'app/testpmd: fix conntrack action query' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " luca.boccassi
` (63 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/108ad3de716210b83e4e2c5d38977ba57845e170
Thanks.
Luca Boccassi
---
From 108ad3de716210b83e4e2c5d38977ba57845e170 Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Fri, 15 Aug 2025 07:15:14 -0400
Subject: [PATCH] doc: add conntrack state inspect command to testpmd guide
[ upstream commit 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 ]
Add command in testpmd user guide to inspect conntrack states.
The conntract possible CT states are:
SYN_RECV, ESTABLISHED, FIN_WAIT, CLOSE_WAIT, LAST_ACK and
TIME_WAIT.
Fixes: 4d07cbefe3ba0 ("app/testpmd: add commands for conntrack")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 9ff0af1f0e..973e3eee56 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -5062,6 +5062,10 @@ rules like above for the peer port.
testpmd> flow indirect_action 0 update 0 action conntrack_update dir / end
+Inspect the conntrack action state through the following command::
+
+ testpmd> flow indirect_action 0 query <action ID>
+
Sample meter with policy rules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.393197142 +0000
+++ 0015-doc-add-conntrack-state-inspect-command-to-testpmd-g.patch 2025-10-27 15:54:34.739948146 +0000
@@ -1 +1 @@
-From 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 Mon Sep 17 00:00:00 2001
+From 108ad3de716210b83e4e2c5d38977ba57845e170 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 307b5b42b6258b8a8deecdf13cc334b3ceffe4a7 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index ea0ab9bcab..fefcf5b419 100644
+index 9ff0af1f0e..973e3eee56 100644
@@ -24 +25 @@
-@@ -5392,6 +5392,10 @@ rules like above for the peer port.
+@@ -5062,6 +5062,10 @@ rules like above for the peer port.
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'app/testpmd: validate DSCP and VLAN for meter creation' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (13 preceding siblings ...)
2025-10-27 16:18 ` patch 'doc: add conntrack state inspect command to testpmd guide' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix min and max MTU reporting' " luca.boccassi
` (62 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Khadem Ullah; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/def7b6f7e5cabc671b488d6d410cda7f1c8d70ce
Thanks.
Luca Boccassi
---
From def7b6f7e5cabc671b488d6d410cda7f1c8d70ce Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Thu, 28 Aug 2025 01:29:01 -0400
Subject: [PATCH] app/testpmd: validate DSCP and VLAN for meter creation
[ upstream commit 00092e969aad2fb2a2017b7eec86f033d4527950 ]
Add validation mechanism for meter creation. The maximum
possible entries are
[<dscp_tbl_entry0> <dscp_tbl_entry1> ...<dscp_tbl_entry63>]
[<vlan_tbl_entry0> <vlan_tbl_entry1> ... <vlan_tbl_entry15>].
Currently, testpmd allows any input table entries for DSCP
and VLAN tables.
This patch validates the maximum possible DSCP and VLAN table
entries for meter creation.
Fixes: 9f5488e326d3b ("app/testpmd: support different input color method")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
app/test-pmd/cmdline_mtr.c | 30 +++++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/app/test-pmd/cmdline_mtr.c b/app/test-pmd/cmdline_mtr.c
index e16c5b268f..0c5897ada8 100644
--- a/app/test-pmd/cmdline_mtr.c
+++ b/app/test-pmd/cmdline_mtr.c
@@ -85,15 +85,35 @@ parse_uint(uint64_t *value, const char *str)
return 0;
}
+static int
+validate_input_color_table_entries(char *str)
+{
+ char *saveptr;
+ char *token = strtok_r(str, PARSE_DELIMITER, &saveptr);
+ for (int i = 0; token != NULL; i++) {
+ if (i > ((MAX_DSCP_TABLE_ENTRIES + MAX_VLAN_TABLE_ENTRIES) - 1))
+ return -1;
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
+ }
+ return 0;
+}
+
static int
parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
enum rte_color **vlan_table)
{
enum rte_color *vlan, *dscp;
- char *token;
+ char *token, *saveptr;
+ char *temp_str = strdup(str);
int i = 0;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ if (validate_input_color_table_entries(temp_str)) {
+ free(temp_str);
+ return -1;
+ }
+ free(temp_str);
+
+ token = strtok_r(str, PARSE_DELIMITER, &saveptr);
if (token == NULL)
return 0;
@@ -117,7 +137,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
if (i == MAX_DSCP_TABLE_ENTRIES)
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(dscp);
return -1;
@@ -126,7 +146,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
*dscp_table = dscp;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL)
return 0;
@@ -154,7 +174,7 @@ parse_input_color_table_entries(char *str, enum rte_color **dscp_table,
if (i == MAX_VLAN_TABLE_ENTRIES)
break;
- token = strtok_r(str, PARSE_DELIMITER, &str);
+ token = strtok_r(NULL, PARSE_DELIMITER, &saveptr);
if (token == NULL) {
free(vlan);
free(*dscp_table);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.428776298 +0000
+++ 0016-app-testpmd-validate-DSCP-and-VLAN-for-meter-creatio.patch 2025-10-27 15:54:34.739948146 +0000
@@ -1 +1 @@
-From 00092e969aad2fb2a2017b7eec86f033d4527950 Mon Sep 17 00:00:00 2001
+From def7b6f7e5cabc671b488d6d410cda7f1c8d70ce Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 00092e969aad2fb2a2017b7eec86f033d4527950 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix min and max MTU reporting' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (14 preceding siblings ...)
2025-10-27 16:18 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix unsupported flow rule port action' " luca.boccassi
` (61 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/b1be3bbf46a8d9c6a422db5c9359904dafe9048f
Thanks.
Luca Boccassi
---
From b1be3bbf46a8d9c6a422db5c9359904dafe9048f Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 16 Jul 2025 12:25:45 +0200
Subject: [PATCH] net/mlx5: fix min and max MTU reporting
[ upstream commit 44d657109216a32e8718446f20f91272e10575dd ]
mlx5 PMD used hardcoded and incorrect values when reporting
maximum MTU and maximum Rx packet length through rte_eth_dev_info_get().
This patch adds support for querying OS for minimum and maximum
allowed MTU values. Maximum Rx packet length is then calculated
based on these values.
On Linux, these values are queried through netlink,
using IFLA_MIN_MTU and IFLA_MAX_MTU attributes added in Linux 4.18.
Windows API unfortunately does not expose minimum and maximum
allowed MTU values. In this case, fallback hardcoded values
(working on currently supported HW) will be used.
Bugzilla ID: 1719
Fixes: e60fbd5b24fc ("mlx5: add device configure/start/stop")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/common/mlx5/linux/mlx5_nl.c | 108 ++++++++++++++++++++++
drivers/common/mlx5/linux/mlx5_nl.h | 3 +
drivers/common/mlx5/version.map | 1 +
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 30 ++++++
drivers/net/mlx5/linux/mlx5_os.c | 2 +
drivers/net/mlx5/mlx5.h | 13 +++
drivers/net/mlx5/mlx5_ethdev.c | 42 ++++++++-
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 28 ++++++
drivers/net/mlx5/windows/mlx5_os.c | 2 +
9 files changed, 228 insertions(+), 1 deletion(-)
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index 5d04857b38..4fa2410a81 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -1962,3 +1962,111 @@ mlx5_nl_read_events(int nlsk_fd, mlx5_nl_event_cb *cb, void *cb_arg)
}
return 0;
}
+
+struct mlx5_mtu {
+ uint32_t min_mtu;
+ bool min_mtu_set;
+ uint32_t max_mtu;
+ bool max_mtu_set;
+};
+
+static int
+mlx5_nl_get_mtu_bounds_cb(struct nlmsghdr *nh, void *arg)
+{
+ size_t off = NLMSG_LENGTH(sizeof(struct ifinfomsg));
+ struct mlx5_mtu *out = arg;
+
+ while (off < nh->nlmsg_len) {
+ struct rtattr *ra = RTE_PTR_ADD(nh, off);
+ uint32_t *payload;
+
+ switch (ra->rta_type) {
+ case IFLA_MIN_MTU:
+ payload = RTA_DATA(ra);
+ out->min_mtu = *payload;
+ out->min_mtu_set = true;
+ break;
+ case IFLA_MAX_MTU:
+ payload = RTA_DATA(ra);
+ out->max_mtu = *payload;
+ out->max_mtu_set = true;
+ break;
+ default:
+ /* Nothing to do for other attributes. */
+ break;
+ }
+ off += RTA_ALIGN(ra->rta_len);
+ }
+
+ return 0;
+}
+
+/**
+ * Query minimum and maximum allowed MTU values for given Linux network interface.
+ *
+ * This function queries the following interface attributes exposed in netlink since Linux 4.18:
+ *
+ * - IFLA_MIN_MTU - minimum allowed MTU
+ * - IFLA_MAX_MTU - maximum allowed MTU
+ *
+ * @param[in] nl
+ * Netlink socket of the ROUTE kind (NETLINK_ROUTE).
+ * @param[in] ifindex
+ * Linux network device index.
+ * @param[out] min_mtu
+ * Pointer to minimum allowed MTU. Populated only if both minimum and maximum MTU was queried.
+ * @param[out] max_mtu
+ * Pointer to maximum allowed MTU. Populated only if both minimum and maximum MTU was queried.
+ *
+ * @return
+ * 0 on success, negative on error and rte_errno is set.
+ *
+ * Known errors:
+ *
+ * - (-EINVAL) - either @p min_mtu or @p max_mtu is NULL.
+ * - (-ENOENT) - either minimum or maximum allowed MTU was not found in interface attributes.
+ */
+int
+mlx5_nl_get_mtu_bounds(int nl, unsigned int ifindex, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ struct mlx5_mtu out = { 0 };
+ struct {
+ struct nlmsghdr nh;
+ struct ifinfomsg info;
+ } req = {
+ .nh = {
+ .nlmsg_len = NLMSG_LENGTH(sizeof(req.info)),
+ .nlmsg_type = RTM_GETLINK,
+ .nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK,
+ },
+ .info = {
+ .ifi_family = AF_UNSPEC,
+ .ifi_index = ifindex,
+ },
+ };
+ uint32_t sn = MLX5_NL_SN_GENERATE;
+ int ret;
+
+ if (min_mtu == NULL || max_mtu == NULL) {
+ rte_errno = EINVAL;
+ return -rte_errno;
+ }
+
+ ret = mlx5_nl_send(nl, &req.nh, sn);
+ if (ret < 0)
+ return ret;
+
+ ret = mlx5_nl_recv(nl, sn, mlx5_nl_get_mtu_bounds_cb, &out);
+ if (ret < 0)
+ return ret;
+
+ if (!out.min_mtu_set || !out.max_mtu_set) {
+ rte_errno = ENOENT;
+ return -rte_errno;
+ }
+
+ *min_mtu = out.min_mtu;
+ *max_mtu = out.max_mtu;
+
+ return ret;
+}
diff --git a/drivers/common/mlx5/linux/mlx5_nl.h b/drivers/common/mlx5/linux/mlx5_nl.h
index db01d7323e..ed3bad213a 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.h
+++ b/drivers/common/mlx5/linux/mlx5_nl.h
@@ -82,4 +82,7 @@ int mlx5_nl_read_events(int nlsk_fd, mlx5_nl_event_cb *cb, void *cb_arg);
__rte_internal
int mlx5_nl_parse_link_status_update(struct nlmsghdr *hdr, uint32_t *ifindex);
+__rte_internal
+int mlx5_nl_get_mtu_bounds(int nl, unsigned int ifindex, uint16_t *min_mtu, uint16_t *max_mtu);
+
#endif /* RTE_PMD_MLX5_NL_H_ */
diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
index 03c8ce5593..75fed298cd 100644
--- a/drivers/common/mlx5/version.map
+++ b/drivers/common/mlx5/version.map
@@ -123,6 +123,7 @@ INTERNAL {
mlx5_mr_mb2mr_bh;
mlx5_nl_allmulti; # WINDOWS_NO_EXPORT
+ mlx5_nl_get_mtu_bounds; # WINDOWS_NO_EXPORT
mlx5_nl_ifindex; # WINDOWS_NO_EXPORT
mlx5_nl_init; # WINDOWS_NO_EXPORT
mlx5_nl_mac_addr_add; # WINDOWS_NO_EXPORT
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index 1d999ef66b..4d126751a2 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -242,6 +242,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
return mlx5_ifreq_by_ifname(ifname, req, ifr);
}
+/**
+ * Get device minimum and maximum allowed MTU values.
+ *
+ * @param dev
+ * Pointer to Ethernet device.
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ *
+ * @return
+ * 0 on success, a negative errno value otherwise and rte_errno is set.
+ */
+int
+mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ struct mlx5_priv *priv = dev->data->dev_private;
+ int nl_route;
+ int ret;
+
+ nl_route = mlx5_nl_init(NETLINK_ROUTE, 0);
+ if (nl_route < 0)
+ return nl_route;
+
+ ret = mlx5_nl_get_mtu_bounds(nl_route, priv->if_index, min_mtu, max_mtu);
+
+ close(nl_route);
+ return ret;
+}
+
/**
* Get device MTU.
*
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 073d81291a..38a774ade7 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1484,6 +1484,8 @@ err_secondary:
eth_dev->data->mac_addrs = priv->mac;
eth_dev->device = dpdk_dev;
eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+ /* Fetch minimum and maximum allowed MTU from the device. */
+ mlx5_get_mtu_bounds(eth_dev, &priv->min_mtu, &priv->max_mtu);
/* Configure the first MAC address by default. */
if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
DRV_LOG(ERR,
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 8052d8c426..b82142f2bc 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -65,6 +65,15 @@
/* Maximal number of field/field parts to map into sample registers .*/
#define MLX5_FLEX_ITEM_MAPPING_NUM 32
+/* Number of bytes not included in MTU. */
+#define MLX5_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + RTE_VLAN_HLEN + RTE_ETHER_CRC_LEN)
+
+/* Minimum allowed MTU to be reported whenever PMD cannot query it from OS. */
+#define MLX5_ETH_MIN_MTU (RTE_ETHER_MIN_MTU)
+
+/* Maximum allowed MTU to be reported whenever PMD cannot query it from OS. */
+#define MLX5_ETH_MAX_MTU (9978)
+
enum mlx5_ipool_index {
#if defined(HAVE_IBV_FLOW_DV_SUPPORT) || !defined(HAVE_INFINIBAND_VERBS_H)
MLX5_IPOOL_DECAP_ENCAP = 0, /* Pool for encap/decap resource. */
@@ -1714,6 +1723,8 @@ struct mlx5_priv {
unsigned int vlan_filter_n; /* Number of configured VLAN filters. */
/* Device properties. */
uint16_t mtu; /* Configured MTU. */
+ uint16_t min_mtu; /* Minimum MTU allowed on the NIC. */
+ uint16_t max_mtu; /* Maximum MTU allowed on the NIC. */
unsigned int isolated:1; /* Whether isolated mode is enabled. */
unsigned int representor:1; /* Device is a port representor. */
unsigned int master:1; /* Device is a E-Switch master. */
@@ -1952,6 +1963,7 @@ eth_rx_burst_t mlx5_select_rx_function(struct rte_eth_dev *dev);
struct mlx5_priv *mlx5_port_to_eswitch_info(uint16_t port, bool valid);
struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
int mlx5_dev_configure_rss_reta(struct rte_eth_dev *dev);
+void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu);
/* mlx5_ethdev_os.c */
@@ -1990,6 +2002,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
uint16_t *n_stats, uint16_t *n_stats_sec);
void mlx5_os_stats_init(struct rte_eth_dev *dev);
int mlx5_get_flag_dropless_rq(struct rte_eth_dev *dev);
+int mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu);
/* mlx5_mac.c */
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index b5b5a4f287..8fc62e9d04 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -352,9 +352,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
unsigned int max;
uint16_t max_wqe;
+ info->min_mtu = priv->min_mtu;
+ info->max_mtu = priv->max_mtu;
+ info->max_rx_pktlen = info->max_mtu + MLX5_ETH_OVERHEAD;
/* FIXME: we should ask the device for these values. */
info->min_rx_bufsize = 32;
- info->max_rx_pktlen = 65536;
info->max_lro_pkt_size = MLX5_MAX_LRO_SIZE;
/*
* Since we need one CQ per QP, the limit is the minimum number
@@ -801,3 +803,41 @@ mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
cap->tx_cap.rte_memory = hca_attr->hairpin_sq_wq_in_host_mem;
return 0;
}
+
+/**
+ * Query minimum and maximum allowed MTU value on the device.
+ *
+ * This functions will always return valid MTU bounds.
+ * In case platform-specific implementation fails or current platform does not support it,
+ * the fallback default values will be used.
+ *
+ * @param[in] dev
+ * Pointer to Ethernet device
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ */
+void
+mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ int ret;
+
+ MLX5_ASSERT(min_mtu != NULL);
+ MLX5_ASSERT(max_mtu != NULL);
+
+ ret = mlx5_os_get_mtu_bounds(dev, min_mtu, max_mtu);
+ if (ret < 0) {
+ if (ret != -ENOTSUP)
+ DRV_LOG(INFO, "port %u failed to query MTU bounds, using fallback values",
+ dev->data->port_id);
+ *min_mtu = MLX5_ETH_MIN_MTU;
+ *max_mtu = MLX5_ETH_MAX_MTU;
+
+ /* This function does not fail. Clear rte_errno. */
+ rte_errno = 0;
+ }
+
+ DRV_LOG(INFO, "port %u minimum MTU is %u", dev->data->port_id, *min_mtu);
+ DRV_LOG(INFO, "port %u maximum MTU is %u", dev->data->port_id, *max_mtu);
+}
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 49f750be68..4f43b95a09 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -71,6 +71,34 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
return 0;
}
+/**
+ * Get device minimum and maximum allowed MTU.
+ *
+ * Windows API does not expose minimum and maximum allowed MTU.
+ * In this case, this just returns (-ENOTSUP) to allow platform-independent code
+ * to fallback to default values.
+ *
+ * @param dev
+ * Pointer to Ethernet device.
+ * @param[out] min_mtu
+ * Minimum MTU value output buffer.
+ * @param[out] max_mtu
+ * Maximum MTU value output buffer.
+ *
+ * @return
+ * (-ENOTSUP) - not supported on Windows
+ */
+int
+mlx5_os_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *max_mtu)
+{
+ RTE_SET_USED(dev);
+ RTE_SET_USED(min_mtu);
+ RTE_SET_USED(max_mtu);
+
+ rte_errno = ENOTSUP;
+ return -rte_errno;
+}
+
/**
* Get device MTU.
*
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index d35b949b34..a2c2b37773 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -431,6 +431,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
eth_dev->data->mac_addrs = priv->mac;
eth_dev->device = dpdk_dev;
eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
+ /* Fetch minimum and maximum allowed MTU from the device. */
+ mlx5_get_mtu_bounds(eth_dev, &priv->min_mtu, &priv->max_mtu);
/* Configure the first MAC address by default. */
if (mlx5_get_mac(eth_dev, &mac.addr_bytes)) {
DRV_LOG(ERR,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.463064942 +0000
+++ 0017-net-mlx5-fix-min-and-max-MTU-reporting.patch 2025-10-27 15:54:34.743948245 +0000
@@ -1 +1 @@
-From 44d657109216a32e8718446f20f91272e10575dd Mon Sep 17 00:00:00 2001
+From b1be3bbf46a8d9c6a422db5c9359904dafe9048f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 44d657109216a32e8718446f20f91272e10575dd ]
+
@@ -22 +23,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
- drivers/common/mlx5/linux/mlx5_nl.c | 109 ++++++++++++++++++++++
+ drivers/common/mlx5/linux/mlx5_nl.c | 108 ++++++++++++++++++++++
@@ -28,0 +30 @@
+ drivers/common/mlx5/version.map | 1 +
@@ -35 +37 @@
- 8 files changed, 228 insertions(+), 1 deletion(-)
+ 9 files changed, 228 insertions(+), 1 deletion(-)
@@ -38 +40 @@
-index 86166e92d0..dd69e229e3 100644
+index 5d04857b38..4fa2410a81 100644
@@ -41 +43 @@
-@@ -2247,3 +2247,112 @@ mlx5_nl_rdma_monitor_cap_get(int nl, uint8_t *cap)
+@@ -1962,3 +1962,111 @@ mlx5_nl_read_events(int nlsk_fd, mlx5_nl_event_cb *cb, void *cb_arg)
@@ -109 +110,0 @@
-+RTE_EXPORT_INTERNAL_SYMBOL(mlx5_nl_get_mtu_bounds)
@@ -155 +156 @@
-index e32080fa63..26923a88fd 100644
+index db01d7323e..ed3bad213a 100644
@@ -158 +159 @@
-@@ -117,4 +117,7 @@ void mlx5_nl_rdma_monitor_info_get(struct nlmsghdr *hdr, struct mlx5_nl_port_inf
+@@ -82,4 +82,7 @@ int mlx5_nl_read_events(int nlsk_fd, mlx5_nl_event_cb *cb, void *cb_arg);
@@ -160 +161 @@
- int mlx5_nl_rdma_monitor_cap_get(int nl, uint8_t *cap);
+ int mlx5_nl_parse_link_status_update(struct nlmsghdr *hdr, uint32_t *ifindex);
@@ -165,0 +167,12 @@
+diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
+index 03c8ce5593..75fed298cd 100644
+--- a/drivers/common/mlx5/version.map
++++ b/drivers/common/mlx5/version.map
+@@ -123,6 +123,7 @@ INTERNAL {
+ mlx5_mr_mb2mr_bh;
+
+ mlx5_nl_allmulti; # WINDOWS_NO_EXPORT
++ mlx5_nl_get_mtu_bounds; # WINDOWS_NO_EXPORT
+ mlx5_nl_ifindex; # WINDOWS_NO_EXPORT
+ mlx5_nl_init; # WINDOWS_NO_EXPORT
+ mlx5_nl_mac_addr_add; # WINDOWS_NO_EXPORT
@@ -167 +180 @@
-index 9daeda5435..a371c2c747 100644
+index 1d999ef66b..4d126751a2 100644
@@ -170 +183 @@
-@@ -159,6 +159,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
+@@ -242,6 +242,36 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
@@ -208 +221 @@
-index 696a3e12c7..2bc8ca9284 100644
+index 073d81291a..38a774ade7 100644
@@ -211 +224 @@
-@@ -1562,6 +1562,8 @@ err_secondary:
+@@ -1484,6 +1484,8 @@ err_secondary:
@@ -221 +234 @@
-index c08894cd03..53f0a27445 100644
+index 8052d8c426..b82142f2bc 100644
@@ -224 +237 @@
-@@ -74,6 +74,15 @@
+@@ -65,6 +65,15 @@
@@ -240 +253 @@
-@@ -1981,6 +1990,8 @@ struct mlx5_priv {
+@@ -1714,6 +1723,8 @@ struct mlx5_priv {
@@ -249 +262,3 @@
-@@ -2333,6 +2344,7 @@ struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
+@@ -1952,6 +1963,7 @@ eth_rx_burst_t mlx5_select_rx_function(struct rte_eth_dev *dev);
+ struct mlx5_priv *mlx5_port_to_eswitch_info(uint16_t port, bool valid);
+ struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
@@ -251,2 +265,0 @@
- uint64_t mlx5_get_restore_flags(struct rte_eth_dev *dev,
- enum rte_eth_dev_operation op);
@@ -257 +270 @@
-@@ -2372,6 +2384,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
+@@ -1990,6 +2002,7 @@ int mlx5_os_get_stats_n(struct rte_eth_dev *dev, bool bond_master,
@@ -266 +279 @@
-index 68d1c1bfa7..7747b0c869 100644
+index b5b5a4f287..8fc62e9d04 100644
@@ -269 +282 @@
-@@ -360,9 +360,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
+@@ -352,9 +352,11 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
@@ -282,2 +295,2 @@
-@@ -863,3 +865,41 @@ mlx5_get_restore_flags(__rte_unused struct rte_eth_dev *dev,
- /* mlx5 PMD does not require any configuration restore. */
+@@ -801,3 +803,41 @@ mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
+ cap->tx_cap.rte_memory = hca_attr->hairpin_sq_wq_in_host_mem;
@@ -364 +377 @@
-index d583730066..c4e3430bdc 100644
+index d35b949b34..a2c2b37773 100644
@@ -367 +380 @@
-@@ -477,6 +477,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -431,6 +431,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix unsupported flow rule port action' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (15 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/mlx5: fix min and max MTU reporting' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix non-template age rules flush' " luca.boccassi
` (60 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, Ivan Malov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/def814b06fd87d79f247e907f82269737e47eb3e
Thanks.
Luca Boccassi
---
From def814b06fd87d79f247e907f82269737e47eb3e Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Thu, 7 Aug 2025 12:12:47 +0300
Subject: [PATCH] net/mlx5: fix unsupported flow rule port action
[ upstream commit c040e9a85a1fbce46528e9bc15d1ce4bbc911346 ]
When dv_flow_en=2, the port ID action is not supported.
Although a rule can be created successfully in non-template mode,
the specified action will be silently ignored and not applied.
To prevent this ambiguous behavior, explicitly return an error
when a port ID action is used with dv_flow_en=2,
and recommend using a represented port action instead.
Fixes: f1fecffa88df ("net/mlx5: support Direct Rules action template API")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Ivan Malov <ivan.malov@arknetworks.am>
---
drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index a2cd9b8b5c..7a8455baf6 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1666,6 +1666,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
case RTE_FLOW_ACTION_TYPE_END:
actions_end = true;
break;
+ case RTE_FLOW_ACTION_TYPE_PORT_ID:
+ DRV_LOG(ERR, "RTE_FLOW_ACTION_TYPE_PORT_ID action is not supported. "
+ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.");
+ goto err;
default:
break;
}
@@ -4274,6 +4278,10 @@ flow_hw_dr_actions_template_create(struct rte_flow_actions_template *at)
at->actions_off[i] = curr_off;
action_types[curr_off++] = MLX5DR_ACTION_TYP_MISS;
break;
+ case RTE_FLOW_ACTION_TYPE_PORT_ID:
+ DRV_LOG(ERR, "RTE_FLOW_ACTION_TYPE_PORT_ID action is not supported. "
+ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.\n");
+ return NULL;
default:
type = mlx5_hw_dr_action_types[at->actions[i].type];
at->actions_off[i] = curr_off;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.502533826 +0000
+++ 0018-net-mlx5-fix-unsupported-flow-rule-port-action.patch 2025-10-27 15:54:34.751948446 +0000
@@ -1 +1 @@
-From c040e9a85a1fbce46528e9bc15d1ce4bbc911346 Mon Sep 17 00:00:00 2001
+From def814b06fd87d79f247e907f82269737e47eb3e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c040e9a85a1fbce46528e9bc15d1ce4bbc911346 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -21,2 +22,2 @@
- drivers/net/mlx5/mlx5_flow_hw.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ drivers/net/mlx5/mlx5_flow_hw.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
@@ -25 +26 @@
-index 016370f68b..0c3f554479 100644
+index a2cd9b8b5c..7a8455baf6 100644
@@ -28 +29 @@
-@@ -2913,6 +2913,10 @@ __flow_hw_translate_actions_template(struct rte_eth_dev *dev,
+@@ -1666,6 +1666,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
@@ -39,6 +40,4 @@
-@@ -7648,7 +7652,11 @@ flow_hw_parse_flow_actions_to_dr_actions(struct rte_eth_dev *dev,
- case MLX5_RTE_FLOW_ACTION_TYPE_MIRROR:
- at->dr_off[i] = curr_off;
- action_types[curr_off++] = MLX5DR_ACTION_TYP_DEST_ARRAY;
-- break;
-+ break;
+@@ -4274,6 +4278,10 @@ flow_hw_dr_actions_template_create(struct rte_flow_actions_template *at)
+ at->actions_off[i] = curr_off;
+ action_types[curr_off++] = MLX5DR_ACTION_TYP_MISS;
+ break;
@@ -47,2 +46,2 @@
-+ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.");
-+ return -EINVAL;
++ "Use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT instead.\n");
++ return NULL;
@@ -51 +50 @@
- at->dr_off[i] = curr_off;
+ at->actions_off[i] = curr_off;
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix non-template age rules flush' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (16 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/mlx5: fix unsupported flow rule port action' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix connection tracking state item validation' " luca.boccassi
` (59 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Maayan Kashani; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/efd6af31a6b84440c252bb12548651fc1fb12fc1
Thanks.
Luca Boccassi
---
From efd6af31a6b84440c252bb12548651fc1fb12fc1 Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Sun, 10 Aug 2025 09:47:31 +0300
Subject: [PATCH] net/mlx5: fix non-template age rules flush
[ upstream commit 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac ]
When a user creates a non-template rule with both age and counter actions,
both actions share the same counter.
If a flow flush occurs, the rule is destroyed and the counter is released.
However, the age sampling callback may still access the age/counter during
the free, leading to a panic on assertion in debug mode.
This creates a race condition: one thread samples the age while another
releases the age/counter info used by the age action.
The fix is to ignore this case where the age is
free and counter not freed yet,
or the counter was freed during the age check.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_hws_cnt.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_hws_cnt.c b/drivers/net/mlx5/mlx5_hws_cnt.c
index 6e4b093bd8..6a0c371cd9 100644
--- a/drivers/net/mlx5/mlx5_hws_cnt.c
+++ b/drivers/net/mlx5/mlx5_hws_cnt.c
@@ -179,10 +179,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
break;
case HWS_AGE_FREE:
/*
- * AGE parameter with state "FREE" couldn't be pointed
- * by any counter since counter is destroyed first.
- * Fall-through.
+ * Since this check is async, we may reach a race condition
+ * where the age and counter are used in the same rule,
+ * using the same counter index,
+ * age was freed first, and counter was not freed yet.
+ * Aging check can be safely ignored in that case.
*/
+ continue;
default:
MLX5_ASSERT(0);
continue;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.544102379 +0000
+++ 0019-net-mlx5-fix-non-template-age-rules-flush.patch 2025-10-27 15:54:34.755948546 +0000
@@ -1 +1 @@
-From 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac Mon Sep 17 00:00:00 2001
+From efd6af31a6b84440c252bb12548651fc1fb12fc1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7fb2007bb1fc0b949661e316cfa60bbdf60e54ac ]
+
@@ -19 +20,0 @@
-Cc: stable@dpdk.org
@@ -28 +29 @@
-index fce7a7e815..5c738f38ca 100644
+index 6e4b093bd8..6a0c371cd9 100644
@@ -31 +32 @@
-@@ -170,10 +170,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
+@@ -179,10 +179,13 @@ mlx5_hws_aging_check(struct mlx5_priv *priv, struct mlx5_hws_cnt_pool *cpool)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix connection tracking state item validation' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (17 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/mlx5: fix non-template age rules flush' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix indirect flow age action handling' " luca.boccassi
` (58 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Khadem Ullah; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/22388ebd621d3554ab259e159f4f0964702ecc7e
Thanks.
Luca Boccassi
---
From 22388ebd621d3554ab259e159f4f0964702ecc7e Mon Sep 17 00:00:00 2001
From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Date: Thu, 14 Aug 2025 06:16:01 -0400
Subject: [PATCH] net/mlx5: fix connection tracking state item validation
[ upstream commit 179e70fd7ad2027705b42e7416d436d299eca78c ]
This patch validate a connection tracking state when matching
'conntrack is' in rte_flow rules. Since conntrack item flags
is a bitmap, then any combination of RTE_FLOW_CONNTRACK_PKT_STATE_*
flags is a valid value to match on.
This patch validate the CT state item.
Fixes: aca19061e4b9 ("net/mlx5: validate connection tracking item")
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.h | 5 +++++
drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index eb7040ee4d..3a23954697 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -95,6 +95,11 @@ enum {
#define MLX5_ACTION_CTX_CT_GET_OWNER MLX5_INDIRECT_ACT_CT_GET_OWNER
#define MLX5_ACTION_CTX_CT_GEN_IDX MLX5_INDIRECT_ACT_CT_GEN_IDX
+#define MLX5_FLOW_CONNTRACK_PKT_STATE_ALL \
+ (RTE_FLOW_CONNTRACK_PKT_STATE_VALID | RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED | \
+ RTE_FLOW_CONNTRACK_PKT_STATE_INVALID | RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED | \
+ RTE_FLOW_CONNTRACK_PKT_STATE_BAD)
+
/* Matches on selected register. */
struct mlx5_rte_flow_item_tag {
enum modify_reg id;
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index f3a76f9e93..ff8d58db64 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -2862,6 +2862,11 @@ flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM, NULL,
"Conflict status bits");
+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ NULL,
+ "Invalid CT item flags");
/* State change also needs to be considered. */
*item_flags |= MLX5_FLOW_LAYER_ASO_CT;
return 0;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.576474552 +0000
+++ 0020-net-mlx5-fix-connection-tracking-state-item-validati.patch 2025-10-27 15:54:34.767948846 +0000
@@ -1 +1 @@
-From 179e70fd7ad2027705b42e7416d436d299eca78c Mon Sep 17 00:00:00 2001
+From 22388ebd621d3554ab259e159f4f0964702ecc7e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 179e70fd7ad2027705b42e7416d436d299eca78c ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -19,4 +20,3 @@
- drivers/net/mlx5/mlx5_flow.h | 5 +++++
- drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
- drivers/net/mlx5/mlx5_flow_hw.c | 10 ++++++++++
- 3 files changed, 20 insertions(+)
+ drivers/net/mlx5/mlx5_flow.h | 5 +++++
+ drivers/net/mlx5/mlx5_flow_dv.c | 5 +++++
+ 2 files changed, 10 insertions(+)
@@ -25 +25 @@
-index e890e732c3..ed0c1fcfd2 100644
+index eb7040ee4d..3a23954697 100644
@@ -28,3 +28,3 @@
-@@ -100,6 +100,11 @@ enum mlx5_indirect_type {
- #define MLX5_INDIRECT_ACT_CT_GET_IDX(index) \
- ((index) & ((1 << MLX5_INDIRECT_ACT_CT_OWNER_SHIFT) - 1))
+@@ -95,6 +95,11 @@ enum {
+ #define MLX5_ACTION_CTX_CT_GET_OWNER MLX5_INDIRECT_ACT_CT_GET_OWNER
+ #define MLX5_ACTION_CTX_CT_GEN_IDX MLX5_INDIRECT_ACT_CT_GEN_IDX
@@ -37,3 +37,3 @@
- /*
- * When HW steering flow engine is used, the CT action handles are encoded in a following way:
- * - bits 31:29 - type
+ /* Matches on selected register. */
+ struct mlx5_rte_flow_item_tag {
+ enum modify_reg id;
@@ -41 +41 @@
-index 7b9e5018b8..f673637e7d 100644
+index f3a76f9e93..ff8d58db64 100644
@@ -44,10 +44,9 @@
-@@ -3289,6 +3289,11 @@ mlx5_flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
- RTE_FLOW_ERROR_TYPE_ITEM,
- NULL,
- "Conflict status bits");
-+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
-+ return rte_flow_error_set(error, EINVAL,
-+ RTE_FLOW_ERROR_TYPE_ITEM,
-+ NULL,
-+ "Invalid CT item flags");
- }
+@@ -2862,6 +2862,11 @@ flow_dv_validate_item_aso_ct(struct rte_eth_dev *dev,
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM, NULL,
+ "Conflict status bits");
++ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
++ return rte_flow_error_set(error, EINVAL,
++ RTE_FLOW_ERROR_TYPE_ITEM,
++ NULL,
++ "Invalid CT item flags");
@@ -56,28 +55 @@
-diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
-index 3da8d93454..bca396a9ab 100644
---- a/drivers/net/mlx5/mlx5_flow_hw.c
-+++ b/drivers/net/mlx5/mlx5_flow_hw.c
-@@ -17010,6 +17010,7 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
- switch (items->type) {
- const struct rte_flow_item_ethdev *ethdev;
- const struct rte_flow_item_tx_queue *tx_queue;
-+ const struct rte_flow_item_conntrack *spec;
- struct mlx5_txq_ctrl *txq;
-
- case RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT:
-@@ -17030,6 +17031,15 @@ flow_hw_validate_rule_pattern(struct rte_eth_dev *dev,
- RTE_FLOW_ERROR_TYPE_ITEM_SPEC, items,
- "Invalid Tx queue");
- mlx5_txq_release(dev, tx_queue->tx_queue);
-+ break;
-+ case RTE_FLOW_ITEM_TYPE_CONNTRACK:
-+ spec = items->spec;
-+ if (spec->flags & ~MLX5_FLOW_CONNTRACK_PKT_STATE_ALL)
-+ return rte_flow_error_set(error, EINVAL,
-+ RTE_FLOW_ERROR_TYPE_ITEM,
-+ NULL,
-+ "Invalid CT item flags");
-+ break;
- default:
- break;
- }
+ return 0;
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix indirect flow age action handling' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (18 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/mlx5: fix connection tracking state item validation' " luca.boccassi
@ 2025-10-27 16:18 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " luca.boccassi
` (57 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:18 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Bing Zhao, Raslan Darawsheh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/4d16e6e800843b5c4e5134d15a2a856dca6d56df
Thanks.
Luca Boccassi
---
From 4d16e6e800843b5c4e5134d15a2a856dca6d56df Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Tue, 19 Aug 2025 13:27:42 +0200
Subject: [PATCH] net/mlx5: fix indirect flow age action handling
[ upstream commit 8bc72d9f277593f6d8b27278bad3a5bb92e7347f ]
Indirect AGE flow actions can be created either through synchronous
or asynchronous flow API.
mlx5 PMD stores the queue used to create that action to support
strict queueing. When action is created through synchronous API
invalid queue index is stored instead.
Whenever a flow rule is created with indirect AGE and
direct COUNT flow actions, PMD allocates a HW counter for ageing
that flow rule during rule creation.
During allocation of the counter a queue index is needed
to select a proper counter pool cache.
In case when indirect AGE action created through synchronous API
was used in that case, the associated queue index was used
to select pool cache. Since queue index was invalid, PMD crashed.
Counter can be allocated using the index of currently used queue and
it does not have to match the queue used to create AGE action.
This patch fixes the crash by using the index of currently used queue
for counter allocation.
This patch also adds missing validation for synchronous
and asynchronous AGE flow action creation:
- If strict queueing is disabled, only synchronous creation is allowed.
- If strict queueing is enabled, only asynchronous creation is allowed.
PMD documentation is updated accordingly.
It also updates validation of synchronous query
of aged flow rules in regards to strict queueing.
When strict queueing is enabled, synchronous query is rejected.
This aligns PMD behavior with API description.
Fixes: 04a4de756e14 ("net/mlx5: support flow age action with HWS")
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Raslan Darawsheh <rasland@nvidia.com>
---
doc/guides/nics/mlx5.rst | 4 ++++
drivers/net/mlx5/mlx5_flow_hw.c | 24 +++++++++++++++++-------
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index d2f741a472..e74c1d8e8d 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -1700,6 +1700,10 @@ applications are allowed to:
This option is supported only for Tx hairpin queues.
+#. With strict queueing enabled
+ (``RTE_FLOW_PORT_FLAG_STRICT_QUEUE`` passed to ``rte_flow_configure()``),
+ indirect age actions can be created only through asynchronous flow API.
+
Notes for testpmd
-----------------
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 7a8455baf6..5fbbd487de 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1886,6 +1886,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
uint32_t idx = act_idx &
((1u << MLX5_INDIRECT_ACTION_TYPE_OFFSET) - 1);
uint64_t item_flags;
+ uint32_t *cnt_queue;
cnt_id_t age_cnt;
memset(&act_data, 0, sizeof(act_data));
@@ -1931,9 +1932,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
if (param == NULL)
return -1;
if (action_flags & MLX5_FLOW_ACTION_COUNT) {
- if (mlx5_hws_cnt_pool_get(priv->hws_cpool,
- ¶m->queue_id, &age_cnt,
- idx) < 0)
+ cnt_queue = mlx5_hws_cnt_get_queue(priv, &queue);
+ if (mlx5_hws_cnt_pool_get(priv->hws_cpool, cnt_queue, &age_cnt, idx) < 0)
return -1;
flow->cnt_id = age_cnt;
param->nb_cnts++;
@@ -8469,6 +8469,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
const struct rte_flow_action *action,
struct rte_flow_error *err)
{
+ struct mlx5_priv *priv = dev->data->dev_private;
+
+ if (action->type == RTE_FLOW_ACTION_TYPE_AGE && priv->hws_strict_queue) {
+ rte_flow_error_set(err, EINVAL, RTE_FLOW_ERROR_TYPE_STATE, NULL,
+ "Cannot create age action synchronously with strict queueing");
+ return NULL;
+ }
+
return flow_hw_action_handle_create(dev, MLX5_HW_INV_QUEUE,
NULL, conf, action, NULL, err);
}
@@ -8640,6 +8648,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL, "No aging initialized");
if (priv->hws_strict_queue) {
+ /* Queue is invalid in sync query. Sync query and strict queueing is disallowed. */
+ MLX5_ASSERT(queue_id != MLX5_HW_INV_QUEUE);
if (queue_id >= age_info->hw_q_age->nb_rings)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
@@ -8693,10 +8703,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
struct mlx5_priv *priv = dev->data->dev_private;
if (priv->hws_strict_queue)
- DRV_LOG(WARNING,
- "port %u get aged flows called in strict queue mode.",
- dev->data->port_id);
- return flow_hw_get_q_aged_flows(dev, 0, contexts, nb_contexts, error);
+ return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_STATE, NULL,
+ "Cannot get aged flows synchronously with strict queueing");
+
+ return flow_hw_get_q_aged_flows(dev, MLX5_HW_INV_QUEUE, contexts, nb_contexts, error);
}
const struct mlx5_flow_driver_ops mlx5_flow_hw_drv_ops = {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.632116018 +0000
+++ 0021-net-mlx5-fix-indirect-flow-age-action-handling.patch 2025-10-27 15:54:34.771948947 +0000
@@ -1 +1 @@
-From 8bc72d9f277593f6d8b27278bad3a5bb92e7347f Mon Sep 17 00:00:00 2001
+From 4d16e6e800843b5c4e5134d15a2a856dca6d56df Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8bc72d9f277593f6d8b27278bad3a5bb92e7347f ]
+
@@ -42 +43,0 @@
-Cc: stable@dpdk.org
@@ -53 +54 @@
-index 761dcad542..20056f61d6 100644
+index d2f741a472..e74c1d8e8d 100644
@@ -56,3 +57,3 @@
-@@ -2740,6 +2740,10 @@ With :ref:`HW steering <mlx5_hws>`,
- in addition to flow rules using only age (without count action).
- - ``nb_aging_objects`` is the number of flow rules containing age action.
+@@ -1700,6 +1700,10 @@ applications are allowed to:
+
+ This option is supported only for Tx hairpin queues.
@@ -65,2 +66,2 @@
- .. _mlx5_quota:
-
+ Notes for testpmd
+ -----------------
@@ -68 +69 @@
-index 84f39c467e..c84ae726a7 100644
+index 7a8455baf6..5fbbd487de 100644
@@ -71,2 +72 @@
-@@ -3180,6 +3180,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
- uint32_t type = act_idx >> MLX5_INDIRECT_ACTION_TYPE_OFFSET;
+@@ -1886,6 +1886,7 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -74,0 +75 @@
+ uint64_t item_flags;
@@ -79 +80 @@
-@@ -3230,9 +3231,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
+@@ -1931,9 +1932,8 @@ flow_hw_shared_action_construct(struct rte_eth_dev *dev, uint32_t queue,
@@ -89 +89,0 @@
- flow->flags |= MLX5_FLOW_HW_FLOW_FLAG_CNT_ID;
@@ -91 +91,2 @@
-@@ -13142,6 +13142,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
+ param->nb_cnts++;
+@@ -8469,6 +8469,14 @@ flow_hw_action_create(struct rte_eth_dev *dev,
@@ -106 +107 @@
-@@ -13361,6 +13369,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
+@@ -8640,6 +8648,8 @@ flow_hw_get_q_aged_flows(struct rte_eth_dev *dev, uint32_t queue_id,
@@ -115 +116 @@
-@@ -13414,10 +13424,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
+@@ -8693,10 +8703,10 @@ flow_hw_get_aged_flows(struct rte_eth_dev *dev, void **contexts,
@@ -128,2 +129,2 @@
- /**
- * Initialization function for non template API which calls
+
+ const struct mlx5_flow_driver_ops mlx5_flow_hw_drv_ops = {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix Direct Verbs counter offset detection' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (19 preceding siblings ...)
2025-10-27 16:18 ` patch 'net/mlx5: fix indirect flow age action handling' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix interface name parameter definition' " luca.boccassi
` (56 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Dariusz Sosnowski; +Cc: Andre Muezerie, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/9d536ec45e17d575b632ae93a1df5e39b64b3cb5
Thanks.
Luca Boccassi
---
From 9d536ec45e17d575b632ae93a1df5e39b64b3cb5 Mon Sep 17 00:00:00 2001
From: Dariusz Sosnowski <dsosnowski@nvidia.com>
Date: Wed, 20 Aug 2025 10:45:21 +0200
Subject: [PATCH] net/mlx5: fix Direct Verbs counter offset detection
[ upstream commit d953431da8e1ece042e33ba71650a3ba6b1e27c1 ]
This patch fixes a bug in
mlx5_flow_dv_discover_counter_offset_support()
uncovered by a warning reported by MSVC:
../drivers/net/mlx5/mlx5_flow_dv.c(19636): warning C5287:
operands are different enum types 'ibv_flow_attr_type' and
'ibv_flow_flags';
use an explicit cast to silence this warning
IBV_FLOW_ATTR_FLAGS_EGRESS was incorrectly passed in to
type field of mlx5dv_flow_matcher_attr struct,
instead of flags field.
As a result counter offset support discovery returned a false positive
result on application with old rdma-core.
Bugzilla ID: 1758
Fixes: 4fd5e1484887 ("net/mlx5: fix counter offset detection")
Reported-by: Andre Muezerie <andremue@linux.microsoft.com>
Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Andre Muezerie <andremue@linux.microsoft.com>
---
drivers/net/mlx5/mlx5_flow_dv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index ff8d58db64..d7e886fa4f 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -18461,7 +18461,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
.size = sizeof(value.buf),
};
struct mlx5dv_flow_matcher_attr dv_attr = {
- .type = IBV_FLOW_ATTR_NORMAL | IBV_FLOW_ATTR_FLAGS_EGRESS,
+ .type = IBV_FLOW_ATTR_NORMAL,
+ .flags = IBV_FLOW_ATTR_FLAGS_EGRESS,
.priority = 0,
.match_criteria_enable = 0,
.match_mask = (void *)&mask,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.676008294 +0000
+++ 0022-net-mlx5-fix-Direct-Verbs-counter-offset-detection.patch 2025-10-27 15:54:34.783949248 +0000
@@ -1 +1 @@
-From d953431da8e1ece042e33ba71650a3ba6b1e27c1 Mon Sep 17 00:00:00 2001
+From 9d536ec45e17d575b632ae93a1df5e39b64b3cb5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d953431da8e1ece042e33ba71650a3ba6b1e27c1 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -33 +34 @@
-index f673637e7d..abfd54da1a 100644
+index ff8d58db64..d7e886fa4f 100644
@@ -36 +37 @@
-@@ -19657,7 +19657,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
+@@ -18461,7 +18461,8 @@ mlx5_flow_dv_discover_counter_offset_support(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix interface name parameter definition' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (20 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/intel: fix assumption about tag placement order' " luca.boccassi
` (55 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Gregory Etelson; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/0458512915113b2da620fcf44f40beed30aefbe9
Thanks.
Luca Boccassi
---
From 0458512915113b2da620fcf44f40beed30aefbe9 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Sun, 10 Aug 2025 16:22:59 +0300
Subject: [PATCH] net/mlx5: fix interface name parameter definition
[ upstream commit 9e58a50c059f3760c51ddee16073496c6e1d510a ]
The patch fixes `ifname` parameter as a character buffer.
Fixes: 1256805dd54d ("net/mlx5: move Linux-specific functions")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_ethdev_os.c | 11 +++++------
drivers/net/mlx5/linux/mlx5_os.c | 2 +-
drivers/net/mlx5/mlx5.h | 3 +--
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 4 ++--
4 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
index 4d126751a2..ea89ce8e05 100644
--- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c
@@ -156,7 +156,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE])
{
struct mlx5_priv *priv = dev->data->dev_private;
unsigned int ifindex;
@@ -170,12 +170,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
ifindex = mlx5_ifindex(dev);
if (!ifindex) {
if (!priv->representor)
- return mlx5_get_ifname_sysfs(priv->sh->ibdev_path,
- *ifname);
+ return mlx5_get_ifname_sysfs(priv->sh->ibdev_path, ifname);
rte_errno = ENXIO;
return -rte_errno;
}
- if (if_indextoname(ifindex, &(*ifname)[0]))
+ if (if_indextoname(ifindex, ifname))
return 0;
rte_errno = errno;
return -rte_errno;
@@ -233,10 +232,10 @@ error:
static int
mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
{
- char ifname[sizeof(ifr->ifr_name)];
+ char ifname[MLX5_NAMESIZE];
int ret;
- ret = mlx5_get_ifname(dev, &ifname);
+ ret = mlx5_get_ifname(dev, ifname);
if (ret)
return -rte_errno;
return mlx5_ifreq_by_ifname(ifname, req, ifr);
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 38a774ade7..23093b404a 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1502,7 +1502,7 @@ err_secondary:
{
char ifname[MLX5_NAMESIZE];
- if (mlx5_get_ifname(eth_dev, &ifname) == 0)
+ if (mlx5_get_ifname(eth_dev, ifname) == 0)
DRV_LOG(DEBUG, "port %u ifname is \"%s\"",
eth_dev->data->port_id, ifname);
else
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index b82142f2bc..ad90b090cf 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -1967,8 +1967,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
/* mlx5_ethdev_os.c */
-int mlx5_get_ifname(const struct rte_eth_dev *dev,
- char (*ifname)[MLX5_NAMESIZE]);
+int mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE]);
unsigned int mlx5_ifindex(const struct rte_eth_dev *dev);
int mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[RTE_ETHER_ADDR_LEN]);
int mlx5_get_mtu(struct rte_eth_dev *dev, uint16_t *mtu);
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 4f43b95a09..32a9f599b2 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -56,7 +56,7 @@ mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[RTE_ETHER_ADDR_LEN])
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+mlx5_get_ifname(const struct rte_eth_dev *dev, char ifname[MLX5_NAMESIZE])
{
struct mlx5_priv *priv;
mlx5_context_st *context_obj;
@@ -67,7 +67,7 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
}
priv = dev->data->dev_private;
context_obj = (mlx5_context_st *)priv->sh->cdev->ctx;
- strncpy(*ifname, context_obj->mlx5_dev.name, MLX5_NAMESIZE);
+ strncpy(ifname, context_obj->mlx5_dev.name, MLX5_NAMESIZE);
return 0;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.720784190 +0000
+++ 0023-net-mlx5-fix-interface-name-parameter-definition.patch 2025-10-27 15:54:34.787949348 +0000
@@ -1 +1 @@
-From 9e58a50c059f3760c51ddee16073496c6e1d510a Mon Sep 17 00:00:00 2001
+From 0458512915113b2da620fcf44f40beed30aefbe9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 9e58a50c059f3760c51ddee16073496c6e1d510a ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a371c2c747..4acaaca9ca 100644
+index 4d126751a2..ea89ce8e05 100644
@@ -24 +25 @@
-@@ -73,7 +73,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
+@@ -156,7 +156,7 @@ mlx5_auxiliary_get_ifindex(const char *sf_name)
@@ -33 +34 @@
-@@ -87,12 +87,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
+@@ -170,12 +170,11 @@ mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[MLX5_NAMESIZE])
@@ -48 +49 @@
-@@ -150,10 +149,10 @@ error:
+@@ -233,10 +232,10 @@ error:
@@ -62 +63 @@
-index 85b3fabaf5..3d87aec5bc 100644
+index 38a774ade7..23093b404a 100644
@@ -65 +66 @@
-@@ -1587,7 +1587,7 @@ err_secondary:
+@@ -1502,7 +1502,7 @@ err_secondary:
@@ -75 +76 @@
-index 53f0a27445..93e298d648 100644
+index b82142f2bc..ad90b090cf 100644
@@ -78 +79 @@
-@@ -2348,8 +2348,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
+@@ -1967,8 +1967,7 @@ void mlx5_get_mtu_bounds(struct rte_eth_dev *dev, uint16_t *min_mtu, uint16_t *m
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/intel: fix assumption about tag placement order' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (21 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: fix interface name parameter definition' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix adding special words' " luca.boccassi
` (54 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Ciara Loftus, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c093725ca89688e1dcf44c477f9c73e25be8ab37
Thanks.
Luca Boccassi
---
From c093725ca89688e1dcf44c477f9c73e25be8ab37 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 18 Jul 2025 16:43:12 +0100
Subject: [PATCH] net/intel: fix assumption about tag placement order
[ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ]
The specific placement of outer/inner VLAN tags in NIC descriptors
is configurable. Therefore, remove the assumption that if the L2Tag2
field is filled in, that the L2Tag1 must also be. Instead, check the
existing mbuf VLAN flags, and move tags and set flags as appropriate.
This fixes an issue where, with QinQ packets with different Tag ethtypes
(0x88a8 vs 0x8100), we get an mbuf reporting two valid tags, but only
having had one tag stripped.
Fixes: cc9d0456b870 ("i40e: support double vlan stripping and insertion")
Fixes: 1e728b01120c ("net/iavf: rework Tx path")
Fixes: e0dcf94a0d7f ("net/ice: support VLAN ops")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
---
drivers/net/i40e/i40e_rxtx.c | 10 +++++++---
drivers/net/iavf/iavf_rxtx.c | 12 +++++++-----
drivers/net/ice/ice_rxtx.c | 10 +++++++---
3 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 55985e7e37..952ccf2083 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.qword2.ext_status) &
(1 << I40E_RX_DESC_EXT_STATUS_L2TAG2P_SHIFT)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_2);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.qword2.l2tag2_1),
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index 1f82d1cf3f..4418b620c4 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -1131,11 +1131,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
#ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.status_error1) &
(1 << IAVF_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED |
- RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED |
- RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.l2tag2_1st),
diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index 0814c79bde..bfbce8f151 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -1658,9 +1658,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
#ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC
if (rte_le_to_cpu_16(rxdp->wb.status_error1) &
(1 << ICE_RX_FLEX_DESC_STATUS1_L2TAG2P_S)) {
- mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ |
- RTE_MBUF_F_RX_VLAN_STRIPPED | RTE_MBUF_F_RX_VLAN;
- mb->vlan_tci_outer = mb->vlan_tci;
+ if ((mb->ol_flags & RTE_MBUF_F_RX_VLAN_STRIPPED) == 0) {
+ mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
+ } else {
+ /* if two tags, move Tag1 to outer tag field */
+ mb->ol_flags |= RTE_MBUF_F_RX_QINQ_STRIPPED | RTE_MBUF_F_RX_QINQ;
+ mb->vlan_tci_outer = mb->vlan_tci;
+ }
mb->vlan_tci = rte_le_to_cpu_16(rxdp->wb.l2tag2_2nd);
PMD_RX_LOG(DEBUG, "Descriptor l2tag2_1: %u, l2tag2_2: %u",
rte_le_to_cpu_16(rxdp->wb.l2tag2_1st),
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.758189805 +0000
+++ 0024-net-intel-fix-assumption-about-tag-placement-order.patch 2025-10-27 15:54:34.791949450 +0000
@@ -1 +1 @@
-From 21168355589ea9edfcb2925f4952ecb05470f92f Mon Sep 17 00:00:00 2001
+From c093725ca89688e1dcf44c477f9c73e25be8ab37 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 21168355589ea9edfcb2925f4952ecb05470f92f ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -22,3 +23,3 @@
- drivers/net/intel/i40e/i40e_rxtx.c | 10 +++++++---
- drivers/net/intel/iavf/iavf_rxtx.c | 12 +++++++-----
- drivers/net/intel/ice/ice_rxtx.c | 10 +++++++---
+ drivers/net/i40e/i40e_rxtx.c | 10 +++++++---
+ drivers/net/iavf/iavf_rxtx.c | 12 +++++++-----
+ drivers/net/ice/ice_rxtx.c | 10 +++++++---
@@ -27,6 +28,6 @@
-diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
-index b149a4c127..50b74149e3 100644
---- a/drivers/net/intel/i40e/i40e_rxtx.c
-+++ b/drivers/net/intel/i40e/i40e_rxtx.c
-@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_desc *rxdp)
- #ifndef RTE_NET_INTEL_USE_16BYTE_DESC
+diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
+index 55985e7e37..952ccf2083 100644
+--- a/drivers/net/i40e/i40e_rxtx.c
++++ b/drivers/net/i40e/i40e_rxtx.c
+@@ -128,9 +128,13 @@ i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp)
+ #ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
@@ -48,6 +49,6 @@
-diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
-index 50adc7ea1a..982e16f929 100644
---- a/drivers/net/intel/iavf/iavf_rxtx.c
-+++ b/drivers/net/intel/iavf/iavf_rxtx.c
-@@ -1184,11 +1184,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
-
+diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
+index 1f82d1cf3f..4418b620c4 100644
+--- a/drivers/net/iavf/iavf_rxtx.c
++++ b/drivers/net/iavf/iavf_rxtx.c
+@@ -1131,11 +1131,13 @@ iavf_flex_rxd_to_vlan_tci(struct rte_mbuf *mb,
+ #ifndef RTE_LIBRTE_IAVF_16BYTE_RX_DESC
@@ -71,6 +72,6 @@
-diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
-index 5e72c231f7..aa8b838955 100644
---- a/drivers/net/intel/ice/ice_rxtx.c
-+++ b/drivers/net/intel/ice/ice_rxtx.c
-@@ -1835,9 +1835,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ci_rx_flex_desc *rxdp)
- #ifndef RTE_NET_INTEL_USE_16BYTE_DESC
+diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
+index 0814c79bde..bfbce8f151 100644
+--- a/drivers/net/ice/ice_rxtx.c
++++ b/drivers/net/ice/ice_rxtx.c
+@@ -1658,9 +1658,13 @@ ice_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union ice_rx_flex_desc *rxdp)
+ #ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice/base: fix adding special words' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (22 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/intel: fix assumption about tag placement order' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in HW profile handling' " luca.boccassi
` (53 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shaiq Wani; +Cc: Jeff Shaw, Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/7d2b27c099024bb4ba0299149fe47fbe6cfa8fa1
Thanks.
Luca Boccassi
---
From 7d2b27c099024bb4ba0299149fe47fbe6cfa8fa1 Mon Sep 17 00:00:00 2001
From: Shaiq Wani <shaiq.wani@intel.com>
Date: Tue, 2 Sep 2025 18:26:52 +0100
Subject: [PATCH] net/ice/base: fix adding special words
[ upstream commit e563992fba809bcae90b4734f555e354024ec564 ]
The function ice_add_special_words() is meant to add special words (such
as traffic direction) to the rule. The function that
interprets/translates these additional words is ice_get_sw_fv_list().
However, the ice_get_sw_fv_list() is called *before*
ice_add_special_words(), so the "special" words weren't added at that
point yet, hence they're not translated. This results in the driver
ignoring whatever special words that were added. The fix is to call
ice_get_sw_fv_list() *after* ice_add_special_words().
Fixes: ed3066a3b1b0 ("net/ice/base: refactor DDP code")
Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Signed-off-by: Shaiq Wani <shaiq.wani@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_switch.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 89270a477d..0ab3abe276 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -7868,10 +7868,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
*/
ice_get_compat_fv_bitmap(hw, rinfo, fv_bitmap);
- status = ice_get_fv(hw, lkup_exts, fv_bitmap, &rm->fv_list);
- if (status)
- goto err_unroll;
-
/* Create any special protocol/offset pairs, such as looking at tunnel
* bits by extracting metadata
*/
@@ -7879,6 +7875,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
if (status)
goto err_free_lkup_exts;
+ status = ice_get_fv(hw, lkup_exts, fv_bitmap, &rm->fv_list);
+ if (status)
+ goto err_unroll;
+
/* Group match words into recipes using preferred recipe grouping
* criteria.
*/
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.797525145 +0000
+++ 0025-net-ice-base-fix-adding-special-words.patch 2025-10-27 15:54:34.795949549 +0000
@@ -1 +1 @@
-From e563992fba809bcae90b4734f555e354024ec564 Mon Sep 17 00:00:00 2001
+From 7d2b27c099024bb4ba0299149fe47fbe6cfa8fa1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e563992fba809bcae90b4734f555e354024ec564 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
- drivers/net/intel/ice/base/ice_switch.c | 8 ++++----
+ drivers/net/ice/base/ice_switch.c | 8 ++++----
@@ -27,5 +28,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_switch.c b/drivers/net/intel/ice/base/ice_switch.c
-index 54cc2e1c07..f16bec044c 100644
---- a/drivers/net/intel/ice/base/ice_switch.c
-+++ b/drivers/net/intel/ice/base/ice_switch.c
-@@ -8287,10 +8287,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
+diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
+index 89270a477d..0ab3abe276 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
+@@ -7868,10 +7868,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
@@ -35 +36 @@
-- status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
+- status = ice_get_fv(hw, lkup_exts, fv_bitmap, &rm->fv_list);
@@ -42 +43 @@
-@@ -8298,6 +8294,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
+@@ -7879,6 +7875,10 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
@@ -46 +47 @@
-+ status = ice_get_sw_fv_list(hw, lkup_exts, fv_bitmap, &rm->fv_list);
++ status = ice_get_fv(hw, lkup_exts, fv_bitmap, &rm->fv_list);
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice/base: fix memory leak in HW profile handling' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (23 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice/base: fix adding special words' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in recipe " luca.boccassi
` (52 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Jacob Keller; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/4529cc81367a6de786989fd71963deb9734ed782
Thanks.
Luca Boccassi
---
From 4529cc81367a6de786989fd71963deb9734ed782 Mon Sep 17 00:00:00 2001
From: Jacob Keller <jacob.e.keller@intel.com>
Date: Tue, 2 Sep 2025 18:26:53 +0100
Subject: [PATCH] net/ice/base: fix memory leak in HW profile handling
[ upstream commit bce22ae3a0e61134b5fd19498bd849d1693dadb4 ]
The ice_flow_set_hw_prof() function allocates a params structure with
ice_malloc. It uses this structure to hold some data temporarily while
processing the hardware profile to set.
Static analysis indicated that this memory is not released. Fix this
function to free the memory upon exit.
Fixes: 8ebb93942b2c ("net/ice/base: add function to set HW profile for raw flow")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_flow.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index 3483a5ed4f..2b06a70cab 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -2629,10 +2629,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
status = ice_flow_assoc_hw_prof(hw, blk, dest_vsi_handle,
fdir_vsi_handle, id);
- if (status)
- goto free_params;
-
- return ICE_SUCCESS;
free_params:
ice_free(hw, params);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.834110051 +0000
+++ 0026-net-ice-base-fix-memory-leak-in-HW-profile-handling.patch 2025-10-27 15:54:34.799949649 +0000
@@ -1 +1 @@
-From bce22ae3a0e61134b5fd19498bd849d1693dadb4 Mon Sep 17 00:00:00 2001
+From 4529cc81367a6de786989fd71963deb9734ed782 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bce22ae3a0e61134b5fd19498bd849d1693dadb4 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
- drivers/net/intel/ice/base/ice_flow.c | 4 ----
+ drivers/net/ice/base/ice_flow.c | 4 ----
@@ -23,5 +24,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_flow.c b/drivers/net/intel/ice/base/ice_flow.c
-index cdc9ee26c5..7b0ecd54df 100644
---- a/drivers/net/intel/ice/base/ice_flow.c
-+++ b/drivers/net/intel/ice/base/ice_flow.c
-@@ -2632,10 +2632,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
+diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
+index 3483a5ed4f..2b06a70cab 100644
+--- a/drivers/net/ice/base/ice_flow.c
++++ b/drivers/net/ice/base/ice_flow.c
+@@ -2629,10 +2629,6 @@ ice_flow_set_hw_prof(struct ice_hw *hw, u16 dest_vsi_handle,
@@ -34 +35 @@
-- return 0;
+- return ICE_SUCCESS;
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice/base: fix memory leak in recipe handling' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (24 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in HW profile handling' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'eal: fix DMA mask validation with IOVA mode option' " luca.boccassi
` (51 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Pandi Kumar Maharajan; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/a7ddf77e1a325caec25f01105343048f4b0afda4
Thanks.
Luca Boccassi
---
From a7ddf77e1a325caec25f01105343048f4b0afda4 Mon Sep 17 00:00:00 2001
From: Pandi Kumar Maharajan <pandi.maharajan@intel.com>
Date: Tue, 2 Sep 2025 18:26:54 +0100
Subject: [PATCH] net/ice/base: fix memory leak in recipe handling
[ upstream commit baf3de23be970346378d5159a81782bfb6eb927b ]
Advanced filter operations (apply/remove GENEVE/VXLAN filters) trigger
the call chain: ice_add_adv_rule()/ice_rem_adv_rule() -> ice_find_recp()
-> ice_get_recp_frm_fw(). Each call to ice_get_recp_frm_fw() creates new
linked list entries for SW recipe tracking without cleaning up previous
entries for the same recipe ID. The linked list then continuously grows
with each filter add/remove operation, leading to excessive heap usage
over time.
Fix the memory leak by adding logic to remove the duplicate entries
before adding new ones for the same recipe ID.
Fixes: fed0c5ca5f19 ("net/ice/base: support programming a new switch recipe")
Signed-off-by: Pandi Kumar Maharajan <pandi.maharajan@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_switch.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 0ab3abe276..f85f03fba1 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -2209,6 +2209,7 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
bool *refresh_required)
{
ice_declare_bitmap(result_bm, ICE_MAX_FV_WORDS);
+ struct ice_recp_grp_entry *rg, *tmprg_entry;
struct ice_aqc_recipe_data_elem *tmp;
u16 num_recps = ICE_MAX_NUM_RECIPES;
struct ice_prot_lkup_ext *lkup_exts;
@@ -2250,6 +2251,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
*/
lkup_exts = &recps[rid].lkup_exts;
+ /* Remove duplicate entries */
+ LIST_FOR_EACH_ENTRY_SAFE(rg, tmprg_entry, &recps[rid].rg_list,
+ ice_recp_grp_entry, l_entry) {
+ if (rg->rid == rid) {
+ LIST_DEL(&rg->l_entry);
+ ice_free(hw, rg);
+ }
+ }
+
for (sub_recps = 0; sub_recps < num_recps; sub_recps++) {
struct ice_aqc_recipe_data_elem root_bufs = tmp[sub_recps];
struct ice_recp_grp_entry *rg_entry;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.871149831 +0000
+++ 0027-net-ice-base-fix-memory-leak-in-recipe-handling.patch 2025-10-27 15:54:34.803949751 +0000
@@ -1 +1 @@
-From baf3de23be970346378d5159a81782bfb6eb927b Mon Sep 17 00:00:00 2001
+From a7ddf77e1a325caec25f01105343048f4b0afda4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit baf3de23be970346378d5159a81782bfb6eb927b ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
- drivers/net/intel/ice/base/ice_switch.c | 10 ++++++++++
+ drivers/net/ice/base/ice_switch.c | 10 ++++++++++
@@ -27,5 +28,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_switch.c b/drivers/net/intel/ice/base/ice_switch.c
-index f16bec044c..628473f100 100644
---- a/drivers/net/intel/ice/base/ice_switch.c
-+++ b/drivers/net/intel/ice/base/ice_switch.c
-@@ -2435,6 +2435,7 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
+diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
+index 0ab3abe276..f85f03fba1 100644
+--- a/drivers/net/ice/base/ice_switch.c
++++ b/drivers/net/ice/base/ice_switch.c
+@@ -2209,6 +2209,7 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
@@ -39 +40 @@
-@@ -2481,6 +2482,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
+@@ -2250,6 +2251,15 @@ ice_get_recp_frm_fw(struct ice_hw *hw, struct ice_sw_recipe *recps, u8 rid,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'eal: fix DMA mask validation with IOVA mode option' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (25 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in recipe " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'eal: fix MP socket cleanup' " luca.boccassi
` (50 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shani Peretz; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/0980930c32a05807f48c2cace72e5e2e5dabf7a7
Thanks.
Luca Boccassi
---
From 0980930c32a05807f48c2cace72e5e2e5dabf7a7 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Thu, 18 Sep 2025 09:47:54 +0300
Subject: [PATCH] eal: fix DMA mask validation with IOVA mode option
[ upstream commit e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 ]
When --iova-mode is explicitly specified in command line, DMA mask
constraints were not being validated, leading to potential runtime
failures when device DMA capabilities are exceeded.
The issue occurred because rte_bus_get_iommu_class() was only called
during IOVA mode auto-detection, but this function has the important
side effect of triggering DMA mask detection (e.g., Intel IOMMU
address width checking via pci_device_iommu_support_va()).
This created an inconsistency, when choosing explicit mode,
the DMA checks are bypassed, but when choosing auto-detection mode,
the constraints are checked and enforced.
The fix moves rte_bus_get_iommu_class() outside the conditional logic
to ensure it's always called during EAL initialization.
Fixes: 4374ebc24bc1 ("malloc: modify error message for DMA mask check")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/freebsd/eal.c | 6 +++++-
lib/eal/linux/eal.c | 5 ++++-
lib/eal/windows/eal.c | 5 ++++-
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index 008a6c68e4..aa9f85c647 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -692,6 +692,10 @@ rte_eal_init(int argc, char **argv)
* with a message describing the cause.
*/
has_phys_addr = internal_conf->no_hugetlbfs == 0;
+
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
iova_mode = internal_conf->iova_mode;
if (iova_mode == RTE_IOVA_PA && !has_phys_addr) {
rte_eal_init_alert("Cannot use IOVA as 'PA' since physical addresses are not available");
@@ -702,7 +706,7 @@ rte_eal_init(int argc, char **argv)
RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
if (has_phys_addr) {
RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC)
iova_mode = RTE_IOVA_PA;
} else {
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index f6ac970ed9..9f9a03bcf7 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1065,10 +1065,13 @@ rte_eal_init(int argc, char **argv)
phys_addrs = rte_eal_using_phys_addrs() != 0;
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
/* if no EAL option "--iova-mode=<pa|va>", use bus IOVA scheme */
if (internal_conf->iova_mode == RTE_IOVA_DC) {
/* autodetect the IOVA mapping mode */
- enum rte_iova_mode iova_mode = rte_bus_get_iommu_class();
+ enum rte_iova_mode iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC) {
RTE_LOG(DEBUG, EAL, "Buses did not request a specific IOVA mode.\n");
diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
index 56fadc7afe..3a459172f9 100644
--- a/lib/eal/windows/eal.c
+++ b/lib/eal/windows/eal.c
@@ -359,6 +359,9 @@ rte_eal_init(int argc, char **argv)
has_phys_addr = false;
}
+ /* Always call rte_bus_get_iommu_class() to trigger DMA mask detection and validation */
+ enum rte_iova_mode bus_iova_mode = rte_bus_get_iommu_class();
+
iova_mode = internal_conf->iova_mode;
if (iova_mode == RTE_IOVA_PA && !has_phys_addr) {
rte_eal_init_alert("Cannot use IOVA as 'PA' since physical addresses are not available");
@@ -369,7 +372,7 @@ rte_eal_init(int argc, char **argv)
RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
if (has_phys_addr) {
RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
- iova_mode = rte_bus_get_iommu_class();
+ iova_mode = bus_iova_mode;
if (iova_mode == RTE_IOVA_DC)
iova_mode = RTE_IOVA_PA;
} else {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.909480984 +0000
+++ 0028-eal-fix-DMA-mask-validation-with-IOVA-mode-option.patch 2025-10-27 15:54:34.803949751 +0000
@@ -1 +1 @@
-From e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 Mon Sep 17 00:00:00 2001
+From 0980930c32a05807f48c2cace72e5e2e5dabf7a7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e37ff4ef296f33e4c3a0e9306241c4f8fcae5061 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -34 +35 @@
-index c1ab8d86d2..0f957919d3 100644
+index 008a6c68e4..aa9f85c647 100644
@@ -37 +38 @@
-@@ -670,12 +670,16 @@ rte_eal_init(int argc, char **argv)
+@@ -692,6 +692,10 @@ rte_eal_init(int argc, char **argv)
@@ -46,2 +47,4 @@
- if (iova_mode == RTE_IOVA_DC) {
- EAL_LOG(DEBUG, "Specific IOVA mode is not requested, autodetecting");
+ if (iova_mode == RTE_IOVA_PA && !has_phys_addr) {
+ rte_eal_init_alert("Cannot use IOVA as 'PA' since physical addresses are not available");
+@@ -702,7 +706,7 @@ rte_eal_init(int argc, char **argv)
+ RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
@@ -49 +52 @@
- EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
+ RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
@@ -52,3 +55,3 @@
- if (iova_mode == RTE_IOVA_DC) {
- if (!RTE_IOVA_IN_MBUF) {
- iova_mode = RTE_IOVA_VA;
+ if (iova_mode == RTE_IOVA_DC)
+ iova_mode = RTE_IOVA_PA;
+ } else {
@@ -56 +59 @@
-index 52efb8626b..3a0c9c9db6 100644
+index f6ac970ed9..9f9a03bcf7 100644
@@ -59 +62 @@
-@@ -1042,10 +1042,13 @@ rte_eal_init(int argc, char **argv)
+@@ -1065,10 +1065,13 @@ rte_eal_init(int argc, char **argv)
@@ -73 +76 @@
- EAL_LOG(DEBUG, "Buses did not request a specific IOVA mode.");
+ RTE_LOG(DEBUG, EAL, "Buses did not request a specific IOVA mode.\n");
@@ -75 +78 @@
-index 4f0a164d9b..2502ec3c3d 100644
+index 56fadc7afe..3a459172f9 100644
@@ -78 +81 @@
-@@ -348,12 +348,15 @@ rte_eal_init(int argc, char **argv)
+@@ -359,6 +359,9 @@ rte_eal_init(int argc, char **argv)
@@ -86,2 +89,4 @@
- if (iova_mode == RTE_IOVA_DC) {
- EAL_LOG(DEBUG, "Specific IOVA mode is not requested, autodetecting");
+ if (iova_mode == RTE_IOVA_PA && !has_phys_addr) {
+ rte_eal_init_alert("Cannot use IOVA as 'PA' since physical addresses are not available");
+@@ -369,7 +372,7 @@ rte_eal_init(int argc, char **argv)
+ RTE_LOG(DEBUG, EAL, "Specific IOVA mode is not requested, autodetecting\n");
@@ -89 +94 @@
- EAL_LOG(DEBUG, "Selecting IOVA mode according to bus requests");
+ RTE_LOG(DEBUG, EAL, "Selecting IOVA mode according to bus requests\n");
@@ -92,3 +97,3 @@
- if (iova_mode == RTE_IOVA_DC) {
- if (!RTE_IOVA_IN_MBUF) {
- iova_mode = RTE_IOVA_VA;
+ if (iova_mode == RTE_IOVA_DC)
+ iova_mode = RTE_IOVA_PA;
+ } else {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'eal: fix MP socket cleanup' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (26 preceding siblings ...)
2025-10-27 16:19 ` patch 'eal: fix DMA mask validation with IOVA mode option' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " luca.boccassi
` (49 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/039a4ac228e9a844bcc8bf3e078684f04078e3e5
Thanks.
Luca Boccassi
---
From 039a4ac228e9a844bcc8bf3e078684f04078e3e5 Mon Sep 17 00:00:00 2001
From: Yang Ming <mosesyyoung@gmail.com>
Date: Sat, 19 Jul 2025 23:32:25 +0800
Subject: [PATCH] eal: fix MP socket cleanup
[ upstream commit 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f ]
The secondary process should not close socket file for MP
channel before performing MP request synchronization.
This prevents error logs when the secondary process exits
without any operation on the crypto device while the primary
process starts the device.
Case situation:
eal_bus_cleanup has been added in rte_eal_cleanup. But for the
secondary process, rte_eal_cleanup firstly performs
rte_mp_channel_cleanup, which closes socket file for the MP
channel, making mp_fd invalid. Subsequently, eal_bus_cleanup
triggers vdev_cleanup, which calls mp_request_sync to send a
message via the MP channel. Since mp_fd is invalid, error logs
occur.
Error logs occur as below when the secondary process exit:
EAL: failed to send to (/tmp/dpdk/l2hicu/mp_socket) due to Bad
file descriptor
EAL: Fail to send request /tmp/dpdk/l2hicu/mp_socket:
ipsec_mb_mp_msg
USER1: Create MR request to primary process failed.
Function call trace:
1. rte_eal_cleanup->rte_mp_channel_cleanup->close_socket_fd
2. rte_eal_cleanup->eal_bus_cleanup->vdev_cleanup->
rte_vdev_driver->ipsec_mb_remove->ipsec_mb_qp_release->
ipsec_mb_secondary_qp_op->rte_mp_request_sync->mp_request_sync->
send_msg->sendmsg(mp_fd, &msgh, 0);
Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown")
Signed-off-by: Yang Ming <mosesyyoung@gmail.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/eal/freebsd/eal.c | 2 +-
lib/eal/linux/eal.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index aa9f85c647..3da8dec76a 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -906,8 +906,8 @@ rte_eal_cleanup(void)
struct internal_config *internal_conf =
eal_get_internal_configuration();
rte_service_finalize();
- rte_mp_channel_cleanup();
eal_bus_cleanup();
+ rte_mp_channel_cleanup();
rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index 9f9a03bcf7..de30e521bd 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1378,11 +1378,11 @@ rte_eal_cleanup(void)
rte_memseg_walk(mark_freeable, NULL);
rte_service_finalize();
+ eal_bus_cleanup();
#ifdef VFIO_PRESENT
vfio_mp_sync_cleanup();
#endif
rte_mp_channel_cleanup();
- eal_bus_cleanup();
rte_eal_alarm_cleanup();
rte_trace_save();
eal_trace_fini();
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.944878334 +0000
+++ 0029-eal-fix-MP-socket-cleanup.patch 2025-10-27 15:54:34.803949751 +0000
@@ -1 +1 @@
-From 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f Mon Sep 17 00:00:00 2001
+From 039a4ac228e9a844bcc8bf3e078684f04078e3e5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4bc53f8f0d64ceba6c4077aa31229f1e38e0d30f ]
+
@@ -36 +37,0 @@
-Cc: stable@dpdk.org
@@ -46 +47 @@
-index 0f957919d3..1804b4cfd2 100644
+index aa9f85c647..3da8dec76a 100644
@@ -49 +50 @@
-@@ -909,8 +909,8 @@ rte_eal_cleanup(void)
+@@ -906,8 +906,8 @@ rte_eal_cleanup(void)
@@ -60 +61 @@
-index 3a0c9c9db6..caf22033d0 100644
+index 9f9a03bcf7..de30e521bd 100644
@@ -63 +64 @@
-@@ -1333,11 +1333,11 @@ rte_eal_cleanup(void)
+@@ -1378,11 +1378,11 @@ rte_eal_cleanup(void)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'crypto/ipsec_mb: fix QP release in secondary' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (27 preceding siblings ...)
2025-10-27 16:19 ` patch 'eal: fix MP socket cleanup' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'efd: fix AVX2 support' " luca.boccassi
` (48 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Yang Ming; +Cc: Anatoly Burakov, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/56657366e67ba64b46ed9f65a9db5da54e2c0506
the
Thanks.
Luca Boccassi
---
From 56657366e67ba64b46ed9f65a9db5da54e2c0506 Mon Sep 17 00:00:00 2001
From: Yang Ming <mosesyyoung@gmail.com>
Date: Sat, 19 Jul 2025 23:32:26 +0800
Subject: [PATCH] crypto/ipsec_mb: fix QP release in secondary
[ upstream commit 0e03ab647d07cd985a7cac36cefff5195cc3a07d ]
When a secondary process tries to release a queue pair (QP) that
does not belong to it, error logs occur:
CRYPTODEV: ipsec_mb_ipc_request() line 373: Unable to release
qp_id=0
EAL: Message data is too long
EAL: Fail to handle message: ipsec_mb_mp_msg
EAL: Fail to recv reply for request /tmp/dpdk/l2hi/mp_socket:
ipsec_mb_mp_msg
From the code path, cryptodev->data is allocated in the primary
via rte_cryptodev_data_alloc() (inside
ipsec_mb_create-->rte_cryptodev_pmd_create
-->rte_cryptodev_pmd_allocate-->rte_cryptodev_data_alloc).
This memory is placed in a shared memzone
(rte_cryptodev_data_%u), so both primary and secondary processes
reference the same cryptodev->data, including nb_queue_pairs and
queue_pairs[].
As a result, when the secondary process exits, ipsec_mb_remove()
is called (inside
rte_eal_cleanup-->eal_bus_cleanup-->vdev_cleanup
-->rte_vdev_driver-->ipsec_mb_remove-->ipsec_mb_qp_release
-->ipsec_mb_secondary_qp_op) and it loops through all queue
pairs using:
for (qp_id = 0; qp_id < cryptodev->data->nb_queue_pairs; qp_id++)
ipsec_mb_qp_release(cryptodev, qp_id);
This causes the secondary to attempt releasing queue pairs it
doesn't own, triggering the error logs mentioned above.
This patch ensures that a secondary process only frees a QP if
it actually owns it, preventing conflicts and resolving the
issue.
Fixes: b35848bc01f6 ("crypto/ipsec_mb: add multi-process IPC request handler")
Signed-off-by: Yang Ming <mosesyyoung@gmail.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
drivers/crypto/ipsec_mb/ipsec_mb_ops.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
index 2a5599b7d8..ccfda2048a 100644
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c
@@ -139,6 +139,7 @@ int
ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
{
struct ipsec_mb_qp *qp = dev->data->queue_pairs[qp_id];
+ uint16_t process_id = (uint16_t)getpid();
if (!qp)
return 0;
@@ -158,8 +159,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
rte_free(qp);
dev->data->queue_pairs[qp_id] = NULL;
} else { /* secondary process */
- return ipsec_mb_secondary_qp_op(dev->data->dev_id, qp_id,
- NULL, 0, RTE_IPSEC_MB_MP_REQ_QP_FREE);
+ if (qp->qp_used_by_pid == process_id)
+ return ipsec_mb_secondary_qp_op(dev->data->dev_id,
+ qp_id, NULL, 0,
+ RTE_IPSEC_MB_MP_REQ_QP_FREE);
}
return 0;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:35.979605120 +0000
+++ 0030-crypto-ipsec_mb-fix-QP-release-in-secondary.patch 2025-10-27 15:54:34.803949751 +0000
@@ -1 +1 @@
-From 0e03ab647d07cd985a7cac36cefff5195cc3a07d Mon Sep 17 00:00:00 2001
+From 56657366e67ba64b46ed9f65a9db5da54e2c0506 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 0e03ab647d07cd985a7cac36cefff5195cc3a07d ]
+
@@ -41 +42,0 @@
-Cc: stable@dpdk.org
@@ -50 +51 @@
-index 910efb1a97..50ee140ccd 100644
+index 2a5599b7d8..ccfda2048a 100644
@@ -53 +54 @@
-@@ -138,6 +138,7 @@ int
+@@ -139,6 +139,7 @@ int
@@ -61 +62 @@
-@@ -152,8 +153,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
+@@ -158,8 +159,10 @@ ipsec_mb_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'efd: fix AVX2 support' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (28 preceding siblings ...)
2025-10-27 16:19 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'common/cnxk: fix async event handling' " luca.boccassi
` (47 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/3828456c69edc5e7de5ac5744098c1afbf14977f
Thanks.
Luca Boccassi
---
From 3828456c69edc5e7de5ac5744098c1afbf14977f Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Thu, 18 Sep 2025 08:36:14 +0200
Subject: [PATCH] efd: fix AVX2 support
[ upstream commit c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 ]
When switching to Meson build, the compilation check on CC_SUPPORT_AVX2
became obsolete, thus the case EFD_LOOKUP_AVX2 became dead.
The function efd_lookup_internal_avx2() was never called,
and its header include rte_efd_x86.h has been removed later.
EFD_LOOKUP_AVX2 is chosen at runtime after checking AVX2 availability,
so the obsolete build-time check for AVX2 can be simply removed,
and the missing include added back.
Fixes: 5b9656b157d3 ("lib: build with meson")
Fixes: 30a1de105a5f ("lib: remove unneeded header includes")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/efd/rte_efd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c
index 686a137757..d844def87f 100644
--- a/lib/efd/rte_efd.c
+++ b/lib/efd/rte_efd.c
@@ -24,6 +24,7 @@
#include "rte_efd.h"
#if defined(RTE_ARCH_X86)
+#include "rte_efd_x86.h"
#elif defined(RTE_ARCH_ARM64)
#include "rte_efd_arm64.h"
#endif
@@ -1268,7 +1269,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
switch (lookup_fn) {
-#if defined(RTE_ARCH_X86) && defined(CC_SUPPORT_AVX2)
+#if defined(RTE_ARCH_X86)
case EFD_LOOKUP_AVX2:
return efd_lookup_internal_avx2(group->hash_idx,
group->lookup_table,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.012939341 +0000
+++ 0031-efd-fix-AVX2-support.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 Mon Sep 17 00:00:00 2001
+From 3828456c69edc5e7de5ac5744098c1afbf14977f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c367b9a07c55025eabe1dd6903f4b0f5c4c5d362 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index b0e44e5c51..ebf1e0655f 100644
+index 686a137757..d844def87f 100644
@@ -29 +30 @@
-@@ -26,6 +26,7 @@
+@@ -24,6 +24,7 @@
@@ -37 +38 @@
-@@ -1279,7 +1280,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
+@@ -1268,7 +1269,7 @@ efd_lookup_internal(const struct efd_online_group_entry * const group,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'common/cnxk: fix async event handling' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (29 preceding siblings ...)
2025-10-27 16:19 ` patch 'efd: fix AVX2 support' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'doc: fix feature list of ice driver' " luca.boccassi
` (46 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Tomasz Duszynski; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/dd1205b7ee1121c38c492748efb34c7e3f4b2960
Thanks.
Luca Boccassi
---
From dd1205b7ee1121c38c492748efb34c7e3f4b2960 Mon Sep 17 00:00:00 2001
From: Tomasz Duszynski <tduszynski@marvell.com>
Date: Wed, 30 Jul 2025 04:51:09 +0200
Subject: [PATCH] common/cnxk: fix async event handling
[ upstream commit 21b631cd0d3670e375151185d74cd5a03888e2bd ]
If async event shows up unexpectedly ack it and continue
until expected event is received.
Fixes: 857721d62d42 ("common/cnxk: add BPHY communication with atf")
Signed-off-by: Tomasz Duszynski <tduszynski@marvell.com>
---
drivers/common/cnxk/roc_bphy_cgx.c | 56 +++++++++++-------------------
1 file changed, 21 insertions(+), 35 deletions(-)
diff --git a/drivers/common/cnxk/roc_bphy_cgx.c b/drivers/common/cnxk/roc_bphy_cgx.c
index 3d674dbe84..befd69430b 100644
--- a/drivers/common/cnxk/roc_bphy_cgx.c
+++ b/drivers/common/cnxk/roc_bphy_cgx.c
@@ -65,8 +65,7 @@ roc_bphy_cgx_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
}
static int
-roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t *scr0)
+roc_bphy_cgx_wait_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0, bool ack)
{
int tries = 5000;
uint64_t scr1;
@@ -75,37 +74,18 @@ roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
*scr0 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH0);
scr1 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH1);
- if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0) == 0)
- break;
-
/* clear async events if any */
- if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) ==
- ETH_EVT_ASYNC &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0))
+ if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) == ETH_EVT_ASYNC &&
+ FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0)) {
roc_bphy_cgx_ack(roc_cgx, lmac, scr0);
-
- plt_delay_ms(1);
- } while (--tries);
-
- return tries ? 0 : -ETIMEDOUT;
-}
-
-static int
-roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t *scr0)
-{
- int tries = 5000;
- uint64_t scr1;
-
- do {
- *scr0 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH0);
- scr1 = roc_bphy_cgx_read(roc_cgx, lmac, CGX_CMRX_SCRATCH1);
+ goto skip;
+ }
if (FIELD_GET(SCR1_OWN_STATUS, scr1) == ETH_OWN_NON_SECURE_SW &&
- FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0))
+ FIELD_GET(SCR0_ETH_EVT_STS_S_ACK, *scr0) == ack)
break;
+skip:
plt_delay_ms(1);
} while (--tries);
@@ -113,8 +93,20 @@ roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
}
static int
-roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
- uint64_t scr1, uint64_t *scr0)
+roc_bphy_cgx_wait_for_ownership(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0)
+{
+ return roc_bphy_cgx_wait_ack(roc_cgx, lmac, scr0, false);
+}
+
+static int
+roc_bphy_cgx_wait_for_ack(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t *scr0)
+{
+ return roc_bphy_cgx_wait_ack(roc_cgx, lmac, scr0, true);
+}
+
+static int
+roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, uint64_t scr1,
+ uint64_t *scr0)
{
uint8_t cmd_id = FIELD_GET(SCR1_ETH_CMD_ID, scr1);
int ret;
@@ -142,12 +134,6 @@ roc_bphy_cgx_intf_req(struct roc_bphy_cgx *roc_cgx, unsigned int lmac,
if (cmd_id == ETH_CMD_INTF_SHUTDOWN)
goto out;
- if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) != ETH_EVT_CMD_RESP) {
- plt_err("received async event instead of cmd resp event");
- ret = -EIO;
- goto out;
- }
-
if (FIELD_GET(SCR0_ETH_EVT_STS_S_ID, *scr0) != cmd_id) {
plt_err("received resp for cmd %d expected for cmd %d",
(int)FIELD_GET(SCR0_ETH_EVT_STS_S_ID, *scr0), cmd_id);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.047626743 +0000
+++ 0032-common-cnxk-fix-async-event-handling.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From 21b631cd0d3670e375151185d74cd5a03888e2bd Mon Sep 17 00:00:00 2001
+From dd1205b7ee1121c38c492748efb34c7e3f4b2960 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 21b631cd0d3670e375151185d74cd5a03888e2bd ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index db70bafd9b..1de5195657 100644
+index 3d674dbe84..befd69430b 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'doc: fix feature list of ice driver' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (30 preceding siblings ...)
2025-10-27 16:19 ` patch 'common/cnxk: fix async event handling' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'doc: fix feature list of iavf " luca.boccassi
` (45 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/d56b79d1c9fbcf460d81441404cba6768fea9a22
Thanks.
Luca Boccassi
---
From d56b79d1c9fbcf460d81441404cba6768fea9a22 Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Tue, 16 Sep 2025 14:21:06 +0000
Subject: [PATCH] doc: fix feature list of ice driver
[ upstream commit 62b6b612ea272d334ca8b856f1055c8d8fcb1072 ]
The free tx mbuf on demand feature has been supported since commit
ab7cfe1fe3d7 ("net/ice: cleanup Tx buffers"). Update the list of
supported features to reflect this.
Fixes: ab7cfe1fe3d7 ("net/ice: cleanup Tx buffers")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/nics/features/ice.ini | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini
index 62869ef0a0..f203205074 100644
--- a/doc/guides/nics/features/ice.ini
+++ b/doc/guides/nics/features/ice.ini
@@ -13,6 +13,7 @@ Link status = Y
Link status event = Y
Rx interrupt = Y
Fast mbuf free = P
+Free Tx mbuf on demand = Y
Queue start/stop = Y
Burst mode info = Y
Power mgmt address monitor = Y
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.081713894 +0000
+++ 0033-doc-fix-feature-list-of-ice-driver.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From 62b6b612ea272d334ca8b856f1055c8d8fcb1072 Mon Sep 17 00:00:00 2001
+From d56b79d1c9fbcf460d81441404cba6768fea9a22 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 62b6b612ea272d334ca8b856f1055c8d8fcb1072 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 9c8569740a..2703493514 100644
+index 62869ef0a0..f203205074 100644
@@ -23,2 +24,2 @@
-@@ -14,6 +14,7 @@ Link status event = Y
- FEC = Y
+@@ -13,6 +13,7 @@ Link status = Y
+ Link status event = Y
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'doc: fix feature list of iavf driver' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (31 preceding siblings ...)
2025-10-27 16:19 ` patch 'doc: fix feature list of ice driver' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'baseband/acc: fix exported header' " luca.boccassi
` (44 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Ciara Loftus; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/38d09921b58efb4133642409ee6cda8b949b142b
Thanks.
Luca Boccassi
---
From 38d09921b58efb4133642409ee6cda8b949b142b Mon Sep 17 00:00:00 2001
From: Ciara Loftus <ciara.loftus@intel.com>
Date: Tue, 16 Sep 2025 14:21:08 +0000
Subject: [PATCH] doc: fix feature list of iavf driver
[ upstream commit f3878b615e69a12087a6c5d212723478cfc79c31 ]
The iavf PMD does not report the speed capabilities that the device is
capable of in the speed_capa field of the rte_eth_dev_info struct. The
documentation incorrectly stated this feature as supported. Fix this.
The free tx mbuf on demand feature has been supported since commit
86e44244f95c ("net/iavf: cleanup Tx buffers"). Update the list of
supported features to reflect this.
The burst mode info feature has been supported since commit 0d5a856f5be9
("net/iavf: support Rx/Tx burst mode info"). Update the list of
supported features to reflect this.
The extended statistics feature has been implemented since commit
d38a06bf4367 ("net/iavf: add extended stats"). Update the list of
supported features to reflect this.
Fixes: 48de41ca11f0 ("net/avf: enable link status update")
Fixes: 86e44244f95c ("net/iavf: cleanup Tx buffers")
Fixes: 0d5a856f5be9 ("net/iavf: support Rx/Tx burst mode info")
Fixes: d38a06bf4367 ("net/iavf: add extended stats")
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/nics/features/iavf.ini | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini
index c7f8ace499..87ef43abe1 100644
--- a/doc/guides/nics/features/iavf.ini
+++ b/doc/guides/nics/features/iavf.ini
@@ -4,10 +4,11 @@
; Refer to default.ini for the full list of available PMD features.
;
[Features]
-Speed capabilities = Y
Link status = Y
Rx interrupt = Y
+Free Tx mbuf on demand = Y
Queue start/stop = Y
+Burst mode info = Y
Power mgmt address monitor = Y
MTU update = Y
Scattered Rx = Y
@@ -33,6 +34,7 @@ Packet type parsing = Y
Rx descriptor status = Y
Tx descriptor status = Y
Basic stats = Y
+Extended stats = Y
Multiprocess aware = Y
FreeBSD = Y
Linux = Y
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.114723999 +0000
+++ 0034-doc-fix-feature-list-of-iavf-driver.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From f3878b615e69a12087a6c5d212723478cfc79c31 Mon Sep 17 00:00:00 2001
+From 38d09921b58efb4133642409ee6cda8b949b142b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f3878b615e69a12087a6c5d212723478cfc79c31 ]
+
@@ -26 +27,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 61c4742197..7695e3ff7c 100644
+index c7f8ace499..87ef43abe1 100644
@@ -38,2 +39,2 @@
-@@ -7,12 +7,13 @@
- ; is selected.
+@@ -4,10 +4,11 @@
+ ; Refer to default.ini for the full list of available PMD features.
@@ -47,2 +47,0 @@
- Runtime Rx queue setup = Y
- Runtime Tx queue setup = Y
@@ -53 +52 @@
-@@ -39,6 +40,7 @@ Packet type parsing = Y
+@@ -33,6 +34,7 @@ Packet type parsing = Y
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'baseband/acc: fix exported header' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (32 preceding siblings ...)
2025-10-27 16:19 ` patch 'doc: fix feature list of iavf " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'gpudev: fix driver header for Windows' " luca.boccassi
` (43 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/0d9135bf79bccaab0edc4c79a1d4033bdf1d94c8
Thanks.
Luca Boccassi
---
From 0d9135bf79bccaab0edc4c79a1d4033bdf1d94c8 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 20 Nov 2024 15:24:31 +0100
Subject: [PATCH] baseband/acc: fix exported header
[ upstream commit 611d08f11d42dfafbbf954798ea9c917f7d4ef89 ]
rte_acc_cfg.h relies on rte_acc_common_cfg.h.
Fixes: 32e8b7ea35dd ("baseband/acc100: refactor to segregate common code")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/baseband/acc/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/baseband/acc/meson.build b/drivers/baseband/acc/meson.build
index 1cbb06d107..bdfc218c56 100644
--- a/drivers/baseband/acc/meson.build
+++ b/drivers/baseband/acc/meson.build
@@ -5,4 +5,4 @@ deps += ['bbdev', 'bus_pci']
sources = files('acc_common.c', 'rte_acc100_pmd.c', 'rte_acc200_pmd.c')
-headers = files('rte_acc_cfg.h')
+headers = files('rte_acc_cfg.h', 'rte_acc_common_cfg.h')
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.149113905 +0000
+++ 0035-baseband-acc-fix-exported-header.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From 611d08f11d42dfafbbf954798ea9c917f7d4ef89 Mon Sep 17 00:00:00 2001
+From 0d9135bf79bccaab0edc4c79a1d4033bdf1d94c8 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 611d08f11d42dfafbbf954798ea9c917f7d4ef89 ]
+
@@ -17 +19 @@
-index 4e6d715d7c..9278897f76 100644
+index 1cbb06d107..bdfc218c56 100644
@@ -20 +22 @@
-@@ -46,4 +46,4 @@ deps += ['bus_pci']
+@@ -5,4 +5,4 @@ deps += ['bbdev', 'bus_pci']
@@ -22 +24 @@
- sources = files('acc_common.c', 'rte_acc100_pmd.c', 'rte_vrb_pmd.c')
+ sources = files('acc_common.c', 'rte_acc100_pmd.c', 'rte_acc200_pmd.c')
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'gpudev: fix driver header for Windows' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (33 preceding siblings ...)
2025-10-27 16:19 ` patch 'baseband/acc: fix exported header' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'drivers: fix some exported headers' " luca.boccassi
` (42 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/eaf49a44e8756ecb42b4bcd4f53f1926ea3b6c0e
Thanks.
Luca Boccassi
---
From eaf49a44e8756ecb42b4bcd4f53f1926ea3b6c0e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 24 Sep 2025 18:42:49 +0200
Subject: [PATCH] gpudev: fix driver header for Windows
[ upstream commit bda83ec0bb0c1bfba33843059a244181b46b9907 ]
Use rte_os.h and its RTE_TAILQ_HEAD definition compatible with BSD
sys/queue.h
Fixes: 18cb07563165 ("gpudev: add event notification")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/gpudev/gpudev.c | 1 +
lib/gpudev/gpudev_driver.h | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
index 8f12abef23..2e878d1cc9 100644
--- a/lib/gpudev/gpudev.c
+++ b/lib/gpudev/gpudev.c
@@ -3,6 +3,7 @@
*/
#include <stdlib.h>
+#include <sys/queue.h>
#include <rte_eal.h>
#include <rte_tailq.h>
diff --git a/lib/gpudev/gpudev_driver.h b/lib/gpudev/gpudev_driver.h
index 42898c7c8b..d11e5be559 100644
--- a/lib/gpudev/gpudev_driver.h
+++ b/lib/gpudev/gpudev_driver.h
@@ -12,11 +12,11 @@
#define RTE_GPUDEV_DRIVER_H
#include <stdint.h>
-#include <sys/queue.h>
#include <dev_driver.h>
#include <rte_compat.h>
+#include <rte_os.h>
#include "rte_gpudev.h"
#ifdef __cplusplus
@@ -80,7 +80,7 @@ struct rte_gpu {
/* Driver functions. */
struct rte_gpu_ops ops;
/* Event callback list. */
- TAILQ_HEAD(rte_gpu_callback_list, rte_gpu_callback) callbacks;
+ RTE_TAILQ_HEAD(rte_gpu_callback_list, rte_gpu_callback) callbacks;
/* Current state (used or not) in the running process. */
enum rte_gpu_state process_state; /* Updated by this library. */
/* Driver-specific private data for the running process. */
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.182110725 +0000
+++ 0036-gpudev-fix-driver-header-for-Windows.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From bda83ec0bb0c1bfba33843059a244181b46b9907 Mon Sep 17 00:00:00 2001
+From eaf49a44e8756ecb42b4bcd4f53f1926ea3b6c0e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bda83ec0bb0c1bfba33843059a244181b46b9907 ]
+
@@ -19 +21 @@
-index 0473d9ffb3..4a2335834c 100644
+index 8f12abef23..2e878d1cc9 100644
@@ -28 +29,0 @@
- #include <eal_export.h>
@@ -29,0 +31 @@
+ #include <rte_tailq.h>
@@ -31 +33 @@
-index 37b6ae3149..b7621f6e5a 100644
+index 42898c7c8b..d11e5be559 100644
@@ -47 +49 @@
-@@ -80,7 +80,7 @@ struct __rte_cache_aligned rte_gpu {
+@@ -80,7 +80,7 @@ struct rte_gpu {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'drivers: fix some exported headers' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (34 preceding siblings ...)
2025-10-27 16:19 ` patch 'gpudev: fix driver header for Windows' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'test/debug: fix crash with mlx5 devices' " luca.boccassi
` (41 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/cad63111eb9885927d6b4b9182302c701a938e1e
Thanks.
Luca Boccassi
---
From cad63111eb9885927d6b4b9182302c701a938e1e Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Wed, 20 Nov 2024 11:45:09 +0100
Subject: [PATCH] drivers: fix some exported headers
[ upstream commit cae7430fcc712623ebbf52b0e8f232788a5e4679 ]
Those headers could not be included individually as they were not
including their dependencies, were subject to some build warnings,
or were not compiling on Windows.
Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Fixes: 5b2a1a02dcaf ("crypto/cnxk: fix experimental version for PMD API")
Fixes: e5abbeeeefa5 ("crypto/cnxk: add PMD API for getting CPTR")
Fixes: 3ca607402c4d ("crypto/cnxk: add PMD API to flush CTX")
Fixes: 8c3495f5d2dd ("net/dpaa: support loopback API")
Fixes: 12b435bf8f2f ("net/iavf: support flex desc metadata extraction")
Fixes: 23f627e0ed28 ("net/mlx5: add flow sync API")
Fixes: f5177bdc8b76 ("net/mlx5: add GENEVE TLV options parser API")
Fixes: 53c71586c789 ("raw/dpaa2_cmdif: support enqueue/dequeue operations")
Fixes: c39d1e082a4b ("raw/ntb: setup queues")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/bus/vmbus/rte_vmbus_reg.h | 5 +++++
drivers/net/dpaa/rte_pmd_dpaa.h | 2 ++
drivers/net/iavf/rte_pmd_iavf.h | 6 ++++++
drivers/net/mlx5/rte_pmd_mlx5.h | 3 +++
drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h | 2 ++
drivers/raw/ntb/rte_pmd_ntb.h | 2 ++
6 files changed, 20 insertions(+)
diff --git a/drivers/bus/vmbus/rte_vmbus_reg.h b/drivers/bus/vmbus/rte_vmbus_reg.h
index 6257774f29..a40f437951 100644
--- a/drivers/bus/vmbus/rte_vmbus_reg.h
+++ b/drivers/bus/vmbus/rte_vmbus_reg.h
@@ -6,6 +6,11 @@
#ifndef _VMBUS_REG_H_
#define _VMBUS_REG_H_
+#include <stdint.h>
+
+#include <rte_common.h>
+#include <rte_uuid.h>
+
/*
* Hyper-V SynIC message format.
*/
diff --git a/drivers/net/dpaa/rte_pmd_dpaa.h b/drivers/net/dpaa/rte_pmd_dpaa.h
index ec45633ba2..0a57e2097a 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa.h
+++ b/drivers/net/dpaa/rte_pmd_dpaa.h
@@ -5,6 +5,8 @@
#ifndef _PMD_DPAA_H_
#define _PMD_DPAA_H_
+#include <stdint.h>
+
/**
* @file rte_pmd_dpaa.h
*
diff --git a/drivers/net/iavf/rte_pmd_iavf.h b/drivers/net/iavf/rte_pmd_iavf.h
index 56d453fc4c..04b86a5dd7 100644
--- a/drivers/net/iavf/rte_pmd_iavf.h
+++ b/drivers/net/iavf/rte_pmd_iavf.h
@@ -15,6 +15,7 @@
*/
#include <stdio.h>
+
#include <rte_compat.h>
#include <rte_mbuf.h>
#include <rte_mbuf_dyn.h>
@@ -184,6 +185,7 @@ __rte_experimental
static inline void
rte_pmd_ifd_dump_proto_xtr_metadata(struct rte_mbuf *m)
{
+#ifdef ALLOW_EXPERIMENTAL_API
union rte_pmd_ifd_proto_xtr_metadata data;
if (!rte_pmd_ifd_dynf_proto_xtr_metadata_avail())
@@ -243,6 +245,10 @@ rte_pmd_ifd_dump_proto_xtr_metadata(struct rte_mbuf *m)
else if (m->ol_flags & RTE_IAVF_PKT_RX_DYNF_PROTO_XTR_IP_OFFSET)
printf(" - Flexible descriptor's Extraction: ip_offset=%u",
data.ip_ofs);
+#else
+ RTE_SET_USED(m);
+ RTE_VERIFY(false);
+#endif
}
#ifdef __cplusplus
diff --git a/drivers/net/mlx5/rte_pmd_mlx5.h b/drivers/net/mlx5/rte_pmd_mlx5.h
index b71a291256..76c8ad73ca 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5.h
+++ b/drivers/net/mlx5/rte_pmd_mlx5.h
@@ -5,6 +5,9 @@
#ifndef RTE_PMD_PRIVATE_MLX5_H_
#define RTE_PMD_PRIVATE_MLX5_H_
+#include <stdint.h>
+
+#include <rte_byteorder.h>
#include <rte_compat.h>
/**
diff --git a/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h b/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
index 483b66eaae..7731fc6363 100644
--- a/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
+++ b/drivers/raw/dpaa2_cmdif/rte_pmd_dpaa2_cmdif.h
@@ -12,6 +12,8 @@
*
*/
+#include <stdint.h>
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/drivers/raw/ntb/rte_pmd_ntb.h b/drivers/raw/ntb/rte_pmd_ntb.h
index 6591ce7931..76da3be026 100644
--- a/drivers/raw/ntb/rte_pmd_ntb.h
+++ b/drivers/raw/ntb/rte_pmd_ntb.h
@@ -5,6 +5,8 @@
#ifndef _RTE_PMD_NTB_H_
#define _RTE_PMD_NTB_H_
+#include <stdint.h>
+
/* App needs to set/get these attrs */
#define NTB_QUEUE_SZ_NAME "queue_size"
#define NTB_QUEUE_NUM_NAME "queue_num"
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.214915891 +0000
+++ 0037-drivers-fix-some-exported-headers.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From cae7430fcc712623ebbf52b0e8f232788a5e4679 Mon Sep 17 00:00:00 2001
+From cad63111eb9885927d6b4b9182302c701a938e1e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit cae7430fcc712623ebbf52b0e8f232788a5e4679 ]
+
@@ -24,2 +26 @@
- drivers/bus/vmbus/rte_vmbus_reg.h | 6 ++++++
- drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h | 2 ++
+ drivers/bus/vmbus/rte_vmbus_reg.h | 5 +++++
@@ -27 +28 @@
- drivers/net/intel/iavf/rte_pmd_iavf.h | 6 ++++++
+ drivers/net/iavf/rte_pmd_iavf.h | 6 ++++++
@@ -31 +32 @@
- 7 files changed, 23 insertions(+)
+ 6 files changed, 20 insertions(+)
@@ -34 +35 @@
-index fb7e3043ec..6370a07f95 100644
+index 6257774f29..a40f437951 100644
@@ -37 +38 @@
-@@ -6,6 +6,12 @@
+@@ -6,6 +6,11 @@
@@ -44 +44,0 @@
-+#include <rte_stdatomic.h>
@@ -50,15 +49,0 @@
-diff --git a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-index 46861ab2cf..70c019e94c 100644
---- a/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-+++ b/drivers/crypto/cnxk/rte_pmd_cnxk_crypto.h
-@@ -11,8 +11,10 @@
- #ifndef _PMD_CNXK_CRYPTO_H_
- #define _PMD_CNXK_CRYPTO_H_
-
-+#include <stdbool.h>
- #include <stdint.h>
-
-+#include <rte_compat.h>
- #include <rte_crypto.h>
- #include <rte_security.h>
-
@@ -78 +63 @@
-diff --git a/drivers/net/intel/iavf/rte_pmd_iavf.h b/drivers/net/intel/iavf/rte_pmd_iavf.h
+diff --git a/drivers/net/iavf/rte_pmd_iavf.h b/drivers/net/iavf/rte_pmd_iavf.h
@@ -80,2 +65,2 @@
---- a/drivers/net/intel/iavf/rte_pmd_iavf.h
-+++ b/drivers/net/intel/iavf/rte_pmd_iavf.h
+--- a/drivers/net/iavf/rte_pmd_iavf.h
++++ b/drivers/net/iavf/rte_pmd_iavf.h
@@ -110 +95 @@
-index fdd2f65888..f2c6aebe0b 100644
+index b71a291256..76c8ad73ca 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'test/debug: fix crash with mlx5 devices' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (35 preceding siblings ...)
2025-10-27 16:19 ` patch 'drivers: fix some exported headers' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'bus/pci: fix build with MinGW 13' " luca.boccassi
` (40 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: David Marchand; +Cc: Bruce Richardson, Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/ec185479ebb5c833bca7da93731fed2760b57ba7
Thanks.
Luca Boccassi
---
From ec185479ebb5c833bca7da93731fed2760b57ba7 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Thu, 2 Oct 2025 17:36:50 +0200
Subject: [PATCH] test/debug: fix crash with mlx5 devices
[ upstream commit 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 ]
Running rte_exit() in a forked process means that shared memory will be
released by the child process before the parent process does the same.
This issue has been seen recently when some GHA virtual machine (with
some mlx5 devices) runs the debug_autotest unit test.
Instead, run rte_panic() and rte_exit() from a new DPDK process spawned
like for other recursive unit tests.
Bugzilla ID: 1796
Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
app/test/process.h | 2 +-
app/test/test.c | 2 +
app/test/test.h | 2 +
app/test/test_debug.c | 92 ++++++++++++++++++++++++++++++-------------
4 files changed, 69 insertions(+), 29 deletions(-)
diff --git a/app/test/process.h b/app/test/process.h
index e8e7e5ab60..610d657c2e 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -203,7 +203,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
* tests attempting to use this function on FreeBSD.
*/
#ifdef RTE_EXEC_ENV_LINUX
-static char *
+static inline char *
get_current_prefix(char *prefix, int size)
{
char path[PATH_MAX] = {0};
diff --git a/app/test/test.c b/app/test/test.c
index 5cf9f51c28..02cdf44fc8 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -82,6 +82,8 @@ do_recursive_call(void)
{ "test_memory_flags", no_action },
{ "test_file_prefix", no_action },
{ "test_no_huge_flag", no_action },
+ { "test_panic", test_panic },
+ { "test_exit", test_exit },
#ifdef RTE_LIB_TIMER
#ifndef RTE_EXEC_ENV_WINDOWS
{ "timer_secondary_spawn_wait", test_timer_secondary },
diff --git a/app/test/test.h b/app/test/test.h
index 6a4fa0b1d7..4142c22c1d 100644
--- a/app/test/test.h
+++ b/app/test/test.h
@@ -173,7 +173,9 @@ extern const char *prgname;
int commands_init(void);
int command_valid(const char *cmd);
+int test_exit(void);
int test_mp_secondary(void);
+int test_panic(void);
int test_timer_secondary(void);
int test_set_rxtx_conf(cmdline_fixed_string_t mode);
diff --git a/app/test/test_debug.c b/app/test/test_debug.c
index 2704f5b927..f016e2f8f7 100644
--- a/app/test/test_debug.c
+++ b/app/test/test_debug.c
@@ -8,6 +8,18 @@
#include <stdint.h>
#ifdef RTE_EXEC_ENV_WINDOWS
+int
+test_panic(void)
+{
+ printf("debug not supported on Windows, skipping test\n");
+ return TEST_SKIPPED;
+}
+int
+test_exit(void)
+{
+ printf("debug not supported on Windows, skipping test\n");
+ return TEST_SKIPPED;
+}
static int
test_debug(void)
{
@@ -25,34 +37,31 @@ test_debug(void)
#include <rte_debug.h>
#include <rte_common.h>
#include <rte_eal.h>
-#include <rte_service_component.h>
+#include <rte_lcore.h>
+
+#include "process.h"
/*
* Debug test
* ==========
*/
-/* use fork() to test rte_panic() */
-static int
+static const char *test_args[7];
+
+int
test_panic(void)
{
- int pid;
int status;
- pid = fork();
-
- if (pid == 0) {
+ if (getenv(RECURSIVE_ENV_VAR) != NULL) {
struct rlimit rl;
/* No need to generate a coredump when panicking. */
rl.rlim_cur = rl.rlim_max = 0;
setrlimit(RLIMIT_CORE, &rl);
rte_panic("Test Debug\n");
- } else if (pid < 0) {
- printf("Fork Failed\n");
- return -1;
}
- wait(&status);
+ status = process_dup(test_args, RTE_DIM(test_args), "test_panic");
if(status == 0){
printf("Child process terminated normally!\n");
return -1;
@@ -62,27 +71,16 @@ test_panic(void)
return 0;
}
-/* use fork() to test rte_exit() */
static int
test_exit_val(int exit_val)
{
- int pid;
+ char buf[5];
int status;
- /* manually cleanup EAL memory, as the fork() below would otherwise
- * cause the same hugepages to be free()-ed multiple times.
- */
- rte_service_finalize();
-
- pid = fork();
-
- if (pid == 0)
- rte_exit(exit_val, __func__);
- else if (pid < 0){
- printf("Fork Failed\n");
- return -1;
- }
- wait(&status);
+ sprintf(buf, "%d", exit_val);
+ if (setenv("TEST_DEBUG_EXIT_VAL", buf, 1) == -1)
+ rte_panic("Failed to set exit value in env\n");
+ status = process_dup(test_args, RTE_DIM(test_args), "test_exit");
printf("Child process status: %d\n", status);
if(!WIFEXITED(status) || WEXITSTATUS(status) != (uint8_t)exit_val){
printf("Child process terminated with incorrect status (expected = %d)!\n",
@@ -92,11 +90,22 @@ test_exit_val(int exit_val)
return 0;
}
-static int
+int
test_exit(void)
{
int test_vals[] = { 0, 1, 2, 255, -1 };
unsigned i;
+
+ if (getenv(RECURSIVE_ENV_VAR) != NULL) {
+ int exit_val;
+
+ if (!getenv("TEST_DEBUG_EXIT_VAL"))
+ rte_panic("No exit value set in env\n");
+
+ exit_val = strtol(getenv("TEST_DEBUG_EXIT_VAL"), NULL, 0);
+ rte_exit(exit_val, __func__);
+ }
+
for (i = 0; i < RTE_DIM(test_vals); i++) {
if (test_exit_val(test_vals[i]) < 0)
return -1;
@@ -128,6 +137,33 @@ test_usage(void)
static int
test_debug(void)
{
+#ifdef RTE_EXEC_ENV_FREEBSD
+ /* BSD target doesn't support prefixes at this point, and we also need to
+ * run another primary process here.
+ */
+ const char * prefix = "--no-shconf";
+#else
+ const char * prefix = "--file-prefix=debug";
+#endif
+ char core[10];
+
+ sprintf(core, "%d", rte_get_main_lcore());
+
+ test_args[0] = prgname;
+ test_args[1] = prefix;
+ test_args[2] = "-l";
+ test_args[3] = core;
+
+ if (rte_eal_has_hugepages()) {
+ test_args[4] = "";
+ test_args[5] = "";
+ test_args[6] = "";
+ } else {
+ test_args[4] = "--no-huge";
+ test_args[5] = "-m";
+ test_args[6] = "2048";
+ }
+
rte_dump_stack();
if (test_panic() < 0)
return -1;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.247535374 +0000
+++ 0038-test-debug-fix-crash-with-mlx5-devices.patch 2025-10-27 15:54:34.807949850 +0000
@@ -1 +1 @@
-From 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 Mon Sep 17 00:00:00 2001
+From ec185479ebb5c833bca7da93731fed2760b57ba7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2b403dd8fb37d0ba13723e44ffc7ee2c2795f838 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -29 +30 @@
-index 9fb2bf481c..8e11d0b059 100644
+index e8e7e5ab60..610d657c2e 100644
@@ -42 +43 @@
-index fd653cbbfd..8a4598baee 100644
+index 5cf9f51c28..02cdf44fc8 100644
@@ -45 +46 @@
-@@ -80,6 +80,8 @@ do_recursive_call(void)
+@@ -82,6 +82,8 @@ do_recursive_call(void)
@@ -55 +56 @@
-index ebc4864bf8..c6d7d23313 100644
+index 6a4fa0b1d7..4142c22c1d 100644
@@ -58 +59 @@
-@@ -174,7 +174,9 @@ extern const char *prgname;
+@@ -173,7 +173,9 @@ extern const char *prgname;
@@ -69 +70 @@
-index 8ad6d40fcb..fe5dd5b02d 100644
+index 2704f5b927..f016e2f8f7 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'bus/pci: fix build with MinGW 13' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (36 preceding siblings ...)
2025-10-27 16:19 ` patch 'test/debug: fix crash with mlx5 devices' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: " luca.boccassi
` (39 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/8d68edf4b27bf7314f464d420763c8ca9a548191
Thanks.
Luca Boccassi
---
From 8d68edf4b27bf7314f464d420763c8ca9a548191 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 25 Jul 2025 20:23:59 +0200
Subject: [PATCH] bus/pci: fix build with MinGW 13
[ upstream commit 73e0c90c48ea393b2725263b32515f668f8f4839 ]
After an upgrade to MinGW version 13, some compilation errors appear:
drivers/bus/pci/windows/pci.c:362:58:
error: 'GUID_DEVCLASS_NETUIO' undeclared
drivers/bus/pci/windows/pci_netuio.c:57:39:
error: 'GUID_DEVINTERFACE_NETUIO' undeclared
The cause is MinGW has set NTDDI_VERSION to the highest version
without defining the expected NetUIO constants.
The case MinGW64 is added to define NetUIO constants.
Some comments are improved to better track includes requirements.
Fixes: 6605c7f02e24 ("bus/pci: fix build with Windows SDK >= 10.0.20253")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/bus/pci/windows/pci.c | 11 ++++++-----
drivers/bus/pci/windows/pci_netuio.h | 6 +++---
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
index 5cf05ce1a0..9b065092e6 100644
--- a/drivers/bus/pci/windows/pci.c
+++ b/drivers/bus/pci/windows/pci.c
@@ -11,18 +11,19 @@
#include <rte_memory.h>
#include <rte_bus_pci.h>
-#include "private.h"
-#include "pci_netuio.h"
-
+/* DEVPKEY_Device_Numa_Node should be defined in devpkey.h */
#include <devpkey.h>
-#include <regstr.h>
-
#if defined RTE_TOOLCHAIN_GCC && (__MINGW64_VERSION_MAJOR < 8)
#include <devpropdef.h>
DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 3);
#endif
+#include <regstr.h>
+
+#include "private.h"
+#include "pci_netuio.h"
+
/*
* This code is used to simulate a PCI probe by parsing information in
* the registry hive for PCI devices.
diff --git a/drivers/bus/pci/windows/pci_netuio.h b/drivers/bus/pci/windows/pci_netuio.h
index 2f6c97ea73..8ac914920f 100644
--- a/drivers/bus/pci/windows/pci_netuio.h
+++ b/drivers/bus/pci/windows/pci_netuio.h
@@ -5,12 +5,12 @@
#ifndef _PCI_NETUIO_H_
#define _PCI_NETUIO_H_
-#if !defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE
-/* GUID definition for device class netUIO */
+#if !defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE || defined(__MINGW64__)
+/* GUID_DEVCLASS_NETUIO should be defined in devguid.h */
DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
0xa3, 0x29, 0xf3, 0x22, 0xeb, 0xad, 0xbe, 0x0f);
-/* GUID definition for the netuio device interface */
+/* GUID_DEVINTERFACE_NETUIO should be defined in ndisguid.h */
DEFINE_GUID(GUID_DEVINTERFACE_NETUIO, 0x08336f60, 0x0679, 0x4c6c,
0x85, 0xd2, 0xae, 0x7c, 0xed, 0x65, 0xff, 0xf7);
#endif
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.278965859 +0000
+++ 0039-bus-pci-fix-build-with-MinGW-13.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From 73e0c90c48ea393b2725263b32515f668f8f4839 Mon Sep 17 00:00:00 2001
+From 8d68edf4b27bf7314f464d420763c8ca9a548191 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 73e0c90c48ea393b2725263b32515f668f8f4839 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -31 +32 @@
-index e7e449306e..6f6f368cb7 100644
+index 5cf05ce1a0..9b065092e6 100644
@@ -34 +35 @@
-@@ -12,18 +12,19 @@
+@@ -11,18 +11,19 @@
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix build with MinGW 13' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (37 preceding siblings ...)
2025-10-27 16:19 ` patch 'bus/pci: fix build with MinGW 13' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'dma/hisilicon: fix stop with pending transfers' " luca.boccassi
` (38 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: Dariusz Sosnowski, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/da3d12c6969ce2c5d344f371b5d4f0529634b5f1
Thanks.
Luca Boccassi
---
From da3d12c6969ce2c5d344f371b5d4f0529634b5f1 Mon Sep 17 00:00:00 2001
From: Thomas Monjalon <thomas@monjalon.net>
Date: Fri, 25 Jul 2025 21:28:09 +0200
Subject: [PATCH] net/mlx5: fix build with MinGW 13
[ upstream commit a333afabed3b659ea28a92470565bbd5a98b5b53 ]
After an upgrade to MinGW version 13, compilation breaks:
drivers/net/mlx5/windows/mlx5_ethdev_os.c:285:69: error:
'dev_link.<U1000>.<Uaf00>.link_autoneg' may be used uninitialized
This is because link_autoneg is never set in mlx5_link_update().
It can be set to the previous value (no change).
Also it does not make sense to check this value to return the update status
as it does not change.
Fixes: 6fbd73709ee4 ("net/mlx5: support link update on Windows")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/mlx5/windows/mlx5_ethdev_os.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
index 32a9f599b2..e24ff367af 100644
--- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c
+++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c
@@ -311,11 +311,11 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete)
dev_link.link_duplex = 1;
if (dev->data->dev_link.link_speed != dev_link.link_speed ||
dev->data->dev_link.link_duplex != dev_link.link_duplex ||
- dev->data->dev_link.link_autoneg != dev_link.link_autoneg ||
dev->data->dev_link.link_status != dev_link.link_status)
ret = 1;
else
ret = 0;
+ dev_link.link_autoneg = dev->data->dev_link.link_autoneg;
dev->data->dev_link = dev_link;
return ret;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.310550877 +0000
+++ 0040-net-mlx5-fix-build-with-MinGW-13.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From a333afabed3b659ea28a92470565bbd5a98b5b53 Mon Sep 17 00:00:00 2001
+From da3d12c6969ce2c5d344f371b5d4f0529634b5f1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a333afabed3b659ea28a92470565bbd5a98b5b53 ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'dma/hisilicon: fix stop with pending transfers' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (38 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'test/dma: fix failure condition' " luca.boccassi
` (37 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/ff8d762481472039fe6f3001c83468f7c97bf9e9
Thanks.
Luca Boccassi
---
From ff8d762481472039fe6f3001c83468f7c97bf9e9 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Mon, 13 Oct 2025 17:22:11 +0800
Subject: [PATCH] dma/hisilicon: fix stop with pending transfers
[ upstream commit 8aa458f1c44b9f6e73f75047aca77191dc79746f ]
Stop dmadev may fail if there are pending DMA transfers, we need make
sure there are no pending DMA transfers when stop.
This commit uses following scheme:
1. flag stop proc so that new request will not process.
2. setting drop flag for all descriptor to quick complete.
3. waiting dmadev to complete.
Fixes: 3c5f5f03a047 ("dma/hisilicon: add control path")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
drivers/dma/hisilicon/hisi_dmadev.c | 45 ++++++++++++++++++++++++-----
drivers/dma/hisilicon/hisi_dmadev.h | 2 ++
2 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/drivers/dma/hisilicon/hisi_dmadev.c b/drivers/dma/hisilicon/hisi_dmadev.c
index 4db3b0554c..29aed3e156 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.c
+++ b/drivers/dma/hisilicon/hisi_dmadev.c
@@ -378,6 +378,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
hw->cq_head = 0;
hw->cqs_completed = 0;
hw->cqe_vld = 1;
+ hw->stop_proc = 0;
hw->submitted = 0;
hw->completed = 0;
hw->errors = 0;
@@ -389,12 +390,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
return 0;
}
-static int
-hisi_dma_stop(struct rte_dma_dev *dev)
-{
- return hisi_dma_reset_hw(dev->data->dev_private);
-}
-
static int
hisi_dma_close(struct rte_dma_dev *dev)
{
@@ -456,6 +451,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
return 0;
}
+static int
+hisi_dma_stop(struct rte_dma_dev *dev)
+{
+#define MAX_WAIT_MSEC 10
+ struct hisi_dma_dev *hw = dev->data->dev_private;
+ enum rte_dma_vchan_status status;
+ uint32_t i;
+
+ /* Flag stop processing new requests. */
+ hw->stop_proc = 1;
+ rte_delay_ms(1);
+
+ /* Force set drop flag so that the hardware can quickly complete. */
+ for (i = 0; i <= hw->sq_depth_mask; i++)
+ hw->sqe[i].dw0 |= SQE_DROP_FLAG;
+
+ i = 0;
+ do {
+ hisi_dma_vchan_status(dev, 0, &status);
+ if (status != RTE_DMA_VCHAN_ACTIVE)
+ break;
+ rte_delay_ms(1);
+ } while (i++ < MAX_WAIT_MSEC);
+ if (status == RTE_DMA_VCHAN_ACTIVE) {
+ HISI_DMA_ERR(hw, "dev is still active!");
+ return -EBUSY;
+ }
+
+ return hisi_dma_reset_hw(dev->data->dev_private);
+}
+
static void
hisi_dma_dump_range(struct hisi_dma_dev *hw, FILE *f, uint32_t start,
uint32_t end)
@@ -550,14 +576,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
" revision: 0x%x queue_id: %u ring_size: %u\n"
" ridx: %u cridx: %u\n"
" sq_head: %u sq_tail: %u cq_sq_head: %u\n"
- " cq_head: %u cqs_completed: %u cqe_vld: %u\n"
+ " cq_head: %u cqs_completed: %u cqe_vld: %u stop_proc: %u\n"
" submitted: %" PRIu64 " completed: %" PRIu64 " errors: %"
PRIu64 " qfulls: %" PRIu64 "\n",
hw->revision, hw->queue_id,
hw->sq_depth_mask > 0 ? hw->sq_depth_mask + 1 : 0,
hw->ridx, hw->cridx,
hw->sq_head, hw->sq_tail, hw->cq_sq_head,
- hw->cq_head, hw->cqs_completed, hw->cqe_vld,
+ hw->cq_head, hw->cqs_completed, hw->cqe_vld, hw->stop_proc,
hw->submitted, hw->completed, hw->errors, hw->qfulls);
hisi_dma_dump_queue(hw, f);
hisi_dma_dump_common(hw, f);
@@ -575,6 +601,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
RTE_SET_USED(vchan);
+ if (unlikely(hw->stop_proc > 0))
+ return -EPERM;
+
if (((hw->sq_tail + 1) & hw->sq_depth_mask) == hw->sq_head) {
hw->qfulls++;
return -ENOSPC;
diff --git a/drivers/dma/hisilicon/hisi_dmadev.h b/drivers/dma/hisilicon/hisi_dmadev.h
index a57b5c759a..b9dd172c31 100644
--- a/drivers/dma/hisilicon/hisi_dmadev.h
+++ b/drivers/dma/hisilicon/hisi_dmadev.h
@@ -141,6 +141,7 @@ enum {
struct hisi_dma_sqe {
uint32_t dw0;
+#define SQE_DROP_FLAG BIT(4)
#define SQE_FENCE_FLAG BIT(10)
#define SQE_OPCODE_M2M 0x4
uint32_t dw1;
@@ -211,6 +212,7 @@ struct hisi_dma_dev {
*/
uint16_t cqs_completed;
uint8_t cqe_vld; /**< valid bit for CQE, will change for every round. */
+ volatile uint8_t stop_proc; /**< whether stop processing new requests. */
uint64_t submitted;
uint64_t completed;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.342690329 +0000
+++ 0041-dma-hisilicon-fix-stop-with-pending-transfers.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From 8aa458f1c44b9f6e73f75047aca77191dc79746f Mon Sep 17 00:00:00 2001
+From ff8d762481472039fe6f3001c83468f7c97bf9e9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8aa458f1c44b9f6e73f75047aca77191dc79746f ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index 019c4a8189..7575fb12d9 100644
+index 4db3b0554c..29aed3e156 100644
@@ -27 +28 @@
-@@ -376,6 +376,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
+@@ -378,6 +378,7 @@ hisi_dma_start(struct rte_dma_dev *dev)
@@ -35 +36 @@
-@@ -387,12 +388,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
+@@ -389,12 +390,6 @@ hisi_dma_start(struct rte_dma_dev *dev)
@@ -48 +49 @@
-@@ -454,6 +449,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
+@@ -456,6 +451,37 @@ hisi_dma_vchan_status(const struct rte_dma_dev *dev, uint16_t vchan,
@@ -86 +87 @@
-@@ -548,14 +574,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
+@@ -550,14 +576,14 @@ hisi_dma_dump(const struct rte_dma_dev *dev, FILE *f)
@@ -103 +104 @@
-@@ -573,6 +599,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
+@@ -575,6 +601,9 @@ hisi_dma_copy(void *dev_private, uint16_t vchan,
@@ -114 +115 @@
-index 90301e6b00..aab87c40be 100644
+index a57b5c759a..b9dd172c31 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'test/dma: fix failure condition' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (39 preceding siblings ...)
2025-10-27 16:19 ` patch 'dma/hisilicon: fix stop with pending transfers' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'fib6: fix tbl8 allocation check logic' " luca.boccassi
` (36 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Chengwen Feng; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/7e238136f9b59ffbf69e41f3933319cf7e4772e5
Thanks.
Luca Boccassi
---
From 7e238136f9b59ffbf69e41f3933319cf7e4772e5 Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Wed, 27 Aug 2025 09:28:28 +0800
Subject: [PATCH] test/dma: fix failure condition
[ upstream commit fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e ]
In the runtest() function, it will return error if the test return
value is less than 0.
But the 'copy' and 'error_handling' testcase may return 1 if failed
because its internal use or(||) operation.
This commit fix it by treating non-zero as error in runtest() function.
Fixes: 1b86a66a30c2 ("test/dma: add more comprehensive copy tests")
Fixes: 99d7ec4be237 ("test/dma: add failure handling tests")
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_dmadev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c
index fe62e98af8..f19349dc1c 100644
--- a/app/test/test_dmadev.c
+++ b/app/test/test_dmadev.c
@@ -46,7 +46,7 @@ runtest(const char *printable, int (*test_fn)(int16_t dev_id, uint16_t vchan), i
printf("DMA Dev %d: Running %s Tests %s\n", dev_id, printable,
check_err_stats ? " " : "(errors expected)");
for (i = 0; i < iterations; i++) {
- if (test_fn(dev_id, vchan) < 0)
+ if (test_fn(dev_id, vchan) != 0)
return -1;
rte_dma_stats_get(dev_id, 0, &stats);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.375306255 +0000
+++ 0042-test-dma-fix-failure-condition.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e Mon Sep 17 00:00:00 2001
+From 7e238136f9b59ffbf69e41f3933319cf7e4772e5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit fabb8c0b7e5bef6dfd54a8faabdee59e05d4be7e ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -24 +25 @@
-index e9a62a0ddf..950bb28ec9 100644
+index fe62e98af8..f19349dc1c 100644
@@ -27 +28 @@
-@@ -92,7 +92,7 @@ runtest(const void *args)
+@@ -46,7 +46,7 @@ runtest(const char *printable, int (*test_fn)(int16_t dev_id, uint16_t vchan), i
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'fib6: fix tbl8 allocation check logic' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (40 preceding siblings ...)
2025-10-27 16:19 ` patch 'test/dma: fix failure condition' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'vhost: fix double fetch when dequeue offloading' " luca.boccassi
` (35 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Vladimir Medvedkin; +Cc: Robin Jarry, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/3c7542d852139c75aa9a1432229cdc6217673fff
Thanks.
Luca Boccassi
---
From 3c7542d852139c75aa9a1432229cdc6217673fff Mon Sep 17 00:00:00 2001
From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Date: Tue, 14 Oct 2025 18:17:55 +0000
Subject: [PATCH] fib6: fix tbl8 allocation check logic
[ upstream commit f0db0f659a1f4192a4aca7ce2a298f272aa3af8f ]
Currently if there were 'n' preallocated tbl8 entries only 'n - 1' were
able to be used. Fix the logic allowing to use all preallocated tbl8
entries.
Fixes: c3e12e0f0354 ("fib: add dataplane algorithm for IPv6")
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Tested-by: Robin Jarry <rjarry@redhat.com>
---
lib/fib/trie.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/fib/trie.c b/lib/fib/trie.c
index ca1c2fe3bc..8937ab46dc 100644
--- a/lib/fib/trie.c
+++ b/lib/fib/trie.c
@@ -570,8 +570,7 @@ trie_modify(struct rte_fib6 *fib, const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE],
return 0;
}
- if ((depth > 24) && (dp->rsvd_tbl8s >=
- dp->number_tbl8s - depth_diff))
+ if ((depth > 24) && (dp->rsvd_tbl8s + depth_diff > dp->number_tbl8s))
return -ENOSPC;
node = rte_rib6_insert(rib, ip_masked, depth);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.409653540 +0000
+++ 0043-fib6-fix-tbl8-allocation-check-logic.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From f0db0f659a1f4192a4aca7ce2a298f272aa3af8f Mon Sep 17 00:00:00 2001
+From 3c7542d852139c75aa9a1432229cdc6217673fff Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f0db0f659a1f4192a4aca7ce2a298f272aa3af8f ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 5a9978b4ca..6427920c58 100644
+index ca1c2fe3bc..8937ab46dc 100644
@@ -23 +24 @@
-@@ -576,8 +576,7 @@ trie_modify(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip,
+@@ -570,8 +570,7 @@ trie_modify(struct rte_fib6 *fib, const uint8_t ip[RTE_FIB6_IPV6_ADDR_SIZE],
@@ -32 +33 @@
- node = rte_rib6_insert(rib, &ip_masked, depth);
+ node = rte_rib6_insert(rib, ip_masked, depth);
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'vhost: fix double fetch when dequeue offloading' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (41 preceding siblings ...)
2025-10-27 16:19 ` patch 'fib6: fix tbl8 allocation check logic' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix integer overflow on NVM init' " luca.boccassi
` (34 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Yunjian Wang; +Cc: Maxime Coquelin, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c92f022ea7c0d2df726ae97830463dab03208fe6
Thanks.
Luca Boccassi
---
From c92f022ea7c0d2df726ae97830463dab03208fe6 Mon Sep 17 00:00:00 2001
From: Yunjian Wang <wangyunjian@huawei.com>
Date: Fri, 10 Oct 2025 16:41:36 +0800
Subject: [PATCH] vhost: fix double fetch when dequeue offloading
[ upstream commit 285e6b8b187485cc69a175261e40d8d2727e20a3 ]
The hdr->csum_start does two successive reads from user space to read a
variable length data structure. The result overflow if the data structure
changes between the two reads.
To fix this, we can prevent double fetch issue by copying virtio_hdr to
the temporary variable.
Fixes: 4dc4e33ffa10 ("net/virtio: fix Rx checksum calculation")
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/virtio_net.c | 50 ++++++++++++++++++++++--------------------
1 file changed, 26 insertions(+), 24 deletions(-)
diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c
index ec8d03d97f..c90964c935 100644
--- a/lib/vhost/virtio_net.c
+++ b/lib/vhost/virtio_net.c
@@ -2634,25 +2634,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
}
}
-static __rte_noinline void
+static __rte_always_inline int
copy_vnet_hdr_from_desc(struct virtio_net_hdr *hdr,
- struct buf_vector *buf_vec)
+ const struct buf_vector *buf_vec,
+ uint16_t nr_vec)
{
- uint64_t len;
- uint64_t remain = sizeof(struct virtio_net_hdr);
- uint64_t src;
- uint64_t dst = (uint64_t)(uintptr_t)hdr;
+ size_t remain = sizeof(struct virtio_net_hdr);
+ uint8_t *dst = (uint8_t *)hdr;
- while (remain) {
- len = RTE_MIN(remain, buf_vec->buf_len);
- src = buf_vec->buf_addr;
- rte_memcpy((void *)(uintptr_t)dst,
- (void *)(uintptr_t)src, len);
+ while (remain > 0) {
+ size_t len = RTE_MIN(remain, buf_vec->buf_len);
+ const void *src = (const void *)(uintptr_t)buf_vec->buf_addr;
+ if (unlikely(nr_vec == 0))
+ return -1;
+
+ memcpy(dst, src, len);
remain -= len;
dst += len;
buf_vec++;
+ --nr_vec;
}
+ return 0;
}
static __rte_always_inline int
@@ -2679,16 +2682,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
*/
if (virtio_net_with_host_offload(dev)) {
- if (unlikely(buf_vec[0].buf_len < sizeof(struct virtio_net_hdr))) {
- /*
- * No luck, the virtio-net header doesn't fit
- * in a contiguous virtual area.
- */
- copy_vnet_hdr_from_desc(&tmp_hdr, buf_vec);
- hdr = &tmp_hdr;
- } else {
- hdr = (struct virtio_net_hdr *)((uintptr_t)buf_vec[0].buf_addr);
- }
+ if (unlikely(copy_vnet_hdr_from_desc(&tmp_hdr, buf_vec, nr_vec) != 0))
+ return -1;
+
+ /* ensure that compiler does not delay copy */
+ rte_compiler_barrier();
+ hdr = &tmp_hdr;
}
for (vec_idx = 0; vec_idx < nr_vec; vec_idx++) {
@@ -3048,7 +3047,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
{
uint16_t avail_idx = vq->last_avail_idx;
uint32_t buf_offset = sizeof(struct virtio_net_hdr_mrg_rxbuf);
- struct virtio_net_hdr *hdr;
uintptr_t desc_addrs[PACKED_BATCH_SIZE];
uint16_t ids[PACKED_BATCH_SIZE];
uint16_t i;
@@ -3067,8 +3065,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
if (virtio_net_with_host_offload(dev)) {
vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) {
- hdr = (struct virtio_net_hdr *)(desc_addrs[i]);
- vhost_dequeue_offload(dev, hdr, pkts[i], legacy_ol_flags);
+ struct virtio_net_hdr hdr;
+
+ memcpy(&hdr, (void *)desc_addrs[i], sizeof(struct virtio_net_hdr));
+ rte_compiler_barrier();
+
+ vhost_dequeue_offload(dev, &hdr, pkts[i], legacy_ol_flags);
}
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.444357043 +0000
+++ 0044-vhost-fix-double-fetch-when-dequeue-offloading.patch 2025-10-27 15:54:34.811949950 +0000
@@ -1 +1 @@
-From 285e6b8b187485cc69a175261e40d8d2727e20a3 Mon Sep 17 00:00:00 2001
+From c92f022ea7c0d2df726ae97830463dab03208fe6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 285e6b8b187485cc69a175261e40d8d2727e20a3 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index 77545d0a4d..0658b81de5 100644
+index ec8d03d97f..c90964c935 100644
@@ -26 +27 @@
-@@ -2870,25 +2870,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
+@@ -2634,25 +2634,28 @@ vhost_dequeue_offload(struct virtio_net *dev, struct virtio_net_hdr *hdr,
@@ -66 +67 @@
-@@ -2917,16 +2920,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -2679,16 +2682,12 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
@@ -89 +90 @@
-@@ -3372,7 +3371,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3048,7 +3047,6 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
@@ -97 +98 @@
-@@ -3391,8 +3389,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
+@@ -3067,8 +3065,12 @@ virtio_dev_tx_batch_packed(struct virtio_net *dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice/base: fix integer overflow on NVM init' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (42 preceding siblings ...)
2025-10-27 16:19 ` patch 'vhost: fix double fetch when dequeue offloading' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: fix initialization with 8 ports' " luca.boccassi
` (33 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Chinh Cao; +Cc: Anatoly Burakov, Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/09b50e601ae8b254661b42887f9243e728c97d0c
Thanks.
Luca Boccassi
---
From 09b50e601ae8b254661b42887f9243e728c97d0c Mon Sep 17 00:00:00 2001
From: Chinh Cao <chinh.t.cao@intel.com>
Date: Wed, 1 Oct 2025 13:29:04 +0100
Subject: [PATCH] net/ice/base: fix integer overflow on NVM init
[ upstream commit 96b1a23f3ea5614e5795307295234c15e0e99a1e ]
The shadow RAM size is defined as 16-bit unsigned, which may result in
overflows under certain scenarios. Fix the value to be 32-bit.
Fixes: a240ff50505b ("net/ice/base: add basic structures")
Signed-off-by: Chinh Cao <chinh.t.cao@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/base/ice_type.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
index 0b4fe7a5bc..c568813589 100644
--- a/drivers/net/ice/base/ice_type.h
+++ b/drivers/net/ice/base/ice_type.h
@@ -832,7 +832,7 @@ struct ice_flash_info {
struct ice_orom_info orom; /* Option ROM version info */
struct ice_nvm_info nvm; /* NVM version information */
struct ice_bank_info banks; /* Flash Bank information */
- u16 sr_words; /* Shadow RAM size in words */
+ u32 sr_words; /* Shadow RAM size in words */
u32 flash_size; /* Size of available flash in bytes */
u8 blank_nvm_mode; /* is NVM empty (no FW present) */
};
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.479260314 +0000
+++ 0045-net-ice-base-fix-integer-overflow-on-NVM-init.patch 2025-10-27 15:54:34.815950051 +0000
@@ -1 +1 @@
-From 96b1a23f3ea5614e5795307295234c15e0e99a1e Mon Sep 17 00:00:00 2001
+From 09b50e601ae8b254661b42887f9243e728c97d0c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 96b1a23f3ea5614e5795307295234c15e0e99a1e ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -16 +17 @@
- drivers/net/intel/ice/base/ice_type.h | 2 +-
+ drivers/net/ice/base/ice_type.h | 2 +-
@@ -19,5 +20,5 @@
-diff --git a/drivers/net/intel/ice/base/ice_type.h b/drivers/net/intel/ice/base/ice_type.h
-index ae3b944d6e..5f1f1a2f13 100644
---- a/drivers/net/intel/ice/base/ice_type.h
-+++ b/drivers/net/intel/ice/base/ice_type.h
-@@ -982,7 +982,7 @@ struct ice_flash_info {
+diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
+index 0b4fe7a5bc..c568813589 100644
+--- a/drivers/net/ice/base/ice_type.h
++++ b/drivers/net/ice/base/ice_type.h
+@@ -832,7 +832,7 @@ struct ice_flash_info {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice: fix initialization with 8 ports' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (43 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice/base: fix integer overflow on NVM init' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: remove indirection for FDIR filters' " luca.boccassi
` (32 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Bruce Richardson; +Cc: Kirill Rybalchenko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/5f8d3e7763fd6250bb977012cc1b435835e9689a
Thanks.
Luca Boccassi
---
From 5f8d3e7763fd6250bb977012cc1b435835e9689a Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Tue, 30 Sep 2025 15:28:50 +0100
Subject: [PATCH] net/ice: fix initialization with 8 ports
[ upstream commit 17a8fc206178c6b354a8fde04c23cf29db044961 ]
When initializing an 8-port device, the ACL configuration
failed with the adminq returning an ENOMEM status from the
sixth port onwards. Fix this issue by halving the depth, and
therefore the space required, when using a device with >4 PFs.
Fixes: 40d466fa9f76 ("net/ice: support ACL filter in DCF")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
---
drivers/net/ice/ice_acl_filter.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c
index 8fe6f5aeb0..5cbde233e6 100644
--- a/drivers/net/ice/ice_acl_filter.c
+++ b/drivers/net/ice/ice_acl_filter.c
@@ -115,7 +115,10 @@ ice_acl_setup(struct ice_pf *pf)
else
params.width = ICE_AQC_ACL_KEY_WIDTH_BYTES * 3;
- params.depth = ICE_AQC_ACL_TCAM_DEPTH;
+ if (pf_num > 4)
+ params.depth = ICE_AQC_ACL_TCAM_DEPTH / 2;
+ else
+ params.depth = ICE_AQC_ACL_TCAM_DEPTH;
params.entry_act_pairs = 1;
params.concurr = false;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.514212498 +0000
+++ 0046-net-ice-fix-initialization-with-8-ports.patch 2025-10-27 15:54:34.815950051 +0000
@@ -1 +1 @@
-From 17a8fc206178c6b354a8fde04c23cf29db044961 Mon Sep 17 00:00:00 2001
+From 5f8d3e7763fd6250bb977012cc1b435835e9689a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 17a8fc206178c6b354a8fde04c23cf29db044961 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_acl_filter.c | 5 ++++-
+ drivers/net/ice/ice_acl_filter.c | 5 ++++-
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_acl_filter.c b/drivers/net/intel/ice/ice_acl_filter.c
-index 83cb3e36f9..38e30a4f62 100644
---- a/drivers/net/intel/ice/ice_acl_filter.c
-+++ b/drivers/net/intel/ice/ice_acl_filter.c
-@@ -114,7 +114,10 @@ ice_acl_setup(struct ice_pf *pf)
+diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c
+index 8fe6f5aeb0..5cbde233e6 100644
+--- a/drivers/net/ice/ice_acl_filter.c
++++ b/drivers/net/ice/ice_acl_filter.c
+@@ -115,7 +115,10 @@ ice_acl_setup(struct ice_pf *pf)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice: remove indirection for FDIR filters' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (44 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice: fix initialization with 8 ports' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: fix memory leak in raw pattern parse' " luca.boccassi
` (31 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/b16d67cc79ec48e31b1478e81bd5648b713c50f4
Thanks.
Luca Boccassi
---
From b16d67cc79ec48e31b1478e81bd5648b713c50f4 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 10 Oct 2025 14:13:19 +0100
Subject: [PATCH] net/ice: remove indirection for FDIR filters
[ upstream commit f1dd6c3fdf974810e9a0d57920a4aa66fa16342e ]
Currently, when filters are created for FDIR, they are allocated
dynamically using `ice_malloc()`. Not only this is inconsistent with hash
filter code paths (hash uses embedded structures), this is also creating
unnecessary indirection and complexity, and creates a memory leak where,
if something fails during raw pattern parse, the profile memory isn't
deallocated.
Since there is no actual reason for why FDIR filter profile must use
indirection, instead of fixing the memory leak just avoid it altogether
by making the filter profile an embedded struct. When parsing begins, the
entire scratch filter structure is zeroed out anyway, so there is no need
to add any additional zero-initialization code.
Fixes: 25be39cc1760 ("net/ice: enable protocol agnostic flow offloading in FDIR")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_ethdev.h | 2 +-
drivers/net/ice/ice_fdir_filter.c | 30 +++++++++++-------------------
2 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index 9799cad394..7cee77b898 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -345,7 +345,7 @@ struct ice_fdir_filter_conf {
uint64_t input_set_i; /* only for tunnel inner fields */
uint32_t mark_flag;
- struct ice_parser_profile *prof;
+ struct ice_parser_profile prof;
bool parser_ena;
u8 *pkt_buf;
u8 pkt_len;
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 7e97547d8b..8829041c47 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1330,7 +1330,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (filter->parser_ena) {
struct ice_hw *hw = ICE_PF_TO_HW(pf);
- int id = ice_find_first_bit(filter->prof->ptypes, UINT16_MAX);
+ int id = ice_find_first_bit(filter->prof.ptypes, UINT16_MAX);
int ptg = hw->blk[ICE_BLK_FD].xlt1.t[id];
u16 ctrl_vsi = pf->fdir.fdir_vsi->idx;
u16 main_vsi = pf->main_vsi->idx;
@@ -1340,11 +1340,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (pi->fdir_actived_cnt != 0) {
for (i = 0; i < ICE_MAX_FV_WORDS; i++)
if (pi->prof.fv[i].proto_id !=
- filter->prof->fv[i].proto_id ||
+ filter->prof.fv[i].proto_id ||
pi->prof.fv[i].offset !=
- filter->prof->fv[i].offset ||
+ filter->prof.fv[i].offset ||
pi->prof.fv[i].msk !=
- filter->prof->fv[i].msk)
+ filter->prof.fv[i].msk)
break;
if (i == ICE_MAX_FV_WORDS) {
fv_found = true;
@@ -1354,7 +1354,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
if (!fv_found) {
ret = ice_flow_set_hw_prof(hw, main_vsi, ctrl_vsi,
- filter->prof, ICE_BLK_FD);
+ &filter->prof, ICE_BLK_FD);
if (ret)
goto error;
}
@@ -1364,12 +1364,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
goto error;
if (!fv_found) {
- for (i = 0; i < filter->prof->fv_num; i++) {
+ for (i = 0; i < filter->prof.fv_num; i++) {
pi->prof.fv[i].proto_id =
- filter->prof->fv[i].proto_id;
+ filter->prof.fv[i].proto_id;
pi->prof.fv[i].offset =
- filter->prof->fv[i].offset;
- pi->prof.fv[i].msk = filter->prof->fv[i].msk;
+ filter->prof.fv[i].offset;
+ pi->prof.fv[i].msk = filter->prof.fv[i].msk;
}
pi->fdir_actived_cnt = 1;
}
@@ -1467,7 +1467,6 @@ free_entry:
return -rte_errno;
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
return -rte_errno;
}
@@ -1489,7 +1488,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
if (filter->parser_ena) {
struct ice_hw *hw = ICE_PF_TO_HW(pf);
- int id = ice_find_first_bit(filter->prof->ptypes, UINT16_MAX);
+ int id = ice_find_first_bit(filter->prof.ptypes, UINT16_MAX);
int ptg = hw->blk[ICE_BLK_FD].xlt1.t[id];
u16 ctrl_vsi = pf->fdir.fdir_vsi->idx;
u16 main_vsi = pf->main_vsi->idx;
@@ -1517,7 +1516,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
flow->rule = NULL;
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(filter);
@@ -1944,13 +1942,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
if (!tmp_mask)
return -rte_errno;
- filter->prof = (struct ice_parser_profile *)
- ice_malloc(&ad->hw, sizeof(*filter->prof));
- if (!filter->prof)
- return -ENOMEM;
-
if (ice_parser_profile_init(&rslt, tmp_spec, tmp_mask,
- pkt_len, ICE_BLK_FD, true, filter->prof))
+ pkt_len, ICE_BLK_FD, true, &filter->prof))
return -rte_errno;
u8 *pkt_buf = (u8 *)ice_malloc(&ad->hw, pkt_len + 1);
@@ -2509,7 +2502,6 @@ ice_fdir_parse(struct ice_adapter *ad,
rte_free(item);
return ret;
error:
- rte_free(filter->prof);
rte_free(filter->pkt_buf);
rte_free(item);
return ret;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.548631009 +0000
+++ 0047-net-ice-remove-indirection-for-FDIR-filters.patch 2025-10-27 15:54:34.815950051 +0000
@@ -1 +1 @@
-From f1dd6c3fdf974810e9a0d57920a4aa66fa16342e Mon Sep 17 00:00:00 2001
+From b16d67cc79ec48e31b1478e81bd5648b713c50f4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f1dd6c3fdf974810e9a0d57920a4aa66fa16342e ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -25,2 +26,2 @@
- drivers/net/intel/ice/ice_ethdev.h | 2 +-
- drivers/net/intel/ice/ice_fdir_filter.c | 30 +++++++++----------------
+ drivers/net/ice/ice_ethdev.h | 2 +-
+ drivers/net/ice/ice_fdir_filter.c | 30 +++++++++++-------------------
@@ -29,5 +30,5 @@
-diff --git a/drivers/net/intel/ice/ice_ethdev.h b/drivers/net/intel/ice/ice_ethdev.h
-index a0d2082206..6478d6dfbd 100644
---- a/drivers/net/intel/ice/ice_ethdev.h
-+++ b/drivers/net/intel/ice/ice_ethdev.h
-@@ -379,7 +379,7 @@ struct ice_fdir_filter_conf {
+diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
+index 9799cad394..7cee77b898 100644
+--- a/drivers/net/ice/ice_ethdev.h
++++ b/drivers/net/ice/ice_ethdev.h
+@@ -345,7 +345,7 @@ struct ice_fdir_filter_conf {
@@ -42,5 +43,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index d41d223d52..d593624792 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -1314,7 +1314,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 7e97547d8b..8829041c47 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1330,7 +1330,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -55 +56 @@
-@@ -1324,11 +1324,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1340,11 +1340,11 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -70 +71 @@
-@@ -1338,7 +1338,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1354,7 +1354,7 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -79 +80 @@
-@@ -1348,12 +1348,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
+@@ -1364,12 +1364,12 @@ ice_fdir_create_filter(struct ice_adapter *ad,
@@ -96 +97 @@
-@@ -1451,7 +1451,6 @@ free_entry:
+@@ -1467,7 +1467,6 @@ free_entry:
@@ -104 +105 @@
-@@ -1473,7 +1472,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1489,7 +1488,7 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -113 +114 @@
-@@ -1501,7 +1500,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
+@@ -1517,7 +1516,6 @@ ice_fdir_destroy_filter(struct ice_adapter *ad,
@@ -121 +122 @@
-@@ -1928,13 +1926,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1944,13 +1942,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -136 +137 @@
-@@ -2495,7 +2488,6 @@ ice_fdir_parse(struct ice_adapter *ad,
+@@ -2509,7 +2502,6 @@ ice_fdir_parse(struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ice: fix memory leak in raw pattern parse' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (45 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice: remove indirection for FDIR filters' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " luca.boccassi
` (30 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/10383a47db49bcb93f0ef91aa46abee9f306fd5c
Thanks.
Luca Boccassi
---
From 10383a47db49bcb93f0ef91aa46abee9f306fd5c Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 10 Oct 2025 14:13:20 +0100
Subject: [PATCH] net/ice: fix memory leak in raw pattern parse
[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]
Currently, when parsing rte_flow raw type items, we allocate some
internal structures, but if errors happen down the line we just quit and
never free the memory we just allocated. Fix this by adding an error
cleanup section.
Fixes: 848de9572c83 ("net/ice: fix raw flow input pattern parsing")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 8829041c47..e509e496b1 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1881,7 +1881,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
uint16_t tmp_val = 0;
uint16_t pkt_len = 0;
uint8_t tmp = 0;
- int i, j;
+ int i, j, ret_val;
pkt_len = strlen((char *)(uintptr_t)raw_spec->pattern);
if (strlen((char *)(uintptr_t)raw_mask->pattern) !=
@@ -1936,19 +1936,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
pkt_len /= 2;
- if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt))
- return -rte_errno;
-
- if (!tmp_mask)
- return -rte_errno;
+ if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt)) {
+ ret_val = -rte_errno;
+ goto raw_error;
+ }
if (ice_parser_profile_init(&rslt, tmp_spec, tmp_mask,
- pkt_len, ICE_BLK_FD, true, &filter->prof))
- return -rte_errno;
+ pkt_len, ICE_BLK_FD, true, &filter->prof)) {
+ ret_val = -rte_errno;
+ goto raw_error;
+ }
u8 *pkt_buf = (u8 *)ice_malloc(&ad->hw, pkt_len + 1);
- if (!pkt_buf)
- return -ENOMEM;
+ if (!pkt_buf) {
+ ret_val = -ENOMEM;
+ goto raw_error;
+ }
rte_memcpy(pkt_buf, tmp_spec, pkt_len);
filter->pkt_buf = pkt_buf;
@@ -1959,6 +1962,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
rte_free(tmp_spec);
rte_free(tmp_mask);
break;
+
+raw_error:
+ rte_free(tmp_spec);
+ rte_free(tmp_mask);
+ return ret_val;
}
case RTE_FLOW_ITEM_TYPE_ETH:
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.581173886 +0000
+++ 0048-net-ice-fix-memory-leak-in-raw-pattern-parse.patch 2025-10-27 15:54:34.815950051 +0000
@@ -1 +1 @@
-From 3938eeec989181216ea3f9cc8eee931a2915ca5d Mon Sep 17 00:00:00 2001
+From 10383a47db49bcb93f0ef91aa46abee9f306fd5c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_fdir_filter.c | 28 ++++++++++++++++---------
+ drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index d593624792..9dfe5c02cb 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -1865,7 +1865,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 8829041c47..e509e496b1 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1881,7 +1881,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -33 +34 @@
-@@ -1920,19 +1920,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1936,19 +1936,22 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -65 +66 @@
-@@ -1943,6 +1946,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1959,6 +1962,11 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (46 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ice: fix memory leak in raw pattern parse' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix multicast' " luca.boccassi
` (29 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Anurag Mandal; +Cc: Bruce Richardson, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/453ba3c522af037bd77cd42e1b309af45bb01686
Thanks.
Luca Boccassi
---
From 453ba3c522af037bd77cd42e1b309af45bb01686 Mon Sep 17 00:00:00 2001
From: Anurag Mandal <anurag.mandal@intel.com>
Date: Wed, 15 Oct 2025 23:41:50 +0530
Subject: [PATCH] net/i40e: fix symmetric Toeplitz hashing for SCTP
[ upstream commit 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c ]
When symmetric toeplitz is configured for SCTP, packets belonging
to the same SCTP session are getting distributed to multiple queues
due to improper hash computation.
Removed SCTP Verification Tag from hash computation of symmetric toeplitz
as it changes for same SCTP session.
Tested the following with the fix & enabling symmetric toeplitz for
SCTP:
1. Packets belonging to the same SCTP session getting into the same
queue.
2. Packets belonging to the different SCTP sessions getting
distributed to multiple queues.
Fixes: ef4c16fd9148 ("net/i40e: refactor RSS flow")
Signed-off-by: Anurag Mandal <anurag.mandal@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
.mailmap | 1 +
drivers/net/i40e/i40e_hash.c | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/.mailmap b/.mailmap
index f53fdf0d85..6a7af0e981 100644
--- a/.mailmap
+++ b/.mailmap
@@ -119,6 +119,7 @@ Antara Ganesh Kolar <antara.ganesh.kolar@intel.com>
Anthony Fee <anthonyx.fee@intel.com>
Antonio Fischetti <antonio.fischetti@intel.com>
Anupam Kapoor <anupam.kapoor@gmail.com>
+Anurag Mandal <anurag.mandal@intel.com>
Apeksha Gupta <apeksha.gupta@nxp.com>
Archana Muniganti <marchana@marvell.com> <muniganti.archana@caviumnetworks.com>
Archit Pandey <architpandeynitk@gmail.com>
diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c
index 0c84818977..c71c792f1c 100644
--- a/drivers/net/i40e/i40e_hash.c
+++ b/drivers/net/i40e/i40e_hash.c
@@ -561,7 +561,7 @@ i40e_hash_get_pattern_pctypes(const struct rte_eth_dev *dev,
}
static uint64_t
-i40e_hash_get_inset(uint64_t rss_types)
+i40e_hash_get_inset(uint64_t rss_types, bool symmetric_enable)
{
uint64_t mask, inset = 0;
int i;
@@ -608,6 +608,17 @@ i40e_hash_get_inset(uint64_t rss_types)
I40E_INSET_IPV4_SRC | I40E_INSET_IPV6_SRC);
}
+ /* SCTP Verification Tag is not required in hash computation for SYMMETRIC_TOEPLITZ */
+ if (symmetric_enable) {
+ mask = rss_types & RTE_ETH_RSS_NONFRAG_IPV4_SCTP;
+ if (mask == RTE_ETH_RSS_NONFRAG_IPV4_SCTP)
+ inset &= ~I40E_INSET_SCTP_VT;
+
+ mask = rss_types & RTE_ETH_RSS_NONFRAG_IPV6_SCTP;
+ if (mask == RTE_ETH_RSS_NONFRAG_IPV6_SCTP)
+ inset &= ~I40E_INSET_SCTP_VT;
+ }
+
return inset;
}
@@ -1113,6 +1124,7 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
NULL,
"RSS Queues not supported when pattern specified");
+ rss_conf->symmetric_enable = false; /* by default, symmetric is disabled */
switch (rss_act->func) {
case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ:
@@ -1140,7 +1152,7 @@ i40e_hash_parse_pattern_act(const struct rte_eth_dev *dev,
rss_conf->conf.func = rss_act->func;
rss_conf->conf.types = rss_act->types;
- rss_conf->inset = i40e_hash_get_inset(rss_act->types);
+ rss_conf->inset = i40e_hash_get_inset(rss_act->types, rss_conf->symmetric_enable);
return i40e_hash_get_pattern_pctypes(dev, pattern, rss_act,
rss_conf, error);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.614275485 +0000
+++ 0049-net-i40e-fix-symmetric-Toeplitz-hashing-for-SCTP.patch 2025-10-27 15:54:34.819950152 +0000
@@ -1 +1 @@
-From 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c Mon Sep 17 00:00:00 2001
+From 453ba3c522af037bd77cd42e1b309af45bb01686 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 09937a3646f83ffe9d0d27896066c3f3f6e4ee0c ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -26,2 +27,2 @@
- .mailmap | 1 +
- drivers/net/intel/i40e/i40e_hash.c | 16 ++++++++++++++--
+ .mailmap | 1 +
+ drivers/net/i40e/i40e_hash.c | 16 ++++++++++++++--
@@ -31 +32 @@
-index c14288e1c7..adce7ee286 100644
+index f53fdf0d85..6a7af0e981 100644
@@ -34 +35,2 @@
-@@ -136,6 +136,7 @@ Anthony Harivel <aharivel@redhat.com>
+@@ -119,6 +119,7 @@ Antara Ganesh Kolar <antara.ganesh.kolar@intel.com>
+ Anthony Fee <anthonyx.fee@intel.com>
@@ -36 +37,0 @@
- Anup Prabhu <aprabhu@marvell.com>
@@ -42,4 +43,4 @@
-diff --git a/drivers/net/intel/i40e/i40e_hash.c b/drivers/net/intel/i40e/i40e_hash.c
-index 02e1457d80..3149682197 100644
---- a/drivers/net/intel/i40e/i40e_hash.c
-+++ b/drivers/net/intel/i40e/i40e_hash.c
+diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c
+index 0c84818977..c71c792f1c 100644
+--- a/drivers/net/i40e/i40e_hash.c
++++ b/drivers/net/i40e/i40e_hash.c
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix multicast' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (47 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix MTU initialization' " luca.boccassi
` (28 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Gavin Li; +Cc: Viacheslav Ovsiienko, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/58a6421bc396d0f95c3e9e456bb824b32c5bd014
Thanks.
Luca Boccassi
---
From 58a6421bc396d0f95c3e9e456bb824b32c5bd014 Mon Sep 17 00:00:00 2001
From: Gavin Li <gavinl@nvidia.com>
Date: Fri, 29 Aug 2025 12:08:30 +0300
Subject: [PATCH] net/mlx5: fix multicast
[ upstream commit 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 ]
Device multicast MAC addresses are managed using the mac_addr_add and
mac_addr_remove APIs.
In the mlx5_dev_spawn function, devices such as PF, VFs, and SFs obtain
the MAC addresses configured in netdev via netlink and store them in the
PMD device data, which also includes multicast MAC addresses. Default
rules are created for each MAC address to filter traffic accordingly.
Previously, multicast MAC address flows were mistakenly disabled, which
caused mac_addr_add to stop functioning for multicast MAC addresses,
resulting in missed multicast traffic.
To address this, default rules for multicast MAC addresses created by
PMD should now be set up within mlx5_traffic_enable to properly update
and manage multicast MAC address rules.
Fixes: 2d0665a7f771 ("net/mlx5: align PF and VF/SF MAC address handling")
Signed-off-by: Gavin Li <gavinl@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5_trigger.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 198eeb019c..af25af47f8 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -1705,7 +1705,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
for (i = 0; i != MLX5_MAX_MAC_ADDRESSES; ++i) {
struct rte_ether_addr *mac = &dev->data->mac_addrs[i];
- if (!memcmp(mac, &cmp, sizeof(*mac)) || rte_is_multicast_ether_addr(mac))
+ /* Add flows for unicast and multicast mac addresses added by API. */
+ if (!memcmp(mac, &cmp, sizeof(*mac)) ||
+ !BITFIELD_ISSET(priv->mac_own, i) ||
+ (dev->data->all_multicast && rte_is_multicast_ether_addr(mac)))
continue;
memcpy(&unicast.dst.addr_bytes,
mac->addr_bytes,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.648354451 +0000
+++ 0050-net-mlx5-fix-multicast.patch 2025-10-27 15:54:34.819950152 +0000
@@ -1 +1 @@
-From 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 Mon Sep 17 00:00:00 2001
+From 58a6421bc396d0f95c3e9e456bb824b32c5bd014 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8c06434cd9e44ef8a4db2eb7e3300c7791c4e7b4 ]
+
@@ -23 +24,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index b104ca9f52..916ac03c16 100644
+index 198eeb019c..af25af47f8 100644
@@ -35 +36 @@
-@@ -1835,7 +1835,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
+@@ -1705,7 +1705,10 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
@@ -45 +46 @@
- memcpy(&unicast.hdr.dst_addr.addr_bytes,
+ memcpy(&unicast.dst.addr_bytes,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix MTU initialization' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (48 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: fix multicast' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix leak of flow indexed pools' " luca.boccassi
` (27 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shani Peretz; +Cc: Dariusz Sosnowski, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/8b6d77fdad418b637c16dc346e4b774d89f1b60b
Thanks.
Luca Boccassi
---
From 8b6d77fdad418b637c16dc346e4b774d89f1b60b Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Thu, 18 Sep 2025 08:43:25 +0300
Subject: [PATCH] net/mlx5: fix MTU initialization
[ upstream commit ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 ]
Currently with mlx5 PMD, rte_eth_dev_get_mtu() doesn't return
the MTU the device was set with, but the default one.
It happens because mlx5_dev_spawn() is not setting the eth_dev->data->mtu
field after getting the actual MTU from the driver,
so the default value is kept.
This patch fixes the issue by retrieving setting the value of priv->mtu
to eth_dev->data->mtu.
Bugzilla ID: 1768
Fixes: 2eb4d0107acc ("net/mlx5: refactor PCI probing on Linux")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 1 +
drivers/net/mlx5/windows/mlx5_os.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index 23093b404a..fc7d5f68e7 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1516,6 +1516,7 @@ err_secondary:
err = rte_errno;
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u", eth_dev->data->port_id,
priv->mtu);
/* Initialize burst functions to prevent crashes before link-up. */
diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c
index a2c2b37773..0da1f15f78 100644
--- a/drivers/net/mlx5/windows/mlx5_os.c
+++ b/drivers/net/mlx5/windows/mlx5_os.c
@@ -463,6 +463,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
err = rte_errno;
goto error;
}
+ eth_dev->data->mtu = priv->mtu;
DRV_LOG(DEBUG, "port %u MTU is %u.", eth_dev->data->port_id,
priv->mtu);
/* Initialize burst functions to prevent crashes before link-up. */
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.681032536 +0000
+++ 0051-net-mlx5-fix-MTU-initialization.patch 2025-10-27 15:54:34.823950251 +0000
@@ -1 +1 @@
-From ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 Mon Sep 17 00:00:00 2001
+From 8b6d77fdad418b637c16dc346e4b774d89f1b60b Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ee6aa2cb66512cd57b69ffe07efbd7f09789c9b2 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -26 +27 @@
-index 8c37c047bb..8d11b1ac3a 100644
+index 23093b404a..fc7d5f68e7 100644
@@ -29 +30 @@
-@@ -1601,6 +1601,7 @@ err_secondary:
+@@ -1516,6 +1516,7 @@ err_secondary:
@@ -38 +39 @@
-index c4e3430bdc..4eadc872a5 100644
+index a2c2b37773..0da1f15f78 100644
@@ -41 +42 @@
-@@ -509,6 +509,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
+@@ -463,6 +463,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/mlx5: fix leak of flow indexed pools' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (49 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: fix MTU initialization' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix inconsistent lock' " luca.boccassi
` (26 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Roi Dayan; +Cc: Bing Zhao, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/3911c9348a430b3b94a0aa8a9f2392f0c58d1b2d
Thanks.
Luca Boccassi
---
From 3911c9348a430b3b94a0aa8a9f2392f0c58d1b2d Mon Sep 17 00:00:00 2001
From: Roi Dayan <roid@nvidia.com>
Date: Sun, 5 Oct 2025 10:23:45 +0300
Subject: [PATCH] net/mlx5: fix leak of flow indexed pools
[ upstream commit eefec46eeb89672815afd6c2497d21b928d77c54 ]
The cited commit allocated indexed pools but those pools
were never released. Fix it.
Fixes: b4edeaf3efd5 ("net/mlx5: replace flow list with indexed pool")
Signed-off-by: Roi Dayan <roid@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
.mailmap | 1 +
drivers/net/mlx5/mlx5.c | 13 +++++++++++++
2 files changed, 14 insertions(+)
diff --git a/.mailmap b/.mailmap
index 6a7af0e981..fb9c3d74f9 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1192,6 +1192,7 @@ Rob Miller <rob.miller@broadcom.com>
Rob Scheepens <rob.scheepens@nutanix.com>
Roger Melton <rmelton@cisco.com>
Rohit Raj <rohit.raj@nxp.com>
+Roi Dayan <roid@nvidia.com>
Roland Qi <roland.qi@ucloud.cn>
Rolf Neugebauer <rolf.neugebauer@netronome.com>
Romain Delhomel <romain.delhomel@6wind.com>
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 94873dfe89..357f5eac11 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2007,6 +2007,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
dev->process_private = NULL;
}
+static void
+mlx5_flow_pools_destroy(struct mlx5_priv *priv)
+{
+ int i;
+
+ for (i = 0; i < MLX5_FLOW_TYPE_MAXI; i++) {
+ if (!priv->flows[i])
+ continue;
+ mlx5_ipool_destroy(priv->flows[i]);
+ }
+}
+
/**
* DPDK callback to close the device.
*
@@ -2180,6 +2192,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
if (!c)
claim_zero(rte_eth_switch_domain_free(priv->domain_id));
}
+ mlx5_flow_pools_destroy(priv);
memset(priv, 0, sizeof(*priv));
priv->domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID;
/*
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.713332392 +0000
+++ 0052-net-mlx5-fix-leak-of-flow-indexed-pools.patch 2025-10-27 15:54:34.823950251 +0000
@@ -1 +1 @@
-From eefec46eeb89672815afd6c2497d21b928d77c54 Mon Sep 17 00:00:00 2001
+From 3911c9348a430b3b94a0aa8a9f2392f0c58d1b2d Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit eefec46eeb89672815afd6c2497d21b928d77c54 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index aef57a4c32..ff13bf09fb 100644
+index 6a7af0e981..fb9c3d74f9 100644
@@ -23,2 +24,2 @@
-@@ -1361,6 +1361,7 @@ Rob Scheepens <rob.scheepens@nutanix.com>
- Rogelio Domínguez Hernández <rogelio.dominguez@gmail.com>
+@@ -1192,6 +1192,7 @@ Rob Miller <rob.miller@broadcom.com>
+ Rob Scheepens <rob.scheepens@nutanix.com>
@@ -32 +33 @@
-index ece29fb216..b018a4f0e2 100644
+index 94873dfe89..357f5eac11 100644
@@ -35 +36 @@
-@@ -2318,6 +2318,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
+@@ -2007,6 +2007,18 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev)
@@ -54 +55 @@
-@@ -2507,6 +2519,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
+@@ -2180,6 +2192,7 @@ mlx5_dev_close(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/hns3: fix inconsistent lock' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (50 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/mlx5: fix leak of flow indexed pools' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN resources freeing' " luca.boccassi
` (25 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/a7f48b8165af74c3a7577b200f3576cd82034118
Thanks.
Luca Boccassi
---
From a7f48b8165af74c3a7577b200f3576cd82034118 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Wed, 13 Aug 2025 15:33:15 +0800
Subject: [PATCH] net/hns3: fix inconsistent lock
[ upstream commit d441169bd20415691ea86707e7bf852eb6fcda46 ]
The hns3 driver supports configuring RSS through both ops API and
rte_flow API. The ops API uses spin lock, while the rte_flow API uses
pthread mutex. When concurrent calls occur, issues may arise.
This patch replaces the lock in the flow API with spin lock.
With the pthread mutex no longer needed, the pthread attributes
can also be removed.
Fixes: 1bdcca8006e4 ("net/hns3: fix flow director lock")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.h | 2 --
drivers/net/hns3/hns3_fdir.c | 13 --------
drivers/net/hns3/hns3_flow.c | 60 +++++++++++++---------------------
3 files changed, 22 insertions(+), 53 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 5445170c8b..9ebf807202 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -5,7 +5,6 @@
#ifndef HNS3_ETHDEV_H
#define HNS3_ETHDEV_H
-#include <pthread.h>
#include <ethdev_driver.h>
#include <rte_byteorder.h>
#include <rte_io.h>
@@ -655,7 +654,6 @@ struct hns3_hw {
struct hns3_port_base_vlan_config port_base_vlan_cfg;
- pthread_mutex_t flows_lock; /* rte_flow ops lock */
struct hns3_fdir_rule_list flow_fdir_list; /* flow fdir rule list */
struct hns3_rss_filter_list flow_rss_list; /* flow RSS rule list */
struct hns3_flow_mem_list flow_list;
diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 73d4a25d63..c53a26f57b 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -1072,17 +1072,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
if (hns->is_vf)
return 0;
- /*
- * This API is called in the reset recovery process, the parent function
- * must hold hw->lock.
- * There maybe deadlock if acquire hw->flows_lock directly because rte
- * flow driver ops first acquire hw->flows_lock and then may acquire
- * hw->lock.
- * So here first release the hw->lock and then acquire the
- * hw->flows_lock to avoid deadlock.
- */
- rte_spinlock_unlock(&hw->lock);
- pthread_mutex_lock(&hw->flows_lock);
TAILQ_FOREACH(fdir_filter, &fdir_info->fdir_list, entries) {
ret = hns3_config_action(hw, &fdir_filter->fdir_conf);
if (!ret)
@@ -1093,8 +1082,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
break;
}
}
- pthread_mutex_unlock(&hw->flows_lock);
- rte_spinlock_lock(&hw->lock);
if (err) {
hns3_err(hw, "Fail to restore FDIR filter, ret = %d", ret);
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index e1180e4fec..cf71c6766d 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -2032,18 +2032,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
return 0;
}
-static int
-hns3_restore_rss_filter(struct hns3_hw *hw)
-{
- int ret;
-
- pthread_mutex_lock(&hw->flows_lock);
- ret = hns3_reconfig_all_rss_filter(hw);
- pthread_mutex_unlock(&hw->flows_lock);
-
- return ret;
-}
-
int
hns3_restore_filter(struct hns3_adapter *hns)
{
@@ -2054,7 +2042,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
if (ret != 0)
return ret;
- return hns3_restore_rss_filter(hw);
+ return hns3_reconfig_all_rss_filter(hw);
}
static int
@@ -2446,10 +2434,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
struct hns3_filter_info filter_info = {0};
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_validate(dev, attr, pattern, actions, error,
&filter_info);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2463,9 +2451,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
struct rte_flow *flow;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
flow = hns3_flow_create(dev, attr, pattern, actions, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return flow;
}
@@ -2477,9 +2465,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_destroy(dev, flow, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2490,9 +2478,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_flush(dev, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2505,9 +2493,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
ret = hns3_flow_query(dev, flow, actions, data, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2555,7 +2543,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
if (hns3_check_indir_action(conf, action, error))
return NULL;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
act_count = (const struct rte_flow_action_count *)action->conf;
if (act_count->id >= pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1]) {
@@ -2580,11 +2568,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
handle.indirect_type = HNS3_INDIRECT_ACTION_TYPE_COUNT;
handle.counter_id = counter->id;
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return (struct rte_flow_action_handle *)handle.val64;
err_exit:
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return NULL;
}
@@ -2597,11 +2585,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
struct rte_flow_action_handle indir;
struct hns3_flow_counter *counter;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
indir.val64 = (uint64_t)handle;
if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Invalid indirect type");
@@ -2609,14 +2597,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
counter = hns3_counter_lookup(dev, indir.counter_id);
if (counter == NULL) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Counter id not exist");
}
if (counter->ref_cnt > 1) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EBUSY,
RTE_FLOW_ERROR_TYPE_HANDLE,
handle, "Counter id in use");
@@ -2624,7 +2612,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
(void)hns3_counter_release(dev, indir.counter_id);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return 0;
}
@@ -2639,11 +2627,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
struct rte_flow flow;
int ret;
- pthread_mutex_lock(&hw->flows_lock);
+ rte_spinlock_lock(&hw->lock);
indir.val64 = (uint64_t)handle;
if (indir.indirect_type != HNS3_INDIRECT_ACTION_TYPE_COUNT) {
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,
handle, "Invalid indirect type");
@@ -2653,7 +2641,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
flow.counter_id = indir.counter_id;
ret = hns3_counter_query(dev, &flow,
(struct rte_flow_query_count *)data, error);
- pthread_mutex_unlock(&hw->flows_lock);
+ rte_spinlock_unlock(&hw->lock);
return ret;
}
@@ -2687,14 +2675,10 @@ void
hns3_flow_init(struct rte_eth_dev *dev)
{
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
- pthread_mutexattr_t attr;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return;
- pthread_mutexattr_init(&attr);
- pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
- pthread_mutex_init(&hw->flows_lock, &attr);
dev->data->dev_flags |= RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE;
TAILQ_INIT(&hw->flow_fdir_list);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.756185384 +0000
+++ 0053-net-hns3-fix-inconsistent-lock.patch 2025-10-27 15:54:34.827950352 +0000
@@ -1 +1 @@
-From d441169bd20415691ea86707e7bf852eb6fcda46 Mon Sep 17 00:00:00 2001
+From a7f48b8165af74c3a7577b200f3576cd82034118 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d441169bd20415691ea86707e7bf852eb6fcda46 ]
+
@@ -15 +16,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index d602bfa02f..f6bb1b5d43 100644
+index 5445170c8b..9ebf807202 100644
@@ -36 +37 @@
-@@ -679,7 +678,6 @@ struct hns3_hw {
+@@ -655,7 +654,6 @@ struct hns3_hw {
@@ -45 +46 @@
-index aacad40e61..50572ae430 100644
+index 73d4a25d63..c53a26f57b 100644
@@ -48 +49 @@
-@@ -1145,17 +1145,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
+@@ -1072,17 +1072,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
@@ -66 +67 @@
-@@ -1166,8 +1155,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
+@@ -1093,8 +1082,6 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
@@ -76 +77 @@
-index c0238d2bfa..f2d1e4ec3a 100644
+index e1180e4fec..cf71c6766d 100644
@@ -79 +80 @@
-@@ -2210,18 +2210,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
+@@ -2032,18 +2032,6 @@ hns3_reconfig_all_rss_filter(struct hns3_hw *hw)
@@ -98 +99 @@
-@@ -2232,7 +2220,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
+@@ -2054,7 +2042,7 @@ hns3_restore_filter(struct hns3_adapter *hns)
@@ -107 +108 @@
-@@ -2624,10 +2612,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
+@@ -2446,10 +2434,10 @@ hns3_flow_validate_wrap(struct rte_eth_dev *dev,
@@ -120 +121 @@
-@@ -2641,9 +2629,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -2463,9 +2451,9 @@ hns3_flow_create_wrap(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
@@ -132 +133 @@
-@@ -2655,9 +2643,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
+@@ -2477,9 +2465,9 @@ hns3_flow_destroy_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
@@ -144 +145 @@
-@@ -2668,9 +2656,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
+@@ -2490,9 +2478,9 @@ hns3_flow_flush_wrap(struct rte_eth_dev *dev, struct rte_flow_error *error)
@@ -156 +157 @@
-@@ -2683,9 +2671,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
+@@ -2505,9 +2493,9 @@ hns3_flow_query_wrap(struct rte_eth_dev *dev, struct rte_flow *flow,
@@ -168 +169 @@
-@@ -2733,7 +2721,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
+@@ -2555,7 +2543,7 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
@@ -177 +178 @@
-@@ -2758,11 +2746,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
+@@ -2580,11 +2568,11 @@ hns3_flow_action_create(struct rte_eth_dev *dev,
@@ -191 +192 @@
-@@ -2775,11 +2763,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2597,11 +2585,11 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -205 +206 @@
-@@ -2787,14 +2775,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2609,14 +2597,14 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -222 +223 @@
-@@ -2802,7 +2790,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
+@@ -2624,7 +2612,7 @@ hns3_flow_action_destroy(struct rte_eth_dev *dev,
@@ -231 +232 @@
-@@ -2817,11 +2805,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
+@@ -2639,11 +2627,11 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
@@ -245 +246 @@
-@@ -2831,7 +2819,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
+@@ -2653,7 +2641,7 @@ hns3_flow_action_query(struct rte_eth_dev *dev,
@@ -254 +255 @@
-@@ -2865,14 +2853,10 @@ void
+@@ -2687,14 +2675,10 @@ void
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/hns3: fix VLAN resources freeing' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (51 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/hns3: fix inconsistent lock' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/af_packet: fix crash in secondary process' " luca.boccassi
` (24 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Dengdui Huang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/9b39971fc6e0e622220df2516a85e25204eb35e3
Thanks.
Luca Boccassi
---
From 9b39971fc6e0e622220df2516a85e25204eb35e3 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Fri, 22 Aug 2025 14:04:28 +0800
Subject: [PATCH] net/hns3: fix VLAN resources freeing
[ upstream commit 4816b1005bd650b4a1e10af913c497bec860bec5 ]
In the initialization process, it is necessary to release VLAN resources
on the failure branch.
Additionally, encapsulate a function hns3_uninit_hardware() to release
the resources allocated by the hns3_init_hardware() function.
Fixes: 411d23b9eafb ("net/hns3: support VLAN")
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index c31b052b6f..a220131294 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -4422,25 +4422,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
ret = hns3_dcb_init(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init dcb: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_init_fd_config(hns);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init flow director: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_config_tso(hw, HNS3_TSO_MSS_MIN, HNS3_TSO_MSS_MAX);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config tso: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_config_gro(hw, false);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to config gro: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
/*
@@ -4452,22 +4452,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
ret = hns3_init_ring_with_vector(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init ring intr vector: %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
ret = hns3_ptp_init(hw);
if (ret) {
PMD_INIT_LOG(ERR, "Failed to init PTP, ret = %d", ret);
- goto err_mac_init;
+ goto rm_vlan_table;
}
return 0;
-
+rm_vlan_table:
+ hns3_rm_all_vlan_table(hns, true);
err_mac_init:
hns3_uninit_umv_space(hw);
return ret;
}
+static void
+hns3_uninit_hardware(struct hns3_hw *hw)
+{
+ struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
+
+ (void)hns3_uninit_umv_space(hw);
+ hns3_ptp_uninit(hw);
+ hns3_rm_all_vlan_table(hns, true);
+}
+
static int
hns3_clear_hw(struct hns3_hw *hw)
{
@@ -4699,8 +4710,7 @@ err_supported_speed:
err_enable_intr:
hns3_fdir_filter_uninit(hns);
err_fdir:
- hns3_uninit_umv_space(hw);
- hns3_ptp_uninit(hw);
+ hns3_uninit_hardware(hw);
err_init_hw:
hns3_stats_uninit(hw);
err_get_config:
@@ -4735,8 +4745,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
hns3_promisc_uninit(hw);
hns3_flow_uninit(eth_dev);
hns3_fdir_filter_uninit(hns);
- hns3_uninit_umv_space(hw);
- hns3_ptp_uninit(hw);
+ hns3_uninit_hardware(hw);
hns3_stats_uninit(hw);
hns3_config_mac_tnl_int(hw, false);
hns3_pf_disable_irq0(hw);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.790836287 +0000
+++ 0054-net-hns3-fix-VLAN-resources-freeing.patch 2025-10-27 15:54:34.831950453 +0000
@@ -1 +1 @@
-From 4816b1005bd650b4a1e10af913c497bec860bec5 Mon Sep 17 00:00:00 2001
+From 9b39971fc6e0e622220df2516a85e25204eb35e3 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4816b1005bd650b4a1e10af913c497bec860bec5 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index a809a47423..b2eab7e1c5 100644
+index c31b052b6f..a220131294 100644
@@ -24 +25 @@
-@@ -4366,25 +4366,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4422,25 +4422,25 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -54 +55 @@
-@@ -4396,22 +4396,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
+@@ -4452,22 +4452,33 @@ hns3_init_hardware(struct hns3_adapter *hns)
@@ -91 +92 @@
-@@ -4623,8 +4634,7 @@ err_supported_speed:
+@@ -4699,8 +4710,7 @@ err_supported_speed:
@@ -101 +102 @@
-@@ -4659,8 +4669,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
+@@ -4735,8 +4745,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/af_packet: fix crash in secondary process' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (52 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN resources freeing' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ark: remove double mbuf free' " luca.boccassi
` (23 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Kerem Aksu; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/1abf7e31f268f3ec07df0ef96f612cc9f6a9d332
Thanks.
Luca Boccassi
---
From 1abf7e31f268f3ec07df0ef96f612cc9f6a9d332 Mon Sep 17 00:00:00 2001
From: Kerem Aksu <kerem.aksu@i2i-systems.com>
Date: Fri, 12 Sep 2025 14:35:25 +0300
Subject: [PATCH] net/af_packet: fix crash in secondary process
[ upstream commit d57124f60ef60b24cd39e895cf6d211b93b897ae ]
dumpcap crashes when trying to capture from af_packet devices. This is
caused by allocating interface name with
strdup (i.e. malloc). Interface name is not accessible from secondary
process and causes segmentation fault. Use rte_malloc instead of
strdup to fix the issue.
Bugzilla ID: 1786
Fixes: 1b93c2aa81b4 ("net/af_packet: add interface name to internals")
Signed-off-by: Kerem Aksu <kerem.aksu@i2i-systems.com>
---
.mailmap | 1 +
drivers/net/af_packet/rte_eth_af_packet.c | 7 ++++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/.mailmap b/.mailmap
index fb9c3d74f9..3ff821f286 100644
--- a/.mailmap
+++ b/.mailmap
@@ -729,6 +729,7 @@ Kefu Chai <tchaikov@gmail.com>
Keiichi Watanabe <keiichiw@chromium.org>
Keith Wiles <keith.wiles@intel.com> <keith.wiles@windriver.com>
Kent Wires <kent.wires@intel.com>
+Kerem Aksu <kerem.aksu@i2i-systems.com>
Keunhong Lee <dlrmsghd@gmail.com>
Kevin Laatz <kevin.laatz@intel.com>
Kevin Lampis <klampis@solarflare.com>
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 0b059bfd0b..6803502c74 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -462,7 +462,7 @@ eth_dev_close(struct rte_eth_dev *dev)
rte_free(internals->rx_queue[q].rd);
rte_free(internals->tx_queue[q].rd);
}
- free(internals->if_name);
+ rte_free(internals->if_name);
rte_free(internals->rx_queue);
rte_free(internals->tx_queue);
@@ -752,9 +752,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
PMD_LOG_ERRNO(ERR, "%s: ioctl failed (SIOCGIFINDEX)", name);
goto free_internals;
}
- (*internals)->if_name = strdup(pair->value);
+ (*internals)->if_name = rte_malloc_socket(name, ifnamelen + 1, 0, numa_node);
if ((*internals)->if_name == NULL)
goto free_internals;
+ strlcpy((*internals)->if_name, pair->value, ifnamelen + 1);
(*internals)->if_index = ifr.ifr_ifindex;
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1) {
@@ -941,7 +942,7 @@ error:
free_internals:
rte_free((*internals)->rx_queue);
rte_free((*internals)->tx_queue);
- free((*internals)->if_name);
+ rte_free((*internals)->if_name);
rte_free(*internals);
return -1;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.827302727 +0000
+++ 0055-net-af_packet-fix-crash-in-secondary-process.patch 2025-10-27 15:54:34.831950453 +0000
@@ -1 +1 @@
-From d57124f60ef60b24cd39e895cf6d211b93b897ae Mon Sep 17 00:00:00 2001
+From 1abf7e31f268f3ec07df0ef96f612cc9f6a9d332 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d57124f60ef60b24cd39e895cf6d211b93b897ae ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index ff13bf09fb..ff873856cb 100644
+index fb9c3d74f9..3ff821f286 100644
@@ -26 +27 @@
-@@ -830,6 +830,7 @@ Kefu Chai <tchaikov@gmail.com>
+@@ -729,6 +729,7 @@ Kefu Chai <tchaikov@gmail.com>
@@ -35 +36 @@
-index 85bc1201b4..de7ff63527 100644
+index 0b059bfd0b..6803502c74 100644
@@ -38 +39 @@
-@@ -525,7 +525,7 @@ eth_dev_close(struct rte_eth_dev *dev)
+@@ -462,7 +462,7 @@ eth_dev_close(struct rte_eth_dev *dev)
@@ -47 +48 @@
-@@ -875,9 +875,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
+@@ -752,9 +752,10 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
@@ -59 +60 @@
-@@ -1063,7 +1064,7 @@ error:
+@@ -941,7 +942,7 @@ error:
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ark: remove double mbuf free' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (53 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/af_packet: fix crash in secondary process' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " luca.boccassi
` (22 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: John Miller; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/ea33b28d560769ab9bcc6b8c076f4df6bb7bc104
Thanks.
Luca Boccassi
---
From ea33b28d560769ab9bcc6b8c076f4df6bb7bc104 Mon Sep 17 00:00:00 2001
From: John Miller <john.miller@atomicrules.com>
Date: Mon, 15 Sep 2025 11:02:02 -0400
Subject: [PATCH] net/ark: remove double mbuf free
[ upstream commit f8c85054cc9cb160ca12e1bf96b569e654f96c74 ]
Fixes: 8b154b690266 ("net/ark: add Rx initial version")
Signed-off-by: John Miller <john.miller@atomicrules.com>
---
drivers/net/ark/ark_ethdev_rx.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c
index 38bc69dff4..a016bf77c0 100644
--- a/drivers/net/ark/ark_ethdev_rx.c
+++ b/drivers/net/ark/ark_ethdev_rx.c
@@ -530,7 +530,6 @@ void
eth_ark_dev_rx_queue_release(void *vqueue)
{
struct ark_rx_queue *queue;
- uint32_t i;
queue = (struct ark_rx_queue *)vqueue;
if (queue == 0)
@@ -543,9 +542,6 @@ eth_ark_dev_rx_queue_release(void *vqueue)
/* Need to clear out mbufs here, dropping packets along the way */
eth_ark_rx_queue_drain(queue);
- for (i = 0; i < queue->queue_size; ++i)
- rte_pktmbuf_free(queue->reserve_q[i]);
-
rte_free(queue->reserve_q);
rte_free(queue->paddress_q);
rte_free(queue);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.860087164 +0000
+++ 0056-net-ark-remove-double-mbuf-free.patch 2025-10-27 15:54:34.831950453 +0000
@@ -1 +1 @@
-From f8c85054cc9cb160ca12e1bf96b569e654f96c74 Mon Sep 17 00:00:00 2001
+From ea33b28d560769ab9bcc6b8c076f4df6bb7bc104 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f8c85054cc9cb160ca12e1bf96b569e654f96c74 ]
+
@@ -7 +8,0 @@
-Cc: stable@dpdk.org
@@ -15 +16 @@
-index 2fff0ffded..ce458a5a96 100644
+index 38bc69dff4..a016bf77c0 100644
@@ -18 +19 @@
-@@ -538,7 +538,6 @@ void
+@@ -530,7 +530,6 @@ void
@@ -26 +27 @@
-@@ -551,9 +550,6 @@ eth_ark_dev_rx_queue_release(void *vqueue)
+@@ -543,9 +542,6 @@ eth_ark_dev_rx_queue_release(void *vqueue)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/hns3: fix VLAN tag loss for short tunnel frame' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (54 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ark: remove double mbuf free' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'ethdev: fix VLAN filter parameter description' " luca.boccassi
` (21 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Xingui Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/a93b0c242f9ec715d68fa676c74baa978ecdf0d1
Thanks.
Luca Boccassi
---
From a93b0c242f9ec715d68fa676c74baa978ecdf0d1 Mon Sep 17 00:00:00 2001
From: Xingui Yang <yangxingui@huawei.com>
Date: Mon, 29 Sep 2025 19:35:53 +0800
Subject: [PATCH] net/hns3: fix VLAN tag loss for short tunnel frame
[ upstream commit 2262fc29485bd863db55e820a194bf1e4be8a87c ]
When the hardware handles short tunnel frames below 65 bytes, the VLAN tag
will be lost if VLAN insert or QinQ insert is enabled. Therefore, the
packet size of the tunnel frame is padded to 65 bytes to fix this issue.
Fixes: de620754a109 ("net/hns3: fix sending packets less than 60 bytes")
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
---
drivers/net/hns3/hns3_ethdev.h | 1 +
drivers/net/hns3/hns3_rxtx.c | 48 +++++++++++++++++++++++-----------
2 files changed, 34 insertions(+), 15 deletions(-)
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index 9ebf807202..864fb186b1 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -74,6 +74,7 @@
#define HNS3_DEFAULT_MTU 1500UL
#define HNS3_DEFAULT_FRAME_LEN (HNS3_DEFAULT_MTU + HNS3_ETH_OVERHEAD)
#define HNS3_HIP08_MIN_TX_PKT_LEN 33
+#define HNS3_MIN_TUN_PKT_LEN 65
#define HNS3_BITS_PER_BYTE 8
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 56060730b0..3256e12b63 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -4124,6 +4124,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
}
}
+static bool
+hns3_tx_pktmbuf_append(struct hns3_tx_queue *txq,
+ struct rte_mbuf *tx_pkt)
+{
+ uint16_t add_len = 0;
+ uint32_t ptype;
+ char *appended;
+
+ if (unlikely(tx_pkt->ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ) &&
+ rte_pktmbuf_pkt_len(tx_pkt) < HNS3_MIN_TUN_PKT_LEN)) {
+ ptype = rte_net_get_ptype(tx_pkt, NULL, RTE_PTYPE_L2_MASK |
+ RTE_PTYPE_L3_MASK | RTE_PTYPE_L4_MASK |
+ RTE_PTYPE_TUNNEL_MASK);
+ if (ptype & RTE_PTYPE_TUNNEL_MASK)
+ add_len = HNS3_MIN_TUN_PKT_LEN - rte_pktmbuf_pkt_len(tx_pkt);
+ } else if (unlikely(rte_pktmbuf_pkt_len(tx_pkt) < txq->min_tx_pkt_len)) {
+ add_len = txq->min_tx_pkt_len - rte_pktmbuf_pkt_len(tx_pkt);
+ }
+
+ if (unlikely(add_len > 0)) {
+ appended = rte_pktmbuf_append(tx_pkt, add_len);
+ if (appended == NULL) {
+ txq->dfx_stats.pkt_padding_fail_cnt++;
+ return false;
+ }
+ memset(appended, 0, add_len);
+ }
+
+ return true;
+}
+
uint16_t
hns3_xmit_pkts_simple(void *tx_queue,
struct rte_mbuf **tx_pkts,
@@ -4201,21 +4232,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
* by hardware in Tx direction, driver need to pad it to avoid
* error.
*/
- if (unlikely(rte_pktmbuf_pkt_len(tx_pkt) <
- txq->min_tx_pkt_len)) {
- uint16_t add_len;
- char *appended;
-
- add_len = txq->min_tx_pkt_len -
- rte_pktmbuf_pkt_len(tx_pkt);
- appended = rte_pktmbuf_append(tx_pkt, add_len);
- if (appended == NULL) {
- txq->dfx_stats.pkt_padding_fail_cnt++;
- break;
- }
-
- memset(appended, 0, add_len);
- }
+ if (!hns3_tx_pktmbuf_append(txq, tx_pkt))
+ break;
m_seg = tx_pkt;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.894420222 +0000
+++ 0057-net-hns3-fix-VLAN-tag-loss-for-short-tunnel-frame.patch 2025-10-27 15:54:34.835950552 +0000
@@ -1 +1 @@
-From 2262fc29485bd863db55e820a194bf1e4be8a87c Mon Sep 17 00:00:00 2001
+From a93b0c242f9ec715d68fa676c74baa978ecdf0d1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2262fc29485bd863db55e820a194bf1e4be8a87c ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index f6bb1b5d43..209b042816 100644
+index 9ebf807202..864fb186b1 100644
@@ -23 +24 @@
-@@ -75,6 +75,7 @@
+@@ -74,6 +74,7 @@
@@ -32 +33 @@
-index aa7ee6f3e8..df703134be 100644
+index 56060730b0..3256e12b63 100644
@@ -35 +36 @@
-@@ -4219,6 +4219,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
+@@ -4124,6 +4124,37 @@ hns3_tx_fill_hw_ring(struct hns3_tx_queue *txq,
@@ -73 +74 @@
-@@ -4296,21 +4327,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -4201,21 +4232,8 @@ hns3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'ethdev: fix VLAN filter parameter description' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (55 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix file descriptor leak on read error' " luca.boccassi
` (20 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/cecaf4c5446eb7162110f8e07d54dbbe317d48f0
Thanks.
Luca Boccassi
---
From cecaf4c5446eb7162110f8e07d54dbbe317d48f0 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Fri, 3 Oct 2025 12:09:44 +0100
Subject: [PATCH] ethdev: fix VLAN filter parameter description
[ upstream commit f7eaa9063561a130badc978f2dfe49536904c907 ]
The description of the rx_queue_id parameter was copy-pasted from the
queue mapping function without being updated. Fix the text.
Fixes: 81f9db8ecc2c ("ethdev: add vlan offload support")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
lib/ethdev/rte_ethdev.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index 896be82ee0..913ff2a9be 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -3443,7 +3443,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
* @param port_id
* The port identifier of the Ethernet device.
* @param rx_queue_id
- * The index of the receive queue for which a queue stats mapping is required.
+ * The index of the receive queue on which to enable/disable VLAN stripping.
* The value must be in the range [0, nb_rx_queue - 1] previously supplied
* to rte_eth_dev_configure().
* @param on
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.931233622 +0000
+++ 0058-ethdev-fix-VLAN-filter-parameter-description.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From f7eaa9063561a130badc978f2dfe49536904c907 Mon Sep 17 00:00:00 2001
+From cecaf4c5446eb7162110f8e07d54dbbe317d48f0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f7eaa9063561a130badc978f2dfe49536904c907 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -18 +19 @@
-index 091e0dad6e..2b7b195756 100644
+index 896be82ee0..913ff2a9be 100644
@@ -21 +22 @@
-@@ -3771,7 +3771,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
+@@ -3443,7 +3443,7 @@ int rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t vlan_id, int on);
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix file descriptor leak on read error' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (56 preceding siblings ...)
2025-10-27 16:19 ` patch 'ethdev: fix VLAN filter parameter description' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " luca.boccassi
` (19 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/dcae8c220ba99d898ad10c3b014392fd2e93416e
Thanks.
Luca Boccassi
---
From dcae8c220ba99d898ad10c3b014392fd2e93416e Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:00 +0530
Subject: [PATCH] net/enetfec: fix file descriptor leak on read error
[ upstream commit 2e503215692e8ab50e473e963ec58d5ab714a375 ]
The file descriptor was not closed when a read error occurred while
reading the first line from a UIO device file. This could lead to
resource leakage. The patch ensures the descriptor is closed in
case of read failure.
Fixes: b84fdd39638b ("net/enetfec: support UIO")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_uio.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/enetfec/enet_uio.c b/drivers/net/enetfec/enet_uio.c
index 6539cbb354..f41e314745 100644
--- a/drivers/net/enetfec/enet_uio.c
+++ b/drivers/net/enetfec/enet_uio.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021 NXP
+ * Copyright 2021,2024 NXP
*/
#include <stdbool.h>
@@ -66,13 +66,16 @@ file_read_first_line(const char root[], const char subdir[],
"%s/%s/%s", root, subdir, filename);
fd = open(absolute_file_name, O_RDONLY);
- if (fd <= 0)
+ if (fd < 0) {
ENETFEC_PMD_ERR("Error opening file %s", absolute_file_name);
+ return fd;
+ }
/* read UIO device name from first line in file */
ret = read(fd, line, FEC_UIO_MAX_DEVICE_FILE_NAME_LENGTH);
if (ret <= 0) {
ENETFEC_PMD_ERR("Error reading file %s", absolute_file_name);
+ close(fd);
return ret;
}
close(fd);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.967292619 +0000
+++ 0059-net-enetfec-fix-file-descriptor-leak-on-read-error.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From 2e503215692e8ab50e473e963ec58d5ab714a375 Mon Sep 17 00:00:00 2001
+From dcae8c220ba99d898ad10c3b014392fd2e93416e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2e503215692e8ab50e473e963ec58d5ab714a375 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 9f4e896985..23cb4e7e93 100644
+index 6539cbb354..f41e314745 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix out-of-bounds access in UIO mapping' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (57 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix file descriptor leak on read error' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix buffer descriptor size configuration' " luca.boccassi
` (18 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Vanshika Shukla; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/059f9f130cb425d9186563ce7e5142ed0554ec56
Thanks.
Luca Boccassi
---
From 059f9f130cb425d9186563ce7e5142ed0554ec56 Mon Sep 17 00:00:00 2001
From: Vanshika Shukla <vanshika.shukla@nxp.com>
Date: Mon, 6 Oct 2025 13:34:01 +0530
Subject: [PATCH] net/enetfec: fix out-of-bounds access in UIO mapping
[ upstream commit 22b0837bd93a777b8ca7fcf234985175e456a4f5 ]
NXP internal Coverity flagged a potential out-of-bounds
access due to invalid mapping size. This patch adds a check to
ensure the mapping size is within valid bounds before proceeding
with memory mapping.
Fixes: b84fdd39638b ("net/enetfec: support UIO")
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_uio.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_uio.c b/drivers/net/enetfec/enet_uio.c
index f41e314745..786e7b6a0e 100644
--- a/drivers/net/enetfec/enet_uio.c
+++ b/drivers/net/enetfec/enet_uio.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021,2024 NXP
+ * Copyright 2021,2024-2025 NXP
*/
#include <stdbool.h>
@@ -142,6 +142,10 @@ uio_map_mem(int uio_device_fd, int uio_device_id,
}
/* Read mapping size and physical address expressed in hexa(base 16) */
uio_map_size = strtol(uio_map_size_str, NULL, 16);
+ if (uio_map_size <= 0 || uio_map_size > INT_MAX) {
+ ENETFEC_PMD_ERR("Invalid mapping size: %u.", uio_map_size);
+ return NULL;
+ }
uio_map_p_addr = strtol(uio_map_p_addr_str, NULL, 16);
if (uio_map_id == 0) {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:36.999662087 +0000
+++ 0060-net-enetfec-fix-out-of-bounds-access-in-UIO-mapping.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From 22b0837bd93a777b8ca7fcf234985175e456a4f5 Mon Sep 17 00:00:00 2001
+From 059f9f130cb425d9186563ce7e5142ed0554ec56 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 22b0837bd93a777b8ca7fcf234985175e456a4f5 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 23cb4e7e93..f32d5e1b1e 100644
+index f41e314745..786e7b6a0e 100644
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix buffer descriptor size configuration' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (58 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix Tx queue free' " luca.boccassi
` (17 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/88b56e48b6d7424a0792ed714489390bc8d848de
Thanks.
Luca Boccassi
---
From 88b56e48b6d7424a0792ed714489390bc8d848de Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:02 +0530
Subject: [PATCH] net/enetfec: fix buffer descriptor size configuration
[ upstream commit f034c096b86ed79345cc1f83c6191713b2814fb0 ]
The driver previously allowed arbitrary descriptor counts, which could
lead to misaligned buffer allocations. This patch enforces the use of
fixed descriptor ring sizes for both RX and TX queues, ensuring proper
buffer allocation and avoiding potential runtime issues.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index d7a1121ff4..27f338a9af 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -389,7 +389,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
}
- if (nb_desc > MAX_TX_BD_RING_SIZE) {
+ if (nb_desc != MAX_TX_BD_RING_SIZE) {
nb_desc = MAX_TX_BD_RING_SIZE;
ENETFEC_PMD_WARN("modified the nb_desc to MAX_TX_BD_RING_SIZE");
}
@@ -473,7 +473,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
return -ENOMEM;
}
- if (nb_rx_desc > MAX_RX_BD_RING_SIZE) {
+ if (nb_rx_desc != MAX_RX_BD_RING_SIZE) {
nb_rx_desc = MAX_RX_BD_RING_SIZE;
ENETFEC_PMD_WARN("modified the nb_desc to MAX_RX_BD_RING_SIZE");
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.031667123 +0000
+++ 0061-net-enetfec-fix-buffer-descriptor-size-configuration.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From f034c096b86ed79345cc1f83c6191713b2814fb0 Mon Sep 17 00:00:00 2001
+From 88b56e48b6d7424a0792ed714489390bc8d848de Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f034c096b86ed79345cc1f83c6191713b2814fb0 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index 7c2926409e..f7a45fcd4d 100644
+index d7a1121ff4..27f338a9af 100644
@@ -24 +25 @@
-@@ -384,7 +384,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -389,7 +389,7 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
@@ -33 +34 @@
-@@ -462,7 +462,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -473,7 +473,7 @@ enetfec_rx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix Tx queue free' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (59 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix buffer descriptor size configuration' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix checksum flag handling and error return' " luca.boccassi
` (16 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/0162bc45e694d4c6b9a09c6155d9c09286d9d8b5
Thanks.
Luca Boccassi
---
From 0162bc45e694d4c6b9a09c6155d9c09286d9d8b5 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:03 +0530
Subject: [PATCH] net/enetfec: fix Tx queue free
[ upstream commit f0aa80200d87e38a613af1181a2b1048bd512c76 ]
The TX queue cleanup mistakenly freed RX queue pointers instead of TX
queue pointers. This patch corrects the loop to free the correct memory.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index 27f338a9af..2f920faf3b 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -349,7 +349,7 @@ enet_free_queue(struct rte_eth_dev *dev)
for (i = 0; i < dev->data->nb_rx_queues; i++)
rte_free(fep->rx_queues[i]);
for (i = 0; i < dev->data->nb_tx_queues; i++)
- rte_free(fep->rx_queues[i]);
+ rte_free(fep->tx_queues[i]);
}
static const unsigned short offset_des_active_rxq[] = {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.064529467 +0000
+++ 0062-net-enetfec-fix-Tx-queue-free.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From f0aa80200d87e38a613af1181a2b1048bd512c76 Mon Sep 17 00:00:00 2001
+From 0162bc45e694d4c6b9a09c6155d9c09286d9d8b5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit f0aa80200d87e38a613af1181a2b1048bd512c76 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index f7a45fcd4d..16f36a53f1 100644
+index 27f338a9af..2f920faf3b 100644
@@ -22 +23 @@
-@@ -350,7 +350,7 @@ enet_free_queue(struct rte_eth_dev *dev)
+@@ -349,7 +349,7 @@ enet_free_queue(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix checksum flag handling and error return' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (60 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix Tx queue free' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: reject multi-queue configuration' " luca.boccassi
` (15 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/d0777ba4054c3ae9b0555681171076af51db37f6
Thanks.
Luca Boccassi
---
From d0777ba4054c3ae9b0555681171076af51db37f6 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:04 +0530
Subject: [PATCH] net/enetfec: fix checksum flag handling and error return
[ upstream commit b35089c52802378ed267717f069aa57cb8dce5d2 ]
- Corrects the logic for setting RX checksum flags based on error.
- Updates TX checksum offload condition to check for TX flags.
- Fixes incorrect error return in RX queue setup by replacing `errno`
with `-ENOMEM`.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_rxtx.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/enetfec/enet_rxtx.c b/drivers/net/enetfec/enet_rxtx.c
index 0aea8b240d..ea2c28a26b 100644
--- a/drivers/net/enetfec/enet_rxtx.c
+++ b/drivers/net/enetfec/enet_rxtx.c
@@ -121,10 +121,11 @@ enetfec_recv_pkts(void *rxq1, struct rte_mbuf **rx_pkts,
(rxq->fep->flag_csum & RX_FLAG_CSUM_EN)) {
if ((rte_read32(&ebdp->bd_esc) &
rte_cpu_to_le_32(RX_FLAG_CSUM_ERR)) == 0) {
- /* don't check it */
- mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_BAD;
- } else {
+ /* No checksum error - checksum is good */
mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_GOOD;
+ } else {
+ /* Checksum error detected */
+ mbuf->ol_flags = RTE_MBUF_F_RX_IP_CKSUM_BAD;
}
}
@@ -238,7 +239,8 @@ enetfec_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
if (txq->fep->bufdesc_ex) {
struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
- if (mbuf->ol_flags == RTE_MBUF_F_RX_IP_CKSUM_GOOD)
+ if (mbuf->ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_TCP_CKSUM |
+ RTE_MBUF_F_TX_UDP_CKSUM | RTE_MBUF_F_TX_SCTP_CKSUM))
estatus |= TX_BD_PINS | TX_BD_IINS;
rte_write32(0, &ebdp->bd_bdu);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.097264651 +0000
+++ 0063-net-enetfec-fix-checksum-flag-handling-and-error-ret.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From b35089c52802378ed267717f069aa57cb8dce5d2 Mon Sep 17 00:00:00 2001
+From d0777ba4054c3ae9b0555681171076af51db37f6 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b35089c52802378ed267717f069aa57cb8dce5d2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: reject multi-queue configuration' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (61 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix checksum flag handling and error return' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " luca.boccassi
` (14 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/e2a01705fc3fc1d36e39e1876d94fd98ff834bdf
Thanks.
Luca Boccassi
---
From e2a01705fc3fc1d36e39e1876d94fd98ff834bdf Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:05 +0530
Subject: [PATCH] net/enetfec: reject multi-queue configuration
[ upstream commit b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 ]
The enetfec PMD currently supports only a single TX queue. This patch
adds a check to prevent users from configuring more than one queue,
ensuring predictable behavior and avoiding unsupported configurations.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index 2f920faf3b..e6e74c30b8 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021 NXP
+ * Copyright 2020-2021,2023 NXP
*/
#include <inttypes.h>
@@ -382,6 +382,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -EINVAL;
}
+ if (queue_idx > 0) {
+ ENETFEC_PMD_ERR("Multi queue not supported");
+ return -EINVAL;
+ }
+
/* allocate transmit queue */
txq = rte_zmalloc(NULL, sizeof(*txq), RTE_CACHE_LINE_SIZE);
if (txq == NULL) {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.129641292 +0000
+++ 0064-net-enetfec-reject-multi-queue-configuration.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 Mon Sep 17 00:00:00 2001
+From e2a01705fc3fc1d36e39e1876d94fd98ff834bdf Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b1c162858c1efc31c8b4ac26b5943b7b8dd65bf8 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 16f36a53f1..bcecab828e 100644
+index 2f920faf3b..e6e74c30b8 100644
@@ -30,3 +31,3 @@
-@@ -377,6 +377,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
- sizeof(struct bufdesc);
- unsigned int dsize_log2 = rte_fls_u64(dsize) - 1;
+@@ -382,6 +382,11 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+ return -EINVAL;
+ }
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: fix memory leak in Rx buffer cleanup' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (62 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: reject multi-queue configuration' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: reject Tx deferred queue' " luca.boccassi
` (13 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/496f59b06f375a78775ab71d57adafea0c4abbe9
Thanks.
Luca Boccassi
---
From 496f59b06f375a78775ab71d57adafea0c4abbe9 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:06 +0530
Subject: [PATCH] net/enetfec: fix memory leak in Rx buffer cleanup
[ upstream commit 979d00728b01a77f8f67f46c7cb06e2628542d29 ]
The RX buffer cleanup logic did not check for NULL before freeing mbufs,
which could lead to undefined behavior. This patch adds a NULL check
before freeing each mbuf.
Fixes: ecae71571b0d ("net/enetfec: support Rx/Tx")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index e6e74c30b8..c2898737eb 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2020-2021,2023 NXP
+ * Copyright 2020-2021,2023-2024 NXP
*/
#include <inttypes.h>
@@ -171,8 +171,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
bdp = rxq->bd.base;
for (i = 0; i < rxq->bd.ring_size; i++) {
mbuf = rxq->rx_mbuf[i];
- rxq->rx_mbuf[i] = NULL;
- rte_pktmbuf_free(mbuf);
+ if (mbuf) {
+ rxq->rx_mbuf[i] = NULL;
+ rte_pktmbuf_free(mbuf);
+ }
bdp = enet_get_nextdesc(bdp, &rxq->bd);
}
}
@@ -558,7 +560,7 @@ err_alloc:
}
}
rte_free(rxq);
- return errno;
+ return -ENOMEM;
}
static const struct eth_dev_ops enetfec_ops = {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.162841990 +0000
+++ 0065-net-enetfec-fix-memory-leak-in-Rx-buffer-cleanup.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From 979d00728b01a77f8f67f46c7cb06e2628542d29 Mon Sep 17 00:00:00 2001
+From 496f59b06f375a78775ab71d57adafea0c4abbe9 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 979d00728b01a77f8f67f46c7cb06e2628542d29 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index bcecab828e..60bb4f7ebd 100644
+index e6e74c30b8..c2898737eb 100644
@@ -30 +31 @@
-@@ -172,8 +172,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
+@@ -171,8 +171,10 @@ enet_free_buffers(struct rte_eth_dev *dev)
@@ -43 +44 @@
-@@ -547,7 +549,7 @@ err_alloc:
+@@ -558,7 +560,7 @@ err_alloc:
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/enetfec: reject Tx deferred queue' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (63 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/tap: fix interrupt callback crash after failed start' " luca.boccassi
` (12 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: Sachin Saxena, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/4eea4fd0291f90f85ae65130bc5d399a2e099d08
Thanks.
Luca Boccassi
---
From 4eea4fd0291f90f85ae65130bc5d399a2e099d08 Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Mon, 6 Oct 2025 13:34:07 +0530
Subject: [PATCH] net/enetfec: reject Tx deferred queue
[ upstream commit dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 ]
This patch adds a check to reject configuration of Tx deferred start,
which is not supported by the enetfec PMD. This ensures that unsupported
features are explicitly handled and reported.
Fixes: bb5b5bf1e5c6 ("net/enetfec: support queue configuration")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
---
drivers/net/enetfec/enet_ethdev.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/enetfec/enet_ethdev.c b/drivers/net/enetfec/enet_ethdev.c
index c2898737eb..2b36176ab6 100644
--- a/drivers/net/enetfec/enet_ethdev.c
+++ b/drivers/net/enetfec/enet_ethdev.c
@@ -389,6 +389,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
return -EINVAL;
}
+ /* Tx deferred start is not supported */
+ if (tx_conf->tx_deferred_start) {
+ ENETFEC_PMD_ERR("Tx deferred start not supported");
+ return -EINVAL;
+ }
+
/* allocate transmit queue */
txq = rte_zmalloc(NULL, sizeof(*txq), RTE_CACHE_LINE_SIZE);
if (txq == NULL) {
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.194811518 +0000
+++ 0066-net-enetfec-reject-Tx-deferred-queue.patch 2025-10-27 15:54:34.839950653 +0000
@@ -1 +1 @@
-From dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 Mon Sep 17 00:00:00 2001
+From 4eea4fd0291f90f85ae65130bc5d399a2e099d08 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dd6b3572a310d0f3e045d8e9d1eb5f6181729d08 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 60bb4f7ebd..6d4d3e0fc2 100644
+index c2898737eb..2b36176ab6 100644
@@ -23 +24 @@
-@@ -384,6 +384,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -389,6 +389,12 @@ enetfec_tx_queue_setup(struct rte_eth_dev *dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/tap: fix interrupt callback crash after failed start' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (64 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/enetfec: reject Tx deferred queue' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " luca.boccassi
` (11 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Robin Jarry; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/1669b8b486d6a0114a2c21654a1ef5248dca4725
Thanks.
Luca Boccassi
---
From 1669b8b486d6a0114a2c21654a1ef5248dca4725 Mon Sep 17 00:00:00 2001
From: Robin Jarry <rjarry@redhat.com>
Date: Fri, 17 Oct 2025 14:19:47 +0200
Subject: [PATCH] net/tap: fix interrupt callback crash after failed start
[ upstream commit c44ed082917316257dbeb2454414932d39f9c321 ]
After moving a tap linux net device to a different namespace,
tap_link_set_up fails with an -ENODEV error. Indeed it relies on an
ioctl call using the interface name as argument:
/* with ifr->ifrn_name = "dtapX" */
ioctl(pmd->ioctl_sock, SIOCGIFFLAGS, ifr)
This causes rte_eth_dev_stop() to do nothing since the device is not
seen as started. And then, when removing the device, the interrupt
callbacks are left there.
If they are invoked, they will be so with a "freed" device pointer:
Thread 2 "dpdk-intr" hit Breakpoint 1, tap_dev_intr_handler
at ../drivers/net/tap/rte_eth_tap.c:1689
1689 struct pmd_internals *pmd = dev->data->dev_private;
(gdb) p *dev
$2 = {
...
data = 0x0,
...
state = RTE_ETH_DEV_UNUSED,
security_ctx = 0x0
}
This causes a crash when dereferencing the data pointer.
When tap_link_set_up fails, ensure to unregister the interrupt callbacks
that were just reinstalled.
Fixes: c0bddd3a057f ("net/tap: add link status notification")
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
drivers/net/tap/rte_eth_tap.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 68f9a5ce34..cb7ed40840 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -952,8 +952,10 @@ tap_dev_start(struct rte_eth_dev *dev)
return err;
err = tap_link_set_up(dev);
- if (err)
+ if (err) {
+ tap_intr_handle_set(dev, 0);
return err;
+ }
for (i = 0; i < dev->data->nb_tx_queues; i++)
dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.227582229 +0000
+++ 0067-net-tap-fix-interrupt-callback-crash-after-failed-st.patch 2025-10-27 15:54:34.843950754 +0000
@@ -1 +1 @@
-From c44ed082917316257dbeb2454414932d39f9c321 Mon Sep 17 00:00:00 2001
+From 1669b8b486d6a0114a2c21654a1ef5248dca4725 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c44ed082917316257dbeb2454414932d39f9c321 ]
+
@@ -37 +38,0 @@
-Cc: stable@dpdk.org
@@ -45 +46 @@
-index 650ddbd706..58d70f7dd6 100644
+index 68f9a5ce34..cb7ed40840 100644
@@ -48 +49 @@
-@@ -889,8 +889,10 @@ tap_dev_start(struct rte_eth_dev *dev)
+@@ -952,8 +952,10 @@ tap_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ena: fix PCI BAR mapping on 64K page size' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (65 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/tap: fix interrupt callback crash after failed start' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " luca.boccassi
` (10 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/a27f262b008305bdf84343509f9a70c13c1e16c5
Thanks.
Luca Boccassi
---
From a27f262b008305bdf84343509f9a70c13c1e16c5 Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Wed, 15 Oct 2025 15:09:16 +0300
Subject: [PATCH] net/ena: fix PCI BAR mapping on 64K page size
[ upstream commit c71e3fbee65637084e1e42500e9e6300d50f467b ]
On 64K page systems, DPDK `pci_uio` driver aligns the physical address
to a 64K boundary before assigning a virtual address.
If the original physical BAR address is not 64K-aligned,
this adjustment leads to an incorrect mapping.
This patch ensures the BAR virtual address received in the driver accounts
for both PAGE size and BAR physical offset to correctly map each BAR.
The fix is compatible for every PAGE size, applies to every used BAR,
and supports both 32/64 bit DPDK builds.
Example issue:
- BAR0 physical address: 0x80208000 (not 64K-aligned)
- DPDK aligned physical address: 0x80208000 -> 0x80200000
(masking 0x8000 offset)
- DPDK mapped physical to virtual address: 0x80200000 -> 0x1140000000
- Driver accessed BAR0 virtual address = 0x1140000000
(causing init failure)
- Resolution is to add correct offset to driver BAR0 address:
0x1140000000 + 0x8000
Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Signed-off-by: Amit Bernstein <amitbern@amazon.com>
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index e640bbae3d..079fc23f05 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -8,6 +8,7 @@
#include <rte_version.h>
#include <rte_net.h>
#include <rte_kvargs.h>
+#include <rte_eal_paging.h>
#include "ena_ethdev.h"
#include "ena_logs.h"
@@ -2084,6 +2085,24 @@ static int ena_init_once(void)
return 0;
}
+/*
+ * Returns PCI BAR virtual address.
+ * If the physical address is not page-aligned,
+ * adjusts the virtual address by the page offset.
+ * Assumes page size is a power of 2.
+ */
+static void *pci_bar_addr(struct rte_pci_device *dev, uint32_t bar)
+{
+ const struct rte_mem_resource *res = &dev->mem_resource[bar];
+ size_t offset = res->phys_addr % rte_mem_page_size();
+ void *vaddr = RTE_PTR_ADD(res->addr, offset);
+
+ PMD_INIT_LOG(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p\n",
+ bar, res->phys_addr, res->addr, offset, vaddr);
+
+ return vaddr;
+}
+
static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
{
struct ena_calc_queue_size_ctx calc_queue_ctx = { 0 };
@@ -2128,16 +2147,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
intr_handle = pci_dev->intr_handle;
- adapter->regs = pci_dev->mem_resource[ENA_REGS_BAR].addr;
- adapter->dev_mem_base = pci_dev->mem_resource[ENA_MEM_BAR].addr;
-
+ adapter->regs = pci_bar_addr(pci_dev, ENA_REGS_BAR);
if (!adapter->regs) {
PMD_INIT_LOG(CRIT, "Failed to access registers BAR(%d)\n",
ENA_REGS_BAR);
return -ENXIO;
}
-
ena_dev->reg_bar = adapter->regs;
+
+ /* Memory BAR may be NULL on non LLQ supported devices */
+ adapter->dev_mem_base = pci_bar_addr(pci_dev, ENA_MEM_BAR);
+
/* Pass device data as a pointer which can be passed to the IO functions
* by the ena_com (for example - the memory allocation).
*/
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.270665819 +0000
+++ 0068-net-ena-fix-PCI-BAR-mapping-on-64K-page-size.patch 2025-10-27 15:54:34.843950754 +0000
@@ -1 +1 @@
-From c71e3fbee65637084e1e42500e9e6300d50f467b Mon Sep 17 00:00:00 2001
+From a27f262b008305bdf84343509f9a70c13c1e16c5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit c71e3fbee65637084e1e42500e9e6300d50f467b ]
+
@@ -27 +28,0 @@
-Cc: stable@dpdk.org
@@ -33,16 +34,3 @@
- doc/guides/rel_notes/release_25_11.rst | 1 +
- drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++----
- 2 files changed, 25 insertions(+), 4 deletions(-)
-
-diff --git a/doc/guides/rel_notes/release_25_11.rst b/doc/guides/rel_notes/release_25_11.rst
-index 94e5182016..863d111c8d 100644
---- a/doc/guides/rel_notes/release_25_11.rst
-+++ b/doc/guides/rel_notes/release_25_11.rst
-@@ -109,6 +109,7 @@ New Features
- * **Updated Amazon ENA (Elastic Network Adapter) ethernet driver.**
-
- * Added support for retrieving HW timestamps for Rx packets with nanosecond resolution.
-+ * Fixed PCI BAR mapping on 64K page size.
-
- * **Added Huawei hinic3 ethernet driver.**
-
+ drivers/net/ena/ena_ethdev.c | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
@@ -50 +38 @@
-index 5147a754b2..aaa4feb11b 100644
+index e640bbae3d..079fc23f05 100644
@@ -53 +41 @@
-@@ -9,6 +9,7 @@
+@@ -8,6 +8,7 @@
@@ -61 +49 @@
-@@ -2364,6 +2365,24 @@ static int ena_init_once(void)
+@@ -2084,6 +2085,24 @@ static int ena_init_once(void)
@@ -77 +65 @@
-+ PMD_INIT_LOG_LINE(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p",
++ PMD_INIT_LOG(INFO, "PCI BAR [%u]: phys_addr=0x%" PRIx64 ", addr=%p, offset=0x%zx, adjusted_addr=%p\n",
@@ -86 +74 @@
-@@ -2409,16 +2428,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
+@@ -2128,16 +2147,17 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
@@ -95 +83 @@
- PMD_INIT_LOG_LINE(CRIT, "Failed to access registers BAR(%d)",
+ PMD_INIT_LOG(CRIT, "Failed to access registers BAR(%d)\n",
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/ena/base: fix unsafe memcpy on invalid memory' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (66 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: fix uninitialized variable' " luca.boccassi
` (9 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shai Brandes; +Cc: Amit Bernstein, Yosef Raisman, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/dc02906bd29022033d42eb96823010b852f4d100
Thanks.
Luca Boccassi
---
From dc02906bd29022033d42eb96823010b852f4d100 Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran@amazon.com>
Date: Wed, 15 Oct 2025 15:12:30 +0300
Subject: [PATCH] net/ena/base: fix unsafe memcpy on invalid memory
[ upstream commit b70db0912a6a181ecf513a4eef61153d1063c0ae ]
The return status check was placed after a memcpy operation,
which could result in copying from an invalid memory region
if the feature fetch failed.
Fixes: b68309be44c0 ("net/ena/base: update communication layer for the ENAv2")
Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
Reviewed-by: Yosef Raisman <yraisman@amazon.com>
---
drivers/net/ena/base/ena_com.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c
index 98035f3cd4..4e22b5f563 100644
--- a/drivers/net/ena/base/ena_com.c
+++ b/drivers/net/ena/base/ena_com.c
@@ -2014,13 +2014,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
} else {
rc = ena_com_get_feature(ena_dev, &get_resp,
ENA_ADMIN_MAX_QUEUES_NUM, 0);
+ if (rc)
+ return rc;
+
memcpy(&get_feat_ctx->max_queues, &get_resp.u.max_queue,
sizeof(get_resp.u.max_queue));
ena_dev->tx_max_header_size =
get_resp.u.max_queue.max_header_size;
-
- if (rc)
- return rc;
}
rc = ena_com_get_feature(ena_dev, &get_resp,
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.305959051 +0000
+++ 0069-net-ena-base-fix-unsafe-memcpy-on-invalid-memory.patch 2025-10-27 15:54:34.843950754 +0000
@@ -1 +1 @@
-From b70db0912a6a181ecf513a4eef61153d1063c0ae Mon Sep 17 00:00:00 2001
+From dc02906bd29022033d42eb96823010b852f4d100 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b70db0912a6a181ecf513a4eef61153d1063c0ae ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -21 +22 @@
-index ede3c06139..f0936a6262 100644
+index 98035f3cd4..4e22b5f563 100644
@@ -24 +25 @@
-@@ -2453,13 +2453,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
+@@ -2014,13 +2014,13 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/dpaa2: fix uninitialized variable' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (67 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: fix L3/L4 checksum results' " luca.boccassi
` (8 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Prashant Gupta; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/36e67b7e40dad7c12ebd7383c11d823e8b7ec8a1
Thanks.
Luca Boccassi
---
From 36e67b7e40dad7c12ebd7383c11d823e8b7ec8a1 Mon Sep 17 00:00:00 2001
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Date: Thu, 16 Oct 2025 15:57:51 +0530
Subject: [PATCH] net/dpaa2: fix uninitialized variable
[ upstream commit 058043d0590f52dd45555a362d31646c7c3ff943 ]
Initialize the kg_cfg structure before use in
rte_pmd_dpaa2_set_custom_hash(). This resolves an issue with
uninitialized memory access.
Fixes: 5f822962498e ("net/dpaa2: support custom hash key")
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
.mailmap | 1 +
drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 3ff821f286..ddc091adac 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1111,6 +1111,7 @@ Piotr Pietruszewski <piotr.pietruszewski@intel.com>
Piotr Skajewski <piotrx.skajewski@intel.com>
Pradeep Satyanarayana <pradeep@us.ibm.com>
Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
+Prashant Gupta <prashant.gupta_3@nxp.com>
Prashant Upadhyaya <prashant.upadhyaya@aricent.com> <praupadhyaya@gmail.com>
Prateek Agarwal <prateekag@cse.iitb.ac.in>
Praveen Shetty <praveen.shetty@intel.com>
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
index 4d33b51fea..2f3270fe29 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2021 NXP
+ * Copyright 2016-2021,2023-2025 NXP
*
*/
@@ -59,6 +59,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
return -ENOMEM;
}
+ memset(&kg_cfg, 0, sizeof(struct dpkg_profile_cfg));
kg_cfg.extracts[0].type = DPKG_EXTRACT_FROM_DATA;
kg_cfg.extracts[0].extract.from_data.offset = offset;
kg_cfg.extracts[0].extract.from_data.size = size;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.338688313 +0000
+++ 0070-net-dpaa2-fix-uninitialized-variable.patch 2025-10-27 15:54:34.847950853 +0000
@@ -1 +1 @@
-From 058043d0590f52dd45555a362d31646c7c3ff943 Mon Sep 17 00:00:00 2001
+From 36e67b7e40dad7c12ebd7383c11d823e8b7ec8a1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 058043d0590f52dd45555a362d31646c7c3ff943 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 984621f26b..68bebe2ee0 100644
+index 3ff821f286..ddc091adac 100644
@@ -23,2 +24,2 @@
-@@ -1266,6 +1266,7 @@ Piotr Skajewski <piotrx.skajewski@intel.com>
- Potnuri Bharat Teja <bharat@chelsio.com>
+@@ -1111,6 +1111,7 @@ Piotr Pietruszewski <piotr.pietruszewski@intel.com>
+ Piotr Skajewski <piotrx.skajewski@intel.com>
@@ -30 +31 @@
- Prathisna Padmasanan <prathisna.padmasanan@intel.com>
+ Praveen Shetty <praveen.shetty@intel.com>
@@ -32 +33 @@
-index b1d473429a..13825046d8 100644
+index 4d33b51fea..2f3270fe29 100644
@@ -39 +40 @@
-- * Copyright 2016-2021,2023-2024 NXP
+- * Copyright 2016-2021 NXP
@@ -44 +45 @@
-@@ -60,6 +60,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
+@@ -59,6 +59,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/dpaa2: fix L3/L4 checksum results' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (68 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/dpaa2: fix uninitialized variable' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: receive packets with additional parse errors' " luca.boccassi
` (7 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Brick Yang; +Cc: Gagandeep Singh, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/68a50d66909c7bb8305eac7cdd1325fcbab01341
Thanks.
Luca Boccassi
---
From 68a50d66909c7bb8305eac7cdd1325fcbab01341 Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:53 +0530
Subject: [PATCH] net/dpaa2: fix L3/L4 checksum results
[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
Layer3 and layer4 checksum validation and error
status is part of word1 of annotation area, but
driver is looking into wrong word.
This patch fixes the checksum error status in packet
parsing.
Fixes: 94d31549c380 ("net/dpaa2: support Rx checksum offload in slow parsing")
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 10 +++++-----
drivers/net/dpaa2/dpaa2_rxtx.c | 16 ++++------------
2 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
index 7e5e499b6a..4f5ac1a481 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016,2019 NXP
+ * Copyright 2016,2019,2022,2024 NXP
*
*/
@@ -298,13 +298,13 @@ struct dpaa2_faead {
#define DPAA2_ETH_FAS_PHE 0x00000020
#define DPAA2_ETH_FAS_BLE 0x00000010
/* L3 csum validation performed */
-#define DPAA2_ETH_FAS_L3CV 0x00000008
+#define DPAA2_ETH_FAS_L3CV 0x0000000800000000
/* L3 csum error */
-#define DPAA2_ETH_FAS_L3CE 0x00000004
+#define DPAA2_ETH_FAS_L3CE 0x0000000400000000
/* L4 csum validation performed */
-#define DPAA2_ETH_FAS_L4CV 0x00000002
+#define DPAA2_ETH_FAS_L4CV 0x0000000200000000
/* L4 csum error */
-#define DPAA2_ETH_FAS_L4CE 0x00000001
+#define DPAA2_ETH_FAS_L4CE 0x0000000100000000
#ifdef __cplusplus
}
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index a9de1c9f99..a40bf57004 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -196,14 +196,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
goto parse_done;
}
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_FIRST_FRAGMENT |
L3_IP_1_MORE_FRAGMENT |
@@ -243,14 +239,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
DPAA2_PMD_DP_DEBUG("(fast parse) Annotation = 0x%" PRIx64 "\t",
annotation->word4);
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+ if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L3CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
- if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+ else if (BIT_ISSET_AT_POS(annotation->word1, DPAA2_ETH_FAS_L4CE))
mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
- else
- mbuf->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
if (dpaa2_enable_ts[mbuf->port]) {
*dpaa2_timestamp_dynfield(mbuf) = annotation->word2;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.375535617 +0000
+++ 0071-net-dpaa2-fix-L3-L4-checksum-results.patch 2025-10-27 15:54:34.847950853 +0000
@@ -1 +1 @@
-From 870354264644bc8a2f014571e9a34757258d2ec8 Mon Sep 17 00:00:00 2001
+From 68a50d66909c7bb8305eac7cdd1325fcbab01341 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 870354264644bc8a2f014571e9a34757258d2ec8 ]
+
@@ -13 +14,0 @@
-Cc: stable@dpdk.org
@@ -23 +24 @@
-index d156b07087..a670098958 100644
+index 7e5e499b6a..4f5ac1a481 100644
@@ -35 +36 @@
-@@ -304,13 +304,13 @@ struct dpaa2_faead {
+@@ -298,13 +298,13 @@ struct dpaa2_faead {
@@ -54 +55 @@
-index 656a3a423f..da0c06caad 100644
+index a9de1c9f99..a40bf57004 100644
@@ -57 +58 @@
-@@ -201,14 +201,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
+@@ -196,14 +196,10 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf,
@@ -74 +75 @@
-@@ -248,14 +244,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
+@@ -243,14 +239,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr)
@@ -89,2 +90,2 @@
- if (unlikely(dpaa2_print_parser_result))
- dpaa2_print_parse_result(annotation);
+ if (dpaa2_enable_ts[mbuf->port]) {
+ *dpaa2_timestamp_dynfield(mbuf) = annotation->word2;
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'net/dpaa2: receive packets with additional parse errors' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (69 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/dpaa2: fix L3/L4 checksum results' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'crypto/qat: fix source buffer alignment' " luca.boccassi
` (6 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Brick Yang; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/d027565f4ad01f84d30bc5139d277a880d94522c
Thanks.
Luca Boccassi
---
From d027565f4ad01f84d30bc5139d277a880d94522c Mon Sep 17 00:00:00 2001
From: Brick Yang <brick.yang@nxp.com>
Date: Thu, 16 Oct 2025 15:57:54 +0530
Subject: [PATCH] net/dpaa2: receive packets with additional parse errors
[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
Also receive packets with HW parser length errors.
Thus this option allows HW to not drop packets for any kind of parser
errors.
Fixes: 4690a6114ff6 ("net/dpaa2: enable error queues optionally")
Signed-off-by: Brick Yang <brick.yang@nxp.com>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 834f904c14..1f3277ba34 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1242,7 +1242,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
err_cfg.errors = DPNI_ERROR_L3CE | DPNI_ERROR_L4CE;
/* if packet with parse error are not to be dropped */
- err_cfg.errors |= DPNI_ERROR_PHE;
+ err_cfg.errors |= DPNI_ERROR_PHE | DPNI_ERROR_BLE;
err_cfg.error_action = DPNI_ERROR_ACTION_CONTINUE;
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.407958547 +0000
+++ 0072-net-dpaa2-receive-packets-with-additional-parse-erro.patch 2025-10-27 15:54:34.847950853 +0000
@@ -1 +1 @@
-From e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 Mon Sep 17 00:00:00 2001
+From d027565f4ad01f84d30bc5139d277a880d94522c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e285f6ead6f20e3d05bf1c8fd4ed119d6fda0335 ]
+
@@ -11 +12,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 41678ce09b..0fd577c448 100644
+index 834f904c14..1f3277ba34 100644
@@ -22 +23 @@
-@@ -1240,7 +1240,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
+@@ -1242,7 +1242,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'crypto/qat: fix source buffer alignment' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (70 preceding siblings ...)
2025-10-27 16:19 ` patch 'net/dpaa2: receive packets with additional parse errors' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'crypto/cnxk: refactor RSA verification' " luca.boccassi
` (5 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/4c7cbd6bf29276e8f874343f8c262756e90c4f02
Thanks.
Luca Boccassi
---
From 4c7cbd6bf29276e8f874343f8c262756e90c4f02 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Wed, 6 Aug 2025 14:48:32 +0000
Subject: [PATCH] crypto/qat: fix source buffer alignment
[ upstream commit 253174309ff7abf9eaba58d1bccf90cca7e6d215 ]
Fix performance regression resulting from using non cache-aligned
source buffers when using cryptodev API.
Fixes: fb3b9f492205 ("crypto/qat: rework burst data path")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c | 14 ++++++------
drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c | 6 ++---
drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 21 ++++++++++++++++-
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c | 24 ++++++++++----------
4 files changed, 42 insertions(+), 23 deletions(-)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
index 989caabf17..4a114a8a79 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
@@ -368,7 +368,7 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -414,7 +414,7 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -503,7 +503,7 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -555,12 +555,12 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
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);
+ vec->dest_sgl[i].vec, vec->dest_sgl[i].num, NULL, NULL);
} else {
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0))
@@ -616,7 +616,7 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -679,7 +679,7 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0) || error)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
index 1ffc4528cf..54b3295647 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
@@ -207,7 +207,7 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(qat_req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -366,7 +366,7 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -426,7 +426,7 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0) || error)
diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
index 6f676a2c44..3201e1ead8 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
@@ -411,7 +411,8 @@ static __rte_always_inline int32_t
qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
void *opaque, struct qat_sym_op_cookie *cookie,
struct rte_crypto_vec *src_vec, uint16_t n_src,
- struct rte_crypto_vec *dst_vec, uint16_t n_dst)
+ struct rte_crypto_vec *dst_vec, uint16_t n_dst,
+ union rte_crypto_sym_ofs *ofs, struct rte_crypto_op *op)
{
struct qat_sgl *list;
uint32_t i;
@@ -483,6 +484,24 @@ qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
dst_data_start = src_data_start;
}
+ /* For crypto API only try to align the in-place buffers*/
+ if (op != NULL && likely(n_dst == 0)) {
+ uint16_t offset = src_data_start & RTE_CACHE_LINE_MASK;
+ if (offset) {
+ rte_iova_t buff_addr = rte_mbuf_iova_get(op->sym->m_src);
+ /* make sure src_data_start is still within the buffer */
+ if (src_data_start - offset >= buff_addr) {
+ src_data_start -= offset;
+ dst_data_start = src_data_start;
+ ofs->ofs.auth.head += offset;
+ ofs->ofs.cipher.head += offset;
+ tl_src += offset;
+ total_len_src = tl_src;
+ total_len_dst = tl_src;
+ }
+ }
+ }
+
req->comn_mid.src_data_addr = src_data_start;
req->comn_mid.dest_data_addr = dst_data_start;
req->comn_mid.src_length = total_len_src;
diff --git a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
index 1856770522..be50f5049f 100644
--- a/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
+++ b/drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
@@ -236,7 +236,7 @@ qat_sym_build_op_cipher_gen1(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -281,7 +281,7 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -328,7 +328,7 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -375,7 +375,7 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
}
total_len = qat_sym_build_req_set_data(req, in_op, cookie,
- in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num);
+ in_sgl.vec, in_sgl.num, out_sgl.vec, out_sgl.num, &ofs, op);
if (unlikely(total_len < 0)) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
return -EINVAL;
@@ -508,7 +508,7 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -569,7 +569,7 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0 || error))
@@ -622,7 +622,7 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -690,7 +690,7 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0 || error))
@@ -749,7 +749,7 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -818,7 +818,7 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0 || error))
@@ -882,7 +882,7 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
rte_prefetch0((uint8_t *)tx_queue->base_addr + tail);
data_len = qat_sym_build_req_set_data(req, user_data, cookie,
- data, n_data_vecs, NULL, 0);
+ data, n_data_vecs, NULL, 0, NULL, NULL);
if (unlikely(data_len < 0))
return -1;
@@ -942,7 +942,7 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
data_len = qat_sym_build_req_set_data(req,
user_data[i], cookie,
vec->src_sgl[i].vec,
- vec->src_sgl[i].num, NULL, 0);
+ vec->src_sgl[i].num, NULL, 0, NULL, NULL);
}
if (unlikely(data_len < 0) || error)
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.440334027 +0000
+++ 0073-crypto-qat-fix-source-buffer-alignment.patch 2025-10-27 15:54:34.851950954 +0000
@@ -1 +1 @@
-From 253174309ff7abf9eaba58d1bccf90cca7e6d215 Mon Sep 17 00:00:00 2001
+From 4c7cbd6bf29276e8f874343f8c262756e90c4f02 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 253174309ff7abf9eaba58d1bccf90cca7e6d215 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -22 +23 @@
-index 0dcb5a7cb4..c196cf3cdb 100644
+index 989caabf17..4a114a8a79 100644
@@ -25 +26 @@
-@@ -422,7 +422,7 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
+@@ -368,7 +368,7 @@ qat_sym_build_op_aead_gen3(void *in_op, struct qat_sym_session *ctx,
@@ -34 +35 @@
-@@ -466,7 +466,7 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
+@@ -414,7 +414,7 @@ qat_sym_build_op_auth_gen3(void *in_op, struct qat_sym_session *ctx,
@@ -43 +44 @@
-@@ -564,7 +564,7 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -503,7 +503,7 @@ qat_sym_dp_enqueue_single_aead_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -52 +53,7 @@
-@@ -623,7 +623,7 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+@@ -555,12 +555,12 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
+ 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);
++ vec->dest_sgl[i].vec, vec->dest_sgl[i].num, NULL, NULL);
+ } else {
@@ -60,2 +67,2 @@
- if (unlikely(data_len < 0) || error)
-@@ -677,7 +677,7 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
+ if (unlikely(data_len < 0))
+@@ -616,7 +616,7 @@ qat_sym_dp_enqueue_single_auth_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -70,7 +77 @@
-@@ -732,12 +732,12 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
- 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);
-+ vec->dest_sgl[i].vec, vec->dest_sgl[i].num, NULL, NULL);
- } else {
+@@ -679,7 +679,7 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
@@ -84 +85 @@
- if (unlikely(data_len < 0))
+ if (unlikely(data_len < 0) || error)
@@ -86 +87 @@
-index 843580af72..82c5a40501 100644
+index 1ffc4528cf..54b3295647 100644
@@ -89 +90 @@
-@@ -289,7 +289,7 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
+@@ -207,7 +207,7 @@ qat_sym_build_op_aead_gen4(void *in_op, struct qat_sym_session *ctx,
@@ -98 +99 @@
-@@ -446,7 +446,7 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
+@@ -366,7 +366,7 @@ qat_sym_dp_enqueue_single_aead_gen4(void *qp_data, uint8_t *drv_ctx,
@@ -107 +108 @@
-@@ -505,7 +505,7 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
+@@ -426,7 +426,7 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
@@ -117 +118 @@
-index 1f19c69f88..67dc889b50 100644
+index 6f676a2c44..3201e1ead8 100644
@@ -120 +121 @@
-@@ -430,7 +430,8 @@ static __rte_always_inline int32_t
+@@ -411,7 +411,8 @@ static __rte_always_inline int32_t
@@ -130 +131 @@
-@@ -502,6 +503,24 @@ qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
+@@ -483,6 +484,24 @@ qat_sym_build_req_set_data(struct icp_qat_fw_la_bulk_req *req,
@@ -156 +157 @@
-index 8cb85fd8df..6da0f6c645 100644
+index 1856770522..be50f5049f 100644
@@ -159 +160 @@
-@@ -242,7 +242,7 @@ qat_sym_build_op_cipher_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -236,7 +236,7 @@ qat_sym_build_op_cipher_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -168,2 +169,2 @@
-@@ -294,7 +294,7 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
- req->comn_hdr.serv_specif_flags, 0);
+@@ -281,7 +281,7 @@ qat_sym_build_op_auth_gen1(void *in_op, struct qat_sym_session *ctx,
+ }
@@ -177 +178 @@
-@@ -339,7 +339,7 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -328,7 +328,7 @@ qat_sym_build_op_aead_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -186 +187 @@
-@@ -384,7 +384,7 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
+@@ -375,7 +375,7 @@ qat_sym_build_op_chain_gen1(void *in_op, struct qat_sym_session *ctx,
@@ -195 +196 @@
-@@ -512,7 +512,7 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -508,7 +508,7 @@ qat_sym_dp_enqueue_single_cipher_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -204 +205 @@
-@@ -571,7 +571,7 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -569,7 +569,7 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -213 +214 @@
-@@ -623,7 +623,7 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -622,7 +622,7 @@ qat_sym_dp_enqueue_single_auth_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -231 +232 @@
-@@ -747,7 +747,7 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -749,7 +749,7 @@ qat_sym_dp_enqueue_single_chain_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -240 +241 @@
-@@ -815,7 +815,7 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -818,7 +818,7 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -249 +250 @@
-@@ -877,7 +877,7 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -882,7 +882,7 @@ qat_sym_dp_enqueue_single_aead_gen1(void *qp_data, uint8_t *drv_ctx,
@@ -258 +259 @@
-@@ -936,7 +936,7 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
+@@ -942,7 +942,7 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'crypto/cnxk: refactor RSA verification' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (71 preceding siblings ...)
2025-10-27 16:19 ` patch 'crypto/qat: fix source buffer alignment' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'test/crypto: fix mbuf handling' " luca.boccassi
` (4 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Sucharitha Sarananaga; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/3b34eb20115e16dc18577a4d5d087bb519eb73b5
Thanks.
Luca Boccassi
---
From 3b34eb20115e16dc18577a4d5d087bb519eb73b5 Mon Sep 17 00:00:00 2001
From: Sucharitha Sarananaga <ssarananaga@marvell.com>
Date: Mon, 29 Sep 2025 15:13:49 +0530
Subject: [PATCH] crypto/cnxk: refactor RSA verification
[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
This patch avoid copying the decrypted message into
the signature buffer, which is actually an input to the
verify operation. This prevents overwriting the input
buffer unnecessarily.
Fixes: 6661bedf1605 ("crypto/cnxk: add asymmetric datapath")
Signed-off-by: Sucharitha Sarananaga <ssarananaga@marvell.com>
---
drivers/crypto/cnxk/cnxk_ae.h | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h
index 156bd2e94f..231060b387 100644
--- a/drivers/crypto/cnxk/cnxk_ae.h
+++ b/drivers/crypto/cnxk/cnxk_ae.h
@@ -841,20 +841,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
case RTE_CRYPTO_ASYM_OP_VERIFY:
if (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
rsa->sign.length = rsa_ctx->n.length;
- memcpy(rsa->sign.data, rptr, rsa->sign.length);
+ if (memcmp(rptr, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
} else {
/* Get length of signed output */
- rsa->sign.length =
- rte_cpu_to_be_16(*((uint16_t *)rptr));
+ rsa->sign.length = rte_cpu_to_be_16(*((uint16_t *)rptr));
/*
* Offset output data pointer by length field
- * (2 bytes) and copy signed data.
+ * (2 bytes) and compare signed data.
*/
- memcpy(rsa->sign.data, rptr + 2, rsa->sign.length);
- }
- if (memcmp(rsa->sign.data, rsa->message.data,
- rsa->message.length)) {
- cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
+ if (memcmp(rptr + 2, rsa->message.data, rsa->message.length))
+ cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
}
break;
default:
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.474262967 +0000
+++ 0074-crypto-cnxk-refactor-RSA-verification.patch 2025-10-27 15:54:34.851950954 +0000
@@ -1 +1 @@
-From dfd038b97ec3d173ded0f985df39301b7c7662f2 Mon Sep 17 00:00:00 2001
+From 3b34eb20115e16dc18577a4d5d087bb519eb73b5 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit dfd038b97ec3d173ded0f985df39301b7c7662f2 ]
+
@@ -12 +13,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 8508ab8736..912a2a9496 100644
+index 156bd2e94f..231060b387 100644
@@ -23 +24 @@
-@@ -1592,20 +1592,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
+@@ -841,20 +841,17 @@ cnxk_ae_dequeue_rsa_op(struct rte_crypto_op *cop, uint8_t *rptr,
@@ -25 +26 @@
- if (rsa_ctx->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
+ if (rsa->padding.type == RTE_CRYPTO_RSA_PADDING_NONE) {
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'test/crypto: fix mbuf handling' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (72 preceding siblings ...)
2025-10-27 16:19 ` patch 'crypto/cnxk: refactor RSA verification' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " luca.boccassi
` (3 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Nithinsen Kaithakadan; +Cc: Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/6a8fd6242932862c080c41232f5b296dc05a59f7
Thanks.
Luca Boccassi
---
From 6a8fd6242932862c080c41232f5b296dc05a59f7 Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Date: Tue, 23 Sep 2025 14:22:54 +0000
Subject: [PATCH] test/crypto: fix mbuf handling
[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
This patch resolves the following mbuf sanity check errors.
- updating nb_segs and pkt_len in the head mbuf after
freeing intermediate nodes in the chain.
- fix incorrect usage of rte_pktmbuf_append by ensuring
the head mbuf is passed instead of an intermediate
node, allowing proper tail detection and metadata
update.
Fixes: dc3f6c5347b2 ("test/crypto: fix wireless auth digest segment")
Fixes: 43220096d66a ("test/crypto: add PDCP cases for scatter gather")
Fixes: dcdd01691f39 ("test/crypto: add GMAC SGL")
Fixes: f3dbf94be60c ("app/test: check SGL on QAT")
Signed-off-by: Nithinsen Kaithakadan <nkaithakadan@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
app/test/test_cryptodev.c | 59 ++++++++++++++++++++++++++-------------
1 file changed, 40 insertions(+), 19 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 8d58510e2d..6dc6dfb9c5 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3000,6 +3000,8 @@ create_wireless_algo_auth_cipher_operation(
uint16_t remaining_off = (auth_offset >> 3) + (auth_len >> 3);
struct rte_mbuf *sgl_buf = (op_mode == IN_PLACE ?
sym_op->m_src : sym_op->m_dst);
+ struct rte_mbuf *sgl_buf_head = sgl_buf;
+
while (remaining_off >= rte_pktmbuf_data_len(sgl_buf)) {
remaining_off -= rte_pktmbuf_data_len(sgl_buf);
sgl_buf = sgl_buf->next;
@@ -3007,11 +3009,18 @@ create_wireless_algo_auth_cipher_operation(
/* The last segment should be large enough to hold full digest */
if (sgl_buf->data_len < auth_tag_len) {
- rte_pktmbuf_free(sgl_buf->next);
- sgl_buf->next = NULL;
- TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(sgl_buf,
- auth_tag_len - sgl_buf->data_len),
- "No room to append auth tag");
+ uint16_t next_data_len = 0;
+ if (sgl_buf->next != NULL) {
+ next_data_len = sgl_buf->next->data_len;
+
+ rte_pktmbuf_free(sgl_buf->next);
+ sgl_buf->next = NULL;
+ sgl_buf_head->nb_segs -= 1;
+ sgl_buf_head->pkt_len -= next_data_len;
+ }
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(
+ sgl_buf_head, auth_tag_len - sgl_buf->data_len),
+ "No room to append auth tag");
}
sym_op->auth.digest.data = rte_pktmbuf_mtod_offset(sgl_buf,
@@ -8871,11 +8880,13 @@ test_pdcp_proto_SGL(int i, int oop,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(ut_params->obuf, "Output buffer not initialized");
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, input_vec + trn_data, to_trn);
trn_data += to_trn;
@@ -8904,7 +8915,7 @@ test_pdcp_proto_SGL(int i, int oop,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
}
@@ -13426,15 +13437,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
memset(rte_pktmbuf_mtod(buf, uint8_t *), 0,
rte_pktmbuf_tailroom(buf));
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
to_trn);
trn_data += to_trn;
- if (trn_data == tdata->plaintext.len)
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ if (trn_data == tdata->plaintext.len) {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->gmac_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append digest data");
+ }
}
ut_params->ibuf->nb_segs = segs;
@@ -14717,23 +14731,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
}
- plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
to_trn);
+ TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
memcpy(plaintext, tdata->plaintext.data + trn_data,
to_trn);
trn_data += to_trn;
if (trn_data == tdata->plaintext.len) {
if (oop) {
- if (!fragsz_oop)
- digest_mem = rte_pktmbuf_append(buf_oop,
+ if (!fragsz_oop) {
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
- } else
- digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
+ } else {
+ digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+ }
}
}
@@ -14768,16 +14787,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
buf_last_oop = buf_oop->next =
rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ TEST_ASSERT_NOT_NULL(buf_oop->next, "Unexpected end of chain");
buf_oop = buf_oop->next;
memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
0, rte_pktmbuf_tailroom(buf_oop));
- rte_pktmbuf_append(buf_oop, to_trn);
+ TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
trn_data += to_trn;
if (trn_data == tdata->plaintext.len) {
- digest_mem = rte_pktmbuf_append(buf_oop,
+ digest_mem = rte_pktmbuf_append(ut_params->obuf,
tdata->auth_tag.len);
+ TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
}
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.508616334 +0000
+++ 0075-test-crypto-fix-mbuf-handling.patch 2025-10-27 15:54:34.859951155 +0000
@@ -1 +1 @@
-From 1ff54c055d95736aae05a40b361427215c318cc1 Mon Sep 17 00:00:00 2001
+From 6a8fd6242932862c080c41232f5b296dc05a59f7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
+
@@ -18 +19,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
-index 5229ac2bf6..f092f608a9 100644
+index 8d58510e2d..6dc6dfb9c5 100644
@@ -30 +31 @@
-@@ -3488,6 +3488,8 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3000,6 +3000,8 @@ create_wireless_algo_auth_cipher_operation(
@@ -39 +40 @@
-@@ -3495,11 +3497,18 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3007,11 +3009,18 @@ create_wireless_algo_auth_cipher_operation(
@@ -63 +64 @@
-@@ -9795,11 +9804,13 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -8871,11 +8880,13 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -79 +80 @@
-@@ -9828,7 +9839,7 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -8904,7 +8915,7 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -88 +89 @@
-@@ -15916,15 +15927,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
+@@ -13426,15 +13437,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
@@ -110 +111 @@
-@@ -17223,23 +17237,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -14717,23 +14731,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
@@ -145 +146 @@
-@@ -17274,16 +17293,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -14768,16 +14787,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'app/crypto-perf: fix plaintext size exceeds buffer size' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (73 preceding siblings ...)
2025-10-27 16:19 ` patch 'test/crypto: fix mbuf handling' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'test/crypto: fix vector initialization' " luca.boccassi
` (2 subsequent siblings)
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Shani Peretz; +Cc: Kai Ji, Akhil Goyal, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/49d89d2e003ef9b463d5e10a8a8aaab20a141285
Thanks.
Luca Boccassi
---
From 49d89d2e003ef9b463d5e10a8a8aaab20a141285 Mon Sep 17 00:00:00 2001
From: Shani Peretz <shperetz@nvidia.com>
Date: Mon, 25 Aug 2025 10:14:50 +0300
Subject: [PATCH] app/crypto-perf: fix plaintext size exceeds buffer size
[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
When test vector plaintext exceeds buffer size, only the first
max_buffer_size bytes are processed, causing incorrect digest
verification (computed vs expected mismatch).
This patch fixes this issue by checking that the plaintext size is
larger than the buffer size and returns an error with a log.
Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")
Signed-off-by: Shani Peretz <shperetz@nvidia.com>
Acked-by: Kai Ji <kai.ji@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
.../cperf_test_vector_parsing.c | 47 +++++++++++--------
1 file changed, 27 insertions(+), 20 deletions(-)
diff --git a/app/test-crypto-perf/cperf_test_vector_parsing.c b/app/test-crypto-perf/cperf_test_vector_parsing.c
index 737d61d4af..5665fb425b 100644
--- a/app/test-crypto-perf/cperf_test_vector_parsing.c
+++ b/app/test-crypto-perf/cperf_test_vector_parsing.c
@@ -308,12 +308,19 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
if (strstr(key_token, "plaintext")) {
rte_free(vector->plaintext.data);
vector->plaintext.data = data;
+
+ if (opts->test == CPERF_TEST_TYPE_VERIFY && data_length > opts->max_buffer_size) {
+ printf("Global plaintext (%u) larger than buffer_sz (%u)\n",
+ data_length, opts->max_buffer_size);
+ return -1;
+ }
+
if (tc_found)
vector->plaintext.length = data_length;
else {
if (opts->max_buffer_size > data_length) {
- printf("Global plaintext shorter than "
- "buffer_sz\n");
+ printf("Global plaintext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
vector->plaintext.length = opts->max_buffer_size;
@@ -326,8 +333,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->cipher_key.length = data_length;
else {
if (opts->cipher_key_sz > data_length) {
- printf("Global cipher_key shorter than "
- "cipher_key_sz\n");
+ printf("Global cipher_key (%u) shorter than "
+ "cipher_key_sz (%u)\n", data_length, opts->cipher_key_sz);
return -1;
}
vector->cipher_key.length = opts->cipher_key_sz;
@@ -340,8 +347,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->auth_key.length = data_length;
else {
if (opts->auth_key_sz > data_length) {
- printf("Global auth_key shorter than "
- "auth_key_sz\n");
+ printf("Global auth_key (%u) shorter than "
+ "auth_key_sz (%u)\n", data_length, opts->auth_key_sz);
return -1;
}
vector->auth_key.length = opts->auth_key_sz;
@@ -354,8 +361,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aead_key.length = data_length;
else {
if (opts->aead_key_sz > data_length) {
- printf("Global aead_key shorter than "
- "aead_key_sz\n");
+ printf("Global aead_key (%u) shorter than "
+ "aead_key_sz (%u)\n", data_length, opts->aead_key_sz);
return -1;
}
vector->aead_key.length = opts->aead_key_sz;
@@ -368,8 +375,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->cipher_iv.length = data_length;
else {
if (opts->cipher_iv_sz > data_length) {
- printf("Global cipher iv shorter than "
- "cipher_iv_sz\n");
+ printf("Global cipher iv (%u) shorter than "
+ "cipher_iv_sz (%u)\n", data_length, opts->cipher_iv_sz);
return -1;
}
vector->cipher_iv.length = opts->cipher_iv_sz;
@@ -382,8 +389,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->auth_iv.length = data_length;
else {
if (opts->auth_iv_sz > data_length) {
- printf("Global auth iv shorter than "
- "auth_iv_sz\n");
+ printf("Global auth iv (%u) shorter than "
+ "auth_iv_sz (%u)\n", data_length, opts->auth_iv_sz);
return -1;
}
vector->auth_iv.length = opts->auth_iv_sz;
@@ -396,8 +403,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aead_iv.length = data_length;
else {
if (opts->aead_iv_sz > data_length) {
- printf("Global aead iv shorter than "
- "aead_iv_sz\n");
+ printf("Global aead iv (%u) shorter than "
+ "aead_iv_sz (%u)\n", data_length, opts->aead_iv_sz);
return -1;
}
vector->aead_iv.length = opts->aead_iv_sz;
@@ -410,8 +417,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->ciphertext.length = data_length;
else {
if (opts->max_buffer_size > data_length) {
- printf("Global ciphertext shorter than "
- "buffer_sz\n");
+ printf("Global ciphertext (%u) shorter than "
+ "buffer_sz (%u)\n", data_length, opts->max_buffer_size);
return -1;
}
vector->ciphertext.length = opts->max_buffer_size;
@@ -425,8 +432,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->aad.length = data_length;
else {
if (opts->aead_aad_sz > data_length) {
- printf("Global aad shorter than "
- "aead_aad_sz\n");
+ printf("Global aad (%u) shorter than "
+ "aead_aad_sz (%u)\n", data_length, opts->aead_aad_sz);
return -1;
}
vector->aad.length = opts->aead_aad_sz;
@@ -441,8 +448,8 @@ parse_entry(char *entry, struct cperf_test_vector *vector,
vector->digest.length = data_length;
else {
if (opts->digest_sz > data_length) {
- printf("Global digest shorter than "
- "digest_sz\n");
+ printf("Global digest (%u) shorter than "
+ "digest_sz (%u)\n", data_length, opts->digest_sz);
return -1;
}
vector->digest.length = opts->digest_sz;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.551745641 +0000
+++ 0076-app-crypto-perf-fix-plaintext-size-exceeds-buffer-si.patch 2025-10-27 15:54:34.859951155 +0000
@@ -1 +1 @@
-From b2988038656b03d1c019114fbe7609018cc16e87 Mon Sep 17 00:00:00 2001
+From 49d89d2e003ef9b463d5e10a8a8aaab20a141285 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b2988038656b03d1c019114fbe7609018cc16e87 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'test/crypto: fix vector initialization' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (74 preceding siblings ...)
2025-10-27 16:19 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'crypto/virtio: fix cookies leak' " luca.boccassi
2025-10-27 16:19 ` patch 'sched: fix WRR parameter data type' " luca.boccassi
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Radu Nicolau; +Cc: Kai Ji, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c84b443d8e726bcc059d5637084a537676561a07
Thanks.
Luca Boccassi
---
From c84b443d8e726bcc059d5637084a537676561a07 Mon Sep 17 00:00:00 2001
From: Radu Nicolau <radu.nicolau@intel.com>
Date: Thu, 11 Sep 2025 13:14:38 +0000
Subject: [PATCH] test/crypto: fix vector initialization
[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
For CPU crypto code path make sure all fields in the
rte_crypto_sym_vec struct are initialised.
Fixes: 2a9f232ce60e ("test/crypto: add CPU crypto mode cases")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
---
app/test/test_cryptodev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 6dc6dfb9c5..f8de6e8650 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -207,7 +207,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
struct rte_crypto_vec data_vec[UINT8_MAX], dest_data_vec[UINT8_MAX];
struct rte_crypto_va_iova_ptr cipher_iv, digest, aad_auth_iv;
union rte_crypto_sym_ofs ofs;
- struct rte_crypto_sym_vec vec;
+ struct rte_crypto_sym_vec vec = {0};
struct rte_crypto_sgl sgl, dest_sgl;
uint32_t max_len;
union rte_cryptodev_session_ctx sess;
@@ -444,7 +444,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
struct rte_crypto_sym_op *sop;
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, aad_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
@@ -490,7 +490,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
struct rte_crypto_sym_op *sop;
union rte_crypto_sym_ofs ofs;
struct rte_crypto_sgl sgl;
- struct rte_crypto_sym_vec symvec;
+ struct rte_crypto_sym_vec symvec = {0};
struct rte_crypto_va_iova_ptr iv_ptr, digest_ptr;
struct rte_crypto_vec vec[UINT8_MAX];
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.581989963 +0000
+++ 0077-test-crypto-fix-vector-initialization.patch 2025-10-27 15:54:34.867951355 +0000
@@ -1 +1 @@
-From 78ed9449a63ecc00b059ddc24dd04df8a119f5de Mon Sep 17 00:00:00 2001
+From c84b443d8e726bcc059d5637084a537676561a07 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 78ed9449a63ecc00b059ddc24dd04df8a119f5de ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -19 +20 @@
-index 50de525897..6e5f308e55 100644
+index 6dc6dfb9c5..f8de6e8650 100644
@@ -22 +23 @@
-@@ -289,7 +289,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
+@@ -207,7 +207,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
@@ -31 +32 @@
-@@ -526,7 +526,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
+@@ -444,7 +444,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op)
@@ -40 +41 @@
-@@ -572,7 +572,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
+@@ -490,7 +490,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op)
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'crypto/virtio: fix cookies leak' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (75 preceding siblings ...)
2025-10-27 16:19 ` patch 'test/crypto: fix vector initialization' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
2025-10-27 16:19 ` patch 'sched: fix WRR parameter data type' " luca.boccassi
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Gowrishankar Muthukrishnan; +Cc: dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/385b79cfbcc6fdce77b65d51ea6eeff9ec2d6a94
Thanks.
Luca Boccassi
---
From 385b79cfbcc6fdce77b65d51ea6eeff9ec2d6a94 Mon Sep 17 00:00:00 2001
From: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Date: Sat, 11 Oct 2025 10:07:03 +0530
Subject: [PATCH] crypto/virtio: fix cookies leak
[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
Free memory used by virt queue op cookies in dev close.
Fixes: 6f0175ff53e0 ("crypto/virtio: support basic PMD ops")
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
drivers/crypto/virtio/virtio_cryptodev.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c
index 6020e70a5a..c160f53315 100644
--- a/drivers/crypto/virtio/virtio_cryptodev.c
+++ b/drivers/crypto/virtio/virtio_cryptodev.c
@@ -266,6 +266,7 @@ void
virtio_crypto_queue_release(struct virtqueue *vq)
{
struct virtio_crypto_hw *hw;
+ uint16_t i;
PMD_INIT_FUNC_TRACE();
@@ -276,6 +277,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
rte_memzone_free(vq->mz);
rte_mempool_free(vq->mpool);
+ for (i = 0; i < vq->vq_nentries; i++)
+ rte_free(vq->vq_descx[i].cookie);
+
rte_free(vq);
}
}
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.623037416 +0000
+++ 0078-crypto-virtio-fix-cookies-leak.patch 2025-10-27 15:54:34.867951355 +0000
@@ -1 +1 @@
-From 8b0d855fd98c6c88665489fdba12f8e603deae21 Mon Sep 17 00:00:00 2001
+From 385b79cfbcc6fdce77b65d51ea6eeff9ec2d6a94 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8b0d855fd98c6c88665489fdba12f8e603deae21 ]
+
@@ -9 +10,0 @@
-Cc: stable@dpdk.org
@@ -17 +18 @@
-index d661ce8025..6f079f15f6 100644
+index 6020e70a5a..c160f53315 100644
@@ -20 +21 @@
-@@ -68,6 +68,7 @@ void
+@@ -266,6 +266,7 @@ void
@@ -28,2 +29,2 @@
-@@ -79,6 +80,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
- hw->vqs[vq->vq_queue_index] = NULL;
+@@ -276,6 +277,9 @@ virtio_crypto_queue_release(struct virtqueue *vq)
+
^ permalink raw reply [flat|nested] 79+ messages in thread
* patch 'sched: fix WRR parameter data type' has been queued to stable release 22.11.11
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
` (76 preceding siblings ...)
2025-10-27 16:19 ` patch 'crypto/virtio: fix cookies leak' " luca.boccassi
@ 2025-10-27 16:19 ` luca.boccassi
77 siblings, 0 replies; 79+ messages in thread
From: luca.boccassi @ 2025-10-27 16:19 UTC (permalink / raw)
To: Megha Ajmera; +Cc: Jasvinder Singh, Stephen Hemminger, dpdk stable
Hi,
FYI, your patch has been queued to stable release 22.11.11
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 10/29/25. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/3865b265093d1d0c8099afa40715963714275969
Thanks.
Luca Boccassi
---
From 3865b265093d1d0c8099afa40715963714275969 Mon Sep 17 00:00:00 2001
From: Megha Ajmera <megha.ajmera@intel.com>
Date: Thu, 18 Sep 2025 08:16:09 +0530
Subject: [PATCH] sched: fix WRR parameter data type
[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
wrr tokens getting truncated to uint8_t in wrr_store function() due to
type mismatch. This patch changes the data type to uint16_t.
Fixes: e16b06da0908 ("sched: remove WRR from strict priority TC queues")
Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/sched/rte_sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
index 19768d8c38..649c51f7d2 100644
--- a/lib/sched/rte_sched.c
+++ b/lib/sched/rte_sched.c
@@ -67,7 +67,7 @@ struct rte_sched_pipe {
uint64_t tc_credits[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/* Weighted Round Robin (WRR) */
- uint8_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
+ uint16_t wrr_tokens[RTE_SCHED_BE_QUEUES_PER_PIPE];
/* TC oversubscription */
uint64_t tc_ov_credits;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2025-10-27 15:54:37.654189511 +0000
+++ 0079-sched-fix-WRR-parameter-data-type.patch 2025-10-27 15:54:34.867951355 +0000
@@ -1 +1 @@
-From 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 Mon Sep 17 00:00:00 2001
+From 3865b265093d1d0c8099afa40715963714275969 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 8dc7bf943fb6fad7b30b3a494f2216c2c4cf64d7 ]
+
@@ -10 +11,0 @@
-Cc: stable@dpdk.org
@@ -20 +21 @@
-index 453f935ac8..daa31e8b99 100644
+index 19768d8c38..649c51f7d2 100644
@@ -23 +24 @@
-@@ -67,7 +67,7 @@ struct __rte_cache_aligned rte_sched_pipe {
+@@ -67,7 +67,7 @@ struct rte_sched_pipe {
^ permalink raw reply [flat|nested] 79+ messages in thread
end of thread, other threads:[~2025-10-27 16:24 UTC | newest]
Thread overview: 79+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-27 16:18 patch 'net/gve: allocate Rx QPL pages using malloc' has been queued to stable release 22.11.11 luca.boccassi
2025-10-27 16:18 ` patch 'eal: fix plugin dir walk' " luca.boccassi
2025-10-27 16:18 ` patch 'cmdline: fix port list parsing' " luca.boccassi
2025-10-27 16:18 ` patch 'cmdline: fix highest bit " luca.boccassi
2025-10-27 16:18 ` patch 'tailq: fix lookup macro' " luca.boccassi
2025-10-27 16:18 ` patch 'hash: fix unaligned access in predictable RSS' " luca.boccassi
2025-10-27 16:18 ` patch 'graph: fix unaligned access in stats' " luca.boccassi
2025-10-27 16:18 ` patch 'eventdev: fix listing timer adapters with telemetry' " luca.boccassi
2025-10-27 16:18 ` patch 'cfgfile: fix section count with no name' " luca.boccassi
2025-10-27 16:18 ` patch 'net/vmxnet3: fix mapping of mempools to queues' " luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: increase size of set cores list command' " luca.boccassi
2025-10-27 16:18 ` patch 'net/dpaa2: fix shaper rate' " luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: monitor state of primary process' " luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: fix conntrack action query' " luca.boccassi
2025-10-27 16:18 ` patch 'doc: add conntrack state inspect command to testpmd guide' " luca.boccassi
2025-10-27 16:18 ` patch 'app/testpmd: validate DSCP and VLAN for meter creation' " luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix min and max MTU reporting' " luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix unsupported flow rule port action' " luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix non-template age rules flush' " luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix connection tracking state item validation' " luca.boccassi
2025-10-27 16:18 ` patch 'net/mlx5: fix indirect flow age action handling' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix Direct Verbs counter offset detection' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix interface name parameter definition' " luca.boccassi
2025-10-27 16:19 ` patch 'net/intel: fix assumption about tag placement order' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix adding special words' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in HW profile handling' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix memory leak in recipe " luca.boccassi
2025-10-27 16:19 ` patch 'eal: fix DMA mask validation with IOVA mode option' " luca.boccassi
2025-10-27 16:19 ` patch 'eal: fix MP socket cleanup' " luca.boccassi
2025-10-27 16:19 ` patch 'crypto/ipsec_mb: fix QP release in secondary' " luca.boccassi
2025-10-27 16:19 ` patch 'efd: fix AVX2 support' " luca.boccassi
2025-10-27 16:19 ` patch 'common/cnxk: fix async event handling' " luca.boccassi
2025-10-27 16:19 ` patch 'doc: fix feature list of ice driver' " luca.boccassi
2025-10-27 16:19 ` patch 'doc: fix feature list of iavf " luca.boccassi
2025-10-27 16:19 ` patch 'baseband/acc: fix exported header' " luca.boccassi
2025-10-27 16:19 ` patch 'gpudev: fix driver header for Windows' " luca.boccassi
2025-10-27 16:19 ` patch 'drivers: fix some exported headers' " luca.boccassi
2025-10-27 16:19 ` patch 'test/debug: fix crash with mlx5 devices' " luca.boccassi
2025-10-27 16:19 ` patch 'bus/pci: fix build with MinGW 13' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: " luca.boccassi
2025-10-27 16:19 ` patch 'dma/hisilicon: fix stop with pending transfers' " luca.boccassi
2025-10-27 16:19 ` patch 'test/dma: fix failure condition' " luca.boccassi
2025-10-27 16:19 ` patch 'fib6: fix tbl8 allocation check logic' " luca.boccassi
2025-10-27 16:19 ` patch 'vhost: fix double fetch when dequeue offloading' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice/base: fix integer overflow on NVM init' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: fix initialization with 8 ports' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: remove indirection for FDIR filters' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ice: fix memory leak in raw pattern parse' " luca.boccassi
2025-10-27 16:19 ` patch 'net/i40e: fix symmetric Toeplitz hashing for SCTP' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix multicast' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix MTU initialization' " luca.boccassi
2025-10-27 16:19 ` patch 'net/mlx5: fix leak of flow indexed pools' " luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix inconsistent lock' " luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN resources freeing' " luca.boccassi
2025-10-27 16:19 ` patch 'net/af_packet: fix crash in secondary process' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ark: remove double mbuf free' " luca.boccassi
2025-10-27 16:19 ` patch 'net/hns3: fix VLAN tag loss for short tunnel frame' " luca.boccassi
2025-10-27 16:19 ` patch 'ethdev: fix VLAN filter parameter description' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix file descriptor leak on read error' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix out-of-bounds access in UIO mapping' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix buffer descriptor size configuration' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix Tx queue free' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix checksum flag handling and error return' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: reject multi-queue configuration' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: fix memory leak in Rx buffer cleanup' " luca.boccassi
2025-10-27 16:19 ` patch 'net/enetfec: reject Tx deferred queue' " luca.boccassi
2025-10-27 16:19 ` patch 'net/tap: fix interrupt callback crash after failed start' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ena: fix PCI BAR mapping on 64K page size' " luca.boccassi
2025-10-27 16:19 ` patch 'net/ena/base: fix unsafe memcpy on invalid memory' " luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: fix uninitialized variable' " luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: fix L3/L4 checksum results' " luca.boccassi
2025-10-27 16:19 ` patch 'net/dpaa2: receive packets with additional parse errors' " luca.boccassi
2025-10-27 16:19 ` patch 'crypto/qat: fix source buffer alignment' " luca.boccassi
2025-10-27 16:19 ` patch 'crypto/cnxk: refactor RSA verification' " luca.boccassi
2025-10-27 16:19 ` patch 'test/crypto: fix mbuf handling' " luca.boccassi
2025-10-27 16:19 ` patch 'app/crypto-perf: fix plaintext size exceeds buffer size' " luca.boccassi
2025-10-27 16:19 ` patch 'test/crypto: fix vector initialization' " luca.boccassi
2025-10-27 16:19 ` patch 'crypto/virtio: fix cookies leak' " luca.boccassi
2025-10-27 16:19 ` patch 'sched: fix WRR parameter data type' " luca.boccassi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).