Bluetooth: Limit fast connectable support to >= 1.2 controllers
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 15 Mar 2013 22:07:06 +0000 (17:07 -0500)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 18 Mar 2013 17:02:07 +0000 (14:02 -0300)
The HCI commands that are necessary for fast connectable mode are only
available from HCI specification version 1.2 onwards. This should be
reflected in the supported settings as well as error response for the
set_fast_connectable command when dealing with a < 1.2 capable
controller.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
net/bluetooth/mgmt.c

index bd61318b647cd1bf2a038da591b98567b4f91c87..34caf30584c2253c9a7ae88dbe90adcd48b55985 100644 (file)
@@ -384,7 +384,8 @@ static u32 get_supported_settings(struct hci_dev *hdev)
 
        if (lmp_bredr_capable(hdev)) {
                settings |= MGMT_SETTING_CONNECTABLE;
-               settings |= MGMT_SETTING_FAST_CONNECTABLE;
+               if (hdev->hci_ver >= BLUETOOTH_VER_1_2)
+                       settings |= MGMT_SETTING_FAST_CONNECTABLE;
                settings |= MGMT_SETTING_DISCOVERABLE;
                settings |= MGMT_SETTING_BREDR;
                settings |= MGMT_SETTING_LINK_SECURITY;
@@ -2934,7 +2935,7 @@ static int set_fast_connectable(struct sock *sk, struct hci_dev *hdev,
 
        BT_DBG("%s", hdev->name);
 
-       if (!lmp_bredr_capable(hdev))
+       if (!lmp_bredr_capable(hdev) || hdev->hci_ver < BLUETOOTH_VER_1_2)
                return cmd_status(sk, hdev->id, MGMT_OP_SET_FAST_CONNECTABLE,
                                  MGMT_STATUS_NOT_SUPPORTED);