Dear forum members,
We are facing LAN trouble now. We are using Vybrid VF5 chip and Timesys Linux(3.0) on our prototype.We think the trouble relates to Vybrid errata e6358. The symptom is as follows:
- When our software sent 4500 bytes TCP packets repeatedly (one packet every 1 second) from Vybrid to our host computer, the throughput gradually got worse. At the worst case, we had to wait 60 seconds to complete sending only 1 packet.
- The total size of the packet is longer than Maximum Segment Size (MSS). That means the packet is divided into small packets. In this case, the packet was divided into 4 small packets.
- We debugged the linux LAN driver ( linux-3.0/drivers/net/fec.c ) and we found packet send trigger (= set TDAR register) for the second divided packet was ignored by Vybrid.
- The packet is TCP protocol.
- The host computer replied the ACK packet immediately after received the first divided packet.
We think this issue is related to the Vybrid errata e6358, “ENET: Write to Transmit Descriptor Active Register (ENET_TDAR) is ignored”. We made a patch to avoid that errata (the patch is attached to this message), then the trouble does not occur after the modification.
We are not so familiar with both linux driver and Vybrid so please give us the comment whether our patch is designed appropriately.
Vybrid Errata ( Vybrid 1N02G )
Original Attachment has been moved to: 20131114_fec.patch.zip