Index: uspace/drv/bus/usb/xhci/isoch.c
===================================================================
--- uspace/drv/bus/usb/xhci/isoch.c	(revision 4ed803f13d7ef1d64d640831064ef239e177589b)
+++ uspace/drv/bus/usb/xhci/isoch.c	(revision 69a93d02dbe4ec03c8333ae8f68c87ae37a224b7)
@@ -293,5 +293,10 @@
 	bool fed = false;
 
-	while (isoch->hw_enqueue != isoch->enqueue) {
+	/*
+	 * There might be a case, where no transfer can't be put on the ring immediately
+	 * (for endpoints with interval >= 500ms). In that case, the transfer buffers could fill
+	 * and the first condition wouldn't be enough to enter the loop.
+	 */
+	while (isoch->hw_enqueue != isoch->enqueue || isoch->transfers[isoch->hw_enqueue].state == ISOCH_FILLED) {
 		xhci_isoch_transfer_t * const it = &isoch->transfers[isoch->hw_enqueue];
 
