mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 06:43:09 +00:00
Bluetooth: Move SMP (de)initialization to smp.c
As preparation for moving SMP to use l2cap_chan infrastructure we need to move the (de)initialization functions to smp.c (where they'll eventually need access to the local L2CAP channel callbacks). Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
5450691805
commit
711eafe345
@ -1764,34 +1764,6 @@ static void hci_init4_req(struct hci_request *req, unsigned long opt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hci_register_smp(struct hci_dev *hdev)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
|
|
||||||
BT_DBG("%s", hdev->name);
|
|
||||||
|
|
||||||
hdev->tfm_aes = crypto_alloc_blkcipher("ecb(aes)", 0,
|
|
||||||
CRYPTO_ALG_ASYNC);
|
|
||||||
if (IS_ERR(hdev->tfm_aes)) {
|
|
||||||
BT_ERR("Unable to create crypto context");
|
|
||||||
err = PTR_ERR(hdev->tfm_aes);
|
|
||||||
hdev->tfm_aes = NULL;
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void hci_unregister_smp(struct hci_dev *hdev)
|
|
||||||
{
|
|
||||||
BT_DBG("%s", hdev->name);
|
|
||||||
|
|
||||||
if (hdev->tfm_aes) {
|
|
||||||
crypto_free_blkcipher(hdev->tfm_aes);
|
|
||||||
hdev->tfm_aes = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __hci_init(struct hci_dev *hdev)
|
static int __hci_init(struct hci_dev *hdev)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@ -1927,7 +1899,7 @@ static int __hci_init(struct hci_dev *hdev)
|
|||||||
hdev->debugfs,
|
hdev->debugfs,
|
||||||
&hdev->discov_interleaved_timeout);
|
&hdev->discov_interleaved_timeout);
|
||||||
|
|
||||||
hci_register_smp(hdev);
|
smp_register(hdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -4224,7 +4196,7 @@ void hci_unregister_dev(struct hci_dev *hdev)
|
|||||||
rfkill_destroy(hdev->rfkill);
|
rfkill_destroy(hdev->rfkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
hci_unregister_smp(hdev);
|
smp_unregister(hdev);
|
||||||
|
|
||||||
device_del(&hdev->dev);
|
device_del(&hdev->dev);
|
||||||
|
|
||||||
|
@ -1455,3 +1455,29 @@ int smp_distribute_keys(struct l2cap_conn *conn)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int smp_register(struct hci_dev *hdev)
|
||||||
|
{
|
||||||
|
BT_DBG("%s", hdev->name);
|
||||||
|
|
||||||
|
hdev->tfm_aes = crypto_alloc_blkcipher("ecb(aes)", 0,
|
||||||
|
CRYPTO_ALG_ASYNC);
|
||||||
|
if (IS_ERR(hdev->tfm_aes)) {
|
||||||
|
int err = PTR_ERR(hdev->tfm_aes);
|
||||||
|
BT_ERR("Unable to create crypto context");
|
||||||
|
hdev->tfm_aes = NULL;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void smp_unregister(struct hci_dev *hdev)
|
||||||
|
{
|
||||||
|
BT_DBG("%s", hdev->name);
|
||||||
|
|
||||||
|
if (hdev->tfm_aes) {
|
||||||
|
crypto_free_blkcipher(hdev->tfm_aes);
|
||||||
|
hdev->tfm_aes = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -136,4 +136,7 @@ bool smp_irk_matches(struct crypto_blkcipher *tfm, u8 irk[16],
|
|||||||
bdaddr_t *bdaddr);
|
bdaddr_t *bdaddr);
|
||||||
int smp_generate_rpa(struct crypto_blkcipher *tfm, u8 irk[16], bdaddr_t *rpa);
|
int smp_generate_rpa(struct crypto_blkcipher *tfm, u8 irk[16], bdaddr_t *rpa);
|
||||||
|
|
||||||
|
int smp_register(struct hci_dev *hdev);
|
||||||
|
void smp_unregister(struct hci_dev *hdev);
|
||||||
|
|
||||||
#endif /* __SMP_H */
|
#endif /* __SMP_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user