Index: uspace/lib/usb/include/usb/host/bandwidth.h
===================================================================
--- uspace/lib/usb/include/usb/host/bandwidth.h	(revision da9ebcaebe3f2f652690f890a79e9d9f49d48083)
+++ uspace/lib/usb/include/usb/host/bandwidth.h	(revision 857edacfd2083028539297de5770b5f4a4a4dd36)
@@ -55,18 +55,16 @@
 
 int bandwidth_reserve(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction, usb_speed_t speed,
+    usb_transfer_type_t transfer_type, size_t max_packet_size, size_t size,
+    unsigned interval);
 
 int bandwidth_release(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 int bandwidth_free(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval);
+    usb_endpoint_t endpoint, usb_direction_t direction);
 
 #endif
Index: uspace/lib/usb/src/host/bandwidth.c
===================================================================
--- uspace/lib/usb/src/host/bandwidth.c	(revision da9ebcaebe3f2f652690f890a79e9d9f49d48083)
+++ uspace/lib/usb/src/host/bandwidth.c	(revision 857edacfd2083028539297de5770b5f4a4a4dd36)
@@ -34,7 +34,5 @@
 	usb_address_t address;
 	usb_endpoint_t endpoint;
-	usb_transfer_type_t transfer_type;
-	size_t max_packet_size;
-	size_t size;
+	usb_direction_t direction;
 } __attribute__((aligned (sizeof(unsigned long)))) transfer_t;
 /*----------------------------------------------------------------------------*/
@@ -43,4 +41,5 @@
 	link_t link;
 	bool used;
+	size_t required;
 } transfer_status_t;
 /*----------------------------------------------------------------------------*/
@@ -91,14 +90,13 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_reserve(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction, usb_speed_t speed,
+    usb_transfer_type_t transfer_type, size_t max_packet_size, size_t size,
+    unsigned interval)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -117,4 +115,5 @@
 
 	status->transfer = trans;
+	status->required = 0;
 	status->used = false;
 	link_initialize(&status->link);
@@ -128,14 +127,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_release(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -156,14 +152,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_use(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
@@ -187,14 +180,11 @@
 /*----------------------------------------------------------------------------*/
 int bandwidth_free(bandwidth_t *instance, usb_address_t address,
-    usb_endpoint_t endpoint, usb_transfer_type_t transfer_type,
-    size_t max_packet_size, size_t size, unsigned interval)
-{
-	assert(instance);
-	transfer_t trans = {
-		.address = address,
-		.endpoint = endpoint,
-		.transfer_type = transfer_type,
-		.max_packet_size = max_packet_size,
-		.size = size,
+    usb_endpoint_t endpoint, usb_direction_t direction)
+{
+	assert(instance);
+	transfer_t trans = {
+		.address = address,
+		.endpoint = endpoint,
+		.direction = direction,
 	};
 	fibril_mutex_lock(&instance->guard);
