Re: [patch 2.6.29] usb: ehci-sched.c: EHCI SITD scheduling bugfix (resend)

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

 



On Thu, Apr 16, 2009 at 2:29 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 16 Apr 2009, Alan Stern wrote:
>
>> > I disagree with your interpretation.  I believe that you can issue a
>> > 188 byte SSPLIT even if you know there is another transfer going on,
>> > and even if you have issued another smaller transfer (less than 188
>> > bytes obviously) earlier in that uframe.  The TT has a (minimum) 752
>> > byte SSPLIT buffer that it uses to buffer transfers up and execute
>> > when possible.
>>
>> Doesn't this contradict your earlier statement that a multi-uframe
>> transfer has to be scheduled so that its first SSPLIT (and each of the
>> following 188-byte SSPLITs) occupies an otherwise empty uframe?  After
>> all, a 188-byte transfer that begins in the same uframe as another
>> smaller transfer will certainly be multi-uframe.
>
> To put it another way...  Suppose isoc-OUT transfer A has length 50 and
> its SSPLIT is scheduled in uframe 0, and you want now to schedule
> isoc-OUT transfer B.  If B has length 180, then you're saying it's okay
> to schedule B's SSPLIT in uframe 0 also, letting the TT buffer the
> excess 42 output bytes across the uframe boundary.

I believe this is ok per USB spec, and this is how the current code
should behave.

> But if B has length 190, then according to what you wrote earlier it's
> _not_ okay to schedule B's first SSPLIT in uframe 0 (with the second
> 2-byte SSPLIT in uframe 1), letting the TT buffer the excess 50 output
> bytes over the uframe boundary.  What reason is there for this
> difference?  Don't the two cases appear pretty much the same to the TT?

I believe this is ok per USB spec, but the current code does not do
this simply because it was easier to calculate availability by putting
a transfer larger than 1 uframe into an empty uframe.  I do not think
that the USB spec mandates putting a > 1uframe transfer into its own
empty starting uframe (although for isoc OUT you do have to
SSPLIT-begin with 188 bytes, but I believe you can do this even if
there is another SSPLIT in that same uframe).
--
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

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

  Powered by Linux