> 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/