On Wed, 28 Jan 2009, Sarah Sharp wrote: > > > 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? Yes. > Is it part of > the host controller specs, or is it specific to different > implementations of the hardware? It is part of the specs for UHCI, OHCI, and EHCI. I'm not familiar with the specs for any other host controllers (especially xHCI!). Since the bulk maxpackets lengths are <= 512 for all three of those controller types, this restriction isn't too bad. For the most part, scatterlists come from the block layer, which works in terms of 512-byte sectors. However with wireless USB it has already caused problems. There are devices with bulk maxpacket sizes of 1024, and people have observed buffers of length 512. The host controller couldn't handle it right. > 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. Pushing scatterlists down to the HCD level would involve several nontrivial changes to the code. The issue of the buffer lengths is just one of them, although it is perhaps the most vexing. Alan Stern -- 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