]> Pileus Git - ~andy/linux/commitdiff
Bluetooth: Update class of device after changing discoverable mode
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 15 Oct 2013 13:33:57 +0000 (06:33 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Tue, 15 Oct 2013 14:22:38 +0000 (17:22 +0300)
When the discoverable mode gets changed, ensure that the class of
device value has the correct limited discoverable bit value set.

Since the class of device HCI command will only be send to the
controller when the value changes, it is safe to just always
trigger the update.

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

index 12d1cb02c2a109be3e38fddd0582c354e696f9be..6db23934ac9ed9f3877da4dadd4a434bd4462bb3 100644 (file)
@@ -1025,6 +1025,7 @@ static void set_discoverable_complete(struct hci_dev *hdev, u8 status)
 {
        struct pending_cmd *cmd;
        struct mgmt_mode *cp;
+       struct hci_request req;
        bool changed;
 
        BT_DBG("status 0x%02x", status);
@@ -1054,6 +1055,14 @@ static void set_discoverable_complete(struct hci_dev *hdev, u8 status)
        if (changed)
                new_settings(hdev, cmd->sk);
 
+       /* When the discoverable mode gets changed, make sure
+        * that class of device has the limited discoverable
+        * bit correctly set.
+        */
+       hci_req_init(&req, hdev);
+       update_class(&req);
+       hci_req_run(&req, NULL);
+
 remove_cmd:
        mgmt_pending_remove(cmd);