This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dropped Ethernet packets

I am using the standard nimu_eth.c. The application is recieving approx. 1.8 Gbps Ethernet packet data (jumbo frames). From time to time interrupts are disabled for about 2 ms and I do see large chunks of subsequent packets being lost. How do I prevent packet loss?

Looking to Setup_Rx, I want to use a high number of maxPageEntries in the Qmss_AccCmdCfg struct, so I get in the interrupt handler EmacRxPktISR a high number of packets.I want to combine this with a reasonable value for timerLoadCount. However, the behaviour is different from what I expect. I would expect that with a pending interrupt (due to interrupt disable) or active interrupt handler busy with the ping list, the PDSP will continue to fill the pong list (or vice versa pong/ping). This seems not to happen and I do never get a high number of packets in the ping/pong lists. Is the PDSP accumulator waiting for completion of the interrupt? FYI: with a timerLoadCount=20 I obtain max 18 packets, although maxPageEntries=81

Anybody resolved such issue or knows a way out?

  • I tried to solve this with not using the QMSS accumulator and polling the RX queue.

    >>However no entries seem to be pushed to the RX queue if I do not enable the accumulator.

    >>The accumulator is not required, is it? I see only a relation to interrupt generation. How would I use polling instead?

    Bypassing accumulator does work as opposed to what I found earlier.