Hello all,
I have an issue with the timing of the 3PGSWRXINT0 (EMAC Switch Receive) IRQ of DM814x.
We are using a custom board with a DM8147 processor and a DP83848 PHY, our firmware is based on SYS/BIOS 6.35.06.56 and NDK 2.25.00.09.
Amongst others we are running a Profinet stack on this device operating with a cycle period of 1 ms.
Sometimes I see an interval of 2 up to 3 ms between receiving two subsequent Profinet packets in the "EMAC Switch Receive" IRQ which should be received with an interval of 1 ms. Using a network TAP I verified that the interval between the packets is exactly 1 ms on the cable.
When this happens I typically see that one "EMAC Switch Receive" IRQ receives two Profinet packtes (which have actually been transmitted with an interval of 1 ms on the cable) and one up to four other TCP packets (usually TCP ACKs of a parallel TCP transfer) from the EMAC within one IRQ call taking approximately 30-50 µs (including time expensive logging to analyze this issue). This means the first of these two Profinet packets is received with a delay of 1 ms at least. (If this delay increases up to 2 ms this causes a logical timeout in the Profinet stack which is finally a serious problem for our application.)
I already checked if there were any conflicts in handling the IRQ. Everything seems to be fine. There should be no other IRQ nor any "IRQ disable" during that interval which might block handling the "EMAC Switch Receive" IRQ for such a long time.
What could be the reason for an obviously delayed "EMAC Switch Receive" IRQ?
Is there any known issue in the receiver HW?
What could I check to find out what happens in detail?
What could I do to get the "EMAC Switch Receive" IRQ in time?
Thanks and best regards,
Lars