DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 0/8] DPAA specific fixes
@ 2024-07-03 11:16 vanshika.shukla
  2024-07-03 11:16 ` [PATCH 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
                   ` (8 more replies)
  0 siblings, 9 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev

From: Vanshika Shukla <vanshika.shukla@nxp.com>

This series includes fixes for NXP DPAA drivers.

Apeksha Gupta (2):
  bus/dpaa: fix resource leak in variable dev
  common/dpaax: fix array overrun issue

Gagandeep Singh (3):
  bus/dpaa: fix bus scan for DMA devices
  common/dpaax: fix IOVA table cleanup
  bus/dpaa: remove unused code

Rohit Raj (2):
  bus/dpaa: remove redundant file descriptor check
  net/dpaa: restrict MTU config for shared intf

Sachin Saxena (1):
  mempool/dpaax: cache free optimization

 drivers/bus/dpaa/base/qbman/process.c    |  7 ++---
 drivers/bus/dpaa/base/qbman/qman.c       | 31 ----------------------
 drivers/bus/dpaa/dpaa_bus.c              |  5 +++-
 drivers/bus/dpaa/include/fsl_qman.h      | 31 ----------------------
 drivers/bus/dpaa/version.map             |  1 -
 drivers/common/dpaax/dpaax_iova_table.c  | 13 +++++-----
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++
 drivers/net/dpaa/dpaa_ethdev.c           | 33 ++++++++++++++++++++++--
 9 files changed, 75 insertions(+), 77 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 1/8] bus/dpaa: fix bus scan for DMA devices
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Gagandeep Singh
  Cc: stable, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

if there is no sec devices available, code is not scanning QDMA dev
This patch fix this problem by adding a goto statement instead
of return in case no sec device available.

Fixes: 583f3732974f ("dma/dpaa: introduce DPAA DMA driver skeleton")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 5d4352bb3c..de190eb569 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -221,7 +221,7 @@ dpaa_create_device_list(void)
 
 	if (dpaa_sec_available()) {
 		DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available");
-		return 0;
+		goto qdma_dpaa;
 	}
 
 	/* Creating SEC Devices */
@@ -260,6 +260,7 @@ dpaa_create_device_list(void)
 
 	rte_dpaa_bus.device_count += i;
 
+qdma_dpaa:
 	/* Creating QDMA Device */
 	for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) {
 		dev = calloc(1, sizeof(struct rte_dpaa_device));
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 2/8] bus/dpaa: fix resource leak in variable dev
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
  2024-07-03 11:16 ` [PATCH 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, David Marchand, Harman Kalra,
	Hyong Youb Kim
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Resource leak:
variable dev is going out of scope leaks the storage.

Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: hkalra@marvell.com
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index de190eb569..6ea27d8fb6 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -188,6 +188,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
@@ -239,6 +240,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 3/8] common/dpaax: fix IOVA table cleanup
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
  2024-07-03 11:16 ` [PATCH 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
  2024-07-03 11:16 ` [PATCH 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 4/8] common/dpaax: fix array overrun issue vanshika.shukla
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

Fixes incorrect structure free

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index 9daac4bc03..d2a78f4c19 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018 NXP
+ * Copyright 2018-2023 NXP
  */
 
 #include <rte_memory.h>
@@ -255,10 +255,7 @@ dpaax_iova_table_populate(void)
 void
 dpaax_iova_table_depopulate(void)
 {
-	if (dpaax_iova_table_p == NULL)
-		return;
-
-	rte_free(dpaax_iova_table_p->entries);
+	rte_free(dpaax_iova_table_p);
 	dpaax_iova_table_p = NULL;
 
 	DPAAX_DEBUG("IOVA Table cleaned");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 4/8] common/dpaax: fix array overrun issue
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (2 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Out-of-bounds read, Overrunning dynamic array nodes at offset corresponding
to index variable j.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index d2a78f4c19..860e702333 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -139,10 +139,12 @@ read_memory_node(unsigned int *count)
 	}
 
 	DPAAX_DEBUG("Device-tree memory node data:");
-	do {
+
+	while (j > 0) {
+		--j;
 		DPAAX_DEBUG("    %08" PRIx64 " %08zu",
 			    nodes[j].addr, nodes[j].len);
-	} while (--j);
+	}
 
 cleanup:
 	close(fd);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 5/8] bus/dpaa: remove redundant file descriptor check
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (3 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 4/8] common/dpaax: fix array overrun issue vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 6/8] bus/dpaa: remove unused code vanshika.shukla
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

This patch removes the redundant file descriptor check

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/process.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c
index 3504ec97db..3e4622f606 100644
--- a/drivers/bus/dpaa/base/qbman/process.c
+++ b/drivers/bus/dpaa/base/qbman/process.c
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
  *
  * Copyright 2011-2016 Freescale Semiconductor Inc.
- * Copyright 2017,2020 NXP
+ * Copyright 2017,2020,2022,2024 NXP
  *
  */
 #include <assert.h>
@@ -27,15 +27,16 @@ static int check_fd(void)
 {
 	int ret;
 
-	if (fd >= 0)
-		return 0;
 	ret = pthread_mutex_lock(&fd_init_lock);
 	assert(!ret);
+
 	/* check again with the lock held */
 	if (fd < 0)
 		fd = open(PROCESS_PATH, O_RDWR);
+
 	ret = pthread_mutex_unlock(&fd_init_lock);
 	assert(!ret);
+
 	return (fd >= 0) ? 0 : -ENODEV;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 6/8] bus/dpaa: remove unused code
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (4 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

The slow poll code is not being used in DPDK DPAA driver sub-system.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/qman.c  | 31 -----------------------------
 drivers/bus/dpaa/include/fsl_qman.h | 31 -----------------------------
 drivers/bus/dpaa/version.map        |  1 -
 3 files changed, 63 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 6d2fbdcf02..d3e236b333 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -69,7 +69,6 @@ struct qman_portal {
 	/* interrupt sources processed by portal_isr(), configurable */
 	unsigned long irq_sources;
 	u32 use_eqcr_ci_stashing;
-	u32 slowpoll;	/* only used when interrupts are off */
 	/* only 1 volatile dequeue at a time */
 	struct qman_fq *vdqcr_owned;
 	u32 sdqcr;
@@ -569,7 +568,6 @@ qman_init_portal(struct qman_portal *portal,
 	INIT_LIST_HEAD(&portal->cgr_cbs);
 	spin_lock_init(&portal->cgr_lock);
 	portal->bits = 0;
-	portal->slowpoll = 0;
 	portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 |
 			QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS |
 			QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED;
@@ -1370,35 +1368,6 @@ void qman_dqrr_consume(struct qman_fq *fq,
 	qm_dqrr_next(&p->p);
 }
 
-int qman_poll_dqrr(unsigned int limit)
-{
-	struct qman_portal *p = get_affine_portal();
-	int ret;
-
-	ret = __poll_portal_fast(p, limit);
-	return ret;
-}
-
-void qman_poll(void)
-{
-	struct qman_portal *p = get_affine_portal();
-
-	if ((~p->irq_sources) & QM_PIRQ_SLOW) {
-		if (!(p->slowpoll--)) {
-			u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources;
-			u32 active = __poll_portal_slow(p, is);
-
-			if (active) {
-				qm_isr_status_clear(&p->p, active);
-				p->slowpoll = SLOW_POLL_BUSY;
-			} else
-				p->slowpoll = SLOW_POLL_IDLE;
-		}
-	}
-	if ((~p->irq_sources) & QM_PIRQ_DQRI)
-		__poll_portal_fast(p, FSL_QMAN_POLL_LIMIT);
-}
-
 void qman_stop_dequeues(void)
 {
 	struct qman_portal *p = get_affine_portal();
diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
index acdfb45ad6..c0677976e8 100644
--- a/drivers/bus/dpaa/include/fsl_qman.h
+++ b/drivers/bus/dpaa/include/fsl_qman.h
@@ -1429,37 +1429,6 @@ __rte_internal
 void qman_dqrr_consume(struct qman_fq *fq,
 		       struct qm_dqrr_entry *dq);
 
-/**
- * qman_poll_dqrr - process DQRR (fast-path) entries
- * @limit: the maximum number of DQRR entries to process
- *
- * Use of this function requires that DQRR processing not be interrupt-driven.
- * Ie. the value returned by qman_irqsource_get() should not include
- * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU,
- * this function will return -EINVAL, otherwise the return value is >=0 and
- * represents the number of DQRR entries processed.
- */
-__rte_internal
-int qman_poll_dqrr(unsigned int limit);
-
-/**
- * qman_poll
- *
- * Dispatcher logic on a cpu can use this to trigger any maintenance of the
- * affine portal. There are two classes of portal processing in question;
- * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking
- * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR
- * thresholds, congestion state changes, etc). This function does whatever
- * processing is not triggered by interrupts.
- *
- * Note, if DQRR and some slow-path processing are poll-driven (rather than
- * interrupt-driven) then this function uses a heuristic to determine how often
- * to run slow-path processing - as slow-path processing introduces at least a
- * minimum latency each time it is run, whereas fast-path (DQRR) processing is
- * close to zero-cost if there is no work to be done.
- */
-void qman_poll(void);
-
 /**
  * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal
  *
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 1a840fd1a5..3f547f75cf 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -82,7 +82,6 @@ INTERNAL {
 	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
-	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 7/8] net/dpaa: restrict MTU config for shared intf
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (5 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 6/8] bus/dpaa: remove unused code vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-03 11:16 ` [PATCH 8/8] mempool/dpaax: cache free optimization vanshika.shukla
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

Since DPDK was able to configure mtu in VSP/Shared interface  mode,
it was causing misconfiguration of the hw which further caused crashes.

This patch allow only kernel to config MTU in such cases

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 935a4f2ada..c25576b7c7 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -14,6 +14,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
+#include <sys/ioctl.h>
 
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
@@ -165,9 +166,15 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN
 				+ VLAN_TAG_SIZE;
 	uint32_t buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
+	struct fman_if *fif = dev->process_private;
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (fif->is_shared_mac) {
+		DPAA_PMD_ERR("Cannot configure mtu from DPDK in VSP mode.");
+		return -ENOTSUP;
+	}
+
 	/*
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
@@ -206,7 +213,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	uint32_t max_rx_pktlen;
 	int speed, duplex;
-	int ret, rx_status;
+	int ret, rx_status, socket_fd;
+	struct ifreq ifr;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -222,6 +230,26 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 				     dpaa_intf->name);
 			return -EHOSTDOWN;
 		}
+
+		socket_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
+		if (socket_fd == -1) {
+			DPAA_PMD_ERR("Cannot open IF socket");
+			return -errno;
+		}
+
+		strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ);
+
+		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
+			DPAA_PMD_ERR("Cannot get interface mtu");
+			close(socket_fd);
+			return -errno;
+		}
+
+		close(socket_fd);
+		DPAA_PMD_INFO("Using kernel configured mtu size(%u)",
+			     ifr.ifr_mtu);
+
+		eth_conf->rxmode.mtu = ifr.ifr_mtu;
 	}
 
 	/* Rx offloads which are enabled by default */
@@ -249,7 +277,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 		max_rx_pktlen = DPAA_MAX_RX_PKT_LEN;
 	}
 
