diff options
author | Andre Guedes <andre.guedes@openbossa.org> | 2014-02-26 20:21:53 -0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-02-26 19:41:35 -0800 |
commit | 5b906a84a5b3458d810a9faab74783525f4a84d7 (patch) | |
tree | c17aef3b3d7b4a1e7953cc642e91d712812695f4 /net/bluetooth/hci_event.c | |
parent | a9b0a04c2aac1e6e41e254221926bdce75321f55 (diff) | |
download | lwn-5b906a84a5b3458d810a9faab74783525f4a84d7.tar.gz lwn-5b906a84a5b3458d810a9faab74783525f4a84d7.zip |
Bluetooth: Support resolvable private addresses
Only identity addresses are inserted into hdev->pend_le_conns. So,
in order to support resolvable private addresses in auto connection
mechanism, we should resolve the address before checking for pending
connections.
Thus, this patch adds an extra check in check_pending_le_conn() and
updates 'addr' and 'addr_type' variables before hci_pend_le_conn_
lookup().
Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r-- | net/bluetooth/hci_event.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 46da8b6f4368..cda92db2a9fc 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -3706,6 +3706,16 @@ static void check_pending_le_conn(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type) { struct hci_conn *conn; + struct smp_irk *irk; + + /* If this is a resolvable address, we should resolve it and then + * update address and address type variables. + */ + irk = hci_get_irk(hdev, addr, addr_type); + if (irk) { + addr = &irk->bdaddr; + addr_type = irk->addr_type; + } if (!hci_pend_le_conn_lookup(hdev, addr, addr_type)) return; |