Messages in this thread | | | Subject | Re: [linux-usb-devel] Re: [Bluetooth] HCI USB driver update. Support for SCO over HCI USB. | From | Max Krasnyansky <> | Date | 09 May 2003 15:35:36 -0700 |
| |
On Fri, 2003-05-09 at 12:06, David Brownell wrote: > Hi Max, > > > Do you think we can add this > > struct urb { > > ... > > struct list_head drv_list; > > char drv_cb[X]; > > char hcd_cb[X]; > > ... > > }; > > Only with kerneldoc ... :) > :)
> I'd certainly like the list_head. Patch attached, > in case Greg agrees enough. On x86, this makes > sizeof(struct urb) == 120, so it's using space > that was previously wasted. > > > As for the skb->cb analogue(s), details need working. > > - What should "X" be? skb->cb is 48 bytes. I'd say 16 will be enough for drivers.
> - Should the cb[] arrays be "long"? They tend to > be used for pointers... Probably doesn't matter as long as ->cb is aligned.
> - The HCDs want different amounts of per-urb data. > Sizes on x86: > * UHCI wants a lot -- 60 bytes! > * OHCI typically uses 16 bytes, but more for > multi-TD urbs (control 24 bytes, ISO often 36). > * EHCI doesn't allocate such extra data. > > - The HCDs would need conversion to use hcd_cb[]. > I once had a patch that did that, but it's not > current. It made urb->cb replace urb->hcpriv. > > I suppose X=60 for hcd_cb[] will be enough, at least > on 32 bit CPUs. But you start to see why in the > new "USB Gadget" API, the analogue of "urb" gets > allocated by the USB (device) controller rather > than by generic code: so that in typical cases, > no additional per-request allocations are needed.
Ok. Sounds like it should be uint32_t hcd_cb[16]; // 64 bytes for internal use by HCD uint32_t drv_cb[2]; // 8 bytes for internal use by USB driver
?
Max
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |