m_uiotombuf alignment
Maksim Yevmenkin
maksim.yevmenkin at gmail.com
Tue Sep 2 18:57:02 UTC 2008
On 9/2/08, Andrew Thompson <thompsa at freebsd.org> wrote:
> 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
ahh... i see... i was looking at the wrong revision :) yes, i agree
with you. i do not see the reason for the alignment of the align
parameter.
thanks,
max
More information about the freebsd-current
mailing list