Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Aug 2008 00:05:26 -0400
From:      gnn@freebsd.org
To:        Sam Leffler <sam@freebsd.org>
Cc:        net@freebsd.org
Subject:   Re: Small patch to multicast code...
Message-ID:  <m2y72jumpl.wl%gnn@neville-neil.com>
In-Reply-To: <48B4A62D.3080300@freebsd.org>
References:  <m27iaa6v43.wl%gnn@neville-neil.com> <20080821203519.GA51534@onelab2.iet.unipi.it> <m23aky6ncl.wl%gnn@neville-neil.com> <48AE23FF.9070009@FreeBSD.org> <m2tzdd6j36.wl%gnn@neville-neil.com> <48AF08B7.4090804@FreeBSD.org> <m2fxowhgq8.wl%gnn@neville-neil.com> <48AF330B.4010802@FreeBSD.org> <m28wuohfm5.wl%gnn@neville-neil.com> <20080825190207.GA73478@zibbi.meraka.csir.co.za> <20080825194038.GA75840@zibbi.meraka.csir.co.za> <m2y72jx33z.wl%gnn@neville-neil.com> <20080826144130.S66593@maildrop.int.zabbadoz.net> <m2abezwojl.wl%gnn@neville-neil.com> <48B4A62D.3080300@freebsd.org>

index | next in thread | previous in thread | raw e-mail

At Tue, 26 Aug 2008 17:56:13 -0700,
Sam Leffler wrote:
> 
> gnn@freebsd.org wrote:
> > At Tue, 26 Aug 2008 14:50:33 +0000 (UTC),
> > Bjoern A. Zeeb wrote:
> >   
> >> On Tue, 26 Aug 2008, George V. Neville-Neil wrote:
> >>
> >> Hi,
> >>
> >>     
> >>> At Mon, 25 Aug 2008 21:40:38 +0200,
> >>> John Hay wrote:
> >>>       
> >>>> I have tried it and it does fix my problem. RIP2 over multicast works
> >>>> again. :-)
> >>>>         
> >>> Good to hear.  I'm waiting on a bit more feedback but I think I'll be
> >>> checking this in soon, with a big comment talking about the
> >>> performance implications etc.
> >>>       
> >> So wait a second; what was the m_pullup vs. m_dup thing? Has anyone
> >> actually tried that? I mean using a sledgehammer if a mitten would be
> >> enough is kind of .. uhm. You get it.
> >>     
> >
> > Perhaps I'm confused, I've been off dealing with other issues for a
> > few days, but m_pullup doesn't make a copy of the packet or its
> > fields, only makes sure that it's contiguous in memory.  Am I wrong in that?
> >
> > Since the bug is that two pieces of code modify the same data, in ways
> > that interfere, I'm not sure how we can avoid making a copy.  It might
> > be nice to limit the copy, but we'd still need two copies, one for the
> > loopback device and one for the real device.
> >
> >   
> pull the headers up.  copy just the headers.  no deep copy.
> 

I'm confused, if it's these lines that are screwed up:

		/* If needed, compute the checksum and mark it as valid. */
		if (copym->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
			in_delayed_cksum(copym);
			copym->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
			copym->m_pkthdr.csum_flags |=
			    CSUM_DATA_VALID | CSUM_PSEUDO_HDR;
			copym->m_pkthdr.csum_data = 0xffff;

in particular that last line, then how does pulling up the header
help?  That's not part of the packet, that's the checksum data in the
pkthdr itself.

Best,
George



home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m2y72jumpl.wl%gnn>