Received: by 2002:a05:7412:d008:b0:f9:6acb:47ec with SMTP id bd8csp90562rdb; Tue, 19 Dec 2023 10:08:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IEHsW3kWNnEmU3JxpQ4/ChEAkOoNulT1p7tjez+9jpYQDikIQS6HigSg8+/Pf3UPp78bhWO X-Received: by 2002:a17:90a:6d03:b0:28b:cc26:c973 with SMTP id z3-20020a17090a6d0300b0028bcc26c973mr238915pjj.92.1703009309586; Tue, 19 Dec 2023 10:08:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703009309; cv=none; d=google.com; s=arc-20160816; b=be+RS6CKZWXxVWokapRFQNp/BRjLG9JB3Xu+2IKL1s1yq+qm0HxeP1ptYYlB0PrOC3 w3xeVLu0aheaJRaD+1rJtPrTZDG2BADQa6lKucGTMxs6bS4QvSV1Z1yWOMGa5js0tCQo Aaf+TUYail+tfQ6w8VFt/h8+e4j96F/4CJlOHg/EC1rXE3mX4eG/qlBREeNgioLoIxFZ b7gQpMmRWpkLUBlJIC9jw3VH0JqvUJIKs7BcVTP0/RXKjM1mWJYpCl9izcAqPvPMksZk mJUJ2thWOP9t1YTA75BUJzK/tzXzHrg5G37bKwQd9zkJcGD56hDp8ET843DWF/Mi5g/H yHIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=m1ZwhJRZ+N/d+fVkkOSiSnflGiueYMOvsJ8Gh3pY+IU=; fh=eq5ik3SClkMtxfGkPoc5B6Dq01nwxK3o4VZU0MkX4oc=; b=hKlSDZBSWdKT6EwUV+h268qOhSvRyk5f+WrEzOQrK3x65uNz3N54Z7FNdyLt9EbpgF /xkFsli4kAxkvQAt5O+G6mF3WSk81QU6eOEyoD39xDhWpNyBgcwzqZGYWD9yUwTOTTq9 PO1xXbQvcjE028O4WLA20UgCZ015kH2+7fytDis2+/JiEHLtDKYYaIrsMexSJAg2NgCM mvASXBTpSJC5U6ZjMXTQdvPFXj/1l084lYykravfYRXyy90sPY+SSwIJPC11OjP8Yl3c vBuUbsPmEoqc7ZyvRLeK6JMeJj7KqT74DfCeerTEI7pmq5W6deZHu2aI1h8E+SNDdYQ5 yY1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=AGNyDIKy; spf=pass (google.com: domain of linux-bluetooth+bounces-664-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-664-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id x23-20020a17090abc9700b002888396d22esi1562301pjr.6.2023.12.19.10.08.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 10:08:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-664-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=AGNyDIKy; spf=pass (google.com: domain of linux-bluetooth+bounces-664-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-664-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id B01AE28810C for ; Tue, 19 Dec 2023 18:08:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 452863986F; Tue, 19 Dec 2023 18:07:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AGNyDIKy" X-Original-To: linux-bluetooth@vger.kernel.org Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55A5D37D21; Tue, 19 Dec 2023 18:07:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2cb21afa6c1so67644811fa.0; Tue, 19 Dec 2023 10:07:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703009230; x=1703614030; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=m1ZwhJRZ+N/d+fVkkOSiSnflGiueYMOvsJ8Gh3pY+IU=; b=AGNyDIKyj8U/cb68cytRNvA6qP8BT2drBNahHGjI4Q1JmXEES1l4js7XoAkMGCfXSs BoArn8jLLoLvTFLHoNeqPG/pEc1cqE1UlOPi3HMPi1aCevbCCm2/NiU5XGSzFp6g3yWV MAKAV/WUeJRj34BIOkl935xVKP47qDKqZchm/P53y2jrtO9Ld2i2jumCr6ioNKL90qPj w1eV3DRh2AWes2/vHDVTywsYnV3/0J2rwVCIbii6+m1mwsjx7tcoOCDCjpqo29Un5mRY ttDEV6zJ7uklFZwiRH5/wtAaL/pXp8lxpLg+u8rnBWp1tSpRJfhEZxDexxfyfeT/gxAc 6+wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703009230; x=1703614030; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m1ZwhJRZ+N/d+fVkkOSiSnflGiueYMOvsJ8Gh3pY+IU=; b=g5JpnU9cAH9lngE5sGv0e48qhBCdIbEAkOU+WqUG9SbqeLyu/tsByzQtLJg/K81pIn Zky10VyZYtzWwiaALUeDtOcQdFd6zxSROO911D2VqeCJERrhDaVttxUzeiXBiU+5kniU BMO610fh5+p65BSgwSOCnkyj1wJmBIBfKYCzU9G8LHLJzsmg9xxsbgMOjIPfSkqhYS9l X6tp2tuOawzrmWKnfnbELwTyPFjhMCXib3AJb/6G9Dt1mwBT7pZzwiKTGV4gVDnv0Cb1 K6wRU52Ish6RS5xEqGtMZ1t+eBtNxGijs9R3VQVIHRIqP7egLE1EGrRN4S4ugrVhgmko RvLQ== X-Gm-Message-State: AOJu0Yy8sg9tY0lxi3Qr6+XtVI2A/q85ykQ6zIUz2oSM5wjH0PlAj9Tz HX3HDbqq13BeC5VG4ZB44ZS4nJS5oE8O+v0DNbo= X-Received: by 2002:a2e:b606:0:b0:2cc:87b4:3f9f with SMTP id r6-20020a2eb606000000b002cc87b43f9fmr498039ljn.22.1703009229969; Tue, 19 Dec 2023 10:07:09 -0800 (PST) Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20231208130705.kernel.v1.1.Ic5024b3da99b11e39c247a5b8ba44876c18880a0@changeid> In-Reply-To: <20231208130705.kernel.v1.1.Ic5024b3da99b11e39c247a5b8ba44876c18880a0@changeid> From: Luiz Augusto von Dentz Date: Tue, 19 Dec 2023 13:06:57 -0500 Message-ID: Subject: Re: [kernel PATCH v1] Bluetooth: btmtksdio: clear BTMTKSDIO_BT_WAKE_ENABLED after resume To: Zhengping Jiang Cc: linux-bluetooth@vger.kernel.org, marcel@holtmann.org, chromeos-bluetooth-upstreaming@chromium.org, AngeloGioacchino Del Regno , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Johan Hedberg , Matthias Brugger , Paolo Abeni , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Zhengping, On Fri, Dec 8, 2023 at 4:07=E2=80=AFPM Zhengping Jiang = wrote: > > Always clear BTMTKSDIO_BT_WAKE_ENABLED bit after resume. When Bluetooth > does not generate interrupts, the bit will not be cleared and causes > premature wakeup. > > Fixes: 4ed924fc122f ("Bluetooth: btmtksdio: enable bluetooth wakeup in sy= stem suspend") > Signed-off-by: Zhengping Jiang > --- > > Changes in v1: > - Clear BTMTKSDIO_BT_WAKE_ENABLED flag on resume > > drivers/bluetooth/btmtksdio.c | 10 ++++++++++ > include/net/bluetooth/hci_core.h | 1 + > net/bluetooth/hci_sync.c | 2 ++ > 3 files changed, 13 insertions(+) > > diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.= c > index ff4868c83cd8..8f00b71573c8 100644 > --- a/drivers/bluetooth/btmtksdio.c > +++ b/drivers/bluetooth/btmtksdio.c > @@ -1296,6 +1296,15 @@ static bool btmtksdio_sdio_inband_wakeup(struct hc= i_dev *hdev) > return device_may_wakeup(bdev->dev); > } > > +static void btmtksdio_disable_bt_wakeup(struct hci_dev *hdev) > +{ > + struct btmtksdio_dev *bdev =3D hci_get_drvdata(hdev); > + > + if (!bdev) > + return; > + clear_bit(BTMTKSDIO_BT_WAKE_ENABLED, &bdev->tx_state); > +} > + > static bool btmtksdio_sdio_wakeup(struct hci_dev *hdev) > { > struct btmtksdio_dev *bdev =3D hci_get_drvdata(hdev); > @@ -1363,6 +1372,7 @@ static int btmtksdio_probe(struct sdio_func *func, > hdev->shutdown =3D btmtksdio_shutdown; > hdev->send =3D btmtksdio_send_frame; > hdev->wakeup =3D btmtksdio_sdio_wakeup; > + hdev->clear_wakeup =3D btmtksdio_disable_bt_wakeup; > /* > * If SDIO controller supports wake on Bluetooth, sending a wakeo= n > * command is not necessary. > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci= _core.h > index 0c1754f416bd..4bbd55335269 100644 > --- a/include/net/bluetooth/hci_core.h > +++ b/include/net/bluetooth/hci_core.h > @@ -672,6 +672,7 @@ struct hci_dev { > int (*get_codec_config_data)(struct hci_dev *hdev, __u8 type, > struct bt_codec *codec, __u8 *vnd_le= n, > __u8 **vnd_data); > + void (*clear_wakeup)(struct hci_dev *hdev); I wonder if it wouldn't be a better idea to add something like suspend and resume callbacks to notify the about these hdev states, that way we can synchronize the states better and avoid having to clear the wakeup state when it shouldn't be active to begin with since the hdev is not suspended. > }; > > #define HCI_PHY_HANDLE(handle) (handle & 0xff) > diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > index 3563a90ed2ac..6c4d5ce40524 100644 > --- a/net/bluetooth/hci_sync.c > +++ b/net/bluetooth/hci_sync.c > @@ -5947,6 +5947,8 @@ int hci_resume_sync(struct hci_dev *hdev) > return 0; > > hdev->suspended =3D false; > + if (hdev->clear_wakeup) > + hdev->clear_wakeup(hdev); > > /* Restore event mask */ > hci_set_event_mask_sync(hdev); > -- > 2.43.0.472.g3155946c3a-goog > --=20 Luiz Augusto von Dentz