On Thu, 13 May 2004, Greg KH wrote:
> I don't object to that, I object to a new function call. If we add
> this, then what's the use of usb_unlink_urb() at all? Why would a
> driver ever want to call it?
You mean, what's the use of synchronous usb_unlink_urb() -- asynchronous
is a separate thing and still necessary; it's used within usb_kill_urb().
> So, why not just fix usb_unlink_urb() to do the same thing that this
> usb_kill_urb() call does? That seems much simpler to do, and no drivers
> will have to be changed.
I thought about doing that. It certainly would simplify hcd_unlink_urb()
considerably.
Here's two reasons to keep usb_kill_urb apart from usb_unlink_urb:
1. Overloading usb_unlink_urb() to handle both synchronous and
asynchronous unlinking was a mistake from the beginning. Now
we can finally have two different routines for the two different
purposes: usb_unlink_urb() for asynch. and usb_kill_urb() for
synchronous unlinks.
2. It's just barely possible, albeit highly unlikely, that some
driver somewhere relies on the peculiar semantics of synchronous
usb_unlink_urb(). I can't imagine how or why, and if a driver
does so it's probably by mistake. But on the off chance, I
didn't want to completely replace synch. unlink_urb.
On the other hand, if you feel that usb_kill_urb() can take over the job
of asynchronous unlinking with no problem, then we can simply add this
code to the start of usb_unlink_urb():
/* Replace synchronous unlinks with usb_kill_urb() */
if (!(usb->transfer_flags & URB_ASYNC_UNLINK)) {
usb_kill_urb(urb);
return 0;
}
(Notice that the return code is meaningless. That's one of the
differences between synchronous unlink and kill_urb.)
This also would allow hcd_unlink_urb() to be greatly simplified.
Later on, drivers can be changed to call usb_kill_urb() directly.
Alan Stern
-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel