libusb performance on 8.1

Daniel O'Connor doconnor at gsoft.com.au
Fri Feb 4 04:02:14 UTC 2011


On 03/02/2011, at 21:26, Hans Petter Selasky wrote:
>>> You need to set the multiplier to 2 or 3. Then you get 3*1024 bytes at
>>> maximum.
>> 
>> OK, so I need..
>> usb_xf[i].xf = libusb_alloc_transfer(3);
>> p = malloc(3 * 1024);
>> libusb_fill_iso_transfer(usb_xf[i].xf, h, 0x82 p, 3 * 1024, 3, usbcb,
>> &usb_xf[i], 2000);
>> 
> 
> No. Please read the description of wMaxPacketSize in the USB2.0 spec, and the 
> multiplier bits.

I checked that but it didn't work, I'll try it again.
Also I read somewhere that setting it to zero was "as many as possible" but I can't find that now so maybe I was dreaming.

> High-speed USB executes 8 isoc packets per second! Number of packets should 
> not be less than 56 for High-speed USB due to underflow risc.

OK, I didn't realise it was so high

> usb_xf[i].xf = libusb_alloc_transfer(56);
> p = malloc(3 * 1024 * 56);
> libusb_fill_iso_transfer(usb_xf[i].xf, 0x82, p, 3 * 56 * 1024, 56, usbcb,
> &usb_xf[i], 2000);
> 
> libusb_set_iso_packet_lengths(usb_xf[i].xf, 3 * 1024);

OK, I have that, it seems I need to work on the firmware as it's not sending data properly when I set it to iso. I'll work on that and try and figure it out. Unfortunately there isn't much example code on isochronous data transfer with the FX2 :(

However I see the requests return saying they are complete but the amount of data transferred is 0. Setting the "short not OK" flag doesn't change the behaviour.

I'm not sure if this is a bug in libusb, expected behaviour, or a bug in my program.

> You need to allocate 2x "libusb_alloc_transfer(56)" and submit to get double 
> buffering!

Ahh that's no problem, I have many in flight requests as a buffer when my main thread has to sleep waiting for a slave process to read in some data (128Mb worth).

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C








More information about the freebsd-usb mailing list