Lines Matching refs:urb
118 struct urb tr_urb; /* transfer request urb. */
119 struct urb *isoc_pack_desc_urb; /* for isoc packet descriptor. */
120 struct urb *dto_urb; /* for data output. */
155 struct urb *urb; /* URB we are transferring for */ member
286 usb_hcd_unlink_urb_from_ep(&(xfer->wa->wusb->usb_hcd), xfer->urb); in wa_xfer_giveback()
289 wusbhc_giveback_urb(xfer->wa->wusb, xfer->urb, xfer->result); in wa_xfer_giveback()
342 struct urb *urb = xfer->urb; in __wa_xfer_is_done() local
348 urb->actual_length = 0; in __wa_xfer_is_done()
357 urb->status = -EINVAL; in __wa_xfer_is_done()
360 urb->actual_length += seg->result; in __wa_xfer_is_done()
361 if (!(usb_pipeisoc(xfer->urb->pipe)) in __wa_xfer_is_done()
368 seg->result, urb->actual_length); in __wa_xfer_is_done()
438 struct urb urb; member
443 static void __wa_xfer_abort_cb(struct urb *urb) in __wa_xfer_abort_cb() argument
445 struct wa_xfer_abort_buffer *b = urb->context; in __wa_xfer_abort_cb()
453 if (urb->status < 0) { in __wa_xfer_abort_cb()
459 __func__, urb->status); in __wa_xfer_abort_cb()
495 usb_put_urb(&b->urb); in __wa_xfer_abort_cb()
524 usb_init_urb(&b->urb); in __wa_xfer_abort()
525 usb_fill_bulk_urb(&b->urb, xfer->wa->usb_dev, in __wa_xfer_abort()
529 result = usb_submit_urb(&b->urb, GFP_ATOMIC); in __wa_xfer_abort()
556 xfer->urb->iso_frame_desc; in __wa_seg_calculate_isoc_frame_count()
558 while ((index < xfer->urb->number_of_packets) in __wa_seg_calculate_isoc_frame_count()
598 struct urb *urb = xfer->urb; in __wa_xfer_setup_sizes() local
620 xfer->is_inbound = urb->pipe & USB_DIR_IN ? 1 : 0; in __wa_xfer_setup_sizes()
621 xfer->is_dma = urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP ? 1 : 0; in __wa_xfer_setup_sizes()
645 while (index < urb->number_of_packets) { in __wa_xfer_setup_sizes()
652 xfer->segs = DIV_ROUND_UP(urb->transfer_buffer_length, in __wa_xfer_setup_sizes()
660 (urb->transfer_buffer_length/xfer->seg_size), in __wa_xfer_setup_sizes()
674 xfer->urb->iso_frame_desc; in __wa_setup_isoc_packet_descr()
711 memcpy(&xfer_ctl->baSetupData, xfer->urb->setup_packet, in __wa_xfer_setup_hdr0()
746 static void wa_seg_dto_cb(struct urb *urb) in wa_seg_dto_cb() argument
748 struct wa_seg *seg = urb->context; in wa_seg_dto_cb()
760 kfree(urb->sg); in wa_seg_dto_cb()
761 urb->sg = NULL; in wa_seg_dto_cb()
766 if (usb_pipeisoc(xfer->urb->pipe)) { in wa_seg_dto_cb()
789 switch (urb->status) { in wa_seg_dto_cb()
792 seg->result += urb->actual_length; in wa_seg_dto_cb()
833 wa_xfer_id(xfer), seg->index, urb->status); in wa_seg_dto_cb()
853 seg->result = urb->status; in wa_seg_dto_cb()
883 static void wa_seg_iso_pack_desc_cb(struct urb *urb) in wa_seg_iso_pack_desc_cb() argument
885 struct wa_seg *seg = urb->context; in wa_seg_iso_pack_desc_cb()
894 switch (urb->status) { in wa_seg_iso_pack_desc_cb()
914 wa_xfer_id(xfer), seg->index, urb->status); in wa_seg_iso_pack_desc_cb()
922 seg->result = urb->status; in wa_seg_iso_pack_desc_cb()
956 static void wa_seg_tr_cb(struct urb *urb) in wa_seg_tr_cb() argument
958 struct wa_seg *seg = urb->context; in wa_seg_tr_cb()
967 switch (urb->status) { in wa_seg_tr_cb()
976 !(usb_pipeisoc(xfer->urb->pipe))) in wa_seg_tr_cb()
991 urb->status); in wa_seg_tr_cb()
1000 seg->result = urb->status; in wa_seg_tr_cb()
1106 seg->dto_urb->transfer_dma = xfer->urb->transfer_dma + in __wa_populate_dto_urb_isoc()
1107 xfer->urb->iso_frame_desc[curr_iso_frame].offset; in __wa_populate_dto_urb_isoc()
1113 xfer->urb->iso_frame_desc[curr_iso_frame].length; in __wa_populate_dto_urb_isoc()
1126 xfer->urb->transfer_dma + buf_itr_offset; in __wa_populate_dto_urb()
1137 if (xfer->urb->transfer_buffer) { in __wa_populate_dto_urb()
1139 xfer->urb->transfer_buffer + in __wa_populate_dto_urb()
1153 xfer->urb->sg, in __wa_populate_dto_urb()
1188 buf_size = xfer->urb->transfer_buffer_length; in __wa_xfer_setup_segs()
1197 if (usb_pipeisoc(xfer->urb->pipe)) { in __wa_xfer_setup_segs()
1220 if (usb_pipeisoc(xfer->urb->pipe)) { in __wa_xfer_setup_segs()
1258 if (usb_pipeisoc(xfer->urb->pipe)) { in __wa_xfer_setup_segs()
1309 static int __wa_xfer_setup(struct wa_xfer *xfer, struct urb *urb) in __wa_xfer_setup() argument
1360 transfer_size = urb->transfer_buffer_length; in __wa_xfer_setup()
1656 struct urb *urb = xfer->urb; in wa_urb_enqueue_b() local
1662 result = rpipe_get_by_ep(wa, xfer->ep, urb, xfer->gfp); in wa_urb_enqueue_b()
1670 if (urb->dev == NULL) { in wa_urb_enqueue_b()
1675 wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev); in wa_urb_enqueue_b()
1678 dev_err(&(urb->dev->dev), "%s: error wusb dev gone\n", in wa_urb_enqueue_b()
1686 result = urb->status; in wa_urb_enqueue_b()
1687 if (urb->status != -EINPROGRESS) { in wa_urb_enqueue_b()
1688 dev_err(&(urb->dev->dev), "%s: error_dequeued\n", __func__); in wa_urb_enqueue_b()
1692 result = __wa_xfer_setup(xfer, urb); in wa_urb_enqueue_b()
1694 dev_err(&(urb->dev->dev), "%s: error_xfer_setup\n", __func__); in wa_urb_enqueue_b()
1705 dev_err(&(urb->dev->dev), "%s: error_xfer_submit\n", __func__); in wa_urb_enqueue_b()
1754 struct urb *urb; in wa_urb_enqueue_run() local
1770 urb = xfer->urb; in wa_urb_enqueue_run()
1773 usb_put_urb(urb); /* taken when queuing */ in wa_urb_enqueue_run()
1834 struct urb *urb, gfp_t gfp) in wa_urb_enqueue() argument
1842 if ((urb->transfer_buffer == NULL) in wa_urb_enqueue()
1843 && (urb->sg == NULL) in wa_urb_enqueue()
1844 && !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in wa_urb_enqueue()
1845 && urb->transfer_buffer_length != 0) { in wa_urb_enqueue()
1846 dev_err(dev, "BUG? urb %p: NULL xfer buffer & NODMA\n", urb); in wa_urb_enqueue()
1851 result = usb_hcd_link_urb_to_ep(&(wa->wusb->usb_hcd), urb); in wa_urb_enqueue()
1862 if (urb->status != -EINPROGRESS) /* cancelled */ in wa_urb_enqueue()
1866 xfer->urb = urb; in wa_urb_enqueue()
1869 urb->hcpriv = xfer; in wa_urb_enqueue()
1872 xfer, urb, urb->pipe, urb->transfer_buffer_length, in wa_urb_enqueue()
1873 urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP ? "dma" : "nodma", in wa_urb_enqueue()
1874 urb->pipe & USB_DIR_IN ? "inbound" : "outbound", in wa_urb_enqueue()
1878 usb_get_urb(urb); in wa_urb_enqueue()
1896 usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); in wa_urb_enqueue()
1907 usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); in wa_urb_enqueue()
1932 int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) in wa_urb_dequeue() argument
1944 result = usb_hcd_check_unlink_urb(&(wa->wusb->usb_hcd), urb, status); in wa_urb_dequeue()
1945 if ((result == 0) && urb->hcpriv) { in wa_urb_dequeue()
1950 wa_xfer_get(urb->hcpriv); in wa_urb_dequeue()
1956 xfer = urb->hcpriv; in wa_urb_dequeue()
2053 xfer->result = urb->status; /* -ENOENT or -ECONNRESET */ in wa_urb_dequeue()
2071 xfer->result = urb->status; in wa_urb_dequeue()
2075 usb_put_urb(urb); /* we got a ref in enqueue() */ in wa_urb_dequeue()
2175 struct urb *buf_in_urb, struct wa_xfer *xfer, struct wa_seg *seg) in __wa_populate_buf_in_urb_isoc()
2180 xfer->urb->iso_frame_desc; in __wa_populate_buf_in_urb_isoc()
2216 buf_in_urb->transfer_dma = xfer->urb->transfer_dma + in __wa_populate_buf_in_urb_isoc()
2230 static int wa_populate_buf_in_urb(struct urb *buf_in_urb, struct wa_xfer *xfer, in wa_populate_buf_in_urb()
2241 buf_in_urb->transfer_dma = xfer->urb->transfer_dma in wa_populate_buf_in_urb()
2251 if (xfer->urb->transfer_buffer) { in wa_populate_buf_in_urb()
2253 xfer->urb->transfer_buffer in wa_populate_buf_in_urb()
2263 xfer->urb->sg, in wa_populate_buf_in_urb()
2301 struct urb *buf_in_urb = &(wa->buf_in_urbs[0]); in wa_xfer_result_chew()
2342 if (usb_pipeisoc(xfer->urb->pipe) in wa_xfer_result_chew()
2348 } else if (xfer->is_inbound && !usb_pipeisoc(xfer->urb->pipe) in wa_xfer_result_chew()
2422 wa_urb_dequeue(wa, xfer->urb, -ENOENT); in wa_xfer_result_chew()
2442 static int wa_process_iso_packet_status(struct wahc *wa, struct urb *urb) in wa_process_iso_packet_status() argument
2457 urb->actual_length, urb->transfer_buffer); in wa_process_iso_packet_status()
2478 if (urb->actual_length != expected_size) { in wa_process_iso_packet_status()
2480 urb->actual_length, expected_size); in wa_process_iso_packet_status()
2490 xfer->urb->start_frame = in wa_process_iso_packet_status()
2494 xfer->urb->iso_frame_desc; in wa_process_iso_packet_status()
2514 struct urb *buf_in_urb; in wa_process_iso_packet_status()
2540 &(xfer->urb->iso_frame_desc[urb_frame_index]); in wa_process_iso_packet_status()
2595 static void wa_buf_in_cb(struct urb *urb) in wa_buf_in_cb() argument
2597 struct wa_seg *seg = urb->context; in wa_buf_in_cb()
2608 kfree(urb->sg); in wa_buf_in_cb()
2609 urb->sg = NULL; in wa_buf_in_cb()
2618 if (usb_pipeisoc(xfer->urb->pipe)) { in wa_buf_in_cb()
2620 xfer->urb->iso_frame_desc; in wa_buf_in_cb()
2643 switch (urb->status) { in wa_buf_in_cb()
2647 seg->result += urb->actual_length; in wa_buf_in_cb()
2652 urb_frame_count = __wa_populate_buf_in_urb_isoc(wa, urb, in wa_buf_in_cb()
2657 result = usb_submit_urb(urb, GFP_ATOMIC); in wa_buf_in_cb()
2702 urb->status); in wa_buf_in_cb()
2709 seg->result = urb->status; in wa_buf_in_cb()
2763 static void wa_dti_cb(struct urb *urb) in wa_dti_cb() argument
2766 struct wahc *wa = urb->context; in wa_dti_cb()
2771 BUG_ON(wa->dti_urb != urb); in wa_dti_cb()
2780 urb->actual_length, urb->transfer_buffer); in wa_dti_cb()
2781 if (urb->actual_length != sizeof(*xfer_result)) { in wa_dti_cb()
2783 urb->actual_length, in wa_dti_cb()
2817 dti_busy = wa_process_iso_packet_status(wa, urb); in wa_dti_cb()
2825 dev_dbg(dev, "DTI: going down! %d\n", urb->status); in wa_dti_cb()
2837 dev_err(dev, "DTI: URB error %d\n", urb->status); in wa_dti_cb()