151 #include <rte_compat.h>
159 #define RTE_DMADEV_DEFAULT_MAX 64
235 #define RTE_DMA_FOREACH_DEV(p) \
236 for (p = rte_dma_next_dev(0); \
238 p = rte_dma_next_dev(p + 1))
245 #define RTE_DMA_CAPA_MEM_TO_MEM RTE_BIT64(0)
247 #define RTE_DMA_CAPA_MEM_TO_DEV RTE_BIT64(1)
249 #define RTE_DMA_CAPA_DEV_TO_MEM RTE_BIT64(2)
251 #define RTE_DMA_CAPA_DEV_TO_DEV RTE_BIT64(3)
258 #define RTE_DMA_CAPA_SVA RTE_BIT64(4)
264 #define RTE_DMA_CAPA_SILENT RTE_BIT64(5)
272 #define RTE_DMA_CAPA_HANDLES_ERRORS RTE_BIT64(6)
277 #define RTE_DMA_CAPA_OPS_COPY RTE_BIT64(32)
279 #define RTE_DMA_CAPA_OPS_COPY_SG RTE_BIT64(33)
281 #define RTE_DMA_CAPA_OPS_FILL RTE_BIT64(34)
632 #define RTE_DMA_ALL_VCHAN 0xFFFFu
812 #define RTE_DMA_OP_FLAG_FENCE RTE_BIT64(0)
817 #define RTE_DMA_OP_FLAG_SUBMIT RTE_BIT64(1)
822 #define RTE_DMA_OP_FLAG_LLC RTE_BIT64(2)
857 uint32_t length, uint64_t flags)
859 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
861 #ifdef RTE_DMADEV_DEBUG
864 RTE_FUNC_PTR_OR_ERR_RET(*obj->copy, -ENOTSUP);
867 return (*obj->copy)(obj->dev_private, vchan, src, dst, length, flags);
906 struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
909 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
911 #ifdef RTE_DMADEV_DEBUG
913 nb_src == 0 || nb_dst == 0)
915 RTE_FUNC_PTR_OR_ERR_RET(*obj->copy_sg, -ENOTSUP);
918 return (*obj->copy_sg)(obj->dev_private, vchan, src, dst, nb_src,
954 rte_iova_t dst, uint32_t length, uint64_t flags)
956 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
958 #ifdef RTE_DMADEV_DEBUG
961 RTE_FUNC_PTR_OR_ERR_RET(*obj->fill, -ENOTSUP);
964 return (*obj->fill)(obj->dev_private, vchan, pattern, dst, length,
989 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
991 #ifdef RTE_DMADEV_DEBUG
994 RTE_FUNC_PTR_OR_ERR_RET(*obj->submit, -ENOTSUP);
997 return (*obj->submit)(obj->dev_private, vchan);
1024 static inline uint16_t
1026 uint16_t *last_idx,
bool *has_error)
1028 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1032 #ifdef RTE_DMADEV_DEBUG
1035 RTE_FUNC_PTR_OR_ERR_RET(*obj->completed, 0);
1046 if (last_idx == NULL)
1048 if (has_error == NULL)
1052 return (*obj->completed)(obj->dev_private, vchan, nb_cpls, last_idx,
1084 static inline uint16_t
1086 const uint16_t nb_cpls, uint16_t *last_idx,
1089 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1092 #ifdef RTE_DMADEV_DEBUG
1095 RTE_FUNC_PTR_OR_ERR_RET(*obj->completed_status, 0);
1098 if (last_idx == NULL)
1101 return (*obj->completed_status)(obj->dev_private, vchan, nb_cpls,
1121 static inline uint16_t
1124 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1126 #ifdef RTE_DMADEV_DEBUG
1129 RTE_FUNC_PTR_OR_ERR_RET(*obj->burst_capacity, 0);
1131 return (*obj->burst_capacity)(obj->dev_private, vchan);