cvs commit: src/sys/dev/bce if_bce.c
Andre Oppermann
andre at freebsd.org
Thu May 8 15:31:02 UTC 2008
Scott Long wrote:
> scottl 2008-05-08 15:05:38 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/dev/bce if_bce.c
> Log:
> The BCE chips appear to have an undocumented requirement that RX frames be
> aligned on an 8 byte boundary. Prior to rev 1.36 this wasn't a problem
> because mbuf clusters tend be naturally aligned. The switch to using
> split buffers with the first buffer being the embedded data area of the
> mbuf has broken this assumption, at least on i386, causing a complete
> failure of RX functionality. Fix this for now by using a full cluster for
> the first RX buffer. A more sophisticated approach could be done with the
> old buffer scheme to realign the m_data pointer with m_adj(), but I'm also
> not clear on performance benefits of this old scheme or the performance
> implications of adding an m_adj() call to every allocation.
m_align() to your rescue. m_adj() probably wont do the right thing on
an empty mbuf (-cluster).
--
Andre
More information about the cvs-src
mailing list