Bluetooth: Expose debugfs entry read/write own address type
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 18 Oct 2013 23:38:10 +0000 (16:38 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Sat, 19 Oct 2013 13:29:03 +0000 (16:29 +0300)
For some testing it is important to know the current own addres type,
but also be able to change it. The change is lost over powery cycles
and only intended for debugging.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/hci_core.c

index c130a239c0de2f108b9f2f5c648d3c5b276b5b5c..d47c8ec90ca08d198a5b0b1b87f48468324a04b7 100644 (file)
@@ -385,6 +385,34 @@ static const struct file_operations static_address_fops = {
        .release        = single_release,
 };
 
+static int own_address_type_set(void *data, u64 val)
+{
+       struct hci_dev *hdev = data;
+
+       if (val != 0 && val != 1)
+               return -EINVAL;
+
+       hci_dev_lock(hdev);
+       hdev->own_addr_type = val;
+       hci_dev_unlock(hdev);
+
+       return 0;
+}
+
+static int own_address_type_get(void *data, u64 *val)
+{
+       struct hci_dev *hdev = data;
+
+       hci_dev_lock(hdev);
+       *val = hdev->own_addr_type;
+       hci_dev_unlock(hdev);
+
+       return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(own_address_type_fops, own_address_type_get,
+                       own_address_type_set, "%llu\n");
+
 static int long_term_keys_show(struct seq_file *f, void *ptr)
 {
        struct hci_dev *hdev = f->private;
@@ -1162,6 +1190,8 @@ static int __hci_init(struct hci_dev *hdev)
                                  &hdev->le_white_list_size);
                debugfs_create_file("static_address", 0444, hdev->debugfs,
                                   hdev, &static_address_fops);
+               debugfs_create_file("own_address_type", 0644, hdev->debugfs,
+                                   hdev, &own_address_type_fops);
                debugfs_create_file("long_term_keys", 0400, hdev->debugfs,
                                    hdev, &long_term_keys_fops);
        }