diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r-- | drivers/bluetooth/btusb.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index fe4ebc375b3d..2bd87d45f1c2 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
@@ -315,7 +315,8 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags) | |||
315 | 315 | ||
316 | err = usb_submit_urb(urb, mem_flags); | 316 | err = usb_submit_urb(urb, mem_flags); |
317 | if (err < 0) { | 317 | if (err < 0) { |
318 | BT_ERR("%s urb %p submission failed (%d)", | 318 | if (err != -EPERM && err != -ENODEV) |
319 | BT_ERR("%s urb %p submission failed (%d)", | ||
319 | hdev->name, urb, -err); | 320 | hdev->name, urb, -err); |
320 | usb_unanchor_urb(urb); | 321 | usb_unanchor_urb(urb); |
321 | } | 322 | } |
@@ -400,7 +401,8 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags) | |||
400 | 401 | ||
401 | err = usb_submit_urb(urb, mem_flags); | 402 | err = usb_submit_urb(urb, mem_flags); |
402 | if (err < 0) { | 403 | if (err < 0) { |
403 | BT_ERR("%s urb %p submission failed (%d)", | 404 | if (err != -EPERM && err != -ENODEV) |
405 | BT_ERR("%s urb %p submission failed (%d)", | ||
404 | hdev->name, urb, -err); | 406 | hdev->name, urb, -err); |
405 | usb_unanchor_urb(urb); | 407 | usb_unanchor_urb(urb); |
406 | } | 408 | } |
@@ -523,7 +525,8 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags) | |||
523 | 525 | ||
524 | err = usb_submit_urb(urb, mem_flags); | 526 | err = usb_submit_urb(urb, mem_flags); |
525 | if (err < 0) { | 527 | if (err < 0) { |
526 | BT_ERR("%s urb %p submission failed (%d)", | 528 | if (err != -EPERM && err != -ENODEV) |
529 | BT_ERR("%s urb %p submission failed (%d)", | ||
527 | hdev->name, urb, -err); | 530 | hdev->name, urb, -err); |
528 | usb_unanchor_urb(urb); | 531 | usb_unanchor_urb(urb); |
529 | } | 532 | } |
@@ -727,6 +730,9 @@ static int btusb_send_frame(struct sk_buff *skb) | |||
727 | usb_fill_bulk_urb(urb, data->udev, pipe, | 730 | usb_fill_bulk_urb(urb, data->udev, pipe, |
728 | skb->data, skb->len, btusb_tx_complete, skb); | 731 | skb->data, skb->len, btusb_tx_complete, skb); |
729 | 732 | ||
733 | if (skb->priority >= HCI_PRIO_MAX - 1) | ||
734 | urb->transfer_flags = URB_ISO_ASAP; | ||
735 | |||
730 | hdev->stat.acl_tx++; | 736 | hdev->stat.acl_tx++; |
731 | break; | 737 | break; |
732 | 738 | ||
@@ -770,7 +776,9 @@ skip_waking: | |||
770 | 776 | ||
771 | err = usb_submit_urb(urb, GFP_ATOMIC); | 777 | err = usb_submit_urb(urb, GFP_ATOMIC); |
772 | if (err < 0) { | 778 | if (err < 0) { |
773 | 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); | ||
774 | kfree(urb->setup_packet); | 782 | kfree(urb->setup_packet); |
775 | usb_unanchor_urb(urb); | 783 | usb_unanchor_urb(urb); |
776 | } else { | 784 | } else { |