Lines Matching refs:urb
576 static void btusb_intr_complete(struct urb *urb) in btusb_intr_complete() argument
578 struct hci_dev *hdev = urb->context; in btusb_intr_complete()
582 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_intr_complete()
583 urb->actual_length); in btusb_intr_complete()
588 if (urb->status == 0) { in btusb_intr_complete()
589 hdev->stat.byte_rx += urb->actual_length; in btusb_intr_complete()
591 if (btusb_recv_intr(data, urb->transfer_buffer, in btusb_intr_complete()
592 urb->actual_length) < 0) { in btusb_intr_complete()
596 } else if (urb->status == -ENOENT) { in btusb_intr_complete()
605 usb_anchor_urb(urb, &data->intr_anchor); in btusb_intr_complete()
607 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_intr_complete()
613 hdev->name, urb, -err); in btusb_intr_complete()
614 usb_unanchor_urb(urb); in btusb_intr_complete()
621 struct urb *urb; in btusb_submit_intr_urb() local
631 urb = usb_alloc_urb(0, mem_flags); in btusb_submit_intr_urb()
632 if (!urb) in btusb_submit_intr_urb()
639 usb_free_urb(urb); in btusb_submit_intr_urb()
645 usb_fill_int_urb(urb, data->udev, pipe, buf, size, in btusb_submit_intr_urb()
648 urb->transfer_flags |= URB_FREE_BUFFER; in btusb_submit_intr_urb()
650 usb_anchor_urb(urb, &data->intr_anchor); in btusb_submit_intr_urb()
652 err = usb_submit_urb(urb, mem_flags); in btusb_submit_intr_urb()
656 hdev->name, urb, -err); in btusb_submit_intr_urb()
657 usb_unanchor_urb(urb); in btusb_submit_intr_urb()
660 usb_free_urb(urb); in btusb_submit_intr_urb()
665 static void btusb_bulk_complete(struct urb *urb) in btusb_bulk_complete() argument
667 struct hci_dev *hdev = urb->context; in btusb_bulk_complete()
671 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_bulk_complete()
672 urb->actual_length); in btusb_bulk_complete()
677 if (urb->status == 0) { in btusb_bulk_complete()
678 hdev->stat.byte_rx += urb->actual_length; in btusb_bulk_complete()
680 if (data->recv_bulk(data, urb->transfer_buffer, in btusb_bulk_complete()
681 urb->actual_length) < 0) { in btusb_bulk_complete()
685 } else if (urb->status == -ENOENT) { in btusb_bulk_complete()
693 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_bulk_complete()
696 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_bulk_complete()
702 hdev->name, urb, -err); in btusb_bulk_complete()
703 usb_unanchor_urb(urb); in btusb_bulk_complete()
710 struct urb *urb; in btusb_submit_bulk_urb() local
720 urb = usb_alloc_urb(0, mem_flags); in btusb_submit_bulk_urb()
721 if (!urb) in btusb_submit_bulk_urb()
726 usb_free_urb(urb); in btusb_submit_bulk_urb()
732 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size, in btusb_submit_bulk_urb()
735 urb->transfer_flags |= URB_FREE_BUFFER; in btusb_submit_bulk_urb()
738 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_submit_bulk_urb()
740 err = usb_submit_urb(urb, mem_flags); in btusb_submit_bulk_urb()
744 hdev->name, urb, -err); in btusb_submit_bulk_urb()
745 usb_unanchor_urb(urb); in btusb_submit_bulk_urb()
748 usb_free_urb(urb); in btusb_submit_bulk_urb()
753 static void btusb_isoc_complete(struct urb *urb) in btusb_isoc_complete() argument
755 struct hci_dev *hdev = urb->context; in btusb_isoc_complete()
759 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_complete()
760 urb->actual_length); in btusb_isoc_complete()
765 if (urb->status == 0) { in btusb_isoc_complete()
766 for (i = 0; i < urb->number_of_packets; i++) { in btusb_isoc_complete()
767 unsigned int offset = urb->iso_frame_desc[i].offset; in btusb_isoc_complete()
768 unsigned int length = urb->iso_frame_desc[i].actual_length; in btusb_isoc_complete()
770 if (urb->iso_frame_desc[i].status) in btusb_isoc_complete()
775 if (btusb_recv_isoc(data, urb->transfer_buffer + offset, in btusb_isoc_complete()
781 } else if (urb->status == -ENOENT) { in btusb_isoc_complete()
789 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_isoc_complete()
791 err = usb_submit_urb(urb, GFP_ATOMIC); in btusb_isoc_complete()
797 hdev->name, urb, -err); in btusb_isoc_complete()
798 usb_unanchor_urb(urb); in btusb_isoc_complete()
802 static inline void __fill_isoc_descriptor(struct urb *urb, int len, int mtu) in __fill_isoc_descriptor() argument
810 urb->iso_frame_desc[i].offset = offset; in __fill_isoc_descriptor()
811 urb->iso_frame_desc[i].length = mtu; in __fill_isoc_descriptor()
815 urb->iso_frame_desc[i].offset = offset; in __fill_isoc_descriptor()
816 urb->iso_frame_desc[i].length = len; in __fill_isoc_descriptor()
820 urb->number_of_packets = i; in __fill_isoc_descriptor()
826 struct urb *urb; in btusb_submit_isoc_urb() local
836 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, mem_flags); in btusb_submit_isoc_urb()
837 if (!urb) in btusb_submit_isoc_urb()
845 usb_free_urb(urb); in btusb_submit_isoc_urb()
851 usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete, in btusb_submit_isoc_urb()
854 urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP; in btusb_submit_isoc_urb()
856 __fill_isoc_descriptor(urb, size, in btusb_submit_isoc_urb()
859 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_submit_isoc_urb()
861 err = usb_submit_urb(urb, mem_flags); in btusb_submit_isoc_urb()
865 hdev->name, urb, -err); in btusb_submit_isoc_urb()
866 usb_unanchor_urb(urb); in btusb_submit_isoc_urb()
869 usb_free_urb(urb); in btusb_submit_isoc_urb()
874 static void btusb_tx_complete(struct urb *urb) in btusb_tx_complete() argument
876 struct sk_buff *skb = urb->context; in btusb_tx_complete()
880 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_tx_complete()
881 urb->actual_length); in btusb_tx_complete()
886 if (!urb->status) in btusb_tx_complete()
887 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_tx_complete()
896 kfree(urb->setup_packet); in btusb_tx_complete()
901 static void btusb_isoc_tx_complete(struct urb *urb) in btusb_isoc_tx_complete() argument
903 struct sk_buff *skb = urb->context; in btusb_isoc_tx_complete()
906 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_tx_complete()
907 urb->actual_length); in btusb_isoc_tx_complete()
912 if (!urb->status) in btusb_isoc_tx_complete()
913 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_isoc_tx_complete()
918 kfree(urb->setup_packet); in btusb_isoc_tx_complete()
1026 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_ctrl_urb()
1030 struct urb *urb; in alloc_ctrl_urb() local
1033 urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_ctrl_urb()
1034 if (!urb) in alloc_ctrl_urb()
1039 usb_free_urb(urb); in alloc_ctrl_urb()
1051 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr, in alloc_ctrl_urb()
1056 return urb; in alloc_ctrl_urb()
1059 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_bulk_urb()
1062 struct urb *urb; in alloc_bulk_urb() local
1068 urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_bulk_urb()
1069 if (!urb) in alloc_bulk_urb()
1074 usb_fill_bulk_urb(urb, data->udev, pipe, in alloc_bulk_urb()
1079 return urb; in alloc_bulk_urb()
1082 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_isoc_urb()
1085 struct urb *urb; in alloc_isoc_urb() local
1091 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, GFP_KERNEL); in alloc_isoc_urb()
1092 if (!urb) in alloc_isoc_urb()
1097 usb_fill_int_urb(urb, data->udev, pipe, in alloc_isoc_urb()
1101 urb->transfer_flags = URB_ISO_ASAP; in alloc_isoc_urb()
1103 __fill_isoc_descriptor(urb, skb->len, in alloc_isoc_urb()
1108 return urb; in alloc_isoc_urb()
1111 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_tx_urb() argument
1116 usb_anchor_urb(urb, &data->tx_anchor); in submit_tx_urb()
1118 err = usb_submit_urb(urb, GFP_KERNEL); in submit_tx_urb()
1122 hdev->name, urb, -err); in submit_tx_urb()
1123 kfree(urb->setup_packet); in submit_tx_urb()
1124 usb_unanchor_urb(urb); in submit_tx_urb()
1129 usb_free_urb(urb); in submit_tx_urb()
1133 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_or_queue_tx_urb() argument
1146 return submit_tx_urb(hdev, urb); in submit_or_queue_tx_urb()
1148 usb_anchor_urb(urb, &data->deferred); in submit_or_queue_tx_urb()
1151 usb_free_urb(urb); in submit_or_queue_tx_urb()
1157 struct urb *urb; in btusb_send_frame() local
1166 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame()
1167 if (IS_ERR(urb)) in btusb_send_frame()
1168 return PTR_ERR(urb); in btusb_send_frame()
1171 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1174 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame()
1175 if (IS_ERR(urb)) in btusb_send_frame()
1176 return PTR_ERR(urb); in btusb_send_frame()
1179 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1185 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame()
1186 if (IS_ERR(urb)) in btusb_send_frame()
1187 return PTR_ERR(urb); in btusb_send_frame()
1190 return submit_tx_urb(hdev, urb); in btusb_send_frame()
2233 struct urb *urb; in btusb_send_frame_intel() local
2251 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
2253 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
2263 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
2265 if (IS_ERR(urb)) in btusb_send_frame_intel()
2266 return PTR_ERR(urb); in btusb_send_frame_intel()
2269 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
2272 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
2273 if (IS_ERR(urb)) in btusb_send_frame_intel()
2274 return PTR_ERR(urb); in btusb_send_frame_intel()
2277 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
2283 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame_intel()
2284 if (IS_ERR(urb)) in btusb_send_frame_intel()
2285 return PTR_ERR(urb); in btusb_send_frame_intel()
2288 return submit_tx_urb(hdev, urb); in btusb_send_frame_intel()
3341 struct urb *urb; in play_deferred() local
3344 while ((urb = usb_get_from_anchor(&data->deferred))) { in play_deferred()
3345 err = usb_submit_urb(urb, GFP_ATOMIC); in play_deferred()