On Wed, Jan 28, 2009 at 07:29:49PM +0100, Oliver Neukum wrote: > Am Wednesday 28 January 2009 16:52:31 schrieb Alan Stern: > > > A new implementation will certainly have its own issues. In > > particular, I'm thinking of the requirement that every buffer in a > > transfer (except the last) must be a multiple of the maxpacket length. This is a host controller hardware limitation, correct? Is it part of the host controller specs, or is it specific to different implementations of the hardware? > > The block layer currently has no way to express this requirement. It > > can be weakened slightly; for example, with EHCI you're okay if every > > buffer other than the first begins on a 4-KB boundary and every buffer > > other than the last ends on a 4-KB boundary. But that can't be > > expressed in the block layer either. It would be silly to go to a lot > > of effort to avoid the overhead of allocating and submitting multiple > > URBs, only to suffer the overhead of bounce buffers. If hardware didn't have the limitation that all buffers had to be a multiple of the max packet length, there would be no changes necessary, right? The scatter gather would just be pushed down to the HCD and each entry would be treated like a DMA buffer. > > There are several limitations to the current implementation. The two > > most notable are: It can't run asynchronously, and it doesn't directly > > map buffers from userspace. > > That clashes with a need to observe the limits of the hardware. > We'd need to export mmap() from the hcds. Sarah Sharp -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html