Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp7084016rdb; Wed, 3 Jan 2024 04:16:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IGmGjvvrrhDv+8mxaFIliJg4k/qPbkx52M9WnZiwFR1pUM0+YfmNWCu1KypbEiJK5KWZtSu X-Received: by 2002:a17:906:1c7:b0:a28:65ce:a76d with SMTP id 7-20020a17090601c700b00a2865cea76dmr882890ejj.7.1704284176783; Wed, 03 Jan 2024 04:16:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704284176; cv=none; d=google.com; s=arc-20160816; b=LSxP2H7xkaafmwJDPNluzsMbNrItE8Wi6T6ST/yr72fTufWJqFB1zIpb4KYgNlEYZg oyH86OyziuWrN2rmNOwGp1E1n6WjxtzVjRz+lYK6eCetQh7z8BvxngLUuC/UhA9yk8iS oPyMLoBZEotpvByWMkGH10Mv1F9OS/RyfdQ93JL+AkmkNtRkEOxrNagnxZD8QdtKvDMc srTYAm7ETHFX5uS1xJEEAuKLJ6Aq6tbWEFnUnan3oXRvpUIncpeLnrxfpjgUx32yIeUl rif2uunqmCo1Xz42vfHhksWJbZer2taIPVriiTDAxfohZDY+OB3h63O8RFFcWg7IJIdz zDAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=WUIa66OCbvNt72kxC/wpUTDX/5Svncaurms+2IBGjxw=; fh=C2OB9361WAmkGCyzL/Bh+jgCh+Cmm7xmje04ZJ64zEk=; b=vRn2/ciXiyekw45ZdErK6JoON9ZaJzi0WxYRsYIEXB70VRDNkdzvkFKrMMV4VdTuQr qHPE7YiM4WVSFs59PptxlkySxma5JlNOIADv4vNIQgUYahbcoV+vrQP9zz8NUtEB5iNU NMdXlVNUJw30vIywjAb3yCQ4OkRHpxRO9j6a79kYZYH3tIVkVT/1Yh02XuUk0KZecFdH t+D+R8jrFlFban6mKtV1XckKSbREcG1GcJLpp/uGDdDqWuVH15M9BTmzMQw3s3tru/Ff aB8bJoblGiTSUM7i8NglE1GhriKYj/CMQH0JdTGOovhh3KYmhtCc0uxPFq/EvVwOs8BR PpPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-15498-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-15498-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id au2-20020a170907092200b00a23499a71a4si3202236ejc.525.2024.01.03.04.16.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 04:16:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-15498-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-15498-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-15498-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 8414E1F23982 for ; Wed, 3 Jan 2024 12:16:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2265019442; Wed, 3 Jan 2024 12:16:02 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CAA218EB0; Wed, 3 Jan 2024 12:15:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=v0yd.nl Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=v0yd.nl Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4T4pbH31vgz9snN; Wed, 3 Jan 2024 13:15:55 +0100 (CET) Message-ID: <548fb407-ef57-4108-aa26-52deafdca55c@v0yd.nl> Date: Wed, 3 Jan 2024 13:15:52 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH v2 0/4] Power off HCI devices before rfkilling them Content-Language: en-US To: Luiz Augusto von Dentz Cc: Marcel Holtmann , Johan Hedberg , asahi@lists.linux.dev, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, verdre@v0yd.nl References: <20240102181946.57288-1-verdre@v0yd.nl> From: =?UTF-8?Q?Jonas_Dre=C3=9Fler?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4T4pbH31vgz9snN Hi Luiz, On 1/2/24 19:39, Luiz Augusto von Dentz wrote: > Hi Jonas, > > On Tue, Jan 2, 2024 at 1:19 PM Jonas Dreßler wrote: >> >> In theory the firmware is supposed to power off the bluetooth card >> when we use rfkill to block it. 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 >> quickly after rfkilling. >> >> This series hooks into the rfkill driver from the bluetooth subsystem >> to send a HCI_POWER_OFF command to the adapter before actually submitting >> the rfkill to the firmware and killing the HCI connection. >> >> --- >> >> v1 -> v2: Fixed commit message title to make CI happy >> >> 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: Queue a HCI power-off command before rfkilling adapters > > Apart from the assumption of RFKILL actually killing the RF > immediately or not, I'm fine with these changes, that said it would be > great if we can have some proper way to test the behavior of rfkill, > perhaps via mgmt-tester, since it should behave like the > MGMT_OP_SET_POWERED. Testing this sounds like a good idea, I guess we'd have to teach mgmt-tester to write to rfkill. The bigger problem seems to be that there's no MGMT event for power changes and also no MGMT_OP_GET_POWERED, so that's a bit concerning, could userspace even be notified about changes to adapter power? Another thing I'm thinking about now is that queuing the HCI command using hci_cmd_sync_queue() might not be enough: The command is still executed async in a thread, and we won't actually block until it has been sent, so this might be introducing a race (rfkill could kill the adapter before we actually send the HCI command). The proper way might be to use a completion and wait until the set_powered_off_sync_complete() callback is invoked? > >> include/net/bluetooth/hci.h | 2 +- >> net/bluetooth/hci_core.c | 33 ++++++++++++++++++++++++++++++--- >> net/bluetooth/hci_sync.c | 16 +++++++++++----- >> net/bluetooth/mgmt.c | 30 ++++++++++++++---------------- >> 4 files changed, 56 insertions(+), 25 deletions(-) >> >> -- >> 2.43.0 >> > > Cheers, Jonas