diff options
author | Michael Brown <mcb30@ipxe.org> | 2020-07-02 16:48:17 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2020-07-02 16:52:00 +0100 |
commit | 761ed4365a64ac34443a3de4c0e81e4b9491b33e (patch) | |
tree | bb923eaf0c1afde9adb5b328473a028521391963 /src/drivers/usb | |
parent | 8ff5babb47ff593088583c4e0872785ebcc87ade (diff) | |
download | ipxe-761ed4365a64ac34443a3de4c0e81e4b9491b33e.tar.gz |
[usb] Do not attempt to disable USB3 hub ports
The USB3 specification removes PORT_ENABLE from the list of features
that may be cleared via a CLEAR_FEATURE request. Experimentation
shows that omitting the attempt to clear PORT_ENABLE seems to result
in the correct hotplug behaviour.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/usb')
-rw-r--r-- | src/drivers/usb/usbhub.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/drivers/usb/usbhub.c b/src/drivers/usb/usbhub.c index cd7815834..28d6cb33d 100644 --- a/src/drivers/usb/usbhub.c +++ b/src/drivers/usb/usbhub.c @@ -247,8 +247,10 @@ static int hub_disable ( struct usb_hub *hub, struct usb_port *port ) { int rc; /* Disable port */ - if ( ( rc = usb_hub_clear_port_feature ( usb, port->address, - USB_HUB_PORT_ENABLE, 0 ) )!=0){ + if ( ( hub->protocol < USB_PROTO_3_0 ) && + ( ( rc = usb_hub_clear_port_feature ( usb, port->address, + USB_HUB_PORT_ENABLE, + 0 ) ) != 0 ) ) { DBGC ( hubdev, "HUB %s port %d could not disable: %s\n", hubdev->name, port->address, strerror ( rc ) ); return rc; |