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>