[PATCH 1/2] ath10k: skip quiet mode for WCN3990 to prevent firmware crash

Baochen Qiang baochen.qiang at oss.qualcomm.com
Mon Mar 30 22:09:11 PDT 2026



On 3/22/2026 8:48 PM, Malte Schababerle wrote:
> WCN3990 firmware (WLAN.HL.3.2) crashes deterministically when the
> quiet mode WMI command is sent during ath10k_start(). The crash occurs
> at PC=0xb0008e20 in wlanmdsp.mbn, ~17ms after the subsequent
> vdev_create command, and cascades into a full modem crash.
> 
> Commit 53884577fbcef ("ath10k: skip sending quiet mode cmd for
> WCN3990") addressed this for HL2.0 firmware by gating quiet mode on
> WMI_SERVICE_THERM_THROT. HL2.0 did not advertise the service bit, so
> the guard was effective. However, newer WCN3990 firmware (HL3.2)
> erroneously advertises WMI_SERVICE_THERM_THROT via its TLV service
> map despite still being unable to handle the quiet mode command.
> 
> Skip quiet mode unconditionally for WCN3990 using QCA_REV_WCN3990()
> instead of relying on the service bit.
> 
> Tested on OnePlus 7T (SM8150/WCN3990) with WLAN.HL.3.2.0.c2-00006
> and WLAN.HL.3.2.0.c2-00011 (both crash without patch, both work with):
> - wlan0 comes up without crash
> - WiFi scanning works
> - NetworkManager recognizes the interface
> 
> Fixes: 53884577fbcef ("ath10k: skip sending quiet mode cmd for WCN3990")
> Signed-off-by: Malte Schababerle <m.schababerle at gmail.com>
> ---
>  drivers/net/wireless/ath/ath10k/thermal.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/net/wireless/ath/ath10k/thermal.c b/drivers/net/wireless/ath/ath10k/thermal.c
> index 8b15ec07b1071..33f299f414710 100644
> --- a/drivers/net/wireless/ath/ath10k/thermal.c
> +++ b/drivers/net/wireless/ath/ath10k/thermal.c
> @@ -136,6 +136,16 @@ void ath10k_thermal_set_throttling(struct ath10k *ar)
>  	if (!ar->wmi.ops->gen_pdev_set_quiet_mode)
>  		return;
>  
> +	/* WCN3990 firmware crashes on quiet mode despite advertising support.
> +	 * See also commit 53884577fbcef ("ath10k: skip sending quiet mode
> +	 * cmd for WCN3990").
> +	 */
> +	if (QCA_REV_WCN3990(ar)) {
> +		ath10k_dbg(ar, ATH10K_DBG_BOOT,
> +			   "skip quiet mode for WCN3990 (known crash trigger)\n");
> +		return;
> +	}
> +
>  	if (ar->state != ATH10K_STATE_ON)
>  		return;
>  

Malte, the firmware team needs firmware dump to understand this issue, would you be able
to help collect it?




More information about the ath10k mailing list