From nobody Fri Sep 25 09:21:17 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 DF42E2E737D; Tue, 15 Sep 2026 00:50:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789433451; cv=none; b=FuBk0/xg7ysYp0CSTzQfqmTJFH8xv7InFrQpNUjWa0e2BB1ojqBj2uquJRHDDYEU6/gO72vIXhV1ZdR2UyScxCwfE8vn0NfQ+1AZnK5uUlikz/EBCQCoGH2HMHuNlgiyPMlpYEOjKtVmFcYAmT8xJZd9P4SR2kYVk37c9fbzfXY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789433451; c=relaxed/simple; bh=RyxyZU6tvGVK3Cpsto128QhecmW8cGT4ht7LtYUq96k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Awlttub1zna3V7ktt9Ast2Wy66hF6j8X62wZ6ozchpUKvNM83V3T19kRjlLAnD8AJM3mBg5MFMNRp6bsLsASVuFQRCnqTXs+YGEv9ykMzPhu81rMg89pdwGEmW9Vek35KoqjUUlDAcf7PDRB63M8472w+FNQd7LvelUCPXO2wOY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=OubUc28K; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="OubUc28K" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789433447; bh=RyxyZU6tvGVK3Cpsto128QhecmW8cGT4ht7LtYUq96k=; h=From:Date:Subject:To:Cc:From; b=OubUc28KqQgzJdCmtM+mgjdyWdAfjd09wXdR5s/dEr2kE466GPU6evpleWbaXF9zS VrKHFk9oOKn7tBSsYYkQ85TD2Ie95HAZuvcJ0r+xrd6DS+iVwfdmbJQpVECmnzTEtp FREi8Wa8H2PxPxG4hYVMm8H7gFcSvKjhsuy1D0xv+qvJbrT/xuaRg/sUZY5VKJu/Yz eAJXB3GVf0m4cRGVu5QdOb9QbzPIWYJWm5YruRBlZigiHqqsD/UzcyzyUUVPKGcYMN Qsod3qDrcDzJlxcocdeNJF3aS4lARFjPl42o2cHvEaOpmXtEnYMd6+Mar1k9jkOwzO Dla32fMuFSiGw== Received: from jupiter.universe (unknown [100.64.1.62]) (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) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id D11D517E020C; Tue, 15 Sep 2026 02:50:47 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 8733A48002B; Tue, 15 Sep 2026 02:50:47 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 02:50:39 +0200 Subject: [PATCH wireless-next v2] wifi: brcmfmac: Improve D3 substate entering timeout handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-brcmfmac-bcm43752-suspend-fix-v2-1-1bd84914998b@collabora.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/42OzQ6CMBCEX8Xs2TXQyp8n38NwKO0iNdCSLiCG8 O4CvoDHmck3MwswBUsMt9MCgSbL1rtNiPMJdKPck9CaTYOIRBoVUY5V0F3dKY2V7q4ySwTyyD0 5g7WdsU4TWZBRMUUGto4+0GYf/Q9420AtMaOjeYDyF/NYvUgP+8YONJYHHz7Hnyk+sD+npxhjl CLJk1QWJkvlXfu2VZUP6qJ9B+W6rl/2g1IJ7wAAAA== X-Change-ID: 20260908-brcmfmac-bcm43752-suspend-fix-f6539eda1e0d To: Arend van Spriel , Heiko Stuebner Cc: linux-wireless@vger.kernel.org, brcm80211@lists.linux.dev, brcm80211-dev-list.pdl@broadcom.com, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2977; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=RyxyZU6tvGVK3Cpsto128QhecmW8cGT4ht7LtYUq96k=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqolme4nuHWmpgOjksw+iy1a4fJGq0ufmzc0 PdYynyZ531Lk4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqJZnAAoJENju1/PI O/qaO9QP+gJfY+1klvAccg/4UQb9UdDoh7tto9tPNQafA1WQkAP19eYYRIqItzjK/CfE59NB6NZ c7rLGMMrbBx3+/I6jC51uCJM/GTaaDAwH9Njk6mPYpLxtANleGpT82PJeTwjCB/y1dnNdD+DDFY hMTyCkrSwYzAsY+sZ/WFvsYGY76UxBePB2GQUDOR/Cr80LQNFe3SIh0FWSONwVX+xtKlEr5i9y4 5ZBpJ5SSO6C+yNYQzcft6gJhMngKwAuAujK9FH7NynacgGRMBi67goZ0uVHJhCeQhCw22mFm4bf 43mJLVzhA0R/vcpQByazUWJen24LWPjJJshyea3O/noUTz0Lhh+heYHSopB+V0ZzTOQQ4sO/LTT E2zDdRCNtgdmhSp1saVvKtr3DvaGd31ccieX+nCJrCZQAbYRmbaSRm8lOiHRerL84ZwUJGP/pBS psiTZfb7fxhTkYxxhyguYdfxv0wYPuxev5ylFudR0TP6QFIb6muw1PRW7FlJ7yjjxF6Zop/W39y 6X3HVKMl1KdLqpJwJ++PnV4iWYOLPlBFFt7fQq6xLteXZYEXTH4vWmt4aj6e8eXdSixmCg7/+hS 0gLFrUsqHVcoCOfFgM+97eSrwy+0cCo2cqu6pEHo/624pM7A6eYuuvjELa+BAaUiqLxTl1rE8jo NjkBBSOMrxGVj+36jEZswzA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Some firmwares (e.g. BCM43752) do not service the D3_INFORM mailbox handshake when idle, so the D3 ACK never arrives. If WoWL is not armed the device is going to be powered off during system suspend and re-probed on resume anyway (brcmf_pcie_pm_leave_D3() handles that), so the missing ACK is harmless and must not abort the whole system suspend. When WoWL is active the device has to stay powered with its state preserved, so keep treating the timeout as fatal. Signed-off-by: Sebastian Reichel --- This was tested with Rockchip RK3588 EVB1, which has a BCM43752 based WLAN card (AP6275P). This card is also used by a few other Rockchip boards (at least Khadas Edge2, RK3576 EVB1). Unfortunately linux-firmware does not contain any firmware files for this chip, so I used the files available from Armbian [0]: 3779bd4f629961cf060a83cc5047a3b9b2d23c9d brcmfmac43752-pcie.bin a471651d580b51da2a681e53c0cc3258eaa70e10 brcmfmac43752-pcie.clm_blob 87294b22f4bf7b7f718cf24076f102df07e3c414 brcmfmac43752-pcie.txt [0] https://github.com/armbian/firmware/tree/master/brcm At least with that firmware the suspend command times out blocking system suspend. Testing on the Rockchip platform requires PCIe suspend support for it, which has been send separately. The patch is based on v7.3-rc1 and can go via -next as system suspend with mainline kernel needs quite some work on Rockchip anyways. Changes in v2: - Link to v1: https://patch.msgid.link/20260908-brcmfmac-bcm43752-suspend-f= ix-v1-1-32585639d763@collabora.com - Set prefix to wireless-next instead of net-next - Do not print error if the timeout is ignored --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/driv= ers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index 55f4d7b970f2..17bae04c14b0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c @@ -2652,9 +2652,13 @@ static int brcmf_pcie_pm_enter_D3(struct device *dev) wait_event_timeout(devinfo->mbdata_resp_wait, devinfo->mbdata_completed, BRCMF_PCIE_MBDATA_TIMEOUT); if (!devinfo->mbdata_completed) { - brcmf_err(bus, "Timeout on response for entering D3 substate\n"); - brcmf_bus_change_state(bus, BRCMF_BUS_UP); - return -EIO; + if (devinfo->wowl_enabled) { + brcmf_err(bus, "Timeout on response for entering D3 substate\n"); + brcmf_bus_change_state(bus, BRCMF_BUS_UP); + return -EIO; + } + + brcmf_dbg(PCIE, "No D3 ACK, continuing to power the device off\n"); } =20 devinfo->state =3D BRCMFMAC_PCIE_STATE_DOWN; --- base-commit: cee9395acd8043be0644b25c34bfa86623f2b935 change-id: 20260908-brcmfmac-bcm43752-suspend-fix-f6539eda1e0d Best regards, -- =20 Sebastian Reichel