Re: [PATCH v3] device: Remove device after all bearers are disconnected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Cheng,

On Wed, Sep 25, 2024 at 5:10 AM Cheng Jiang <quic_chejiang@xxxxxxxxxxx> wrote:
>
> For a combo mode remote, both BR/EDR and BLE may be connected.
> RemoveDevice should be handled after all bearers are dropped,
> otherwise, remove device is not performed in adapter_remove_connection.
> ---
>  src/device.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/src/device.c b/src/device.c
> index f8f61e643..c25bf6b60 100644
> --- a/src/device.c
> +++ b/src/device.c
> @@ -3492,8 +3492,18 @@ void device_remove_connection(struct btd_device *device, uint8_t bdaddr_type,
>                 DBusMessage *msg = device->disconnects->data;
>
>                 if (dbus_message_is_method_call(msg, ADAPTER_INTERFACE,
> -                                                               "RemoveDevice"))
> +                                                       "RemoveDevice")) {
> +
> +                       /* Don't handle the RemoveDevice msg if device is
> +                        * connected. For a dual mode remote, both BR/EDR
> +                        * and BLE may be connected, RemoveDevice should
> +                        * be handled after all bearers are disconnects.
> +                        */
> +                       if (device->bredr_state.connected ||
> +                                       device->le_state.connected)
> +                               break;

While this seems to make sense further down there is the same state:

line 3531: if (device->bredr_state.connected || device->le_state.connected)

So what this is doing is just to avoid removing the msg from
device->disconnects but perhaps I'm missing something.

>                         remove_device = true;
> +               }
>
>                 g_dbus_send_reply(dbus_conn, msg, DBUS_TYPE_INVALID);
>                 device->disconnects = g_slist_remove(device->disconnects, msg);
> --
> 2.25.1
>
>


-- 
Luiz Augusto von Dentz





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux