mbox series

[0/2] Bluetooth: Suspend improvements

Message ID 20210301200605.106607-1-abhishekpandit@chromium.org
Headers show
Series Bluetooth: Suspend improvements | expand

Message

Abhishek Pandit-Subedi March 1, 2021, 8:06 p.m. UTC
Hi Marcel (and linux bluetooth),

Here are a few suspend improvements based on user reports we saw on
ChromeOS and feedback from Hans de Goede on the mailing list.

I have tested this using our ChromeOS suspend/resume automated tests
(full SRHealth test coverage and some suspend resume stress tests).

Thanks
Abhishek



Abhishek Pandit-Subedi (2):
  Bluetooth: Notify suspend on le conn failed
  Bluetooth: Remove unneeded commands for suspend

 include/net/bluetooth/hci.h |  1 +
 net/bluetooth/hci_conn.c    | 10 +++++++++
 net/bluetooth/hci_event.c   | 31 ++++++++++++++++++++++++++
 net/bluetooth/hci_request.c | 44 +++++++++++++++++++++++--------------
 4 files changed, 69 insertions(+), 17 deletions(-)

Comments

Marcel Holtmann March 2, 2021, 2:03 p.m. UTC | #1
Hi Abhishek,

> When suspending, Bluetooth disconnects all connected peers devices. If
> an LE connection is started but isn't completed, we will see an LE
> Create Connection Cancel instead of an HCI disconnect. This just adds
> a check to see if an LE cancel was the last disconnected device and wake
> the suspend thread when that is the case.
> 
> Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> Reviewed-by: Archie Pusaka <apusaka@chromium.org>
> ---
> Here is an HCI trace when the issue occurred.
> 
> < HCI Command: LE Create Connection (0x08|0x000d) plen 25                                           #187777 [hci0] 2021-02-03 21:42:35.130208
>        Scan interval: 60.000 msec (0x0060)
>        Scan window: 60.000 msec (0x0060)
>        Filter policy: White list is not used (0x00)
>        Peer address type: Random (0x01)
>        Peer address: D9:DC:6B:61:EB:3A (Static)
>        Own address type: Public (0x00)
>        Min connection interval: 15.00 msec (0x000c)
>        Max connection interval: 30.00 msec (0x0018)
>        Connection latency: 20 (0x0014)
>        Supervision timeout: 3000 msec (0x012c)
>        Min connection length: 0.000 msec (0x0000)
>        Max connection length: 0.000 msec (0x0000)
>> HCI Event: Command Status (0x0f) plen 4                                                           #187778 [hci0] 2021-02-03 21:42:35.131184
>      LE Create Connection (0x08|0x000d) ncmd 1
>        Status: Success (0x00)
> < HCI Command: LE Create Connection Cancel (0x08|0x000e) plen 0                                     #187805 [hci0] 2021-02-03 21:42:37.183336
>> HCI Event: Command Complete (0x0e) plen 4                                                         #187806 [hci0] 2021-02-03 21:42:37.192394
>      LE Create Connection Cancel (0x08|0x000e) ncmd 1
>        Status: Success (0x00)
>> HCI Event: LE Meta Event (0x3e) plen 19                                                           #187807 [hci0] 2021-02-03 21:42:37.193400
>      LE Connection Complete (0x01)
>        Status: Unknown Connection Identifier (0x02)
>        Handle: 0
>        Role: Master (0x00)
>        Peer address type: Random (0x01)
>        Peer address: D9:DC:6B:61:EB:3A (Static)
>        Connection interval: 0.00 msec (0x0000)
>        Connection latency: 0 (0x0000)
>        Supervision timeout: 0 msec (0x0000)
>        Master clock accuracy: 0x00
> ... <skip a few unrelated events>
> @ MGMT Event: Controller Suspended (0x002d) plen 1                                                 {0x0002} [hci0] 2021-02-03 21:42:39.178780
>        Suspend state: Controller running (failed to suspend) (0)
> @ MGMT Event: Controller Suspended (0x002d) plen 1                                                 {0x0001} [hci0] 2021-02-03 21:42:39.178780
>        Suspend state: Controller running (failed to suspend) (0)
> ... <actual suspended time>
> < HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                #187808 [hci0] 2021-02-04 09:23:07.313591
>        Type: Clear All Filters (0x00)
> 
> net/bluetooth/hci_conn.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)

patch has been applied to bluetooth-next tree.

Regards

Marcel