DPDK patches and discussions
 help / color / mirror / Atom feed
* [RFC v0 1/1] dmadev: provide priority configuration support
@ 2024-09-13 12:10 Vamsi Krishna
  2024-09-14  9:41 ` fengchengwen
  2024-09-18  9:40 ` [RFC v1 1/1] dmadev: support priority configuration Vamsi Krishna
  0 siblings, 2 replies; 18+ messages in thread
From: Vamsi Krishna @ 2024-09-13 12:10 UTC (permalink / raw)
  To: thomas, fengchengwen, bruce.richardson, mb
  Cc: dev, kevin.laatz, jerinj, conor.walsh, gmuthukrishn, vvelumuri,
	g.singh, sachin.saxena, hemant.agrawal, Vamsi Attunuru,
	Amit Prakash Shukla

From: Vamsi Attunuru <vattunuru@marvell.com>

Some DMA controllers offer the ability to configure priority level
for the hardware command queues, allowing for the prioritization of
DMA command execution based on queue importance.

This patch introduces the necessary fields in the dmadev structures to
retrieve information about the hardware-supported priority levels and to
enable priority configuration from the application.

Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Amit Prakash Shukla <amitprakashs@marvell.com>
---

Deprecation notice:
https://patches.dpdk.org/project/dpdk/patch/20240730144612.2132848-1-amitprakashs@marvell.com/

* Assuming we do not anticipate any advanced scheduling schemes for dmadev queues,
  this RFC is intended to support a strict prioirty scheme.

 doc/guides/rel_notes/release_24_11.rst | 15 +++------------
 lib/dmadev/rte_dmadev.c                | 10 ++++++++++
 lib/dmadev/rte_dmadev.h                | 11 +++++++++++
 3 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/doc/guides/rel_notes/release_24_11.rst b/doc/guides/rel_notes/release_24_11.rst
index 0ff70d9057..dc711bbf98 100644
--- a/doc/guides/rel_notes/release_24_11.rst
+++ b/doc/guides/rel_notes/release_24_11.rst
@@ -88,18 +88,9 @@ API Changes
 ABI Changes
 -----------
 
-.. This section should contain ABI changes. Sample format:
-
-   * sample: Add a short 1-2 sentence description of the ABI change
-     which was announced in the previous releases and made in this release.
-     Start with a scope label like "ethdev:".
-     Use fixed width quotes for ``function_names`` or ``struct_names``.
-     Use the past tense.
-
-   This section is a comment. Do not overwrite or remove it.
-   Also, make sure to start the actual text at the margin.
-   =======================================================
-
+* dmadev: Added ``nb_priorities`` field to ``rte_dma_info`` structure and
+  ``priority`` field to ``rte_dma_conf`` structure to get device supported
+  priority levels and configure required priority from the application.
 
 Known Issues
 ------------
diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index 845727210f..053170f55a 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -497,6 +497,16 @@ rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf)
 		return -EINVAL;
 	}
 
+	if (dev_info.nb_priorities == 1) {
+		RTE_DMA_LOG(ERR, "Device %d must support more than 1 priority, or else 0", dev_id);
+		return -EINVAL;
+	}
+
+	if (dev_info.nb_priorities && (dev_conf->priority >= dev_info.nb_priorities)) {
+		RTE_DMA_LOG(ERR, "Device %d configure invalid priority", dev_id);
+		return -EINVAL;
+	}
+
 	if (*dev->dev_ops->dev_configure == NULL)
 		return -ENOTSUP;
 	ret = (*dev->dev_ops->dev_configure)(dev, dev_conf,
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 5474a5281d..d59fcf1b61 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -297,6 +297,10 @@ struct rte_dma_info {
 	int16_t numa_node;
 	/** Number of virtual DMA channel configured. */
 	uint16_t nb_vchans;
+	/** Number of priority levels (must be > 1), if supported by DMA HW channel.
+	 * 0 otherwise.
+	 */
+	uint16_t nb_priorities;
 };
 
 /**
@@ -332,6 +336,13 @@ struct rte_dma_conf {
 	 * @see RTE_DMA_CAPA_SILENT
 	 */
 	bool enable_silent;
+	/* The prioirty of the DMA HW channel.
+	 * This value cannot be greater than or equal to the field 'nb_priorities'
+	 * of struct rte_dma_info which get from rte_dma_info_get().
+	 * Among the values between '0' and 'nb_priorities - 1', lowest value
+	 * indicates higher priority and vice-versa.
+	 */
+	uint16_t priority;
 };
 
 /**
-- 
2.34.1


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

end of thread, other threads:[~2024-10-17 17:39 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-13 12:10 [RFC v0 1/1] dmadev: provide priority configuration support Vamsi Krishna
2024-09-14  9:41 ` fengchengwen
2024-09-16 16:34   ` [EXTERNAL] " Vamsi Krishna Attunuru
2024-09-18  9:40 ` [RFC v1 1/1] dmadev: support priority configuration Vamsi Krishna
2024-09-18 10:13   ` [RFC v2 " Vamsi Krishna
2024-10-03 11:41     ` [PATCH v3 " Vamsi Krishna
2024-10-03 11:53       ` [PATCH v4 " Vamsi Krishna
2024-10-03 13:07         ` [EXTERNAL] " Anoob Joseph
2024-10-03 13:15           ` Vamsi Krishna Attunuru
2024-10-03 13:31             ` Vamsi Krishna Attunuru
2024-10-03 14:28             ` Anoob Joseph
2024-10-03 15:48               ` Vamsi Krishna Attunuru
2024-10-08  2:36         ` fengchengwen
2024-10-11  3:37           ` [EXTERNAL] " Vamsi Krishna Attunuru
2024-10-11  9:13       ` [PATCH v5 1/1] dmadev: support strict " Vamsi Krishna
2024-10-11  9:35         ` fengchengwen
2024-10-11 10:12         ` [PATCH v6 " Vamsi Krishna
2024-10-17 17:39           ` Thomas Monjalon

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).