SPRUIM2H May 2020 – October 2023 AM2431 , AM2432 , AM2434 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442
Each channel and flow within a DMA has the ability to generate specific types of events which can be routed to the IA in the system and from there re-routed to any event consumer. Events are output from the DMA controllers using a simple integer encoding. Up to 4 events can be generated from any given channel but only event types which have functional value are supported on each specific type of channel. The DMA channel event types are listed as follows:
Name |
Description |
Per |
BCDMA BC |
BCDMA Tx |
BCDMA Rx |
PKTDMA Tx |
PKTDMA Rx |
---|---|---|---|---|---|---|---|
Ring Entry Zero/Non-zero |
Asserts an up event anytime the ring transitions to a non-zero occupancy / teardown state. Asserts a down event anytime the ring transitions to a zero occupancy / teardown state. |
Flow |
X |
X |
X |
X |
X |
Channel Error |
Asserts an up event anytime an error occurs on the channel. Asserts a down event when the channel error bit is cleared. |
Channel |
First flow in channel only |
First flow in channel only |
First flow in channel only |
First flow in channel only |
First flow in channel only |
Rx Starvation |
Asserts an up event when starvation occurs on a flow. Asserts a down event when entries are added to the ring for that flow. |
Flow |
First flow in channel only | ||||
RX Flow FW Error |
Asserts an up event when a flow id arrives on the RX interface that is not between the flowid_start and flowid end values for the channel. Asserts a down event when the RX Flow ID Firewall Status Register pend bit is cleared |
Pktdma |
X | ||||
Data Events |
Asserts an up event when the selected loop counter has decremented. If the suppress event bit is not set in the TR |
Channel |
X |
X |
X |
Each BCDMA/PKTDMA instance will provide an event transport-lane (ETL) interface to pass outgoing events. The index field on this ETL will be calculated based on the event type and channel or flow offset. Each PKTDMA or BCDMA instance is configured with base values to which a channel or flow index is added for each type of event which can be generated. These base index values are listed in the specification for that specific instantiation of each DMA and are named as follows:
DMA |
Event Base Parameter Name |
Function |
Offset |
---|---|---|---|
PKTDMA |
tcomp_evtbase |
Base index for Tx flow reverse ring completion events |
Tx flow number |
rcomp_evtbase |
Base index for Rx flow reverse ring completion events |
Rx flow number | |
terr_evtbase |
Base index for Tx channel error events |
Tx channel number | |
rerr_evtbase |
Base index for Rx channel error events |
Rx channel number | |
rstarve_evtbase |
Base index for Rx flow starvation events |
Rx flow number | |
rflowfw_evtbase |
Base index for Rx Flow Firewall event |
None | |
BCDMA |
tcomp_evtbase |
Base index for split Tx flow reverse ring completion events |
Tx flow number |
rcomp_evtbase |
Base index for split Rx flow reverse ring completion events |
Rx flow number | |
bcomp_evtbase |
Base index for normal Block Copy flow reverse ring completion events |
BC flow number | |
terr_evtbase |
Base index for split Tx channel error events |
Tx channel number | |
rerr_evtbase |
Base index for split Rx channel error events |
Rx channel number | |
berr_evtbase |
Base index for normal Block Copy channel error events |
BC channel number | |
tdcomp_evtbase |
Base index for Tx channel TR data completion events |
Tx channel number | |
rdcomp_evtbase |
Base index for Rx channel TR data completion events |
Tx channel number | |
bdcomp_evtbase |
Base index for Block Copy channel TR data completion events |
BC channel number |
Example:
The producer event map is set up so that the Tx flows from a PKTDMA instance are to start at 64 and proceed upward from there. The tcomp_evtbase for that PKTDMA instance is set to 64. In this configuration, the reverse ring entry completion event for flow 0 will produce an event on index 64, flow 1 will produce an event on index 65, etc. The terr_evtbase for the same PKTDMA instance is set to 128. In this configuration, error events for channel 2 would produce events with an index of 130.