* [PATCH v3 01/18] bus/dpaa: fix error handling of qman_create_fq
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
` (19 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
Fix the error handling path in qman_create_fq() to properly
return error codes instead of silently ignoring failures.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 5534e1846c..9a99eb9785 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1579,6 +1579,9 @@ int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq)
err:
if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID)
qman_release_fqid(fqid);
+#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP
+ clear_fq_table_entry(fq->key);
+#endif
return -EIO;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 02/18] bus/dpaa: fix fqid endianness
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
` (18 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
In qman_fq_flow_control(), the fqid field in the management
command was set using the host-endian fqid instead of the
pre-converted big-endian fqid_be. Fix it to use fqid_be
consistent with all other enqueue paths.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 9a99eb9785..2da1b3e3f7 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1921,7 +1921,7 @@ int qman_fq_flow_control(struct qman_fq *fq, int xon)
goto out;
}
mcc = qm_mc_start(&p->p);
- mcc->alterfq.fqid = fq->fqid;
+ mcc->alterfq.fqid = fq->fqid_be;
mcc->alterfq.count = 0;
myverb = xon ? QM_MCC_VERB_ALTER_FQXON : QM_MCC_VERB_ALTER_FQXOFF;
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 03/18] bus/dpaa: fix error handling in qman_query
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
` (17 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
Optimize error handling in qman_query() to avoid redundant
checks and properly propagate error codes.
Fixes: 06268e2cb175 ("bus/dpaa: query queue frame count support")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 2da1b3e3f7..d289df2d33 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1955,11 +1955,11 @@ int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd)
cpu_relax();
DPAA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ);
res = mcr->result;
- if (res == QM_MCR_RESULT_OK)
- *fqd = mcr->queryfq.fqd;
- hw_fqd_to_cpu(fqd);
if (res != QM_MCR_RESULT_OK)
return -EIO;
+
+ *fqd = mcr->queryfq.fqd;
+ hw_fqd_to_cpu(fqd);
return 0;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 04/18] net/dpaa: fix modify cgr to use index
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (2 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
` (16 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
In dpaa_modify_cgr(), the code was always using the pointer to
the first CGR element instead of indexing by the queue index.
Fix it to use the correct CGR entry by index.
Fixes: 62f53995caaf ("net/dpaa: add frame count based tail drop with CGR")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 9f976d179b..424458857e 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -1304,7 +1304,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
rxq->nb_desc = nb_desc;
/* Enable tail drop with cgr on this queue */
qm_cgr_cs_thres_set64(&cgr_opts.cgr.cs_thres, nb_desc, 0);
- ret = qman_modify_cgr(dpaa_intf->cgr_rx, 0, &cgr_opts);
+ ret = qman_modify_cgr(&dpaa_intf->cgr_rx[queue_idx], 0, &cgr_opts);
if (ret) {
DPAA_PMD_WARN(
"rx taildrop modify fail on fqid %d (ret=%d)",
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 05/18] net/dpaa/fmlib: add null check in scheme delete
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (3 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
` (15 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Prashant Gupta
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Add a null pointer check at the entry of fm_pcd_kg_scheme_delete().
Since p_dev is assigned directly from h_scheme via a cast
(t_device *)h_scheme, checking p_dev == NULL is equivalent to
checking h_scheme == NULL. This matches the defensive pattern used
in all sibling functions in fm_lib.c and returns E_NO_DEVICE on a
null handle.
Fixes: 663ff698e38f ("net/dpaa: support VSP in fmlib")
Cc: stable@dpdk.org
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/dpaa/fmlib/fm_lib.c b/drivers/net/dpaa/fmlib/fm_lib.c
index b35feba004..65a818372e 100644
--- a/drivers/net/dpaa/fmlib/fm_lib.c
+++ b/drivers/net/dpaa/fmlib/fm_lib.c
@@ -305,6 +305,9 @@ fm_pcd_kg_scheme_delete(t_handle h_scheme)
_fml_dbg("Calling...");
+ if (p_dev == NULL)
+ return E_NO_DEVICE;
+
p_pcd_dev = (t_device *)p_dev->h_user_priv;
id.obj = UINT_TO_PTR(p_dev->id);
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 06/18] bus/dpaa: fix BMI RX stats register offset
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (4 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
` (14 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Jun Yang
From: Jun Yang <jun.yang@nxp.com>
Fix incorrect register offset for BMI RX statistics counters
in the fman.h header. The wrong offset caused incorrect stats
values to be reported.
Fixes: 0095306cdbda ("bus/dpaa: add FMan node")
Cc: stable@dpdk.org
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/include/fman.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h
index c33fe81516..6e3abf1b50 100644
--- a/drivers/bus/dpaa/include/fman.h
+++ b/drivers/bus/dpaa/include/fman.h
@@ -2,7 +2,7 @@
*
* Copyright 2010-2012 Freescale Semiconductor, Inc.
* All rights reserved.
- * Copyright 2019-2024 NXP
+ * Copyright 2019-2026 NXP
*
*/
@@ -263,8 +263,8 @@ struct rx_bmi_regs {
/**< Buffer Manager pool Information-*/
uint32_t fmbm_acnt[FMAN_PORT_MAX_EXT_POOLS_NUM];
/**< Allocate Counter-*/
- uint32_t reserved0120[16];
- /**< 0x130/0x140 - 0x15F reserved -*/
+ uint32_t reserved0140[8];
+ /**< 0x140 - 0x15F reserved -*/
uint32_t fmbm_rcgm[FMAN_PORT_CG_MAP_NUM];
/**< Congestion Group Map*/
uint32_t fmbm_mpd; /**< BM Pool Depletion */
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 07/18] bus/dpaa: fix fd leak for ccsr mmap
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (5 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
` (13 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Jun Yang
The CCSR file descriptor was kept open after mmap() was done.
Close the fd immediately after mmap() as it is no longer needed,
preventing a file descriptor leak.
Fixes: 8e253882cd31 ("bus/dpaa: support interrupt portal based fd")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
drivers/bus/dpaa/base/qbman/qman_driver.c | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c
index 23e44ac10b..71a2028383 100644
--- a/drivers/bus/dpaa/base/qbman/bman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/bman_driver.c
@@ -145,7 +145,7 @@ void bman_thread_irq(void)
int bman_init_ccsr(const struct device_node *node)
{
- static int ccsr_map_fd;
+ int ccsr_map_fd;
uint64_t phys_addr;
const uint32_t *bman_addr;
uint64_t regs_size;
@@ -169,6 +169,7 @@ int bman_init_ccsr(const struct device_node *node)
bman_ccsr_map = mmap(NULL, regs_size, PROT_READ |
PROT_WRITE, MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (bman_ccsr_map == MAP_FAILED) {
pr_err("Can not map BMan CCSR base Bman: "
"0x%x Phys: 0x%" PRIx64 " size 0x%" PRIu64,
diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c
index 3bab8b8337..45b094e0c6 100644
--- a/drivers/bus/dpaa/base/qbman/qman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
*
* Copyright 2008-2016 Freescale Semiconductor Inc.
- * Copyright 2017-2022, 2025 NXP
+ * Copyright 2017-2022, 2025-2026 NXP
*
*/
@@ -270,7 +270,7 @@ int qman_global_init(void)
const struct device_node *dt_node;
size_t lenp;
const u32 *chanid;
- static int ccsr_map_fd;
+ int ccsr_map_fd;
const uint32_t *qman_addr;
uint64_t phys_addr;
uint64_t regs_size;
@@ -358,9 +358,9 @@ int qman_global_init(void)
pr_err("Can not open /dev/mem for qman ccsr map\n");
return ccsr_map_fd;
}
-
qman_ccsr_map = mmap(NULL, regs_size, PROT_READ | PROT_WRITE,
MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (qman_ccsr_map == MAP_FAILED) {
pr_err("Can not map qman ccsr base\n");
return -EINVAL;
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 08/18] bus/dpaa: fix device probe issue
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (6 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 09/18] net/dpaa: fix device remove Hemant Agrawal
` (12 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Remove an unintended early return in the LS1043 SoC version check
that was preventing device probing from completing successfully on
LS1043A platforms.
The early return did two things: set max_push_rxq_num = 0 and skip
the DPAA_PUSH_QUEUES_NUMBER env-var override. With the return gone,
the env-var could inadvertently re-enable push mode on LS1043A, which
must remain disabled due to the FMAN push-mode errata handled in
dpaa_rxtx.c. Guard the env-var override so it only applies to
non-LS1043A SoCs.
Fixes: 164e9e13e50f ("bus/dpaa: enhance SoC version")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/bus/dpaa/dpaa_bus.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index ee467b94d5..02a8c5882e 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright 2017-2025 NXP
+ * Copyright 2017-2026 NXP
*
*/
/* System headers */
@@ -724,18 +724,17 @@ rte_dpaa_bus_scan(void)
dpaa_bus.svr_ver);
}
- /* Disabling the default push mode for LS1043A */
+ /* Disabling the default push mode for LS1043A due to errata */
if (dpaa_bus.svr_ver == SVR_LS1043A_FAMILY) {
dpaa_bus.max_push_rxq_num = 0;
- return 0;
+ } else {
+ penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
+ if (penv)
+ dpaa_bus.max_push_rxq_num = atoi(penv);
+ if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
+ dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
}
- penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
- if (penv)
- dpaa_bus.max_push_rxq_num = atoi(penv);
- if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
- dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
-
/* Device list creation is only done once */
if (!process_once) {
rte_dpaa_bus_dev_build();
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 09/18] net/dpaa: fix device remove
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (7 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 10/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
` (11 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Add a check to avoid closing a device that is already closed,
preventing a double-close condition during device removal.
Note: this also removes the explicit dpaa_finish() call that was
made at last-device remove time (!dpaa_valid_dev). dpaa_finish() is
registered as RTE_FINI_PRIO(dpaa_finish, 103) and will still run at
process exit, so for the normal run-then-exit path behaviour is
unchanged. For a remove-all-then-re-probe scenario, is_global_init
will remain set until exit; re-probe in a running process is not a
supported use case for this driver.
Fixes: 78ea4b4fcb52 ("bus/dpaa: improve cleanup")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 424458857e..9a9c5ee817 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -2674,18 +2674,19 @@ static int
rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
{
struct rte_eth_dev *eth_dev;
- int ret;
+ int ret = 0;
PMD_INIT_FUNC_TRACE();
eth_dev = dpaa_dev->eth_dev;
- dpaa_eth_dev_close(eth_dev);
- ret = rte_eth_dev_release_port(eth_dev);
+ if (eth_dev->state != RTE_ETH_DEV_UNUSED) {
+ dpaa_eth_dev_close(eth_dev);
+ ret = rte_eth_dev_release_port(eth_dev);
+ }
dpaa_valid_dev--;
- if (!dpaa_valid_dev) {
+ if (!dpaa_valid_dev)
rte_mempool_free(dpaa_tx_sg_pool);
- dpaa_finish();
- }
+
return ret;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 10/18] net/dpaa: fix invalid check on interrupt unregister
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (8 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 09/18] net/dpaa: fix device remove Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 11/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
` (10 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
rte_intr_callback_unregister() returns the number of callbacks
removed (>= 1) on success and a negative value on failure. The
previous check 'if (ret)' logged a spurious warning on every
successful unregister. Fix it to 'if (ret < 0)'.
Fixes: 2aa10990a8dd ("bus/dpaa: enable link state interrupt")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 9a9c5ee817..c143e66f77 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -559,7 +559,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
}
ret = rte_intr_callback_unregister(intr_handle,
dpaa_interrupt_handler, (void *)dev);
- if (ret) {
+ if (ret < 0) {
DPAA_PMD_WARN("%s: unregister interrupt failed(%d)",
dev->data->name, ret);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 11/18] net/dpaa: fix port_handle leak in fm_prev_cleanup
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (9 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 10/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 12/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
` (9 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fm_prev_cleanup(), the port_handle was not closed before being
overwritten on each iteration, causing a resource leak. Add a null
check and close the existing handle before opening a new one.
Fixes: e498f3b51f38 ("net/dpaa: improve port cleanup")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/net/dpaa/dpaa_flow.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c
index 417b9b6fbb..f21950f64d 100644
--- a/drivers/net/dpaa/dpaa_flow.c
+++ b/drivers/net/dpaa/dpaa_flow.c
@@ -81,6 +81,10 @@ static void fm_prev_cleanup(void)
devid = fm_model.device_order[i];
/* FM Port Open */
fm_model.fm_port_params[devid].h_fm = fm_info.fman_handle;
+ if (dpaa_intf.port_handle) {
+ fm_port_close(dpaa_intf.port_handle);
+ dpaa_intf.port_handle = NULL;
+ }
dpaa_intf.port_handle =
fm_port_open(&fm_model.fm_port_params[devid]);
dpaa_intf.scheme_handle[0] = create_device(fm_info.pcd_handle,
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 12/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (10 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 11/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 13/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
` (8 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fsl_qdma_enqueue_desc_sg(), the code accesses desc_ssge[num - 1]
without validating num first. If pending_num is 0, num will be 0 and
the access underflows. Add a bounds check to return -EINVAL when num
is 0 or exceeds FSL_QDMA_SG_MAX_ENTRY.
Fixes: a77261f61245 ("dma/dpaa: support scatter-gather")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/dma/dpaa/dpaa_qdma.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/dpaa/dpaa_qdma.c b/drivers/dma/dpaa/dpaa_qdma.c
index 74e23d2ee5..b20ff24ab6 100644
--- a/drivers/dma/dpaa/dpaa_qdma.c
+++ b/drivers/dma/dpaa/dpaa_qdma.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021-2024 NXP
+ * Copyright 2021-2026 NXP
*/
#include <bus_dpaa_driver.h>
@@ -827,6 +827,11 @@ fsl_qdma_enqueue_desc_sg(struct fsl_qdma_queue *fsl_queue)
}
}
+ if (num == 0 || num > FSL_QDMA_SG_MAX_ENTRY) {
+ DPAA_QDMA_ERR("Invalid scatter-gather entry count: num=%u", num);
+ return -EINVAL;
+ }
+
ft->desc_ssge[num - 1].final = 1;
ft->desc_dsge[num - 1].final = 1;
csgf_src->length = total_len;
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 13/18] net/dpaa: fix xstat name for tx undersized counter
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (11 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 12/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 14/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
` (7 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
The xstat entry mapping to 'tund' (TX undersized) was incorrectly
labeled as 'rx_undersized'. Fix the prefix to 'tx_undersized'.
Fixes: b21ed3e2a16d ("net/dpaa: support extended statistics")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index c143e66f77..3d3f2773a1 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -125,7 +125,7 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_stats, terr)},
{"tx_vlan_frame",
offsetof(struct dpaa_if_stats, tvlan)},
- {"rx_undersized",
+ {"tx_undersized",
offsetof(struct dpaa_if_stats, tund)},
{"rx_frame_counter",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfrc)},
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 14/18] net/dpaa: fix xstat string typos in BMI stats table
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (12 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 13/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 15/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
` (6 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
Fix three issues in the xstats name table:
- 'rx_frame_discrad_count' is a misspelling, correct to
'rx_frame_discard_count'
- 'rx_out_of_buffer_discard ' has a trailing space, remove it
- 'rx_buf_diallocate' is a misspelling, correct to
'rx_buf_deallocate'
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 3d3f2773a1..3d6405d5fa 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -135,13 +135,13 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rlfc)},
{"rx_filter_frames_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rffc)},
- {"rx_frame_discrad_count",
+ {"rx_frame_discard_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfdc)},
{"rx_frame_list_dma_err_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfldec)},
- {"rx_out_of_buffer_discard ",
+ {"rx_out_of_buffer_discard",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rodc)},
- {"rx_buf_diallocate",
+ {"rx_buf_deallocate",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rbdc)},
};
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 15/18] net/dpaa: remove duplicate ptype entries
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (13 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 14/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:38 ` [PATCH v3 16/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
` (5 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
RTE_PTYPE_L4_TCP and RTE_PTYPE_L4_UDP were listed twice in the
supported ptypes array returned by dpaa_supported_ptypes_get().
Remove the duplicate entries.
Fixes: ec503d8fa782 ("net/dpaa: update supported ptypes")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 3d6405d5fa..b7f3c4360b 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -406,8 +406,6 @@ dpaa_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
RTE_PTYPE_L4_TCP,
RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_FRAG,
- RTE_PTYPE_L4_TCP,
- RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_SCTP,
RTE_PTYPE_TUNNEL_ESP,
RTE_PTYPE_TUNNEL_GRE,
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 16/18] net/dpaa: fix wrong buffer in xstats get by id
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (14 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 15/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
@ 2026-06-19 10:38 ` Hemant Agrawal
2026-06-19 10:39 ` [PATCH v3 17/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
` (4 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:38 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
In dpaa_xstats_get_by_id(), fman_if_bmi_stats_get_all() was called
with 'values' (the output array) instead of 'values_copy' (the
scratch buffer). This caused the BMI stats to overwrite already
computed xstat values and then the subsequent loop would copy
garbage from values_copy into the output.
Pass 'values_copy' as intended so that BMI stats are fetched into
the scratch buffer and then correctly indexed into 'values'.
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index b7f3c4360b..3ca3455ab7 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -928,7 +928,8 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
values[i] =
values_copy[dpaa_xstats_strings[i].offset / 8];
- fman_if_bmi_stats_get_all(dev->process_private, values);
+ /* i continues from previous loop; BMI stats fill values[i..stat_cnt-1] */
+ fman_if_bmi_stats_get_all(dev->process_private, values_copy);
for (j = 0; i < stat_cnt; i++, j++)
values[i] = values_copy[j];
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 17/18] net/dpaa: fix null l3_len check in checksum offload
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (15 preceding siblings ...)
2026-06-19 10:38 ` [PATCH v3 16/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
@ 2026-06-19 10:39 ` Hemant Agrawal
2026-06-19 10:39 ` [PATCH v3 18/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
` (3 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:39 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
In dpaa_checksum(), if mbuf->l3_len is zero the L4 header pointer
calculation (l3_hdr + mbuf->l3_len) points to the start of the L3
header rather than the L4 header, leading to incorrect checksum
computation. Add an early return guard when l3_len is zero.
A debug warning is logged to aid diagnosis of mbufs with
uninitialized or corrupt l3_len, since silently skipping checksum
offload would cause the packet to be transmitted without the
requested checksum.
Fixes: 5a8cf1bef775 ("net/dpaa: support checksum offload")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index c5e393159a..3734496d6f 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -377,6 +377,10 @@ static inline void dpaa_checksum(struct rte_mbuf *mbuf)
struct rte_ipv6_hdr *ipv6_hdr = (struct rte_ipv6_hdr *)l3_hdr;
DPAA_DP_LOG(DEBUG, "Calculating checksum for mbuf: %p", mbuf);
+ if (mbuf->l3_len == 0) {
+ DPAA_DP_LOG(WARNING, "l3_len is 0, skipping checksum for mbuf: %p", mbuf);
+ return;
+ }
if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) ||
((mbuf->packet_type & RTE_PTYPE_L3_MASK) ==
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v3 18/18] net/dpaa: fix mbuf leak in SG fd creation
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (16 preceding siblings ...)
2026-06-19 10:39 ` [PATCH v3 17/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
@ 2026-06-19 10:39 ` Hemant Agrawal
2026-06-19 17:28 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Stephen Hemminger
` (2 subsequent siblings)
20 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-06-19 10:39 UTC (permalink / raw)
To: stephen, david.marchand, dev; +Cc: stable
In dpaa_eth_mbuf_to_sg_fd(), when the allocated temp mbuf does not
have sufficient space for the SG entries, the function returned -1
without freeing 'temp', causing a memory leak. Free 'temp' before
returning the error.
Fixes: 8cffdcbe85aa ("net/dpaa: support scattered Rx")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index 3734496d6f..272960b6e3 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -992,6 +992,7 @@ dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf,
if (temp->buf_len < ((mbuf->nb_segs * sizeof(struct qm_sg_entry))
+ temp->data_off)) {
DPAA_PMD_ERR("Insufficient space in mbuf for SG entries");
+ rte_pktmbuf_free(temp);
return -1;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 98+ messages in thread* Re: [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (17 preceding siblings ...)
2026-06-19 10:39 ` [PATCH v3 18/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
@ 2026-06-19 17:28 ` Stephen Hemminger
2026-06-25 16:45 ` Stephen Hemminger
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
20 siblings, 0 replies; 98+ messages in thread
From: Stephen Hemminger @ 2026-06-19 17:28 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: david.marchand, dev
On Fri, 19 Jun 2026 16:08:43 +0530
Hemant Agrawal <hemant.agrawal@nxp.com> wrote:
> This series contains bug fixes for the DPAA PMD (bus/dpaa, net/dpaa,
> net/dpaa/fmlib and dma/dpaa).
>
> v3 changes (AI code review feedback):
> - P05: Clarify commit message: p_dev == NULL is equivalent to h_scheme == NULL
> since p_dev = (t_device *)h_scheme; consistent with all sibling functions
> - P16: Add comment explaining the intentional loop continuation; clarify
> commit message about the loop design
> - P17: Add DPAA_DP_LOG(WARNING) before silent return on l3_len == 0 to
> aid debugging of corrupt/uninitialized mbufs
>
> v2 changes:
> - P05: Fix commit message API name
> - P08: Guard DPAA_PUSH_QUEUES_NUMBER env-var for LS1043A (errata)
> - P09: Document dpaa_finish() removal
> - P10: Fix wrong Fixes: tag
> - P11: Split into two patches with correct Fixes: tags
> - P13: Also fix rx_buf_diallocate -> rx_buf_deallocate
>
> All patches are bug fixes tagged with Fixes: and Cc: stable@dpdk.org.
>
> Gagandeep Singh (3):
> bus/dpaa: fix device probe issue
> net/dpaa: fix device remove
> net/dpaa: fix invalid check on interrupt unregister
>
> Hemant Agrawal (11):
> bus/dpaa: fix error handling of qman_create_fq
> bus/dpaa: fix fqid endianness
> bus/dpaa: fix error handling in qman_query
> net/dpaa: fix modify cgr to use index
> bus/dpaa: fix fd leak for ccsr mmap
> net/dpaa: fix xstat name for tx undersized counter
> net/dpaa: fix xstat string typos in BMI stats table
> net/dpaa: remove duplicate ptype entries
> net/dpaa: fix wrong buffer in xstats get by id
> net/dpaa: fix null l3_len check in checksum offload
> net/dpaa: fix mbuf leak in SG fd creation
>
> Jun Yang (1):
> bus/dpaa: fix BMI RX stats register offset
>
> Prashant Gupta (1):
> net/dpaa/fmlib: add null check in scheme delete
>
> Vanshika Shukla (2):
> net/dpaa: fix port_handle leak in fm_prev_cleanup
> dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
>
> drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
> drivers/bus/dpaa/base/qbman/qman.c | 11 ++++++---
> drivers/bus/dpaa/base/qbman/qman_driver.c | 6 ++---
> drivers/bus/dpaa/dpaa_bus.c | 17 ++++++-------
> drivers/bus/dpaa/include/fman.h | 6 ++---
> drivers/dma/dpaa/dpaa_qdma.c | 7 +++++-
> drivers/net/dpaa/dpaa_ethdev.c | 30 +++++++++++------------
> drivers/net/dpaa/dpaa_flow.c | 4 +++
> drivers/net/dpaa/dpaa_rxtx.c | 5 ++++
> drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
> 10 files changed, 56 insertions(+), 36 deletions(-)
>
Applied to next-net with some minor changes to commit message to fix capitalization complaints from check-git-log
^ permalink raw reply [flat|nested] 98+ messages in thread* Re: [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (18 preceding siblings ...)
2026-06-19 17:28 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Stephen Hemminger
@ 2026-06-25 16:45 ` Stephen Hemminger
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
20 siblings, 0 replies; 98+ messages in thread
From: Stephen Hemminger @ 2026-06-25 16:45 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: david.marchand, dev
On Fri, 19 Jun 2026 16:08:43 +0530
Hemant Agrawal <hemant.agrawal@nxp.com> wrote:
> This series contains bug fixes for the DPAA PMD (bus/dpaa, net/dpaa,
> net/dpaa/fmlib and dma/dpaa).
>
> v3 changes (AI code review feedback):
> - P05: Clarify commit message: p_dev == NULL is equivalent to h_scheme == NULL
> since p_dev = (t_device *)h_scheme; consistent with all sibling functions
> - P16: Add comment explaining the intentional loop continuation; clarify
> commit message about the loop design
> - P17: Add DPAA_DP_LOG(WARNING) before silent return on l3_len == 0 to
> aid debugging of corrupt/uninitialized mbufs
>
> v2 changes:
> - P05: Fix commit message API name
> - P08: Guard DPAA_PUSH_QUEUES_NUMBER env-var for LS1043A (errata)
> - P09: Document dpaa_finish() removal
> - P10: Fix wrong Fixes: tag
> - P11: Split into two patches with correct Fixes: tags
> - P13: Also fix rx_buf_diallocate -> rx_buf_deallocate
>
> All patches are bug fixes tagged with Fixes: and Cc: stable@dpdk.org.
>
> Gagandeep Singh (3):
> bus/dpaa: fix device probe issue
> net/dpaa: fix device remove
> net/dpaa: fix invalid check on interrupt unregister
>
> Hemant Agrawal (11):
> bus/dpaa: fix error handling of qman_create_fq
> bus/dpaa: fix fqid endianness
> bus/dpaa: fix error handling in qman_query
> net/dpaa: fix modify cgr to use index
> bus/dpaa: fix fd leak for ccsr mmap
> net/dpaa: fix xstat name for tx undersized counter
> net/dpaa: fix xstat string typos in BMI stats table
> net/dpaa: remove duplicate ptype entries
> net/dpaa: fix wrong buffer in xstats get by id
> net/dpaa: fix null l3_len check in checksum offload
> net/dpaa: fix mbuf leak in SG fd creation
>
> Jun Yang (1):
> bus/dpaa: fix BMI RX stats register offset
>
> Prashant Gupta (1):
> net/dpaa/fmlib: add null check in scheme delete
>
> Vanshika Shukla (2):
> net/dpaa: fix port_handle leak in fm_prev_cleanup
> dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
>
> drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
> drivers/bus/dpaa/base/qbman/qman.c | 11 ++++++---
> drivers/bus/dpaa/base/qbman/qman_driver.c | 6 ++---
> drivers/bus/dpaa/dpaa_bus.c | 17 ++++++-------
> drivers/bus/dpaa/include/fman.h | 6 ++---
> drivers/dma/dpaa/dpaa_qdma.c | 7 +++++-
> drivers/net/dpaa/dpaa_ethdev.c | 30 +++++++++++------------
> drivers/net/dpaa/dpaa_flow.c | 4 +++
> drivers/net/dpaa/dpaa_rxtx.c | 5 ++++
> drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
> 10 files changed, 56 insertions(+), 36 deletions(-)
>
Recent changes on main branch caused this patch series
to have merge conflicts in net-next. Since the conflict
was non-trivial related to hot plug; won't fix it myself.
Dropped it for now, please rebase and resubmit.
^ permalink raw reply [flat|nested] 98+ messages in thread* [PATCH v4 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers
2026-06-19 10:38 ` [PATCH v3 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (19 preceding siblings ...)
2026-06-25 16:45 ` Stephen Hemminger
@ 2026-07-13 9:25 ` Hemant Agrawal
2026-07-13 9:25 ` [PATCH v4 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
` (18 more replies)
20 siblings, 19 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:25 UTC (permalink / raw)
To: stephen, thomas, dev
This series contains bug fixes for the DPAA PMD (bus/dpaa, net/dpaa,
net/dpaa/fmlib and dma/dpaa).
v4: rebased over master;
v3 changes (AI code review feedback):
- P05: Clarify commit message: p_dev == NULL is equivalent to h_scheme == NULL
since p_dev = (t_device *)h_scheme; consistent with all sibling functions
- P16: Add comment explaining the intentional loop continuation; clarify
commit message about the loop design
- P17: Add DPAA_DP_LOG(WARNING) before silent return on l3_len == 0 to
aid debugging of corrupt/uninitialized mbufs
v2 changes:
- P05: Fix commit message API name
- P08: Guard DPAA_PUSH_QUEUES_NUMBER env-var for LS1043A (errata)
- P09: Document dpaa_finish() removal
- P10: Fix wrong Fixes: tag
- P11: Split into two patches with correct Fixes: tags
- P13: Also fix rx_buf_diallocate -> rx_buf_deallocate
All patches are bug fixes tagged with Fixes: and Cc: stable@dpdk.org.
Gagandeep Singh (3):
bus/dpaa: fix device probe issue
net/dpaa: fix invalid check on interrupt unregister
net/dpaa: fix device remove
Hemant Agrawal (11):
bus/dpaa: fix error handling of qman_create_fq
bus/dpaa: fix fqid endianness
bus/dpaa: fix error handling in qman_query
net/dpaa: fix modify cgr to use index
bus/dpaa: fix fd leak for ccsr mmap
net/dpaa: fix xstat name for tx undersized counter
net/dpaa: fix xstat string typos in BMI stats table
net/dpaa: remove duplicate ptype entries
net/dpaa: fix wrong buffer in xstats get by id
net/dpaa: fix null l3_len check in checksum offload
net/dpaa: fix mbuf leak in SG fd creation
Jun Yang (1):
bus/dpaa: fix BMI RX stats register offset
Prashant Gupta (1):
net/dpaa/fmlib: add null check in scheme delete
Vanshika Shukla (2):
net/dpaa: fix port_handle leak in fm_prev_cleanup
dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
drivers/bus/dpaa/base/qbman/qman.c | 11 +++++---
drivers/bus/dpaa/base/qbman/qman_driver.c | 6 ++---
drivers/bus/dpaa/dpaa_bus.c | 17 ++++++-------
drivers/bus/dpaa/include/fman.h | 6 ++---
drivers/dma/dpaa/dpaa_qdma.c | 7 ++++-
drivers/net/dpaa/dpaa_ethdev.c | 31 ++++++++++++-----------
drivers/net/dpaa/dpaa_flow.c | 4 +++
drivers/net/dpaa/dpaa_rxtx.c | 5 ++++
drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
10 files changed, 57 insertions(+), 36 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 98+ messages in thread* [PATCH v4 01/18] bus/dpaa: fix error handling of qman_create_fq
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
@ 2026-07-13 9:25 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
` (17 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:25 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Fix the error handling path in qman_create_fq() to properly
return error codes instead of silently ignoring failures.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 5534e1846c..9a99eb9785 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1579,6 +1579,9 @@ int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq)
err:
if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID)
qman_release_fqid(fqid);
+#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP
+ clear_fq_table_entry(fq->key);
+#endif
return -EIO;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 02/18] bus/dpaa: fix fqid endianness
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
2026-07-13 9:25 ` [PATCH v4 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
` (16 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In qman_fq_flow_control(), the fqid field in the management
command was set using the host-endian fqid instead of the
pre-converted big-endian fqid_be. Fix it to use fqid_be
consistent with all other enqueue paths.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 9a99eb9785..2da1b3e3f7 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1921,7 +1921,7 @@ int qman_fq_flow_control(struct qman_fq *fq, int xon)
goto out;
}
mcc = qm_mc_start(&p->p);
- mcc->alterfq.fqid = fq->fqid;
+ mcc->alterfq.fqid = fq->fqid_be;
mcc->alterfq.count = 0;
myverb = xon ? QM_MCC_VERB_ALTER_FQXON : QM_MCC_VERB_ALTER_FQXOFF;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 03/18] bus/dpaa: fix error handling in qman_query
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
2026-07-13 9:25 ` [PATCH v4 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
` (15 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Optimize error handling in qman_query() to avoid redundant
checks and properly propagate error codes.
Fixes: 06268e2cb175 ("bus/dpaa: query queue frame count support")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 2da1b3e3f7..d289df2d33 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1955,11 +1955,11 @@ int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd)
cpu_relax();
DPAA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ);
res = mcr->result;
- if (res == QM_MCR_RESULT_OK)
- *fqd = mcr->queryfq.fqd;
- hw_fqd_to_cpu(fqd);
if (res != QM_MCR_RESULT_OK)
return -EIO;
+
+ *fqd = mcr->queryfq.fqd;
+ hw_fqd_to_cpu(fqd);
return 0;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 04/18] net/dpaa: fix modify cgr to use index
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (2 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
` (14 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_modify_cgr(), the code was always using the pointer to
the first CGR element instead of indexing by the queue index.
Fix it to use the correct CGR entry by index.
Fixes: 62f53995caaf ("net/dpaa: add frame count based tail drop with CGR")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 967e814b5d..da7f65d8af 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -1304,7 +1304,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
rxq->nb_desc = nb_desc;
/* Enable tail drop with cgr on this queue */
qm_cgr_cs_thres_set64(&cgr_opts.cgr.cs_thres, nb_desc, 0);
- ret = qman_modify_cgr(dpaa_intf->cgr_rx, 0, &cgr_opts);
+ ret = qman_modify_cgr(&dpaa_intf->cgr_rx[queue_idx], 0, &cgr_opts);
if (ret) {
DPAA_PMD_WARN(
"rx taildrop modify fail on fqid %d (ret=%d)",
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 05/18] net/dpaa/fmlib: add null check in scheme delete
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (3 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
` (13 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Prashant Gupta
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Add a null pointer check at the entry of fm_pcd_kg_scheme_delete().
Since p_dev is assigned directly from h_scheme via a cast
(t_device *)h_scheme, checking p_dev == NULL is equivalent to
checking h_scheme == NULL. This matches the defensive pattern used
in all sibling functions in fm_lib.c and returns E_NO_DEVICE on a
null handle.
Fixes: 663ff698e38f ("net/dpaa: support VSP in fmlib")
Cc: stable@dpdk.org
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/dpaa/fmlib/fm_lib.c b/drivers/net/dpaa/fmlib/fm_lib.c
index b35feba004..65a818372e 100644
--- a/drivers/net/dpaa/fmlib/fm_lib.c
+++ b/drivers/net/dpaa/fmlib/fm_lib.c
@@ -305,6 +305,9 @@ fm_pcd_kg_scheme_delete(t_handle h_scheme)
_fml_dbg("Calling...");
+ if (p_dev == NULL)
+ return E_NO_DEVICE;
+
p_pcd_dev = (t_device *)p_dev->h_user_priv;
id.obj = UINT_TO_PTR(p_dev->id);
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 06/18] bus/dpaa: fix BMI RX stats register offset
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (4 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
` (12 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Jun Yang
From: Jun Yang <jun.yang@nxp.com>
Fix incorrect register offset for BMI RX statistics counters
in the fman.h header. The wrong offset caused incorrect stats
values to be reported.
Fixes: 0095306cdbda ("bus/dpaa: add FMan node")
Cc: stable@dpdk.org
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/include/fman.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h
index c33fe81516..6e3abf1b50 100644
--- a/drivers/bus/dpaa/include/fman.h
+++ b/drivers/bus/dpaa/include/fman.h
@@ -2,7 +2,7 @@
*
* Copyright 2010-2012 Freescale Semiconductor, Inc.
* All rights reserved.
- * Copyright 2019-2024 NXP
+ * Copyright 2019-2026 NXP
*
*/
@@ -263,8 +263,8 @@ struct rx_bmi_regs {
/**< Buffer Manager pool Information-*/
uint32_t fmbm_acnt[FMAN_PORT_MAX_EXT_POOLS_NUM];
/**< Allocate Counter-*/
- uint32_t reserved0120[16];
- /**< 0x130/0x140 - 0x15F reserved -*/
+ uint32_t reserved0140[8];
+ /**< 0x140 - 0x15F reserved -*/
uint32_t fmbm_rcgm[FMAN_PORT_CG_MAP_NUM];
/**< Congestion Group Map*/
uint32_t fmbm_mpd; /**< BM Pool Depletion */
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 07/18] bus/dpaa: fix fd leak for ccsr mmap
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (5 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
` (11 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Jun Yang
The CCSR file descriptor was kept open after mmap() was done.
Close the fd immediately after mmap() as it is no longer needed,
preventing a file descriptor leak.
Fixes: 8e253882cd31 ("bus/dpaa: support interrupt portal based fd")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
drivers/bus/dpaa/base/qbman/qman_driver.c | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c
index 23e44ac10b..71a2028383 100644
--- a/drivers/bus/dpaa/base/qbman/bman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/bman_driver.c
@@ -145,7 +145,7 @@ void bman_thread_irq(void)
int bman_init_ccsr(const struct device_node *node)
{
- static int ccsr_map_fd;
+ int ccsr_map_fd;
uint64_t phys_addr;
const uint32_t *bman_addr;
uint64_t regs_size;
@@ -169,6 +169,7 @@ int bman_init_ccsr(const struct device_node *node)
bman_ccsr_map = mmap(NULL, regs_size, PROT_READ |
PROT_WRITE, MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (bman_ccsr_map == MAP_FAILED) {
pr_err("Can not map BMan CCSR base Bman: "
"0x%x Phys: 0x%" PRIx64 " size 0x%" PRIu64,
diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c
index 3bab8b8337..45b094e0c6 100644
--- a/drivers/bus/dpaa/base/qbman/qman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
*
* Copyright 2008-2016 Freescale Semiconductor Inc.
- * Copyright 2017-2022, 2025 NXP
+ * Copyright 2017-2022, 2025-2026 NXP
*
*/
@@ -270,7 +270,7 @@ int qman_global_init(void)
const struct device_node *dt_node;
size_t lenp;
const u32 *chanid;
- static int ccsr_map_fd;
+ int ccsr_map_fd;
const uint32_t *qman_addr;
uint64_t phys_addr;
uint64_t regs_size;
@@ -358,9 +358,9 @@ int qman_global_init(void)
pr_err("Can not open /dev/mem for qman ccsr map\n");
return ccsr_map_fd;
}
-
qman_ccsr_map = mmap(NULL, regs_size, PROT_READ | PROT_WRITE,
MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (qman_ccsr_map == MAP_FAILED) {
pr_err("Can not map qman ccsr base\n");
return -EINVAL;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 08/18] bus/dpaa: fix device probe issue
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (6 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 09/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
` (10 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Remove an unintended early return in the LS1043 SoC version check
that was preventing device probing from completing successfully on
LS1043A platforms.
The early return did two things: set max_push_rxq_num = 0 and skip
the DPAA_PUSH_QUEUES_NUMBER env-var override. With the return gone,
the env-var could inadvertently re-enable push mode on LS1043A, which
must remain disabled due to the FMAN push-mode errata handled in
dpaa_rxtx.c. Guard the env-var override so it only applies to
non-LS1043A SoCs.
Fixes: 164e9e13e50f ("bus/dpaa: enhance SoC version")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/bus/dpaa/dpaa_bus.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 54779f82f7..368c8eeb98 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright 2017-2025 NXP
+ * Copyright 2017-2026 NXP
*
*/
/* System headers */
@@ -724,18 +724,17 @@ rte_dpaa_bus_scan(void)
dpaa_bus.svr_ver);
}
- /* Disabling the default push mode for LS1043A */
+ /* Disabling the default push mode for LS1043A due to errata */
if (dpaa_bus.svr_ver == SVR_LS1043A_FAMILY) {
dpaa_bus.max_push_rxq_num = 0;
- return 0;
+ } else {
+ penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
+ if (penv)
+ dpaa_bus.max_push_rxq_num = atoi(penv);
+ if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
+ dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
}
- penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
- if (penv)
- dpaa_bus.max_push_rxq_num = atoi(penv);
- if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
- dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
-
/* Device list creation is only done once */
if (!process_once) {
rte_dpaa_bus_dev_build();
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 09/18] net/dpaa: fix invalid check on interrupt unregister
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (7 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
` (9 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
rte_intr_callback_unregister() returns the number of callbacks
removed (>= 1) on success and a negative value on failure. The
previous check 'if (ret)' logged a spurious warning on every
successful unregister. Fix it to 'if (ret < 0)'.
Fixes: 2aa10990a8dd ("bus/dpaa: enable link state interrupt")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index da7f65d8af..f679a6e781 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -559,7 +559,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
}
ret = rte_intr_callback_unregister(intr_handle,
dpaa_interrupt_handler, (void *)dev);
- if (ret) {
+ if (ret < 0) {
DPAA_PMD_WARN("%s: unregister interrupt failed(%d)",
dev->data->name, ret);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (8 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 09/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
` (8 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fm_prev_cleanup(), the port_handle was not closed before being
overwritten on each iteration, causing a resource leak. Add a null
check and close the existing handle before opening a new one.
Fixes: e498f3b51f38 ("net/dpaa: improve port cleanup")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/net/dpaa/dpaa_flow.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c
index 417b9b6fbb..f21950f64d 100644
--- a/drivers/net/dpaa/dpaa_flow.c
+++ b/drivers/net/dpaa/dpaa_flow.c
@@ -81,6 +81,10 @@ static void fm_prev_cleanup(void)
devid = fm_model.device_order[i];
/* FM Port Open */
fm_model.fm_port_params[devid].h_fm = fm_info.fman_handle;
+ if (dpaa_intf.port_handle) {
+ fm_port_close(dpaa_intf.port_handle);
+ dpaa_intf.port_handle = NULL;
+ }
dpaa_intf.port_handle =
fm_port_open(&fm_model.fm_port_params[devid]);
dpaa_intf.scheme_handle[0] = create_device(fm_info.pcd_handle,
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (9 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 12/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
` (7 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fsl_qdma_enqueue_desc_sg(), the code accesses desc_ssge[num - 1]
without validating num first. If pending_num is 0, num will be 0 and
the access underflows. Add a bounds check to return -EINVAL when num
is 0 or exceeds FSL_QDMA_SG_MAX_ENTRY.
Fixes: a77261f61245 ("dma/dpaa: support scatter-gather")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/dma/dpaa/dpaa_qdma.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/dpaa/dpaa_qdma.c b/drivers/dma/dpaa/dpaa_qdma.c
index a695f58bc5..e2cb157c43 100644
--- a/drivers/dma/dpaa/dpaa_qdma.c
+++ b/drivers/dma/dpaa/dpaa_qdma.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021-2024 NXP
+ * Copyright 2021-2026 NXP
*/
#include <bus_dpaa_driver.h>
@@ -827,6 +827,11 @@ fsl_qdma_enqueue_desc_sg(struct fsl_qdma_queue *fsl_queue)
}
}
+ if (num == 0 || num > FSL_QDMA_SG_MAX_ENTRY) {
+ DPAA_QDMA_ERR("Invalid scatter-gather entry count: num=%u", num);
+ return -EINVAL;
+ }
+
ft->desc_ssge[num - 1].final = 1;
ft->desc_dsge[num - 1].final = 1;
csgf_src->length = total_len;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 12/18] net/dpaa: fix xstat name for tx undersized counter
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (10 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 13/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
` (6 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
The xstat entry mapping to 'tund' (TX undersized) was incorrectly
labeled as 'rx_undersized'. Fix the prefix to 'tx_undersized'.
Fixes: b21ed3e2a16d ("net/dpaa: support extended statistics")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index f679a6e781..da83b45831 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -125,7 +125,7 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_stats, terr)},
{"tx_vlan_frame",
offsetof(struct dpaa_if_stats, tvlan)},
- {"rx_undersized",
+ {"tx_undersized",
offsetof(struct dpaa_if_stats, tund)},
{"rx_frame_counter",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfrc)},
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 13/18] net/dpaa: fix xstat string typos in BMI stats table
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (11 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 12/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 14/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
` (5 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Fix three issues in the xstats name table:
- 'rx_frame_discrad_count' is a misspelling, correct to
'rx_frame_discard_count'
- 'rx_out_of_buffer_discard ' has a trailing space, remove it
- 'rx_buf_diallocate' is a misspelling, correct to
'rx_buf_deallocate'
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index da83b45831..50d30d23b2 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -135,13 +135,13 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rlfc)},
{"rx_filter_frames_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rffc)},
- {"rx_frame_discrad_count",
+ {"rx_frame_discard_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfdc)},
{"rx_frame_list_dma_err_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfldec)},
- {"rx_out_of_buffer_discard ",
+ {"rx_out_of_buffer_discard",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rodc)},
- {"rx_buf_diallocate",
+ {"rx_buf_deallocate",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rbdc)},
};
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 14/18] net/dpaa: remove duplicate ptype entries
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (12 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 13/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 15/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
` (4 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
RTE_PTYPE_L4_TCP and RTE_PTYPE_L4_UDP were listed twice in the
supported ptypes array returned by dpaa_supported_ptypes_get().
Remove the duplicate entries.
Fixes: ec503d8fa782 ("net/dpaa: update supported ptypes")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 50d30d23b2..1774d000a0 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -406,8 +406,6 @@ dpaa_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
RTE_PTYPE_L4_TCP,
RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_FRAG,
- RTE_PTYPE_L4_TCP,
- RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_SCTP,
RTE_PTYPE_TUNNEL_ESP,
RTE_PTYPE_TUNNEL_GRE,
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 15/18] net/dpaa: fix wrong buffer in xstats get by id
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (13 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 14/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 16/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
` (3 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_xstats_get_by_id(), fman_if_bmi_stats_get_all() was called
with 'values' (the output array) instead of 'values_copy' (the
scratch buffer). This caused the BMI stats to overwrite already
computed xstat values and then the subsequent loop would copy
garbage from values_copy into the output.
Pass 'values_copy' as intended so that BMI stats are fetched into
the scratch buffer and then correctly indexed into 'values'.
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 1774d000a0..f6d9dd6248 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -928,7 +928,8 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
values[i] =
values_copy[dpaa_xstats_strings[i].offset / 8];
- fman_if_bmi_stats_get_all(dev->process_private, values);
+ /* i continues from previous loop; BMI stats fill values[i..stat_cnt-1] */
+ fman_if_bmi_stats_get_all(dev->process_private, values_copy);
for (j = 0; i < stat_cnt; i++, j++)
values[i] = values_copy[j];
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 16/18] net/dpaa: fix null l3_len check in checksum offload
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (14 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 15/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 17/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
` (2 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_checksum(), if mbuf->l3_len is zero the L4 header pointer
calculation (l3_hdr + mbuf->l3_len) points to the start of the L3
header rather than the L4 header, leading to incorrect checksum
computation. Add an early return guard when l3_len is zero.
A debug warning is logged to aid diagnosis of mbufs with
uninitialized or corrupt l3_len, since silently skipping checksum
offload would cause the packet to be transmitted without the
requested checksum.
Fixes: 5a8cf1bef775 ("net/dpaa: support checksum offload")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index c5e393159a..3734496d6f 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -377,6 +377,10 @@ static inline void dpaa_checksum(struct rte_mbuf *mbuf)
struct rte_ipv6_hdr *ipv6_hdr = (struct rte_ipv6_hdr *)l3_hdr;
DPAA_DP_LOG(DEBUG, "Calculating checksum for mbuf: %p", mbuf);
+ if (mbuf->l3_len == 0) {
+ DPAA_DP_LOG(WARNING, "l3_len is 0, skipping checksum for mbuf: %p", mbuf);
+ return;
+ }
if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) ||
((mbuf->packet_type & RTE_PTYPE_L3_MASK) ==
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 17/18] net/dpaa: fix mbuf leak in SG fd creation
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (15 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 16/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 9:26 ` [PATCH v4 18/18] net/dpaa: fix device remove Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_eth_mbuf_to_sg_fd(), when the allocated temp mbuf does not
have sufficient space for the SG entries, the function returned -1
without freeing 'temp', causing a memory leak. Free 'temp' before
returning the error.
Fixes: 8cffdcbe85aa ("net/dpaa: support scattered Rx")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index 3734496d6f..272960b6e3 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -992,6 +992,7 @@ dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf,
if (temp->buf_len < ((mbuf->nb_segs * sizeof(struct qm_sg_entry))
+ temp->data_off)) {
DPAA_PMD_ERR("Insufficient space in mbuf for SG entries");
+ rte_pktmbuf_free(temp);
return -1;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v4 18/18] net/dpaa: fix device remove
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (16 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 17/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
@ 2026-07-13 9:26 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 9:26 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Add a check to avoid closing a device that is already closed,
preventing a double-close condition during device removal.
Note: this also removes the explicit dpaa_finish() call that was
made at last-device remove time (!dpaa_valid_dev). dpaa_finish() is
registered as RTE_FINI_PRIO(dpaa_finish, 103) and will still run at
process exit, so for the normal run-then-exit path behaviour is
unchanged. For a remove-all-then-re-probe scenario, is_global_init
will remain set until exit; re-probe in a running process is not a
supported use case for this driver.
Fixes: 78ea4b4fcb52 ("bus/dpaa: improve cleanup")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index f6d9dd6248..4dc4d1f10c 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -2672,18 +2672,20 @@ static int
rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
{
struct rte_eth_dev *eth_dev;
- int ret;
+ int ret = 0;
PMD_INIT_FUNC_TRACE();
eth_dev = rte_eth_dev_allocated(dpaa_dev->device.name);
- dpaa_eth_dev_close(eth_dev);
- ret = rte_eth_dev_release_port(eth_dev);
+ ret = dpaa_eth_dev_close(eth_dev);
+ if (eth_dev->state != RTE_ETH_DEV_UNUSED) {
+ dpaa_eth_dev_close(eth_dev);
+ ret = rte_eth_dev_release_port(eth_dev);
+ }
dpaa_valid_dev--;
- if (!dpaa_valid_dev) {
+ if (!dpaa_valid_dev)
rte_mempool_free(dpaa_tx_sg_pool);
- dpaa_finish();
- }
+
return ret;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers
2026-07-13 9:25 ` [PATCH v4 " Hemant Agrawal
` (17 preceding siblings ...)
2026-07-13 9:26 ` [PATCH v4 18/18] net/dpaa: fix device remove Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
` (18 more replies)
18 siblings, 19 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev
This series contains bug fixes for the DPAA PMD (bus/dpaa, net/dpaa,
net/dpaa/fmlib and dma/dpaa).
v5: fix AI reported warning from patch #18
v4: rebased over master;
v3 changes (AI code review feedback):
- P05: Clarify commit message: p_dev == NULL is equivalent to h_scheme == NULL
since p_dev = (t_device *)h_scheme; consistent with all sibling functions
- P16: Add comment explaining the intentional loop continuation; clarify
commit message about the loop design
- P17: Add DPAA_DP_LOG(WARNING) before silent return on l3_len == 0 to
aid debugging of corrupt/uninitialized mbufs
v2 changes:
- P05: Fix commit message API name
- P08: Guard DPAA_PUSH_QUEUES_NUMBER env-var for LS1043A (errata)
- P09: Document dpaa_finish() removal
- P10: Fix wrong Fixes: tag
- P11: Split into two patches with correct Fixes: tags
- P13: Also fix rx_buf_diallocate -> rx_buf_deallocate
All patches are bug fixes tagged with Fixes: and Cc: stable@dpdk.org.
Gagandeep Singh (3):
bus/dpaa: fix device probe issue
net/dpaa: fix invalid check on interrupt unregister
net/dpaa: fix device remove
Hemant Agrawal (11):
bus/dpaa: fix error handling of qman_create_fq
bus/dpaa: fix fqid endianness
bus/dpaa: fix error handling in qman_query
net/dpaa: fix modify cgr to use index
bus/dpaa: fix fd leak for ccsr mmap
net/dpaa: fix xstat name for tx undersized counter
net/dpaa: fix xstat string typos in BMI stats table
net/dpaa: remove duplicate ptype entries
net/dpaa: fix wrong buffer in xstats get by id
net/dpaa: fix null l3_len check in checksum offload
net/dpaa: fix mbuf leak in SG fd creation
Jun Yang (1):
bus/dpaa: fix BMI RX stats register offset
Prashant Gupta (1):
net/dpaa/fmlib: add null check in scheme delete
Vanshika Shukla (2):
net/dpaa: fix port_handle leak in fm_prev_cleanup
dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
drivers/bus/dpaa/base/qbman/qman.c | 11 +++++---
drivers/bus/dpaa/base/qbman/qman_driver.c | 6 ++---
drivers/bus/dpaa/dpaa_bus.c | 17 ++++++-------
drivers/bus/dpaa/include/fman.h | 6 ++---
drivers/dma/dpaa/dpaa_qdma.c | 7 ++++-
drivers/net/dpaa/dpaa_ethdev.c | 31 ++++++++++++-----------
drivers/net/dpaa/dpaa_flow.c | 4 +++
drivers/net/dpaa/dpaa_rxtx.c | 5 ++++
drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
10 files changed, 57 insertions(+), 36 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 98+ messages in thread* [PATCH v5 01/18] bus/dpaa: fix error handling of qman_create_fq
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
` (17 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Fix the error handling path in qman_create_fq() to properly
return error codes instead of silently ignoring failures.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 5534e1846c..9a99eb9785 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1579,6 +1579,9 @@ int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq)
err:
if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID)
qman_release_fqid(fqid);
+#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP
+ clear_fq_table_entry(fq->key);
+#endif
return -EIO;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 02/18] bus/dpaa: fix fqid endianness
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
` (16 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In qman_fq_flow_control(), the fqid field in the management
command was set using the host-endian fqid instead of the
pre-converted big-endian fqid_be. Fix it to use fqid_be
consistent with all other enqueue paths.
Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 9a99eb9785..2da1b3e3f7 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1921,7 +1921,7 @@ int qman_fq_flow_control(struct qman_fq *fq, int xon)
goto out;
}
mcc = qm_mc_start(&p->p);
- mcc->alterfq.fqid = fq->fqid;
+ mcc->alterfq.fqid = fq->fqid_be;
mcc->alterfq.count = 0;
myverb = xon ? QM_MCC_VERB_ALTER_FQXON : QM_MCC_VERB_ALTER_FQXOFF;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 03/18] bus/dpaa: fix error handling in qman_query
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 01/18] bus/dpaa: fix error handling of qman_create_fq Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 02/18] bus/dpaa: fix fqid endianness Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
` (15 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Optimize error handling in qman_query() to avoid redundant
checks and properly propagate error codes.
Fixes: 06268e2cb175 ("bus/dpaa: query queue frame count support")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/bus/dpaa/base/qbman/qman.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 2da1b3e3f7..d289df2d33 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -1955,11 +1955,11 @@ int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd)
cpu_relax();
DPAA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ);
res = mcr->result;
- if (res == QM_MCR_RESULT_OK)
- *fqd = mcr->queryfq.fqd;
- hw_fqd_to_cpu(fqd);
if (res != QM_MCR_RESULT_OK)
return -EIO;
+
+ *fqd = mcr->queryfq.fqd;
+ hw_fqd_to_cpu(fqd);
return 0;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 04/18] net/dpaa: fix modify cgr to use index
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (2 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 03/18] bus/dpaa: fix error handling in qman_query Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
` (14 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_modify_cgr(), the code was always using the pointer to
the first CGR element instead of indexing by the queue index.
Fix it to use the correct CGR entry by index.
Fixes: 62f53995caaf ("net/dpaa: add frame count based tail drop with CGR")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 967e814b5d..da7f65d8af 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -1304,7 +1304,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
rxq->nb_desc = nb_desc;
/* Enable tail drop with cgr on this queue */
qm_cgr_cs_thres_set64(&cgr_opts.cgr.cs_thres, nb_desc, 0);
- ret = qman_modify_cgr(dpaa_intf->cgr_rx, 0, &cgr_opts);
+ ret = qman_modify_cgr(&dpaa_intf->cgr_rx[queue_idx], 0, &cgr_opts);
if (ret) {
DPAA_PMD_WARN(
"rx taildrop modify fail on fqid %d (ret=%d)",
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 05/18] net/dpaa/fmlib: add null check in scheme delete
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (3 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 04/18] net/dpaa: fix modify cgr to use index Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
` (13 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Prashant Gupta
From: Prashant Gupta <prashant.gupta_3@nxp.com>
Add a null pointer check at the entry of fm_pcd_kg_scheme_delete().
Since p_dev is assigned directly from h_scheme via a cast
(t_device *)h_scheme, checking p_dev == NULL is equivalent to
checking h_scheme == NULL. This matches the defensive pattern used
in all sibling functions in fm_lib.c and returns E_NO_DEVICE on a
null handle.
Fixes: 663ff698e38f ("net/dpaa: support VSP in fmlib")
Cc: stable@dpdk.org
Signed-off-by: Prashant Gupta <prashant.gupta_3@nxp.com>
---
drivers/net/dpaa/fmlib/fm_lib.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/dpaa/fmlib/fm_lib.c b/drivers/net/dpaa/fmlib/fm_lib.c
index b35feba004..65a818372e 100644
--- a/drivers/net/dpaa/fmlib/fm_lib.c
+++ b/drivers/net/dpaa/fmlib/fm_lib.c
@@ -305,6 +305,9 @@ fm_pcd_kg_scheme_delete(t_handle h_scheme)
_fml_dbg("Calling...");
+ if (p_dev == NULL)
+ return E_NO_DEVICE;
+
p_pcd_dev = (t_device *)p_dev->h_user_priv;
id.obj = UINT_TO_PTR(p_dev->id);
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 06/18] bus/dpaa: fix BMI RX stats register offset
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (4 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 05/18] net/dpaa/fmlib: add null check in scheme delete Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
` (12 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Jun Yang
From: Jun Yang <jun.yang@nxp.com>
Fix incorrect register offset for BMI RX statistics counters
in the fman.h header. The wrong offset caused incorrect stats
values to be reported.
Fixes: 0095306cdbda ("bus/dpaa: add FMan node")
Cc: stable@dpdk.org
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/include/fman.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h
index c33fe81516..6e3abf1b50 100644
--- a/drivers/bus/dpaa/include/fman.h
+++ b/drivers/bus/dpaa/include/fman.h
@@ -2,7 +2,7 @@
*
* Copyright 2010-2012 Freescale Semiconductor, Inc.
* All rights reserved.
- * Copyright 2019-2024 NXP
+ * Copyright 2019-2026 NXP
*
*/
@@ -263,8 +263,8 @@ struct rx_bmi_regs {
/**< Buffer Manager pool Information-*/
uint32_t fmbm_acnt[FMAN_PORT_MAX_EXT_POOLS_NUM];
/**< Allocate Counter-*/
- uint32_t reserved0120[16];
- /**< 0x130/0x140 - 0x15F reserved -*/
+ uint32_t reserved0140[8];
+ /**< 0x140 - 0x15F reserved -*/
uint32_t fmbm_rcgm[FMAN_PORT_CG_MAP_NUM];
/**< Congestion Group Map*/
uint32_t fmbm_mpd; /**< BM Pool Depletion */
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 07/18] bus/dpaa: fix fd leak for ccsr mmap
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (5 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 06/18] bus/dpaa: fix BMI RX stats register offset Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
` (11 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Jun Yang
The CCSR file descriptor was kept open after mmap() was done.
Close the fd immediately after mmap() as it is no longer needed,
preventing a file descriptor leak.
Fixes: 8e253882cd31 ("bus/dpaa: support interrupt portal based fd")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/dpaa/base/qbman/bman_driver.c | 3 ++-
drivers/bus/dpaa/base/qbman/qman_driver.c | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c
index 23e44ac10b..71a2028383 100644
--- a/drivers/bus/dpaa/base/qbman/bman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/bman_driver.c
@@ -145,7 +145,7 @@ void bman_thread_irq(void)
int bman_init_ccsr(const struct device_node *node)
{
- static int ccsr_map_fd;
+ int ccsr_map_fd;
uint64_t phys_addr;
const uint32_t *bman_addr;
uint64_t regs_size;
@@ -169,6 +169,7 @@ int bman_init_ccsr(const struct device_node *node)
bman_ccsr_map = mmap(NULL, regs_size, PROT_READ |
PROT_WRITE, MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (bman_ccsr_map == MAP_FAILED) {
pr_err("Can not map BMan CCSR base Bman: "
"0x%x Phys: 0x%" PRIx64 " size 0x%" PRIu64,
diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c
index 3bab8b8337..45b094e0c6 100644
--- a/drivers/bus/dpaa/base/qbman/qman_driver.c
+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
*
* Copyright 2008-2016 Freescale Semiconductor Inc.
- * Copyright 2017-2022, 2025 NXP
+ * Copyright 2017-2022, 2025-2026 NXP
*
*/
@@ -270,7 +270,7 @@ int qman_global_init(void)
const struct device_node *dt_node;
size_t lenp;
const u32 *chanid;
- static int ccsr_map_fd;
+ int ccsr_map_fd;
const uint32_t *qman_addr;
uint64_t phys_addr;
uint64_t regs_size;
@@ -358,9 +358,9 @@ int qman_global_init(void)
pr_err("Can not open /dev/mem for qman ccsr map\n");
return ccsr_map_fd;
}
-
qman_ccsr_map = mmap(NULL, regs_size, PROT_READ | PROT_WRITE,
MAP_SHARED, ccsr_map_fd, phys_addr);
+ close(ccsr_map_fd);
if (qman_ccsr_map == MAP_FAILED) {
pr_err("Can not map qman ccsr base\n");
return -EINVAL;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 08/18] bus/dpaa: fix device probe issue
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (6 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 07/18] bus/dpaa: fix fd leak for ccsr mmap Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 09/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
` (10 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Remove an unintended early return in the LS1043 SoC version check
that was preventing device probing from completing successfully on
LS1043A platforms.
The early return did two things: set max_push_rxq_num = 0 and skip
the DPAA_PUSH_QUEUES_NUMBER env-var override. With the return gone,
the env-var could inadvertently re-enable push mode on LS1043A, which
must remain disabled due to the FMAN push-mode errata handled in
dpaa_rxtx.c. Guard the env-var override so it only applies to
non-LS1043A SoCs.
Fixes: 164e9e13e50f ("bus/dpaa: enhance SoC version")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/bus/dpaa/dpaa_bus.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 54779f82f7..368c8eeb98 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright 2017-2025 NXP
+ * Copyright 2017-2026 NXP
*
*/
/* System headers */
@@ -724,18 +724,17 @@ rte_dpaa_bus_scan(void)
dpaa_bus.svr_ver);
}
- /* Disabling the default push mode for LS1043A */
+ /* Disabling the default push mode for LS1043A due to errata */
if (dpaa_bus.svr_ver == SVR_LS1043A_FAMILY) {
dpaa_bus.max_push_rxq_num = 0;
- return 0;
+ } else {
+ penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
+ if (penv)
+ dpaa_bus.max_push_rxq_num = atoi(penv);
+ if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
+ dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
}
- penv = getenv("DPAA_PUSH_QUEUES_NUMBER");
- if (penv)
- dpaa_bus.max_push_rxq_num = atoi(penv);
- if (dpaa_bus.max_push_rxq_num > DPAA_MAX_PUSH_MODE_QUEUE)
- dpaa_bus.max_push_rxq_num = DPAA_MAX_PUSH_MODE_QUEUE;
-
/* Device list creation is only done once */
if (!process_once) {
rte_dpaa_bus_dev_build();
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 09/18] net/dpaa: fix invalid check on interrupt unregister
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (7 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 08/18] bus/dpaa: fix device probe issue Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
` (9 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
rte_intr_callback_unregister() returns the number of callbacks
removed (>= 1) on success and a negative value on failure. The
previous check 'if (ret)' logged a spurious warning on every
successful unregister. Fix it to 'if (ret < 0)'.
Fixes: 2aa10990a8dd ("bus/dpaa: enable link state interrupt")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index da7f65d8af..f679a6e781 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -559,7 +559,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
}
ret = rte_intr_callback_unregister(intr_handle,
dpaa_interrupt_handler, (void *)dev);
- if (ret) {
+ if (ret < 0) {
DPAA_PMD_WARN("%s: unregister interrupt failed(%d)",
dev->data->name, ret);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (8 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 09/18] net/dpaa: fix invalid check on interrupt unregister Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
` (8 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fm_prev_cleanup(), the port_handle was not closed before being
overwritten on each iteration, causing a resource leak. Add a null
check and close the existing handle before opening a new one.
Fixes: e498f3b51f38 ("net/dpaa: improve port cleanup")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/net/dpaa/dpaa_flow.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c
index 417b9b6fbb..f21950f64d 100644
--- a/drivers/net/dpaa/dpaa_flow.c
+++ b/drivers/net/dpaa/dpaa_flow.c
@@ -81,6 +81,10 @@ static void fm_prev_cleanup(void)
devid = fm_model.device_order[i];
/* FM Port Open */
fm_model.fm_port_params[devid].h_fm = fm_info.fman_handle;
+ if (dpaa_intf.port_handle) {
+ fm_port_close(dpaa_intf.port_handle);
+ dpaa_intf.port_handle = NULL;
+ }
dpaa_intf.port_handle =
fm_port_open(&fm_model.fm_port_params[devid]);
dpaa_intf.scheme_handle[0] = create_device(fm_info.pcd_handle,
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (9 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 10/18] net/dpaa: fix port_handle leak in fm_prev_cleanup Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 12/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
` (7 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Vanshika Shukla
From: Vanshika Shukla <vanshika.shukla@nxp.com>
In fsl_qdma_enqueue_desc_sg(), the code accesses desc_ssge[num - 1]
without validating num first. If pending_num is 0, num will be 0 and
the access underflows. Add a bounds check to return -EINVAL when num
is 0 or exceeds FSL_QDMA_SG_MAX_ENTRY.
Fixes: a77261f61245 ("dma/dpaa: support scatter-gather")
Cc: stable@dpdk.org
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
drivers/dma/dpaa/dpaa_qdma.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/dpaa/dpaa_qdma.c b/drivers/dma/dpaa/dpaa_qdma.c
index a695f58bc5..e2cb157c43 100644
--- a/drivers/dma/dpaa/dpaa_qdma.c
+++ b/drivers/dma/dpaa/dpaa_qdma.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2021-2024 NXP
+ * Copyright 2021-2026 NXP
*/
#include <bus_dpaa_driver.h>
@@ -827,6 +827,11 @@ fsl_qdma_enqueue_desc_sg(struct fsl_qdma_queue *fsl_queue)
}
}
+ if (num == 0 || num > FSL_QDMA_SG_MAX_ENTRY) {
+ DPAA_QDMA_ERR("Invalid scatter-gather entry count: num=%u", num);
+ return -EINVAL;
+ }
+
ft->desc_ssge[num - 1].final = 1;
ft->desc_dsge[num - 1].final = 1;
csgf_src->length = total_len;
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 12/18] net/dpaa: fix xstat name for tx undersized counter
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (10 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 11/18] dma/dpaa: fix out-of-bounds access in SG descriptor enqueue Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 13/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
` (6 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
The xstat entry mapping to 'tund' (TX undersized) was incorrectly
labeled as 'rx_undersized'. Fix the prefix to 'tx_undersized'.
Fixes: b21ed3e2a16d ("net/dpaa: support extended statistics")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index f679a6e781..da83b45831 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -125,7 +125,7 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_stats, terr)},
{"tx_vlan_frame",
offsetof(struct dpaa_if_stats, tvlan)},
- {"rx_undersized",
+ {"tx_undersized",
offsetof(struct dpaa_if_stats, tund)},
{"rx_frame_counter",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfrc)},
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 13/18] net/dpaa: fix xstat string typos in BMI stats table
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (11 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 12/18] net/dpaa: fix xstat name for tx undersized counter Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 14/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
` (5 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
Fix three issues in the xstats name table:
- 'rx_frame_discrad_count' is a misspelling, correct to
'rx_frame_discard_count'
- 'rx_out_of_buffer_discard ' has a trailing space, remove it
- 'rx_buf_diallocate' is a misspelling, correct to
'rx_buf_deallocate'
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index da83b45831..50d30d23b2 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -135,13 +135,13 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rlfc)},
{"rx_filter_frames_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rffc)},
- {"rx_frame_discrad_count",
+ {"rx_frame_discard_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfdc)},
{"rx_frame_list_dma_err_count",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfldec)},
- {"rx_out_of_buffer_discard ",
+ {"rx_out_of_buffer_discard",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rodc)},
- {"rx_buf_diallocate",
+ {"rx_buf_deallocate",
offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rbdc)},
};
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 14/18] net/dpaa: remove duplicate ptype entries
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (12 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 13/18] net/dpaa: fix xstat string typos in BMI stats table Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 15/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
` (4 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
RTE_PTYPE_L4_TCP and RTE_PTYPE_L4_UDP were listed twice in the
supported ptypes array returned by dpaa_supported_ptypes_get().
Remove the duplicate entries.
Fixes: ec503d8fa782 ("net/dpaa: update supported ptypes")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 50d30d23b2..1774d000a0 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -406,8 +406,6 @@ dpaa_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
RTE_PTYPE_L4_TCP,
RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_FRAG,
- RTE_PTYPE_L4_TCP,
- RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_SCTP,
RTE_PTYPE_TUNNEL_ESP,
RTE_PTYPE_TUNNEL_GRE,
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 15/18] net/dpaa: fix wrong buffer in xstats get by id
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (13 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 14/18] net/dpaa: remove duplicate ptype entries Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 16/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
` (3 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_xstats_get_by_id(), fman_if_bmi_stats_get_all() was called
with 'values' (the output array) instead of 'values_copy' (the
scratch buffer). This caused the BMI stats to overwrite already
computed xstat values and then the subsequent loop would copy
garbage from values_copy into the output.
Pass 'values_copy' as intended so that BMI stats are fetched into
the scratch buffer and then correctly indexed into 'values'.
Fixes: d2536b006d78 ("bus/dpaa: add port buffer manager stats")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 1774d000a0..f6d9dd6248 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -928,7 +928,8 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
values[i] =
values_copy[dpaa_xstats_strings[i].offset / 8];
- fman_if_bmi_stats_get_all(dev->process_private, values);
+ /* i continues from previous loop; BMI stats fill values[i..stat_cnt-1] */
+ fman_if_bmi_stats_get_all(dev->process_private, values_copy);
for (j = 0; i < stat_cnt; i++, j++)
values[i] = values_copy[j];
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 16/18] net/dpaa: fix null l3_len check in checksum offload
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (14 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 15/18] net/dpaa: fix wrong buffer in xstats get by id Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 17/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
` (2 subsequent siblings)
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_checksum(), if mbuf->l3_len is zero the L4 header pointer
calculation (l3_hdr + mbuf->l3_len) points to the start of the L3
header rather than the L4 header, leading to incorrect checksum
computation. Add an early return guard when l3_len is zero.
A debug warning is logged to aid diagnosis of mbufs with
uninitialized or corrupt l3_len, since silently skipping checksum
offload would cause the packet to be transmitted without the
requested checksum.
Fixes: 5a8cf1bef775 ("net/dpaa: support checksum offload")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index c5e393159a..3734496d6f 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -377,6 +377,10 @@ static inline void dpaa_checksum(struct rte_mbuf *mbuf)
struct rte_ipv6_hdr *ipv6_hdr = (struct rte_ipv6_hdr *)l3_hdr;
DPAA_DP_LOG(DEBUG, "Calculating checksum for mbuf: %p", mbuf);
+ if (mbuf->l3_len == 0) {
+ DPAA_DP_LOG(WARNING, "l3_len is 0, skipping checksum for mbuf: %p", mbuf);
+ return;
+ }
if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) ||
((mbuf->packet_type & RTE_PTYPE_L3_MASK) ==
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 17/18] net/dpaa: fix mbuf leak in SG fd creation
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (15 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 16/18] net/dpaa: fix null l3_len check in checksum offload Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-13 10:17 ` [PATCH v5 18/18] net/dpaa: fix device remove Hemant Agrawal
2026-07-14 10:21 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Thomas Monjalon
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable
In dpaa_eth_mbuf_to_sg_fd(), when the allocated temp mbuf does not
have sufficient space for the SG entries, the function returned -1
without freeing 'temp', causing a memory leak. Free 'temp' before
returning the error.
Fixes: 8cffdcbe85aa ("net/dpaa: support scattered Rx")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
drivers/net/dpaa/dpaa_rxtx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index 3734496d6f..272960b6e3 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -992,6 +992,7 @@ dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf,
if (temp->buf_len < ((mbuf->nb_segs * sizeof(struct qm_sg_entry))
+ temp->data_off)) {
DPAA_PMD_ERR("Insufficient space in mbuf for SG entries");
+ rte_pktmbuf_free(temp);
return -1;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* [PATCH v5 18/18] net/dpaa: fix device remove
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (16 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 17/18] net/dpaa: fix mbuf leak in SG fd creation Hemant Agrawal
@ 2026-07-13 10:17 ` Hemant Agrawal
2026-07-14 10:21 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Thomas Monjalon
18 siblings, 0 replies; 98+ messages in thread
From: Hemant Agrawal @ 2026-07-13 10:17 UTC (permalink / raw)
To: stephen, thomas, dev; +Cc: stable, Gagandeep Singh
From: Gagandeep Singh <g.singh@nxp.com>
Add a check to avoid closing a device that is already closed,
preventing a double-close condition during device removal.
Note: this also removes the explicit dpaa_finish() call that was
made at last-device remove time (!dpaa_valid_dev). dpaa_finish() is
registered as RTE_FINI_PRIO(dpaa_finish, 103) and will still run at
process exit, so for the normal run-then-exit path behaviour is
unchanged. For a remove-all-then-re-probe scenario, is_global_init
will remain set until exit; re-probe in a running process is not a
supported use case for this driver.
Fixes: 78ea4b4fcb52 ("bus/dpaa: improve cleanup")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
drivers/net/dpaa/dpaa_ethdev.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index f6d9dd6248..4dc4d1f10c 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -2672,18 +2672,20 @@ static int
rte_dpaa_remove(struct rte_dpaa_device *dpaa_dev)
{
struct rte_eth_dev *eth_dev;
- int ret;
+ int ret = 0;
PMD_INIT_FUNC_TRACE();
eth_dev = rte_eth_dev_allocated(dpaa_dev->device.name);
- dpaa_eth_dev_close(eth_dev);
- ret = rte_eth_dev_release_port(eth_dev);
+ ret = dpaa_eth_dev_close(eth_dev);
+ if (eth_dev->state != RTE_ETH_DEV_UNUSED) {
+ dpaa_eth_dev_close(eth_dev);
+ ret = rte_eth_dev_release_port(eth_dev);
+ }
dpaa_valid_dev--;
- if (!dpaa_valid_dev) {
+ if (!dpaa_valid_dev)
rte_mempool_free(dpaa_tx_sg_pool);
- dpaa_finish();
- }
+
return ret;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 98+ messages in thread* Re: [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers
2026-07-13 10:17 ` [PATCH v5 00/18] net/dpaa: bug fixes for bus, net and fmlib drivers Hemant Agrawal
` (17 preceding siblings ...)
2026-07-13 10:17 ` [PATCH v5 18/18] net/dpaa: fix device remove Hemant Agrawal
@ 2026-07-14 10:21 ` Thomas Monjalon
18 siblings, 0 replies; 98+ messages in thread
From: Thomas Monjalon @ 2026-07-14 10:21 UTC (permalink / raw)
To: Hemant Agrawal; +Cc: stephen, dev
13/07/2026 12:17, Hemant Agrawal:
> Gagandeep Singh (3):
> bus/dpaa: fix device probe issue
> net/dpaa: fix invalid check on interrupt unregister
> net/dpaa: fix device remove
>
> Hemant Agrawal (11):
> bus/dpaa: fix error handling of qman_create_fq
> bus/dpaa: fix fqid endianness
> bus/dpaa: fix error handling in qman_query
> net/dpaa: fix modify cgr to use index
> bus/dpaa: fix fd leak for ccsr mmap
> net/dpaa: fix xstat name for tx undersized counter
> net/dpaa: fix xstat string typos in BMI stats table
> net/dpaa: remove duplicate ptype entries
> net/dpaa: fix wrong buffer in xstats get by id
> net/dpaa: fix null l3_len check in checksum offload
> net/dpaa: fix mbuf leak in SG fd creation
>
> Jun Yang (1):
> bus/dpaa: fix BMI RX stats register offset
>
> Prashant Gupta (1):
> net/dpaa/fmlib: add null check in scheme delete
>
> Vanshika Shukla (2):
> net/dpaa: fix port_handle leak in fm_prev_cleanup
> dma/dpaa: fix out-of-bounds access in SG descriptor enqueue
We don't care the cause of a bug in the subject of the fix.
The most important is to reflect clearly the consequence,
the scope of the impact in words easy to quickly read.
Also, acronyms should be uppercased.
Applied with better titles.
Note there are still issues detected by AI but it is late
and merging in this release was explicitly requested.
^ permalink raw reply [flat|nested] 98+ messages in thread