OSDN Git Service

Bluetooth: Fix not setting HCI_RESET flag for AMP
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Mon, 11 Jun 2012 08:13:10 +0000 (11:13 +0300)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Tue, 12 Jun 2012 03:10:31 +0000 (00:10 -0300)
Move reset function to common initialization section fixing
not setting HCI_RESET flag for amp_init.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
net/bluetooth/hci_core.c

index f7a35cc..a2bdf93 100644 (file)
@@ -188,12 +188,6 @@ static void bredr_init(struct hci_dev *hdev)
 
        /* Mandatory initialization */
 
-       /* Reset */
-       if (!test_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks)) {
-               set_bit(HCI_RESET, &hdev->flags);
-               hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
-       }
-
        /* Read Local Supported Features */
        hci_send_cmd(hdev, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
 
@@ -234,9 +228,6 @@ static void amp_init(struct hci_dev *hdev)
 {
        hdev->flow_ctl_mode = HCI_FLOW_CTL_MODE_BLOCK_BASED;
 
-       /* Reset */
-       hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
-
        /* Read Local Version */
        hci_send_cmd(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
 
@@ -262,6 +253,10 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
        }
        skb_queue_purge(&hdev->driver_init);
 
+       /* Reset */
+       if (!test_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks))
+               hci_reset_req(hdev, 0);
+
        switch (hdev->dev_type) {
        case HCI_BREDR:
                bredr_init(hdev);