All of lore.kernel.org
 help / color / mirror / Atom feed
* [REGRESSION] usb: core: interrupt-IN wBytesPerInterval fixup (727d045d064b) breaks RTL8153 in Lenovo dock
@ 2026-06-16  9:49 Amin Vakil
  2026-06-16 10:28 ` Thorsten Leemhuis
  0 siblings, 1 reply; 7+ messages in thread
From: Amin Vakil @ 2026-06-16  9:49 UTC (permalink / raw)
  To: linux-usb
  Cc: Michal Pecio, Greg Kroah-Hartman, Alan Stern, Tao Xue,
	regressions


[-- Attachment #1.1.1: Type: text/plain, Size: 3080 bytes --]

Hello everyone,

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

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

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 2493 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 665 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-06-16 21:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-16  9:49 [REGRESSION] usb: core: interrupt-IN wBytesPerInterval fixup (727d045d064b) breaks RTL8153 in Lenovo dock Amin Vakil
2026-06-16 10:28 ` Thorsten Leemhuis
2026-06-16 11:51   ` Amin Vakil
2026-06-16 14:08     ` Amin Vakil
2026-06-16 16:36       ` Michal Pecio
2026-06-16 16:52         ` Amin Vakil
2026-06-16 21:20           ` Michal Pecio

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.