On Thursday 17 May 2007, Hans Petter Selasky wrote: > On Thursday 17 May 2007 19:44, David Brownell wrote: > > On Thursday 17 May 2007, Hans Petter Selasky wrote: > > > I would like introduce a new USB API call, so that my pre-allocate model > > > will work better with your USB API. ... > > > > > int usb_setup_endpoint(struct usb_host_endpoint *hep, size_t bufsize); > > To save the "hep" to "struct usb_device" pointer, I would like to have > "struct > usb_device *dev" as an argument.
Introducing new error paths ... why? As a rule we remove redudancy. > > What would such a call do, though? Who would use it, and why? > > The call will setup one or two pre-allocated USB transfers for the emulation > layer between the Linux USB stack and the FreeBSD USB stack. So what's a "transfer" ... just a bunch of TDs? And what would be the advantage to a Linux driver, since the TDs are allocated on demand in any case? > The reason for this is to allow Linux USB drivers to tell the FreeBSD USB > stack that they want larger/smaller buffers. > > On Linux this information can be used to reserve EHCI/UHCI/OHCI USB transfer > descriptors. I still don't get it. What's the advantage to Linux? I could imagine a new HCD entry, parallel to endpoint_disable(), called by usbcore. It could initialize HCD-internal state like a QH, and maybe ensure that the relevant TD pool isn't empty. It'd be nice to have a task context for that in all cases. But that wouldn't be visible outside usbcore... > > > On FreeBSD this function will pre-allocate one or two USB transfers for > > > an endpoint using the given "bufsize" argument. Those FreeBSD USB > > > transfers will then be used to do all the Linux USB transfers. This > > > function can block and must have a context. > > > > So what's the model ... GPL'd Linux drivers will be modified to > > incorporate that call, so they'd work better on FreeBSD? > > Yes, and under Linux. > > As you can see, it is not possible to emulate an on-the-fly allocation model > by a pre-allocation model. That's why I suggest this API addition. All Linux drivers are allowed to assume on-the-fly allocation though. That's a simpler model than mandatory pre-allocation. In this context, simpler is better. Seems to me that your "Linux emulation" is missing some important characteristics! - Dave ------------------------------------------------------------------------- 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