lwip-users
[Top][All Lists]
Advanced

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

RE: [lwip-users] Checksum Incorrect caused by Concatenation


From: Kieran Mansley
Subject: RE: [lwip-users] Checksum Incorrect caused by Concatenation
Date: Tue, 17 Nov 2009 15:23:54 +0000

On Tue, 2009-11-17 at 10:01 +0100, Hervé GARAT : Audemat wrote:
> But in the inet_chksum_pseudo function,the len used to make checksum
> is p->len and not p->tot_len. However the message sent is long as
> p->tot_len, therefore the TCP checksum is Incorrect!! 

The inet_chksum_pseudo function iterates over all the pbufs in the
chain, and checksums their contents individually, summing it all up for
the final checksum.  This is why it looks at p->len for each pbuf, not
p->tot_len.

For example, if you have a chain of three pbufs, each with 100 byte of
data in, they will look like this:

pbuf1: tot_len = 300, len = 100, payload = data1, next = pbuf2
pbuf2: tot_len = 200, len = 100, payload = data2, next = pbuf3
pbuf3: tot_len = 100, len = 100, payload = data3, next = NULL

data1, data2, and data3 are all regions of length 100, so to checksum
the contents of each pbuf we look at the len of each pbuf, not the
tot_len of the chain.

Hope that helps,

Kieran





reply via email to

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