-	fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
+	if (!fif->is_shared_mac)
+		fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
 
 	if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) {
 		DPAA_PMD_DEBUG("enabling scatter mode");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH 8/8] mempool/dpaax: cache free optimization
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (6 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
@ 2024-07-03 11:16 ` vanshika.shukla
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-03 11:16 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Vanshika Shukla

From: Sachin Saxena <sachin.saxena@nxp.com>

 - Updates the cache threshold value as per
   the platform specific optimal value.

Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c
index 0b484b3d9c..3a65ef7d60 100644
--- a/drivers/mempool/dpaa/dpaa_mempool.c
+++ b/drivers/mempool/dpaa/dpaa_mempool.c
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- *   Copyright 2017,2019 NXP
+ *   Copyright 2017,2019,2023 NXP
  *
  */
 
@@ -51,6 +51,8 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	struct bman_pool_params params = {
 		.flags = BMAN_POOL_FLAG_DYNAMIC_BPID
 	};
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 
 	MEMPOOL_INIT_FUNC_TRACE();
 
@@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid],
 		   sizeof(struct dpaa_bp_info));
 	mp->pool_data = (void *)bp_info;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL;
+	}
 
 	DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid);
 	return 0;
diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 4c9245cb81..fe82475b10 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -44,6 +44,8 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	struct dpaa2_bp_info *bp_info;
 	struct dpbp_attr dpbp_attr;
 	uint32_t bpid;
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 	int ret;
 
 	avail_dpbp = dpaa2_alloc_dpbp_dev();
@@ -132,6 +134,19 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	DPAA2_MEMPOOL_DEBUG("BP List created for bpid =%d", dpbp_attr.bpid);
 
 	h_bp_list = bp_list;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA2_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA2_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA2_MBUF_MAX_ACQ_REL;
+	}
+
 	return 0;
 err3:
 	rte_free(bp_info);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 0/7] DPAA specific fixes
  2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
                   ` (7 preceding siblings ...)
  2024-07-03 11:16 ` [PATCH 8/8] mempool/dpaax: cache free optimization vanshika.shukla
@ 2024-07-05  7:42 ` vanshika.shukla
  2024-07-05  7:42   ` [v2 1/7] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
                     ` (6 more replies)
  8 siblings, 7 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev

From: Vanshika Shukla <vanshika.shukla@nxp.com>

This series includes fixes for NXP DPAA drivers.

V2 changes:
Removed "mempool/dpaax: cache free optimization" patch.

Apeksha Gupta (2):
  bus/dpaa: fix resource leak in variable dev
  common/dpaax: fix array overrun issue

Gagandeep Singh (3):
  bus/dpaa: fix bus scan for DMA devices
  common/dpaax: fix IOVA table cleanup
  bus/dpaa: remove unused code

Rohit Raj (2):
  bus/dpaa: remove redundant file descriptor check
  net/dpaa: restrict MTU config for shared intf

 drivers/bus/dpaa/base/qbman/process.c   |  7 +++---
 drivers/bus/dpaa/base/qbman/qman.c      | 31 -----------------------
 drivers/bus/dpaa/dpaa_bus.c             |  5 +++-
 drivers/bus/dpaa/include/fsl_qman.h     | 31 -----------------------
 drivers/bus/dpaa/version.map            |  1 -
 drivers/common/dpaax/dpaax_iova_table.c | 13 +++++-----
 drivers/net/dpaa/dpaa_ethdev.c          | 33 +++++++++++++++++++++++--
 7 files changed, 45 insertions(+), 76 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 1/7] bus/dpaa: fix bus scan for DMA devices
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
  2024-07-05  7:42   ` [v2 2/7] bus/dpaa: fix resource leak in variable dev vanshika.shukla
                     ` (5 subsequent siblings)
  6 siblings, 1 reply; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Gagandeep Singh
  Cc: stable, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

if there is no sec devices available, code is not scanning QDMA dev
This patch fix this problem by adding a goto statement instead
of return in case no sec device available.

Fixes: 583f3732974f ("dma/dpaa: introduce DPAA DMA driver skeleton")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 5d4352bb3c..de190eb569 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -221,7 +221,7 @@ dpaa_create_device_list(void)
 
 	if (dpaa_sec_available()) {
 		DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available");
-		return 0;
+		goto qdma_dpaa;
 	}
 
 	/* Creating SEC Devices */
@@ -260,6 +260,7 @@ dpaa_create_device_list(void)
 
 	rte_dpaa_bus.device_count += i;
 
+qdma_dpaa:
 	/* Creating QDMA Device */
 	for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) {
 		dev = calloc(1, sizeof(struct rte_dpaa_device));
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 2/7] bus/dpaa: fix resource leak in variable dev
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
  2024-07-05  7:42   ` [v2 1/7] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-05  7:42   ` [v2 3/7] common/dpaax: fix IOVA table cleanup vanshika.shukla
                     ` (4 subsequent siblings)
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, David Marchand, Harman Kalra,
	Hyong Youb Kim
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Resource leak:
variable dev is going out of scope leaks the storage.

Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: hkalra@marvell.com
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index de190eb569..6ea27d8fb6 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -188,6 +188,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
@@ -239,6 +240,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 3/7] common/dpaax: fix IOVA table cleanup
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
  2024-07-05  7:42   ` [v2 1/7] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
  2024-07-05  7:42   ` [v2 2/7] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-05  7:42   ` [v2 4/7] common/dpaax: fix array overrun issue vanshika.shukla
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

Fixes incorrect structure free

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index 9daac4bc03..d2a78f4c19 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018 NXP
+ * Copyright 2018-2023 NXP
  */
 
 #include <rte_memory.h>
@@ -255,10 +255,7 @@ dpaax_iova_table_populate(void)
 void
 dpaax_iova_table_depopulate(void)
 {
-	if (dpaax_iova_table_p == NULL)
-		return;
-
-	rte_free(dpaax_iova_table_p->entries);
+	rte_free(dpaax_iova_table_p);
 	dpaax_iova_table_p = NULL;
 
 	DPAAX_DEBUG("IOVA Table cleaned");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 4/7] common/dpaax: fix array overrun issue
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
                     ` (2 preceding siblings ...)
  2024-07-05  7:42   ` [v2 3/7] common/dpaax: fix IOVA table cleanup vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-05  7:42   ` [v2 5/7] bus/dpaa: remove redundant file descriptor check vanshika.shukla
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Out-of-bounds read, Overrunning dynamic array nodes at offset corresponding
to index variable j.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index d2a78f4c19..860e702333 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -139,10 +139,12 @@ read_memory_node(unsigned int *count)
 	}
 
 	DPAAX_DEBUG("Device-tree memory node data:");
-	do {
+
+	while (j > 0) {
+		--j;
 		DPAAX_DEBUG("    %08" PRIx64 " %08zu",
 			    nodes[j].addr, nodes[j].len);
-	} while (--j);
+	}
 
 cleanup:
 	close(fd);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 5/7] bus/dpaa: remove redundant file descriptor check
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
                     ` (3 preceding siblings ...)
  2024-07-05  7:42   ` [v2 4/7] common/dpaax: fix array overrun issue vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-05  7:42   ` [v2 6/7] bus/dpaa: remove unused code vanshika.shukla
  2024-07-05  7:42   ` [v2 7/7] net/dpaa: restrict MTU config for shared intf vanshika.shukla
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

This patch removes the redundant file descriptor check

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/process.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c
index 3504ec97db..3e4622f606 100644
--- a/drivers/bus/dpaa/base/qbman/process.c
+++ b/drivers/bus/dpaa/base/qbman/process.c
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
  *
  * Copyright 2011-2016 Freescale Semiconductor Inc.
- * Copyright 2017,2020 NXP
+ * Copyright 2017,2020,2022,2024 NXP
  *
  */
 #include <assert.h>
@@ -27,15 +27,16 @@ static int check_fd(void)
 {
 	int ret;
 
-	if (fd >= 0)
-		return 0;
 	ret = pthread_mutex_lock(&fd_init_lock);
 	assert(!ret);
+
 	/* check again with the lock held */
 	if (fd < 0)
 		fd = open(PROCESS_PATH, O_RDWR);
+
 	ret = pthread_mutex_unlock(&fd_init_lock);
 	assert(!ret);
+
 	return (fd >= 0) ? 0 : -ENODEV;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 6/7] bus/dpaa: remove unused code
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
                     ` (4 preceding siblings ...)
  2024-07-05  7:42   ` [v2 5/7] bus/dpaa: remove redundant file descriptor check vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  2024-07-05  7:42   ` [v2 7/7] net/dpaa: restrict MTU config for shared intf vanshika.shukla
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

