summaryrefslogtreecommitdiffstats
path: root/src/drivers/usb/usbhub.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/usb/usbhub.c')
-rw-r--r--src/drivers/usb/usbhub.c10
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;