"Dunlap, Randy" wrote:
<snip>
> You can only transfer "extra" data (other than the request/setup packet) in
> one direction at a time, right?  So the data pointer either points to
> outbound data or to an incoming buffer area, depending on the request,
> which you already know about for your device.
Just to be totally prescriptive, "request" in this sense means the whole
control transfer, not the bRequest field. Data direction is determined from
the high bit in bmRequest...

> And like Georg said, be sure to kmalloc() the data area; don't use local
> stack or global/static data areas for this.
Can anyone explain this a bit further? Specifically, is this driven by PCI
address issues, or some kind of alignment requirement for the host controller?
Is it architecture specific?
Does it also apply to URBs? To usb_bulk_msg?

A quick, incomplete, check showed that usbnet.c, hub.c, audio.c, ibmcam.c,
ov511.c, pwc-ctrl.c, printer.c and probably a few more are all violating this
"rule". Not all that difficult to fix (hopefully), but I'd certainly like to
know more before "janitoring" all that code.

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to