m_uiotombuf alignment
Andrew Thompson
thompsa at FreeBSD.org
Tue Sep 2 18:32:49 UTC 2008
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
More information about the freebsd-current
mailing list