On Mon, Jun 24, 2013 at 06:42:05PM +0300, Felipe Balbi wrote: > On Mon, Jun 24, 2013 at 11:32:16AM -0400, Alan Stern wrote: > > > > >> - the change violates USB spec(1.1/2.0/3.0) > > > > > > > > > > I can't see how this would violate USB spec. USB specifications > > > > > have no knowledge of scatter-gather. > > > > > > > > > > It really doesn't matter how the data gets into the HW's FIFO, as > > > > > long as it *does* get there. IOW an SG table like below: > > > > > > > > > > sg[0].length = 512 sg[1].length = 512 sg[2].length = 20 > > > > > > > > > > is no different than: > > > > > > > > > > sg[0].length = 502 sg[1].length = 512 sg[2].length = 30 > > > > > > > > > > from the USB perspective, all is sees is 1044 bytes being shifted > > > > > through the data lines. > > > > > > > > It is a little. The first USB packet has 512 vs 502 bytes on the wire. > > > > > > you wouldn't notice the difference. The DMA engine is the one which > > > would read the sgtable to figure where the data is scattered, at the end > > > of the day, SW only knows of a single 1044bytes URB and controller is > > > required to generate proper USB packets out of that. > > > > That simply isn't true. The DMA engine in EHCI, for example, is not > > capable of constructing a packet out of discontiguous memory buffers. > > /me goes read EHCI... > > that's a limitation on EHCI though, which can't support data scattered > around memory. It must be contiguous within that page. It really doesn't > have anything to do with SGs, right ? > > If EHCI has such a limitation than EHCI alone should have means to > handle drivers which send data scaterred around memory in small chunks. BTW, EHCI can handle "short" SGs in the first page. See page 97 of EHCI 1.0 spec. -- balbi
Attachment:
signature.asc
Description: Digital signature