Index: uspace/drv/uhci-hcd/transfer_list.c
===================================================================
--- uspace/drv/uhci-hcd/transfer_list.c	(revision ebf59e4db7a0f471f276727de8f07371f51b5afd)
+++ uspace/drv/uhci-hcd/transfer_list.c	(revision 13b9cb5e3bb9b10afeeaffc39c2633bd8ae64bc9)
@@ -79,7 +79,6 @@
 	if (!instance->queue_head)
 		return;
-	/* Set both next and element to point to the same QH */
+	/* Set both queue_head.next to point to the follower */
 	qh_set_next_qh(instance->queue_head, next->queue_head_pa);
-	qh_set_element_qh(instance->queue_head, next->queue_head_pa);
 }
 /*----------------------------------------------------------------------------*/
@@ -98,25 +97,24 @@
 	usb_log_debug2("Queue %s: Adding batch(%p).\n", instance->name, batch);
 
-	const uint32_t pa = addr_to_phys(batch->qh);
-	assert((pa & LINK_POINTER_ADDRESS_MASK) == pa);
-
-	/* New batch will be added to the end of the current list
-	 * so set the link accordingly */
-	qh_set_next_qh(batch->qh, instance->queue_head->next);
 
 	fibril_mutex_lock(&instance->guard);
 
+	qh_t *last_qh = NULL;
 	/* Add to the hardware queue. */
 	if (list_empty(&instance->batch_list)) {
 		/* There is nothing scheduled */
-		qh_t *qh = instance->queue_head;
-		assert(qh->element == qh->next);
-		qh_set_element_qh(qh, pa);
+		last_qh = instance->queue_head;
 	} else {
 		/* There is something scheduled */
 		batch_t *last = list_get_instance(
 		    instance->batch_list.prev, batch_t, link);
-		qh_set_next_qh(last->qh, pa);
-	}
+		last_qh = last->qh;
+	}
+	const uint32_t pa = addr_to_phys(batch->qh);
+	assert((pa & LINK_POINTER_ADDRESS_MASK) == pa);
+
+	batch->qh->next = last_qh->next;
+	qh_set_next_qh(last_qh, pa);
+
 	/* Add to the driver list */
 	list_append(&batch->link, &instance->batch_list);
@@ -174,5 +172,5 @@
 {
 	fibril_mutex_lock(&instance->guard);
-	while (list_empty(&instance->batch_list)) {
+	while (!list_empty(&instance->batch_list)) {
 		link_t *current = instance->batch_list.next;
 		batch_t *batch = list_get_instance(current, batch_t, link);
@@ -204,10 +202,10 @@
 	if (batch->link.prev == &instance->batch_list) {
 		/* I'm the first one here */
-		qh_set_element_qh(instance->queue_head, batch->qh->next);
+		instance->queue_head->next = batch->qh->next;
 		pos = "FIRST";
 	} else {
 		batch_t *prev =
 		    list_get_instance(batch->link.prev, batch_t, link);
-		qh_set_next_qh(prev->qh, batch->qh->next);
+		prev->qh->next = batch->qh->next;
 		pos = "NOT FIRST";
 	}
Index: uspace/drv/uhci-hcd/uhci_hc.c
===================================================================
--- uspace/drv/uhci-hcd/uhci_hc.c	(revision ebf59e4db7a0f471f276727de8f07371f51b5afd)
+++ uspace/drv/uhci-hcd/uhci_hc.c	(revision 13b9cb5e3bb9b10afeeaffc39c2633bd8ae64bc9)
@@ -123,6 +123,7 @@
 	}
 
-	instance->debug_checker = fibril_create(uhci_hc_debug_checker, instance);
-	fibril_add_ready(instance->debug_checker);
+	instance->debug_checker =
+	    fibril_create(uhci_hc_debug_checker, instance);
+//	fibril_add_ready(instance->debug_checker);
 
 	usb_log_info("Started UHCI driver.\n");
