[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <68dd3d93509b627dbdf907332a703443f46aff6c.camel@gmail.com>
Date: Wed, 22 Oct 2025 19:30:38 +0200
From: Klaus Kudielka <klaus.kudielka@...il.com>
To: Baochen Qiang <baochen.qiang@....qualcomm.com>, Jeff Johnson
<jeff.johnson@....qualcomm.com>, Jeff Johnson <jjohnson@...nel.org>, Kalle
Valo <kvalo@...nel.org>, Baochen Qiang <quic_bqiang@...cinc.com>
Cc: linux-wireless@...r.kernel.org, ath10k@...ts.infradead.org,
linux-kernel@...r.kernel.org, Paul Menzel <pmenzel@...gen.mpg.de>,
regressions@...ts.linux.dev
Subject: Re: [REGRESSION] ath10k fails initialization, bisected to "wifi:
ath10k: avoid unnecessary wait for service ready message"
On Wed, 2025-10-22 at 16:00 +0800, Baochen Qiang wrote:
> Thank you Klaus, can 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 looking into this.
I applied that patch on top of current mainline, but unfortunately the result is still the same:
[ 6.094149] ath10k_pci 0000:02:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[ 6.241457] ath10k_pci 0000:02:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000
[ 6.241476] ath10k_pci 0000:02:00.0: kconfig debug 0 debugfs 0 tracing 0 dfs 1 testmode 0
[ 6.242901] ath10k_pci 0000:02:00.0: firmware ver 10.2.4-1.0-00047 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 35bd9258
[ 6.309202] ath10k_pci 0000:02:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[ 12.509266] ath10k_pci 0000:02:00.0: wmi unified ready event not received
[ 12.581057] ath10k_pci 0000:02:00.0: could not init core (-110)
[ 12.587057] ath10k_pci 0000:02:00.0: could not probe fw (-110)
Powered by blists - more mailing lists