Although when disconnect() happens because of physical device disconnect (instead of config change, or other disconnect/rebind cases), such requests can/do fail cleanly.
[ which is a new-in-2.6 feature I'm glad we could get... ]
Yeah, I hate the "rebind" nonsense... bleah.
That's where it fails today! As Oliver noted.
And we can't change that in the 2.6 usb host framework, because of where the problem comes from. Endpoint state is associated too directly with the device ... it should be associated with interfaces (except in some cases for ep0).
Could you elaborate? The key to make reference counting work, seems to be reallocating the data structure operations are based on. Why would it matter whether we send URBs to devices, interfaces or endpoints?
Because the URB API doesn't match USB well at all:
- According to USB, transactions go to endpoints.
- According to USB, endpoints are associated with the currently
active interface settings ... except ep0, which is associated
with the device (and all active interface settings). - But according to the URB API, transactions go to devices, and
aren't synchronized with the current interface settings.
Except for the synch we get with disconnect(), and cooperative
USB device drivers.So the current situation is error-prone. When interfaces switch to dynamic allocation, we'll be about as close to a real fix for this as the current URB framework allows. A real fix means fixing "URB".
- Dave
------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
