Hello, I've been looking at the usb2 code, and from what I've understood, only synchronous transfers are possible : a read (for exemple) is only scheduled when the userland program calls usb_bulk_read().
Furthermore, only fixed size buffers are used : only one buffer of 32 kbyte per transfer. This seems sub-optimal when reading (or writing) from userland blocks bigger than 32 kbytes, as multiple kernel-to-userland switches are necessary, and there is a latency window where no buffer exists to accept data between the arrival of one block and the posting of the next transfer. One way to work around this kind of limitations is to provide in advance a certain number of transfers, arranged in a ring, where the callback function at the end of a transfer schedules the next, without any further userland intervention. Is there any project for adding asynchronous bulk reads and/or writes to the fine usb2 stack ? TfH _______________________________________________ freebsd-usb@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[EMAIL PROTECTED]"