Bluetooth: Fix updating scan mode in set_bredr()
Now that the connectable setting is also applicable for the LE side it's possible that the HCI_CONNECTABLE flag is already set when changing the BR/EDR setting from false to true while the controller is powered. In this situation we need to update the BR/EDR scan mode to reflect the setting. Additionally, since HCI_CONNECTABLE also applies to LE we must not clear the HCI_CONNECTABLE flag when disabling bredr. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
67e5a7a3d7
commit
aa8af46e90
|
@ -3640,7 +3640,6 @@ static int set_bredr(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
|
|||
|
||||
if (!hdev_is_powered(hdev)) {
|
||||
if (!cp->val) {
|
||||
clear_bit(HCI_CONNECTABLE, &hdev->dev_flags);
|
||||
clear_bit(HCI_DISCOVERABLE, &hdev->dev_flags);
|
||||
clear_bit(HCI_SSP_ENABLED, &hdev->dev_flags);
|
||||
clear_bit(HCI_LINK_SECURITY, &hdev->dev_flags);
|
||||
|
@ -3683,7 +3682,12 @@ static int set_bredr(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
|
|||
set_bit(HCI_BREDR_ENABLED, &hdev->dev_flags);
|
||||
|
||||
hci_req_init(&req, hdev);
|
||||
|
||||
if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags))
|
||||
set_bredr_scan(&req);
|
||||
|
||||
hci_update_ad(&req);
|
||||
|
||||
err = hci_req_run(&req, set_bredr_complete);
|
||||
if (err < 0)
|
||||
mgmt_pending_remove(cmd);
|
||||
|
|
Loading…
Reference in New Issue