aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/bluetooth/hci_core.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index c130a239c0de..d47c8ec90ca0 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -385,6 +385,34 @@ static const struct file_operations static_address_fops = {
385 .release = single_release, 385 .release = single_release,
386}; 386};
387 387
388static int own_address_type_set(void *data, u64 val)
389{
390 struct hci_dev *hdev = data;
391
392 if (val != 0 && val != 1)
393 return -EINVAL;
394
395 hci_dev_lock(hdev);
396 hdev->own_addr_type = val;
397 hci_dev_unlock(hdev);
398
399 return 0;
400}
401
402static int own_address_type_get(void *data, u64 *val)
403{
404 struct hci_dev *hdev = data;
405
406 hci_dev_lock(hdev);
407 *val = hdev->own_addr_type;
408 hci_dev_unlock(hdev);
409
410 return 0;
411}
412
413DEFINE_SIMPLE_ATTRIBUTE(own_address_type_fops, own_address_type_get,
414 own_address_type_set, "%llu\n");
415
388static int long_term_keys_show(struct seq_file *f, void *ptr) 416static int long_term_keys_show(struct seq_file *f, void *ptr)
389{ 417{
390 struct hci_dev *hdev = f->private; 418 struct hci_dev *hdev = f->private;
@@ -1162,6 +1190,8 @@ static int __hci_init(struct hci_dev *hdev)
1162 &hdev->le_white_list_size); 1190 &hdev->le_white_list_size);
1163 debugfs_create_file("static_address", 0444, hdev->debugfs, 1191 debugfs_create_file("static_address", 0444, hdev->debugfs,
1164 hdev, &static_address_fops); 1192 hdev, &static_address_fops);
1193 debugfs_create_file("own_address_type", 0644, hdev->debugfs,
1194 hdev, &own_address_type_fops);
1165 debugfs_create_file("long_term_keys", 0400, hdev->debugfs, 1195 debugfs_create_file("long_term_keys", 0400, hdev->debugfs,
1166 hdev, &long_term_keys_fops); 1196 hdev, &long_term_keys_fops);
1167 } 1197 }