2024-11-07 09:16 (UTC+0000), Wieckowski, Jacob:
> Hi Dimitry,
> 
> thank you for the quick response.
> 
> Ok, DMA in the classic sense is not possible.
>
> However, if you carry out a write transfer into the BAR memory from DPDK, 
> then, as I understand it, this access should be divided into several small 
> postage-compliant TLP packets with a maximum payload size as specified in 
> config space. 
> 
> Can block transfers in sizes of 512 bytes be carried out with the rte memcpy? 
> The DPDK API states that the AVX-512 memcpy parameter must be enabled for x86 
> platforms.
> 
> Do other special precautions have to be taken in the DPDK environment to 
> setup this kind of transfer?

Could you please start with the problem you're solving?

DPDK uses DMA internally (mainly) to transfer packet data from/to HW.
It puts physical address of the buffer, etc. to NIC queue descriptor,
writes to a doorbell register, then the NIC DMA-writes/reads the buffer;
PCI transfer sizes are probably selected by HW.
All of this is within PMD (userspace drivers), no API is exposed.

rte_memcpy() is intended for copy from RAM to RAM.
You can Cc: Morten Brørup <m...@smartsharesystems.com> probably,
but I doubt that rte_memcpy() is specialized for DMA in any way.
The buffer may be filled with rte_mempcy() by application,
but this is done before handling the buffer to PMD, and thus before DMA.

Are you looking for functionality of "dmadev" library?

        https://doc.dpdk.org/guides/prog_guide/dmadev.html

Reply via email to