Bug 217286 - ath11k: deny assoc request, Invalid supported ch width and ext nss combination
Summary: ath11k: deny assoc request, Invalid supported ch width and ext nss combination
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: network-wireless (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: drivers_network-wireless@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-04-02 04:42 UTC by Michal Smulski
Modified: 2023-07-11 16:52 UTC (History)
2 users (show)

See Also:
Kernel Version: 6.2
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments

Description Michal Smulski 2023-04-02 04:42:55 UTC
Built and installed v6.2 kernel (with ath11k_pci) on arm64 hardware running Ubuntu22.04. Hardware has both Atheros QCN9074 module and Intel AX210 module. Running each (separately) in station mode and try to connect to Synology router with WiFi Access Point based on QCN9074. AX210 has no problem connecting to AP but Atheros is successfully authenticating but association is rejected by AP with this error message:

wlan: [0:I:ANY] [UNSPECIFIED] vap-0(wlan100): [04:f0:21:a1:7c:3e]deny assoc request, Invalid supported ch width and ext nss combination

Please note that when running v5.15.5 kernel (with ath11k_pci), I am able to connect to the same AP without problems.

Detailed logs follow:

>uname -a
Linux babbage 6.2.0-00001-g62c5868b688c #3 SMP PREEMPT Fri Mar 31 14:52:28 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux

> dmesg (relevant section)
[  124.038162] ath11k_pci 0002:01:00.0: Adding to iommu group 11
[  124.038445] ath11k_pci 0002:01:00.0: BAR 0: assigned [mem 0x9840000000-0x98401fffff 64bit]
[  124.038540] ath11k_pci 0002:01:00.0: enabling device (0000 -> 0002)
[  124.039112] ath11k_pci 0002:01:00.0: MSI vectors: 16
[  124.039146] ath11k_pci 0002:01:00.0: qcn9074 hw1.0
[  124.045782] NET: Registered PF_QIPCRTR protocol family
[  124.202331] mhi mhi0: Requested to power ON
[  124.202348] mhi mhi0: Power on setup success
[  124.303898] mhi mhi0: Wait for device to enter SBL or Mission mode
[  124.509429] ath11k_pci 0002:01:00.0: chip_id 0x0 chip_family 0x0 board_id 0xff soc_id 0xffffffff
[  124.509446] ath11k_pci 0002:01:00.0: fw_version 0x2506844c fw_build_timestamp 2021-07-13 10:24 fw_build_id 
[  206.804624] wlan1: authenticate with 90:09:d0:31:02:77
[  206.809808] wlan1: Allocated STA 90:09:d0:31:02:77
[  206.814615] wlan1: EHT not supported, disabling EHT
[  207.342015] wlan1: Inserted STA 90:09:d0:31:02:77
[  207.346735] wlan1: send auth to 90:09:d0:31:02:77 (try 1/3)
[  207.455949] wlan1: send auth to 90:09:d0:31:02:77 (try 2/3)
[  207.561126] wlan1: authenticated
[  207.564379] wlan1: moving STA 90:09:d0:31:02:77 to state 2
[  207.571906] wlan1: associate with 90:09:d0:31:02:77 (try 1/3)
[  207.582324] wlan1: RX AssocResp from 90:09:d0:31:02:77 (capab=0x1511 status=18 aid=0)
[  207.590168] wlan1: 90:09:d0:31:02:77 denied association (code=18)
[  207.611895] wlan1: moving STA 90:09:d0:31:02:77 to state 1
[  207.620168] wlan1: Removed STA 90:09:d0:31:02:77
[  207.625011] wlan1: Destroyed STA 90:09:d0:31:02:77


> wpa_supplicant -d (relevant section)
nl80211: Associate (ifindex=17)
  * bssid=90:09:d0:31:02:77
  * freq=5745
  * SSID=xxxx
  * IEs - hexdump(len=61): 30 14 01 00 00 0f ac 04 01 00 00 0f ac 04 01 00 00 0f ac 02 00 00 7f 0b 04 00 0a 02 01 40 40 40 00 21 20 46 05 70 00 00 00 00 3b 11 80 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82
  * WPA Versions 0x2
  * pairwise=0xfac04
  * group=0xfac04
  * akm=0xfac02
  * htcaps - hexdump(len=26): 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  * htcaps_mask - hexdump(len=26): 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  * vhtcaps - hexdump(len=12): 00 00 00 00 00 00 00 00 00 00 00 00
  * vhtcaps_mask - hexdump(len=12): 00 00 00 00 00 00 00 00 00 00 00 00
nl80211: Association request send successfully
nl80211: Drv Event 20 (NL80211_CMD_DEL_STATION) received for wlan1
nl80211: Delete station 90:09:d0:31:02:77
nl80211: Drv Event 38 (NL80211_CMD_ASSOCIATE) received for wlan1
nl80211: Associate event
wlan1: Event ASSOC_REJECT (12) received
wlan1: CTRL-EVENT-ASSOC-REJECT bssid=90:09:d0:31:02:77 status_code=18
wlan1: SME: Association with 90:09:d0:31:02:77 failed: status code 18


>find . -type f | xargs md5sum
3c2311ff705aa9089d7914c5d6e0f12a  ./2.5.0.1/WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1/Notice.txt
823915206101779f8cab6b89066e1040  ./2.5.0.1/WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1/amss.bin
fcca36959c5f56f9f0fb7015083dc806  ./2.5.0.1/WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1/m3.bin
668f53050a92db5b4281ae5f26c7e35d  ./board-2.bin

> lspci -mnn
0001:01:00.0 "Network controller [0280]" "Intel Corporation [8086]" "Wi-Fi 6 AX210/AX211/AX411 160MHz [2725]" -r1a "Intel Corporation [8086]" "Wi-Fi 6 AX210 160MHz [0024]"
0002:01:00.0 "Network controller [0280]" "Qualcomm [17cb]" "Device [1104]" -r01 "Qualcomm [17cb]" "Device [1104]"

For reference, logs for Intel AX210 module on v6.2
> dmesg (relevant section)
[   53.084225] iwlwifi 0001:01:00.0: WFPM_UMAC_PD_NOTIFICATION: 0x1f
[   53.084245] iwlwifi 0001:01:00.0: WFPM_LMAC2_PD_NOTIFICATION: 0x1f
[   53.084258] iwlwifi 0001:01:00.0: WFPM_AUTH_KEY_0: 0x80
[   53.084270] iwlwifi 0001:01:00.0: CNVI_SCU_SEQ_DATA_DW9: 0x0
[   53.170920] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170937] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170947] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170956] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170964] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170971] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[   53.170979] ACPI: <n/a>: failed to evaluate _DSM bf0212f2-788f-c64d-a5b3-1f738e285ade (0x1001)
[  154.969620] wlan0: authenticate with 90:09:d0:31:02:77
[  154.969667] wlan0: Allocated STA 90:09:d0:31:02:77
[  154.969685] wlan0: EHT not supported, disabling EHT
[  154.972819] wlan0: Inserted STA 90:09:d0:31:02:77
[  154.973002] wlan0: send auth to 90:09:d0:31:02:77 (try 1/3)
[  155.129024] wlan0: send auth to 90:09:d0:31:02:77 (try 2/3)
[  155.204898] wlan0: authenticated
[  155.204906] wlan0: moving STA 90:09:d0:31:02:77 to state 2
[  155.209004] wlan0: associate with 90:09:d0:31:02:77 (try 1/3)
[  155.212810] wlan0: RX AssocResp from 90:09:d0:31:02:77 (capab=0x1511 status=0 aid=10)
[  155.212837] wlan0: WMM AC=0 acm=0 aifs=2 cWmin=3 cWmax=7 txop=47 uapsd=0, downgraded=0
[  155.212846] wlan0: WMM AC=1 acm=0 aifs=2 cWmin=7 cWmax=15 txop=94 uapsd=0, downgraded=0
[  155.212853] wlan0: WMM AC=2 acm=0 aifs=3 cWmin=15 cWmax=1023 txop=0 uapsd=0, downgraded=0
[  155.212860] wlan0: WMM AC=3 acm=0 aifs=7 cWmin=15 cWmax=1023 txop=0 uapsd=0, downgraded=0
[  155.212869] wlan0: moving STA 90:09:d0:31:02:77 to state 3
[  155.216521] wlan0: associated
[  155.314376] wlan0: Limiting TX power to 27 (30 - 3) dBm as advertised by 90:09:d0:31:02:77
[  155.729746] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[  155.730153] wlan0: moving STA 90:09:d0:31:02:77 to state 4
[  175.898774] wlan0: AddBA Req buf_size=256 for 90:09:d0:31:02:77
[  175.898983] wlan0: Rx A-MPDU request on 90:09:d0:31:02:77 tid 6 result 0
[  181.122476] wlan0: AddBA Req buf_size=256 for 90:09:d0:31:02:77
[  181.122687] wlan0: Rx A-MPDU request on 90:09:d0:31:02:77 tid 0 result 0
Comment 1 The Linux kernel's regression tracker (Thorsten Leemhuis) 2023-04-08 12:12:43 UTC
I forwarded the report to the lists to increase its visibility:
https://lore.kernel.org/all/ed31b6fe-e73d-34af-445b-81c5c644d615@leemhuis.info/

