Maximum size of USB transfers for xHCI

According to Microsoft (http://msdn.microsoft.com/en-us/library/ff538112.aspx) the maximum transfer sizes in Vista and Windows 7 is limited by hard-coded values in the USB driver stack. For USB 2.0 this might be the case.

However, because Microsoft does not support SuperSpeed mode natively (the xHCI and Hub device drivers are provided by the USB 3.0 chip manufacturer) the limits stated above do not seem to apply. At least this is what I found out through testing.

I tested three different USB 3.0 chip manufacturers (NEC/Renesas, ASMedia and TI with their corresponding drivers) using bulk transfers and all seem to accept any transfer size (performed as single URB) that will fit on a 32-bit word. No error code, no bugchek 0xFE. Measuring the performance (speed/timing) doesn’t show a penalty in the case of very large transfers (e.g. 1 GB). I’ve been able to measure ~375 MB/s without problems.

Will Microsoft introduce a size restriction in its own USB 3.0 stack like in the case of USB 2.0? Does anybody know (and tested) an USB 3.0 xHCI with large transfers that DOES impose such restriction? (for example, Fresco Logic, AMD, Etron, VIA Labs, Intel)

I intend to design a driver capable of transferring large amounts of data over SuperSpeed bulk pipes and I’d like to avoid segmenting the transfers if this is not really necessary but I also intend to remain compatible with all implementations (this is the primary goal).

Note: my tests were performed on Win 7 x64. I’m curious if Win 7 x86 will behave in the same way…

I know that Win 8 preview includes the USB 3.0 drivers but I haven’t had the chance to try it. In addition, my own driver needs to work with Win 7 and Vista.

Any comments (especially from Microsoft engineers/developers involved in the USB 3.0 device driver stack) would be appreciated.

Thank you,

Stefan