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 b09c86b6996a8c0c28b44bcbbf40ff4f54c68bec..bbe012e93b705a270e0169b1e95894a94354c088 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,