Greg: This series of three patches modifies the isochronous scheduling routine in ehci-hcd, adding changes that we need for proper operation with tasklets (with a new inline routine needed in usbcore). The problem is that we have to maintain the existing API guarantee that URBs submitted in a completion handler will keep an isochronous stream alive, maintaining synchronization with the device. Until recently this wasn't an issue; URBs submitted by a completion handler would be processed while the giveback operation was in progress, so the endpoint queue would never appear to be empty. But now completion handlers run in a separate tasklet context. The giveback operation will end before the completion handler runs and submits any URBs. Therefore we need a way to tell whether a particular URB submission was made by a completion handler, and we need to handle the case where the endpoint queue does empty out temporarily. That's what these patches do. The first one adds a mechanism to usbcore for determining whether an endpoint's completion handler is running. The other two modify ehci-hcd to do the right thing when the queue gets an underrun. These changes are intended to avoid bad side effects in the USB audio driver when interrupt latency causes a delay in the isochronous stream. Since the tasklet changes have already been accepted, I think these patches will also need to go to Linus before the current merge window closes. 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