Not sure if it will be of any help, but i remember i could observe a similar issue because of the Ethernet DMA RX underrun. I unfortunately don't have access to the code right now, but i guess the driver uses a DMA descriptors chained list. If, at some point, it gets full, the DMA will stop and you will then potentially observe latency : typically if the ethernet driver uses interrupts. In such case :
1. the driver is waken up every time a descriptor gets used (new RX packet).
2. the driver checks the whole descriptor list (or at least until the next descriptor in the list is owned by DMA and NOT cpu).
3. the driver finally clears ethernet interrupt.
If such scenario happens and a packet is received between (2) and (3), your DMA gets stalled and your CPU doesn't get RX interrupt anymore... until the CPU does a voluntary descriptor check and realize there are actual packets to be handled in the list.
This can explain both packet latency and, in worst cases, packet loss.
Hope it will help, and sorry for the imprecise description (this is already several years old).