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

Reply via email to