Index: uspace/drv/uhci-hcd/hc.c
===================================================================
--- uspace/drv/uhci-hcd/hc.c	(revision 63dabb64cb1bfc0544d962fae8a18f957494705c)
+++ uspace/drv/uhci-hcd/hc.c	(revision 6536947309f73d43adc981238510f94ef91767e5)
@@ -337,7 +337,10 @@
 	if (batch->transfer_type == USB_TRANSFER_INTERRUPT ||
 	    batch->transfer_type == USB_TRANSFER_ISOCHRONOUS) {
+		size_t bw = bandwidth_count_usb11(batch->speed,
+		    batch->transfer_type, batch->buffer_size,
+		    batch->max_packet_size);
 		int ret =
 		    bandwidth_use(&instance->bandwidth, batch->target.address,
-		    batch->target.endpoint, batch->direction);
+		    batch->target.endpoint, batch->direction, bw);
 		if (ret != EOK) {
 			usb_log_warning("Failed(%d) to use reserved bw: %s.\n",
Index: uspace/lib/usb/include/usb/host/bandwidth.h
===================================================================
--- uspace/lib/usb/include/usb/host/bandwidth.h	(revision 63dabb64cb1bfc0544d962fae8a18f957494705c)
+++ uspace/lib/usb/include/usb/host/bandwidth.h	(revision 6536947309f73d43adc981238510f94ef91767e5)
@@ -71,5 +71,5 @@
 
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_direction_t direction);
+    usb_endpoint_t endpoint, usb_direction_t direction, size_t bw);
 
 int bandwidth_free(bandwidth_t *instance, usb_address_t address,
Index: uspace/lib/usb/src/host/bandwidth.c
===================================================================
--- uspace/lib/usb/src/host/bandwidth.c	(revision 63dabb64cb1bfc0544d962fae8a18f957494705c)
+++ uspace/lib/usb/src/host/bandwidth.c	(revision 6536947309f73d43adc981238510f94ef91767e5)
@@ -221,5 +221,5 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_direction_t direction)
+    usb_endpoint_t endpoint, usb_direction_t direction, size_t bw)
 {
 	assert(instance);
@@ -237,8 +237,12 @@
 		    hash_table_get_instance(item, transfer_status_t, link);
 		assert(status);
-		if (status->used) {
-			ret = EINPROGRESS;
+		if (status->required >= bw) {
+			if (status->used) {
+				ret = EINPROGRESS;
+			}
+			status->used = true;
+		} else {
+			ret = ENOSPC;
 		}
-		status->used = true;
 	} else {
 		ret = EINVAL;
