Hi Bruce, >On Sat, May 24, 2025 at 02:43:10PM +0530, pbhagavat...@marvell.com wrote: >> From: Pavan Nikhilesh <pbhagavat...@marvell.com> >> >> Introduce DMA enqueue/dequeue operations to the DMA device library. >> >> Add configuration flags to rte_dma_config instead of boolean for >> individual features. >> >> 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. >> > >While I have no really strong objections to this addition to the dmadev >API, I'd appreciate if you could explain WHY or how this method of working >is more efficient in your usecase? When designing the dmadev APIs >originally, we looked at using both an enqueue-type API as well as the >implemented individual-op-based APIs. IIRC at that time testing showed that >using the single ops directly was faster than using the enqueue APIs, so >I'm wondering what exactly has changed, or is different about your usecase? >
Here is an example where we see enqueue/dequeue ops to be useful especially when integrating with Graph library. We had to write an entire wrapper[1] for tracking sges with the current implementation making our nodes[2] very complex. [1]https://github.com/MarvellEmbeddedProcessors/dao/blob/dao-devel/lib/common/dao_dma.h [2]https://github.com/MarvellEmbeddedProcessors/dao/blob/3f364261de91e355699bd9af20d60ea6459f7d67/lib/virtio_net/virtio_net_deq_ext.c#L51 >/Bruce Thanks, Pavan.