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

Reply via email to