Hi Jacob,

2024-11-07 11:50 (UTC+0000), Wieckowski, Jacob:
> Hi Dimitry,
> 
> I am sorry, I was a bit too far ahead with my thoughts.
> 
> We have started a DPDK evaluation project to build knowledge and 
> understanding of the DPDK framework. 
> We used an E1000 driver with a workaround to gain access to the PCIe 5.0 
> R-Tile on the Intel Agilex7 FPGA under Windows. 
> 
> Accesses to the PCIe BAR work in principle, but we can currently only carry 
> out 64-bit accesses to the BAR memory.  
> In the PCIe Config Space in the Capabilities Register, a maximum payload size 
> of 512 bytes is configured. 
> The Intel Core in the FPGA and the Root Complex also support TLPs of this 
> length. 
> 
> We use the rte_read32 and rte_write32 functions to access the bar memory, 
> which obviously executes accesses with max 2 DWs. 
> We were able to trigger this in the FPGA because only TLP with length 2 
> arrived on the RX Interface. 
> 
> How can a block transfer be initiated in DPDK so that TLPs with a length of 
> 128 DWs are generated on the PCIe Bus?

Thanks, now I understand what you need.
Unfortunately DPDK has no relevant API; rte_read**() is for small registers.
Maybe there's some useful code in "drivers/raw", but this area is completely 
unknown to me, sorry.
Try replying with what you wrote above to the thread in users@dpdk.org and Cc: 
Intel people from MAINTAINERS file responsible for "drivers/raw".

-----Original Message-----
From: Dmitry Kozlyuk <dmitry.kozl...@gmail.com> 
Sent: Thursday, November 7, 2024 10:42 AM
To: Wieckowski, Jacob <jacob.wieckow...@vector.com>
Cc: users@dpdk.org
Subject: Re: DMA Transfers to PCIe Bar Memory

[Sie erhalten nicht häufig E-Mails von dmitry.kozl...@gmail.com. Weitere 
Informationen, warum dies wichtig ist, finden Sie unter 
https://aka.ms/LearnAboutSenderIdentification ]

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