Lines Matching refs:urbs
860 static void ucan_cleanup_rx_urbs(struct ucan_priv *up, struct urb **urbs)
865 if (urbs[i]) {
866 usb_unanchor_urb(urbs[i]);
869 urbs[i]->transfer_buffer,
870 urbs[i]->transfer_dma);
871 usb_free_urb(urbs[i]);
875 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS);
879 struct urb **urbs)
883 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS);
888 urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
889 if (!urbs[i])
894 GFP_KERNEL, &urbs[i]->transfer_dma);
897 usb_free_urb(urbs[i]);
898 urbs[i] = NULL;
902 usb_fill_bulk_urb(urbs[i], up->udev,
910 urbs[i]->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
912 usb_anchor_urb(urbs[i], &up->rx_urbs);
917 /* cleanup other unsubmitted urbs */
918 ucan_cleanup_rx_urbs(up, urbs);
922 /* Submits rx urbs with the semantic: Either submit all, or cleanup
923 * everything. I case of errors submitted urbs are killed and all urbs in
927 static int ucan_submit_rx_urbs(struct ucan_priv *up, struct urb **urbs)
931 /* Iterate over all urbs to submit. On success remove the urb
935 ret = usb_submit_urb(urbs[i], GFP_KERNEL);
946 usb_free_urb(urbs[i]);
947 urbs[i] = NULL;
952 /* Cleanup unsubmitted urbs */
953 ucan_cleanup_rx_urbs(up, urbs);
955 /* Kill urbs that are already submitted */
966 struct urb *urbs[UCAN_MAX_RX_URBS];
974 * urbs are stored in urbs[] for clean
976 ret = ucan_prepare_and_anchor_rx_urbs(up, urbs);
1012 ret = ucan_submit_rx_urbs(up, urbs);
1041 /* clean up unsubmitted urbs */
1042 ucan_cleanup_rx_urbs(up, urbs);