Bluetooth: mgmt: Allow class of device changes while powered off
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>
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 3a20665..a45c2b7 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -1456,15 +1456,15 @@
hci_dev_lock(hdev);
- if (!hdev_is_powered(hdev)) {
- err = cmd_status(sk, index, MGMT_OP_SET_DEV_CLASS,
- MGMT_STATUS_NOT_POWERED);
- goto unlock;
- }
-
hdev->major_class = cp->major;
hdev->minor_class = cp->minor;
+ if (!hdev_is_powered(hdev)) {
+ err = cmd_complete(sk, index, MGMT_OP_SET_DEV_CLASS, 0,
+ hdev->dev_class, 3);
+ goto unlock;
+ }
+
if (test_and_clear_bit(HCI_SERVICE_CACHE, &hdev->dev_flags)) {
hci_dev_unlock(hdev);
cancel_delayed_work_sync(&hdev->service_cache);