Ross wrote:The trace is missing the SOF's but looking at the timing (about 125usS?) it looks like you are only getting one IN token packet from the host per micro-frame. So the first case.
I believe you are correct. The host/driver does seem to be the problem. I have investigated further on multiple platforms and have witnessed completely different behaviour on each.
The screen grab I posted before wasn't as helpful as it could have been without the SOFs I agree. I have posted bus sniffer data for Linux, OSX and Windows, with SOFs this time ;)
The most interesting thing I have spotted is that despite a
technical note published by Apple indicating that there is no support for multiple transactions per uframe in their drivers, the data captured for the Apple case is closer to the expected data than the other two platforms. I have Included the grabs and a description below.
I am not convinced it will be possible to use multiple transactions per uframe across all three platforms at present without custom drivers. Part of the benefit of using UAC2 is to avoid the need for proprietary drivers, so this is not likely to be an option.
Linux
OUT transaction is not split up into multiple parts despite being over 1024 bytes.
IN transaction is split up into multiple parts and despite appearing to be between SOF tokens the delta time interval between tokens suggests that it is not (151us > 125us frame period).
Data returned to test bench is munged.
Windows
No OUT transactions are issued.
IN transaction are trying to follow protocol for mutliple isoc transactions per uframe but host doesn't seem to be requesting the packets fast enough. Similar to Linux except worse timing properties.
OSX
OUT transactions appear to have been executed correctly according to USB spec for multiple isoc transactions per uframe.
In transactions are between SOFs but a closer look at the timing shows negative intervals suggesting the transaction belongs to the previous uframe. The previous uframe has only 1 OUT transactions inbetween SOFs. This pattern repeats.
Data received is partially correct, but with drop outs.