Mathias: I noticed a couple of things wrong in xhci_queue_isoc_tx_prepare(). One of them isn't too serious: The code checks in several places whether the device is running at low speed. This is useless, because USB does not support isochronous transfers at low speed. More importantly, the routine sets urb->start_frame to the current value of the frame counter. This is completely wrong; urb->start_frame is supposed to be the (micro-)frame number for when the transfer begins, not when the transfer was submitted. As far as I can tell, the only way to do this correctly is to set the Frame ID field (with SIA = 0) in the first TD of an isochronous stream, and then set SIA = 1 in all the following TDs (see 4.11.2.5). That way, xhci-hcd will know exactly when the stream begins, so it can keep track of the frame in which each URB starts. Dealing with underruns is left as an exercise for the implementer... 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