aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/bluetooth/hci_conn.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 0db2579ea6c6..1517f1549f85 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -668,9 +668,6 @@ static void hci_req_directed_advertising(struct hci_request *req,
668 u8 own_addr_type; 668 u8 own_addr_type;
669 u8 enable; 669 u8 enable;
670 670
671 enable = 0x00;
672 hci_req_add(req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable), &enable);
673
674 /* Clear the HCI_LE_ADV bit temporarily so that the 671 /* Clear the HCI_LE_ADV bit temporarily so that the
675 * hci_update_random_address knows that it's safe to go ahead 672 * hci_update_random_address knows that it's safe to go ahead
676 * and write a new random address. The flag will be set back on 673 * and write a new random address. The flag will be set back on
@@ -761,6 +758,18 @@ struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
761 758
762 hci_req_init(&req, hdev); 759 hci_req_init(&req, hdev);
763 760
761 /* Disable advertising if we're active. For master role
762 * connections most controllers will refuse to connect if
763 * advertising is enabled, and for slave role connections we
764 * anyway have to disable it in order to start directed
765 * advertising.
766 */
767 if (test_bit(HCI_LE_ADV, &hdev->dev_flags)) {
768 u8 enable = 0x00;
769 hci_req_add(&req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable),
770 &enable);
771 }
772
764 /* If requested to connect as slave use directed advertising */ 773 /* If requested to connect as slave use directed advertising */
765 if (!master) { 774 if (!master) {
766 hci_req_directed_advertising(&req, conn); 775 hci_req_directed_advertising(&req, conn);