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

Reply via email to