Lines Matching refs:urb
597 static void btusb_intr_complete(struct urb *urb) in btusb_intr_complete() argument
599 struct hci_dev *hdev = urb->context; in btusb_intr_complete()
603 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_intr_complete()
604 urb->actual_length); in btusb_intr_complete()
609 if (urb->status == 0) { in btusb_intr_complete()
610 hdev->stat.byte_rx += urb->actual_length; in btusb_intr_complete()
612 if (btusb_recv_intr(data, urb->transfer_buffer, in btusb_intr_complete()
613 urb->actual_length) < 0) { in btusb_intr_complete()
617 } else if (urb->status == -ENOENT) { in btusb_intr_complete()
626 usb_anchor_urb(urb, &data->intr_anchor); in btusb_intr_complete()
628 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_intr_complete()
634 hdev->name, urb, -err); in btusb_intr_complete()
635 usb_unanchor_urb(urb); in btusb_intr_complete()
642 struct urb *urb; in btusb_submit_intr_urb() local
652 urb = usb_alloc_urb(0, mem_flags); in btusb_submit_intr_urb()
653 if (!urb) in btusb_submit_intr_urb()
660 usb_free_urb(urb); in btusb_submit_intr_urb()
666 usb_fill_int_urb(urb, data->udev, pipe, buf, size, in btusb_submit_intr_urb()
669 urb->transfer_flags |= URB_FREE_BUFFER; in btusb_submit_intr_urb()
671 usb_anchor_urb(urb, &data->intr_anchor); in btusb_submit_intr_urb()
673 err = usb_submit_urb(urb, mem_flags); in btusb_submit_intr_urb()
677 hdev->name, urb, -err); in btusb_submit_intr_urb()
678 usb_unanchor_urb(urb); in btusb_submit_intr_urb()
681 usb_free_urb(urb); in btusb_submit_intr_urb()
686 static void btusb_bulk_complete(struct urb *urb) in btusb_bulk_complete() argument
688 struct hci_dev *hdev = urb->context; in btusb_bulk_complete()
692 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_bulk_complete()
693 urb->actual_length); in btusb_bulk_complete()
698 if (urb->status == 0) { in btusb_bulk_complete()
699 hdev->stat.byte_rx += urb->actual_length; in btusb_bulk_complete()
701 if (data->recv_bulk(data, urb->transfer_buffer, in btusb_bulk_complete()
702 urb->actual_length) < 0) { in btusb_bulk_complete()
706 } else if (urb->status == -ENOENT) { in btusb_bulk_complete()
714 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_bulk_complete()
717 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_bulk_complete()
723 hdev->name, urb, -err); in btusb_bulk_complete()
724 usb_unanchor_urb(urb); in btusb_bulk_complete()
731 struct urb *urb; in btusb_submit_bulk_urb() local
741 urb = usb_alloc_urb(0, mem_flags); in btusb_submit_bulk_urb()
742 if (!urb) in btusb_submit_bulk_urb()
747 usb_free_urb(urb); in btusb_submit_bulk_urb()
753 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size, in btusb_submit_bulk_urb()
756 urb->transfer_flags |= URB_FREE_BUFFER; in btusb_submit_bulk_urb()
759 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_submit_bulk_urb()
761 err = usb_submit_urb(urb, mem_flags); in btusb_submit_bulk_urb()
765 hdev->name, urb, -err); in btusb_submit_bulk_urb()
766 usb_unanchor_urb(urb); in btusb_submit_bulk_urb()
769 usb_free_urb(urb); in btusb_submit_bulk_urb()
774 static void btusb_isoc_complete(struct urb *urb) in btusb_isoc_complete() argument
776 struct hci_dev *hdev = urb->context; in btusb_isoc_complete()
780 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_complete()
781 urb->actual_length); in btusb_isoc_complete()
786 if (urb->status == 0) { in btusb_isoc_complete()
787 for (i = 0; i < urb->number_of_packets; i++) { in btusb_isoc_complete()
788 unsigned int offset = urb->iso_frame_desc[i].offset; in btusb_isoc_complete()
789 unsigned int length = urb->iso_frame_desc[i].actual_length; in btusb_isoc_complete()
791 if (urb->iso_frame_desc[i].status) in btusb_isoc_complete()
796 if (btusb_recv_isoc(data, urb->transfer_buffer + offset, in btusb_isoc_complete()
802 } else if (urb->status == -ENOENT) { in btusb_isoc_complete()
810 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_isoc_complete()
812 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_isoc_complete()
818 hdev->name, urb, -err); in btusb_isoc_complete()
819 usb_unanchor_urb(urb); in btusb_isoc_complete()
823 static inline void __fill_isoc_descriptor(struct urb *urb, int len, int mtu) in __fill_isoc_descriptor() argument
831 urb->iso_frame_desc[i].offset = offset; in __fill_isoc_descriptor()
832 urb->iso_frame_desc[i].length = mtu; in __fill_isoc_descriptor()
836 urb->iso_frame_desc[i].offset = offset; in __fill_isoc_descriptor()
837 urb->iso_frame_desc[i].length = len; in __fill_isoc_descriptor()
841 urb->number_of_packets = i; in __fill_isoc_descriptor()
847 struct urb *urb; in btusb_submit_isoc_urb() local
857 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, mem_flags); in btusb_submit_isoc_urb()
858 if (!urb) in btusb_submit_isoc_urb()
866 usb_free_urb(urb); in btusb_submit_isoc_urb()
872 usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete, in btusb_submit_isoc_urb()
875 urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP; in btusb_submit_isoc_urb()
877 __fill_isoc_descriptor(urb, size, in btusb_submit_isoc_urb()
880 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_submit_isoc_urb()
882 err = usb_submit_urb(urb, mem_flags); in btusb_submit_isoc_urb()
886 hdev->name, urb, -err); in btusb_submit_isoc_urb()
887 usb_unanchor_urb(urb); in btusb_submit_isoc_urb()
890 usb_free_urb(urb); in btusb_submit_isoc_urb()
895 static void btusb_diag_complete(struct urb *urb) in btusb_diag_complete() argument
897 struct hci_dev *hdev = urb->context; in btusb_diag_complete()
901 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_diag_complete()
902 urb->actual_length); in btusb_diag_complete()
904 if (urb->status == 0) { in btusb_diag_complete()
907 skb = bt_skb_alloc(urb->actual_length, GFP_ATOMIC); in btusb_diag_complete()
909 memcpy(skb_put(skb, urb->actual_length), in btusb_diag_complete()
910 urb->transfer_buffer, urb->actual_length); in btusb_diag_complete()
913 } else if (urb->status == -ENOENT) { in btusb_diag_complete()
921 usb_anchor_urb(urb, &data->diag_anchor); in btusb_diag_complete()
924 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_diag_complete()
930 hdev->name, urb, -err); in btusb_diag_complete()
931 usb_unanchor_urb(urb); in btusb_diag_complete()
938 struct urb *urb; in btusb_submit_diag_urb() local
948 urb = usb_alloc_urb(0, mem_flags); in btusb_submit_diag_urb()
949 if (!urb) in btusb_submit_diag_urb()
954 usb_free_urb(urb); in btusb_submit_diag_urb()
960 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size, in btusb_submit_diag_urb()
963 urb->transfer_flags |= URB_FREE_BUFFER; in btusb_submit_diag_urb()
966 usb_anchor_urb(urb, &data->diag_anchor); in btusb_submit_diag_urb()
968 err = usb_submit_urb(urb, mem_flags); in btusb_submit_diag_urb()
972 hdev->name, urb, -err); in btusb_submit_diag_urb()
973 usb_unanchor_urb(urb); in btusb_submit_diag_urb()
976 usb_free_urb(urb); in btusb_submit_diag_urb()
981 static void btusb_tx_complete(struct urb *urb) in btusb_tx_complete() argument
983 struct sk_buff *skb = urb->context; in btusb_tx_complete()
987 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_tx_complete()
988 urb->actual_length); in btusb_tx_complete()
993 if (!urb->status) in btusb_tx_complete()
994 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_tx_complete()
1003 kfree(urb->setup_packet); in btusb_tx_complete()
1008 static void btusb_isoc_tx_complete(struct urb *urb) in btusb_isoc_tx_complete() argument
1010 struct sk_buff *skb = urb->context; in btusb_isoc_tx_complete()
1013 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_tx_complete()
1014 urb->actual_length); in btusb_isoc_tx_complete()
1019 if (!urb->status) in btusb_isoc_tx_complete()
1020 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_isoc_tx_complete()
1025 kfree(urb->setup_packet); in btusb_isoc_tx_complete()
1133 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_ctrl_urb()
1137 struct urb *urb; in alloc_ctrl_urb() local
1140 urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_ctrl_urb()
1141 if (!urb) in alloc_ctrl_urb()
1146 usb_free_urb(urb); in alloc_ctrl_urb()
1158 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr, in alloc_ctrl_urb()
1163 return urb; in alloc_ctrl_urb()
1166 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_bulk_urb()
1169 struct urb *urb; in alloc_bulk_urb() local
1175 urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_bulk_urb()
1176 if (!urb) in alloc_bulk_urb()
1181 usb_fill_bulk_urb(urb, data->udev, pipe, in alloc_bulk_urb()
1186 return urb; in alloc_bulk_urb()
1189 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_isoc_urb()
1192 struct urb *urb; in alloc_isoc_urb() local
1198 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, GFP_KERNEL); in alloc_isoc_urb()
1199 if (!urb) in alloc_isoc_urb()
1204 usb_fill_int_urb(urb, data->udev, pipe, in alloc_isoc_urb()
1208 urb->transfer_flags = URB_ISO_ASAP; in alloc_isoc_urb()
1210 __fill_isoc_descriptor(urb, skb->len, in alloc_isoc_urb()
1215 return urb; in alloc_isoc_urb()
1218 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_tx_urb() argument
1223 usb_anchor_urb(urb, &data->tx_anchor); in submit_tx_urb()
1225 err = usb_submit_urb(urb, GFP_KERNEL); in submit_tx_urb()
1229 hdev->name, urb, -err); in submit_tx_urb()
1230 kfree(urb->setup_packet); in submit_tx_urb()
1231 usb_unanchor_urb(urb); in submit_tx_urb()
1236 usb_free_urb(urb); in submit_tx_urb()
1240 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_or_queue_tx_urb() argument
1253 return submit_tx_urb(hdev, urb); in submit_or_queue_tx_urb()
1255 usb_anchor_urb(urb, &data->deferred); in submit_or_queue_tx_urb()
1258 usb_free_urb(urb); in submit_or_queue_tx_urb()
1264 struct urb *urb; in btusb_send_frame() local
1270 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame()
1271 if (IS_ERR(urb)) in btusb_send_frame()
1272 return PTR_ERR(urb); in btusb_send_frame()
1275 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1278 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame()
1279 if (IS_ERR(urb)) in btusb_send_frame()
1280 return PTR_ERR(urb); in btusb_send_frame()
1283 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1289 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame()
1290 if (IS_ERR(urb)) in btusb_send_frame()
1291 return PTR_ERR(urb); in btusb_send_frame()
1294 return submit_tx_urb(hdev, urb); in btusb_send_frame()
1952 struct urb *urb; in btusb_send_frame_intel() local
1967 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
1969 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
1979 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
1981 if (IS_ERR(urb)) in btusb_send_frame_intel()
1982 return PTR_ERR(urb); in btusb_send_frame_intel()
1985 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
1988 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
1989 if (IS_ERR(urb)) in btusb_send_frame_intel()
1990 return PTR_ERR(urb); in btusb_send_frame_intel()
1993 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
1999 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame_intel()
2000 if (IS_ERR(urb)) in btusb_send_frame_intel()
2001 return PTR_ERR(urb); in btusb_send_frame_intel()
2004 return submit_tx_urb(hdev, urb); in btusb_send_frame_intel()
2725 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable) in alloc_diag_urb()
2729 struct urb *urb; in alloc_diag_urb() local
2735 urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_diag_urb()
2736 if (!urb) in alloc_diag_urb()
2741 usb_free_urb(urb); in alloc_diag_urb()
2750 usb_fill_bulk_urb(urb, data->udev, pipe, in alloc_diag_urb()
2755 return urb; in alloc_diag_urb()
2761 struct urb *urb; in btusb_bcm_set_diag() local
2769 urb = alloc_diag_urb(hdev, enable); in btusb_bcm_set_diag()
2770 if (IS_ERR(urb)) in btusb_bcm_set_diag()
2771 return PTR_ERR(urb); in btusb_bcm_set_diag()
2773 return submit_or_queue_tx_urb(hdev, urb); in btusb_bcm_set_diag()
3149 struct urb *urb; in play_deferred() local
3152 while ((urb = usb_get_from_anchor(&data->deferred))) { in play_deferred()
3153 err = usb_submit_urb(urb, GFP_ATOMIC); in play_deferred()