From nobody Thu Apr 9 18:57:13 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D9488387587; Tue, 7 Apr 2026 06:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775544240; cv=none; b=hLKga9z8/C49epsbRKx6TsBVEfQSdeZesZw7+aoDKNYWwp0X/J++bxysL09IZuG1iWSYp2J3iwgTn+mT/e3dsaw4I69+sCazIFPMelN6vHNa5qNmFr/RePKOhlo7Q4DMYoUZdqaa15xHTxGMUmDRmiPRn6SJe/fZtVikL1QRMuc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775544240; c=relaxed/simple; bh=GEymDA+iQJel2JdCTM+6T/7r4bVEqeoygTAWOXIniVw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AQ7vmTfT7DmiAla9uWQNJPIBV7jOROLk3brzCtJ5a7TUnV+dsorBIeXkcyCgch9aM6ziT7PlqlNOXqL1NMF/Kfpw5W+VY7PK2pWWRYs/pssOF7hEqIcb/1EFWLn412+julCCNZdFvJlf20oaZppQE+4eubAbli3ajdqdO7RiXUE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=p3UfE+O5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="p3UfE+O5" Received: by smtp.kernel.org (Postfix) with ESMTPS id AA189C2BCB1; Tue, 7 Apr 2026 06:44:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775544240; bh=GEymDA+iQJel2JdCTM+6T/7r4bVEqeoygTAWOXIniVw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=p3UfE+O5jEFkYuBoqSGz8gFoHHETkW/wv0HISlgsBWyiu8i9I6Z7EHQeySMzZVXWZ ty+IZ4m2tOVbTQkv54NInkjt+10Rrx1ov+acvK72fPlyzF1OfbOYPnNuOK3Z2yC0sQ J01n1DuN2rvsZm2LUVY8Luid9jFd1rgmxIanqokhD/cNhLcrqDh68DJ63RXblvsQZ1 rg42VOc04zNBs/jVaAAoEPM6ndFCYd8DhEgVn7xV4lt6k7uQp9tBouyFMh/9NGiAH4 5mDOtYAn2rw4rJhz93SCkIXjehGVQTpzzuxWpKp7iRWU3Hshf4iC9NoKb3DG9ltyAL POm7OY29kbYUA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9ADC2FB519F; Tue, 7 Apr 2026 06:44:00 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Tue, 07 Apr 2026 08:43:55 +0200 Subject: [PATCH v5 2/3] ath10k: Add device-tree quirk to skip host cap QMI requests 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: <20260407-skip-host-cam-qmi-req-v5-2-dfa8a05c6538@ixit.cz> References: <20260407-skip-host-cam-qmi-req-v5-0-dfa8a05c6538@ixit.cz> In-Reply-To: <20260407-skip-host-cam-qmi-req-v5-0-dfa8a05c6538@ixit.cz> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson , Bjorn Andersson , Konrad Dybcio , Paul Sajna Cc: Baochen Qiang , Vasanthakumar Thiagarajan , Dmitry Baryshkov , Amit Pundir , linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath10k@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3626; i=david@ixit.cz; h=from:subject:message-id; bh=duxRMTRGnz0BVuY8CUPzChCzTzgdtO7LKOK19WE1+G0=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBp1Keu88ybLs7hox4Z8WZ8o/SOGrjIyc50jOeLX QOeUbddEHaJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCadSnrgAKCRBgAj/E00kg csgHEACboOgcD/LfRDDFDXsLlNM8GQpmFctiiv8IiSa6B7WuuCZJPAlP3WC0R2Ey4yNoNjHQCr0 ZyvWsz6GOjzVbxcOf5+/c4qMuiSvnJ7ulQ1Kk4gGgG9+W5blpLLajSw97dXGLS/wSCUXeIvDGp2 BPLTJjNlkgfd7gnD/Dt4VEgOFxpMv9xE27OxvYSyGb6ipvdxJtkebQ+4ty46eutqLo2+9m00NwN 0AH9Ftd/rDohmPpYJbm+oTsLY2PmhLf5iNDk8l9sQChoPfJMl3Exf53kqW8YqB9dp0Tms2JRCoG NXQyh7XsX8uQpLNg2f3vB/eCgAObfDWABwjtSq+PxXjWDOUprrOVcsPdfrcLxVdzFoSWPk8o+nm ao6WLbn4AQ9hjbYwJ6nelY4kPUDs6tS1eZHtGjes/kCHXf7vP4FxbcbCmgDmpHOKGJBJE3U/kyD ZRJegTIBgZiSVp9Viq8iGgd0/DypawqzUWfoalT1VVxZQoEezg0LUw09Xk7puDEqce8p/25O2vB +vglqLByzcXiWIX5FM0cW3TZOe14Wr7AYmg6g3deIOtKjXatGDIG9VxvEXTKp1s9aN7pAjtaTIB Zcixl/7/AJULaUwRoSzAv5PhFxu+QOxALaXb6mWYGlSsvamwVXBqkOEoHcCWijHOyIpIZKyxPvw lS+1BqIPk5NW51Q== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: Amit Pundir Some firmware versions do not support the host capability QMI request. Since this request occurs before firmware-N.bin and board-M.bin are loaded, the quirk cannot be expressed in the firmware itself. The root cause is unclear, but there appears to be a generation of firmware that lacks host capability support. Without this quirk, ath10k_qmi_host_cap_send_sync() returns QMI_ERR_MALFORMED_MSG_V01 before loading the firmware. This error is not fatal - Wi-Fi services still come up successfully if the request is simply skipped. Add a device-tree quirk to skip the host capability QMI request on devices whose firmware does not support it. For example, firmware build "QC_IMAGE_VERSION_STRING=3DWLAN.HL.2.0.c3-00257-QCAHLSWMTPLZ-1" on Xiaomi Poco F1 phone requires this quirk. Suggested-by: Bjorn Andersson Signed-off-by: Amit Pundir Tested-by: Paul Sajna Reviewed-by: Baochen Qiang Reviewed-by: Vasanthakumar Thiagarajan Acked-by: Dmitry Baryshkov Signed-off-by: David Heidelberg --- drivers/net/wireless/ath/ath10k/qmi.c | 13 ++++++++++--- drivers/net/wireless/ath/ath10k/snoc.c | 3 +++ drivers/net/wireless/ath/ath10k/snoc.h | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/a= th/ath10k/qmi.c index eebd78e7ff6bc..e7f90fd9e9b83 100644 --- a/drivers/net/wireless/ath/ath10k/qmi.c +++ b/drivers/net/wireless/ath/ath10k/qmi.c @@ -808,6 +808,7 @@ ath10k_qmi_ind_register_send_sync_msg(struct ath10k_qmi= *qmi) static void ath10k_qmi_event_server_arrive(struct ath10k_qmi *qmi) { struct ath10k *ar =3D qmi->ar; + struct ath10k_snoc *ar_snoc =3D ath10k_snoc_priv(ar); int ret; =20 ret =3D ath10k_qmi_ind_register_send_sync_msg(qmi); @@ -819,9 +820,15 @@ static void ath10k_qmi_event_server_arrive(struct ath1= 0k_qmi *qmi) return; } =20 - ret =3D ath10k_qmi_host_cap_send_sync(qmi); - if (ret) - return; + /* + * Skip the host capability request for the firmware versions which + * do not support this feature. + */ + if (!test_bit(ATH10K_SNOC_FLAG_SKIP_HOST_CAP_QUIRK, &ar_snoc->flags)) { + ret =3D ath10k_qmi_host_cap_send_sync(qmi); + if (ret) + return; + } =20 ret =3D ath10k_qmi_msa_mem_info_send_sync_msg(qmi); if (ret) diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/= ath/ath10k/snoc.c index f72f236fb9eb3..3106502275781 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -1362,6 +1362,9 @@ static void ath10k_snoc_quirks_init(struct ath10k *ar) =20 if (of_property_read_bool(dev->of_node, "qcom,snoc-host-cap-8bit-quirk")) set_bit(ATH10K_SNOC_FLAG_8BIT_HOST_CAP_QUIRK, &ar_snoc->flags); + + if (of_property_read_bool(dev->of_node, "qcom,snoc-host-cap-skip-quirk")) + set_bit(ATH10K_SNOC_FLAG_SKIP_HOST_CAP_QUIRK, &ar_snoc->flags); } =20 int ath10k_snoc_fw_indication(struct ath10k *ar, u64 type) diff --git a/drivers/net/wireless/ath/ath10k/snoc.h b/drivers/net/wireless/= ath/ath10k/snoc.h index 1ecae34687c21..46574fd8f84ee 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.h +++ b/drivers/net/wireless/ath/ath10k/snoc.h @@ -51,6 +51,7 @@ enum ath10k_snoc_flags { ATH10K_SNOC_FLAG_MODEM_STOPPED, ATH10K_SNOC_FLAG_RECOVERY, ATH10K_SNOC_FLAG_8BIT_HOST_CAP_QUIRK, + ATH10K_SNOC_FLAG_SKIP_HOST_CAP_QUIRK, }; =20 struct clk_bulk_data; --=20 2.53.0