Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 May 2008 17:31:04 +0200
From:      Andre Oppermann <andre@freebsd.org>
To:        Scott Long <scottl@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/bce if_bce.c
Message-ID:  <48231CB8.6030509@freebsd.org>
In-Reply-To: <200805081505.m48F5cHa066615@repoman.freebsd.org>
References:  <200805081505.m48F5cHa066615@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




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