mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
Bluetooth: Check advertising cache in hci_connect()
When connecting to a LE device, we need to check the advertising cache in order to know the address type of that device. If its advertising entry is not found, the connection is not established and hci_connect() returns error. Change-Id: I234912abc53b859becbe79625b08bc3b6eacc143 Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Acked-by: Ville Tervo <ville.tervo@nokia.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
parent
92398c8163
commit
5e89ece9dd
|
|
@ -458,13 +458,22 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type,
|
|||
BT_DBG("%s dst %s", hdev->name, batostr(dst));
|
||||
|
||||
if (type == LE_LINK) {
|
||||
struct adv_entry *entry;
|
||||
|
||||
le = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst);
|
||||
if (le)
|
||||
return ERR_PTR(-EBUSY);
|
||||
|
||||
entry = hci_find_adv_entry(hdev, dst);
|
||||
if (!entry)
|
||||
return ERR_PTR(-EHOSTUNREACH);
|
||||
|
||||
le = hci_conn_add(hdev, LE_LINK, 0, dst);
|
||||
if (!le)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
le->dst_type = entry->bdaddr_type;
|
||||
|
||||
hci_le_connect(le);
|
||||
|
||||
hci_conn_hold(le);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user