SPRUIM2H May 2020 – October 2023 AM2431 , AM2432 , AM2434 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442
Packet reception in TR Packet mode involves the following steps:
The Host allocates and populates a TR packet descriptor. The host will initialize the following fields within the packet descriptor:
Descriptor Type (set to TR)
Reload Enable to 1 if looping is required, otherwise 0
Reload Index to an appropriate offset if Reload Enable set, otherwise 0
Last Entry to TR count minus 1
TR Nominal Element Size to a value that is as large as required for any given TR in the buffer
A set of one or more valid Transfer Request records whose quantity matches the last index specified previously.
The Host queues the packet onto one of the Rx TR Queues for the desired BCDMA channel. Channels may provide more than one Rx TR Queue (one per flow) and may provide a particular prioritization policy between the queues. This behavior is application specific and is controlled by the DMA controller / scheduler implementation.
The Ring Accelerator provides a level sensitive status signal for the queue which indicates if any packets are currently pending. This level sensitive status line is sent to the hardware block which is responsible for scheduling DMA operations.
The DMA controller is eventually brought into context for the corresponding channel and begins to process the packet.
The DMA controller reads the packet descriptor pointer from the ring in memory.
The DMA controller reads the packet descriptor from memory
The DMA controller empties the data region in the descriptor by reading the contents in one or more nominal TR sized block data moves.
All of the data transfers specified in a TR will be completed as a series of writes and a Transfer Response will be returned indicating the completion and status of the transfer.
The BCDMA will wait until Transfer Responses have been returned for each Transfer Request that it issued. As each Transfer Response is returned, the BCDMA will write the response into the TR buffer in the Transfer Response records array. Each response is written into an array index which directly matches the index of the request record to which is corresponds.
When all Transfer Requests in the packet have been processed and all Transfer Responses have been written back and confirmed to have landed in memory, the DMSS will write the pointer to the packet descriptor to the queue specified in the return queue number fields of the packet descriptor.
After the Packet Descriptor pointer has been written, the Ring Accelerator indicates the status of the Rx Completion Queues to other ports / processors / prefetcher blocks using events sent to the Interrupt Aggregator. These events are then converted into standard interrupts.