I suspect it should be in the FAQ but I don't happen to see any clarifications to this extent. How come the EFI_USB_IO_PROTOCOL features the asynchronous functions to receive over the interrupt (UsbAsyncInterruptTransfer) and iso (UsbAsyncIsochronousTransfer) USB pipes but no similar bulk pipe API? There is only the synchronous UsbBulkTransfer. All other USB stacks I've ever worked with have provided this feature. The lack of the async bulk API makes supporting quite a few devices harder than it should be. It forces a thread to be stuck in the sync bulk reception for no real need. It potentially causes bulk pipe to be read out of timer notifications increasing latency.
So what is the recommended architecture for the UEFI drivers that need to support devices where bulk pipes need to be polled for the duration of the driver use? Are there any plans to introduce async bulk reads?
Many thanks for your insights,
Ilya Faenson
Rockville, MD USA