Bluetooth: Allow setting static address even if LE is disabled
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Oct 2013 05:10:32 +0000 (22:10 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 3 Oct 2013 06:29:38 +0000 (09:29 +0300)
Setting the static address does not depend on LE beeing enabled. It
only depends on a controller with LE support.

When depending on LE enabled this command becomes really complicated
since in case LE gets disabled, it would be required to clear the
static address and also its random address representation inside
the controller. With future support for private addresses such
complex setup should be avoided.

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

index b09c86b..bbe012e 100644 (file)
@@ -3280,15 +3280,13 @@ static int set_static_address(struct sock *sk, struct hci_dev *hdev,
                              void *data, u16 len)
 {
        struct mgmt_cp_set_static_address *cp = data;
-       u8 status;
        int err;
 
        BT_DBG("%s", hdev->name);
 
-       status = mgmt_le_support(hdev);
-       if (status)
+       if (!lmp_le_capable(hdev))
                return cmd_status(sk, hdev->id, MGMT_OP_SET_STATIC_ADDRESS,
-                                 status);
+                                 MGMT_STATUS_NOT_SUPPORTED);
 
        if (hdev_is_powered(hdev))
                return cmd_status(sk, hdev->id, MGMT_OP_SET_STATIC_ADDRESS,