Lines Matching refs:td

1736 		struct xhci_td *td, union xhci_trb *event_trb)  in xhci_cleanup_halted_endpoint()  argument
1748 xhci_cleanup_stalled_ring(xhci, ep_index, td); in xhci_cleanup_halted_endpoint()
1800 static int finish_td(struct xhci_hcd *xhci, struct xhci_td *td, in finish_td() argument
1829 ep->stopped_td = td; in finish_td()
1841 ep_ring->stream_id, td, event_trb); in finish_td()
1844 while (ep_ring->dequeue != td->last_trb) in finish_td()
1851 urb = td->urb; in finish_td()
1864 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in finish_td()
1869 list_del_init(&td->td_list); in finish_td()
1871 if (!list_empty(&td->cancelled_td_list)) in finish_td()
1872 list_del_init(&td->cancelled_td_list); in finish_td()
1893 static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_ctrl_td() argument
1917 } else if (event_trb != td->last_trb) { in process_ctrl_td()
1926 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_ctrl_td()
1933 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1945 event_trb != td->last_trb) in process_ctrl_td()
1946 td->urb->actual_length = in process_ctrl_td()
1947 td->urb->transfer_buffer_length - in process_ctrl_td()
1950 td->urb->actual_length = 0; in process_ctrl_td()
1952 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1960 if (event_trb == td->last_trb) { in process_ctrl_td()
1961 if (td->urb_length_set) { in process_ctrl_td()
1965 (td->urb->transfer_flags in process_ctrl_td()
1971 td->urb->actual_length = in process_ctrl_td()
1972 td->urb->transfer_buffer_length; in process_ctrl_td()
1981 td->urb_length_set = true; in process_ctrl_td()
1982 td->urb->actual_length = in process_ctrl_td()
1983 td->urb->transfer_buffer_length - in process_ctrl_td()
1991 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1997 static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_isoc_td() argument
2013 urb_priv = td->urb->hcpriv; in process_isoc_td()
2015 frame = &td->urb->iso_frame_desc[idx]; in process_isoc_td()
2027 frame->status = td->urb->transfer_flags & URB_SHORT_NOT_OK ? in process_isoc_td()
2046 if (event_trb != td->last_trb) in process_isoc_td()
2060 td->urb->actual_length += frame->length; in process_isoc_td()
2074 td->urb->actual_length += len; in process_isoc_td()
2078 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_isoc_td()
2081 static int skip_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, in skip_isoc_td() argument
2091 urb_priv = td->urb->hcpriv; in skip_isoc_td()
2093 frame = &td->urb->iso_frame_desc[idx]; in skip_isoc_td()
2102 while (ep_ring->dequeue != td->last_trb) in skip_isoc_td()
2106 return finish_td(xhci, td, NULL, event, ep, status, true); in skip_isoc_td()
2112 static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_bulk_intr_td() argument
2127 if (event_trb != td->last_trb || in process_bulk_intr_td()
2131 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2142 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2154 td->urb->ep->desc.bEndpointAddress, in process_bulk_intr_td()
2155 td->urb->transfer_buffer_length, in process_bulk_intr_td()
2158 if (event_trb == td->last_trb) { in process_bulk_intr_td()
2160 td->urb->actual_length = in process_bulk_intr_td()
2161 td->urb->transfer_buffer_length - in process_bulk_intr_td()
2163 if (td->urb->transfer_buffer_length < in process_bulk_intr_td()
2164 td->urb->actual_length) { in process_bulk_intr_td()
2168 td->urb->actual_length = 0; in process_bulk_intr_td()
2169 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2176 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2182 td->urb->actual_length = in process_bulk_intr_td()
2183 td->urb->transfer_buffer_length; in process_bulk_intr_td()
2194 td->urb->actual_length = 0; in process_bulk_intr_td()
2200 td->urb->actual_length += in process_bulk_intr_td()
2207 td->urb->actual_length += in process_bulk_intr_td()
2212 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_bulk_intr_td()
2230 struct xhci_td *td = NULL; in handle_tx_event() local
2428 td = list_entry(ep_ring->td_list.next, struct xhci_td, td_list); in handle_tx_event()
2434 td->last_trb, event_dma, false); in handle_tx_event()
2452 !usb_endpoint_xfer_isoc(&td->urb->ep->desc)) { in handle_tx_event()
2470 ep_ring->dequeue, td->last_trb, in handle_tx_event()
2475 ret = skip_isoc_td(xhci, td, event, ep, &status); in handle_tx_event()
2505 if (usb_endpoint_xfer_control(&td->urb->ep->desc)) in handle_tx_event()
2506 ret = process_ctrl_td(xhci, td, event_trb, event, ep, in handle_tx_event()
2508 else if (usb_endpoint_xfer_isoc(&td->urb->ep->desc)) in handle_tx_event()
2509 ret = process_isoc_td(xhci, td, event_trb, event, ep, in handle_tx_event()
2512 ret = process_bulk_intr_td(xhci, td, event_trb, event, in handle_tx_event()
2530 urb = td->urb; in handle_tx_event()
2861 struct xhci_td *td; in prepare_transfer() local
2879 td = urb_priv->td[td_index]; in prepare_transfer()
2881 INIT_LIST_HEAD(&td->td_list); in prepare_transfer()
2882 INIT_LIST_HEAD(&td->cancelled_td_list); in prepare_transfer()
2890 td->urb = urb; in prepare_transfer()
2892 list_add_tail(&td->td_list, &ep_ring->td_list); in prepare_transfer()
2893 td->start_seg = ep_ring->enq_seg; in prepare_transfer()
2894 td->first_trb = ep_ring->enqueue; in prepare_transfer()
2896 urb_priv->td[td_index] = td; in prepare_transfer()
3051 struct xhci_td *td; in queue_bulk_sg_tx() local
3095 td = urb_priv->td[0]; in queue_bulk_sg_tx()
3145 td->last_trb = ep_ring->enqueue; in queue_bulk_sg_tx()
3149 urb_priv->td[1]->last_trb = ep_ring->enqueue; in queue_bulk_sg_tx()
3221 struct xhci_td *td; in xhci_queue_bulk_tx() local
3280 td = urb_priv->td[0]; in xhci_queue_bulk_tx()
3321 td->last_trb = ep_ring->enqueue; in xhci_queue_bulk_tx()
3325 urb_priv->td[1]->last_trb = ep_ring->enqueue; in xhci_queue_bulk_tx()
3379 struct xhci_td *td; in xhci_queue_ctrl_tx() local
3408 td = urb_priv->td[0]; in xhci_queue_ctrl_tx()
3470 td->last_trb = ep_ring->enqueue; in xhci_queue_ctrl_tx()
3570 struct xhci_td *td; in xhci_queue_isoc_tx() local
3626 td = urb_priv->td[i]; in xhci_queue_isoc_tx()
3662 td->last_trb = ep_ring->enqueue; in xhci_queue_isoc_tx()
3721 list_del_init(&urb_priv->td[i]->td_list); in xhci_queue_isoc_tx()
3728 urb_priv->td[0]->last_trb = ep_ring->enqueue; in xhci_queue_isoc_tx()
3730 td_to_noop(xhci, ep_ring, urb_priv->td[0], true); in xhci_queue_isoc_tx()
3733 ep_ring->enqueue = urb_priv->td[0]->first_trb; in xhci_queue_isoc_tx()
3734 ep_ring->enq_seg = urb_priv->td[0]->start_seg; in xhci_queue_isoc_tx()