On Dec 12, 2016, at 6:11 PM, Scott Deandrea <sdeand...@apple.com> wrote:
> I decided to implement isochronous transfers today and changed the structure > slightly: > struct > { > // Control information > uint32_t frameHeaderLength; // 28 > > // Frame information > uint32_t frameLength; // Amount of data sent/received this frame > uint32_t frameStatus; // IOReturn result of the I/O this frame > uint64_t frameNumber; // Frame number on which this was scheduled/executed > by the controller > uint64_t ioTimestamp; // Time in which the frame completed > } __attribute__((packed, aligned (sizeof(uint32_t)))); > > Therefore, the isochronous format for a request with type > kAppleUSBHostPacketFilterRequestComplete is as follows: > Link Header > padding, if required to force 4-byte alignment > Isochronous Frame[0] Header (frameHeaderLength bytes in length) > Isochronous Frame[0] Data (frameLength bytes) > … > padding, if required to force 4-byte alignment > Isochronous Frame[linkHeader.ioFrameCount - 1] Header (aligned to 4 bytes, > frameHeaderLength bytes in length) > Isochronous Frame[linkHeader.ioFrameCount - 1] Data (frameLength bytes) > > The isochronous format for a request with type > kAppleUSBHostPacketFilterRequestSubmit is similar (no data following the > isochronous frame header): > Link Header > padding, if required to force 4-byte alignment > Isochronous Frame[0] Header (frameHeaderLength bytes in length) > … > padding, if required to force 4-byte alignment > Isochronous Frame[linkHeader.ioFrameCount - 1] Header (aligned to 4 bytes, > frameHeaderLength bytes in length) So, for a "submit" request, the frameStatus fields are presumably not meaningful, as they reports the status of the completed transfer, right? _______________________________________________ tcpdump-workers mailing list tcpdump-workers@lists.tcpdump.org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers