struct hci_dev *hdev;
        struct mgmt_cp_pair_device *cp;
        struct pending_cmd *cmd;
+       struct adv_entry *entry;
        u8 sec_level, auth_type;
        struct hci_conn *conn;
        int err;
                auth_type = HCI_AT_DEDICATED_BONDING_MITM;
        }
 
-       conn = hci_connect(hdev, ACL_LINK, &cp->bdaddr, sec_level, auth_type);
+       entry = hci_find_adv_entry(hdev, &cp->bdaddr);
+       if (entry)
+               conn = hci_connect(hdev, LE_LINK, &cp->bdaddr, sec_level,
+                                                               auth_type);
+       else
+               conn = hci_connect(hdev, ACL_LINK, &cp->bdaddr, sec_level,
+                                                               auth_type);
+
        if (IS_ERR(conn)) {
                err = PTR_ERR(conn);
                goto unlock;
                goto unlock;
        }
 
-       conn->connect_cfm_cb = pairing_complete_cb;
+       /* For LE, just connecting isn't a proof that the pairing finished */
+       if (!entry)
+               conn->connect_cfm_cb = pairing_complete_cb;
+
        conn->security_cfm_cb = pairing_complete_cb;
        conn->disconn_cfm_cb = pairing_complete_cb;
        conn->io_capability = cp->io_cap;