Re: [PATCH] usbdevfs: increase max buffer size to 20k per EHCI spec

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>
>
> On 04/07/2010 01:27 PM, Alan Stern wrote:
>>> the EHCI spec allows up to 20k
>>
>> This is ingenuous.  The EHCI spec allows a single qTD to describe up to
>> 20 KB of data.  But that's not the limit on the size of a data request;
>> bulk data transfers can be arbitrarily long.  Qemu could solve its
>> problem the same way libusb does: by breaking the large request up into
>> multiple smaller requests.
>>
>> Alan Stern
>>
>
> Yes, I was referring to a data request from a single qTD which is passed
> from guest to qemu to host. I'll take a look at libusb.
>
> Thanks,
>
> David

Hi David,

You are correct that ehci allows up to 20K in one qTD transfer. The
gotcha is it requires that the page be aligned on some big boundary, I
don't remember if it is 4K or something else, but it is a large
alignment requirement. So most ehci host drivers limit a qTD to a 16K
xfer so that there is no alignment issue; that is any transfer from
any address will always fit in the 5 memory ptrs in the qTD hardware
structure if the xfer size is <=16K.

So for most linux devio.c urbs, asking for a 20K transfer is really
going to require two hardware tds. If you want to keep the hardware
busy, submit more urbs asynchronously.

Regards, Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux