Bluetooth: mgmt: Fix connectable/discoverable response values
The connectable/discoverable flags need to be changed before sending the response since otherwise the settings value will be incorrect. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Acked-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
@@ -2965,8 +2965,6 @@ int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable)
|
|||||||
bool changed = false;
|
bool changed = false;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
mgmt_pending_foreach(MGMT_OP_SET_DISCOVERABLE, hdev, settings_rsp, &match);
|
|
||||||
|
|
||||||
if (discoverable) {
|
if (discoverable) {
|
||||||
if (!test_and_set_bit(HCI_DISCOVERABLE, &hdev->dev_flags))
|
if (!test_and_set_bit(HCI_DISCOVERABLE, &hdev->dev_flags))
|
||||||
changed = true;
|
changed = true;
|
||||||
@@ -2975,6 +2973,9 @@ int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable)
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mgmt_pending_foreach(MGMT_OP_SET_DISCOVERABLE, hdev, settings_rsp,
|
||||||
|
&match);
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
err = new_settings(hdev, match.sk);
|
err = new_settings(hdev, match.sk);
|
||||||
|
|
||||||
@@ -2990,9 +2991,6 @@ int mgmt_connectable(struct hci_dev *hdev, u8 connectable)
|
|||||||
bool changed = false;
|
bool changed = false;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
mgmt_pending_foreach(MGMT_OP_SET_CONNECTABLE, hdev, settings_rsp,
|
|
||||||
&match);
|
|
||||||
|
|
||||||
if (connectable) {
|
if (connectable) {
|
||||||
if (!test_and_set_bit(HCI_CONNECTABLE, &hdev->dev_flags))
|
if (!test_and_set_bit(HCI_CONNECTABLE, &hdev->dev_flags))
|
||||||
changed = true;
|
changed = true;
|
||||||
@@ -3001,6 +2999,9 @@ int mgmt_connectable(struct hci_dev *hdev, u8 connectable)
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mgmt_pending_foreach(MGMT_OP_SET_CONNECTABLE, hdev, settings_rsp,
|
||||||
|
&match);
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
err = new_settings(hdev, match.sk);
|
err = new_settings(hdev, match.sk);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user