|From:||Sergio R. Caprile|
|Subject:||Re: [lwip-users] TCP keeps re-transmitting but no ACK packet after SYN, SYN+ACK|
|Date:||Mon, 06 Apr 2015 10:38:52 -0300|
|User-agent:||Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Thunderbird/31.6.0|
If IP checksums come out as 0x0000 when you
set them in lwIP for hardware calculation, that means your system
seems to be correctly configured for that, lwIP sends 0x0000 and
the link-layer driver is doing nothing (or at least it is not
setting any bits...).|
OK, so your IP checksums are calculated in software and they are going out wrong. Then [quoting myself]:
>> You need to see what the IP checksum function calculates, compare with what is
>> written in the pcb, and what goes out. One of those three should be wrong.
I guess the easiest test is to check for the output of the checksumming function and compare that to the IP checksum in the wire.
Put a breakpoint there, or a printf, or whatever.
See src/core/inet_chksum.c, start with checking this:
# define LWIP_CHKSUM lwip_standard_chksum
# ifndef LWIP_CHKSUM_ALGORITHM
# define LWIP_CHKSUM_ALGORITHM 2
>> Good hunting.
BTW, you could also just try changing the algorithm and see what happens.
Also check for a definition of LWIP_CHKSUM_ALGORITHM in your port.
I see many changes to this file from 1.4.1 to git head, maybe you have just found something... maybe not. Sorry but you are the one with the problem and you have to hunt it down, as no one else seems to see what you are seeing in your system.
|[Prev in Thread]||Current Thread||[Next in Thread]|