Re: [PATCH ath-next v1] wifi: ath11k: Fix failure to connect to a 6 GHz AP
Qian Zhang <[email protected]>
| Newsgroups | org.infradead.lists.ath11k,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <CALC2J1OYe8RYPhDH1vneFp+F_oFjgDVFMp0i-1wjyzWO=TmJ7Q@mail.gmail.com> |
On Wed, Jan 7, 2026 at 4:31 PM Baochen Qiang <[email protected]> wrote: > > > > On 1/7/2026 4:23 PM, Baochen Qiang wrote: > > > > > > On 1/7/2026 2:02 PM, Qian Zhang wrote: > >> 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]> > >> --- > >> 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 d62a2014315a..8786ca3870fc 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)) { > >> + if (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 > >> > >> base-commit: e33fc1c6d54ee1569a57255e11c2978ba9a42ffc > > > > Reviewed-by: Baochen Qiang <[email protected]> > > Withdraw my above tag as the code has some issues. > > We should only return in IEEE80211_REG_UNSET_AP cases. For other types we should go on to > build a new regdomain. > Will fix the issue in a new patch. Thanks, Qian > > >