/* Link a period-1 interrupt or async QH into the schedule at the correct spot in the async skeleton's list, and update the FSBR link  */
static void link_async(struct uhci_hcd *uhci, struct uhci_qh *qh)
/* Link a period-1 interrupt or async QH into the schedule at the correct spot in the async skeleton's list, and update the FSBR link  */
static void link_async(struct uhci_hcd *uhci, struct uhci_qh *qh)
{
	struct uhci_qh *pqh;
	__le32 link_to_new_qh;
	list_for_each_entry_reverse(pqh, &uhci->skel_async_qh->node, node) {
		if (pqh->skel <= qh->skel)
			break;
	}
	list_add(&qh->node, &pqh->node);
	qh->link = pqh->link;
	wmb();
	link_to_new_qh = LINK_TO_QH(qh);
	pqh->link = link_to_new_qh;
	if (pqh->skel < SKEL_FSBR && qh->skel >= SKEL_FSBR)
		uhci->skel_term_qh->link = link_to_new_qh;
}