]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Nov 2025 05:28:32 +0000 (14:28 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Nov 2025 05:28:32 +0000 (14:28 +0900)
added patches:
revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch

queue-5.15/revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch b/queue-5.15/revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch
new file mode 100644 (file)
index 0000000..ed63c2a
--- /dev/null
@@ -0,0 +1,85 @@
+From 2469bb6a6af944755a7d7daf66be90f3b8decbf9 Mon Sep 17 00:00:00 2001
+From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+Date: Mon, 27 Oct 2025 09:49:12 +0800
+Subject: Revert "wifi: ath10k: avoid unnecessary wait for service ready message"
+
+From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+
+commit 2469bb6a6af944755a7d7daf66be90f3b8decbf9 upstream.
+
+This reverts commit 51a73f1b2e56b0324b4a3bb8cebc4221b5be4c7a.
+
+Although this commit benefits QCA6174, it breaks QCA988x and
+QCA9984 [1][2]. Since it is not likely to root cause/fix this
+issue in a short time, revert it to get those chips back.
+
+Compile tested only.
+
+Fixes: 51a73f1b2e56 ("wifi: ath10k: avoid unnecessary wait for service ready message")
+Link: https://lore.kernel.org/ath10k/6d41bc00602c33ffbf68781f563ff2e6c6915a3e.camel@gmail.com # [1]
+Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220671 # [2]
+Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
+Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
+Cc: stable@vger.kernel.org
+Link: https://patch.msgid.link/20251027-ath10k-revert-polling-first-change-v1-1-89aaf3bcbfa1@oss.qualcomm.com
+Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/wireless/ath/ath10k/wmi.c |   39 +++++++++++++++++-----------------
+ 1 file changed, 20 insertions(+), 19 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath10k/wmi.c
++++ b/drivers/net/wireless/ath/ath10k/wmi.c
+@@ -1762,32 +1762,33 @@ void ath10k_wmi_put_wmi_channel(struct a
+ int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)
+ {
+-      unsigned long timeout = jiffies + WMI_SERVICE_READY_TIMEOUT_HZ;
+       unsigned long time_left, i;
+-      /* 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. Since
+-       * the message could arrive at any time, continue
+-       * polling until timeout.
+-       */
+-      do {
++      time_left = wait_for_completion_timeout(&ar->wmi.service_ready,
++                                              WMI_SERVICE_READY_TIMEOUT_HZ);
++      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);
+-              /* The 100 ms granularity is a tradeoff considering scheduler
+-               * overhead and response latency
+-               */
+               time_left = wait_for_completion_timeout(&ar->wmi.service_ready,
+-                                                      msecs_to_jiffies(100));
+-              if (time_left)
+-                      return 0;
+-      } while (time_before(jiffies, timeout));
++                                                      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");
++      }
+-      ath10k_warn(ar, "failed to receive service ready completion\n");
+-      return -ETIMEDOUT;
++      return 0;
+ }
+ int ath10k_wmi_wait_for_unified_ready(struct ath10k *ar)
index 038c0f88050e8a20380f12e7e1fe1cd9cccff180..190dc2d75ebcfc53e21af4543a02c1d1564cdc56 100644 (file)
@@ -209,3 +209,4 @@ fbdev-add-bounds-checking-in-bit_putcs-to-fix-vmallo.patch
 asoc-meson-aiu-encoder-i2s-fix-bit-clock-polarity.patch
 ceph-add-checking-of-wait_for_completion_killable-re.patch
 alsa-hda-realtek-audio-disappears-on-hp-15-fc000-aft.patch
+revert-wifi-ath10k-avoid-unnecessary-wait-for-service-ready-message.patch