Skip to content

Commit 448b6eb

Browse files
author
Sarah Sharp
committed
USB: Make sure to fetch the BOS desc for roothubs.
The BOS descriptor is normally fetched and stored in the usb_device->bos during enumeration. USB 3.0 roothubs don't undergo enumeration, but we need them to have a BOS descriptor, since each xHCI host has a different U1 and U2 exit latency. Make sure to fetch the BOS descriptor for USB 3.0 roothubs. It will be freed when the roothub usb_device is released. Signed-off-by: Sarah Sharp <[email protected]> Cc: Andiry Xu <[email protected]>
1 parent 797b0ca commit 448b6eb

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

drivers/usb/core/hcd.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,15 @@ static int register_root_hub(struct usb_hcd *hcd)
997997
dev_name(&usb_dev->dev), retval);
998998
return (retval < 0) ? retval : -EMSGSIZE;
999999
}
1000+
if (usb_dev->speed == USB_SPEED_SUPER) {
1001+
retval = usb_get_bos_descriptor(usb_dev);
1002+
if (retval < 0) {
1003+
mutex_unlock(&usb_bus_list_lock);
1004+
dev_dbg(parent_dev, "can't read %s bos descriptor %d\n",
1005+
dev_name(&usb_dev->dev), retval);
1006+
return retval;
1007+
}
1008+
}
10001009

10011010
retval = usb_new_device (usb_dev);
10021011
if (retval) {

0 commit comments

Comments
 (0)