summaryrefslogtreecommitdiff
path: root/net/bluetooth
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-08-08 09:32:52 +0300
committerMarcel Holtmann <marcel@holtmann.org>2014-08-14 08:49:18 +0200
commit711eafe345d993cf4831e890fa989d02c06cad62 (patch)
tree6a944b71657ef48d8df93441578ca4b2c90e71fd /net/bluetooth
parent54506918059a5bdbf396f34f2e0a2735803024db (diff)
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>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/hci_core.c32
-rw-r--r--net/bluetooth/smp.c26
-rw-r--r--net/bluetooth/smp.h3
3 files changed, 31 insertions, 30 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 9eb2869b183b..88575a633601 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -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)
{
int err;
@@ -1927,7 +1899,7 @@ static int __hci_init(struct hci_dev *hdev)
hdev->debugfs,
&hdev->discov_interleaved_timeout);
- hci_register_smp(hdev);
+ smp_register(hdev);
}
return 0;
@@ -4224,7 +4196,7 @@ void hci_unregister_dev(struct hci_dev *hdev)
rfkill_destroy(hdev->rfkill);
}
- hci_unregister_smp(hdev);
+ smp_unregister(hdev);
device_del(&hdev->dev);
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 33016ec9b247..ab07649ecc77 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -1455,3 +1455,29 @@ int smp_distribute_keys(struct l2cap_conn *conn)
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;
+ }
+}
diff --git a/net/bluetooth/smp.h b/net/bluetooth/smp.h
index 796f4f45f92f..6e29359f60a3 100644
--- a/net/bluetooth/smp.h
+++ b/net/bluetooth/smp.h
@@ -136,4 +136,7 @@ bool smp_irk_matches(struct crypto_blkcipher *tfm, u8 irk[16],
bdaddr_t *bdaddr);
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 */