DMA library has a function to get DMA device based on device name but there is no function to get DMA device using device id.
Added a function that lookup for the dma device using device id and returns the pointer to the same. Signed-off-by: Amit Prakash Shukla <amitpraka...@marvell.com> Acked-by: Chengwen Feng <fengcheng...@huawei.com> --- v2: - Arranged api in alphabetical order in version.map lib/dmadev/rte_dmadev.c | 9 +++++++++ lib/dmadev/rte_dmadev_pmd.h | 14 ++++++++++++++ lib/dmadev/version.map | 1 + 3 files changed, 24 insertions(+) diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c index 4e5e420c82..83f49e77f2 100644 --- a/lib/dmadev/rte_dmadev.c +++ b/lib/dmadev/rte_dmadev.c @@ -397,6 +397,15 @@ rte_dma_is_valid(int16_t dev_id) rte_dma_devices[dev_id].state != RTE_DMA_DEV_UNUSED; } +struct rte_dma_dev * +rte_dma_pmd_get_dev_by_id(const int dev_id) +{ + if (!rte_dma_is_valid(dev_id)) + return NULL; + + return &rte_dma_devices[dev_id]; +} + uint16_t rte_dma_count_avail(void) { diff --git a/lib/dmadev/rte_dmadev_pmd.h b/lib/dmadev/rte_dmadev_pmd.h index c61cedfb23..f68c3ac6aa 100644 --- a/lib/dmadev/rte_dmadev_pmd.h +++ b/lib/dmadev/rte_dmadev_pmd.h @@ -167,6 +167,20 @@ struct rte_dma_dev *rte_dma_pmd_allocate(const char *name, int numa_node, __rte_internal int rte_dma_pmd_release(const char *name); +/** + * @internal + * Get the rte_dma_dev structure device pointer for the device id. + * + * @param dev_id + * Device ID value to select the device structure. + * + * @return + * - rte_dma_dev structure pointer for the given device ID on success, NULL + * otherwise. + */ +__rte_internal +struct rte_dma_dev *rte_dma_pmd_get_dev_by_id(const int dev_id); + #ifdef __cplusplus } #endif diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map index 2a3736514c..046dbfa988 100644 --- a/lib/dmadev/version.map +++ b/lib/dmadev/version.map @@ -25,6 +25,7 @@ INTERNAL { rte_dma_fp_objs; rte_dma_pmd_allocate; + rte_dma_pmd_get_dev_by_id; rte_dma_pmd_release; local: *; -- 2.17.1