Bluetooth: Store OOB data present value for each set of remote OOB data
Instead of doing complex calculation every time the OOB data is used, just calculate the OOB data present value and store it with the OOB data raw values. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
c33fb9b4ef
commit
f7697b1602
|
@ -145,6 +145,7 @@ struct oob_data {
|
|||
struct list_head list;
|
||||
bdaddr_t bdaddr;
|
||||
u8 bdaddr_type;
|
||||
u8 present;
|
||||
u8 hash192[16];
|
||||
u8 rand192[16];
|
||||
u8 hash256[16];
|
||||
|
|
|
@ -2581,9 +2581,15 @@ int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|||
if (hash192 && rand192) {
|
||||
memcpy(data->hash192, hash192, sizeof(data->hash192));
|
||||
memcpy(data->rand192, rand192, sizeof(data->rand192));
|
||||
if (hash256 && rand256)
|
||||
data->present = 0x03;
|
||||
} else {
|
||||
memset(data->hash192, 0, sizeof(data->hash192));
|
||||
memset(data->rand192, 0, sizeof(data->rand192));
|
||||
if (hash256 && rand256)
|
||||
data->present = 0x02;
|
||||
else
|
||||
data->present = 0x00;
|
||||
}
|
||||
|
||||
if (hash256 && rand256) {
|
||||
|
@ -2592,6 +2598,8 @@ int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|||
} else {
|
||||
memset(data->hash256, 0, sizeof(data->hash256));
|
||||
memset(data->rand256, 0, sizeof(data->rand256));
|
||||
if (hash192 && rand192)
|
||||
data->present = 0x01;
|
||||
}
|
||||
|
||||
BT_DBG("%s for %pMR", hdev->name, bdaddr);
|
||||
|
|
Loading…
Reference in New Issue