Commit faccb950 authored by Arman Uguray's avatar Arman Uguray Committed by Marcel Holtmann

Bluetooth: Fix using global connectable settings for adv

This patch fixes a bug where ADV_NONCONN_IND was being used for
advertising instances >0 while the global connectable setting was
set to "on".
Signed-off-by: default avatarArman Uguray <armansito@chromium.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 600b2150
...@@ -985,9 +985,10 @@ static u32 get_adv_instance_flags(struct hci_dev *hdev, u8 instance) ...@@ -985,9 +985,10 @@ static u32 get_adv_instance_flags(struct hci_dev *hdev, u8 instance)
/* Instance 0 always manages the "Tx Power" and "Flags" fields */ /* Instance 0 always manages the "Tx Power" and "Flags" fields */
flags = MGMT_ADV_FLAG_TX_POWER | MGMT_ADV_FLAG_MANAGED_FLAGS; flags = MGMT_ADV_FLAG_TX_POWER | MGMT_ADV_FLAG_MANAGED_FLAGS;
/* For instance 0, assemble the flags from global settings */ /* For instance 0, the HCI_ADVERTISING_CONNECTABLE setting corresponds
if (hci_dev_test_flag(hdev, HCI_ADVERTISING_CONNECTABLE) || * to the "connectable" instance flag.
get_connectable(hdev)) */
if (hci_dev_test_flag(hdev, HCI_ADVERTISING_CONNECTABLE))
flags |= MGMT_ADV_FLAG_CONNECTABLE; flags |= MGMT_ADV_FLAG_CONNECTABLE;
return flags; return flags;
...@@ -1242,7 +1243,12 @@ static void enable_advertising(struct hci_request *req) ...@@ -1242,7 +1243,12 @@ static void enable_advertising(struct hci_request *req)
instance = get_current_adv_instance(hdev); instance = get_current_adv_instance(hdev);
flags = get_adv_instance_flags(hdev, instance); flags = get_adv_instance_flags(hdev, instance);
connectable = (flags & MGMT_ADV_FLAG_CONNECTABLE);
/* If the "connectable" instance flag was not set, then choose between
* ADV_IND and ADV_NONCONN_IND based on the global connectable setting.
*/
connectable = (flags & MGMT_ADV_FLAG_CONNECTABLE) ||
get_connectable(hdev);
/* Set require_privacy to true only when non-connectable /* Set require_privacy to true only when non-connectable
* advertising is used. In that case it is fine to use a * advertising is used. In that case it is fine to use a
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment