Hi,
Our DSP application makes intensive use of QMSS/PA to send packets to Ethernet and move data among DSP cores. At any given time, all 8 DSP cores can be sending Ethernet packets through PA or SW using PA queue, and moving data among cores through packet DMA using infrastructure queue.
We noticed that sometimes after a buffer descriptor is pushed onto a transmission queue, the QMSS seems to get stuck, and never puts the buffer descriptor back into the Tx completion queue.
If we put a 10000 cycles delay after each pushing, then the problem goes away. And if we do a queue peek using Qmss_getQueueEntryCount(hnd) before each pushing, the problem also disappears. These observations all point to the possibility that there is a hardware bug in QMSS.
Another observation is that the Qmss_getQueueEntryCount(hnd) function call sometimes takes 8000 cycles to complete, even though most of the time it takes about 200 cycles. Our DSP runs at 1GHz. The Qmss_getQueueEntryCount(hnd) function call essentially is just reading Register A from the Queue Peek Region of the queue.
Any idea what could be the cause of the problem, namely the QMSS may get stuck when there is intensive use of the queues?
Do you have a known issue that is related to the problem that we have, If so, how do you suggest we get around this problem?
Daniel