Bluetooth: Remove BlueFritz! specific check from initialization
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 26 Dec 2014 03:42:34 +0000 (04:42 +0100)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 26 Dec 2014 18:16:14 +0000 (20:16 +0200)
The AVM BlueFritz! USB controllers had a special handling in the
Bluetooth core when it comes to reading the supported commands.

Both drivers now set the HCI_QUIRK_BROKEN_LOCAL_COMMANDS and with
that it is no longer needed to look for vendor specific details.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/hci_core.c

index 47f0311d10064886f3aaed329e62120de887a582..5ef5221c1813fc43804b7d0e9677e792e3884f6c 100644 (file)
@@ -623,10 +623,16 @@ static void hci_init2_req(struct hci_request *req, unsigned long opt)
        if (lmp_le_capable(hdev))
                le_setup(req);
 
-       /* AVM Berlin (31), aka "BlueFRITZ!", doesn't support the read
-        * local supported commands HCI command.
+       /* All Bluetooth 1.2 and later controllers should support the
+        * HCI command for reading the local supported commands.
+        *
+        * Unfortunately some controllers indicate Bluetooth 1.2 support,
+        * but do not have support for this command. If that is the case,
+        * the driver can quirk the behavior and skip reading the local
+        * supported commands.
         */
-       if (hdev->manufacturer != 31 && hdev->hci_ver > BLUETOOTH_VER_1_1)
+       if (hdev->hci_ver > BLUETOOTH_VER_1_1 &&
+           !test_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks))
                hci_req_add(req, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL);
 
        if (lmp_ssp_capable(hdev)) {