Lines Matching refs:td
46 struct td *td; in fhci_transaction_confirm() local
52 td = fhci_remove_td_from_frame(usb->actual_frame); in fhci_transaction_confirm()
53 td_pkt = td->pkt; in fhci_transaction_confirm()
55 td->status = pkt->status; in fhci_transaction_confirm()
56 if (td->type == FHCI_TA_IN && td_pkt->info & PKT_DUMMY_PACKET) { in fhci_transaction_confirm()
57 if ((td->data + td->actual_len) && trans_len) in fhci_transaction_confirm()
58 memcpy(td->data + td->actual_len, pkt->data, in fhci_transaction_confirm()
65 ed = td->ed; in fhci_transaction_confirm()
68 struct td *td_next = in fhci_transaction_confirm()
69 list_entry(ed->td_list.next->next, struct td, in fhci_transaction_confirm()
74 td->actual_len = trans_len; in fhci_transaction_confirm()
76 } else if ((td->status & USB_TD_ERROR) && in fhci_transaction_confirm()
77 !(td->status & USB_TD_TX_ER_NAK)) { in fhci_transaction_confirm()
83 if ((td->status & USB_TD_RX_DATA_UNDERUN) || in fhci_transaction_confirm()
84 (td->status & USB_TD_TX_ER_STALL) || in fhci_transaction_confirm()
85 (td->status & USB_TD_RX_ER_PID) || in fhci_transaction_confirm()
86 (++td->error_cnt >= 3)) { in fhci_transaction_confirm()
90 if (td->status & USB_TD_RX_DATA_UNDERUN) { in fhci_transaction_confirm()
92 td->toggle = !td->toggle; in fhci_transaction_confirm()
93 td->actual_len += trans_len; in fhci_transaction_confirm()
100 td->nak_cnt = 0; in fhci_transaction_confirm()
101 td->error_cnt++; in fhci_transaction_confirm()
102 td->status = USB_TD_OK; in fhci_transaction_confirm()
104 } else if (td->status & USB_TD_TX_ER_NAK) { in fhci_transaction_confirm()
107 td->nak_cnt++; in fhci_transaction_confirm()
108 td->error_cnt = 0; in fhci_transaction_confirm()
109 td->status = USB_TD_OK; in fhci_transaction_confirm()
112 td->error_cnt = 0; in fhci_transaction_confirm()
113 td->nak_cnt = 0; in fhci_transaction_confirm()
114 td->toggle = !td->toggle; in fhci_transaction_confirm()
115 td->actual_len += trans_len; in fhci_transaction_confirm()
117 if (td->len == td->actual_len) in fhci_transaction_confirm()
133 struct td *td; in fhci_flush_all_transmissions() local
140 while ((td = fhci_peek_td_from_frame(usb->actual_frame)) != NULL) { in fhci_flush_all_transmissions()
141 struct packet *pkt = td->pkt; in fhci_flush_all_transmissions()
159 static int add_packet(struct fhci_usb *usb, struct ed *ed, struct td *td) in add_packet() argument
166 if (td->toggle == USB_TD_TOGGLE_CARRY) in add_packet()
167 td->toggle = ed->toggle_carry; in add_packet()
171 len = td->len; in add_packet()
172 if (td->type != FHCI_TA_IN) in add_packet()
173 data = td->data; in add_packet()
177 len = min(td->len - td->actual_len, ed->max_pkt_size); in add_packet()
178 if (!((td->type == FHCI_TA_IN) && in add_packet()
179 ((len + td->actual_len) == td->len))) in add_packet()
180 data = td->data + td->actual_len; in add_packet()
183 len = min(td->len, ed->max_pkt_size); in add_packet()
184 if (!((td->type == FHCI_TA_IN) && in add_packet()
185 ((td->len + CRC_SIZE) >= ed->max_pkt_size))) in add_packet()
186 data = td->data; in add_packet()
221 td->pkt = pkt; in add_packet()
233 td->status = USB_TD_INPROGRESS; in add_packet()
236 fhci_add_td_to_frame(usb->actual_frame, td); in add_packet()
243 } else if (fhci_host_transaction(usb, pkt, td->type, ed->dev_addr, in add_packet()
244 ed->ep_addr, ed->mode, ed->speed, td->toggle)) { in add_packet()
246 list_del_init(&td->frame_lh); in add_packet()
247 td->status = USB_TD_OK; in add_packet()
284 struct td *td; in scan_ed_list() local
289 td = ed->td_head; in scan_ed_list()
291 if (!td || (td && td->status == USB_TD_INPROGRESS)) in scan_ed_list()
296 td->status = USB_TD_OK; in scan_ed_list()
309 td->start_frame) & 0x7ff) < td->interval)) in scan_ed_list()
312 if (add_packet(usb, ed, td) < 0) in scan_ed_list()
316 td->start_frame = usb->actual_frame->frame_num; in scan_ed_list()
639 struct td *td; in process_done_list() local
647 td = fhci_remove_td_from_done_list(fhci->hc_list); in process_done_list()
648 while (td != NULL) { in process_done_list()
649 urb = td->urb; in process_done_list()
651 ed = td->ed; in process_done_list()
654 fhci_done_td(urb, td); in process_done_list()
676 td = fhci_remove_td_from_done_list(fhci->hc_list); in process_done_list()
708 struct td *td; in fhci_queue_urb() local
779 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt, in fhci_queue_urb()
790 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt, in fhci_queue_urb()
798 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt, in fhci_queue_urb()
807 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, in fhci_queue_urb()
817 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP, in fhci_queue_urb()
822 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, in fhci_queue_urb()
831 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, in fhci_queue_urb()
836 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, in fhci_queue_urb()
853 td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt, in fhci_queue_urb()