Hi,
I am using message passing type 11 message with the SRIO driver in PDK for 6678. The accumulator is programmed to generate interrupts for SRIO transmit packets. From the transmit ISR, the descriptor is recycled in the transmit completion interrupt subroutine and the buffer associated with it is freed back to the OSAL module.
At some point, an error was detected in RIO_ERR_DET or RIO_ERR_RST_EVNT_ICSR register. When the application stopped sending SRIO messages, it seems the transmit descriptor are not recycled and the buffer not freed.
The transmit ISR relies on the completionQueueList of the driver to determine if there are pending descriptors. Each descriptor is recycled, and the buffer associated with it is freed. When the SRIO transmit did not complete successfully, if the completionQueueList is null, it can explain why the descriptors and buffers were not recycled.
So, I am checking my assumptions here:
Would the transmit completion interrupt be generated if the transmit failed? Is this how the transmit error should to be handled? I have not configured a seperate interrupt for srio errors.
Would the descriptors be be put into the completionQueueList even if the transmission fails for some reason? How else can the application retrieve the buffers? I know the driver is capable of recycling the transmit descriptors to the free queue on its own. But we are not using the driver to do so. The application needs to recycle the descriptors and need to free the buffer. So, even when the transmission fails, the application needs access to the descriptor to get to the buffer.
Shivang