|
@@ -3121,13 +3121,16 @@ static bool hci_persistent_key(struct hci_dev *hdev, struct hci_conn *conn,
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-static bool ltk_type_master(u8 type)
|
|
|
+static u8 ltk_role(u8 type)
|
|
|
{
|
|
|
- return (type == SMP_LTK);
|
|
|
+ if (type == SMP_LTK)
|
|
|
+ return HCI_ROLE_MASTER;
|
|
|
+
|
|
|
+ return HCI_ROLE_SLAVE;
|
|
|
}
|
|
|
|
|
|
struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
|
|
|
- bool master)
|
|
|
+ u8 role)
|
|
|
{
|
|
|
struct smp_ltk *k;
|
|
|
|
|
@@ -3135,7 +3138,7 @@ struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
|
|
|
if (k->ediv != ediv || k->rand != rand)
|
|
|
continue;
|
|
|
|
|
|
- if (ltk_type_master(k->type) != master)
|
|
|
+ if (ltk_role(k->type) != role)
|
|
|
continue;
|
|
|
|
|
|
return k;
|
|
@@ -3145,14 +3148,14 @@ struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
|
|
|
}
|
|
|
|
|
|
struct smp_ltk *hci_find_ltk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|
|
- u8 addr_type, bool master)
|
|
|
+ u8 addr_type, u8 role)
|
|
|
{
|
|
|
struct smp_ltk *k;
|
|
|
|
|
|
list_for_each_entry(k, &hdev->long_term_keys, list)
|
|
|
if (addr_type == k->bdaddr_type &&
|
|
|
bacmp(bdaddr, &k->bdaddr) == 0 &&
|
|
|
- ltk_type_master(k->type) == master)
|
|
|
+ ltk_role(k->type) == role)
|
|
|
return k;
|
|
|
|
|
|
return NULL;
|
|
@@ -3247,9 +3250,9 @@ struct smp_ltk *hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|
|
u8 tk[16], u8 enc_size, __le16 ediv, __le64 rand)
|
|
|
{
|
|
|
struct smp_ltk *key, *old_key;
|
|
|
- bool master = ltk_type_master(type);
|
|
|
+ u8 role = ltk_role(type);
|
|
|
|
|
|
- old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type, master);
|
|
|
+ old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type, role);
|
|
|
if (old_key)
|
|
|
key = old_key;
|
|
|
else {
|