Lines Matching full:urbs

261 /* Context Information for transmission URBs */
862 static void ucan_cleanup_rx_urbs(struct ucan_priv *up, struct urb **urbs) in ucan_cleanup_rx_urbs() argument
867 if (urbs[i]) { in ucan_cleanup_rx_urbs()
868 usb_unanchor_urb(urbs[i]); in ucan_cleanup_rx_urbs()
871 urbs[i]->transfer_buffer, in ucan_cleanup_rx_urbs()
872 urbs[i]->transfer_dma); in ucan_cleanup_rx_urbs()
873 usb_free_urb(urbs[i]); in ucan_cleanup_rx_urbs()
877 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS); in ucan_cleanup_rx_urbs()
881 struct urb **urbs) in ucan_prepare_and_anchor_rx_urbs() argument
885 memset(urbs, 0, sizeof(*urbs) * UCAN_MAX_RX_URBS); in ucan_prepare_and_anchor_rx_urbs()
890 urbs[i] = usb_alloc_urb(0, GFP_KERNEL); in ucan_prepare_and_anchor_rx_urbs()
891 if (!urbs[i]) in ucan_prepare_and_anchor_rx_urbs()
896 GFP_KERNEL, &urbs[i]->transfer_dma); in ucan_prepare_and_anchor_rx_urbs()
899 usb_free_urb(urbs[i]); in ucan_prepare_and_anchor_rx_urbs()
900 urbs[i] = NULL; in ucan_prepare_and_anchor_rx_urbs()
904 usb_fill_bulk_urb(urbs[i], up->udev, in ucan_prepare_and_anchor_rx_urbs()
912 urbs[i]->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in ucan_prepare_and_anchor_rx_urbs()
914 usb_anchor_urb(urbs[i], &up->rx_urbs); in ucan_prepare_and_anchor_rx_urbs()
919 /* cleanup other unsubmitted urbs */ in ucan_prepare_and_anchor_rx_urbs()
920 ucan_cleanup_rx_urbs(up, urbs); in ucan_prepare_and_anchor_rx_urbs()
924 /* Submits rx urbs with the semantic: Either submit all, or cleanup
925 * everything. I case of errors submitted urbs are killed and all urbs in
929 static int ucan_submit_rx_urbs(struct ucan_priv *up, struct urb **urbs) in ucan_submit_rx_urbs() argument
933 /* Iterate over all urbs to submit. On success remove the urb in ucan_submit_rx_urbs()
937 ret = usb_submit_urb(urbs[i], GFP_KERNEL); in ucan_submit_rx_urbs()
948 usb_free_urb(urbs[i]); in ucan_submit_rx_urbs()
949 urbs[i] = NULL; in ucan_submit_rx_urbs()
954 /* Cleanup unsubmitted urbs */ in ucan_submit_rx_urbs()
955 ucan_cleanup_rx_urbs(up, urbs); in ucan_submit_rx_urbs()
957 /* Kill urbs that are already submitted */ in ucan_submit_rx_urbs()
968 struct urb *urbs[UCAN_MAX_RX_URBS]; in ucan_open() local
975 /* Allocate and prepare IN URBS - allocated and anchored in ucan_open()
976 * urbs are stored in urbs[] for clean in ucan_open()
978 ret = ucan_prepare_and_anchor_rx_urbs(up, urbs); in ucan_open()
1013 /* Driver is ready to receive data. Submit RX URBS */ in ucan_open()
1014 ret = ucan_submit_rx_urbs(up, urbs); in ucan_open()
1043 /* clean up unsubmitted urbs */ in ucan_open()
1044 ucan_cleanup_rx_urbs(up, urbs); in ucan_open()
1063 netdev_err(up->netdev, "no memory left for URBs\n"); in ucan_prepare_tx_urb()