Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - iMX28 EVK BSP - ping response time when using large packets: (2 Items)
   
iMX28 EVK BSP - ping response time when using large packets  
Using

ping -c10 -s1479 10.150.16.107

the response time for every other packet is around 1002 ms on a dedicated network.

Wireshark logs show that the time between each part of the fragmented packet is sometimes ~1000ms (ie the second part 
waits until the next echo request is sent).

In tha attached file, the delay can be seen between packets 35 and 54 as well as others.

Is this a known issue?
Attachment: Text ping-delays.pcap 31.38 KB
Re: iMX28 EVK BSP - ping response time when using large packets  
 There seems to be a race/timing condition where the TDAR (Transmit Descriptor Active Register) bit can be reset by the 
hardware after it is set in mcimx28_send, but before the packet is sent.
It means the packet has to wait until the next Tx before it is sent.

One way to resolve this is to reset the bit every time a Tx interrupt occurs in mcimx28_process_interrupt().
Adding the out32 line below (and the braces) removes the issue:

		if (eir & (MX28_HW_ENET_MAC_EIR_TXB | MX28_HW_ENET_MAC_EIR_BABT | MX28_HW_ENET_MAC_EIR_UN))
		{
			mcimx28_transmit_complete (ext, eir);
			out32 (ext->iobase + MX28_HW_ENET_MAC_TDAR, MX28_HW_ENET_MAC_TDAR_TDAR);
		}