Lines Matching refs:qh
249 struct uhci_qh *qh; in uhci_alloc_qh() local
251 qh = dma_pool_alloc(uhci->qh_pool, GFP_ATOMIC, &dma_handle); in uhci_alloc_qh()
252 if (!qh) in uhci_alloc_qh()
255 memset(qh, 0, sizeof(*qh)); in uhci_alloc_qh()
256 qh->dma_handle = dma_handle; in uhci_alloc_qh()
258 qh->element = UHCI_PTR_TERM(uhci); in uhci_alloc_qh()
259 qh->link = UHCI_PTR_TERM(uhci); in uhci_alloc_qh()
261 INIT_LIST_HEAD(&qh->queue); in uhci_alloc_qh()
262 INIT_LIST_HEAD(&qh->node); in uhci_alloc_qh()
265 qh->type = usb_endpoint_type(&hep->desc); in uhci_alloc_qh()
266 if (qh->type != USB_ENDPOINT_XFER_ISOC) { in uhci_alloc_qh()
267 qh->dummy_td = uhci_alloc_td(uhci); in uhci_alloc_qh()
268 if (!qh->dummy_td) { in uhci_alloc_qh()
269 dma_pool_free(uhci->qh_pool, qh, dma_handle); in uhci_alloc_qh()
273 qh->state = QH_STATE_IDLE; in uhci_alloc_qh()
274 qh->hep = hep; in uhci_alloc_qh()
275 qh->udev = udev; in uhci_alloc_qh()
276 hep->hcpriv = qh; in uhci_alloc_qh()
278 if (qh->type == USB_ENDPOINT_XFER_INT || in uhci_alloc_qh()
279 qh->type == USB_ENDPOINT_XFER_ISOC) in uhci_alloc_qh()
280 qh->load = usb_calc_bus_time(udev->speed, in uhci_alloc_qh()
282 qh->type == USB_ENDPOINT_XFER_ISOC, in uhci_alloc_qh()
287 qh->state = QH_STATE_ACTIVE; in uhci_alloc_qh()
288 qh->type = -1; in uhci_alloc_qh()
290 return qh; in uhci_alloc_qh()
293 static void uhci_free_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_free_qh() argument
295 WARN_ON(qh->state != QH_STATE_IDLE && qh->udev); in uhci_free_qh()
296 if (!list_empty(&qh->queue)) in uhci_free_qh()
297 dev_WARN(uhci_dev(uhci), "qh %p list not empty!\n", qh); in uhci_free_qh()
299 list_del(&qh->node); in uhci_free_qh()
300 if (qh->udev) { in uhci_free_qh()
301 qh->hep->hcpriv = NULL; in uhci_free_qh()
302 if (qh->dummy_td) in uhci_free_qh()
303 uhci_free_td(uhci, qh->dummy_td); in uhci_free_qh()
305 dma_pool_free(uhci->qh_pool, qh, qh->dma_handle); in uhci_free_qh()
315 static int uhci_cleanup_queue(struct uhci_hcd *uhci, struct uhci_qh *qh, in uhci_cleanup_queue() argument
326 if (qh->type == USB_ENDPOINT_XFER_ISOC) { in uhci_cleanup_queue()
328 qh->unlink_frame); in uhci_cleanup_queue()
335 if (qh->queue.next != &urbp->node) { in uhci_cleanup_queue()
351 if (qh_element(qh) == UHCI_PTR_TERM(uhci)) in uhci_cleanup_queue()
353 qh->element = UHCI_PTR_TERM(uhci); in uhci_cleanup_queue()
356 if (qh->type == USB_ENDPOINT_XFER_CONTROL) in uhci_cleanup_queue()
362 qh->needs_fixup = 1; in uhci_cleanup_queue()
363 qh->initial_toggle = uhci_toggle(td_token(uhci, td)); in uhci_cleanup_queue()
373 static void uhci_fixup_toggles(struct uhci_hcd *uhci, struct uhci_qh *qh, in uhci_fixup_toggles() argument
378 unsigned int toggle = qh->initial_toggle; in uhci_fixup_toggles()
384 urbp = list_entry(qh->queue.next, struct urb_priv, node); in uhci_fixup_toggles()
388 else if (qh_element(qh) != UHCI_PTR_TERM(uhci)) in uhci_fixup_toggles()
394 urbp = list_prepare_entry(urbp, &qh->queue, node); in uhci_fixup_toggles()
395 list_for_each_entry_continue(urbp, &qh->queue, node) { in uhci_fixup_toggles()
416 pipe = list_entry(qh->queue.next, struct urb_priv, node)->urb->pipe; in uhci_fixup_toggles()
417 usb_settoggle(qh->udev, usb_pipeendpoint(pipe), in uhci_fixup_toggles()
419 qh->needs_fixup = 0; in uhci_fixup_toggles()
425 static inline void link_iso(struct uhci_hcd *uhci, struct uhci_qh *qh) in link_iso() argument
427 list_add_tail(&qh->node, &uhci->skel_iso_qh->node); in link_iso()
436 static void link_interrupt(struct uhci_hcd *uhci, struct uhci_qh *qh) in link_interrupt() argument
440 list_add_tail(&qh->node, &uhci->skelqh[qh->skel]->node); in link_interrupt()
442 pqh = list_entry(qh->node.prev, struct uhci_qh, node); in link_interrupt()
443 qh->link = pqh->link; in link_interrupt()
445 pqh->link = LINK_TO_QH(uhci, qh); in link_interrupt()
452 static void link_async(struct uhci_hcd *uhci, struct uhci_qh *qh) in link_async() argument
461 if (pqh->skel <= qh->skel) in link_async()
464 list_add(&qh->node, &pqh->node); in link_async()
467 qh->link = pqh->link; in link_async()
469 link_to_new_qh = LINK_TO_QH(uhci, qh); in link_async()
474 if (pqh->skel < SKEL_FSBR && qh->skel >= SKEL_FSBR) in link_async()
481 static void uhci_activate_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_activate_qh() argument
483 WARN_ON(list_empty(&qh->queue)); in uhci_activate_qh()
487 if (qh_element(qh) == UHCI_PTR_TERM(uhci)) { in uhci_activate_qh()
488 struct urb_priv *urbp = list_entry(qh->queue.next, in uhci_activate_qh()
493 qh->element = LINK_TO_TD(uhci, td); in uhci_activate_qh()
497 qh->wait_expired = 0; in uhci_activate_qh()
498 qh->advance_jiffies = jiffies; in uhci_activate_qh()
500 if (qh->state == QH_STATE_ACTIVE) in uhci_activate_qh()
502 qh->state = QH_STATE_ACTIVE; in uhci_activate_qh()
506 if (qh == uhci->next_qh) in uhci_activate_qh()
507 uhci->next_qh = list_entry(qh->node.next, struct uhci_qh, in uhci_activate_qh()
509 list_del(&qh->node); in uhci_activate_qh()
511 if (qh->skel == SKEL_ISO) in uhci_activate_qh()
512 link_iso(uhci, qh); in uhci_activate_qh()
513 else if (qh->skel < SKEL_ASYNC) in uhci_activate_qh()
514 link_interrupt(uhci, qh); in uhci_activate_qh()
516 link_async(uhci, qh); in uhci_activate_qh()
522 static void unlink_interrupt(struct uhci_hcd *uhci, struct uhci_qh *qh) in unlink_interrupt() argument
526 pqh = list_entry(qh->node.prev, struct uhci_qh, node); in unlink_interrupt()
527 pqh->link = qh->link; in unlink_interrupt()
534 static void unlink_async(struct uhci_hcd *uhci, struct uhci_qh *qh) in unlink_async() argument
537 __hc32 link_to_next_qh = qh->link; in unlink_async()
539 pqh = list_entry(qh->node.prev, struct uhci_qh, node); in unlink_async()
544 if (pqh->skel < SKEL_FSBR && qh->skel >= SKEL_FSBR) in unlink_async()
552 static void uhci_unlink_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_unlink_qh() argument
554 if (qh->state == QH_STATE_UNLINKING) in uhci_unlink_qh()
556 WARN_ON(qh->state != QH_STATE_ACTIVE || !qh->udev); in uhci_unlink_qh()
557 qh->state = QH_STATE_UNLINKING; in uhci_unlink_qh()
560 if (qh->skel == SKEL_ISO) in uhci_unlink_qh()
562 else if (qh->skel < SKEL_ASYNC) in uhci_unlink_qh()
563 unlink_interrupt(uhci, qh); in uhci_unlink_qh()
565 unlink_async(uhci, qh); in uhci_unlink_qh()
568 qh->unlink_frame = uhci->frame_number; in uhci_unlink_qh()
575 if (qh == uhci->next_qh) in uhci_unlink_qh()
576 uhci->next_qh = list_entry(qh->node.next, struct uhci_qh, in uhci_unlink_qh()
578 list_move_tail(&qh->node, &uhci->skel_unlink_qh->node); in uhci_unlink_qh()
587 static void uhci_make_qh_idle(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_make_qh_idle() argument
589 WARN_ON(qh->state == QH_STATE_ACTIVE); in uhci_make_qh_idle()
591 if (qh == uhci->next_qh) in uhci_make_qh_idle()
592 uhci->next_qh = list_entry(qh->node.next, struct uhci_qh, in uhci_make_qh_idle()
594 list_move(&qh->node, &uhci->idle_qh_list); in uhci_make_qh_idle()
595 qh->state = QH_STATE_IDLE; in uhci_make_qh_idle()
598 if (qh->post_td) { in uhci_make_qh_idle()
599 uhci_free_td(uhci, qh->post_td); in uhci_make_qh_idle()
600 qh->post_td = NULL; in uhci_make_qh_idle()
624 static int uhci_check_bandwidth(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_check_bandwidth() argument
630 if (qh->phase >= 0) in uhci_check_bandwidth()
631 minimax_load = uhci_highest_load(uhci, qh->phase, qh->period); in uhci_check_bandwidth()
634 int max_phase = min_t(int, MAX_PHASE, qh->period); in uhci_check_bandwidth()
636 qh->phase = 0; in uhci_check_bandwidth()
637 minimax_load = uhci_highest_load(uhci, qh->phase, qh->period); in uhci_check_bandwidth()
639 load = uhci_highest_load(uhci, phase, qh->period); in uhci_check_bandwidth()
642 qh->phase = phase; in uhci_check_bandwidth()
648 if (minimax_load + qh->load > 900) { in uhci_check_bandwidth()
651 qh->period, qh->phase, minimax_load, qh->load); in uhci_check_bandwidth()
660 static void uhci_reserve_bandwidth(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_reserve_bandwidth() argument
663 int load = qh->load; in uhci_reserve_bandwidth()
666 for (i = qh->phase; i < MAX_PHASE; i += qh->period) { in uhci_reserve_bandwidth()
672 switch (qh->type) { in uhci_reserve_bandwidth()
682 qh->bandwidth_reserved = 1; in uhci_reserve_bandwidth()
685 "reserve", qh->udev->devnum, in uhci_reserve_bandwidth()
686 qh->hep->desc.bEndpointAddress, p, in uhci_reserve_bandwidth()
687 qh->period, qh->phase, load); in uhci_reserve_bandwidth()
693 static void uhci_release_bandwidth(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_release_bandwidth() argument
696 int load = qh->load; in uhci_release_bandwidth()
699 for (i = qh->phase; i < MAX_PHASE; i += qh->period) { in uhci_release_bandwidth()
705 switch (qh->type) { in uhci_release_bandwidth()
715 qh->bandwidth_reserved = 0; in uhci_release_bandwidth()
718 "release", qh->udev->devnum, in uhci_release_bandwidth()
719 qh->hep->desc.bEndpointAddress, p, in uhci_release_bandwidth()
720 qh->period, qh->phase, load); in uhci_release_bandwidth()
791 struct uhci_qh *qh) in uhci_submit_control() argument
795 int maxsze = usb_endpoint_maxp(&qh->hep->desc); in uhci_submit_control()
813 td = qh->dummy_td; in uhci_submit_control()
889 qh->dummy_td->status |= cpu_to_hc32(uhci, TD_CTRL_ACTIVE); in uhci_submit_control()
890 qh->dummy_td = td; in uhci_submit_control()
903 if (qh->state != QH_STATE_ACTIVE) in uhci_submit_control()
904 qh->skel = skel; in uhci_submit_control()
909 uhci_remove_td_from_urbp(qh->dummy_td); in uhci_submit_control()
917 struct uhci_qh *qh) in uhci_submit_common() argument
921 int maxsze = usb_endpoint_maxp(&qh->hep->desc); in uhci_submit_common()
964 td = qh->dummy_td; in uhci_submit_common()
1044 qh->dummy_td->status |= cpu_to_hc32(uhci, TD_CTRL_ACTIVE); in uhci_submit_common()
1045 qh->dummy_td = td; in uhci_submit_common()
1053 uhci_remove_td_from_urbp(qh->dummy_td); in uhci_submit_common()
1058 struct uhci_qh *qh) in uhci_submit_bulk() argument
1066 if (qh->state != QH_STATE_ACTIVE) in uhci_submit_bulk()
1067 qh->skel = SKEL_BULK; in uhci_submit_bulk()
1068 ret = uhci_submit_common(uhci, urb, qh); in uhci_submit_bulk()
1075 struct uhci_qh *qh) in uhci_submit_interrupt() argument
1084 if (!qh->bandwidth_reserved) { in uhci_submit_interrupt()
1097 qh->period = 1 << exponent; in uhci_submit_interrupt()
1098 qh->skel = SKEL_INDEX(exponent); in uhci_submit_interrupt()
1103 qh->phase = (qh->period / 2) & (MAX_PHASE - 1); in uhci_submit_interrupt()
1104 ret = uhci_check_bandwidth(uhci, qh); in uhci_submit_interrupt()
1108 } else if (qh->period > urb->interval) in uhci_submit_interrupt()
1111 ret = uhci_submit_common(uhci, urb, qh); in uhci_submit_interrupt()
1113 urb->interval = qh->period; in uhci_submit_interrupt()
1114 if (!qh->bandwidth_reserved) in uhci_submit_interrupt()
1115 uhci_reserve_bandwidth(uhci, qh); in uhci_submit_interrupt()
1124 struct uhci_qh *qh, struct urb_priv *urbp) in uhci_fixup_short_transfer() argument
1131 if (qh->type == USB_ENDPOINT_XFER_CONTROL) { in uhci_fixup_short_transfer()
1137 qh->element = LINK_TO_TD(uhci, td); in uhci_fixup_short_transfer()
1146 qh->initial_toggle = in uhci_fixup_short_transfer()
1147 uhci_toggle(td_token(uhci, qh->post_td)) ^ 1; in uhci_fixup_short_transfer()
1148 uhci_fixup_toggles(uhci, qh, 1); in uhci_fixup_short_transfer()
1151 td = qh->post_td; in uhci_fixup_short_transfer()
1152 qh->element = td->link; in uhci_fixup_short_transfer()
1174 struct uhci_qh *qh = urbp->qh; in uhci_result_common() local
1202 uhci_show_qh(uhci, urbp->qh, errbuf, in uhci_result_common()
1213 if (qh->type == USB_ENDPOINT_XFER_CONTROL) { in uhci_result_common()
1228 if (qh->post_td) in uhci_result_common()
1229 uhci_free_td(uhci, qh->post_td); in uhci_result_common()
1230 qh->post_td = td; in uhci_result_common()
1241 qh->element = UHCI_PTR_TERM(uhci); in uhci_result_common()
1242 qh->is_stopped = 1; in uhci_result_common()
1243 qh->needs_fixup = (qh->type != USB_ENDPOINT_XFER_CONTROL); in uhci_result_common()
1244 qh->initial_toggle = uhci_toggle(td_token(uhci, td)) ^ in uhci_result_common()
1248 ret = uhci_fixup_short_transfer(uhci, qh, urbp); in uhci_result_common()
1256 struct uhci_qh *qh) in uhci_submit_isochronous() argument
1272 if (!qh->bandwidth_reserved) { in uhci_submit_isochronous()
1273 qh->period = urb->interval; in uhci_submit_isochronous()
1274 qh->phase = -1; /* Find the best phase */ in uhci_submit_isochronous()
1275 i = uhci_check_bandwidth(uhci, qh); in uhci_submit_isochronous()
1281 frame = qh->phase; in uhci_submit_isochronous()
1284 frame += (next - frame + qh->period - 1) & -qh->period; in uhci_submit_isochronous()
1286 } else if (qh->period != urb->interval) { in uhci_submit_isochronous()
1293 if (list_empty(&qh->queue)) { in uhci_submit_isochronous()
1294 frame = qh->iso_frame; in uhci_submit_isochronous()
1298 lurb = list_entry(qh->queue.prev, in uhci_submit_isochronous()
1310 frame += (next - frame + qh->period - 1) & in uhci_submit_isochronous()
1311 -qh->period; in uhci_submit_isochronous()
1319 qh->period)) in uhci_submit_isochronous()
1323 qh->period, in uhci_submit_isochronous()
1356 frame += qh->period; in uhci_submit_isochronous()
1359 if (list_empty(&qh->queue)) { in uhci_submit_isochronous()
1360 qh->iso_packet_desc = &urb->iso_frame_desc[0]; in uhci_submit_isochronous()
1361 qh->iso_frame = urb->start_frame; in uhci_submit_isochronous()
1364 qh->skel = SKEL_ISO; in uhci_submit_isochronous()
1365 if (!qh->bandwidth_reserved) in uhci_submit_isochronous()
1366 uhci_reserve_bandwidth(uhci, qh); in uhci_submit_isochronous()
1374 struct uhci_qh *qh = urbp->qh; in uhci_result_isochronous() local
1381 if (uhci_frame_before_eq(uhci->cur_iso_frame, qh->iso_frame)) in uhci_result_isochronous()
1384 uhci_remove_tds_from_frame(uhci, qh->iso_frame); in uhci_result_isochronous()
1395 qh->iso_packet_desc->actual_length = actlength; in uhci_result_isochronous()
1396 qh->iso_packet_desc->status = status; in uhci_result_isochronous()
1403 qh->iso_frame += qh->period; in uhci_result_isochronous()
1404 ++qh->iso_packet_desc; in uhci_result_isochronous()
1416 struct uhci_qh *qh; in uhci_urb_enqueue() local
1430 qh = urb->ep->hcpriv; in uhci_urb_enqueue()
1432 qh = uhci_alloc_qh(uhci, urb->dev, urb->ep); in uhci_urb_enqueue()
1433 if (!qh) in uhci_urb_enqueue()
1436 urbp->qh = qh; in uhci_urb_enqueue()
1438 switch (qh->type) { in uhci_urb_enqueue()
1440 ret = uhci_submit_control(uhci, urb, qh); in uhci_urb_enqueue()
1443 ret = uhci_submit_bulk(uhci, urb, qh); in uhci_urb_enqueue()
1446 ret = uhci_submit_interrupt(uhci, urb, qh); in uhci_urb_enqueue()
1450 ret = uhci_submit_isochronous(uhci, urb, qh); in uhci_urb_enqueue()
1457 list_add_tail(&urbp->node, &qh->queue); in uhci_urb_enqueue()
1463 if (qh->queue.next == &urbp->node && !qh->is_stopped) { in uhci_urb_enqueue()
1464 uhci_activate_qh(uhci, qh); in uhci_urb_enqueue()
1470 if (qh->state == QH_STATE_IDLE) in uhci_urb_enqueue()
1471 uhci_make_qh_idle(uhci, qh); /* Reclaim unused QH */ in uhci_urb_enqueue()
1486 struct uhci_qh *qh; in uhci_urb_dequeue() local
1494 qh = ((struct urb_priv *) urb->hcpriv)->qh; in uhci_urb_dequeue()
1497 if (qh->type == USB_ENDPOINT_XFER_ISOC) { in uhci_urb_dequeue()
1504 qh->unlink_frame = uhci->frame_number; in uhci_urb_dequeue()
1507 uhci_unlink_qh(uhci, qh); in uhci_urb_dequeue()
1517 static void uhci_giveback_urb(struct uhci_hcd *uhci, struct uhci_qh *qh, in uhci_giveback_urb() argument
1524 if (qh->type == USB_ENDPOINT_XFER_CONTROL) { in uhci_giveback_urb()
1534 else if (qh->type == USB_ENDPOINT_XFER_ISOC && in uhci_giveback_urb()
1535 urbp->node.prev == &qh->queue && in uhci_giveback_urb()
1536 urbp->node.next != &qh->queue) { in uhci_giveback_urb()
1540 qh->iso_packet_desc = &nurb->iso_frame_desc[0]; in uhci_giveback_urb()
1541 qh->iso_frame = nurb->start_frame; in uhci_giveback_urb()
1547 if (list_empty(&qh->queue) && qh->needs_fixup) { in uhci_giveback_urb()
1549 usb_pipeout(urb->pipe), qh->initial_toggle); in uhci_giveback_urb()
1550 qh->needs_fixup = 0; in uhci_giveback_urb()
1562 if (list_empty(&qh->queue)) { in uhci_giveback_urb()
1563 uhci_unlink_qh(uhci, qh); in uhci_giveback_urb()
1564 if (qh->bandwidth_reserved) in uhci_giveback_urb()
1565 uhci_release_bandwidth(uhci, qh); in uhci_giveback_urb()
1572 #define QH_FINISHED_UNLINKING(qh) \ argument
1573 (qh->state == QH_STATE_UNLINKING && \
1574 uhci->frame_number + uhci->is_stopped != qh->unlink_frame)
1576 static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_scan_qh() argument
1582 while (!list_empty(&qh->queue)) { in uhci_scan_qh()
1583 urbp = list_entry(qh->queue.next, struct urb_priv, node); in uhci_scan_qh()
1586 if (qh->type == USB_ENDPOINT_XFER_ISOC) in uhci_scan_qh()
1596 if (QH_FINISHED_UNLINKING(qh)) in uhci_scan_qh()
1597 qh->is_stopped = 1; in uhci_scan_qh()
1598 else if (!qh->is_stopped) in uhci_scan_qh()
1602 uhci_giveback_urb(uhci, qh, urb, status); in uhci_scan_qh()
1609 if (QH_FINISHED_UNLINKING(qh)) in uhci_scan_qh()
1610 qh->is_stopped = 1; in uhci_scan_qh()
1611 else if (!qh->is_stopped) in uhci_scan_qh()
1616 list_for_each_entry(urbp, &qh->queue, node) { in uhci_scan_qh()
1623 if (!uhci_cleanup_queue(uhci, qh, urb)) { in uhci_scan_qh()
1624 qh->is_stopped = 0; in uhci_scan_qh()
1627 uhci_giveback_urb(uhci, qh, urb, 0); in uhci_scan_qh()
1631 qh->is_stopped = 0; in uhci_scan_qh()
1635 if (!list_empty(&qh->queue)) { in uhci_scan_qh()
1636 if (qh->needs_fixup) in uhci_scan_qh()
1637 uhci_fixup_toggles(uhci, qh, 0); in uhci_scan_qh()
1642 urbp = list_entry(qh->queue.next, struct urb_priv, node); in uhci_scan_qh()
1643 if (urbp->fsbr && qh->wait_expired) { in uhci_scan_qh()
1650 uhci_activate_qh(uhci, qh); in uhci_scan_qh()
1655 else if (QH_FINISHED_UNLINKING(qh)) in uhci_scan_qh()
1656 uhci_make_qh_idle(uhci, qh); in uhci_scan_qh()
1669 static int uhci_advance_check(struct uhci_hcd *uhci, struct uhci_qh *qh) in uhci_advance_check() argument
1676 if (qh->type == USB_ENDPOINT_XFER_ISOC) in uhci_advance_check()
1687 if (qh->state != QH_STATE_ACTIVE) { in uhci_advance_check()
1692 urbp = list_entry(qh->queue.next, struct urb_priv, node); in uhci_advance_check()
1698 qh->wait_expired = 0; in uhci_advance_check()
1699 qh->advance_jiffies = jiffies; in uhci_advance_check()
1706 if (qh->wait_expired) in uhci_advance_check()
1709 if (time_after(jiffies, qh->advance_jiffies + QH_WAIT_TIMEOUT)) { in uhci_advance_check()
1712 if (qh->post_td && qh_element(qh) == in uhci_advance_check()
1713 LINK_TO_TD(uhci, qh->post_td)) { in uhci_advance_check()
1714 qh->element = qh->post_td->link; in uhci_advance_check()
1715 qh->advance_jiffies = jiffies; in uhci_advance_check()
1720 qh->wait_expired = 1; in uhci_advance_check()
1727 uhci_unlink_qh(uhci, qh); in uhci_advance_check()
1745 struct uhci_qh *qh; in uhci_scan_schedule() local
1765 while ((qh = uhci->next_qh) != uhci->skelqh[i]) { in uhci_scan_schedule()
1766 uhci->next_qh = list_entry(qh->node.next, in uhci_scan_schedule()
1769 if (uhci_advance_check(uhci, qh)) { in uhci_scan_schedule()
1770 uhci_scan_qh(uhci, qh); in uhci_scan_schedule()
1771 if (qh->state == QH_STATE_ACTIVE) { in uhci_scan_schedule()
1773 list_entry(qh->queue.next, struct urb_priv, node)); in uhci_scan_schedule()