Re: [PATCH 1/2] usb: core: hub: recognise two-lane SuperSpeed sublinks as Gen 1x2

From: Thinh Nguyen

Date: Wed Sep 23 2026 - 22:08:09 EST


On Sun, Sep 20, 2026, Kean Ren wrote:
> get_port_ssp_rate() rejects every matching sublink speed attribute whose
> link protocol (LP) is not SuperSpeedPlus by jumping to the "unknown"
> exit before it looks at the number of active lanes.
>
> USB 3.2 Gen 1x2 runs two SuperSpeed (Gen 1) lanes, so the matching

Gen 1x2 is SuperSpeed Plus and should use LP = SSP

> sublink entry advertises LP = SuperSpeed while two lanes are in use.
> The current code therefore returns USB_SSP_GEN_UNKNOWN for such a link
> and the USB core falls back to USB_SPEED_SUPER, reporting 5000 Mbps.
>
> Handle the two-lane cases before rejecting non-SuperSpeedPlus entries:
>
> >= 10 Gbps per lane and 2 lanes -> USB_SSP_GEN_2x2
> >= 5 Gbps per lane and 2 lanes -> USB_SSP_GEN_1x2
>
> so that a genuine Gen 1x2 link is reported as 10000 Mbps instead of
> 5000 Mbps.
>
> Signed-off-by: Kean Ren <rh_king@xxxxxxx>


Gen 1x2 is a SuperSpeed Plus mode and should advertise LP =
USB_SSP_SUBLINK_SPEED_LP_SSP. A controller reporting Gen 1x2 with LP =
SuperSpeed is violating the expected encoding.

This should be handled as a controller-specific quirk and not by
relaxing the generic USB core parsing.

BR,
Thinh