Date: Mon, 25 Aug 2003 15:27:57 +0100 (BST) From: Duncan Barclay <dmlb@dmlb.org> To: Greg Lehey <grog@lemis.com>, freebsd-hackers@freebsd.org Subject: mbuf/mbuf cluster adjustments (bcm driver) Message-ID: <XFMail.20030825152757.dmlb@dmlb.org>
next in thread | raw e-mail | index | archive | help
Hi I've finally managed to get back to work on the bcm driver for Broadcom 440x chips. I think the RX packet loss/performance problem that people have with the driver from July is down to how I am accounting for a 30byte header that the chip prepends to an incoming packet. At present, the driver preallocates a load of mbuf clusters for the chip to DMA into. The chip then loads the mbuf cluster with this 30byte header followed by the real packet. I then account for this header by doing an m_adj(m, 30) before if_input(). However, this doesn't seem to work all the time. Looking at the code for m_adj I don't think it is meant for use with mbuf clusters. Is there a tidy way of trimming this header off from the mbuf cluster? I'm going to first try manually copying stuff to confirm that this is the problem and then try m_pullup followed by m_adj. Thanks Duncan -- ________________________________________________________________________ Duncan Barclay | dmlb@dmlb.org | dmlb@freebsd.org|
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20030825152757.dmlb>