<snip>

> +/**
> + * A structure used to configure a virtual DMA channel.
> + */
> +struct rte_dmadev_vchan_conf {
> +     uint8_t direction;
> +     /**< Set of supported transfer directions
> +      * @see RTE_DMA_MEM_TO_MEM
> +      * @see RTE_DMA_MEM_TO_DEV
> +      * @see RTE_DMA_DEV_TO_MEM
> +      * @see RTE_DMA_DEV_TO_DEV
> +      */
> +     /** Number of descriptor for the virtual DMA channel */
> +     uint16_t nb_desc;
> +     /** 1) Used to describes the port parameter in the device-to-memory
> +      * transfer scenario.
> +      * 2) Used to describes the source port parameter in the
> +      * device-to-device transfer scenario.
> +      * @see struct rte_dmadev_port_parameters
> +      */

There should also be a configuration to support no response (per Virtual 
Channel),
And if that is enabled, user will not be required to call 
'rte_dmadev_completed' API.
This shall also be part of capability.

> +     struct rte_dmadev_port_parameters src_port;
> +     /** 1) Used to describes the port parameter in the memory-to-device-to
> +      * transfer scenario.
> +      * 2) Used to describes the destination port parameter in the
> +      * device-to-device transfer scenario.
> +      * @see struct rte_dmadev_port_parameters
> +      */
> +     struct rte_dmadev_port_parameters dst_port;
> +};
> +

<snip>

> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change without prior notice.
> + *
> + * Enqueue a scatter list copy operation onto the virtual DMA channel.
> + *
> + * This queues up a scatter list copy operation to be performed by hardware,
> + * but does not trigger hardware to begin that operation.

This would need update with the submit flag.
The statement should be true only when the flag is set?
Similar comment I see on 'rte_dmadev_copy_sg' and 'rte_dma_fill' APIs

> + *
> + * @param dev_id
> + *   The identifier of the device.
> + * @param vchan
> + *   The identifier of virtual DMA channel.
> + * @param sg
> + *   The pointer of scatterlist.
> + * @param flags
> + *   An flags for this operation.
> + *   @see RTE_DMA_OP_FLAG_*
> + *
> + * @return
> + *   - 0..UINT16_MAX: index of enqueued copy scatterlist job.
> + *   - <0: Error code returned by the driver copy scatterlist function.
> + */
> +__rte_experimental
> +static inline int
> +rte_dmadev_copy_sg(uint16_t dev_id, uint16_t vchan, const struct rte_dma_sg
> *sg,
> +                uint64_t flags)
> +{
> +     struct rte_dmadev *dev = &rte_dmadevices[dev_id];
> +#ifdef RTE_DMADEV_DEBUG
> +     if (!rte_dmadev_is_valid_dev(dev_id) ||
> +         vchan >= dev->data->dev_conf.max_vchans ||
> +         sg == NULL)
> +             return -EINVAL;
> +     RTE_FUNC_PTR_OR_ERR_RET(*dev->copy_sg, -ENOTSUP);
> +#endif
> +     return (*dev->copy_sg)(dev, vchan, sg, flags);
> +}
> +

Reply via email to