On Thu, 30 Jun 2005, Matthias Urlichs wrote: > > If the unlink is broken then there's pretty much nothing you can do. The > > HCD drivers won't exit while there are still outstanding URBs. It doesn't > > matter what's locked or unlocked. > > > Umm, not exactly. ;-) If the hub is not locked, then usb_disconnect() > will proceed to disable the chip and process the ed_rm queue, and then > everything unravels correctly (for some measure of "correct" anyway).
usb_disconnect does not disable the chip -- that happens after it returns. The only way usb_disconnect interacts with the controller is through the hcd_endpoint_disable routine. That in turn does a normal unlink (which you say will not work) and then calls the HCD's endpoint_disable method, which is supposed to block until all URBs for the endpoint have completed. Are you saying that the endpoint_disable method can force an uncompleted unlink to complete? Alan Stern ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel