The address type given to the init_conn is the peer address type
(btdev) not the bthost address type, the old code assume it could use
since only BDADDR_BREDR or BDADDR_LE_PUBLIC was tested but with the
upcoming support for LL Privacy the peer address type would become
BDADDR_LE_RANDOM which cannot be used as address type of bthost as that
doesn't support random addresses and would likely cause SMP to fail when
pairing.
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
if (bthost->conn_init) {
ia = bthost->bdaddr;
- ia_type = addr_type;
- ra = conn->bdaddr;
- ra_type = conn->addr_type;
+ if (addr_type == BDADDR_BREDR)
+ ia_type = addr_type;
+ else
+ ia_type = BDADDR_LE_PUBLIC;
+ ra = bdaddr;
+ ra_type = addr_type;
} else {
- ia = conn->bdaddr;
- ia_type = conn->addr_type;
+ ia = bdaddr;
+ ia_type = addr_type;
ra = bthost->bdaddr;
- ra_type = addr_type;
+ if (addr_type == BDADDR_BREDR)
+ ra_type = addr_type;
+ else
+ ra_type = BDADDR_LE_PUBLIC;
}
conn->smp_data = smp_conn_add(bthost->smp_data, handle, ia, ia_type,