Commit 711eafe3 authored by Johan Hedberg's avatar Johan Hedberg Committed by Marcel Holtmann

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: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 54506918
...@@ -1764,34 +1764,6 @@ static void hci_init4_req(struct hci_request *req, unsigned long opt) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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], ...@@ -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 */
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