Lines Matching refs:td
42 struct td *td;
48 td = fhci_remove_td_from_frame(usb->actual_frame);
49 td_pkt = td->pkt;
51 td->status = pkt->status;
52 if (td->type == FHCI_TA_IN && td_pkt->info & PKT_DUMMY_PACKET) {
53 if ((td->data + td->actual_len) && trans_len)
54 memcpy(td->data + td->actual_len, pkt->data,
61 ed = td->ed;
64 struct td *td_next =
65 list_entry(ed->td_list.next->next, struct td,
70 td->actual_len = trans_len;
72 } else if ((td->status & USB_TD_ERROR) &&
73 !(td->status & USB_TD_TX_ER_NAK)) {
79 if ((td->status & USB_TD_RX_DATA_UNDERUN) ||
80 (td->status & USB_TD_TX_ER_STALL) ||
81 (td->status & USB_TD_RX_ER_PID) ||
82 (++td->error_cnt >= 3)) {
86 if (td->status & USB_TD_RX_DATA_UNDERUN) {
87 fhci_dbg(usb->fhci, "td err fu\n");
88 td->toggle = !td->toggle;
89 td->actual_len += trans_len;
91 fhci_dbg(usb->fhci, "td err f!u\n");
94 fhci_dbg(usb->fhci, "td err !f\n");
96 td->nak_cnt = 0;
97 td->error_cnt++;
98 td->status = USB_TD_OK;
100 } else if (td->status & USB_TD_TX_ER_NAK) {
102 fhci_vdbg(usb->fhci, "td nack\n");
103 td->nak_cnt++;
104 td->error_cnt = 0;
105 td->status = USB_TD_OK;
108 td->error_cnt = 0;
109 td->nak_cnt = 0;
110 td->toggle = !td->toggle;
111 td->actual_len += trans_len;
113 if (td->len == td->actual_len)
129 struct td *td;
136 while ((td = fhci_peek_td_from_frame(usb->actual_frame)) != NULL) {
137 struct packet *pkt = td->pkt;
155 static int add_packet(struct fhci_usb *usb, struct ed *ed, struct td *td)
162 if (td->toggle == USB_TD_TOGGLE_CARRY)
163 td->toggle = ed->toggle_carry;
167 len = td->len;
168 if (td->type != FHCI_TA_IN)
169 data = td->data;
173 len = min(td->len - td->actual_len, ed->max_pkt_size);
174 if (!((td->type == FHCI_TA_IN) &&
175 ((len + td->actual_len) == td->len)))
176 data = td->data + td->actual_len;
179 len = min(td->len, ed->max_pkt_size);
180 if (!((td->type == FHCI_TA_IN) &&
181 ((td->len + CRC_SIZE) >= ed->max_pkt_size)))
182 data = td->data;
217 td->pkt = pkt;
229 td->status = USB_TD_INPROGRESS;
232 fhci_add_td_to_frame(usb->actual_frame, td);
239 } else if (fhci_host_transaction(usb, pkt, td->type, ed->dev_addr,
240 ed->ep_addr, ed->mode, ed->speed, td->toggle)) {
242 list_del_init(&td->frame_lh);
243 td->status = USB_TD_OK;
280 struct td *td;
285 td = ed->td_head;
287 if (!td || td->status == USB_TD_INPROGRESS)
292 td->status = USB_TD_OK;
305 td->start_frame) & 0x7ff) < td->interval))
308 if (add_packet(usb, ed, td) < 0)
312 td->start_frame = usb->actual_frame->frame_num;
635 struct td *td;
643 td = fhci_remove_td_from_done_list(fhci->hc_list);
644 while (td != NULL) {
645 urb = td->urb;
647 ed = td->ed;
650 fhci_done_td(urb, td);
672 td = fhci_remove_td_from_done_list(fhci->hc_list);