On Thu, 30 Jun 2005, Alan Stern wrote: > 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?
There's one other thing I forgot to ask about... Do you know if the URB that is refusing to unlink was sent to the root hub, or was it sent to an external device? The unlink operation differs between those two cases. 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