Lines Matching refs:urb

28 	struct urb *urb;
53 struct urb *urb;
58 /* Virtual Host Controller has 4 urb queues */
556 urbp->urb->hcpriv = NULL;
574 info->shadow[id].urb = NULL;
642 static int xenhcd_map_urb_for_request(struct xenhcd_info *info, struct urb *urb,
650 if (urb->transfer_buffer_length) {
651 nr_buff_pages = xenhcd_count_pages(urb->transfer_buffer,
652 urb->transfer_buffer_length);
654 if (usb_pipeisoc(urb->pipe))
656 &urb->iso_frame_desc[0],
658 urb->number_of_packets);
671 xenhcd_gnttab_map(info, urb->transfer_buffer,
672 urb->transfer_buffer_length, &gref_head,
674 usb_pipein(urb->pipe) ? 0 : GTF_readonly);
677 req->pipe = xenhcd_pipe_urb_to_xenusb(urb->pipe, urb->dev->portnum);
679 if (urb->transfer_flags & URB_SHORT_NOT_OK)
681 req->buffer_length = urb->transfer_buffer_length;
684 switch (usb_pipetype(urb->pipe)) {
686 req->u.isoc.interval = urb->interval;
687 req->u.isoc.start_frame = urb->start_frame;
688 req->u.isoc.number_of_packets = urb->number_of_packets;
691 xenhcd_gnttab_map(info, &urb->iso_frame_desc[0],
693 urb->number_of_packets,
698 req->u.intr.interval = urb->interval;
701 if (urb->setup_packet)
702 memcpy(req->u.ctrl, urb->setup_packet, 8);
762 static void xenhcd_giveback_urb(struct xenhcd_info *info, struct urb *urb,
765 struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv;
771 if (urb->status == -EINPROGRESS)
772 urb->status = xenhcd_translate_status(status);
775 usb_hcd_giveback_urb(xenhcd_info_to_hcd(info), urb,
776 priv_status <= 0 ? priv_status : urb->status);
783 struct urb *urb = urbp->urb;
795 urb->pipe, urb->dev->portnum));
798 ret = xenhcd_map_urb_for_request(info, urb, req);
810 info->shadow[id].urb = urb;
835 xenhcd_giveback_urb(info, urbp->urb, -ESHUTDOWN);
854 if (urbp->urb->status == -EINPROGRESS)
856 xenhcd_giveback_urb(info, urbp->urb,
859 xenhcd_giveback_urb(info, urbp->urb,
860 urbp->urb->status);
862 info->shadow[req_id].urb = NULL;
866 xenhcd_giveback_urb(info, urbp->urb, -ESHUTDOWN);
877 xenhcd_giveback_urb(info, urbp->urb, urbp->urb->status);
913 /* the urb is still in pending_submit queue */
941 struct xenusb_urb_response *res, struct urb *urb)
943 if (unlikely(!urb))
946 if (res->actual_length > urb->transfer_buffer_length)
947 urb->actual_length = urb->transfer_buffer_length;
949 urb->actual_length = 0;
951 urb->actual_length = res->actual_length;
952 urb->error_count = res->error_count;
953 urb->start_frame = res->start_frame;
954 xenhcd_giveback_urb(info, urb, res->status);
970 xenhcd_set_error(info, "Illegal index on urb-ring");
979 xenhcd_set_error(info, "Illegal data on urb-ring");
987 xenhcd_res_to_urb(info, &res, info->shadow[id].urb);
1118 xenbus_dev_fatal(dev, err, "allocating urb ring");
1179 err = xenbus_printf(xbt, dev->nodename, "urb-ring-ref", "%u",
1182 message = "writing urb-ring-ref";
1321 * non-error returns are promise to giveback the urb later
1323 static int xenhcd_urb_enqueue(struct usb_hcd *hcd, struct urb *urb,
1340 urbp->urb = urb;
1341 urb->hcpriv = urbp;
1346 urb->unlinked = false;
1361 static int xenhcd_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
1370 urbp = urb->hcpriv;
1402 /* managing urb I/O */
1427 /* managing urb I/O */
1491 info->shadow[i].urb = NULL;