Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Andreas Tobler <andreas.tobler@onway.ch>
To: Baochen Qiang <baochen.qiang@oss.qualcomm.com>, stable@vger.kernel.org
Cc: regressions@lists.linux.dev
Subject: Re: wifi: ath10k: avoid unnecessary wait for service ready message
Date: Wed, 22 Oct 2025 11:19:56 +0200	[thread overview]
Message-ID: <0eea9419-cb1b-43b2-a66e-aefb2be4a6bd@onway.ch> (raw)
In-Reply-To: <29734775-71f8-48d4-8202-fc7aaca99f14@oss.qualcomm.com>


[-- Attachment #1.1: Type: text/plain, Size: 5478 bytes --]



On 22.10.2025 09:57, Baochen Qiang wrote:
> 
> 
> On 10/16/2025 1:11 PM, Andreas Tobler wrote:
>> Hello Baochen,
>>
>> thanks for responding.
>>
>> On 16.10.2025 04:01, Baochen Qiang wrote:
>>>
>>>
>>> On 10/16/2025 4:10 AM, Andreas Tobler wrote:
>>>> Dear all,
>>>>
>>>> this commit (Upstream commit 51a73f1b2e56b0324b4a3bb8cebc4221b5be4c7) makes our WLE600
>>>> Compex wifi cards (qca988x based) unusable. Reverting the commit brings the wifi card
>>>> back.
>>>>
>>>> This was discovered on the v6.12.53 from today.
>>>>
>>>> ath10k messages excerpt:
>>>> --------------
>>>> Oct 15 22:00:13 klog: ath10k_pci 0000:05:00.0: pci irq msi oper_irq_mode 2 irq_mode 0
>>>> reset_mode 0
>>>> Oct 15 22:00:13 klog: ath10k_pci 0000:05:00.0: qca988x hw2.0 target 0x4100016c chip_id
>>>> 0x043222ff sub 0000:0000
>>>> Oct 15 22:00:13 klog: ath10k_pci 0000:05:00.0: kconfig debug 0 debugfs 0 tracing 0 dfs 1
>>>> testmode 0
>>>> Oct 15 22:00:13 klog: ath10k_pci 0000:05:00.0: firmware ver 10.2.4-1.0-00047 api 5
>>>> features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 35bd9258
>>>> Oct 15 22:00:13 klog: ath10k_pci 0000:05:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
>>>> Oct 15 22:00:20 klog: ath10k_pci 0000:05:00.0: wmi unified ready event not received
>>>> Oct 15 22:00:21 klog: ath10k_pci 0000:05:00.0: could not init core (-110)
>>>> Oct 15 22:00:21 klog: ath10k_pci 0000:05:00.0: could not probe fw (-110)
>>>> --------------
>>>>
>>>> Beside reverting, how can we help fixing this?
>>>
>>> Thank you Andreas for the report.
>>>
>>> If this 100% repro?
>>
>> Yes, on several boards, amd, armada-385 and imx6 based.
>>> Can you try just ignore the err and see what we get? I am suspecting we are missing the
>>> interrupt for unified ready message.
>>>
>>> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/
>>> core.c
>>> index 6f78f1752cd6..cf4cc44d0a1e 100644
>>> --- a/drivers/net/wireless/ath/ath10k/core.c
>>> +++ b/drivers/net/wireless/ath/ath10k/core.c
>>> @@ -3217,7 +3217,6 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode
>>> mode,
>>>           status = ath10k_wmi_wait_for_unified_ready(ar);
>>>           if (status) {
>>>                   ath10k_err(ar, "wmi unified ready event not received\n");
>>> -               goto err_hif_stop;
>>>           }
>>>
>>>           status = ath10k_core_compat_services(ar);
>>
>> No changes.
>>> Anyway, please help collect verbose ath10k log, you may enable verbose log by
>>>
>>>      modprobe ath10k_core debug_mask=0xffffffff
>>>      modprobe ath10k_pci
>>>
>>
>> I attached the compressed log, not sure if it is too big while uncompressed.
> 
> Thank you Andreas for the log.
> 
> Could you please try if below diff can fix this regression?
> 
> diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
> index 7bbda46cfd93..1a981d333b5c 100644
> --- a/drivers/net/wireless/ath/ath10k/ce.c
> +++ b/drivers/net/wireless/ath/ath10k/ce.c
> @@ -1256,6 +1256,19 @@ void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int
> ce_id)
>   }
>   EXPORT_SYMBOL(ath10k_ce_per_engine_service);
> 
> +void ath10k_ce_per_engine_check(struct ath10k *ar, unsigned int ce_id)
> +{
> +       struct ath10k_ce *ce = ath10k_ce_priv(ar);
> +       struct ath10k_ce_pipe *ce_state = &ce->ce_states[ce_id];
> +
> +       if (ce_state->recv_cb)
> +               ce_state->recv_cb(ce_state);
> +
> +       if (ce_state->send_cb)
> +               ce_state->send_cb(ce_state);
> +}
> +EXPORT_SYMBOL(ath10k_ce_per_engine_check);
> +
>   /*
>    * Handler for per-engine interrupts on ALL active CEs.
>    * This is used in cases where the system is sharing a
> diff --git a/drivers/net/wireless/ath/ath10k/ce.h b/drivers/net/wireless/ath/ath10k/ce.h
> index 27367bd64e95..9923530e51eb 100644
> --- a/drivers/net/wireless/ath/ath10k/ce.h
> +++ b/drivers/net/wireless/ath/ath10k/ce.h
> @@ -255,6 +255,7 @@ int ath10k_ce_cancel_send_next(struct ath10k_ce_pipe *ce_state,
>   /*==================CE Interrupt Handlers====================*/
>   void ath10k_ce_per_engine_service_any(struct ath10k *ar);
>   void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id);
> +void ath10k_ce_per_engine_check(struct ath10k *ar, unsigned int ce_id);
>   void ath10k_ce_disable_interrupt(struct ath10k *ar, int ce_id);
>   void ath10k_ce_disable_interrupts(struct ath10k *ar);
>   void ath10k_ce_enable_interrupt(struct ath10k *ar, int ce_id);
> diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
> index 97b49bf4ad80..ce8e0c2fb975 100644
> --- a/drivers/net/wireless/ath/ath10k/pci.c
> +++ b/drivers/net/wireless/ath/ath10k/pci.c
> @@ -1812,7 +1812,7 @@ void ath10k_pci_hif_send_complete_check(struct ath10k *ar, u8 pipe,
>                  if (resources > (ar_pci->attr[pipe].src_nentries >> 1))
>                          return;
>          }
> -       ath10k_ce_per_engine_service(ar, pipe);
> +       ath10k_ce_per_engine_check(ar, pipe);
>   }
> 
> static void ath10k_pci_rx_retry_sync(struct ath10k *ar)

Thanks for the update. Unfortunately no change. With and without the 
previous patch (which skips the unified ready timeout error).
Attached the log from this trial.

Thank you,
Andreas

[-- Attachment #1.2: ath10k_2025_10_22_0.log.gz --]
[-- Type: application/x-gzip, Size: 3321 bytes --]

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5045 bytes --]

      reply	other threads:[~2025-10-22  9:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-15 20:10 wifi: ath10k: avoid unnecessary wait for service ready message Andreas Tobler
2025-10-16  2:01 ` Baochen Qiang
2025-10-16  5:11   ` Andreas Tobler
2025-10-22  7:57     ` Baochen Qiang
2025-10-22  9:19       ` Andreas Tobler [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0eea9419-cb1b-43b2-a66e-aefb2be4a6bd@onway.ch \
    --to=andreas.tobler@onway.ch \
    --cc=baochen.qiang@oss.qualcomm.com \
    --cc=regressions@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox