Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2008 11:32:43 -0700
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
Cc:        current@freebsd.org
Subject:   Re: m_uiotombuf alignment
Message-ID:  <20080902183243.GC12367@citylink.fud.org.nz>
In-Reply-To: <bb4a86c70809021054rf131f7dh7aa9c5bba90ac3b0@mail.gmail.com>
References:  <20080902174540.GB12367@citylink.fud.org.nz> <bb4a86c70809021054rf131f7dh7aa9c5bba90ac3b0@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 02, 2008 at 10:54:08AM -0700, Maksim Yevmenkin wrote:
> Andrew,
> 
> >  I have a patch here to removing the alignment of the align parameter. I
> >  can not see why it was added as it up to the caller to specify this, it
> >  breaks tap(4) on strict alignment machines as m_uiotombuf is called with
> >  ETHER_ALIGN. Also 'align' isnt a great description of this field, its
> >  more a padding or data offset.
> 
> hmm... strange... from cvs
> 
> ===
> 
> Revision 1.53
> Wed May 4 18:55:02 2005 UTC (3 years, 4 months ago) by emax
> Branches: MAIN
> 
> Change m_uiotombuf so it will accept offset at which data should be copied
> to the mbuf. Offset cannot exceed MHLEN bytes. This is currently used to
> fix Ethernet header alignment problem on alpha and sparc64. Also change all
> users of m_uiotombuf to pass proper offset.
> 
> Reviewed by:	jmg, sam
> Tested by:	Sten Spans "sten AT blinkenlights DOT nl"
> MFC after:	1 week
> 
> ===
> 
> could you please explain how and on which platforms it breaks tap(4)?

That revision had the correct behaviour, it was broken in r1.169

 Rewrite m_uiotombuf() to use m_getm2() for mbuf allocation and do the
 uiomove() in a tight loop over the mbuf chain.  Add a flags parameter to
 accept mbuf flags to be passed to m_getm2().  Adjust all callers for the
 extra parameter.
 
 Sponsored by:	TCP/IP Optimization Fundraise 2005


Andrew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080902183243.GC12367>