> Ah, but re-submission of an interrupt URB from within the completion
> handler will run in interrupt context.

That we'll have to deal with later.

> This could also be entirely solved by making the requirements that:
>       (1) The core or HCD will unlink all URBs for a removed device when
>       it's removed

To do so you need to add the urb to a per device list, which has to be
locked. The problems arise if you loose the race. Where do you put the
lock ?

>       (2) The mid- and high-level drivers will not submit any more URBs
>       to the removed device once the disconnect() routine has ended.

You need to block usb_submit_urb() for disconnected devices.
To know whether a device has been unplugged, you need to scan all
connected devices. This sucks.

> If you think about it, some of this is needed anyway.  After all, there
> will always be the fundamental race of the cable being pulled, and URB
> being submitted, and then the disconnect function getting called.  We could

That's not a problem. On that level a disconnected device is just a source
of continuous io errors.

> require the disconnect to unlink the URBs, but since the core/HCDs have to
> be able to accept (at least for a small window) URBs for a removed device,
> why not put the logic all in one place?

Because it's a twofold problem. The device going away and the device
descriptor going away. The latter is the hard part.

> After all, it used to work this way....

How so? When?

        Regards
                Oliver



-------------------------------------------------------
This sf.net email is sponsored by: Influence the future
of Java(TM) technology. Join the Java Community
Process(SM) (JCP(SM)) program now.
http://ads.sourceforge.net/cgi-bin/redirect.pl?sunm0002en

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to