Subject: Re: USB2 fullspeed performance
To: None <wulf@ping.net.au>
From: Lennart Augustsson <lennart@augustsson.net>
List: tech-kern
Date: 02/14/2005 02:05:08
The ugen driver isn't really made for good throughput.
Maybe you want to rool your own driver.
-- Lennart
Berndt Josef Wulf wrote:
> On Mon, 14 Feb 2005 02:19 am, Jon Buller wrote:
>
>>On 00 Jan 00 00:00:00,
>>
>>Berndt Josef Wulf wrote:
>>
>>>G'day,
>>>
>>>Where can I find benchtests performed for USB2 compliant controllers on
>>>NetBSD-i386 that would give some indication on the expected maximum data
>>>bandwidth? Currently, I'm only managing a maximum of 4MBytes/sec with a
>>>Intel 82801DB USB EHCI Controller (rev. 0x01) connected to a Cypress
>>>7C63013 device (FX2), which is a long way off from its theoratical
>>>480Mbits/sec of a fullspeed USB2 interface.
>>
>>You meant high-speed USB interface, didn't you? Full-speed is
>>10Mbits/sec (or is it 12?) High-speed is the fast one. I (and
>>everyone else I know) thinks the USB people were on crack when they
>>thought up those names. If you really are configuring it at full speed,
>>there is some chance for improvement there (2x or 3x), but not 100x.
>
>
> The measured data bandwidth is 4MBytes/sec. This is only 10% of the maximum
> bandwidth theoretically achievable. Linux developers report data bandwidth of
> 32-40MBytes/sec under the same conditions.
>
> Is there generic support for asynchronous reading and writing? That
> is, multiple reads and writes outstanding, which notifies
> their completion? (Signals, polling, etc).
>
> Is there a USB specific ioctl that allows submission of an USB "URB"
> (USB Request Block) asynchronously?
>
> Is there a way of improving data throughput on this device or is this the best
> we currently can do? Find below some kernel and userland messages on system
> configuration and performance.
>
> ./program_and_start.sh
> Using device /dev/ugen0 on bus /dev/usb3 vendor id 0xfffe product id 0x0002
> Read 102400000 bytes in 25 seconds and 1068 microseconds. Rate of 4095825
> bytes/second
>
> ehci0 at pci0 dev 29 function 7: Intel 82801DB USB EHCI Controller (rev.
> 0x01)
> ehci0: interrupting at irq 11
> ehci0: EHCI version 1.0
> ehci0: companion controllers, 2 ports each: uhci0 uhci1 uhci2
> usb3 at ehci0: USB revision 2.0
> uhub3 at usb3
> uhub3: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
> uhub3: single transaction translator
> uhub3: 6 ports with 6 removable, self powered
>
> usbdevs -v
> [,,,]
> Controller /dev/usb3:
> addr 1: high speed, self powered, config 1, EHCI root hub(0x0000),
> Intel(0x8086), rev 1.00
> port 1 addr 2: high speed, self powered, config 1, USRP Rev 2(0x0002), Free
> Software Folks(0xfffe), rev 1.02
> port 2 powered
> port 3 powered
> port 4 powered
> port 5 powered
> port 6 powered
>
>