mbuf/mbuf cluster adjustments (bcm driver)

Duncan Barclay dmlb at dmlb.org
Mon Aug 25 07:28:06 PDT 2003


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 at dmlb.org   | 
dmlb at freebsd.org| 


More information about the freebsd-hackers mailing list