From patchwork Sun Jan 7 18:02:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jonas_Dre=C3=9Fler?= X-Patchwork-Id: 18795 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:37c1:b0:101:2151:f287 with SMTP id y1csp645880dyq; Sun, 7 Jan 2024 10:03:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IGtg9HP+NKYMMZ9ugDY8w0NWwxejeyIW7vCrVZnzj8cjotVsrl/fqc1SDq46RE4gwc69VaZ X-Received: by 2002:a05:622a:64c:b0:429:87fc:7a8 with SMTP id a12-20020a05622a064c00b0042987fc07a8mr2648710qtb.40.1704650609794; Sun, 07 Jan 2024 10:03:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704650609; cv=none; d=google.com; s=arc-20160816; b=UB9g7fSRmDsOvi2KeYbtYBueFF1/n3WWQ5oBbstqPrFrO/4YSnsr36IhZ5tTiBpMLA v12RpTXRc/c/opN6yDmA5uaTRKGZ/noR3PvCKbmsmN8g+or7N/jDpayyE7a3SSWO84aw Y6/wTC1iexYxoAYLhWdN83hKhiDr+Ymb3YQE3fY5wRx6tzYb7EeAMa+AalJayaugwYzW ybKwCHKzYu6c6Uf5zYKEKaj5LgVMxLQzxYUZsOmIMCcB0E8fT+jc4iVUx23efcuK39du GwDobNsZoonQjHCIrt0+uW4ZS1E/984HKwDLfbH4MIozgQF1pX2cNn4u26y5GfPzzLfe M6sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=hDuKnzfq3Kpgl1DEAfQy4oAPxDC2m6iLWDbEmf7x1Uw=; fh=S5rf2bc7VLlSXYQ0EqFAIodb1qEiUfsxulvZhQKZRws=; b=oSekghSwtFtBPi8VEkFmppc+dNwCekv5m+Fmu4YOLJwjKK/sBfT6GAOl8s8oGMnyuC t42uO5Asi57vEJ6J4fjoLLAtKI9ifAszcbflPY0Z9GccMA0raF9rtloK02y5v9EAL7jG MnXEMNujivWFUFrA3vcLhN/PMMestYdbAuSRnQrIlTPSRijsCuim2tsnQPGtvMG7OCyM tcHFKrgjFGFIHkr5WJx6w1gm9OzTUBGKwF/O0MJ5PsAUqXy0y8hfpTNUzdszzmxmC9vJ M7fVHARJUivZde8OR/gI8WXkWMDuWPsTbjvWB1gLxoTtnZYgb6NUinuxlLgqwtaCAr4D Hy9Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-18940-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18940-ouuuleilei=gmail.com@vger.kernel.org" Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id h19-20020ac85e13000000b004297bd5c707si4971617qtx.400.2024.01.07.10.03.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Jan 2024 10:03:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-18940-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-18940-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18940-ouuuleilei=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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 976A71C215FD for ; Sun, 7 Jan 2024 18:03:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4E26F1401D; Sun, 7 Jan 2024 18:03:12 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) (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 AB43313FE9; Sun, 7 Jan 2024 18:03:07 +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 smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (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-201.mailbox.org (Postfix) with ESMTPS id 4T7Q5t1ScCz9stL; Sun, 7 Jan 2024 19:02:58 +0100 (CET) From: =?utf-8?q?Jonas_Dre=C3=9Fler?= To: Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz Cc: =?utf-8?q?Jonas_Dre=C3=9Fler?= , asahi@lists.linux.dev, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v3 0/4] Disconnect devices before rfkilling adapter Date: Sun, 7 Jan 2024 19:02:46 +0100 Message-ID: <20240107180252.73436-1-verdre@v0yd.nl> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787455717776270133 X-GMAIL-MSGID: 1787455717776270133 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(-)