Bluetooth: mgmt: Allow class of device changes while powered off
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 22 Feb 2012 20:11:32 +0000 (22:11 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 23 Feb 2012 11:07:01 +0000 (13:07 +0200)
This patch makes it possible to set the class when powered off. When
powering on the right class of device value will be automatically
writen to the controller.

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

index 3a2066504ffec2815641196fdcdab2a7c4647036..a45c2b70dfdbe0795c0856501af84f2f7c37755f 100644 (file)
@@ -1456,15 +1456,15 @@ static int set_dev_class(struct sock *sk, u16 index, void *data, u16 len)
 
        hci_dev_lock(hdev);
 
+       hdev->major_class = cp->major;
+       hdev->minor_class = cp->minor;
+
        if (!hdev_is_powered(hdev)) {
-               err = cmd_status(sk, index, MGMT_OP_SET_DEV_CLASS,
-                                               MGMT_STATUS_NOT_POWERED);
+               err = cmd_complete(sk, index, MGMT_OP_SET_DEV_CLASS, 0,
+                                                       hdev->dev_class, 3);
                goto unlock;
        }
 
-       hdev->major_class = cp->major;
-       hdev->minor_class = cp->minor;
-
        if (test_and_clear_bit(HCI_SERVICE_CACHE, &hdev->dev_flags)) {
                hci_dev_unlock(hdev);
                cancel_delayed_work_sync(&hdev->service_cache);