From: Quentin Strydom <qstrydom0@gmail.com>
To: Jeff Johnson <jjohnson@kernel.org>
Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org,
linux-kernel@vger.kernel.org,
Quentin Strydom <qstrydom0@gmail.com>
Subject: [PATCH] wifi: ath10k: fix Bluetooth RX on ASUS QCA6174 when WLAN is down
Date: Mon, 28 Sep 2026 15:03:56 +0100 [thread overview]
Message-ID: <20260928140356.13247-1-qstrydom0@gmail.com> (raw)
On an ASUS QCA6174 PCI device with subsystem ID 1043:8751,
Bluetooth receive sensitivity is severely reduced when the WLAN
interface is left down. This is particularly visible when Ethernet is
used for network connectivity and the WLAN interface is never started.
With WLAN down, a nearby BLE advertiser is received at roughly -95 dBm
instead of the expected -60 dBm. Bringing the WLAN interface up restores
normal Bluetooth sensitivity.
Tracing and register-level testing showed that the QCA6174 warm reset
performed from ath10k_pci_hif_stop() causes the Bluetooth sensitivity
drop. In particular, asserting SOC_RESET_CONTROL_CPU_WARM_RST_MASK
reproduces the bad state. Conversely, asserting SOC_GLOBAL_RESET during
a QCA6174 cold reset restores normal Bluetooth reception.
Perform an additional cold reset after the normal hif_stop safe reset
for the affected ASUS subsystem. Scope the workaround to 1043:8751 to
avoid changing reset behaviour for other QCA6174 and ath10k devices.
The workaround was tested with Bluetooth enabled and disabled during
cold boot, with WLAN left down, through repeated WLAN up/down cycles
while associated to a Wi-Fi access point with traffic. Bluetooth receive
sensitivity remained normal and WLAN could subsequently be started and
stopped normally.
Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00309-
Signed-off-by: Quentin Strydom <qstrydom0@gmail.com>
---
drivers/net/wireless/ath/ath10k/pci.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index 335bc7c488e4..4a3c5ce63733 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -2069,10 +2069,20 @@ void ath10k_pci_flush(struct ath10k *ar)
ath10k_pci_buffer_cleanup(ar);
}
+static bool ath10k_pci_needs_bt_cold_reset(struct ath10k_pci *ar_pci)
+{
+ struct pci_dev *pdev = ar_pci->pdev;
+
+ return pdev->device == QCA6174_2_1_DEVICE_ID &&
+ pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK &&
+ pdev->subsystem_device == 0x8751;
+}
+
static void ath10k_pci_hif_stop(struct ath10k *ar)
{
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
unsigned long flags;
+ int ret;
ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot hif stop\n");
@@ -2096,6 +2106,14 @@ static void ath10k_pci_hif_stop(struct ath10k *ar)
*/
ath10k_pci_safe_chip_reset(ar);
+ if (ath10k_pci_needs_bt_cold_reset(ar_pci)) {
+ ret = ath10k_pci_cold_reset(ar);
+ if (ret)
+ ath10k_warn(ar,
+ "failed to cold reset after hif stop: %d\n",
+ ret);
+ }
+
ath10k_pci_flush(ar);
spin_lock_irqsave(&ar_pci->ps_lock, flags);
--
2.43.0
reply other threads:[~2026-09-28 14:04 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20260928140356.13247-1-qstrydom0@gmail.com \
--to=qstrydom0@gmail.com \
--cc=ath10k@lists.infradead.org \
--cc=jjohnson@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@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
all inboxes | Powered by JetHome®