Hans Petter Selasky wrote:
Hi,

Please keep me CC'ed, hence I'm not on all these lists.

In the kernel we currently have two different data backstores:

struct mbuf

and
struct buf

These two backstores serve two different device types. "mbufs" are for network devices and "buf" is for disk devices.

Problem:

The current backstores are loaded into DMA by using the BUS-DMA framework. This appears not to be too fast according to Kip Macy. See:

http://perforce.freebsd.org/chv.cgi?CH=126455


Busdma isn't fast enough for 1Gb and 10Gb network drivers that are
trying to max out their packet rates.  It's still fine for storage
drivers and other slow/medium speed device drivers, like USB and
Firewire.  I am working on techniques to make the API easier to use
and the implementation fast enough for the aforementioned devices.

Some ideas I have:

When a buffer is out out of range for a hardware device and a data-copy is needed I want to simply copy that data in smaller parts to/from a pre-allocated bounce buffer. I want to avoid allocating this buffer when "bus_dmamap_load()" is called.

I think you've missed the point of having architecture portable drivers.
John-Mark describes this further.  It also makes little sense to push
the responsibility for handling bounce buffers out of a central
subsystem and back into every driver.

Scott

_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to