For performance tuning I’m interested in getting the interrupts working for the PKTDMA. In the TRM 11.1.4.3 PTKDMA/BCDMA – Output Event Generation, it says that, "Events are output from the DMA controllers using a simple integer encoding.” and, “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…”, but those base index values are not listed anywhere.
As an experiment I enabled all 1536 SEVI interrupts to see which would trigger and only one did, number 30. I’m assuming 30 is the PKTDMA RX complete event, based on some observations, but I’d like to know for sure. I’d also like to know why we’re not seeing any other events trigger, I would expect some TX completion events as well.
Here is the code we’re using to turn on the interrupts;
hwm_gp_outp64( &INTAGGR_IMAP[ SEVI ], ( VINTR << 8 ) | BITNUM );
hwm_gp_outp64( &INTAGGR_INTR[ VINTR ].STATUS_CLEAR, setbit( BITNUM ) );
hwm_gp_outp64( &INTAGGR_INTR[ VINTR ].ENABLE_SET , setbit( BITNUM ) );
11.2.4.4.1.6 DMASS0_INTAGGR_0_INTMAP
11.2.4.4.1.4 DMASS0_INTAGGR_0_STATUS
11.2.4.4.1.1 DMASS0_INTAGGR_0_ENABLE_SET