Lines Matching refs:urbs
858 static void ucan_cleanup_rx_urbs(struct ucan_priv *up, struct urb **urbs)
863 if (urbs[i]) {
864 usb_unanchor_urb(urbs[i]);
867 urbs[i]->transfer_buffer,
868 urbs[i]->transfer_dma);
869 usb_free_urb(urbs[i]);
873 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS);
877 struct urb **urbs)
881 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS);
886 urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
887 if (!urbs[i])
892 GFP_KERNEL, &urbs[i]->transfer_dma);
895 usb_free_urb(urbs[i]);
896 urbs[i] = NULL;
900 usb_fill_bulk_urb(urbs[i], up->udev,
908 urbs[i]->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
910 usb_anchor_urb(urbs[i], &up->rx_urbs);
915 /* cleanup other unsubmitted urbs */
916 ucan_cleanup_rx_urbs(up, urbs);
920 /* Submits rx urbs with the semantic: Either submit all, or cleanup
921 * everything. I case of errors submitted urbs are killed and all urbs in
925 static int ucan_submit_rx_urbs(struct ucan_priv *up, struct urb **urbs)
929 /* Iterate over all urbs to submit. On success remove the urb
933 ret = usb_submit_urb(urbs[i], GFP_KERNEL);
944 usb_free_urb(urbs[i]);
945 urbs[i] = NULL;
950 /* Cleanup unsubmitted urbs */
951 ucan_cleanup_rx_urbs(up, urbs);
953 /* Kill urbs that are already submitted */
964 struct urb *urbs[UCAN_MAX_RX_URBS];
972 * urbs are stored in urbs[] for clean
974 ret = ucan_prepare_and_anchor_rx_urbs(up, urbs);
1010 ret = ucan_submit_rx_urbs(up, urbs);
1039 /* clean up unsubmitted urbs */
1040 ucan_cleanup_rx_urbs(up, urbs);