From owner-freebsd-net@FreeBSD.ORG Tue Apr 22 10:12:36 2003 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EA19937B401 for ; Tue, 22 Apr 2003 10:12:36 -0700 (PDT) Received: from gw.catspoiler.org (217-ip-163.nccn.net [209.79.217.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4301C43FAF for ; Tue, 22 Apr 2003 10:12:36 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (scratch.catspoiler.org [192.168.101.3]) by gw.catspoiler.org (8.12.6/8.12.6) with ESMTP id h3MHCTXB027263 for ; Tue, 22 Apr 2003 10:12:33 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Message-Id: <200304221712.h3MHCTXB027263@gw.catspoiler.org> Date: Tue, 22 Apr 2003 10:12:29 -0700 (PDT) From: Don Lewis To: freebsd-net@FreeBSD.org In-Reply-To: <200304221654.h3MGrwXB027200@gw.catspoiler.org> MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii Subject: Re: IP fragmentation disagreement between current and stable X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Apr 2003 17:12:37 -0000 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.