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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to