cvs commit: src/sys/dev/bge if_bge.c
Oleg Bulyzhin
oleg at FreeBSD.org
Mon Feb 6 14:13:06 PST 2006
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.
-------------- next part --------------
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
More information about the cvs-src
mailing list