Re: [PATCH net-next] wifi: brcmfmac: Improve D3 substate entering timeout handling

From: Arend van Spriel

Date: Mon Sep 14 2026 - 16:06:32 EST


On Tue, 08 Sep 2026 17:26:12 +0200, Sebastian Reichel wrote:
> 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 <sebastian.reichel@xxxxxxxxxxxxx>

[...]

> @@ -2653,8 +2653,13 @@ static int brcmf_pcie_pm_enter_D3(struct device *dev)
> 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_bus_change_state(bus, BRCMF_BUS_UP);
> + return -EIO;
> + }
> +
> + brcmf_dbg(PCIE, "No D3 ACK, continuing to power the device off\n");
> }
>
> devinfo->state = BRCMFMAC_PCIE_STATE_DOWN;

brcmf_err() is still emitted unconditionally on timeout, which means
affected devices will log an error message to dmesg on every suspend
even when WoWL is not armed and the missing ACK is expected/harmless.
Please move brcmf_err() inside the if (devinfo->wowl_enabled) check.

Also, please target wireless-next instead of net-next in the subject prefix
for the next version.

Regards,
Arend