diff options
Diffstat (limited to 'src/drivers/usb/usbhub.c')
| -rw-r--r-- | src/drivers/usb/usbhub.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/drivers/usb/usbhub.c b/src/drivers/usb/usbhub.c index 47914bcdb..28d6cb33d 100644 --- a/src/drivers/usb/usbhub.c +++ b/src/drivers/usb/usbhub.c @@ -110,6 +110,10 @@ static void hub_complete ( struct usb_endpoint *ep, } done: + + /* Recycle I/O buffer */ + usb_recycle ( &hubdev->intr, iobuf ); + /* Start refill process */ process_add ( &hubdev->refill ); } @@ -243,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; |
