Index: uspace/lib/usbhost/src/batch.c
===================================================================
--- uspace/lib/usbhost/src/batch.c	(revision 70fb8229850edcd3f6f47d4e82abe94c0a27f851)
+++ uspace/lib/usbhost/src/batch.c	(revision f18d82f058cb6087d2a2dfe4118693b064b90147)
@@ -84,9 +84,21 @@
  *
  */
-void usb_transfer_batch_finish(usb_transfer_batch_t *instance)
+void usb_transfer_batch_finish(
+    usb_transfer_batch_t *instance, const void *data, size_t size)
 {
 	assert(instance);
-	if (instance->next_step)
-		instance->next_step(instance);
+	assert(instance->ep);
+	/* we care about the data and there are some to copy */
+        if (instance->ep->direction != USB_DIRECTION_OUT
+	    && data) {
+		const size_t min_size =
+		    size < instance->buffer_size ? size : instance->buffer_size;
+                memcpy(instance->buffer, data, min_size);
+        }
+        if (instance->callback_out)
+                usb_transfer_batch_call_out(instance);
+        if (instance->callback_in)
+                usb_transfer_batch_call_in(instance);
+
 }
 /*----------------------------------------------------------------------------*/
