Re: [REGRESSION] usb: core: interrupt-IN wBytesPerInterval fixup (727d045d064b) breaks RTL8153 in Lenovo dock
Amin Vakil <[email protected]>
| Newsgroups | dev.linux.lists.regressions,org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <[email protected]> |
On 6/16/26 3:21 PM, Amin Vakil wrote: > On 6/16/26 1:58 PM, Thorsten Leemhuis wrote: >> On 6/16/26 11:49, Amin Vakil wrote: >>> >>> The following change, backported to the 7.0.x stable series, introduces >>> a regression that disables the wired ethernet of a Lenovo USB-C/ >>> Thunderbolt dock: >>> >>> commit 727d045d064b7c9a24db3bce9c0485a382cb768b >>> usb: core: Fix up Interrupt IN endpoints with bogus wBytesPerInterval >> >> Is 7.1 affected as well? Ideally try using a non-hardened kernel to keep >> the downstream patches out of the way. >> >> Ciao, Thorsten >> > > linux 7.1 is not available on official Arch Linux repositories, give me > a couple of hours to compile and test, I'll use non-hardened kernel as > well, I'll propose a patch ensuring issue has been fixed as well, if > that's OK. > > Best Regards, > Amin Vakil > I can confirm 7.1 mainline (installed from AUR) still has the problem: dmesg (kernel 7.1.0) usb 2-1.1: New USB device found, idVendor=17ef, idProduct=721e, bcdDevice=31.03 usbcore: registered new device driver r8152-cfgselector r8152-cfgselector 2-1.1: reset SuperSpeed USB device number 3 using xhci_hcd r8152 2-1.1:1.0 (unnamed net_device) (uninitialized): Invalid header when reading pass-thru MAC addr usbcore: registered new interface driver r8152 r8152 2-1.1:1.0 enp0s13f0u1u1: renamed from eth0 r8152-cfgselector 2-1.1: USB disconnect, device number 3 >>> Hardware: Lenovo dock built-in Realtek RTL8153, enumerating as USB ID >>> 17ef:721e (Lenovo rebrand of 0bda:8153), driven by r8152 through r8152- >>> cfgselector. Host is an Intel laptop with xhci_hcd. >>> >>> Symptom: on the patched kernel the NIC enumerates, r8152 binds and the >>> netdev is created, then about one second later the device is USB- >>> disconnected by r8152-cfgselector and never returns. No ethernet >>> interface remains. USB, HDMI and the rest of the dock keep working, and >>> plugging the cable straight into the laptop built-in NIC is unaffected. >>> >>> Affected vs working (Arch linux-hardened): 7.0.11.hardened2 works, >>> 7.0.12.hardened1 is broken. This commit is the only RTL8153/USB-core >>> change in that delta, and it activates a code path that did not run >>> before on this device (note the new wBytesPerInterval message in the >>> dmesg below, absent on 7.0.11). >>> >>> Why this commit: configuration 2 (CDC) of the device has an interrupt IN >>> endpoint (EP 0x83) with wMaxPacketSize=16 and wBytesPerInterval=8. The >>> new condition (wBytesPerInterval < wMaxPacketSize on an interrupt IN >>> endpoint) now fires and rewrites wBytesPerInterval from 8 to 16. On this >>> dock plus xHCI host that rewrite appears to make the device fall off the >>> bus right after the cfgselector reset. >>> >>> dmesg (broken kernel 7.0.12.hardened1): >>> usb 2-1.1: New USB device found, idVendor=17ef, idProduct=721e, >>> bcdDevice=31.03 >>> usb 2-1.1: Int endpoint with wBytesPerInterval of 8 in config 2 >>> interface 0 altsetting 0 ep 131: setting to 16 >>> r8152-cfgselector 2-1.1: reset SuperSpeed USB device number 3 using >>> xhci_hcd >>> r8152 2-1.1:1.0 (unnamed net_device) (uninitialized): Invalid header >>> when reading pass-thru MAC addr >>> r8152 2-1.1:1.0 enp0s13f0u1u1: renamed from eth0 >>> r8152-cfgselector 2-1.1: USB disconnect, device number 3 >>> >>> Relevant descriptors (lsusb -v -d 17ef:721e, captured on the working >>> 7.0.11 kernel): configuration 2 (CDC), endpoint 0x83 IN Interrupt has >>> wMaxPacketSize=0x0010 (16 bytes), bInterval=8, bMaxBurst=0, >>> wBytesPerInterval=8 (rewritten to 16 by the new fixup). Configuration 1, >>> the vendor config that r8152 actually uses, has its interrupt endpoint >>> 0x83 with wMaxPacketSize=2 and wBytesPerInterval=2, which is not >>> affected. >>> >>> Reverting this commit (or just the new interrupt IN branch in drivers/ >>> usb/core/config.c) should restore the device. I am happy to build and >>> confirm a revert, and to test any proposed fix. A quirk to skip the >>> interrupt IN fixup for the RTL8153 CDC configuration, or otherwise >>> narrowing the new condition, seems like the right direction. >>> >>> I can provide the full dmesg and full lsusb -v output on request. >>> >>> #regzbot introduced: 727d045d064b7c9a24db3bce9c0485a382cb768b >>> >>> Best Regards, >>> Amin Vakil >> >
OpenPGP_0x1EFC1864E9D9E56B.asc
(application/pgp-keys, 2.4 KB)
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 +78sXChAfE9n44i0gJHzV8BhCsQG4+k= =GHsk -----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc
(application/pgp-signature, 665 B)
-----BEGIN PGP SIGNATURE----- wsD5BAABCAAjFiEEhGrABIXlXG/0vJ9THvwYZOnZ5WsFAmoxWOAFAwAAAAAACgkQHvwYZOnZ5Wtj dgwAskVwnsLYI6uaVf1jk9xXqTlzSF80OJDxe93V4hRyqqPvr7hl2BieBdkxIlE4xQZ7quwMUWfY GMnT/eDenrojcNlKVbM4wPqMQe5mmBHy48HYzO3zus9Ke+daNti1zPmAVR1jtbWkzY6/iFLFLoOY zIT9i/yb3H7vHQ92T0IzZYzEQqwTw2oe+vuZ6YcqUsxTO3r/ETYtcwh/l5jnktuFjIhpJJq+6clZ BL5+cs9Z6Sf+6ouJ+ykemNk/U13PmzymHcJgQQrrp9FIgB+CeJv3djZ5/QOk2FRbK2hHOb9hGO7v AHOfCkgjcqktVDWraCm80g6G21ikNPFEYx/O+RKalWoQrlthDJa4uw1V64PDeQ9dBtnEW7CAY22o MQcumnCgHLDmtM8cbybLNRvEnaa+dx7kaIEqUiq3UBI9GFYWMTxU7FyWpHf1hd07NB+gj8/hqs5z 2K4cgVcOyUq48aIFgPdRCJglrQdjKdcTAUdrQ7/DZbYvixgZe3uzvilgnbVf =QKgA -----END PGP SIGNATURE-----