Index: uspace/drv/ohci/batch.c
===================================================================
--- uspace/drv/ohci/batch.c	(revision 545764bedd16b0688c8bc8937d5fc481b94f166b)
+++ uspace/drv/ohci/batch.c	(revision c9dc471a859453f9bcbae4424ecdfa5ea04a5ae9)
@@ -161,4 +161,9 @@
 			usb_log_debug("Batch(%p) found error TD(%d):%x.\n",
 			    instance, i, data->tds[i]->status);
+			/* Make sure TD queue is empty (one TD),
+			 * ED should be marked as halted */
+			data->ed->td_tail =
+			    (data->ed->td_head & ED_TDTAIL_PTR_MASK);
+			++i;
 			break;
 		}
@@ -169,4 +174,9 @@
 	assert(hcd_ep);
 	hcd_ep->td = data->tds[i];
+	/* Clear possible ED HALT */
+	data->ed->td_head &= ~ED_TDHEAD_HALTED_FLAG;
+	uint32_t pa = addr_to_phys(hcd_ep->td);
+	assert(pa == (data->ed->td_head & ED_TDHEAD_PTR_MASK));
+	assert(pa == (data->ed->td_tail & ED_TDTAIL_PTR_MASK));
 
 	return true;
