[PATCH v3 2/3] wifi: ath10k: do not always wait for MSA_READY indicator
Bjorn Andersson
quic_bjorande at quicinc.com
Mon Apr 29 19:24:18 PDT 2024
On Mon, Apr 29, 2024 at 04:06:29PM +0200, Marc Gonzalez wrote:
> The ath10k driver waits for an "MSA_READY" indicator
> to complete initialization. If the indicator is not
> received, then the device remains unusable.
>
> Several msm8998-based devices are affected by this issue.
> Oddly, it seems safe to NOT wait for the indicator, and
> proceed immediately when QMI_EVENT_SERVER_ARRIVE.
>
> fw_version 0x100204b2
> fw_build_timestamp 2019-09-04 03:01
> fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HL.1.0-01202-QCAHLSWMTPLZ-1.221523.2
>
> Jeff Johnson wrote:
>
> The feedback I received was "it might be ok to change all ath10k qmi
> to skip waiting for msa_ready", and it was pointed out that ath11k
> (and ath12k) do not wait for it.
>
> However with so many deployed devices, "might be ok" isn't a strong
> argument for changing the default behavior.
>
> Signed-off-by: Pierre-Hugues Husson <phhusson at freebox.fr>
> Signed-off-by: Marc Gonzalez <mgonzalez at freebox.fr>
As with patch 1, please address the s-o-b and accept my:
Reviewed-by: Bjorn Andersson <quic_bjorande at quicinc.com>
Regards,
Bjorn
> ---
> drivers/net/wireless/ath/ath10k/qmi.c | 11 +++++++++++
> drivers/net/wireless/ath/ath10k/qmi.h | 1 +
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/ath/ath10k/qmi.c
> index 38e939f572a9e..f1f33af0170a0 100644
> --- a/drivers/net/wireless/ath/ath10k/qmi.c
> +++ b/drivers/net/wireless/ath/ath10k/qmi.c
> @@ -1040,6 +1040,10 @@ static void ath10k_qmi_driver_event_work(struct work_struct *work)
> switch (event->type) {
> case ATH10K_QMI_EVENT_SERVER_ARRIVE:
> ath10k_qmi_event_server_arrive(qmi);
> + if (qmi->no_msa_ready_indicator) {
> + ath10k_info(ar, "qmi not waiting for msa_ready indicator");
> + ath10k_qmi_event_msa_ready(qmi);
> + }
> break;
> case ATH10K_QMI_EVENT_SERVER_EXIT:
> ath10k_qmi_event_server_exit(qmi);
> @@ -1048,6 +1052,10 @@ static void ath10k_qmi_driver_event_work(struct work_struct *work)
> ath10k_qmi_event_fw_ready_ind(qmi);
> break;
> case ATH10K_QMI_EVENT_MSA_READY_IND:
> + if (qmi->no_msa_ready_indicator) {
> + ath10k_warn(ar, "qmi unexpected msa_ready indicator");
> + break;
> + }
> ath10k_qmi_event_msa_ready(qmi);
> break;
> default:
> @@ -1077,6 +1085,9 @@ int ath10k_qmi_init(struct ath10k *ar, u32 msa_size)
> if (of_property_read_bool(dev->of_node, "qcom,msa-fixed-perm"))
> qmi->msa_fixed_perm = true;
>
> + if (of_property_read_bool(dev->of_node, "qcom,no-msa-ready-indicator"))
> + qmi->no_msa_ready_indicator = true;
> +
> ret = qmi_handle_init(&qmi->qmi_hdl,
> WLFW_BDF_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN,
> &ath10k_qmi_ops, qmi_msg_handler);
> diff --git a/drivers/net/wireless/ath/ath10k/qmi.h b/drivers/net/wireless/ath/ath10k/qmi.h
> index 89464239fe96a..0816eb4e4a18a 100644
> --- a/drivers/net/wireless/ath/ath10k/qmi.h
> +++ b/drivers/net/wireless/ath/ath10k/qmi.h
> @@ -107,6 +107,7 @@ struct ath10k_qmi {
> char fw_build_timestamp[MAX_TIMESTAMP_LEN + 1];
> struct ath10k_qmi_cal_data cal_data[MAX_NUM_CAL_V01];
> bool msa_fixed_perm;
> + bool no_msa_ready_indicator;
> enum ath10k_qmi_state state;
> };
>
> --
> 2.34.1
>
>
More information about the ath10k
mailing list