tcpdump mailing list archives

Re: DLT_ request


From: Guy Harris <guy () alum mit edu>
Date: Fri, 9 Dec 2016 17:40:38 -0800

On Dec 9, 2016, at 1:37 PM, Scott Deandrea <sdeandrea () apple com> wrote:

The link-layer header format is as follows:
struct
{
   // Control information
   uint16_t bcdVersion;        // version of this structure

What's the current version?  0, 1, or something else?

   uint8_t  headerLength;      // length of this structure

Presumably length in bytes.

   uint8_t  requestType;       // tAppleUSBHostPacketFilterRequestType

So what are the possible values for requestType?  (I don't see tAppleUSBHostPacketFilterRequestType anywhere in the 
public XNU source or any header from Xcode.)

   // Transfer information
   uint32_t ioLength;          // amount of data requested/transferred

Presumably length in bytes.

   uint32_t ioStatus;          // IOReturn
   uint32_t ioFrameCount;      // number of isoch frames following
   uint64_t ioID;              // unique id for this I/O

   // Device information
   uint32_t deviceLocation;    // locationID of the device
   uint8_t  deviceSpeed;       // tEndpointSpeed

Is this an enumerated value, a bits/second value, or something else?

   uint8_t  deviceAddress;     // tUSBHostDeviceAddress

So that's just a standard 7-bit USB device address, presumably, as per the USB 3.1 spec:

        A 7-bit value representing the address of a device on the USB. The device address is the default address (00H) 
when the USB device is first powered or the device is reset. Devices are assigned a unique device address by the USB 
system software.

with the 8th bit zero?

   uint8_t  endpointAddress;   // Address and Direction

So that's the endpoint in the lower 4 bits, and the direction somewhere in the upper 4 bits?  What are the 
representations for IN and OUT?

   uint8_t  endpointType;      // tEndpointType

So what are the values for bulk, control, interrupt, and isochronous?

   // Additional information

So the additional information's presence would be indicated by a greater headerLength and possibly also by a different 
bcdVersion value?

} __attribute__((packed, aligned(sizeof(uint32_t))));

The packet payload is the raw USB data that was sent/received for I/O request.

So that would be the "data field" from section 8.3.4 "Data Field" from the USB 2.0 spec and the DWORDs following the 
16-byte header from the USB 3.1 spec?
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: