When I do several back to usb_bulk_msg calls (64 byte writes), I notice
each one takes about 1 ms to complete. I decided to probe the usb trace
on the hardware. I noticed that even when the device and driver are
idle, I see packets being transmitted every 1ms. I am showing my
ignorance here, but what are these? Second thing I notice is that when
I run these back to back bulk transfers, I don't see a burst off them on
the O-scope. Each bulk transfer come at the same place following the
"unknown" packets.

Start Of Frame (SOF) followed by a single data packet.


The SOF is more or less "free" but USB 1.1 allows up to nineteen
bulk data packets per frame.  You can do better.


This is what is slowing my bulk transfers down.  How do a make my
transfers use all available bandwidth and not just this one slot every 1
ms?  Do I have to use a bunch of linked urbs?

For starters, don't limit yourself to just one packet at a time. Issue big writes, like 4 KB at a shot.

And make sure you're keeping enough data in your I/O queues to avoid
stuttering.  At high speed, you can stream over a dozen 4 K buffers
per millisecond (on an otherwise idle bus).

- Dave



Thanks,

Torry Akins
Remote Sensing Lab
University of Kansas






-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger for complex code. Debugging C/C++ programs can leave you feeling lost and disoriented. TotalView can help you find your way. Available on major UNIX and Linux platforms. Try it free. www.etnus.com
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to