If no developer comes up with a idea what might cause this within the next week or so, I'd assume you likely need to do use "git bisect" to find the change that caused the problem.
Comment 2 Michal Smulski 2023-04-10 21:06:51 UTC
This problem is present in v6.1. (Linux mainline tree).
This problem is NOT present in v5.15.99 (Linux-stable tree)
Comment 3 Michal Smulski 2023-04-13 23:11:38 UTC
Embedded ARM CPU vendor (NXP) supports only kernels only 5.15 and 6.1. NXP unstreamed its code to Linux mainline sometime after 6.1.

I switched to x86-64 for doing testing on kernels 5.16-6.0.

Running Ubuntu 22.04, I see the following
1. vmlinuz-5.15.0-43-generic kernel works (you can associated and connect to AP)
2. vmlinuz-5.17.0-1029-oem kernel does not work (association is rejected with the same error as above).
3. vmlinuz-5.19.0-38-generic does not work (same as in 5.17)

The main obvious difference is that ath11k driver support 160MHz channel bandwidth in 5.17 & 5.19 while 5.15 version supports only 80MHz maximum channel bandwidth.
Comment 4 Michal Smulski 2023-04-14 21:44:46 UTC
Here is bisect log for finding the commit that causes the problem.

$ git bisect log
git bisect start '--' './drivers/net/wireless/ath/ath11k'
# good: [8bb7eca972ad531c9b149c0a51ab43a417385813] Linux 5.15
git bisect good 8bb7eca972ad531c9b149c0a51ab43a417385813
# bad: [df0cc57e057f18e44dac8e6c18aba47ab53202f9] Linux 5.16
git bisect bad df0cc57e057f18e44dac8e6c18aba47ab53202f9
# bad: [79feedfea7793d91293ab72fac5fc66aae0c6a85] ath11k: Avoid "No VIF found" warning message
git bisect bad 79feedfea7793d91293ab72fac5fc66aae0c6a85
# bad: [eb19efed836a51ee30a602abe2dd21a97c47bbcc] ath11k: Wstringop-overread warning
git bisect bad eb19efed836a51ee30a602abe2dd21a97c47bbcc
# good: [64e06b78a92744d43d3993ba623d2686d8f937e7] ath11k: add separate APIs for monitor mode
git bisect good 64e06b78a92744d43d3993ba623d2686d8f937e7
# bad: [cc2ad7541486f1f755949c1ccd17e14a15bf1f4e] ath11k: Refactor spectral FFT bin size
git bisect bad cc2ad7541486f1f755949c1ccd17e14a15bf1f4e
# good: [61fe43e7216df6e9a912d831aafc7142fa20f280] ath11k: add support for setting fixed HE rate/gi/ltf
git bisect good 61fe43e7216df6e9a912d831aafc7142fa20f280
# bad: [f552d6fd2f27ce9430c74482c46272838e2de688] ath11k: add support for 80P80 and 160 MHz bandwidth
git bisect bad f552d6fd2f27ce9430c74482c46272838e2de688
# first bad commit: [f552d6fd2f27ce9430c74482c46272838e2de688] ath11k: add support for 80P80 and 160 MHz bandwidth
Comment 5 The Linux kernel's regression tracker (Thorsten Leemhuis) 2023-04-17 09:54:52 UTC
(In reply to Michal Smulski from comment #4)
> Here is bisect log for finding the commit that causes the problem.
>
> # first bad commit: [f552d6fd2f27ce9430c74482c46272838e2de688] ath11k: add
> support for 80P80 and 160 MHz bandwidth

Great, thx. Pointed the authors of that commit to this ticket here: https://lore.kernel.org/all/afa92c35-b17a-49de-ac4c-6d60237a2dca@leemhuis.info/
Comment 6 Kalle Valo 2023-04-17 09:57:58 UTC
Michal, could you provide more information about the AP? What's the exact make and model? What are the Wi-Fi settings on the AP? This helps with reproducing the bug on our end.
Comment 7 Michal Smulski 2023-04-17 16:48:40 UTC
AP is Synology Router RT6600AX

# uname -a
Linux SynologyRouter 4.4.60 #9346 SMP PREEMPT Fri Nov 4 11:53:13 CST 2022 aarch64 GNU/Linux synology_cypress_rt6600ax

/lib/firmware/qcn9000 # more fw_version.txt 
WLAN.HK.2.5.r4-00745-QCAHKSWPL_SILICONZ-1 v1

/etc/hostapd # cat hostapd-wlan100.conf 
ctrl_interface=/var/run/hostapd
driver=nl80211
interface=wlan100
bridge=lbr0
ssid=8e55bb
ignore_broadcast_ssid=0
max_num_sta=256
ap_isolate=0
dtim_period=4
wmm_enabled=1
wpa_group_rekey=3600
send_probe_response=0
ieee80211ax=1
ieee80211ac=1
ieee80211n=1
hw_mode=a
channel=149
he_oper_centr_freq_seg0_idx=155
he_oper_chwidth=1
ht_capab=[LDPC][SMPS-DYNAMIC][TX-STBC][RX-STBC-1][MAX-AMSDU-7935][DSSS_CCK-40][HT40+][SHORT-GI-40]
vht_capab=[MAX-MPDU-11454][VHT160-80PLUS80][RXLDPC][SHORT-GI-80][SHORT-GI-160][TX-STBC-2BY1][RX-STBC1][SU-BEAMFORMER][SOUNDING-DIMENSION-4][SU-BEAMFORMEE][MAX-A-MPDU-LEN-EXP7][MU-BEAMFORMER][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK  
wpa_pairwise=CCMP
ieee80211w=0
wpa_passphrase=244283540
wps_independent=1
eap_server=1
wps_state=2
ap_setup_locked=0
wps_rf_bands=a
config_methods=label display virtual_display virtual_push_button physical_push_button keypad
device_type=6-0050F204-1
manufacturer=Synology Inc.
model_name=Synology Router
model_number=RT6600AX
serial_number=2290UXRTXFQP8
upnp_iface=lbr0
device_name=Synology Router
friendly_name=Synology Router
uuid=e5ea0080-01db-4969-a47e-9009d0310272
macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd-wlan100-mac.list
Comment 8 Michal Smulski 2023-05-03 04:17:17 UTC
Reverting part of the commit f552d6fd2f27ce9430c74482c46272838e2de688, specifically:

@@ -4427,11 +4497,6 @@ ath11k_create_vht_cap(struct ath11k *ar, u32 rate_cap_tx_chainmask,
 
        ath11k_set_vht_txbf_cap(ar, &vht_cap.cap);
 
-       /* TODO: Enable back VHT160 mode once association issues are fixed */
-       /* Disabling VHT160 and VHT80+80 modes */
-       vht_cap.cap &= ~IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
-       vht_cap.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_160;
-
        rxmcs_map = 0;
        txmcs_map = 0;
        for (i = 0; i < 8; i++) {

fixes my problem. Moreover, I know get 160MHz link
#iw dev wlan0 link
Connected to 90:09:d0:31:02:77 (on wlan0)
        SSID: 8e55bb
        freq: 5500
        RX: 392016 bytes (1590 packets)
        TX: 3069 bytes (20 packets)
        signal: -95 dBm
        rx bitrate: 2507.8 MBit/s 160MHz HE-MCS 6 HE-NSS 4 HE-GI 0 HE-DCM 0
        tx bitrate: 2882.6 MBit/s 160MHz HE-MCS 7 HE-NSS 4 HE-GI 0 HE-DCM 0

        bss flags:      short-slot-time
        dtim period:    4
        beacon int:     100
Comment 9 Michal Smulski 2023-05-06 04:02:06 UTC
I captured association/management frame from Qualcomm (configured as STA)  via wireshark which triggers error message on AP. I can see the following:

Supported Channel Width = 0x2
Extended NSS BW Support = 0x1
Extended NSS BW Capable = 0x1

I noted from linux/net/wireless/util.c:

	/* This is an invalid combination so pretend nothing is supported */
        if (supp_width == 2 && (ext_nss_bw == 1 || ext_nss_bw == 2))
                return 0;

So it appears that Synology router is correct that channel bw and ext NSS combination is invalid. I presume that other AP device use this lenient approach and ignore the invalid combination but Synology does not accept this.


VHT Capabilities Info: 0x738b79fa
    .... .... .... .... .... .... .... ..10 = Maximum MPDU Length: 11 454 (0x2)
    .... .... .... .... .... .... .... 10.. = Supported Channel Width Set: 160MHz and 80+80 Supported (0x2)
    .... .... .... .... .... .... ...1 .... = Rx LDPC: Supported
    .... .... .... .... .... .... ..1. .... = Short GI for 80MHz/TVHT_MODE_4C: Supported
    .... .... .... .... .... .... .1.. .... = Short GI for 160MHz and 80+80MHz: Supported
    .... .... .... .... .... .... 1... .... = Tx STBC: Supported
    .... .... .... .... .... .001 .... .... = Rx STBC: 1 Spatial Stream Supported (0x1)
    .... .... .... .... .... 1... .... .... = SU Beamformer Capable: Supported
    .... .... .... .... ...1 .... .... .... = SU Beamformee Capable: Supported
    .... .... .... .... 011. .... .... .... = Beamformee STS Capability: 4 (0x3)
    .... .... .... .011 .... .... .... .... = Number of Sounding Dimensions: 4 (0x3)
    .... .... .... 1... .... .... .... .... = MU Beamformer Capable: Supported
    .... .... ...0 .... .... .... .... .... = MU Beamformee Capable: Not supported
    .... .... ..0. .... .... .... .... .... = TXOP PS: Not supported
    .... .... .0.. .... .... .... .... .... = +HTC-VHT Capable: Not supported
    .... ..11 1... .... .... .... .... .... = Max A-MPDU Length Exponent: 1 048 575 (0x7)
    .... 00.. .... .... .... .... .... .... = VHT Link Adaptation: No Feedback (0x0)
    ...1 .... .... .... .... .... .... .... = Rx Antenna Pattern Consistency: Supported
    ..1. .... .... .... .... .... .... .... = Tx Antenna Pattern Consistency: Supported
    01.. .... .... .... .... .... .... .... = Extended NSS BW Support: 0x1




..1. .... .... .... = Extended NSS BW Capable: Capable
Comment 10 Michal Smulski 2023-05-06 04:05:58 UTC
Another way I was able to verify this is by setting:

In mac.c (in ath11kcreate_vht_cap() function):
  vht_cap.cap &= ~IEEE80211_VHT_CAP_EXT_NSS_BW_MASK;
instead of removing 160MHz support from vht_cap.cap.

Setting this field allows for full 160MHz connection with AP.

I am not sure where is Extended NSS BW Support=1 set. I don't see this set in ath11k driver. Is this done in firmware?

Note You need to log in before you can comment on or make changes to this bug.