++
> -----Original Message-----
> From: pbhagavat...@marvell.com <pbhagavat...@marvell.com>
> Sent: Thursday, March 27, 2025 1:07 AM
> To: Jerin Jacob <jer...@marvell.com>
> Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula
> <pbhagavat...@marvell.com>
> Subject: [RFC v2 0/3] Introduce DMA enqueue/dequeue operations
>
> From: Pavan Nikhilesh <pbhagavat...@marvell.com>
>
> Introduce DMA enqueue/dequeue operations to the DMA device library.
>
> The enqueue/dequeue operations allow applications to communicate with the
> DMA device using the rte_dma_op structure, providing a more flexible and
> efficient way to manage DMA operations.
>
> The programming model for the enqueue/dequeue operations is as follows:
>
> * Query DMA devices capability for RTE_DMA_CAPA_OPS_ENQ_DEQ through
> rte_dma_info::dev_capa.
> * Enable enqueue/dequeue operations on DMA device by enabling
> rte_dma_conf::enable_enq_deq during device configuration.
> * Allocate a mempool for rte_dma_ops with object size of
> rte_dma_op + (sizeof(struct rte_dma_sge) * rte_dma_info::max_sges * 2).
> * Configure vchans and start the dma device.
> * Get an rte_dma_op from the mempool, fill it with the necessary
> information and use rte_dma_enqueue() to enqueue the operation.
> * Call rte_dma_dequeue() operation to get the array of finished operations.
> * Free the rte_dma_op back to the mempool.
>
> The enqueue dequeue operations are not compatible with rte_dma_copy,
> rte_dma_copy_sg, rte_dma_fill, rte_dma_submit, rte_dma_completed and
> rte_dma_completed_status range of APIs.
>
> Pavan Nikhilesh (3):
> dmadev: add enqueue dequeue operations
> dma/cnxk: implement enqueue dequeue ops
> eventdev: refactor DMA adapter ops
>
> app/test-eventdev/test_perf_common.c | 6 +-
> app/test-eventdev/test_perf_common.h | 4 +-
> app/test/test_event_dma_adapter.c | 6 +-
> .../prog_guide/eventdev/event_dma_adapter.rst | 6 +-
> drivers/dma/cnxk/cnxk_dmadev.c | 27 +++-
> drivers/dma/cnxk/cnxk_dmadev.h | 7 +
> drivers/dma/cnxk/cnxk_dmadev_fp.c | 152 +++++++++++++++++-
> lib/dmadev/rte_dmadev.c | 18 +++
> lib/dmadev/rte_dmadev.h | 145 +++++++++++++++++
> lib/dmadev/rte_dmadev_core.h | 10 ++
> lib/dmadev/rte_dmadev_trace_fp.h | 20 +++
> lib/dmadev/rte_dmadev_trace_points.c | 6 +
> lib/eventdev/rte_event_dma_adapter.c | 18 +--
> lib/eventdev/rte_event_dma_adapter.h | 57 -------
> 14 files changed, 397 insertions(+), 85 deletions(-)
>
> --
> 2.43.0