From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej2-f42.google.com (mail-ej2-f42.google.com [74.125.228.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E97A84C8FFE for ; Mon, 28 Sep 2026 14:04:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790604288; cv=none; b=Nsz5RvljHNAIPmVeWoGWVEPL8qxwtcEUaQD8e+02ZQxVIqxbl9CtgslIkjZ+vXhtFDz+rCNJZJ1QZEmzlMLIDEO5c99xX/SXO2cyoRhwdSVFrKyP+2sPU8ccPPU1lIPBNjB7kJXAZQiXFx5Bx/cj7iOoVfUnhvbDN6CiTZw5kO0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790604288; c=relaxed/simple; bh=jASAzubG3/1Ohs8axuhKUesKhQPmDAaQp2vTWGVMH3E=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=utji7uKEOUO9GQ2yiHA1/EdyL9DUuEiEODo6EAstLn12tBGNuG5Pg7WRsMD90/948WAqo8+SYn196yJzTH/lYVPncj/VNXTCZSF33F947bJZnxjaig/H7jmWPEftau/Hpo93SFwsPlqYtsKCB6JhAMIS8eF3UpwAO3OaFnrBdHw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ATsYI9Ni; arc=none smtp.client-ip=74.125.228.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ATsYI9Ni" Received: by mail-ej2-f42.google.com with SMTP id a640c23a62f3a-c2bf3cc16baso260332866b.0 for ; Mon, 28 Sep 2026 07:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790604282; x=1791209082; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Yyby6O267E21VPls7mPdTMnZ7y58yWOOybub5QTr35o=; b=ATsYI9NivXJRCcHDRh48QqOLCcLrNnDSGjkWnctqcCbtc83z6kW5gJK//8LcePMDbQ ikY+Xee8ExBIW8vyb9ufYBqeIlh6zuHeF9paUW9/p00pG00oe/oWI0Tt8rtLVw/zC5pR rrruCU/FOMOfqEJ7rRgYGSdUKXXzJAXh/0PyA/oAPhyXHIw5li+r2itcYPs13Xt7YZv6 04BolMswg4LbQjyFAPPHzICIprpHXgUzyoavoyFuBCRTINKmgOaNYKri2z11p+CGOKhe dd6TNpts6kFVn3iwuOEkqVggjqKy+kB2PjgGXA7vAeFc8Rk71HD52xDypsVXuIShSFY8 fGtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790604282; x=1791209082; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Yyby6O267E21VPls7mPdTMnZ7y58yWOOybub5QTr35o=; b=CnQOU2ERWM4ZhKclqZVZa1TqYOCxYwax0QhhAxp+Tx5qgVGZnfkh1gc0PEKF/3cOoB lN05k767A1dZhd//mrjYUTidA3S//Czu+yvGvpLNfWEt2/yzewbs64WZ8UgjcdTKDma4 aKtn/wooSdgn3YNL7DZ3348zleeu6Fxs7yy1FC92BdFvAXsH0HuZCbMgO4MVpA3PayGN okS1bfN0cLQ8nI3eTGzKOisDCy8jzdh1TFNsD0/UWNUZljHCs2gy2H08gY3Rgjl2S0P+ gGhXCyS5mSLp74n9gFwFZXaMN4CdtCTBkUfKDk117HqD0sWDXqTulKes+KEtbXB99eO2 iNHQ== X-Forwarded-Encrypted: i=1; AKwUvByKPq3VY6RPQqTerR8w5ZTJ34Ns1l7fkAjUbAyFecXDSVVPgOqkDdCz1U//0bccGQJUF4ksytSGqaBF86w=@vger.kernel.org X-Gm-Message-State: AFuF++k3X9QT4/qqEwpe+mHMUeC+QH4GUucWlO0SSa/Owp1LlJX5sLUZ YvW/D8cF8BqdzbWMScdEtl3w+Hxx0DecwUgueTd3QZvLHJJV8G1amKAe X-Gm-Gg: AYBFou2XKZ1vhFfUCywkPOJf8Prb+35tGfz9SqbIbr85BZNbDCVG3WBRQtwN523sjB/ XDJMj4+jkGNK6PtWZ5MLRalAmlElTCQ04pwMhDSBDdxmcf8/iE8CRmEnUsuSfh94LMXTVi5JwXX i4v++y1FOusRwT9XgMVSsqfQmBiJUF0vG/jlI/yGbLSe6BTIXj9gucW/nrdoKIBF/ei+hEQi5Pm CGgt91heNsNGPcwQXiPKKB7VszIy/UbRavz+rB/MgJ4siFRaIIAeemMv4Z/Xmg7Pp/4HjIrWQnE G2+zx0xPj+sEDq27eUeVNyYBW9k20HK6jxa1D2nffulS0o0uJDXQd9cGkMV8UIu4n9fKTHT8kZr fb5XynuqY1XOFBulTDUj73T0FChGxKrqsN5sR8hAlo7mGVI+EqdAJ8vAYqWX3spkL90wPv3YdMQ ER0MKybnN7C3lstk8bU0MhLpmt6EKareag4Wo0V/fEwScwCr5ZHuyejnLdQ/qdgIlmL81VIfhrC oY= X-Received: by 2002:a17:907:c0e:b0:c2a:fd19:8fa5 with SMTP id a640c23a62f3a-c2afd19cdccmr542265366b.34.1790604282009; Mon, 28 Sep 2026 07:04:42 -0700 (PDT) Received: from home.powerhub ([2a0a:ef40:1484:7a01:a8cc:a863:c2a1:d5cd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2dd68a6f18sm179642666b.52.2026.09.28.07.04.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Sep 2026 07:04:40 -0700 (PDT) From: Quentin Strydom To: Jeff Johnson Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-kernel@vger.kernel.org, Quentin Strydom Subject: [PATCH] wifi: ath10k: fix Bluetooth RX on ASUS QCA6174 when WLAN is down Date: Mon, 28 Sep 2026 15:03:56 +0100 Message-ID: <20260928140356.13247-1-qstrydom0@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 --- 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