Re: [PATCH v2] wifi: ath10k: poll service ready message before failing

2024-03-08 Thread Kalle Valo
Baochen Qiang  wrote:

> Currently host relies on CE interrupts to get notified that
> the service ready message is ready. This results in timeout
> issue if the interrupt is not fired, due to some unknown
> reasons. See below logs:
> 
> [76321.937866] ath10k_pci :02:00.0: wmi service ready event not received
> ...
> [76322.016738] ath10k_pci :02:00.0: Could not init core: -110
> 
> And finally it causes WLAN interface bring up failure.
> 
> Change to give it one more chance here by polling CE rings,
> before failing directly.
> 
> Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1
> 
> Fixes: 5e3dd157d7e7 ("ath10k: mac80211 driver for Qualcomm Atheros 802.11ac 
> CQA98xx devices")
> Reported-by: James Prestwood 
> Tested-By: James Prestwood  # on QCA6174 hw3.2
> Link: 
> https://lore.kernel.org/linux-wireless/304ce305-fbe6-420e-ac2a-d61ae5e6c...@gmail.com/
> Signed-off-by: Baochen Qiang 
> Acked-by: Jeff Johnson 
> Signed-off-by: Kalle Valo 

Patch applied to ath-next branch of ath.git, thanks.

e57b7d62a1b2 wifi: ath10k: poll service ready message before failing

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20240227030409.89702-1-quic_bqi...@quicinc.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches




Re: [PATCH v2] wifi: ath10k: poll service ready message before failing

2024-02-29 Thread Kalle Valo
Baochen Qiang  writes:

> Currently host relies on CE interrupts to get notified that
> the service ready message is ready. This results in timeout
> issue if the interrupt is not fired, due to some unknown
> reasons. See below logs:
>
> [76321.937866] ath10k_pci :02:00.0: wmi service ready event not received
> ...
> [76322.016738] ath10k_pci :02:00.0: Could not init core: -110
>
> And finally it causes WLAN interface bring up failure.
>
> Change to give it one more chance here by polling CE rings,
> before failing directly.
>
> Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1
>
> Fixes: 5e3dd157d7e7 ("ath10k: mac80211 driver for Qualcomm Atheros
> 802.11ac CQA98xx devices")
> Reported-by: James Prestwood 
> Link:
> https://lore.kernel.org/linux-wireless/304ce305-fbe6-420e-ac2a-d61ae5e6c...@gmail.com/
> Signed-off-by: Baochen Qiang 

In the pending branch I'll add this from v1:

Tested-By: James Prestwood  # on QCA6174 hw3.2

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches



Re: [PATCH v2] wifi: ath10k: poll service ready message before failing

2024-02-26 Thread Jeff Johnson
On 2/26/2024 7:04 PM, Baochen Qiang wrote:
> Currently host relies on CE interrupts to get notified that
> the service ready message is ready. This results in timeout
> issue if the interrupt is not fired, due to some unknown
> reasons. See below logs:
> 
> [76321.937866] ath10k_pci :02:00.0: wmi service ready event not received
> ...
> [76322.016738] ath10k_pci :02:00.0: Could not init core: -110
> 
> And finally it causes WLAN interface bring up failure.
> 
> Change to give it one more chance here by polling CE rings,
> before failing directly.
> 
> Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1
> 
> Fixes: 5e3dd157d7e7 ("ath10k: mac80211 driver for Qualcomm Atheros 802.11ac 
> CQA98xx devices")
> Reported-by: James Prestwood 
> Link: 
> https://lore.kernel.org/linux-wireless/304ce305-fbe6-420e-ac2a-d61ae5e6c...@gmail.com/
> Signed-off-by: Baochen Qiang 
Acked-by: Jeff Johnson 




[PATCH v2] wifi: ath10k: poll service ready message before failing

2024-02-26 Thread Baochen Qiang
Currently host relies on CE interrupts to get notified that
the service ready message is ready. This results in timeout
issue if the interrupt is not fired, due to some unknown
reasons. See below logs:

[76321.937866] ath10k_pci :02:00.0: wmi service ready event not received
...
[76322.016738] ath10k_pci :02:00.0: Could not init core: -110

And finally it causes WLAN interface bring up failure.

Change to give it one more chance here by polling CE rings,
before failing directly.

Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1

Fixes: 5e3dd157d7e7 ("ath10k: mac80211 driver for Qualcomm Atheros 802.11ac 
CQA98xx devices")
Reported-by: James Prestwood 
Link: 
https://lore.kernel.org/linux-wireless/304ce305-fbe6-420e-ac2a-d61ae5e6c...@gmail.com/
Signed-off-by: Baochen Qiang 
---
v2:
 - print the end result of polling.

 drivers/net/wireless/ath/ath10k/wmi.c | 26 +++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/wmi.c 
b/drivers/net/wireless/ath/ath10k/wmi.c
index 2e9661f4bea8..80d255aaff1b 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -1763,12 +1763,32 @@ void ath10k_wmi_put_wmi_channel(struct ath10k *ar, 
struct wmi_channel *ch,
 
 int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)
 {
-   unsigned long time_left;
+   unsigned long time_left, i;
 
time_left = wait_for_completion_timeout(>wmi.service_ready,
WMI_SERVICE_READY_TIMEOUT_HZ);
-   if (!time_left)
-   return -ETIMEDOUT;
+   if (!time_left) {
+   /* Sometimes the PCI HIF doesn't receive interrupt
+* for the service ready message even if the buffer
+* was completed. PCIe sniffer shows that it's
+* because the corresponding CE ring doesn't fires
+* it. Workaround here by polling CE rings once.
+*/
+   ath10k_warn(ar, "failed to receive service ready completion, 
polling..\n");
+
+   for (i = 0; i < CE_COUNT; i++)
+   ath10k_hif_send_complete_check(ar, i, 1);
+
+   time_left = wait_for_completion_timeout(>wmi.service_ready,
+   
WMI_SERVICE_READY_TIMEOUT_HZ);
+   if (!time_left) {
+   ath10k_warn(ar, "polling timed out\n");
+   return -ETIMEDOUT;
+   }
+
+   ath10k_warn(ar, "service ready completion received, continuing 
normally\n");
+   }
+
return 0;
 }
 

base-commit: c39a5cfa0448f3afbee78373f16d87815a674f11
-- 
2.25.1