Re: Split bulk transfers

David Brownell <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Wednesday 09 May 2007, Laurent Pinchart wrote:

> I wasn't aware of those functions. Just to make sure I get this right, am I 
> right to say that URB buffers should be allocated as contiguous cache 
> coherent physical memory (using usb_buffer_alloc, which in turns call 
> dma_alloc_coherent for big DMAable buffers)

Not many applications need cache-coherent buffers.
Few of them involve "big" transfers.


> or as normal memory using scatter-gather routines ?

Likewise not many stacks hand you scatterlists.  If you
get a scatterlist, there's no real option about how to
do that I/O:  either dma map yourself, or let usbcore
handle it for you (using the usb_sg_* calls)


> I currently allocate big bulk buffers using usb_buffer_alloc, which puts a lot 
> of pressure on the memory allocator.

Bad answer, unless you really need that kind of buffer.
>From what you've said, you don't need them, and should
not use those allocator calls.


> Using scatter-gather mappings would  
> help. However, if I'm not mistaken, the usb_sg_* routines are designed for 
> synchronous use (with usb_sg_wait), and thus can't be used for streaming 
> data.

Right.  Scatterlists come from the block layer, which
doesn't stream.

- Dave



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.