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> --- v2: - Dropped patch with dma event op structure. - Resolved review suggestions. lib/dmadev/rte_dmadev.c | 12 ++++++++++++ lib/dmadev/rte_dmadev_pmd.h | 15 +++++++++++++++ lib/dmadev/version.map | 1 + 3 files changed, 28 insertions(+) diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c index bf7d5ec519..d82464f0ca 100644 --- a/lib/dmadev/rte_dmadev.c +++ b/lib/dmadev/rte_dmadev.c @@ -121,6 +121,18 @@ dma_find_by_name(const char *name) return NULL; } +struct rte_dma_dev* +rte_dma_pmd_dev_get(uint8_t dev_id) +{ + if (rte_dma_devices == NULL || dev_id >= dma_devices_max) + return NULL; + + if (rte_dma_devices[dev_id].state == RTE_DMA_DEV_UNUSED) + return NULL; + + return &rte_dma_devices[dev_id]; +} + static void dma_fp_object_dummy(struct rte_dma_fp_object *obj); static int diff --git a/lib/dmadev/rte_dmadev_pmd.h b/lib/dmadev/rte_dmadev_pmd.h index c61cedfb23..b1f50c3931 100644 --- a/lib/dmadev/rte_dmadev_pmd.h +++ b/lib/dmadev/rte_dmadev_pmd.h @@ -167,6 +167,21 @@ 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. + * + * @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_dev_get(uint8_t dev_id); + #ifdef __cplusplus } #endif diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map index 7031d6b335..22aaa73419 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_dev_get; rte_dma_pmd_release; local: *; -- 2.25.1