> 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... > Let me know if you want any changes tested using my DAC that reliably shows the problem. BR Russel -- 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