Index: uspace/drv/uhci-hcd/hc.c
===================================================================
--- uspace/drv/uhci-hcd/hc.c	(revision 6ce42e857a2a753d985fc766bbc215a49cc34f89)
+++ uspace/drv/uhci-hcd/hc.c	(revision 391d55ba848776b9f91459d71f99c2e0ed1aca9d)
@@ -66,7 +66,8 @@
 static int hc_interrupt_emulator(void *arg);
 static int hc_debug_checker(void *arg);
-
+#if 0
 static bool usb_is_allowed(
     bool low_speed, usb_transfer_type_t transfer, size_t size);
+#endif
 /*----------------------------------------------------------------------------*/
 /** Initialize UHCI hcd driver structure
@@ -327,30 +328,4 @@
 	assert(instance);
 	assert(batch);
-	const int low_speed = (batch->speed == USB_SPEED_LOW);
-	if (!usb_is_allowed(
-	    low_speed, batch->transfer_type, batch->max_packet_size)) {
-		usb_log_error("Invalid USB transfer specified %s %d %zu.\n",
-		    usb_str_speed(batch->speed), batch->transfer_type,
-		    batch->max_packet_size);
-		return ENOTSUP;
-	}
-	/* Check available bandwidth */
-/*
-	if (batch->transfer_type == USB_TRANSFER_INTERRUPT ||
-	    batch->transfer_type == USB_TRANSFER_ISOCHRONOUS) {
-		const 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, bw);
-		if (ret != EOK) {
-			usb_log_error("Failed(%d) to use reserved bw: %s.\n",
-			    ret, str_error(ret));
-			return ret;
-		}
-	}
-*/
 
 	transfer_list_t *list =
@@ -539,4 +514,5 @@
  * @return True if transaction is allowed by USB specs, false otherwise
  */
+#if 0
 bool usb_is_allowed(
     bool low_speed, usb_transfer_type_t transfer, size_t size)
@@ -556,4 +532,5 @@
 	return false;
 }
+#endif
 /**
  * @}
Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 6ce42e857a2a753d985fc766bbc215a49cc34f89)
+++ uspace/drv/uhci-hcd/iface.c	(revision 391d55ba848776b9f91459d71f99c2e0ed1aca9d)
@@ -194,9 +194,19 @@
 	    target.address, target.endpoint, size, max_packet_size);
 
+	size_t res_bw;
 	endpoint_t *ep = usb_endpoint_manager_get_ep_data(&hc->ep_manager,
-	    target.address, target.endpoint, USB_DIRECTION_OUT, NULL);
+	    target.address, target.endpoint, USB_DIRECTION_OUT, &res_bw);
 	if (ep == NULL) {
 		usb_log_error("Endpoint(%d:%d) not registered for INT OUT.\n",
 			target.address, target.endpoint);
+		return ENOENT;
+	}
+	const size_t bw = bandwidth_count_usb11(ep->speed, ep->transfer_type,
+	    size, ep->max_packet_size);
+	if (res_bw < bw)
+	{
+		usb_log_error("Endpoint(%d:%d) INT IN needs %zu bw "
+		    "but only %zu is reserved.\n",
+		    target.address, target.endpoint, bw, res_bw);
 		return ENOENT;
 	}
@@ -241,11 +251,22 @@
 	    target.address, target.endpoint, size, max_packet_size);
 
+	size_t res_bw;
 	endpoint_t *ep = usb_endpoint_manager_get_ep_data(&hc->ep_manager,
-	    target.address, target.endpoint, USB_DIRECTION_IN, NULL);
+	    target.address, target.endpoint, USB_DIRECTION_IN, &res_bw);
 	if (ep == NULL) {
 		usb_log_error("Endpoint(%d:%d) not registered for INT IN.\n",
-			target.address, target.endpoint);
+		    target.address, target.endpoint);
 		return ENOENT;
 	}
+	const size_t bw = bandwidth_count_usb11(ep->speed, ep->transfer_type,
+	    size, ep->max_packet_size);
+	if (res_bw < bw)
+	{
+		usb_log_error("Endpoint(%d:%d) INT IN needs %zu bw "
+		    "but only %zu bw is reserved.\n",
+		    target.address, target.endpoint, bw, res_bw);
+		return ENOENT;
+	}
+
 	assert(ep->speed ==
 	    usb_device_keeper_get_speed(&hc->manager, target.address));
