We are both struggling with similar issues. We send data in the other 
direction. We are also using 1.4.x in raw mode without OS. We concluded long 
ago that the best way to ‘recover’ from a fault like you describe was to 
disconnect and reconnect the tcp connection. Very similar to a hard reset but 
of course not the same.

We are still faced with a very difficult defect in the LWIP stack.  I am not as 
convinced as you that it is always packet loss that causes us to have to 
disconnect. I think the stack periodically ‘misses’ packets. The Wireshark 
trace shows the packet yet we don’t receive the tcp_sent callback and the 
on_error callback doesn’t fire either.



From: [email protected] 
[mailto:[email protected]] On Behalf Of 
[email protected]
Sent: Sunday, May,10, 2015 11:04 AM
To: [email protected]
Subject: [lwip-users] problem after a packet loss event

Hi users,
my system is composed by a PC sending a large volume of data via tcpip to a 
board with a Xilinx Zynq. Zynq has LwIP 1.4.0 running in raw mode without OS. I 
am working with TCP_WND = 8192 and TCP_MSS = 1460, without jumbo frame because 
Zynq doesn't  support them. PC sends 307200 byte in almost 5.5 mSec and all is 
working good until there is a packet loss event. The ACKs sended by Zynq are 
very quick, almost tens of microsecond from last packet received from PC.
I have attached a capture file from Wireshark. Ip 10.1.0.10 is PC, embedded 
board has ip address 10.1.0.20. At packet 651 (time 0.147032) Zynq sends two 
duplicated ACK (I think that probably there is a packet loss...) and PC 
performs a fast retransmission,  then Zynq send another dup ACK and after the 
throughput go down from 55 MByte/sec to 15 KB/sec.
I see that the ACKs sended by Zynq are delayed about 120-130 mSec, the 
tcp_window of Zynq is reduced at 2352 byte, and PC wait for Zynq's ACK to send 
new packets, even if a window of 2352 can receive a 1.5KB packet.

I don't understand why PC wait for an ACK to send new data and why Zynq 
acknowledges packtes with a large delay.

This strange (for me) situation is permanent, when transmission ends the tcp 
window of Zynq remain 2352, and if I perform a new transmission from PC the 
behaviour is the same, with a throughput very low. To restore system I must 
reset my board.

I don't know if this is a normal situation, I need to have high throughput even 
with packet loss event.

Your help will be greatly appreciated

Regards,

Fabrizio

_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to