diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2015-01-30 23:20:55 -0800 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2015-01-31 09:59:45 +0200 |
commit | f7697b1602d13ef80779caf23d13fa1511193144 (patch) | |
tree | e18e6976b1fad8ef90a67f37e4b1def196b2aeba /net/bluetooth | |
parent | c33fb9b4ef6c8e2472405606f3f9850415980c96 (diff) | |
download | op-kernel-dev-f7697b1602d13ef80779caf23d13fa1511193144.zip op-kernel-dev-f7697b1602d13ef80779caf23d13fa1511193144.tar.gz |
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>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/hci_core.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 5d4ac3f..f045c06 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -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); |