> I don't see what you're implying.  Synchronous unlink in the
> completion handler does not work, as a rule.  So from the
> perspective of the driver, which does an async unlink (only
> relevant for a periodic URB), the URB is going to still be
> linked until it gets a callback with "-ECONNRESET" saying
> that the async unlink completed.  Likewise, that URB is still
> owned by the HCD/usbcore until that final callback.
>
> Also, any driver resubmitting an URB (manually) is exactly
> analagous to freeing it, allocating a new one, initializing it,
> and then submitting that one.  (Except the smaller overhead.)

Not from a driver standpoint. If a driver unlinks an urb, it needs
to be dead, even if the completion handler resubmits it.
This requires the usbcore to accept a request to unlink an urb,
even if a completion handler is running on another cpu.
If on the other hand, freeing an urb in the completion handler
is legal, unlinking an urb in that state is a very difficult operation.
In fact it requires a global spinlock.

        Regards
                Oliver

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

Reply via email to