Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Apr 2003 10:12:29 -0700 (PDT)
From:      Don Lewis <truckman@FreeBSD.org>
To:        freebsd-net@FreeBSD.org
Subject:   Re: IP fragmentation disagreement between current and stable
Message-ID:  <200304221712.h3MHCTXB027263@gw.catspoiler.org>
In-Reply-To: <200304221654.h3MGrwXB027200@gw.catspoiler.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 22 Apr, To: freebsd-net@freebsd.org wrote:

> # ping -c 1 -s 3176 192.168.101.3

> If I increase the packet size by any multiple of 1480 bytes (which
> results in the same final fragment size), I see the same symptoms.
> Interestingly, I don't see any problems if I decrease the packet size by
> 1480 bytes to 1696, everything works just fine.

I explored the vicinity of 3176 and found that 3174 works, 3175 through
3177 don't work, and 3178 works.  I'm smelling a packet length
calculation error.  In the case of a 3176 byte ping, the final fragment
will contain 222 bytes of data.  With a 14 byte Ethernet header and a 20
byte IP header, that just fits into one 256 byte mbuf.  I wonder if
there is a divide by 4 to calculate the number of words, and the
remainder is being discarded instead of being rounded up?  And why does
this problem only occur if there are three or more fragments?

Could this be a driver problem instead of a problem in the stack itself?
Both ends are fxp cards.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304221712.h3MHCTXB027263>