r8152: RX stops until rebind after -EPROTO on the bulk-in endpoint
From: Dane Linssen
Date: Sun Sep 27 2026 - 18:09:18 EST
Hi,
An RTL8156B on r8152 stops receiving and stays that way until the
driver is unbound and rebound. TX keeps working and nothing is logged.
This has happened 5 times since 2026-09-23 on one host. The two on
2026-09-27 were captured; both followed several minutes of about
10k rx / 6k tx packets/s.
Kernel: 7.2.6-1-default (openSUSE MicroOS)
Device: 0bda:8156, bcdDevice 31.04, fw rtl8156b-2 v3 10/20/23
Host: HP ENVY 13-ah0xxx (i5-8250U), xHCI 8086:9d2f, 5 Gbps
Link: 1000baseT/Full, EEE inactive, pause off
During the stall at 18:08, read twice 5 s apart:
ethtool -S rx_packets 117909777 -> 117909777
rx_missed 9214 -> 9504
tx_packets 111602790 -> 111603644
host rx_packets 117835758 -> 117835758
xhci debugfs devices/02/ep-context, bulk-in endpoint:
State running mult 1 max P. Streams 0 interval 125 us
max ESIT payload 0 CErr 3 Type Bulk IN burst 3 maxp 1024
deq 000000010bd3f960 avg trb len 0, virt_state:0x40
virt_state reads 0x0 when healthy, both here and on a second host
with the same adapter. The stall at 18:59 looked the same.
0x40 is EP_HARD_CLEAR_TOGGLE. xhci sets it when it hard-resets a
halted endpoint, which includes a bulk transaction error that
outlasted MAX_SOFT_RETRY, and clears it in xhci_endpoint_reset() once
the class driver calls usb_clear_halt(). r8152 never calls
usb_clear_halt(). On -EPROTO, read_bulk_callback() re-queues the
buffer without logging, so as far as I can tell the endpoint stays
out of sync until a rebind resets it. No "Rx status" warning was
ever logged, so it wasn't a stall (-EPIPE).
usbnet doesn't clear the halt on -EPROTO either, so I'm not sure
whether the fix belongs in r8152 or on the xhci side. It looks close
to what Mathias's RFC "fix xhci endpoint restart at EPROTO" (March
2026) discusses [1].
The host now keeps an xhci-hcd trace instance with only the reset,
stop, set-dequeue and configure events, plus dynamic debug for the
"Transfer error" and "-reset ep" messages. I'll send those from the
next stall, or anything else that would help.
[1] https://lore.kernel.org/linux-usb/?q=s%3A%22fix+xhci+endpoint+restart+at+EPROTO%22
Thanks,
Dane Linssen