From owner-cvs-all@FreeBSD.ORG Mon Feb 6 22:13:06 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B1C6316A42C; Mon, 6 Feb 2006 22:13:06 +0000 (GMT) (envelope-from oleg@lath.rinet.ru) Received: from lath.rinet.ru (lath.rinet.ru [195.54.192.90]) by mx1.FreeBSD.org (Postfix) with ESMTP id DA0F643D46; Mon, 6 Feb 2006 22:13:05 +0000 (GMT) (envelope-from oleg@lath.rinet.ru) Received: from lath.rinet.ru (localhost [127.0.0.1]) by lath.rinet.ru (8.13.4/8.13.4) with ESMTP id k16MBfCs057963 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 7 Feb 2006 01:11:41 +0300 (MSK) (envelope-from oleg@lath.rinet.ru) Received: (from oleg@localhost) by lath.rinet.ru (8.13.4/8.13.4/Submit) id k16MBfIm057962; Tue, 7 Feb 2006 01:11:41 +0300 (MSK) (envelope-from oleg) Date: Tue, 7 Feb 2006 01:11:41 +0300 From: Oleg Bulyzhin To: Alan Cox Message-ID: <20060206221141.GA57775@lath.rinet.ru> References: <200602020958.k129wWtc066930@repoman.freebsd.org> <20060202100637.GB24350@lath.rinet.ru> <20060205235817.GQ5499@cs.rice.edu> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="LQksG6bCIzRHxTLp" Content-Disposition: inline In-Reply-To: <20060205235817.GQ5499@cs.rice.edu> User-Agent: Mutt/1.5.11 Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/bge if_bge.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Feb 2006 22:13:06 -0000 --LQksG6bCIzRHxTLp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Feb 05, 2006 at 05:58:17PM -0600, Alan Cox wrote: > On Thu, Feb 02, 2006 at 01:06:37PM +0300, Oleg Bulyzhin wrote: > > On Thu, Feb 02, 2006 at 09:58:32AM +0000, Oleg Bulyzhin wrote: > > > oleg 2006-02-02 09:58:32 UTC > > > > > > FreeBSD src repository > > > > > > Modified files: > > > sys/dev/bge if_bge.c > > > Log: > > > Enable 'complete' rx checksum offloading (i.e. let chip calculate checksums > > > with pseudo header for tcp/udp packets). This could save one in_pseudo() call > > > per incoming tcp/udp packet. > > > > > > Approved by: glebius (mentor) > > > MFC after: 3 weeks > > > > > > Revision Changes Path > > > 1.123 +3 -2 src/sys/dev/bge/if_bge.c > > > > Side effect is workaround for ipfilter bug: > > http://lists.freebsd.org/pipermail/freebsd-stable/2006-January/021961.html > > http://lists.freebsd.org/pipermail/freebsd-stable/2006-February/022149.html > > > > Unfortunately, it also breaks NFS over UDP. Let me know if you need > details. > > Alan Fix attached. It's not bge problem it's five years old bug in ip_reass(). -- Oleg. --LQksG6bCIzRHxTLp Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="ip_reass.diff" Index: ip_input.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/ip_input.c,v retrieving revision 1.314 diff -u -r1.314 ip_input.c --- ip_input.c 2 Feb 2006 03:13:15 -0000 1.314 +++ ip_input.c 6 Feb 2006 21:44:45 -0000 @@ -982,10 +982,12 @@ nq = q->m_nextpkt; q->m_nextpkt = NULL; for (q = nq; q != NULL; q = nq) { + int sum; nq = q->m_nextpkt; q->m_nextpkt = NULL; m->m_pkthdr.csum_flags &= q->m_pkthdr.csum_flags; - m->m_pkthdr.csum_data += q->m_pkthdr.csum_data; + sum = m->m_pkthdr.csum_data + q->m_pkthdr.csum_data; + m->m_pkthdr.csum_data = (sum & 0xffff) + (sum >> 16); m_cat(m, q); } #ifdef MAC --LQksG6bCIzRHxTLp--