Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 6ce42e857a2a753d985fc766bbc215a49cc34f89)
+++ uspace/drv/uhci-hcd/iface.c	(revision 5876d36dd0e9c757ce7fe9ac68bc8c368d9d6e68)
@@ -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));
