diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2013-10-17 14:45:09 -0400 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-10-17 16:55:07 -0400 |
commit | e7b8fc92867cf161ce8182ac4cbee2bed7f16d90 (patch) | |
tree | 453cbed747cf7d37f7edc76b9864fa480f0dc7f9 /net/bluetooth/hci_core.c | |
parent | ebd1e33bb2167798197e79d277d7ead14013e489 (diff) |
Bluetooth: Expose static address value for LE capable controllers
For LE capable controllers, the static address can be configured. For
debugging purposes expose the value in debugfs.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'net/bluetooth/hci_core.c')
-rw-r--r-- | net/bluetooth/hci_core.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index bb95dddb5e50..3c1014c2dcde 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -118,6 +118,29 @@ static int auto_accept_delay_get(void *data, u64 *val) | |||
118 | DEFINE_SIMPLE_ATTRIBUTE(auto_accept_delay_fops, auto_accept_delay_get, | 118 | DEFINE_SIMPLE_ATTRIBUTE(auto_accept_delay_fops, auto_accept_delay_get, |
119 | auto_accept_delay_set, "%llu\n"); | 119 | auto_accept_delay_set, "%llu\n"); |
120 | 120 | ||
121 | static int static_address_show(struct seq_file *f, void *p) | ||
122 | { | ||
123 | struct hci_dev *hdev = f->private; | ||
124 | |||
125 | hci_dev_lock(hdev); | ||
126 | seq_printf(f, "%pMR\n", &hdev->static_addr); | ||
127 | hci_dev_unlock(hdev); | ||
128 | |||
129 | return 0; | ||
130 | } | ||
131 | |||
132 | static int static_address_open(struct inode *inode, struct file *file) | ||
133 | { | ||
134 | return single_open(file, static_address_show, inode->i_private); | ||
135 | } | ||
136 | |||
137 | static const struct file_operations static_address_fops = { | ||
138 | .open = static_address_open, | ||
139 | .read = seq_read, | ||
140 | .llseek = seq_lseek, | ||
141 | .release = single_release, | ||
142 | }; | ||
143 | |||
121 | /* ---- HCI requests ---- */ | 144 | /* ---- HCI requests ---- */ |
122 | 145 | ||
123 | static void hci_req_sync_complete(struct hci_dev *hdev, u8 result) | 146 | static void hci_req_sync_complete(struct hci_dev *hdev, u8 result) |
@@ -816,6 +839,10 @@ static int __hci_init(struct hci_dev *hdev) | |||
816 | debugfs_create_file("auto_accept_delay", 0644, hdev->debugfs, | 839 | debugfs_create_file("auto_accept_delay", 0644, hdev->debugfs, |
817 | hdev, &auto_accept_delay_fops); | 840 | hdev, &auto_accept_delay_fops); |
818 | 841 | ||
842 | if (lmp_le_capable(hdev)) | ||
843 | debugfs_create_file("static_address", 0444, hdev->debugfs, | ||
844 | hdev, &static_address_fops); | ||
845 | |||
819 | return 0; | 846 | return 0; |
820 | } | 847 | } |
821 | 848 | ||