aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btusb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r--drivers/bluetooth/btusb.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index f9b726091ad0..2bd87d45f1c2 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -100,6 +100,9 @@ static struct usb_device_id btusb_table[] = {
100 /* Canyon CN-BTU1 with HID interfaces */ 100 /* Canyon CN-BTU1 with HID interfaces */
101 { USB_DEVICE(0x0c10, 0x0000) }, 101 { USB_DEVICE(0x0c10, 0x0000) },
102 102
103 /* Broadcom BCM20702A0 */
104 { USB_DEVICE(0x413c, 0x8197) },
105
103 { } /* Terminating entry */ 106 { } /* Terminating entry */
104}; 107};
105 108
@@ -312,7 +315,8 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
312 315
313 err = usb_submit_urb(urb, mem_flags); 316 err = usb_submit_urb(urb, mem_flags);
314 if (err < 0) { 317 if (err < 0) {
315 BT_ERR("%s urb %p submission failed (%d)", 318 if (err != -EPERM && err != -ENODEV)
319 BT_ERR("%s urb %p submission failed (%d)",
316 hdev->name, urb, -err); 320 hdev->name, urb, -err);
317 usb_unanchor_urb(urb); 321 usb_unanchor_urb(urb);
318 } 322 }
@@ -397,7 +401,8 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
397 401
398 err = usb_submit_urb(urb, mem_flags); 402 err = usb_submit_urb(urb, mem_flags);
399 if (err < 0) { 403 if (err < 0) {
400 BT_ERR("%s urb %p submission failed (%d)", 404 if (err != -EPERM && err != -ENODEV)
405 BT_ERR("%s urb %p submission failed (%d)",
401 hdev->name, urb, -err); 406 hdev->name, urb, -err);
402 usb_unanchor_urb(urb); 407 usb_unanchor_urb(urb);
403 } 408 }
@@ -520,7 +525,8 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
520 525
521 err = usb_submit_urb(urb, mem_flags); 526 err = usb_submit_urb(urb, mem_flags);
522 if (err < 0) { 527 if (err < 0) {
523 BT_ERR("%s urb %p submission failed (%d)", 528 if (err != -EPERM && err != -ENODEV)
529 BT_ERR("%s urb %p submission failed (%d)",
524 hdev->name, urb, -err); 530 hdev->name, urb, -err);
525 usb_unanchor_urb(urb); 531 usb_unanchor_urb(urb);
526 } 532 }
@@ -724,6 +730,9 @@ static int btusb_send_frame(struct sk_buff *skb)
724 usb_fill_bulk_urb(urb, data->udev, pipe, 730 usb_fill_bulk_urb(urb, data->udev, pipe,
725 skb->data, skb->len, btusb_tx_complete, skb); 731 skb->data, skb->len, btusb_tx_complete, skb);
726 732
733 if (skb->priority >= HCI_PRIO_MAX - 1)
734 urb->transfer_flags = URB_ISO_ASAP;
735
727 hdev->stat.acl_tx++; 736 hdev->stat.acl_tx++;
728 break; 737 break;
729 738
@@ -767,7 +776,9 @@ skip_waking:
767 776
768 err = usb_submit_urb(urb, GFP_ATOMIC); 777 err = usb_submit_urb(urb, GFP_ATOMIC);
769 if (err < 0) { 778 if (err < 0) {
770 BT_ERR("%s urb %p submission failed", hdev->name, urb); 779 if (err != -EPERM && err != -ENODEV)
780 BT_ERR("%s urb %p submission failed (%d)",
781 hdev->name, urb, -err);
771 kfree(urb->setup_packet); 782 kfree(urb->setup_packet);
772 usb_unanchor_urb(urb); 783 usb_unanchor_urb(urb);
773 } else { 784 } else {