The frameNumber is a USB spec defined value that correlates with the 
start-of-frame packets frame number as defined in section 8.4.3 Start-of-Frame 
Packets.

The ioTimestamp is in the same Mach Absolute Time.

Yes, the way you have described the padding is correct.

—scott


> On Jan 5, 2017, at 8:08 PM, Guy Harris <g...@alum.mit.edu> wrote:
> 
> 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
> 
> Is that a value specified by the USB standard or is it something specified by 
> the Darwin USB stack?
> 
>>   uint64_t ioTimestamp;  // Time in which the frame completed
> 
> "In which" sounds like a relative time; is it a relative time or an absolute 
> time?
> 
>> Therefore, the isochronous format for a request with type 
>> kAppleUSBHostPacketFilterRequestComplete is as follows:
>> Link Header
>> padding, if required to force 4-byte alignment
> 
> Presumably that padding will not be required with the current link header 
> format, as that header's length is a multiple of 4 bytes.  (If a future 
> version isn't a multiple of 4 bytes in length, it would be required.)
> 
>> 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 no padding after the last frame, as it wouldn't be necessary (there's 
> nothing to align on a 4-byte boundary).

_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to