/* When we and the controller are through with a QH, it becomes IDLE. This happens when a QH has been off the schedule (on the unlinking list) for more than one frame, or when an error occurs while adding the first URB onto a new QH.  */
static void uhci_make_qh_idle(struct uhci_hcd *uhci, struct uhci_qh *qh)
/* When we and the controller are through with a QH, it becomes IDLE. This happens when a QH has been off the schedule (on the unlinking list) for more than one frame, or when an error occurs while adding the first URB onto a new QH.  */
static void uhci_make_qh_idle(struct uhci_hcd *uhci, struct uhci_qh *qh)
{
	WARN_ON(qh->state == QH_STATE_ACTIVE);
	if (qh == uhci->next_qh)
		uhci->next_qh = list_entry(qh->node.next, struct uhci_qh,
				node);
	list_move(&qh->node, &uhci->idle_qh_list);
	qh->state = QH_STATE_IDLE;
	if (qh->post_td) {
		uhci_free_td(uhci, qh->post_td);
		qh->post_td = NULL;
	}
	if (uhci->num_waiting)
		wake_up_all(&uhci->waitqh);
}