Lines Matching refs:urbp

554 static void xenhcd_free_urb_priv(struct urb_priv *urbp)  in xenhcd_free_urb_priv()  argument
556 urbp->urb->hcpriv = NULL; in xenhcd_free_urb_priv()
557 kmem_cache_free(xenhcd_urbp_cachep, urbp); in xenhcd_free_urb_priv()
765 struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv; in xenhcd_giveback_urb() local
766 int priv_status = urbp->status; in xenhcd_giveback_urb()
768 list_del_init(&urbp->list); in xenhcd_giveback_urb()
769 xenhcd_free_urb_priv(urbp); in xenhcd_giveback_urb()
780 static int xenhcd_do_request(struct xenhcd_info *info, struct urb_priv *urbp) in xenhcd_do_request() argument
783 struct urb *urb = urbp->urb; in xenhcd_do_request()
792 if (unlikely(urbp->unlinked)) { in xenhcd_do_request()
793 req->u.unlink.unlink_id = urbp->req_id; in xenhcd_do_request()
796 urbp->unlink_req_id = id; in xenhcd_do_request()
803 urbp->req_id = id; in xenhcd_do_request()
822 struct urb_priv *urbp; in xenhcd_kick_pending_urbs() local
830 urbp = list_entry(info->pending_submit_list.next, in xenhcd_kick_pending_urbs()
832 if (!xenhcd_do_request(info, urbp)) in xenhcd_kick_pending_urbs()
833 list_move_tail(&urbp->list, &info->in_progress_list); in xenhcd_kick_pending_urbs()
835 xenhcd_giveback_urb(info, urbp->urb, -ESHUTDOWN); in xenhcd_kick_pending_urbs()
845 struct urb_priv *urbp, *tmp; in xenhcd_cancel_all_enqueued_urbs() local
848 list_for_each_entry_safe(urbp, tmp, &info->in_progress_list, list) { in xenhcd_cancel_all_enqueued_urbs()
849 req_id = urbp->req_id; in xenhcd_cancel_all_enqueued_urbs()
850 if (!urbp->unlinked) { in xenhcd_cancel_all_enqueued_urbs()
854 if (urbp->urb->status == -EINPROGRESS) in xenhcd_cancel_all_enqueued_urbs()
856 xenhcd_giveback_urb(info, urbp->urb, in xenhcd_cancel_all_enqueued_urbs()
859 xenhcd_giveback_urb(info, urbp->urb, in xenhcd_cancel_all_enqueued_urbs()
860 urbp->urb->status); in xenhcd_cancel_all_enqueued_urbs()
865 list_for_each_entry_safe(urbp, tmp, &info->pending_submit_list, list) in xenhcd_cancel_all_enqueued_urbs()
866 xenhcd_giveback_urb(info, urbp->urb, -ESHUTDOWN); in xenhcd_cancel_all_enqueued_urbs()
874 struct urb_priv *urbp, *tmp; in xenhcd_giveback_unlinked_urbs() local
876 list_for_each_entry_safe(urbp, tmp, &info->giveback_waiting_list, list) in xenhcd_giveback_unlinked_urbs()
877 xenhcd_giveback_urb(info, urbp->urb, urbp->urb->status); in xenhcd_giveback_unlinked_urbs()
880 static int xenhcd_submit_urb(struct xenhcd_info *info, struct urb_priv *urbp) in xenhcd_submit_urb() argument
885 list_add_tail(&urbp->list, &info->pending_submit_list); in xenhcd_submit_urb()
891 list_add_tail(&urbp->list, &info->pending_submit_list); in xenhcd_submit_urb()
896 ret = xenhcd_do_request(info, urbp); in xenhcd_submit_urb()
898 list_add_tail(&urbp->list, &info->in_progress_list); in xenhcd_submit_urb()
903 static int xenhcd_unlink_urb(struct xenhcd_info *info, struct urb_priv *urbp) in xenhcd_unlink_urb() argument
908 if (urbp->unlinked) in xenhcd_unlink_urb()
911 urbp->unlinked = true; in xenhcd_unlink_urb()
914 if (urbp->req_id == ~0) { in xenhcd_unlink_urb()
915 list_move_tail(&urbp->list, &info->giveback_waiting_list); in xenhcd_unlink_urb()
922 list_move_tail(&urbp->list, &info->pending_unlink_list); in xenhcd_unlink_urb()
928 list_move_tail(&urbp->list, &info->pending_unlink_list); in xenhcd_unlink_urb()
933 ret = xenhcd_do_request(info, urbp); in xenhcd_unlink_urb()
935 list_move_tail(&urbp->list, &info->in_progress_list); in xenhcd_unlink_urb()
1327 struct urb_priv *urbp; in xenhcd_urb_enqueue() local
1334 urbp = kmem_cache_zalloc(xenhcd_urbp_cachep, mem_flags); in xenhcd_urb_enqueue()
1335 if (!urbp) in xenhcd_urb_enqueue()
1340 urbp->urb = urb; in xenhcd_urb_enqueue()
1341 urb->hcpriv = urbp; in xenhcd_urb_enqueue()
1342 urbp->req_id = ~0; in xenhcd_urb_enqueue()
1343 urbp->unlink_req_id = ~0; in xenhcd_urb_enqueue()
1344 INIT_LIST_HEAD(&urbp->list); in xenhcd_urb_enqueue()
1345 urbp->status = 1; in xenhcd_urb_enqueue()
1348 ret = xenhcd_submit_urb(info, urbp); in xenhcd_urb_enqueue()
1351 xenhcd_free_urb_priv(urbp); in xenhcd_urb_enqueue()
1364 struct urb_priv *urbp; in xenhcd_urb_dequeue() local
1370 urbp = urb->hcpriv; in xenhcd_urb_dequeue()
1371 if (urbp) { in xenhcd_urb_dequeue()
1372 urbp->status = status; in xenhcd_urb_dequeue()
1373 ret = xenhcd_unlink_urb(info, urbp); in xenhcd_urb_dequeue()