Index: uspace/drv/uhci/uhci_struct/transfer_descriptor.c
===================================================================
--- uspace/drv/uhci/uhci_struct/transfer_descriptor.c	(revision 24b07ac4799a93f35e60f750e31493e3e286be86)
+++ uspace/drv/uhci/uhci_struct/transfer_descriptor.c	(revision b3258ad4b0b986a4255151023509fd72b2892a84)
@@ -41,6 +41,9 @@
 	uhci_print_verbose("Creating status field: %x.\n", instance->status);
 
+	uint32_t maxlen_field = (size == 0) ? 0x7FF : ((uint32_t) size - 1);
+	maxlen_field = (maxlen_field & TD_DEVICE_MAXLEN_MASK)
+	    << TD_DEVICE_MAXLEN_POS;
 	instance->device = 0
-		| (((size - 1) & TD_DEVICE_MAXLEN_MASK) << TD_DEVICE_MAXLEN_POS)
+		| (maxlen_field)
 		| ((target.address & TD_DEVICE_ADDRESS_MASK) << TD_DEVICE_ADDRESS_POS)
 		| ((target.endpoint & TD_DEVICE_ENDPOINT_MASK) << TD_DEVICE_ENDPOINT_POS)
