On Thu, May 13, 2004 at 02:42:29PM -0400, Alan Stern wrote: > 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.
I agree. > 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. Ok, fair enough. > 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. Yeah, possibly, but I really doubt it. > 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; > } Ok, I like this. This gives us a transition for drivers to make over time, and it should not break any current users, right? Then, in 2.7 we can just get rid of the URB_ASYNC_UNLINK flag all together, and then backport the changes to 2.6 :) > (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. Sounds good. Care to respin the patch with this minor change? Anyone else have any objections? thanks, greg k-h ------------------------------------------------------- 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