Re: [v4] usb: UHCI: fix pkt size in TD for a sg element

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux