On Tue, 14 Apr 2009, Alan Stern wrote: > Why? This follows from the constraint (implicit in the USB spec and > stated explicitly in the EHCI spec) that in any uframe, CSPLITs must be > sent in the same order as their corresponding SSPLITs. Oops, I got the references reversed. It's stated less clearly in the EHCI spec, in sections 4.12.2.3 and 4.12.3.2, where the paragraphs about C-prog-mask say: Due to the nature of the Transaction Translator periodic pipeline, the complete-splits need to be executed in-order. The USB-2.0 spec is more explicit; in section 11.18.8 it mentions: A host must issue complete-split transactions in a microframe for a set of full-/low-speed endpoints in the same relative order as the start-splits were issued in a microframe for this TT. Incidentally, the same principle applies to pairs of interrupt transfers. If interrupt transfer A's SSPLIT occurs in uframe i and interrupt transfer B's SSPLIT occurs in uframe j, and if A's period is higher than B's period, then we must not have i = j+1 or i = j+2. Again, this is because the chain of QHs is traversed starting with the highest-period entries. 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