lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] Works with Win7, not Windows XP?


From: ThomasJ
Subject: Re: [lwip-users] Works with Win7, not Windows XP?
Date: Wed, 30 Oct 2013 02:55:14 -0700 (PDT)

I have run wireshark on both WinXP and WIn7. 
It seems that win7 ignores the MSS from the lwip. WinXP does not. So WinXP
sends the data in 128 bytes segments, eventually crashes the lwip.
I did the test with 785 bytes of data. 
If I rise the MSS to 256 the lwip survive on the WinXP. But if I increase
the packet by a few hundred bytes the lwip crashes again.

So is the lwip on the target to slow to handle received messages and
eventually run out of memory?

It seems that lwip can handle a received segment greater then the MSS size.
It seems to save the lwip from not crashing on win7. Why?

There is a lot of "ETHERNET FRAME CHECK SEQUENCE INCORRECT" in the wireshark
window?
ex: 10.0.0.1    10.0.4.1        TCP     64      49153 > rtsserv [ACK] Seq=29 
Ack=669 Win=512
Len=0 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]

Accoding to the call stack it happens in the lpc_low_level_input() 
line 306: lpc_enetif->rx_free_descs++;

I use lwip version 1.4.1.


Any advice will be appreciated.

Wireshark log:

*785 bytes, MSS of 128 bytes on windows 7:*
"No.","Time","Source","Destination","Protocol","Length","Info"
//Sync between the Win7 stack and lwip. MSS of lwip is 128 bytes
"785","17.405997000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv [SYN]
Seq=0 Win=1024 Len=0 MSS=128"
"786","17.406222000","10.0.4.1","10.0.0.1","TCP","58","rtsserv > 49153 [SYN,
ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460"
"787","17.406451000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv [ACK]
Seq=1 Ack=1 Win=1024 Len=0"
"788","17.412164000","10.0.4.1","10.0.0.1","TCP","54","rtsserv > 49170 [RST,
ACK] Seq=1 Ack=1 Win=0 Len=0"

// Normal packet from server and respons (10.0.4.1 is the server, 10.0.0.1
is the lwip)
"789","17.414469000","10.0.4.1","10.0.0.1","TCP","68","rtsserv > 49153 [PSH,
ACK] Seq=1 Ack=1 Win=65392 Len=14"
"800","17.655958000","10.0.0.1","10.0.4.1","TCP","68","49153 > rtsserv [PSH,
ACK] Seq=1 Ack=15 Win=1010 Len=14"
"808","17.857421000","10.0.4.1","10.0.0.1","TCP","54","rtsserv > 49153 [ACK]
Seq=15 Ack=15 Win=65378 Len=0"

// Normal packet from server and respons (10.0.4.1 is the server, 10.0.0.1
is the lwip)
"1316","29.394577000","10.0.4.1","10.0.0.1","TCP","68","rtsserv > 49153
[PSH, ACK] Seq=15 Ack=15 Win=65378 Len=14"
"1317","29.394986000","10.0.0.1","10.0.4.1","TCP","68","49153 > rtsserv
[PSH, ACK] Seq=15 Ack=29 Win=996 Len=14"

// 785 bytes data packet - one 128 size, 512 byte and 145 byte. WIn7 ignores
the MSS from the lwip. lwip does not crash!
"1318","29.400350000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=29 Ack=29 Win=65364 Len=128"
"1319","29.400547000","10.0.4.1","10.0.0.1","TCP","566","rtsserv > 49153
[PSH, ACK] Seq=157 Ack=29 Win=65364 Len=512"
"1320","29.400931000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv
[ACK] Seq=29 Ack=669 Win=512 Len=0"
"1321","29.400932000","10.0.0.1","10.0.4.1","TCP","64","[TCP Window Update]
49153 > rtsserv [ACK] Seq=29 Ack=669 Win=1024 Len=0"
"1322","29.400967000","10.0.4.1","10.0.0.1","TCP","199","rtsserv > 49153
[PSH, ACK] Seq=669 Ack=29 Win=65364 Len=145"
"1323","29.413271000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv
[ACK] Seq=29 Ack=814 Win=1024 Len=0"

*785 bytes, MSS of 128 bytes on windowsXP:*
"No.","Time","Source","Destination","Protocol","Length","Info"
//Sync between the WinXP stack and lwip. MSS of lwip is 128 bytes
"6","0.032927000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv [SYN]
Seq=0 Win=1024 Len=0 MSS=128"
"7","0.032994000","10.0.4.1","10.0.0.1","TCP","58","rtsserv > 49153 [SYN,
ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460"
"8","0.033191000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv [ACK]
Seq=1 Ack=1 Win=1024 Len=0"

// Normal packet from server and respons (10.0.4.1 is the server, 10.0.0.1
is the lwip)
"9","0.033967000","10.0.4.1","10.0.0.1","TCP","68","rtsserv > 49153 [PSH,
ACK] Seq=1 Ack=1 Win=65535 Len=14"
"76","0.282908000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv [ACK]
Seq=1 Ack=15 Win=1010 Len=0"
"77","0.283130000","10.0.0.1","10.0.4.1","TCP","68","49153 > rtsserv [PSH,
ACK] Seq=1 Ack=15 Win=1010 Len=14"
"114","0.448801000","10.0.4.1","10.0.0.1","TCP","54","rtsserv > 49153 [ACK]
Seq=15 Ack=15 Win=65521 Len=0"

// Normal packet from server and respons (10.0.4.1 is the server, 10.0.0.1
is the lwip)
"1094","11.217621000","10.0.4.1","10.0.0.1","TCP","68","rtsserv > 49153
[PSH, ACK] Seq=15 Ack=15 Win=65521 Len=14"
"1095","11.217989000","10.0.0.1","10.0.4.1","TCP","68","49153 > rtsserv
[PSH, ACK] Seq=15 Ack=29 Win=996 Len=14"

// 785 bytes data packet - in 128 segment size. Somewhere the lwip crashes
during reception of the segments.
"1096","11.218815000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=29 Ack=29 Win=65507 Len=128"
"1097","11.218847000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=157 Ack=29 Win=65507 Len=128"
"1098","11.218871000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=285 Ack=29 Win=65507 Len=128"
"1099","11.218893000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=413 Ack=29 Win=65507 Len=128"
"1100","11.219166000","10.0.0.1","10.0.4.1","TCP","64","49153 > rtsserv
[ACK] Seq=29 Ack=285 Win=740 Len=0"
"1101","11.219188000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=541 Ack=29 Win=65507 Len=128"
"1102","11.219199000","10.0.4.1","10.0.0.1","TCP","182","rtsserv > 49153
[PSH, ACK] Seq=669 Ack=29 Win=65507 Len=128"
"1103","11.219210000","10.0.4.1","10.0.0.1","TCP","71","rtsserv > 49153
[PSH, ACK] Seq=797 Ack=29 Win=65507 Len=17"

Thomas






--
View this message in context: 
http://lwip.100.n7.nabble.com/Works-with-Win7-not-Windows-XP-tp22003p22004.html
Sent from the lwip-users mailing list archive at Nabble.com.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]