The slow poll code is not being used in DPDK DPAA driver sub-system.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/qman.c  | 31 -----------------------------
 drivers/bus/dpaa/include/fsl_qman.h | 31 -----------------------------
 drivers/bus/dpaa/version.map        |  1 -
 3 files changed, 63 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index 6d2fbdcf02..d3e236b333 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -69,7 +69,6 @@ struct qman_portal {
 	/* interrupt sources processed by portal_isr(), configurable */
 	unsigned long irq_sources;
 	u32 use_eqcr_ci_stashing;
-	u32 slowpoll;	/* only used when interrupts are off */
 	/* only 1 volatile dequeue at a time */
 	struct qman_fq *vdqcr_owned;
 	u32 sdqcr;
@@ -569,7 +568,6 @@ qman_init_portal(struct qman_portal *portal,
 	INIT_LIST_HEAD(&portal->cgr_cbs);
 	spin_lock_init(&portal->cgr_lock);
 	portal->bits = 0;
-	portal->slowpoll = 0;
 	portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 |
 			QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS |
 			QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED;
@@ -1370,35 +1368,6 @@ void qman_dqrr_consume(struct qman_fq *fq,
 	qm_dqrr_next(&p->p);
 }
 
-int qman_poll_dqrr(unsigned int limit)
-{
-	struct qman_portal *p = get_affine_portal();
-	int ret;
-
-	ret = __poll_portal_fast(p, limit);
-	return ret;
-}
-
-void qman_poll(void)
-{
-	struct qman_portal *p = get_affine_portal();
-
-	if ((~p->irq_sources) & QM_PIRQ_SLOW) {
-		if (!(p->slowpoll--)) {
-			u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources;
-			u32 active = __poll_portal_slow(p, is);
-
-			if (active) {
-				qm_isr_status_clear(&p->p, active);
-				p->slowpoll = SLOW_POLL_BUSY;
-			} else
-				p->slowpoll = SLOW_POLL_IDLE;
-		}
-	}
-	if ((~p->irq_sources) & QM_PIRQ_DQRI)
-		__poll_portal_fast(p, FSL_QMAN_POLL_LIMIT);
-}
-
 void qman_stop_dequeues(void)
 {
 	struct qman_portal *p = get_affine_portal();
diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
index acdfb45ad6..c0677976e8 100644
--- a/drivers/bus/dpaa/include/fsl_qman.h
+++ b/drivers/bus/dpaa/include/fsl_qman.h
@@ -1429,37 +1429,6 @@ __rte_internal
 void qman_dqrr_consume(struct qman_fq *fq,
 		       struct qm_dqrr_entry *dq);
 
-/**
- * qman_poll_dqrr - process DQRR (fast-path) entries
- * @limit: the maximum number of DQRR entries to process
- *
- * Use of this function requires that DQRR processing not be interrupt-driven.
- * Ie. the value returned by qman_irqsource_get() should not include
- * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU,
- * this function will return -EINVAL, otherwise the return value is >=0 and
- * represents the number of DQRR entries processed.
- */
-__rte_internal
-int qman_poll_dqrr(unsigned int limit);
-
-/**
- * qman_poll
- *
- * Dispatcher logic on a cpu can use this to trigger any maintenance of the
- * affine portal. There are two classes of portal processing in question;
- * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking
- * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR
- * thresholds, congestion state changes, etc). This function does whatever
- * processing is not triggered by interrupts.
- *
- * Note, if DQRR and some slow-path processing are poll-driven (rather than
- * interrupt-driven) then this function uses a heuristic to determine how often
- * to run slow-path processing - as slow-path processing introduces at least a
- * minimum latency each time it is run, whereas fast-path (DQRR) processing is
- * close to zero-cost if there is no work to be done.
- */
-void qman_poll(void);
-
 /**
  * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal
  *
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 1a840fd1a5..3f547f75cf 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -82,7 +82,6 @@ INTERNAL {
 	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
-	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v2 7/7] net/dpaa: restrict MTU config for shared intf
  2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
                     ` (5 preceding siblings ...)
  2024-07-05  7:42   ` [v2 6/7] bus/dpaa: remove unused code vanshika.shukla
@ 2024-07-05  7:42   ` vanshika.shukla
  6 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-05  7:42 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

Since DPDK was able to configure mtu in VSP/Shared interface  mode,
it was causing misconfiguration of the hw which further caused crashes.

This patch allow only kernel to config MTU in such cases

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 935a4f2ada..c25576b7c7 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -14,6 +14,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
+#include <sys/ioctl.h>
 
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
@@ -165,9 +166,15 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN
 				+ VLAN_TAG_SIZE;
 	uint32_t buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
+	struct fman_if *fif = dev->process_private;
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (fif->is_shared_mac) {
+		DPAA_PMD_ERR("Cannot configure mtu from DPDK in VSP mode.");
+		return -ENOTSUP;
+	}
+
 	/*
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
@@ -206,7 +213,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	uint32_t max_rx_pktlen;
 	int speed, duplex;
-	int ret, rx_status;
+	int ret, rx_status, socket_fd;
+	struct ifreq ifr;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -222,6 +230,26 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 				     dpaa_intf->name);
 			return -EHOSTDOWN;
 		}
+
+		socket_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
+		if (socket_fd == -1) {
+			DPAA_PMD_ERR("Cannot open IF socket");
+			return -errno;
+		}
+
+		strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ);
+
+		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
+			DPAA_PMD_ERR("Cannot get interface mtu");
+			close(socket_fd);
+			return -errno;
+		}
+
+		close(socket_fd);
+		DPAA_PMD_INFO("Using kernel configured mtu size(%u)",
+			     ifr.ifr_mtu);
+
+		eth_conf->rxmode.mtu = ifr.ifr_mtu;
 	}
 
 	/* Rx offloads which are enabled by default */
@@ -249,7 +277,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 		max_rx_pktlen = DPAA_MAX_RX_PKT_LEN;
 	}
 
-	fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
+	if (!fif->is_shared_mac)
+		fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
 
 	if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) {
 		DPAA_PMD_DEBUG("enabling scatter mode");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v3 0/8] DPAA specific fixes
  2024-07-05  7:42   ` [v2 1/7] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-08  7:29     ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
                         ` (8 more replies)
  0 siblings, 9 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev

From: Vanshika Shukla <vanshika.shukla@nxp.com>

This series includes fixes for NXP DPAA drivers.

V3 changes:
Fixed compilation issue for "restrict MTU config for shared intf" patch.
Added back "mempool/dpaax: cache free optimization" patch.

V2 changes:
Removed "mempool/dpaax: cache free optimization" patch.

Apeksha Gupta (2):
  bus/dpaa: fix resource leak in variable dev
  common/dpaax: fix array overrun issue

Gagandeep Singh (3):
  bus/dpaa: fix bus scan for DMA devices
  common/dpaax: fix IOVA table cleanup
  bus/dpaa: remove unused code

Rohit Raj (2):
  bus/dpaa: remove redundant file descriptor check
  net/dpaa: restrict MTU config for shared intf

Sachin Saxena (1):
  mempool/dpaax: cache free optimization

 drivers/bus/dpaa/base/qbman/process.c    |  7 ++---
 drivers/bus/dpaa/base/qbman/qman.c       | 31 ----------------------
 drivers/bus/dpaa/dpaa_bus.c              |  5 +++-
 drivers/bus/dpaa/include/fsl_qman.h      | 31 ----------------------
 drivers/bus/dpaa/version.map             |  1 -
 drivers/common/dpaax/dpaax_iova_table.c  | 13 +++++-----
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++
 drivers/net/dpaa/dpaa_ethdev.c           | 33 ++++++++++++++++++++++--
 9 files changed, 75 insertions(+), 77 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 1/8] bus/dpaa: fix bus scan for DMA devices
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
                         ` (7 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Gagandeep Singh
  Cc: stable, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

if there is no sec devices available, code is not scanning QDMA dev
This patch fix this problem by adding a goto statement instead
of return in case no sec device available.

Fixes: 583f3732974f ("dma/dpaa: introduce DPAA DMA driver skeleton")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 64b748626b..b8f41ec069 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -221,7 +221,7 @@ dpaa_create_device_list(void)
 
 	if (dpaa_sec_available()) {
 		DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available");
-		return 0;
+		goto qdma_dpaa;
 	}
 
 	/* Creating SEC Devices */
@@ -260,6 +260,7 @@ dpaa_create_device_list(void)
 
 	rte_dpaa_bus.device_count += i;
 
+qdma_dpaa:
 	/* Creating QDMA Device */
 	for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) {
 		dev = calloc(1, sizeof(struct rte_dpaa_device));
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08 13:28         ` David Marchand
  2024-07-08  7:29       ` [PATCH v3 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
                         ` (6 subsequent siblings)
  8 siblings, 1 reply; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Harman Kalra, David Marchand,
	Hyong Youb Kim
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Resource leak:
variable dev is going out of scope leaks the storage.

Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: hkalra@marvell.com
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index b8f41ec069..1f6997c77e 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -188,6 +188,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
@@ -239,6 +240,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 3/8] common/dpaax: fix IOVA table cleanup
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 4/8] common/dpaax: fix array overrun issue vanshika.shukla
                         ` (5 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

Fixes incorrect structure free

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index 9daac4bc03..d2a78f4c19 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018 NXP
+ * Copyright 2018-2023 NXP
  */
 
 #include <rte_memory.h>
@@ -255,10 +255,7 @@ dpaax_iova_table_populate(void)
 void
 dpaax_iova_table_depopulate(void)
 {
-	if (dpaax_iova_table_p == NULL)
-		return;
-
-	rte_free(dpaax_iova_table_p->entries);
+	rte_free(dpaax_iova_table_p);
 	dpaax_iova_table_p = NULL;
 
 	DPAAX_DEBUG("IOVA Table cleaned");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 4/8] common/dpaax: fix array overrun issue
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (2 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
                         ` (4 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Out-of-bounds read, Overrunning dynamic array nodes at offset corresponding
to index variable j.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index d2a78f4c19..860e702333 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -139,10 +139,12 @@ read_memory_node(unsigned int *count)
 	}
 
 	DPAAX_DEBUG("Device-tree memory node data:");
