[PATCH v2 1/3] usb: core: Fix root hub descriptor wBytesPerInterval

From: Michal Pecio

Date: Mon May 04 2026 - 05:14:08 EST


Per USB3 9.6.7, it's "the total number of bytes this endpoint will
transfer every service interval". There seems to be no good reason
to have wBytesPerInterval < wMaxPacketSize - either one is too low
or the other too high. Here, wBytesPerInterval is too low for hubs
with more than 15 ports and xHCI spec allows such root hubs.

This is inconsequential for emulated root hubs, but we may want to
override and log suspiciously low wBytesPerInterval in descriptors,
so fix this to prevent nuisance warnings.

Signed-off-by: Michal Pecio <michal.pecio@xxxxxxxxx>
---

v2: same as v1

drivers/usb/core/hcd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 89221f1ce769..fc8130f94ca5 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -339,7 +339,8 @@ static const u8 ss_rh_config_descriptor[] = {
/* Companion */
0x00, /* __u8 ss_bMaxBurst; allows 1 TX between ACKs */
0x00, /* __u8 ss_bmAttributes; 1 packet per service interval */
- 0x02, 0x00 /* __le16 ss_wBytesPerInterval; 15 bits for max 15 ports */
+ /* __le16 ss_wBytesPerInterval; same as wMaxPacketSize */
+ (USB_MAXCHILDREN + 1 + 7) / 8, 0x00,
};

/* authorized_default behaviour:
--
2.48.1