Commit bab6d1e5 authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg

Bluetooth: Don't send store hint for devices using identity addresses

The identity resolving keys should only be stored for devices using
resolvable random addresses. If the device is already using an
identity address, inform it about the new identity resolving key,
but tell userspace that this key is not persistent.
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 95fbac8a
...@@ -4798,7 +4798,22 @@ void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk) ...@@ -4798,7 +4798,22 @@ void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk)
memset(&ev, 0, sizeof(ev)); memset(&ev, 0, sizeof(ev));
ev.store_hint = 0x01; /* For identity resolving keys from devices that are already
* using a public address or static random address, do not
* ask for storing this key. The identity resolving key really
* is only mandatory for devices using resovlable random
* addresses.
*
* Storing all identity resolving keys has the downside that
* they will be also loaded on next boot of they system. More
* identity resolving keys, means more time during scanning is
* needed to actually resolve these addresses.
*/
if (bacmp(&irk->rpa, BDADDR_ANY))
ev.store_hint = 0x01;
else
ev.store_hint = 0x00;
bacpy(&ev.rpa, &irk->rpa); bacpy(&ev.rpa, &irk->rpa);
bacpy(&ev.irk.addr.bdaddr, &irk->bdaddr); bacpy(&ev.irk.addr.bdaddr, &irk->bdaddr);
ev.irk.addr.type = link_to_bdaddr(LE_LINK, irk->addr_type); ev.irk.addr.type = link_to_bdaddr(LE_LINK, irk->addr_type);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment