On Fri, 12 Jun 2009, Julie Zhu wrote: > Hi, Alan, > > I am sorry, I do not see why qh_completions() has anything to do with > usb_disconnect(). It's a subtle connection. usb_disconnect() calls usb_disable_device(), which calls usb_disable_endpoint() for every possible endpoint in the device. That routine calls usb_hcd_flush_endpoint(), which calls unlink1(), which calls hcd->driver->urb_dequeue() -- which in this case is ehci_urb_dequeue(). For interrupt endpoints, that routine calls intr_deschedule() followed by qh_completions(). Voila! 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