> 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