18 #include <linux/kernel.h>
19 #include <linux/types.h>
21 #include <linux/errno.h>
22 #include <linux/slab.h>
23 #include <linux/list.h>
66 for (i = 0; i < number; i++) {
67 struct td *
td = td_list[
i];
74 static struct td *peek_td_from_ed(
struct ed *
ed)
115 if (!list_empty(&ed->
td_list)) {
117 list_del_init(ed->
td_list.next);
149 list_del_init(&td->
node);
169 struct ed *ed = urb_priv->
ed;
172 list_del_init(&urb_priv->
tds[i]->node);
188 list_del_init(&ed->
node);
195 free_urb_priv(fhci, urb);
198 if (urb->actual_length != urb->transfer_buffer_length &&
199 urb->transfer_flags & URB_SHORT_NOT_OK)
207 spin_unlock(&fhci->
lock);
211 spin_lock(&fhci->
lock);
220 struct ed *ed = td->
ed;
226 if (!(urb->transfer_flags & URB_SHORT_NOT_OK &&
227 cc == USB_TD_RX_DATA_UNDERUN))
230 if (usb_pipeout(urb->pipe))
231 len = urb->iso_frame_desc[td->
iso_index].length;
235 urb->actual_length += len;
236 urb->iso_frame_desc[td->
iso_index].actual_length = len;
237 urb->iso_frame_desc[td->
iso_index].status =
247 urb->error_count = 3;
252 if (!(urb->transfer_flags & URB_SHORT_NOT_OK) &&
253 cc == USB_TD_RX_DATA_UNDERUN) {
259 urb->status = status_to_error(cc);
271 struct td *td = peek_td_from_ed(ed);
272 struct urb *urb = td->
urb;
273 struct urb_priv *urb_priv = urb->hcpriv;