Re: cxacru usb_bulk_msg() firmware upload 36x slower with OHCI vs.UHCI

From: Alan Stern
Date: Wed Nov 18 2009 - 16:28:54 EST


On Wed, 18 Nov 2009, Simon Arlott wrote:

> > You may have to do a bisection search to find the answer.
>
> With what? I can't really bisect "the UHCI code" and "the OHCI code"...
>
> I have no good kernel to work with unless I start trying really old kernels,
> but there's no reason why those should work either. I'm hoping someone
> recognises the significance of the transfer speed.

If you don't have a good kernel to start from then there's nothing to
search for. I was assuming that a relatively recent kernel change
might have caused the slow-down, but if it has been this way for a long
time then a different approach is needed.

There's no particular significance to 256 ms that I know of, although
if the hardware is malfunctioning it could easily pick such a rate.
The page size is significant because that's how the driver and the
hardware divide up transfers; each Transfer Descriptor refers to at
most 4096 bytes of data.

> The OHCI code appears to split the data up into 4096 chunks, but even the
> odd sized transfer of 25280 bytes at the end runs at the same speed:
>
> [ 4774.830569] cxacru: sending fw 0x3 size 0x62c0 to #98668
> [ 4776.410375] cxacru: sending fw 0x3 size 0x100 to #e0

Yep. My intuition says "hardware problem", but there's no hard
evidence one way or another.

What happens with other sorts of devices, such as a USB flash drive?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/