Bluetooth: Use Identity Address in Device Found event
Whenever a device uses an RPA we want to have user space identify it by its Identity Address if we've got an IRK available for it. This patch updates the Device Found mgmt event to contain the Identity Address if an IRK is available for the device in question. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Родитель
1ebfcc1f58
Коммит
5cedbb8d7a
|
@ -5325,6 +5325,7 @@ void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
|
|||
{
|
||||
char buf[512];
|
||||
struct mgmt_ev_device_found *ev = (void *) buf;
|
||||
struct smp_irk *irk;
|
||||
size_t ev_size;
|
||||
|
||||
if (!hci_discovery_active(hdev))
|
||||
|
@ -5336,8 +5337,15 @@ void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
|
|||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
irk = hci_get_irk(hdev, bdaddr, addr_type);
|
||||
if (irk) {
|
||||
bacpy(&ev->addr.bdaddr, &irk->bdaddr);
|
||||
ev->addr.type = link_to_bdaddr(link_type, irk->addr_type);
|
||||
} else {
|
||||
bacpy(&ev->addr.bdaddr, bdaddr);
|
||||
ev->addr.type = link_to_bdaddr(link_type, addr_type);
|
||||
}
|
||||
|
||||
ev->rssi = rssi;
|
||||
if (cfm_name)
|
||||
ev->flags |= __constant_cpu_to_le32(MGMT_DEV_FOUND_CONFIRM_NAME);
|
||||
|
|
Загрузка…
Ссылка в новой задаче