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>