[PATCH AUTOSEL 6.19-6.12] wifi: ath11k: Fix failure to connect to a 6 GHz AP
Sasha Levin <[email protected]>
| Newsgroups | org.infradead.lists.ath11k,dev.linux.lists.patches,org.kernel.vger.linux-wireless,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
From: Qian Zhang <[email protected]> [ Upstream commit 0bc8c48de6f06c0cac52dde024ffda4433de6234 ] STA fails to connect to a 6 GHz AP with the following errors: ath11k_pci 0000:01:00.0: failed to handle chan list with power type 1 wlp1s0: deauthenticating from c8:a3:e8:dd:41:e3 by local choice (Reason: 3=DEAUTH_LEAVING) ath11k_reg_handle_chan_list() treats the update as redundant and returns -EINVAL. That causes the connection attempt to fail. Avoid unnecessary validation during association. Apply the regulatory redundant check only when the power type is IEEE80211_REG_UNSET_AP, which only occurs during core initialization. Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41 Signed-off-by: Qian Zhang <[email protected]> Reviewed-by: Baochen Qiang <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jeff Johnson <[email protected]> Signed-off-by: Sasha Levin <[email protected]> --- LLM Generated explanations, may be completely bogus: The key prerequisite is `e3d373ec4f02b` which added the 6 GHz regulatory type support and the `power_type` parameter to `ath11k_reg_handle_chan_list()`. This was merged in v6.9 cycle. For stable trees that don't have this function signature, the patch wouldn't apply anyway (and wouldn't be needed since 6 GHz support wouldn't exist in the same form). ### Summary **What the fix does**: Narrows a regulatory update redundancy check to only apply during core initialization (`IEEE80211_REG_UNSET_AP`), not during association with a 6 GHz AP. Also fixes a memory leak on the early-return path by properly calling `ath11k_reg_reset_info()`. **Why it matters for stable users**: Without this fix, users with ath11k WiFi cards (WCN6855, etc.) cannot connect to 6 GHz WiFi 6E access points at all. This is a complete connectivity failure, not a subtle performance issue. **Meets stable criteria**: - Obviously correct and tested on real hardware - Fixes a real, user-visible bug (WiFi connection failure) - Fixes an important issue (complete loss of 6 GHz WiFi connectivity) - Small and contained (5 lines of logic in 1 file) - Does not introduce new features - Also fixes a memory leak (bonus) **Risk assessment**: Very low. The change is conservative — it only narrows an existing condition. The worst case scenario is that the redundancy check doesn't fire during association, which is the correct behavior since the regulatory update should be processed during association. **Dependencies**: Requires `e3d373ec4f02b` (6 GHz regulatory type support) in the stable tree. This limits backport to 6.9+ stable trees, but for those trees this fix is important. **YES** drivers/net/wireless/ath/ath11k/reg.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/reg.c b/drivers/net/wireless/ath/ath11k/reg.c index d62a2014315a0..49b79648752cf 100644 --- a/drivers/net/wireless/ath/ath11k/reg.c +++ b/drivers/net/wireless/ath/ath11k/reg.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #include <linux/rtnetlink.h> @@ -926,8 +926,11 @@ int ath11k_reg_handle_chan_list(struct ath11k_base *ab, */ if (ab->default_regd[pdev_idx] && !ab->new_regd[pdev_idx] && !memcmp((char *)ab->default_regd[pdev_idx]->alpha2, - (char *)reg_info->alpha2, 2)) - goto retfail; + (char *)reg_info->alpha2, 2) && + power_type == IEEE80211_REG_UNSET_AP) { + ath11k_reg_reset_info(reg_info); + return 0; + } /* Intersect new rules with default regd if a new country setting was * requested, i.e a default regd was already set during initialization -- 2.51.0