On Sun, Jun 10, 2007 at 10:44:28AM -0400, Alan Stern wrote: > On Sat, 9 Jun 2007, Greg KH wrote: > > > > > Hm, is there any way to keep this from being in the urb entirely? > > > > Shouldn't this be an internal-to-the hcd type thing? > > > > > > Yes, it could be done that way, I think. It'll take more work than a > > > simple search-and-replace. The trickiest part is how to unlink an URB > > > after it has been submitted but before it has been handed to the HCD... > > > > We allow that today? How, multiple threads doing the submit and then > > unlink call? That's looney. We should not worry about that until after > > the submit call has returned to the caller. > > Sure it's looney. We still have to handle it correctly, though. Don't > worry, it will be easy -- I figured out the right approach last night.
Ok, thanks to Oliver I now see why we need to handle that. > Another idea suggested itself too: We could make usbcore allocate > urb->hcpriv during submission instead of having each HCD do its own > private allocation. It's not a big deal, just a matter of replacing > several different calls to kmalloc/kfree by a single call. Any reason > not to do it? No objection from me. > Ideally, of course, each HCD would allocate its own URBs with the > private area included. But we can't do that just now, since some > drivers maintain pools of URBs that they use for multiple devices, > potentially on different buses. I don't object to fixing those drivers to do a per-device pool instead of a per-driver pool to make this easier. So then you could just do a: usb_alloc_urb(struct usb_interface *intf, ...) which would allow the bus that is assigned to the device to do the proper allocation? I think that would be good to do. > > > Maybe. It _is_ documented as being private to usbcore -- but that > > > might not stop people! > > > > Exactly, we need to make it impossible :) > > > > If I get the chance this week I'll look at your patch and see if we can > > tweak it somehow. > > No, don't bother; I'll redo it completely. In the revised version > there won't be a core_status field and neither usbcore nor the HCDs > will use urb->status (except for the part about setting it to > -EINPROGRESS when the URB is submitted and storing the status code > immediately prior to calling the completion routine, for backward > compatibility). Ok, sounds good to me. Thanks for doing this. greg k-h ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel