Hi,

Matt Ettus and I are working on a very high speed analog i/o card for
the GNU Radio project.  The hardware is primarily targeted at software
radio applications.
http://comsec.com/wiki?UniversalSoftwareRadioPeripheral

Our goals are to maximize throughput on the USB and to minimize
the interpacket jitter that we see at the peripheral.  The peripheral
uses the cypress FX2.

I've run into some problems in my attempt to get high throughput.  I'm
currently using a 2.4.22 kernel and the devio interface to submit
multiple BULK urbs from userland.  I've typically got 400+ urbs in
flight with 16KB buffers associated with them.  With this strategy I'm
able to sustain 31.25e6 bytes / second in either the IN or OUT
direction with acceptable interpacket jitter and no need to run with
real time scheduling.

I'm using the QUEUE_BULK flag.  The symptom I'm seeing is that
although all of the output urbs specify the same endpoint, it appears
that what's being transmitted on the bus is some kind of round robin
selection of portions of all of the urbs outstanding, instead of all
16K associated with a single urb, and then on to the next.

I see the same behavior on the input direction too.  Needless to say,
this isn't so good for the data coming and going to our A/D and D/A
converters.

Do you have any suggestions?  Am I misunderstanding the function of
the QUEUE_BULK flag?

It seems that this requirement (in order execution of outstanding
requests) is common to many other usb devices.  USB tape drives and
disk drives have the same requirement.  For disks the need is derived
from requirements for file system integrity (write file data before
meta data).

How do I enqueue multiple requests to the same endpoint and get in
order transfer?  I understand the desire to multiplex the USB between
different endpoints.  The issue is with regard to in-order transfer of
multiple outstanding requests to the same endpoint.

Thanks,
Eric Blossom


-------------------------------------------------------
This SF. Net email is sponsored by: GoToMyPC
GoToMyPC is the fast, easy and secure way to access your computer from
any Web browser or wireless device. Click here to Try it Free!
https://www.gotomypc.com/tr/OSDN/AW/Q4_2003/t/g22lp?Target=mm/g22lp.tmpl
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to