[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CABBYNZ+rDo6ftN1+HdeWm6gij14YF_19WGRP7LM4Vjw-UWOTng@mail.gmail.com>
Date: Mon, 8 Jan 2024 13:05:01 -0500
From: Luiz Augusto von Dentz <luiz.dentz@...il.com>
To: Jonas Dreßler <verdre@...d.nl>
Cc: Marcel Holtmann <marcel@...tmann.org>, Johan Hedberg <johan.hedberg@...il.com>, asahi@...ts.linux.dev,
linux-bluetooth@...r.kernel.org, linux-kernel@...r.kernel.org,
netdev@...r.kernel.org
Subject: Re: [PATCH v3 0/4] Disconnect devices before rfkilling adapter
Hi Jonas,
On Sun, Jan 7, 2024 at 1:03 PM Jonas Dreßler <verdre@...d.nl> wrote:
>
> Apparently the firmware is supposed to power off the bluetooth card
> properly, including disconnecting devices, when we use rfkill to block
> bluetooth. This doesn't work on a lot of laptops though, leading to weird
> issues after turning off bluetooth, like the connection timing out on the
> peripherals which were connected, and bluetooth not connecting properly
> when the adapter is turned on again after rfkilling.
>
> This series uses the rfkill hook in the bluetooth subsystem
> to execute a few more shutdown commands and make sure that all
> devices get disconnected before we close the HCI connection to the adapter.
>
> ---
>
> v1: https://lore.kernel.org/linux-bluetooth/20240102133311.6712-1-verdre@v0yd.nl/
> v2: https://lore.kernel.org/linux-bluetooth/20240102181946.57288-1-verdre@v0yd.nl/
> v3:
> - Update commit message titles to reflect what's actually happening
> (disconnecting devices, not sending a power-off command).
> - Doing the shutdown sequence synchronously instead of async now.
> - Move HCI_RFKILLED flag back again to be set before shutdown.
> - Added a "fallback" hci_dev_do_close() to the error path because
> hci_set_powered_sync() might bail-out early on error.
>
> Jonas Dreßler (4):
> Bluetooth: Remove HCI_POWER_OFF_TIMEOUT
> Bluetooth: mgmt: Remove leftover queuing of power_off work
> Bluetooth: Add new state HCI_POWERING_DOWN
> Bluetooth: Disconnect connected devices before rfkilling adapter
>
> include/net/bluetooth/hci.h | 2 +-
> net/bluetooth/hci_core.c | 35 +++++++++++++++++++++++++++++++++--
> net/bluetooth/hci_sync.c | 16 +++++++++++-----
> net/bluetooth/mgmt.c | 30 ++++++++++++++----------------
> 4 files changed, 59 insertions(+), 24 deletions(-)
>
> --
> 2.43.0
I will probably be applying this sortly, but let's try to add tests to
mgmt-tester just to make sure we don't introduce regressions later,
btw it seems there are a few suspend test that do connect, for
example:
Suspend - Success 5 (Pairing - Legacy) - waiting 1 seconds
random: crng init done
New connection with handle 0x002a
Test condition complete, 1 left
Suspend - Success 5 (Pairing - Legacy) - waiting done
Set the system into Suspend via force_suspend
New Controller Suspend event received
Test condition complete, 0 left
--
Luiz Augusto von Dentz
Powered by blists - more mailing lists