[PATCH AUTOSEL 6.14 106/108] wifi: ath12k: fix incorrect CE addresses

Sasha Levin
2025-06-04T02:01:55Z

From: Balamurugan S <quic_bselvara@quicinc.com>

[ Upstream commit 60031d9c3589c7983fd1deb4a4c0bebf0929890e ]

In the current ath12k implementation, the CE addresses
CE_HOST_IE_ADDRESS and CE_HOST_IE_2_ADDRESS are incorrect. These
values were inherited from ath11k, but ath12k does not currently use
them.

However, the Ath12k AHB support relies on these addresses. Therefore,
correct the CE addresses for ath12k.

Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00210-QCAHKSWPL_SILICONZ-1

Signed-off-by: Balamurugan S <quic_bselvara@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
Link: https://patch.msgid.link/20250321-ath12k-ahb-v12-2-bb389ed76ae5@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

**YES** ## Analysis and Recommendation This commit should be backported
to stable kernel trees. Here's my detailed analysis: ### **Nature of the
Bug** This is a **critical hardware register address bug** in the ath12k
WiFi driver. The commit fixes two important Copy Engine (CE) register
addresses: - `CE_HOST_IE_ADDRESS`: Changed from `0x00A1803C` to
`0x75804C` - `CE_HOST_IE_2_ADDRESS`: Changed from `0x00A18040` to
`0x758050` ### **Impact and Severity** **1. Critical Hardware
Functionality** These CE addresses control interrupt enable/disable
operations for Copy Engine rings, which are fundamental to WiFi
communication between host and firmware. Incorrect addresses would
cause: - Failed interrupt enable/disable operations - Potential missed
interrupts leading to stuck CE rings - System hangs or communication
failures with firmware **2. Affects Real Hardware** The commit message
explicitly mentions testing on real hardware: - **IPQ5332 hw1.0 AHB**
(currently deployed) - **QCN9274 hw2.0 PCI** (reference testing) **3.
AHB Device Support** These addresses are specifically used by AHB (AMBA
High-performance Bus) devices in functions like
`ath12k_ahb_ce_irq_enable()` and `ath12k_ahb_ce_irq_disable()`. IPQ5332
is the primary AHB device currently supported. ### **Comparison with
Historical Patterns** Looking at the similar commits provided: -
**Similar Commits #1 & #2** (both marked YES): Fixed DMA address type
issues in ath12k/ath11k CE rings to prevent future 36-bit DMA addressing
problems - **Similar Commits #3 & #4** (both marked NO): Added new CE
configurations for new device support (feature additions) This commit
follows the pattern of commits #1 and #2 - fixing existing incorrect
definitions that could cause hardware functionality issues. ### **Stable
Tree Criteria Alignment** **✓ Fixes Important Bug**: Incorrect hardware
register addresses affecting real deployed devices **✓ Small and
Contained**: Only changes two #define values in a header file **✓
Minimal Risk**: Simple address corrections with no architectural changes
**✓ No New Features**: Pure bug fix, not adding functionality **✓ Clear
Side Effects**: Limited to CE interrupt handling, well-understood impact
### **Risk Assessment** **Very Low Risk**: - Changes only constant
definitions in a header file - No algorithm or logic changes - Well-
tested on actual hardware as mentioned in commit message - Fixes latent
but critical hardware addressing bug **High Benefit**: - Ensures correct
hardware register access for AHB devices - Prevents potential system
failures or communication issues - Critical for proper IPQ5332 (and
future AHB device) functionality ### **Conclusion** This is a textbook
example of a commit that should be backported: it fixes a critical
hardware addressing bug with minimal risk and clear benefit. The
incorrect CE addresses could cause serious functionality issues for AHB-
based ath12k devices, particularly the IPQ5332 which is already
deployed. The fix is small, contained, and has been tested on real
hardware.

drivers/net/wireless/ath/ath12k/ce.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath12k/ce.h b/drivers/net/wireless/ath/ath12k/ce.h
index 1a14b9fb86b88..f85188af5de2f 100644
--- a/drivers/net/wireless/ath/ath12k/ce.h
+++ b/drivers/net/wireless/ath/ath12k/ce.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2022, 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
*/

#ifndef ATH12K_CE_H
@@ -39,8 +39,8 @@
#define PIPEDIR_INOUT_H2H 4 /* bidirectional, host to host */

/* CE address/mask */
-#define CE_HOST_IE_ADDRESS 0x00A1803C
-#define CE_HOST_IE_2_ADDRESS 0x00A18040
+#define CE_HOST_IE_ADDRESS 0x75804C
+#define CE_HOST_IE_2_ADDRESS 0x758050
#define CE_HOST_IE_3_ADDRESS CE_HOST_IE_ADDRESS

#define CE_HOST_IE_3_SHIFT 0xC
--
2.39.5