Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

5.1.6.2.6. DMA RX Data Transfer Operation

The data transfer operation performed by the RX DMA is different compared to the TX DMA and is as follows:
  1. The descriptor fetch engine reads a valid descriptor (OWN=1) either from the system memory or the descriptor pre-fetch cache and gives it to the data transfer engine.
  2. The data transfer engine indicates its readiness to transfer data to the MTL RX queue read controller along with the supported burst-size length as calculated from the buffer sizes and as per the register settings (RxPBL).
  3. The read controller selects a RX queue (in case of multiple RX queue configuration) and triggers the RX DMA to start the data transfer.
  4. The RX DMA engine issues the request which is then accepted and driven by the host interface. This requested data is then transferred to the buffer in system memory through the write channel.
  5. Once the requested data transfer is internally completed, the data transfer engine jumps back to step 2 in case the packet transfer is not over (no EOP transferred) in step 4.
  6. If both the RX buffers, pointed in the descriptor are full, it pushes the descriptor to the descriptor write-back engine along with the intermediate status and then accept the next descriptor from the pre-fetch cache and go to step 2.
  7. If the EOP is transferred during the last burst transfer, the engine pushes the descriptor to be closed along with the final packet status read from the RX queue after the EOP and then jumps to step 2.

The descriptor pre-fetch and the descriptor closure activities are implemented in a pipe-lined fashion so as to avoid any bottlenecks and overheads due to descriptor reads. However, in step 2, the engine does not initiate another data transfer request unless the previous descriptor write transfer is complete as explained in the DMA Descriptor Write-Back Operation section.