Index: uspace/drv/uhci-hcd/batch.c
===================================================================
--- uspace/drv/uhci-hcd/batch.c	(revision 67b6fc5853a7bb19dd26cf0e0035db90c42d1bfe)
+++ uspace/drv/uhci-hcd/batch.c	(revision 600733e8fb2cdfcc6a02531fefc6ec5f272636db)
@@ -142,11 +142,14 @@
 	    instance, instance->packets);
 	/* This is just an ugly trick to support the old API */
-	instance->transfered_size = -instance->setup_size;
+	instance->transfered_size = 0;
 	size_t i = 0;
 	for (;i < instance->packets; ++i) {
-		if (transfer_descriptor_is_active(&instance->tds[i]))
+		if (transfer_descriptor_is_active(&instance->tds[i])) {
 			return false;
+		}
 		instance->error = transfer_descriptor_status(&instance->tds[i]);
 		if (instance->error != EOK) {
+			if (i > 0)
+				instance->transfered_size -= instance->setup_size;
 			return true;
 		}
@@ -154,4 +157,5 @@
 		    transfer_descriptor_actual_size(&instance->tds[i]);
 	}
+	instance->transfered_size -= instance->setup_size;
 	return true;
 }
