aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2011-07-14 08:48:32 -0400
committerGustavo F. Padovan <gustavo@padovan.org>2011-09-27 17:15:45 -0400
commit9fd481e03c1e9c76c814b88b9ea1cbda9afb0812 (patch)
tree1713678a7ec49bdf82cdb95936a847da11ebc67d /drivers/bluetooth
parentab0ff76d1bda3b3b3e65caaa0cc5e4b01a81b2ee (diff)
Bluetooth: Allow ACL packets over USB in HCI_RAW mode
Removed tests which prevent transmission of ACL packets when the device is in HCI_RAW mode. These tests verified that there are ACL or LE links currently tracked by the HCI connection manager. However, a HCI_RAW mode device does not use the connection manager. In these circumstances, the connection counts will be zero, and thus, transmitted ACL packets dropped. The acl_num test is actually a vestige of a previous bulk URB scheme that is no longer used by this driver (bulk URBs were not started until at least one ACL connection was created). This was incompatible with some endpoint implementations and was dropped - see commit 43c2e57f94. The utility of these tests is marginal - currently, the hci tx scheduler cannot send an ACL or LE packet for an untracked connection (except if the device is in HCI_RAW mode). Lastly, no other transport layer driver enforces these same tests. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Acked-by: Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r--drivers/bluetooth/btusb.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 9cbac6b445e1..2755c1a9c38e 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -708,8 +708,7 @@ static int btusb_send_frame(struct sk_buff *skb)
708 break; 708 break;
709 709
710 case HCI_ACLDATA_PKT: 710 case HCI_ACLDATA_PKT:
711 if (!data->bulk_tx_ep || (hdev->conn_hash.acl_num < 1 && 711 if (!data->bulk_tx_ep)
712 hdev->conn_hash.le_num < 1))
713 return -ENODEV; 712 return -ENODEV;
714 713
715 urb = usb_alloc_urb(0, GFP_ATOMIC); 714 urb = usb_alloc_urb(0, GFP_ATOMIC);