I have a working driver that sends and receives Ethernet packets on an EVM6678L. Tracing the behaviour of this driver has revealed that it is getting FIVE interrupts for every Ethernet transmission or reception.
Just looking at transmission, the return queue is 654 and I am catching the interrupt associated with the queue manager event 93 (QM_INT_PASS_TXQ_PEND_14).
I have searched the TI documentation but it is typically obscure on these interrupts; I have been unable to find a definition of exactly what "queue pend" actually means or exactly what causes such events to be signalled. Can anyone point me at a TI document that gives this information or are users supposed to guess?
Each transfer is made up from two linked packets. The return policy is set to 0, so I would expect to see a single interrupt when the transfer has completed and the linked structure is put on the return queue. Instead, after the first interrupt, I find the single entry on the return queue as expected; after each of the subsequent four unexpected interrupts, the return queue is empty.
I could understand getting two interrupts perhaps (one when something is pushed onto the queue and another, unwanted one, when it is taken off), but five? I have tried various experiments, and there are always exactly five interrupts (no more, no less) for every complete transfer.
Does anyone know what might be going on or how I can reduce these interrupts to one?