[tcpdump-workers] Link-Layer Header Type request: USB 2.0

Tomasz Moń desowin at gmail.com
Tue Jul 23 00:44:04 EDT 2019

On Tue, Jul 23, 2019 at 3:59 AM Guy Harris <gharris at sonic.net> wrote:
> The issue isn't the hardware signals.

The link layer protocols are so different that in order for USB 3.0
SuperSpeed devices to be compatible with USB 2.0 hosts, such device
have to implement *both* USB 3.0 link layer and USB 2.0 link layer.
USB 3.0 is dual-simplex while USB 2.0 is half-duplex. There are
different rules related to the physical layer and thus the link layer
is adjusted to match.

Only the higher level layer is compatible. That is, once you
reassemble the link layer packets into transfers (this is what
Wireshark's packet-usb.c dissects).

>         2) without a per-packet indication of whether a packet are 1.x/2.x or 3.x, there would be no way to dissect packets if there was a mixture of 1.x/2.x and 3.x packets.

This is the case. At least without heuristic that tries to guess the
packet type based on the data. Also for USB 3.0 you'd need indication
on which (USB 3.0) channel (TX or RX) the packet was transmitted. If
the packet was transmitted on USB 2.0 D+/D- lines by USB 3.0 device
then the packet will have USB 2.0 format and otherwise follow USB 2.0
rules. All USB 3.0 signalling goes on dedicated lines on which the USB
3.0 rules apply.

More information about the tcpdump-workers mailing list