提交 f640ee98 编写于 作者: M Marcel Holtmann 提交者: Johan Hedberg

Bluetooth: Fix basic debugfs entries for unconfigured controllers

When the controller is unconfigured (for example it does not have a
valid Bluetooth address), then the basic debugfs entries for dut_mode
and vendor_diag are not creates. Ensure they are created in __hci_init
and also __hci_unconf_init functions. One of them is called during setup
stage of a new controller.
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
上级 4d6a6aed
......@@ -184,6 +184,16 @@ static const struct file_operations vendor_diag_fops = {
.llseek = default_llseek,
};
static void hci_debugfs_create_basic(struct hci_dev *hdev)
{
debugfs_create_file("dut_mode", 0644, hdev->debugfs, hdev,
&dut_mode_fops);
if (hdev->set_diag)
debugfs_create_file("vendor_diag", 0644, hdev->debugfs, hdev,
&vendor_diag_fops);
}
/* ---- HCI requests ---- */
static void hci_req_sync_complete(struct hci_dev *hdev, u8 result, u16 opcode,
......@@ -900,20 +910,8 @@ static int __hci_init(struct hci_dev *hdev)
if (err < 0)
return err;
if (hci_dev_test_flag(hdev, HCI_SETUP)) {
/* The Device Under Test (DUT) mode is special and available
* for all controller types. So just create it early on.
*/
debugfs_create_file("dut_mode", 0644, hdev->debugfs, hdev,
&dut_mode_fops);
/* When the driver supports the set_diag callback, then
* expose an entry to modify the vendor diagnostic setting.
*/
if (hdev->set_diag)
debugfs_create_file("vendor_diag", 0644, hdev->debugfs,
hdev, &vendor_diag_fops);
}
if (hci_dev_test_flag(hdev, HCI_SETUP))
hci_debugfs_create_basic(hdev);
err = __hci_req_sync(hdev, hci_init2_req, 0, HCI_INIT_TIMEOUT);
if (err < 0)
......@@ -990,6 +988,9 @@ static int __hci_unconf_init(struct hci_dev *hdev)
if (err < 0)
return err;
if (hci_dev_test_flag(hdev, HCI_SETUP))
hci_debugfs_create_basic(hdev);
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册