-	do {
+
+	while (j > 0) {
+		--j;
 		DPAAX_DEBUG("    %08" PRIx64 " %08zu",
 			    nodes[j].addr, nodes[j].len);
-	} while (--j);
+	}
 
 cleanup:
 	close(fd);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 5/8] bus/dpaa: remove redundant file descriptor check
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (3 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 4/8] common/dpaax: fix array overrun issue vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 6/8] bus/dpaa: remove unused code vanshika.shukla
                         ` (3 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

This patch removes the redundant file descriptor check

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/process.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c
index 59e0d641ce..2d805c5bd9 100644
--- a/drivers/bus/dpaa/base/qbman/process.c
+++ b/drivers/bus/dpaa/base/qbman/process.c
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
  *
  * Copyright 2011-2016 Freescale Semiconductor Inc.
- * Copyright 2017,2020 NXP
+ * Copyright 2017,2020,2022,2024 NXP
  *
  */
 #include <assert.h>
@@ -28,15 +28,16 @@ static int check_fd(void)
 {
 	int ret;
 
-	if (fd >= 0)
-		return 0;
 	ret = pthread_mutex_lock(&fd_init_lock);
 	assert(!ret);
+
 	/* check again with the lock held */
 	if (fd < 0)
 		fd = open(PROCESS_PATH, O_RDWR);
+
 	ret = pthread_mutex_unlock(&fd_init_lock);
 	assert(!ret);
+
 	return (fd >= 0) ? 0 : -ENODEV;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 6/8] bus/dpaa: remove unused code
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (4 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08  7:29       ` [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
                         ` (2 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

The slow poll code is not being used in DPDK DPAA driver sub-system.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/qman.c  | 31 -----------------------------
 drivers/bus/dpaa/include/fsl_qman.h | 31 -----------------------------
 drivers/bus/dpaa/version.map        |  1 -
 3 files changed, 63 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index b1166fcb1f..cc10def861 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -69,7 +69,6 @@ struct qman_portal {
 	/* interrupt sources processed by portal_isr(), configurable */
 	unsigned long irq_sources;
 	u32 use_eqcr_ci_stashing;
-	u32 slowpoll;	/* only used when interrupts are off */
 	/* only 1 volatile dequeue at a time */
 	struct qman_fq *vdqcr_owned;
 	u32 sdqcr;
@@ -569,7 +568,6 @@ qman_init_portal(struct qman_portal *portal,
 	INIT_LIST_HEAD(&portal->cgr_cbs);
 	spin_lock_init(&portal->cgr_lock);
 	portal->bits = 0;
-	portal->slowpoll = 0;
 	portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 |
 			QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS |
 			QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED;
@@ -1370,35 +1368,6 @@ void qman_dqrr_consume(struct qman_fq *fq,
 	qm_dqrr_next(&p->p);
 }
 
-int qman_poll_dqrr(unsigned int limit)
-{
-	struct qman_portal *p = get_affine_portal();
-	int ret;
-
-	ret = __poll_portal_fast(p, limit);
-	return ret;
-}
-
-void qman_poll(void)
-{
-	struct qman_portal *p = get_affine_portal();
-
-	if ((~p->irq_sources) & QM_PIRQ_SLOW) {
-		if (!(p->slowpoll--)) {
-			u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources;
-			u32 active = __poll_portal_slow(p, is);
-
-			if (active) {
-				qm_isr_status_clear(&p->p, active);
-				p->slowpoll = SLOW_POLL_BUSY;
-			} else
-				p->slowpoll = SLOW_POLL_IDLE;
-		}
-	}
-	if ((~p->irq_sources) & QM_PIRQ_DQRI)
-		__poll_portal_fast(p, FSL_QMAN_POLL_LIMIT);
-}
-
 void qman_stop_dequeues(void)
 {
 	struct qman_portal *p = get_affine_portal();
diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
index acdfb45ad6..c0677976e8 100644
--- a/drivers/bus/dpaa/include/fsl_qman.h
+++ b/drivers/bus/dpaa/include/fsl_qman.h
@@ -1429,37 +1429,6 @@ __rte_internal
 void qman_dqrr_consume(struct qman_fq *fq,
 		       struct qm_dqrr_entry *dq);
 
-/**
- * qman_poll_dqrr - process DQRR (fast-path) entries
- * @limit: the maximum number of DQRR entries to process
- *
- * Use of this function requires that DQRR processing not be interrupt-driven.
- * Ie. the value returned by qman_irqsource_get() should not include
- * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU,
- * this function will return -EINVAL, otherwise the return value is >=0 and
- * represents the number of DQRR entries processed.
- */
-__rte_internal
-int qman_poll_dqrr(unsigned int limit);
-
-/**
- * qman_poll
- *
- * Dispatcher logic on a cpu can use this to trigger any maintenance of the
- * affine portal. There are two classes of portal processing in question;
- * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking
- * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR
- * thresholds, congestion state changes, etc). This function does whatever
- * processing is not triggered by interrupts.
- *
- * Note, if DQRR and some slow-path processing are poll-driven (rather than
- * interrupt-driven) then this function uses a heuristic to determine how often
- * to run slow-path processing - as slow-path processing introduces at least a
- * minimum latency each time it is run, whereas fast-path (DQRR) processing is
- * close to zero-cost if there is no work to be done.
- */
-void qman_poll(void);
-
 /**
  * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal
  *
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 1a840fd1a5..3f547f75cf 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -82,7 +82,6 @@ INTERNAL {
 	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
-	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (5 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 6/8] bus/dpaa: remove unused code vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-09  8:47         ` David Marchand
  2024-07-08  7:29       ` [PATCH v3 8/8] mempool/dpaax: cache free optimization vanshika.shukla
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
  8 siblings, 1 reply; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

Since DPDK was able to configure mtu in VSP/Shared interface  mode,
it was causing misconfiguration of the hw which further caused crashes.

This patch allow only kernel to config MTU in such cases

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 44bac67803..060b8c678f 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -14,6 +14,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
+#include <sys/ioctl.h>
 
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
@@ -165,9 +166,15 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN
 				+ VLAN_TAG_SIZE;
 	uint32_t buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
+	struct fman_if *fif = dev->process_private;
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (fif->is_shared_mac) {
+		DPAA_PMD_ERR("Cannot configure mtu from DPDK in VSP mode.");
+		return -ENOTSUP;
+	}
+
 	/*
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
@@ -206,7 +213,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	uint32_t max_rx_pktlen;
 	int speed, duplex;
-	int ret, rx_status;
+	int ret, rx_status, socket_fd;
+	struct ifreq ifr;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -222,6 +230,26 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 				     dpaa_intf->name);
 			return -EHOSTDOWN;
 		}
+
+		socket_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
+		if (socket_fd == -1) {
+			DPAA_PMD_ERR("Cannot open IF socket");
+			return -errno;
+		}
+
+		strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ - 1);
+
+		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
+			DPAA_PMD_ERR("Cannot get interface mtu");
+			close(socket_fd);
+			return -errno;
+		}
+
+		close(socket_fd);
+		DPAA_PMD_INFO("Using kernel configured mtu size(%u)",
+			     ifr.ifr_mtu);
+
+		eth_conf->rxmode.mtu = ifr.ifr_mtu;
 	}
 
 	/* Rx offloads which are enabled by default */
@@ -249,7 +277,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 		max_rx_pktlen = DPAA_MAX_RX_PKT_LEN;
 	}
 
-	fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
+	if (!fif->is_shared_mac)
+		fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
 
 	if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) {
 		DPAA_PMD_DEBUG("enabling scatter mode");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v3 8/8] mempool/dpaax: cache free optimization
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (6 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
@ 2024-07-08  7:29       ` vanshika.shukla
  2024-07-08 13:28         ` David Marchand
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
  8 siblings, 1 reply; 49+ messages in thread
From: vanshika.shukla @ 2024-07-08  7:29 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Vanshika Shukla

From: Sachin Saxena <sachin.saxena@nxp.com>

 - Updates the cache threshold value as per
   the platform specific optimal value.

Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c
index 21e8938cc6..9e3a743575 100644
--- a/drivers/mempool/dpaa/dpaa_mempool.c
+++ b/drivers/mempool/dpaa/dpaa_mempool.c
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- *   Copyright 2017,2019 NXP
+ *   Copyright 2017,2019,2023 NXP
  *
  */
 
@@ -51,6 +51,8 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	struct bman_pool_params params = {
 		.flags = BMAN_POOL_FLAG_DYNAMIC_BPID
 	};
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 
 	MEMPOOL_INIT_FUNC_TRACE();
 
@@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid],
 		   sizeof(struct dpaa_bp_info));
 	mp->pool_data = (void *)bp_info;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL;
+	}
 
 	DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid);
 	return 0;
diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 4c9245cb81..fe82475b10 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -44,6 +44,8 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	struct dpaa2_bp_info *bp_info;
 	struct dpbp_attr dpbp_attr;
 	uint32_t bpid;
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 	int ret;
 
 	avail_dpbp = dpaa2_alloc_dpbp_dev();
@@ -132,6 +134,19 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	DPAA2_MEMPOOL_DEBUG("BP List created for bpid =%d", dpbp_attr.bpid);
 
 	h_bp_list = bp_list;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA2_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA2_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA2_MBUF_MAX_ACQ_REL;
+	}
+
 	return 0;
 err3:
 	rte_free(bp_info);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev
  2024-07-08  7:29       ` [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-08 13:28         ` David Marchand
  0 siblings, 0 replies; 49+ messages in thread
From: David Marchand @ 2024-07-08 13:28 UTC (permalink / raw)
  To: vanshika.shukla
  Cc: dev, Hemant Agrawal, Sachin Saxena, Harman Kalra, Hyong Youb Kim,
	stable, Apeksha Gupta

On Mon, Jul 8, 2024 at 9:29 AM <vanshika.shukla@nxp.com> wrote:
>
> From: Apeksha Gupta <apeksha.gupta@nxp.com>
>
> Resource leak:
> variable dev is going out of scope leaks the storage.
>
> Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
> Cc: hkalra@marvell.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
> Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>

This lgtm.
Was this issue detected by the public CI coverity?
If so, please add a Coverity ID: tag.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v3 8/8] mempool/dpaax: cache free optimization
  2024-07-08  7:29       ` [PATCH v3 8/8] mempool/dpaax: cache free optimization vanshika.shukla
@ 2024-07-08 13:28         ` David Marchand
  0 siblings, 0 replies; 49+ messages in thread
From: David Marchand @ 2024-07-08 13:28 UTC (permalink / raw)
  To: vanshika.shukla; +Cc: dev, Hemant Agrawal, Sachin Saxena

On Mon, Jul 8, 2024 at 9:31 AM <vanshika.shukla@nxp.com> wrote:
> @@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
>         rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid],
>                    sizeof(struct dpaa_bp_info));
>         mp->pool_data = (void *)bp_info;
> +       /* Update per core mempool cache threshold to optimal value which is
> +        * number of buffers that can be released to HW buffer pool in
> +        * a single API call.
> +        */
> +       for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
> +               cache = &mp->local_cache[lcore_id];
> +               DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",

No \n please.


> +                       lcore_id, cache->flushthresh,
> +                       (uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL));
> +               if (cache->flushthresh)
> +                       cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL;
> +       }
>
>         DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid);
>         return 0;


-- 
David Marchand


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf
  2024-07-08  7:29       ` [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
@ 2024-07-09  8:47         ` David Marchand
  0 siblings, 0 replies; 49+ messages in thread
From: David Marchand @ 2024-07-09  8:47 UTC (permalink / raw)
  To: vanshika.shukla; +Cc: dev, Hemant Agrawal, Sachin Saxena, Rohit Raj

On Mon, Jul 8, 2024 at 9:30 AM <vanshika.shukla@nxp.com> wrote:
>
> From: Rohit Raj <rohit.raj@nxp.com>
>
> Since DPDK was able to configure mtu in VSP/Shared interface  mode,
> it was causing misconfiguration of the hw which further caused crashes.
>
> This patch allow only kernel to config MTU in such cases
>
> Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
> Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>

This fix should probably be backported. If so, please add a Fixes: tag.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 0/8] DPAA specific fixes
  2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
                         ` (7 preceding siblings ...)
  2024-07-08  7:29       ` [PATCH v3 8/8] mempool/dpaax: cache free optimization vanshika.shukla
@ 2024-07-09 10:04       ` vanshika.shukla
  2024-07-09 10:04         ` [v4 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
                           ` (9 more replies)
  8 siblings, 10 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:04 UTC (permalink / raw)
  To: dev

From: Vanshika Shukla <vanshika.shukla@nxp.com>

This series includes fixes for NXP DPAA drivers.

V4 changes:
Removed \n from debug prints in "cache free optimization" patch.
Added fixline for "restrict MTU config for shared intf" patch.
Added CID for "fix resource leak in variable dev" patch.

V3 changes:
Fixed compilation issue for "restrict MTU config for shared intf" patch.
Added back "mempool/dpaax: cache free optimization" patch.

V2 changes:
Removed "mempool/dpaax: cache free optimization" patch.

Apeksha Gupta (2):
  bus/dpaa: fix resource leak in variable dev
  common/dpaax: fix array overrun issue

Gagandeep Singh (3):
  bus/dpaa: fix bus scan for DMA devices
  common/dpaax: fix IOVA table cleanup
  bus/dpaa: remove unused code

Rohit Raj (2):
  bus/dpaa: remove redundant file descriptor check
  net/dpaa: restrict MTU config for shared intf

Sachin Saxena (1):
  mempool/dpaax: cache free optimization

 drivers/bus/dpaa/base/qbman/process.c    |  7 ++---
 drivers/bus/dpaa/base/qbman/qman.c       | 31 ----------------------
 drivers/bus/dpaa/dpaa_bus.c              |  5 +++-
 drivers/bus/dpaa/include/fsl_qman.h      | 31 ----------------------
 drivers/bus/dpaa/version.map             |  1 -
 drivers/common/dpaax/dpaax_iova_table.c  | 13 +++++-----
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++
 drivers/net/dpaa/dpaa_ethdev.c           | 33 ++++++++++++++++++++++--
 9 files changed, 75 insertions(+), 77 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 1/8] bus/dpaa: fix bus scan for DMA devices
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
@ 2024-07-09 10:04         ` vanshika.shukla
  2024-07-09 10:04         ` [v4 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
                           ` (8 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:04 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Gagandeep Singh
  Cc: stable, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

if there is no sec devices available, code is not scanning QDMA dev
This patch fix this problem by adding a goto statement instead
of return in case no sec device available.

Fixes: 583f3732974f ("dma/dpaa: introduce DPAA DMA driver skeleton")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 64b748626b..b8f41ec069 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -221,7 +221,7 @@ dpaa_create_device_list(void)
 
 	if (dpaa_sec_available()) {
 		DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available");
-		return 0;
+		goto qdma_dpaa;
 	}
 
 	/* Creating SEC Devices */
@@ -260,6 +260,7 @@ dpaa_create_device_list(void)
 
 	rte_dpaa_bus.device_count += i;
 
+qdma_dpaa:
 	/* Creating QDMA Device */
 	for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) {
 		dev = calloc(1, sizeof(struct rte_dpaa_device));
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 2/8] bus/dpaa: fix resource leak in variable dev
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
  2024-07-09 10:04         ` [v4 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-09 10:04         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
                           ` (7 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:04 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Harman Kalra, David Marchand,
	Hyong Youb Kim
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Resource leak:
variable dev is going out of scope leaks the storage.

Coverity issue: CID 373703
Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: hkalra@marvell.com
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index b8f41ec069..1f6997c77e 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -188,6 +188,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
@@ -239,6 +240,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 3/8] common/dpaax: fix IOVA table cleanup
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
  2024-07-09 10:04         ` [v4 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
  2024-07-09 10:04         ` [v4 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 4/8] common/dpaax: fix array overrun issue vanshika.shukla
                           ` (6 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

Fixes incorrect structure free

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index 9daac4bc03..d2a78f4c19 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018 NXP
+ * Copyright 2018-2023 NXP
  */
 
 #include <rte_memory.h>
@@ -255,10 +255,7 @@ dpaax_iova_table_populate(void)
 void
 dpaax_iova_table_depopulate(void)
 {
-	if (dpaax_iova_table_p == NULL)
-		return;
-
-	rte_free(dpaax_iova_table_p->entries);
+	rte_free(dpaax_iova_table_p);
 	dpaax_iova_table_p = NULL;
 
 	DPAAX_DEBUG("IOVA Table cleaned");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 4/8] common/dpaax: fix array overrun issue
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (2 preceding siblings ...)
  2024-07-09 10:05         ` [v4 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
                           ` (5 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Out-of-bounds read, Overrunning dynamic array nodes at offset corresponding
to index variable j.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index d2a78f4c19..860e702333 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -139,10 +139,12 @@ read_memory_node(unsigned int *count)
 	}
 
 	DPAAX_DEBUG("Device-tree memory node data:");
-	do {
+
+	while (j > 0) {
+		--j;
 		DPAAX_DEBUG("    %08" PRIx64 " %08zu",
 			    nodes[j].addr, nodes[j].len);
-	} while (--j);
+	}
 
 cleanup:
 	close(fd);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 5/8] bus/dpaa: remove redundant file descriptor check
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (3 preceding siblings ...)
  2024-07-09 10:05         ` [v4 4/8] common/dpaax: fix array overrun issue vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 6/8] bus/dpaa: remove unused code vanshika.shukla
                           ` (4 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

This patch removes the redundant file descriptor check

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/process.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c
index 59e0d641ce..2d805c5bd9 100644
--- a/drivers/bus/dpaa/base/qbman/process.c
+++ b/drivers/bus/dpaa/base/qbman/process.c
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
  *
  * Copyright 2011-2016 Freescale Semiconductor Inc.
- * Copyright 2017,2020 NXP
+ * Copyright 2017,2020,2022,2024 NXP
  *
  */
 #include <assert.h>
@@ -28,15 +28,16 @@ static int check_fd(void)
 {
 	int ret;
 
-	if (fd >= 0)
-		return 0;
 	ret = pthread_mutex_lock(&fd_init_lock);
 	assert(!ret);
+
 	/* check again with the lock held */
 	if (fd < 0)
 		fd = open(PROCESS_PATH, O_RDWR);
+
 	ret = pthread_mutex_unlock(&fd_init_lock);
 	assert(!ret);
+
 	return (fd >= 0) ? 0 : -ENODEV;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 6/8] bus/dpaa: remove unused code
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (4 preceding siblings ...)
  2024-07-09 10:05         ` [v4 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
                           ` (3 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

The slow poll code is not being used in DPDK DPAA driver sub-system.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/qman.c  | 31 -----------------------------
 drivers/bus/dpaa/include/fsl_qman.h | 31 -----------------------------
 drivers/bus/dpaa/version.map        |  1 -
 3 files changed, 63 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index b1166fcb1f..cc10def861 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -69,7 +69,6 @@ struct qman_portal {
 	/* interrupt sources processed by portal_isr(), configurable */
 	unsigned long irq_sources;
 	u32 use_eqcr_ci_stashing;
-	u32 slowpoll;	/* only used when interrupts are off */
 	/* only 1 volatile dequeue at a time */
 	struct qman_fq *vdqcr_owned;
 	u32 sdqcr;
@@ -569,7 +568,6 @@ qman_init_portal(struct qman_portal *portal,
 	INIT_LIST_HEAD(&portal->cgr_cbs);
 	spin_lock_init(&portal->cgr_lock);
 	portal->bits = 0;
-	portal->slowpoll = 0;
 	portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 |
 			QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS |
 			QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED;
@@ -1370,35 +1368,6 @@ void qman_dqrr_consume(struct qman_fq *fq,
 	qm_dqrr_next(&p->p);
 }
 
-int qman_poll_dqrr(unsigned int limit)
-{
-	struct qman_portal *p = get_affine_portal();
-	int ret;
-
-	ret = __poll_portal_fast(p, limit);
-	return ret;
-}
-
-void qman_poll(void)
-{
-	struct qman_portal *p = get_affine_portal();
-
-	if ((~p->irq_sources) & QM_PIRQ_SLOW) {
-		if (!(p->slowpoll--)) {
-			u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources;
-			u32 active = __poll_portal_slow(p, is);
-
-			if (active) {
-				qm_isr_status_clear(&p->p, active);
-				p->slowpoll = SLOW_POLL_BUSY;
-			} else
-				p->slowpoll = SLOW_POLL_IDLE;
-		}
-	}
-	if ((~p->irq_sources) & QM_PIRQ_DQRI)
-		__poll_portal_fast(p, FSL_QMAN_POLL_LIMIT);
-}
-
 void qman_stop_dequeues(void)
 {
 	struct qman_portal *p = get_affine_portal();
diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
index acdfb45ad6..c0677976e8 100644
--- a/drivers/bus/dpaa/include/fsl_qman.h
+++ b/drivers/bus/dpaa/include/fsl_qman.h
@@ -1429,37 +1429,6 @@ __rte_internal
 void qman_dqrr_consume(struct qman_fq *fq,
 		       struct qm_dqrr_entry *dq);
 
-/**
- * qman_poll_dqrr - process DQRR (fast-path) entries
- * @limit: the maximum number of DQRR entries to process
- *
- * Use of this function requires that DQRR processing not be interrupt-driven.
- * Ie. the value returned by qman_irqsource_get() should not include
- * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU,
- * this function will return -EINVAL, otherwise the return value is >=0 and
- * represents the number of DQRR entries processed.
- */
-__rte_internal
-int qman_poll_dqrr(unsigned int limit);
-
-/**
- * qman_poll
- *
- * Dispatcher logic on a cpu can use this to trigger any maintenance of the
- * affine portal. There are two classes of portal processing in question;
- * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking
- * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR
- * thresholds, congestion state changes, etc). This function does whatever
- * processing is not triggered by interrupts.
- *
- * Note, if DQRR and some slow-path processing are poll-driven (rather than
- * interrupt-driven) then this function uses a heuristic to determine how often
- * to run slow-path processing - as slow-path processing introduces at least a
- * minimum latency each time it is run, whereas fast-path (DQRR) processing is
- * close to zero-cost if there is no work to be done.
- */
-void qman_poll(void);
-
 /**
  * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal
  *
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 1a840fd1a5..3f547f75cf 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -82,7 +82,6 @@ INTERNAL {
 	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
-	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 7/8] net/dpaa: restrict MTU config for shared intf
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (5 preceding siblings ...)
  2024-07-09 10:05         ` [v4 6/8] bus/dpaa: remove unused code vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 10:05         ` [v4 8/8] mempool/dpaax: cache free optimization vanshika.shukla
                           ` (2 subsequent siblings)
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Jun Yang
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

Since DPDK was able to configure mtu in VSP/Shared interface  mode,
it was causing misconfiguration of the hw which further caused crashes.

This patch allow only kernel to config MTU in such cases

Fixes: e4abd4ff183c ("net/dpaa: support virtual storage profile")
Cc: jun.yang@nxp.com
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 44bac67803..060b8c678f 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -14,6 +14,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
+#include <sys/ioctl.h>
 
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
@@ -165,9 +166,15 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN
 				+ VLAN_TAG_SIZE;
 	uint32_t buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
+	struct fman_if *fif = dev->process_private;
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (fif->is_shared_mac) {
+		DPAA_PMD_ERR("Cannot configure mtu from DPDK in VSP mode.");
+		return -ENOTSUP;
+	}
+
 	/*
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
@@ -206,7 +213,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	uint32_t max_rx_pktlen;
 	int speed, duplex;
-	int ret, rx_status;
+	int ret, rx_status, socket_fd;
+	struct ifreq ifr;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -222,6 +230,26 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 				     dpaa_intf->name);
 			return -EHOSTDOWN;
 		}
+
+		socket_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
+		if (socket_fd == -1) {
+			DPAA_PMD_ERR("Cannot open IF socket");
+			return -errno;
+		}
+
+		strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ - 1);
+
+		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
+			DPAA_PMD_ERR("Cannot get interface mtu");
+			close(socket_fd);
+			return -errno;
+		}
+
+		close(socket_fd);
+		DPAA_PMD_INFO("Using kernel configured mtu size(%u)",
+			     ifr.ifr_mtu);
+
+		eth_conf->rxmode.mtu = ifr.ifr_mtu;
 	}
 
 	/* Rx offloads which are enabled by default */
@@ -249,7 +277,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 		max_rx_pktlen = DPAA_MAX_RX_PKT_LEN;
 	}
 
-	fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
+	if (!fif->is_shared_mac)
+		fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
 
 	if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) {
 		DPAA_PMD_DEBUG("enabling scatter mode");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v4 8/8] mempool/dpaax: cache free optimization
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (6 preceding siblings ...)
  2024-07-09 10:05         ` [v4 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
@ 2024-07-09 10:05         ` vanshika.shukla
  2024-07-09 12:05         ` [v4 0/8] DPAA specific fixes David Marchand
  2024-07-10  8:55         ` [v5 " vanshika.shukla
  9 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-09 10:05 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Vanshika Shukla

From: Sachin Saxena <sachin.saxena@nxp.com>

 - Updates the cache threshold value as per
   the platform specific optimal value.

Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c
index 21e8938cc6..74bfcab509 100644
--- a/drivers/mempool/dpaa/dpaa_mempool.c
+++ b/drivers/mempool/dpaa/dpaa_mempool.c
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- *   Copyright 2017,2019 NXP
+ *   Copyright 2017,2019,2023 NXP
  *
  */
 
@@ -51,6 +51,8 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	struct bman_pool_params params = {
 		.flags = BMAN_POOL_FLAG_DYNAMIC_BPID
 	};
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 
 	MEMPOOL_INIT_FUNC_TRACE();
 
@@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid],
 		   sizeof(struct dpaa_bp_info));
 	mp->pool_data = (void *)bp_info;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL;
+	}
 
 	DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid);
 	return 0;
diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 4c9245cb81..fe82475b10 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -44,6 +44,8 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	struct dpaa2_bp_info *bp_info;
 	struct dpbp_attr dpbp_attr;
 	uint32_t bpid;
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 	int ret;
 
 	avail_dpbp = dpaa2_alloc_dpbp_dev();
@@ -132,6 +134,19 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	DPAA2_MEMPOOL_DEBUG("BP List created for bpid =%d", dpbp_attr.bpid);
 
 	h_bp_list = bp_list;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA2_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA2_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA2_MBUF_MAX_ACQ_REL;
+	}
+
 	return 0;
 err3:
 	rte_free(bp_info);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [v4 0/8] DPAA specific fixes
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (7 preceding siblings ...)
  2024-07-09 10:05         ` [v4 8/8] mempool/dpaax: cache free optimization vanshika.shukla
@ 2024-07-09 12:05         ` David Marchand
  2024-07-10  8:55         ` [v5 " vanshika.shukla
  9 siblings, 0 replies; 49+ messages in thread
From: David Marchand @ 2024-07-09 12:05 UTC (permalink / raw)
  To: vanshika.shukla; +Cc: dev

On Tue, Jul 9, 2024 at 12:05 PM <vanshika.shukla@nxp.com> wrote:
>
> From: Vanshika Shukla <vanshika.shukla@nxp.com>
>
> This series includes fixes for NXP DPAA drivers.
>
> V4 changes:
> Removed \n from debug prints in "cache free optimization" patch.
> Added fixline for "restrict MTU config for shared intf" patch.
> Added CID for "fix resource leak in variable dev" patch.

After looking at coverity, I quickly found one other patch that matches a CID.
Please, do me a favor, and reference the CID in all relevant fixes...


-- 
David Marchand


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 0/8] DPAA specific fixes
  2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
                           ` (8 preceding siblings ...)
  2024-07-09 12:05         ` [v4 0/8] DPAA specific fixes David Marchand
@ 2024-07-10  8:55         ` vanshika.shukla
  2024-07-10  8:55           ` [v5 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
                             ` (8 more replies)
  9 siblings, 9 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev

From: Vanshika Shukla <vanshika.shukla@nxp.com>

This series includes fixes for NXP DPAA drivers.

V5 changes:
Added CID for "remove redundant file descriptor check" patch.
Note: Other patches are bug fixes reported by our internal coverity tool.

V4 changes:
Removed \n from debug prints in "cache free optimization" patch.
Added fixline for "restrict MTU config for shared intf" patch.
Added CID for "fix resource leak in variable dev" patch.

V3 changes:
Fixed compilation issue for "restrict MTU config for shared intf" patch.
Added back "mempool/dpaax: cache free optimization" patch.

V2 changes:
Removed "mempool/dpaax: cache free optimization" patch.

Apeksha Gupta (2):
  bus/dpaa: fix resource leak in variable dev
  common/dpaax: fix array overrun issue

Gagandeep Singh (3):
  bus/dpaa: fix bus scan for DMA devices
  common/dpaax: fix IOVA table cleanup
  bus/dpaa: remove unused code

Rohit Raj (2):
  bus/dpaa: remove redundant file descriptor check
  net/dpaa: restrict MTU config for shared intf

Sachin Saxena (1):
  mempool/dpaax: cache free optimization

 drivers/bus/dpaa/base/qbman/process.c    |  7 ++---
 drivers/bus/dpaa/base/qbman/qman.c       | 31 ----------------------
 drivers/bus/dpaa/dpaa_bus.c              |  5 +++-
 drivers/bus/dpaa/include/fsl_qman.h      | 31 ----------------------
 drivers/bus/dpaa/version.map             |  1 -
 drivers/common/dpaax/dpaax_iova_table.c  | 13 +++++-----
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++
 drivers/net/dpaa/dpaa_ethdev.c           | 33 ++++++++++++++++++++++--
 9 files changed, 75 insertions(+), 77 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 1/8] bus/dpaa: fix bus scan for DMA devices
  2024-07-10  8:55         ` [v5 " vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
                             ` (7 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Gagandeep Singh
  Cc: stable, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

if there is no sec devices available, code is not scanning QDMA dev
This patch fix this problem by adding a goto statement instead
of return in case no sec device available.

Fixes: 583f3732974f ("dma/dpaa: introduce DPAA DMA driver skeleton")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 64b748626b..b8f41ec069 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -221,7 +221,7 @@ dpaa_create_device_list(void)
 
 	if (dpaa_sec_available()) {
 		DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available");
-		return 0;
+		goto qdma_dpaa;
 	}
 
 	/* Creating SEC Devices */
@@ -260,6 +260,7 @@ dpaa_create_device_list(void)
 
 	rte_dpaa_bus.device_count += i;
 
+qdma_dpaa:
 	/* Creating QDMA Device */
 	for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) {
 		dev = calloc(1, sizeof(struct rte_dpaa_device));
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 2/8] bus/dpaa: fix resource leak in variable dev
  2024-07-10  8:55         ` [v5 " vanshika.shukla
  2024-07-10  8:55           ` [v5 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
                             ` (6 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Hyong Youb Kim, Harman Kalra,
	David Marchand
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Resource leak:
variable dev is going out of scope leaks the storage.

Coverity issue: CID 373703
Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: hkalra@marvell.com
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index b8f41ec069..1f6997c77e 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -188,6 +188,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
@@ -239,6 +240,7 @@ dpaa_create_device_list(void)
 		if (dev->intr_handle == NULL) {
 			DPAA_BUS_LOG(ERR, "Failed to allocate intr handle");
 			ret = -ENOMEM;
+			free(dev);
 			goto cleanup;
 		}
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 3/8] common/dpaax: fix IOVA table cleanup
  2024-07-10  8:55         ` [v5 " vanshika.shukla
  2024-07-10  8:55           ` [v5 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
  2024-07-10  8:55           ` [v5 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 4/8] common/dpaax: fix array overrun issue vanshika.shukla
                             ` (5 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

Fixes incorrect structure free

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index 9daac4bc03..d2a78f4c19 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2018 NXP
+ * Copyright 2018-2023 NXP
  */
 
 #include <rte_memory.h>
@@ -255,10 +255,7 @@ dpaax_iova_table_populate(void)
 void
 dpaax_iova_table_depopulate(void)
 {
-	if (dpaax_iova_table_p == NULL)
-		return;
-
-	rte_free(dpaax_iova_table_p->entries);
+	rte_free(dpaax_iova_table_p);
 	dpaax_iova_table_p = NULL;
 
 	DPAAX_DEBUG("IOVA Table cleaned");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 4/8] common/dpaax: fix array overrun issue
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (2 preceding siblings ...)
  2024-07-10  8:55           ` [v5 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
                             ` (4 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Apeksha Gupta, Vanshika Shukla

From: Apeksha Gupta <apeksha.gupta@nxp.com>

Out-of-bounds read, Overrunning dynamic array nodes at offset corresponding
to index variable j.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/common/dpaax/dpaax_iova_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
index d2a78f4c19..860e702333 100644
--- a/drivers/common/dpaax/dpaax_iova_table.c
+++ b/drivers/common/dpaax/dpaax_iova_table.c
@@ -139,10 +139,12 @@ read_memory_node(unsigned int *count)
 	}
 
 	DPAAX_DEBUG("Device-tree memory node data:");
-	do {
+
+	while (j > 0) {
+		--j;
 		DPAAX_DEBUG("    %08" PRIx64 " %08zu",
 			    nodes[j].addr, nodes[j].len);
-	} while (--j);
+	}
 
 cleanup:
 	close(fd);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 5/8] bus/dpaa: remove redundant file descriptor check
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (3 preceding siblings ...)
  2024-07-10  8:55           ` [v5 4/8] common/dpaax: fix array overrun issue vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 6/8] bus/dpaa: remove unused code vanshika.shukla
                             ` (3 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Shreyansh Jain
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

This patch removes the redundant file descriptor check

Coverity issue: CID 425715
Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/process.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c
index 59e0d641ce..2d805c5bd9 100644
--- a/drivers/bus/dpaa/base/qbman/process.c
+++ b/drivers/bus/dpaa/base/qbman/process.c
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
  *
  * Copyright 2011-2016 Freescale Semiconductor Inc.
- * Copyright 2017,2020 NXP
+ * Copyright 2017,2020,2022,2024 NXP
  *
  */
 #include <assert.h>
@@ -28,15 +28,16 @@ static int check_fd(void)
 {
 	int ret;
 
-	if (fd >= 0)
-		return 0;
 	ret = pthread_mutex_lock(&fd_init_lock);
 	assert(!ret);
+
 	/* check again with the lock held */
 	if (fd < 0)
 		fd = open(PROCESS_PATH, O_RDWR);
+
 	ret = pthread_mutex_unlock(&fd_init_lock);
 	assert(!ret);
+
 	return (fd >= 0) ? 0 : -ENODEV;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 6/8] bus/dpaa: remove unused code
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (4 preceding siblings ...)
  2024-07-10  8:55           ` [v5 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
                             ` (2 subsequent siblings)
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Gagandeep Singh, Vanshika Shukla

From: Gagandeep Singh <g.singh@nxp.com>

The slow poll code is not being used in DPDK DPAA driver sub-system.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/bus/dpaa/base/qbman/qman.c  | 31 -----------------------------
 drivers/bus/dpaa/include/fsl_qman.h | 31 -----------------------------
 drivers/bus/dpaa/version.map        |  1 -
 3 files changed, 63 deletions(-)

diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
index b1166fcb1f..cc10def861 100644
--- a/drivers/bus/dpaa/base/qbman/qman.c
+++ b/drivers/bus/dpaa/base/qbman/qman.c
@@ -69,7 +69,6 @@ struct qman_portal {
 	/* interrupt sources processed by portal_isr(), configurable */
 	unsigned long irq_sources;
 	u32 use_eqcr_ci_stashing;
-	u32 slowpoll;	/* only used when interrupts are off */
 	/* only 1 volatile dequeue at a time */
 	struct qman_fq *vdqcr_owned;
 	u32 sdqcr;
@@ -569,7 +568,6 @@ qman_init_portal(struct qman_portal *portal,
 	INIT_LIST_HEAD(&portal->cgr_cbs);
 	spin_lock_init(&portal->cgr_lock);
 	portal->bits = 0;
-	portal->slowpoll = 0;
 	portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 |
 			QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS |
 			QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED;
@@ -1370,35 +1368,6 @@ void qman_dqrr_consume(struct qman_fq *fq,
 	qm_dqrr_next(&p->p);
 }
 
-int qman_poll_dqrr(unsigned int limit)
-{
-	struct qman_portal *p = get_affine_portal();
-	int ret;
-
-	ret = __poll_portal_fast(p, limit);
-	return ret;
-}
-
-void qman_poll(void)
-{
-	struct qman_portal *p = get_affine_portal();
-
-	if ((~p->irq_sources) & QM_PIRQ_SLOW) {
-		if (!(p->slowpoll--)) {
-			u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources;
-			u32 active = __poll_portal_slow(p, is);
-
-			if (active) {
-				qm_isr_status_clear(&p->p, active);
-				p->slowpoll = SLOW_POLL_BUSY;
-			} else
-				p->slowpoll = SLOW_POLL_IDLE;
-		}
-	}
-	if ((~p->irq_sources) & QM_PIRQ_DQRI)
-		__poll_portal_fast(p, FSL_QMAN_POLL_LIMIT);
-}
-
 void qman_stop_dequeues(void)
 {
 	struct qman_portal *p = get_affine_portal();
diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
index acdfb45ad6..c0677976e8 100644
--- a/drivers/bus/dpaa/include/fsl_qman.h
+++ b/drivers/bus/dpaa/include/fsl_qman.h
@@ -1429,37 +1429,6 @@ __rte_internal
 void qman_dqrr_consume(struct qman_fq *fq,
 		       struct qm_dqrr_entry *dq);
 
-/**
- * qman_poll_dqrr - process DQRR (fast-path) entries
- * @limit: the maximum number of DQRR entries to process
- *
- * Use of this function requires that DQRR processing not be interrupt-driven.
- * Ie. the value returned by qman_irqsource_get() should not include
- * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU,
- * this function will return -EINVAL, otherwise the return value is >=0 and
- * represents the number of DQRR entries processed.
- */
-__rte_internal
-int qman_poll_dqrr(unsigned int limit);
-
-/**
- * qman_poll
- *
- * Dispatcher logic on a cpu can use this to trigger any maintenance of the
- * affine portal. There are two classes of portal processing in question;
- * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking
- * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR
- * thresholds, congestion state changes, etc). This function does whatever
- * processing is not triggered by interrupts.
- *
- * Note, if DQRR and some slow-path processing are poll-driven (rather than
- * interrupt-driven) then this function uses a heuristic to determine how often
- * to run slow-path processing - as slow-path processing introduces at least a
- * minimum latency each time it is run, whereas fast-path (DQRR) processing is
- * close to zero-cost if there is no work to be done.
- */
-void qman_poll(void);
-
 /**
  * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal
  *
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 1a840fd1a5..3f547f75cf 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -82,7 +82,6 @@ INTERNAL {
 	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
-	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 7/8] net/dpaa: restrict MTU config for shared intf
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (5 preceding siblings ...)
  2024-07-10  8:55           ` [v5 6/8] bus/dpaa: remove unused code vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-10  8:55           ` [v5 8/8] mempool/dpaax: cache free optimization vanshika.shukla
  2024-07-11 15:41           ` [v5 0/8] DPAA specific fixes David Marchand
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena, Jun Yang
  Cc: stable, Rohit Raj, Vanshika Shukla

From: Rohit Raj <rohit.raj@nxp.com>

Since DPDK was able to configure mtu in VSP/Shared interface  mode,
it was causing misconfiguration of the hw which further caused crashes.

This patch allow only kernel to config MTU in such cases

Fixes: e4abd4ff183c ("net/dpaa: support virtual storage profile")
Cc: jun.yang@nxp.com
Cc: stable@dpdk.org

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 44bac67803..060b8c678f 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -14,6 +14,7 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
+#include <sys/ioctl.h>
 
 #include <rte_string_fns.h>
 #include <rte_byteorder.h>
@@ -165,9 +166,15 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN
 				+ VLAN_TAG_SIZE;
 	uint32_t buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
+	struct fman_if *fif = dev->process_private;
 
 	PMD_INIT_FUNC_TRACE();
 
+	if (fif->is_shared_mac) {
+		DPAA_PMD_ERR("Cannot configure mtu from DPDK in VSP mode.");
+		return -ENOTSUP;
+	}
+
 	/*
 	 * Refuse mtu that requires the support of scattered packets
 	 * when this feature has not been enabled before.
@@ -206,7 +213,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	uint32_t max_rx_pktlen;
 	int speed, duplex;
-	int ret, rx_status;
+	int ret, rx_status, socket_fd;
+	struct ifreq ifr;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -222,6 +230,26 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 				     dpaa_intf->name);
 			return -EHOSTDOWN;
 		}
+
+		socket_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
+		if (socket_fd == -1) {
+			DPAA_PMD_ERR("Cannot open IF socket");
+			return -errno;
+		}
+
+		strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ - 1);
+
+		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
+			DPAA_PMD_ERR("Cannot get interface mtu");
+			close(socket_fd);
+			return -errno;
+		}
+
+		close(socket_fd);
+		DPAA_PMD_INFO("Using kernel configured mtu size(%u)",
+			     ifr.ifr_mtu);
+
+		eth_conf->rxmode.mtu = ifr.ifr_mtu;
 	}
 
 	/* Rx offloads which are enabled by default */
@@ -249,7 +277,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 		max_rx_pktlen = DPAA_MAX_RX_PKT_LEN;
 	}
 
-	fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
+	if (!fif->is_shared_mac)
+		fman_if_set_maxfrm(dev->process_private, max_rx_pktlen);
 
 	if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) {
 		DPAA_PMD_DEBUG("enabling scatter mode");
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* [v5 8/8] mempool/dpaax: cache free optimization
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (6 preceding siblings ...)
  2024-07-10  8:55           ` [v5 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
@ 2024-07-10  8:55           ` vanshika.shukla
  2024-07-11 15:41           ` [v5 0/8] DPAA specific fixes David Marchand
  8 siblings, 0 replies; 49+ messages in thread
From: vanshika.shukla @ 2024-07-10  8:55 UTC (permalink / raw)
  To: dev, Hemant Agrawal, Sachin Saxena; +Cc: Vanshika Shukla

From: Sachin Saxena <sachin.saxena@nxp.com>

 - Updates the cache threshold value as per
   the platform specific optimal value.

Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
---
 drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++++++-
 drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c
index 21e8938cc6..74bfcab509 100644
--- a/drivers/mempool/dpaa/dpaa_mempool.c
+++ b/drivers/mempool/dpaa/dpaa_mempool.c
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- *   Copyright 2017,2019 NXP
+ *   Copyright 2017,2019,2023 NXP
  *
  */
 
@@ -51,6 +51,8 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	struct bman_pool_params params = {
 		.flags = BMAN_POOL_FLAG_DYNAMIC_BPID
 	};
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 
 	MEMPOOL_INIT_FUNC_TRACE();
 
@@ -118,6 +120,18 @@ dpaa_mbuf_create_pool(struct rte_mempool *mp)
 	rte_memcpy(bp_info, (void *)&rte_dpaa_bpid_info[bpid],
 		   sizeof(struct dpaa_bp_info));
 	mp->pool_data = (void *)bp_info;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA_MBUF_MAX_ACQ_REL;
+	}
 
 	DPAA_MEMPOOL_INFO("BMAN pool created for bpid =%d", bpid);
 	return 0;
diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
index 4c9245cb81..fe82475b10 100644
--- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
+++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c
@@ -44,6 +44,8 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	struct dpaa2_bp_info *bp_info;
 	struct dpbp_attr dpbp_attr;
 	uint32_t bpid;
+	unsigned int lcore_id;
+	struct rte_mempool_cache *cache;
 	int ret;
 
 	avail_dpbp = dpaa2_alloc_dpbp_dev();
@@ -132,6 +134,19 @@ rte_hw_mbuf_create_pool(struct rte_mempool *mp)
 	DPAA2_MEMPOOL_DEBUG("BP List created for bpid =%d", dpbp_attr.bpid);
 
 	h_bp_list = bp_list;
+	/* Update per core mempool cache threshold to optimal value which is
+	 * number of buffers that can be released to HW buffer pool in
+	 * a single API call.
+	 */
+	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
+		cache = &mp->local_cache[lcore_id];
+		DPAA2_MEMPOOL_DEBUG("lCore %d: cache->flushthresh %d -> %d\n",
+			lcore_id, cache->flushthresh,
+			(uint32_t)(cache->size + DPAA2_MBUF_MAX_ACQ_REL));
+		if (cache->flushthresh)
+			cache->flushthresh = cache->size + DPAA2_MBUF_MAX_ACQ_REL;
+	}
+
 	return 0;
 err3:
 	rte_free(bp_info);
-- 
2.25.1


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [v5 0/8] DPAA specific fixes
  2024-07-10  8:55         ` [v5 " vanshika.shukla
                             ` (7 preceding siblings ...)
  2024-07-10  8:55           ` [v5 8/8] mempool/dpaax: cache free optimization vanshika.shukla
@ 2024-07-11 15:41           ` David Marchand
  8 siblings, 0 replies; 49+ messages in thread
From: David Marchand @ 2024-07-11 15:41 UTC (permalink / raw)
  To: vanshika.shukla; +Cc: dev

On Wed, Jul 10, 2024 at 10:55 AM <vanshika.shukla@nxp.com> wrote:
>
> From: Vanshika Shukla <vanshika.shukla@nxp.com>
>
> This series includes fixes for NXP DPAA drivers.
>
> V5 changes:
> Added CID for "remove redundant file descriptor check" patch.
> Note: Other patches are bug fixes reported by our internal coverity tool.
>
> V4 changes:
> Removed \n from debug prints in "cache free optimization" patch.
> Added fixline for "restrict MTU config for shared intf" patch.
> Added CID for "fix resource leak in variable dev" patch.
>
> V3 changes:
> Fixed compilation issue for "restrict MTU config for shared intf" patch.
> Added back "mempool/dpaax: cache free optimization" patch.
>
> V2 changes:
> Removed "mempool/dpaax: cache free optimization" patch.
>
> Apeksha Gupta (2):
>   bus/dpaa: fix resource leak in variable dev
>   common/dpaax: fix array overrun issue
>
> Gagandeep Singh (3):
>   bus/dpaa: fix bus scan for DMA devices
>   common/dpaax: fix IOVA table cleanup
>   bus/dpaa: remove unused code
>
> Rohit Raj (2):
>   bus/dpaa: remove redundant file descriptor check
>   net/dpaa: restrict MTU config for shared intf
>
> Sachin Saxena (1):
>   mempool/dpaax: cache free optimization
>
>  drivers/bus/dpaa/base/qbman/process.c    |  7 ++---
>  drivers/bus/dpaa/base/qbman/qman.c       | 31 ----------------------
>  drivers/bus/dpaa/dpaa_bus.c              |  5 +++-
>  drivers/bus/dpaa/include/fsl_qman.h      | 31 ----------------------
>  drivers/bus/dpaa/version.map             |  1 -
>  drivers/common/dpaax/dpaax_iova_table.c  | 13 +++++-----
>  drivers/mempool/dpaa/dpaa_mempool.c      | 16 +++++++++++-
>  drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 15 +++++++++++
>  drivers/net/dpaa/dpaa_ethdev.c           | 33 ++++++++++++++++++++++--
>  9 files changed, 75 insertions(+), 77 deletions(-)

Series applied, thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2024-07-11 15:42 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-03 11:16 [PATCH 0/8] DPAA specific fixes vanshika.shukla
2024-07-03 11:16 ` [PATCH 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
2024-07-03 11:16 ` [PATCH 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
2024-07-03 11:16 ` [PATCH 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
2024-07-03 11:16 ` [PATCH 4/8] common/dpaax: fix array overrun issue vanshika.shukla
2024-07-03 11:16 ` [PATCH 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
2024-07-03 11:16 ` [PATCH 6/8] bus/dpaa: remove unused code vanshika.shukla
2024-07-03 11:16 ` [PATCH 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
2024-07-03 11:16 ` [PATCH 8/8] mempool/dpaax: cache free optimization vanshika.shukla
2024-07-05  7:42 ` [v2 0/7] DPAA specific fixes vanshika.shukla
2024-07-05  7:42   ` [v2 1/7] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
2024-07-08  7:29     ` [v3 0/8] DPAA specific fixes vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
2024-07-08 13:28         ` David Marchand
2024-07-08  7:29       ` [PATCH v3 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 4/8] common/dpaax: fix array overrun issue vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 6/8] bus/dpaa: remove unused code vanshika.shukla
2024-07-08  7:29       ` [PATCH v3 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
2024-07-09  8:47         ` David Marchand
2024-07-08  7:29       ` [PATCH v3 8/8] mempool/dpaax: cache free optimization vanshika.shukla
2024-07-08 13:28         ` David Marchand
2024-07-09 10:04       ` [v4 0/8] DPAA specific fixes vanshika.shukla
2024-07-09 10:04         ` [v4 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
2024-07-09 10:04         ` [v4 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
2024-07-09 10:05         ` [v4 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
2024-07-09 10:05         ` [v4 4/8] common/dpaax: fix array overrun issue vanshika.shukla
2024-07-09 10:05         ` [v4 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
2024-07-09 10:05         ` [v4 6/8] bus/dpaa: remove unused code vanshika.shukla
2024-07-09 10:05         ` [v4 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
2024-07-09 10:05         ` [v4 8/8] mempool/dpaax: cache free optimization vanshika.shukla
2024-07-09 12:05         ` [v4 0/8] DPAA specific fixes David Marchand
2024-07-10  8:55         ` [v5 " vanshika.shukla
2024-07-10  8:55           ` [v5 1/8] bus/dpaa: fix bus scan for DMA devices vanshika.shukla
2024-07-10  8:55           ` [v5 2/8] bus/dpaa: fix resource leak in variable dev vanshika.shukla
2024-07-10  8:55           ` [v5 3/8] common/dpaax: fix IOVA table cleanup vanshika.shukla
2024-07-10  8:55           ` [v5 4/8] common/dpaax: fix array overrun issue vanshika.shukla
2024-07-10  8:55           ` [v5 5/8] bus/dpaa: remove redundant file descriptor check vanshika.shukla
2024-07-10  8:55           ` [v5 6/8] bus/dpaa: remove unused code vanshika.shukla
2024-07-10  8:55           ` [v5 7/8] net/dpaa: restrict MTU config for shared intf vanshika.shukla
2024-07-10  8:55           ` [v5 8/8] mempool/dpaax: cache free optimization vanshika.shukla
2024-07-11 15:41           ` [v5 0/8] DPAA specific fixes David Marchand
2024-07-05  7:42   ` [v2 2/7] bus/dpaa: fix resource leak in variable dev vanshika.shukla
2024-07-05  7:42   ` [v2 3/7] common/dpaax: fix IOVA table cleanup vanshika.shukla
2024-07-05  7:42   ` [v2 4/7] common/dpaax: fix array overrun issue vanshika.shukla
2024-07-05  7:42   ` [v2 5/7] bus/dpaa: remove redundant file descriptor check vanshika.shukla
2024-07-05  7:42   ` [v2 6/7] bus/dpaa: remove unused code vanshika.shukla
2024-07-05  7:42   ` [v2 7/7] net/dpaa: restrict MTU config for shared intf vanshika.shukla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).