浏览代码

Bluetooth: Guarantee BR-EDR device will be registered as hci0

It's convenient to use the HCI device index the AMP controller id, but
the spec requires that an AMP controller never has id 0.

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Acked-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Mat Martineau 13 年之前
父节点
当前提交
08add513ca
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      net/bluetooth/hci_core.c

+ 6 - 1
net/bluetooth/hci_core.c

@@ -1410,7 +1410,7 @@ int hci_add_adv_entry(struct hci_dev *hdev,
 int hci_register_dev(struct hci_dev *hdev)
 int hci_register_dev(struct hci_dev *hdev)
 {
 {
 	struct list_head *head = &hci_dev_list, *p;
 	struct list_head *head = &hci_dev_list, *p;
-	int i, id = 0, error;
+	int i, id, error;
 
 
 	BT_DBG("%p name %s bus %d owner %p", hdev, hdev->name,
 	BT_DBG("%p name %s bus %d owner %p", hdev, hdev->name,
 						hdev->bus, hdev->owner);
 						hdev->bus, hdev->owner);
@@ -1418,6 +1418,11 @@ int hci_register_dev(struct hci_dev *hdev)
 	if (!hdev->open || !hdev->close || !hdev->destruct)
 	if (!hdev->open || !hdev->close || !hdev->destruct)
 		return -EINVAL;
 		return -EINVAL;
 
 
+	/* Do not allow HCI_AMP devices to register at index 0,
+	 * so the index can be used as the AMP controller ID.
+	 */
+	id = (hdev->dev_type == HCI_BREDR) ? 0 : 1;
+
 	write_lock_bh(&hci_dev_list_lock);
 	write_lock_bh(&hci_dev_list_lock);
 
 
 	/* Find first available device id */
 	/* Find first available device id */