Skip site navigation (1)Skip section navigation (2)
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>