159 #define RTE_DMADEV_DEFAULT_MAX 64 218 #define RTE_DMA_FOREACH_DEV(p) \ 219 for (p = rte_dma_next_dev(0); \ 221 p = rte_dma_next_dev(p + 1)) 228 #define RTE_DMA_CAPA_MEM_TO_MEM RTE_BIT64(0) 230 #define RTE_DMA_CAPA_MEM_TO_DEV RTE_BIT64(1) 232 #define RTE_DMA_CAPA_DEV_TO_MEM RTE_BIT64(2) 234 #define RTE_DMA_CAPA_DEV_TO_DEV RTE_BIT64(3) 241 #define RTE_DMA_CAPA_SVA RTE_BIT64(4) 247 #define RTE_DMA_CAPA_SILENT RTE_BIT64(5) 255 #define RTE_DMA_CAPA_HANDLES_ERRORS RTE_BIT64(6) 262 #define RTE_DMA_CAPA_M2D_AUTO_FREE RTE_BIT64(7) 269 #define RTE_DMA_CAPA_PRI_POLICY_SP RTE_BIT64(8) 275 #define RTE_DMA_CAPA_INTER_PROCESS_DOMAIN RTE_BIT64(9) 281 #define RTE_DMA_CAPA_INTER_OS_DOMAIN RTE_BIT64(10) 287 #define RTE_DMA_CAPA_OPS_COPY RTE_BIT64(32) 289 #define RTE_DMA_CAPA_OPS_COPY_SG RTE_BIT64(33) 291 #define RTE_DMA_CAPA_OPS_FILL RTE_BIT64(34) 293 #define RTE_DMA_CAPA_OPS_ENQ_DEQ RTE_BIT64(35) 302 #define RTE_DMA_CFG_FLAG_SILENT RTE_BIT64(0) 306 #define RTE_DMA_CFG_FLAG_ENQ_DEQ RTE_BIT64(1) 733 #define RTE_DMA_ALL_VCHAN 0xFFFFu 1131 #define RTE_DMA_OP_FLAG_FENCE RTE_BIT64(0) 1136 #define RTE_DMA_OP_FLAG_SUBMIT RTE_BIT64(1) 1141 #define RTE_DMA_OP_FLAG_LLC RTE_BIT64(2) 1148 #define RTE_DMA_OP_FLAG_AUTO_FREE RTE_BIT64(3) 1179 uint32_t
length, uint64_t flags)
1181 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1184 #ifdef RTE_DMADEV_DEBUG 1187 if (obj->copy == NULL)
1191 ret = obj->copy(obj->dev_private, vchan, src, dst, length, flags);
1192 rte_dma_trace_copy(dev_id, vchan, src, dst, length, flags, ret);
1229 struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
1232 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1235 #ifdef RTE_DMADEV_DEBUG 1237 nb_src == 0 || nb_dst == 0)
1239 if (obj->copy_sg == NULL)
1243 ret = obj->copy_sg(obj->dev_private, vchan, src, dst, nb_src, nb_dst, flags);
1244 rte_dma_trace_copy_sg(dev_id, vchan, src, dst, nb_src, nb_dst, flags,
1278 rte_iova_t dst, uint32_t length, uint64_t flags)
1280 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1283 #ifdef RTE_DMADEV_DEBUG 1286 if (obj->fill == NULL)
1290 ret = obj->fill(obj->dev_private, vchan, pattern, dst, length, flags);
1291 rte_dma_trace_fill(dev_id, vchan, pattern, dst, length, flags, ret);
1313 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1316 #ifdef RTE_DMADEV_DEBUG 1319 if (obj->submit == NULL)
1323 ret = obj->submit(obj->dev_private, vchan);
1324 rte_dma_trace_submit(dev_id, vchan, ret);
1351 static inline uint16_t
1353 uint16_t *last_idx,
bool *has_error)
1355 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1359 #ifdef RTE_DMADEV_DEBUG 1362 if (obj->completed == NULL)
1374 if (last_idx == NULL)
1376 if (has_error == NULL)
1380 ret = obj->completed(obj->dev_private, vchan, nb_cpls, last_idx, has_error);
1381 rte_dma_trace_completed(dev_id, vchan, nb_cpls, last_idx, has_error,
1413 static inline uint16_t
1415 const uint16_t nb_cpls, uint16_t *last_idx,
1418 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1421 #ifdef RTE_DMADEV_DEBUG 1424 if (obj->completed_status == NULL)
1428 if (last_idx == NULL)
1431 ret = obj->completed_status(obj->dev_private, vchan, nb_cpls, last_idx, status);
1432 rte_dma_trace_completed_status(dev_id, vchan, nb_cpls, last_idx, status,
1450 static inline uint16_t
1453 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1456 #ifdef RTE_DMADEV_DEBUG 1459 if (obj->burst_capacity == NULL)
1462 ret = obj->burst_capacity(obj->dev_private, vchan);
1463 rte_dma_trace_burst_capacity(dev_id, vchan, ret);
1488 static inline uint16_t
1491 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1494 #ifdef RTE_DMADEV_DEBUG 1497 if (*obj->enqueue == NULL)
1501 ret = (*obj->enqueue)(obj->dev_private, vchan, ops, nb_ops);
1502 rte_dma_trace_enqueue_ops(dev_id, vchan, (
void **)ops, nb_ops);
1523 static inline uint16_t
1526 struct rte_dma_fp_object *obj = &rte_dma_fp_objs[dev_id];
1529 #ifdef RTE_DMADEV_DEBUG 1532 if (*obj->dequeue == NULL)
1536 ret = (*obj->dequeue)(obj->dev_private, vchan, ops, nb_ops);
1537 rte_dma_trace_dequeue_ops(dev_id, vchan, (
void **)ops, nb_ops);
__rte_experimental int rte_dma_access_pair_group_leave(int16_t dev_id, int16_t group_id)
int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf)
static uint16_t rte_dma_enqueue_ops(int16_t dev_id, uint16_t vchan, struct rte_dma_op **ops, uint16_t nb_ops)
uint16_t rte_dma_count_avail(void)
int rte_dma_stats_get(int16_t dev_id, uint16_t vchan, struct rte_dma_stats *stats)
int rte_dma_start(int16_t dev_id)
int rte_dma_stop(int16_t dev_id)
static int rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src, struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst, uint64_t flags)
struct rte_dma_auto_free_param auto_free
struct rte_dma_port_param dst_port
int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan)
struct rte_dma_inter_domain_param domain
__rte_experimental int rte_dma_access_pair_group_handler_get(int16_t dev_id, int16_t group_id, rte_uuid_t domain_id, uint16_t *handler)
static int rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst, uint32_t length, uint64_t flags)
bool rte_dma_is_valid(int16_t dev_id)
int rte_dma_get_dev_id_by_name(const char *name)
int rte_dma_close(int16_t dev_id)
int rte_dma_dev_max(size_t dev_max)
int16_t rte_dma_next_dev(int16_t start_dev_id)
int rte_dma_dump(int16_t dev_id, FILE *f)
__extension__ union rte_dma_port_param::@149::@151 pcie
struct rte_mempool * op_mp
unsigned char rte_uuid_t[16]
struct rte_dma_port_param src_port
enum rte_dma_inter_domain_type type
static int rte_dma_submit(int16_t dev_id, uint16_t vchan)
int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info)
enum rte_dma_port_type port_type
int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan, const struct rte_dma_vchan_conf *conf)
void(* rte_dma_access_pair_group_event_cb_t)(int16_t dev_id, int16_t group_id, rte_uuid_t domain_id, enum rte_dma_access_pair_group_event_type event)
__rte_experimental int rte_dma_access_pair_group_destroy(int16_t dev_id, int16_t group_id)
static uint16_t rte_dma_completed_status(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls, uint16_t *last_idx, enum rte_dma_status_code *status)
__rte_experimental int rte_dma_access_pair_group_create(int16_t dev_id, rte_uuid_t domain_id, rte_uuid_t token, int16_t *group_id, rte_dma_access_pair_group_event_cb_t cb)
enum rte_dma_direction direction
static uint16_t rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
__rte_experimental int rte_dma_access_pair_group_join(int16_t dev_id, rte_uuid_t domain_id, rte_uuid_t token, int16_t group_id, rte_dma_access_pair_group_event_cb_t cb)
static int rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern, rte_iova_t dst, uint32_t length, uint64_t flags)
static uint16_t rte_dma_dequeue_ops(int16_t dev_id, uint16_t vchan, struct rte_dma_op **ops, uint16_t nb_ops)
static uint16_t rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls, uint16_t *last_idx, bool *has_error)
rte_dma_access_pair_group_event_type
rte_dma_inter_domain_type
struct rte_dma_sge src_dst_seg[]
struct rte_mempool * pool
enum rte_dma_status_code status