Index: uspace/drv/bus/usb/ehci/endpoint_list.c
===================================================================
--- uspace/drv/bus/usb/ehci/endpoint_list.c	(revision 296fcce4d5fb9f9a742e7de86df6c87aa9202f74)
+++ uspace/drv/bus/usb/ehci/endpoint_list.c	(revision fdaaad00506b3884f8ea1a4ac9166ad350f5e92c)
@@ -68,4 +68,14 @@
 	fibril_mutex_initialize(&instance->guard);
 	return EOK;
+}
+
+void endpoint_list_chain(endpoint_list_t *instance, const endpoint_list_t *next)
+{
+	assert(instance);
+	assert(next);
+	assert(instance->list_head);
+	assert(next->list_head);
+
+	instance->list_head->horizontal = LINK_POINTER_QH(next->list_head_pa);
 }
 
Index: uspace/drv/bus/usb/ehci/endpoint_list.h
===================================================================
--- uspace/drv/bus/usb/ehci/endpoint_list.h	(revision 296fcce4d5fb9f9a742e7de86df6c87aa9202f74)
+++ uspace/drv/bus/usb/ehci/endpoint_list.h	(revision fdaaad00506b3884f8ea1a4ac9166ad350f5e92c)
@@ -73,4 +73,5 @@
 
 int endpoint_list_init(endpoint_list_t *instance, const char *name);
+void endpoint_list_chain(endpoint_list_t *instance, const endpoint_list_t *next);
 void endpoint_list_append_ep(endpoint_list_t *instance, ehci_endpoint_t *ep);
 void endpoint_list_remove_ep(endpoint_list_t *instance, ehci_endpoint_t *ep);
Index: uspace/drv/bus/usb/ehci/hc.c
===================================================================
--- uspace/drv/bus/usb/ehci/hc.c	(revision 296fcce4d5fb9f9a742e7de86df6c87aa9202f74)
+++ uspace/drv/bus/usb/ehci/hc.c	(revision fdaaad00506b3884f8ea1a4ac9166ad350f5e92c)
@@ -407,4 +407,6 @@
 		return ret;
 	}
+	/* Loop async list */
+	endpoint_list_chain(&instance->async_list, &instance->async_list);
 
 	/* Take 1024 periodic list heads, we ignore low mem options */
