• Luiz Augusto von Dentz's avatar
    Bluetooth: Fix handling of SUSPEND_DISCONNECTING · 83775456
    Luiz Augusto von Dentz authored
    When SUSPEND_DISCONNECTING bit is set that means Disconnect is pending
    but the code was evaluating if the list is empty before calling
    hci_conn_del which does the actual cleanup and remove the connection
    from the list thus the bit is never cleared causing the suspend
    procedure to always timeout when there are connections to be
    disconnected:
    
    Suspend/Resume - Success 5 (Pairing - Legacy) - waiting done
      Set the system into Suspend via force_suspend
    = mgmt-tester: Suspend/Resume - Success 5 (Pairing -..   17:03:13.200458
    = mgmt-tester: Set the system into Suspend via force_suspend    17:03:13.205812
    < HCI Command: Write Scan E.. (0x03|0x001a) plen 1  #122 [hci0] 17:03:13.213561
            Scan enable: No Scans (0x00)
    > HCI Event: Command Complete (0x0e) plen 4         #123 [hci0] 17:03:13.214710
          Write Scan Enable (0x03|0x001a) ncmd 1
            Status: Success (0x00)
    < HCI Command: Disconnect (0x01|0x0006) plen 3      #124 [hci0] 17:03:13.215830
            Handle: 42
            Reason: Remote Device Terminated due to Power Off (0x15)
    > HCI Event: Command Status (0x0f) plen 4           #125 [hci0] 17:03:13.216602
          Disconnect (0x01|0x0006) ncmd 1
            Status: Success (0x00)
    > HCI Event: Disconnect Complete (0x05) plen 4      #126 [hci0] 17:03:13.217342
            Status: Success (0x00)
            Handle: 42
            Reason: Remote Device Terminated due to Power Off (0x15)
    @ MGMT Event: Device Disconn.. (0x000c) plen 8  {0x0002} [hci0] 17:03:13.217688
            BR/EDR Address: 00:AA:01:01:00:00 (Intel Corporation)
            Reason: Connection terminated by local host for suspend (0x05)
    @ MGMT Event: Device Disconn.. (0x000c) plen 8  {0x0001} [hci0] 17:03:13.217688
            BR/EDR Address: 00:AA:01:01:00:00 (Intel Corporation)
            Reason: Connection terminated by local host for suspend (0x05)
    Suspend/Resume - Success 5 (Pairing - Legacy) - test timed out
    = mgmt-tester: Suspend/Resume - Success 5 (Pairing -..   17:03:13.939317
    Suspend/Resume - Success 5 (Pairing - Legacy) - teardown
    = mgmt-tester: Suspend/Resume - Success 5 (Pairing -..   17:03:13.947267
    [   13.284291] Bluetooth: hci0: Timed out waiting for suspend events
    [   13.287324] Bluetooth: hci0: Suspend timeout bit: 6
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    83775456
hci_event.c 157 KB