cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
955 Views
Registered: ‎06-30-2017

Is xdma h2c engine has a "pause" state?

hi,all
     

i have a question about xdma:

      i make h2c descriptor(not c2h) is a cycle descriptor, it mean that i don't want the engine stop when a stream finished. i want the engine at a "pause" state at this time. then when i prepare a new dma address insert the next descriptor, the engine can from the "pause" state to "run" state for process the next new desc,  don't needed to change the SGDMA Descriptor Address(contine the last finished desc address).

   How can it be achieved?

 

thanks!

0 Kudos
4 Replies
863 Views
Registered: ‎06-30-2017

Nobody knows?

i think use xdma credit register can achieve this problem?

thanks all!

0 Kudos
liy
Xilinx Employee
Xilinx Employee
840 Views
Registered: ‎08-02-2007

have you consider parpareing the descriptor eariler and you can use the “Nxt_adr” for Address of the next descriptor in the list

engine will then fetch this info to start next stream, the next addrss can be a ring in this case but  the total number of descriptor is predefined 

 

 

 
------------------------------------------------------------------------------
Don't forget to reply, give kudo and accept as solution
------------------------------------------------------------------------------
0 Kudos
828 Views
Registered: ‎06-30-2017

thanks Liy:

According to your suggestion, the dma have fetch all the desc into fpga, but this is not my wanted. because the src or dst address i  must dynamic changed. for example:in a network driver, when a skb arrived, i must insert this skb.data dma add to the desc ,and then let's the engine continue to fetch the new desc.

use the engine the credit mode ok? when a prepare a desc, write to credit reg to 1,And so on.... 

0 Kudos
beanredarmy
Visitor
Visitor
499 Views
Registered: ‎11-21-2019


@liy wrote:

have you consider parpareing the descriptor eariler and you can use the “Nxt_adr” for Address of the next descriptor in the list

engine will then fetch this info to start next stream, the next addrss can be a ring in this case but  the total number of descriptor is predefined 

 

 

 

Hi Liy, 

How to stop a engine for a while, and then start it again by using "Nxt_adr"?

What I want is that DMA H2C engine will fetch all descriptors, for example 100 descriptors at setup time, but each H2C transfer will use only 10 descriptors. When I start the engine at the first time, it will perform DMA for the first 10 descriptors and pause. When I resume the engine, it will perform DMA for the next 10 descriptors, and so on. How can i achieve it?

Thanks so much!

0 Kudos