[BUG REPORT] GL-BE9300 – MLO Bond-State Corruption causes EAPOL Loop

Product: GL.iNet Flint 3 (GL-BE9300)
Firmware: Beta (kernel 5.4.213, IPQ5332 SoC, QCA WiFi stack)
Severity: High – WiFi clients cannot connect, appears as "Wrong Password" even with correct credentials, workaround requires disabling MLO
Date: 2026-02-26


Executive Summary

Three interrelated bugs in the MLO (Multi-Link Operation) implementation cause a cascade from association failure all the way to a complete, unrecoverable system freeze:

# Bug Severity
1 DMS capability rejection corrupts MLO bond-state → "Zombie-Association" → infinite EAPOL loop → WiFi connection failure High
2 MLO bond (mld0) cannot be destroyed cleanly → dirty teardown with kernel errors Medium
3 MLO AID manager loses state tracking during teardown Medium

Key proof: The DMS error alone is harmless – without MLO active, clients with DMS capability connect successfully. The bug is exclusively triggered by the combination of DMS rejection + active MLO bond-state.

Note: A separate related incident on the same day resulted in a full system freeze caused by an SSID conflict that amplified the EAPOL loop over an extended period. That incident is documented in a separate bug report. This report covers only the MLO/DMS connection failure and dirty teardown.


Environment

Router GL.iNet Flint 3, GL-BE9300
Kernel Linux 5.4.213, ARM64, IPQ5332 SoC (4 cores)
WiFi chipsets QCN9224 (5/6 GHz), QCA5332 (2.4 GHz)
MLO config 3-link: wlan02 (2.4 GHz) + wlan12 (5 GHz) + wlan22 (6 GHz), bond: mld0
Security WPA2-CCMP (RSN)
Confirmed affected clients Xiaomi POCO M7 Pro 5G (da:66:ee:d7:f3:93), unknown device (62:de:21:52:e4:ec), iPhone (reported, no DMS error in log)
Active services ECM, NSS offload, Netify Agent 5.1.24, NordVPN WireGuard, ZeroTier, Samba 4.18.8

Bug 1 – DMS Rejection Corrupts MLO Bond-State ("Zombie-Association" → EAPOL Loop)

Root Cause

When a client advertises DMS (Directed Multicast Service) capability, the QCA driver correctly rejects it – but fails to invalidate the MLO bond-state for that client. The client is accepted into a "Zombie-Association": hostapd proceeds with the EAPOL 4-Way Handshake, but the corrupted bond-state prevents the handshake from ever reaching msg 3/4. hostapd retransmits msg 1/4 indefinitely with no retry-limit, no backoff, and no temporary client ban.

Proof: DMS error alone is harmless without MLO

The same client (da:66:ee:d7:f3:93, POCO M7 Pro 5G) triggers the identical DMS error both with and without MLO active – but the outcome is completely different:

With MLO active → EAPOL loop, never reaches 3/4:

19:02:17  kernel: [ 7909] wlan: [0:E:ANY] ieee80211_recv_asreq: assoc req from dms not-supported sta :62:de:21:52:e4:ec
19:02:17  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: sending 1/4 msg of 4-Way Handshake
19:02:17  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: received EAPOL-Key frame (2/4 Pairwise)
19:02:18  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: sending 1/4 msg of 4-Way Handshake  ← retry, stuck
19:02:18  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: received EAPOL-Key frame (2/4 Pairwise)
19:02:19  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: sending 1/4 msg of 4-Way Handshake  ← retry
19:02:19  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: received EAPOL-Key frame (2/4 Pairwise)
19:02:20  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: sending 1/4 msg of 4-Way Handshake  ← retry
19:02:20  hostapd: wlan01: STA 62:de:21:52:e4:ec WPA: received EAPOL-Key frame (2/4 Pairwise)
19:02:21  hostapd: wlan01: STA 62:de:21:52:e4:ec IEEE 802.11: disassociated
           ... client re-associates immediately, entire loop repeats ...

Without MLO active → same DMS error, but handshake completes successfully:

19:18:04  kernel: [ 8856] wlan: [0:E:ANY] ieee80211_recv_asreq: assoc req from dms not-supported sta :da:66:ee:d7:f3:93
19:18:04  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 1/4 msg of 4-Way Handshake
19:18:04  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: received EAPOL-Key frame (2/4 Pairwise)
19:18:04  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 3/4 msg of 4-Way Handshake  ← proceeds!
19:18:04  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: received EAPOL-Key frame (4/4 Pairwise)
19:18:04  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: pairwise key handshake completed (RSN)
19:18:04  dnsmasq: DHCPACK(br-lan) 192.168.8.133 da:66:ee:d7:f3:93 POCO-M7-Pro-5G  ✓

User Impact

On the client side this appears as "Wrong Password" or "Authentication failed" – even though the credentials are correct. The actual cause is the corrupted handshake state in the MLO layer, not an incorrect passphrase. Disabling MLO immediately resolves the issue – the same client connects successfully within seconds.


Bug 2 – Dirty MLO Teardown: mld0 Bond Cannot Be Destroyed Cleanly

When MLO is disabled via the web interface to work around Bug 1, the kernel fails to destroy the mld0 bond interface atomically. The sequence shows a clear resource management failure in the osif layer:

19:03:21  kernel: [9878:I:ANY] osif_mldev_remove_mld_osdev: mld0: The mld grp_id is: 0
19:03:21  kernel: Not able to destroy bond netdevice: mld0 as slaves are present
19:03:21  kernel: [9878:E:ANY] osif_destroy_mld_bond: mld0 destroy failed          ← bond destroy fails
19:03:21  kernel: [9878:E:ANY] osif_destroy_mld_bond: releasing slave wlan02        ← fallback: manual slave release
19:03:21  kernel: [9878:E:ANY] osif_destroy_mld_bond: releasing slave wlan22

The bond (mld0) attempts to destroy itself while slaves (wlan02, wlan22) are still attached. The driver falls back to forcibly releasing slaves one by one rather than performing an atomic teardown. This is a race condition or incorrect teardown ordering in osif_destroy_mld_bond.


Bug 3 – MLO AID Manager State Loss During Teardown

During the same teardown sequence, the MLO Association ID manager attempts to deinitialize vdev IDs that were never correctly registered:

19:03:22  kernel: [0:E:MLO_MGR] wlan_mlo_vdev_aid_mgr_deinit: ID 0, doesn't have associated AID mgr
19:03:22  kernel: [0:E:MLO_MGR] wlan_mlo_vdev_aid_mgr_deinit: ID 1, doesn't have associated AID mgr
19:03:22  kernel: [0:E:MLO_MGR] wlan_mlo_vdev_aid_mgr_deinit: ID 2, doesn't have associated AID mgr
19:03:22  kernel: [0:E:MLO_MGR] wlan_mlo_vdev_aid_mgr_deinit: ID 3, doesn't have associated AID mgr

All four vdev IDs (0–3) report missing AID managers. This indicates the AID management state was never correctly initialised for these vdevs, or was already lost during the Zombie-Association phase, pointing to a deeper flaw in the QCA MLO resource allocation lifecycle.


Confirmed Affected Clients

Device MAC DMS error in log Behaviour with MLO Behaviour without MLO
Xiaomi POCO M7 Pro 5G da:66:ee:d7:f3:93 :white_check_mark: confirmed EAPOL loop, no connection Connects successfully :white_check_mark:
Unknown device 62:de:21:52:e4:ec :white_check_mark: confirmed EAPOL loop, no connection Not tested
iPhone (model unconfirmed) fe:77:19:22:cc:36 :cross_mark: not seen Connection issues reported Connects successfully :white_check_mark:

The iPhone connects without a DMS error in the post-MLO-disable log, suggesting its connection issues may be related to Bug 2/3 (dirty teardown leaving inconsistent state) rather than Bug 1 directly.


Steps to Reproduce

Bug 1 (EAPOL loop / connection failure):

  1. Enable MLO on GL-BE9300 (5 GHz + 6 GHz active, mld0 bond up)
  2. Attempt to connect a device that advertises DMS capability (POCO M7 Pro 5G confirmed)
  3. Observe ieee80211_recv_asreq: assoc req from dms not-supported sta in kernel log
  4. Observe infinite 1/4 → 2/4 → 1/4 → 2/4 loop in hostapd log, client shows "Wrong Password"
  5. Disable MLO – same device connects immediately :white_check_mark:

Bug 2/3 (dirty teardown):

  1. With MLO active, trigger Bug 1 or simply disable MLO via the web interface
  2. Observe osif_destroy_mld_bond: mld0 destroy failed and wlan_mlo_vdev_aid_mgr_deinit: doesn't have associated AID mgr in kernel log

Expected vs. Actual Behaviour

Expected Actual
DMS-unsupported client with MLO active Rejected cleanly with Status Code 43 (Unsupported Capability), bond-state cleared Zombie-Association: client accepted into corrupted state, infinite EAPOL loop, "Wrong Password" on client
DMS-unsupported client without MLO Same clean rejection with Status Code 43 Works correctly – handshake completes (confirms bug is MLO-specific)
MLO disable/teardown Atomic: bond destroyed, slaves released, state cleared in one operation Bond destroy fails, slaves released manually via error-path fallback, AID manager state lost

Suggested Fixes

1. Fix DMS rejection to invalidate MLO bond-state (Bug 1 – primary fix)
When ieee80211_recv_asreq rejects a DMS association, the MLO bond-state for that STA must be fully cleared before hostapd proceeds. The current path accepts the client into hostapd with a corrupted bond reference. The fix should ensure osif_mld_unmap_link_dev is called for the STA before returning from the DMS rejection path.

2. Implement EAPOL retry-limit with temporary client ban (Bug 1 – safety net)
Even if Bug 1 is not immediately fixed, hostapd must not retry msg 1/4 indefinitely. After N failed handshakes (e.g. 5), call ap_sta_disconnect() and add the MAC to a temporary deny-list (60 s). Relevant config: wpa_ptk_rekey=60.

3. Fix MLO bond teardown ordering (Bug 2)
osif_destroy_mld_bond must detach all slaves before attempting to destroy the bond netdevice. The current code attempts bond_destroy while slaves are still present and falls back to manual release only after failure. The slave detach loop should be the first step, not the error recovery path.

4. Fix MLO AID manager lifecycle (Bug 3)
wlan_mlo_vdev_aid_mgr_deinit should only be called for vdev IDs that were successfully registered. The missing AID manager errors suggest the init/deinit lifecycle is not properly tracked, likely related to the same Zombie-Association state corruption in Bug 1.


Workaround

Disable MLO (and optionally 6 GHz) in the GL-BE9300 web interface. DMS-capable clients then connect successfully as shown in the logs. This is a significant capability regression for a Wi-Fi 7 router but is currently the only stable configuration.

That’s a boat load of ChatGPT there amigo!

Guilty as charged – I used AI to help structure it. The logs, analysis and root cause are mine though. Happy to discuss the technical details if you spot anything wrong.

I think I had a similar of maybe the same issue a week ago when I was not at home.

After a power outage, WiFi completely stopped working. SSID was visible, wired devices were fine, but wireless clients either hung forever or said “wrong password.” I didn’t change anything security-wise, so it was super confusing.

I ended up disabling 6 GHz and as soon as I did that, everything started working again. No other changes needed. Since then I’ve left 6 GHz (and MLO) off and it’s been stable.

So yeah, at least in my case it definitely seems related to the 6 GHz / MLO stuff getting into a weird state.

Some logs I have saved from that day while I was trying to debug the issue and fix it:

Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.067686] SAWF Telemetry: cfg->msdu_ttl 0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.072365] SAWF Telemetry: cfg->msdu_rate_loss 0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.098988] SAWF Telemetry: type 0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.099009] SAWF Telemetry: detect->min_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.102655] SAWF Telemetry: detect->max_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.106033] SAWF Telemetry: detect->burst_size:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.111146] SAWF Telemetry: detect->service_interval:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.116273] SAWF Telemetry: detect->delay_bound:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.120973] SAWF Telemetry: detect->msdu_ttl:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.125966] SAWF Telemetry: detect->msdu_rate_loss:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.134449] SAWF Telemetry: type 1
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.135038] SAWF Telemetry: detect->min_thruput_rate:1
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.140233] SAWF Telemetry: detect->max_thruput_rate:1
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.143369] SAWF Telemetry: detect->burst_size:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.148499] SAWF Telemetry: detect->service_interval:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.153612] SAWF Telemetry: detect->delay_bound:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.158401] SAWF Telemetry: detect->msdu_ttl:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.163334] SAWF Telemetry: detect->msdu_rate_loss:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.171746] SAWF Telemetry: type 2
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.172451] SAWF Telemetry: detect->min_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.177661] SAWF Telemetry: detect->max_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.180783] SAWF Telemetry: detect->burst_size:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.185916] SAWF Telemetry: detect->service_interval:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.191025] SAWF Telemetry: detect->delay_bound:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.195809] SAWF Telemetry: detect->msdu_ttl:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.200747] SAWF Telemetry: detect->msdu_rate_loss:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.209260] SAWF Telemetry: type 3
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.209864] SAWF Telemetry: detect->min_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.214981] SAWF Telemetry: detect->max_thruput_rate:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.218257] SAWF Telemetry: detect->burst_size:1
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.223317] SAWF Telemetry: detect->service_interval:1
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.228448] SAWF Telemetry: detect->delay_bound:0
Sun Feb 15 09:25:02 2026 kern.debug kernel: [ 1014.233213] SAWF Telemetry: detect->msdu_ttl:1
Sun Feb 15 09:25:03 2026 kern.debug kernel: [ 1014.238172] SAWF Telemetry: detect->msdu_rate_loss:1
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.475945] wlan: [0:I:ANY] ieee80211_acs_post_event: [EXT] Channel number: 0000000032d1b74a
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.479978] wlan: [0:I:ANY] wlan_mbss_done_acs: Channel: 0000000032d1b74a
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.488533] wlan: [0:I:ANY] vap-2(wlan2): ACS result PCH 21 freq 6055, SCH 0 freq 0, hw_mode 2 chwidth 320, vht_seg0 15 freq 6025, vht_seg1 31 freq 6105 puncture pattern 0 LinkID: 0
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.495152] wlan: [0:I:ANY] vap-3(wlan22): ACS result PCH 21 freq 6055, SCH 0 freq 0, hw_mode 2 chwidth 320, vht_seg0 15 freq 6025, vht_seg1 31 freq 6105 puncture pattern 0 LinkID: 0
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.512392] wlan: [17947:I:ANY] ieee80211_acs_scan_evhandler: [EXT] lock held duration (35ms)
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.521353] wlan: [10631:I:ANY] wlan_cfg80211_start_ap: Start wlan2 psoc:1 vdev:2
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.536101] wlan: [10631:I:ANY] DES SSID SET=TP-link MESH
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.544581] wlan: [10631:I:ANY] desired hw mode: 43
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.549290] wlan: [10631:I:ANY] wlan_cfg80211_chan_to_phymode: band:3 width: 13 channel_cfreq: 6055 center_freq1: 6105 chandef.center_freq2: 0 flags: 512
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.553572] wlan: [10631:I:ANY] HT Support:0000000000000000 VHT Support:0000000000000000 HE Support:00000000a28ebb51
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.567482] wlan: [10631:I:ANY] cfg80211_chan_to_phymode_6g: Max supported wireless mode: 4
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.578318] wlan: [10631:I:ANY] Phymode: 43
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.578318]
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.586452] wlan: [29800:I:ANY] number of channels: 2G = 0 5G = 0, 6G = 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.592674] wlan: [10631:I:ANY] wlan_scan_update_channel_list: num_chan: 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.598932] wlan: [10631:I:ANY] ieee80211_ucfg_set_freq_internal:
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.598932]  Channel is configured already!!
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.605862] wlan: [17306:I:ANY] number of channels: 2G = 0 5G = 0, 6G = 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.609381] wlan: [10631:I:ANY] wlan_scan_update_channel_list: num_chan: 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.623233] wlan: [10631:I:MBSSIE] wlan_cfg80211_start_ap: Set tx-vap wlan2: vdev_id:2
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.629930] wlan: [10631:W:MLO_MGR] wlan_mlme_start_ap_vdev: Allowing 11be non-MLO operation as per INI configuration
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.637970] wlan: [10631:E:ANY] wlan_cfg80211_start_ap: vap2:HT CAP setting failed
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.648473] wlan: [10631:E:ANY] wlan_cfg80211_start_ap: vap2:VHT CAP setting failed
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.683331] wlan: [10631:I:ANY] wlan_cfg80211_start_ap: Start wlan22 psoc:1 vdev:3
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.683360] wlan: [10631:I:MLO_MGR] wlan_cfg80211_start_ap: Num links from user space: 3  Max: 4
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.689911] wlan: [10631:I:ANY] DES SSID SET=GL-BE9300-abb-MLO
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.698809] wlan: [10631:I:ANY] desired hw mode: 43
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.704508] wlan: [10631:I:ANY] wlan_cfg80211_chan_to_phymode: band:3 width: 13 channel_cfreq: 6055 center_freq1: 6105 chandef.center_freq2: 0 flags: 512
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.709172] wlan: [10631:I:ANY] HT Support:0000000000000000 VHT Support:0000000000000000 HE Support:0000000046e9bca9
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.723064] wlan: [10631:I:ANY] cfg80211_chan_to_phymode_6g: Max supported wireless mode: 4
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.733632] wlan: [10631:I:ANY] Phymode: 43
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.733632]
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.742000] wlan: [17114:I:ANY] number of channels: 2G = 0 5G = 0, 6G = 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.743515] wlan: [10631:I:ANY] wlan_scan_update_channel_list: num_chan: 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.754586] wlan: [10631:I:ANY] ieee80211_ucfg_set_freq_internal:
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.754586]  Channel is configured already!!
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.761362] wlan: [142:I:ANY] number of channels: 2G = 0 5G = 0, 6G = 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.766146] wlan: [10631:I:ANY] wlan_scan_update_channel_list: num_chan: 24
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.778949] wlan: [10631:E:ANY] wlan_mlme_parse_appie: wlan22 Beacon Protection is enabled
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.778949]
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.785344] wlan: [10631:I:MBSSIE] wlan_cfg80211_start_ap: Set tx-vap wlan22: vdev_id:3
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.785971] wlan: [0:I:CMN_MLME] mlme_ext_vap_up: Enabling FILS in 6Ghz VAP: 2
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.795125] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: Num MLO Links: 3
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.803079] wlan: [0:E:ANY] mlme_ext_vap_up: VAP (wlan2) ca:83:2a:f2:63:e1 is up, vdev_id:2 pdev_id:1 psoc_id:1
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.810280] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 1 LinkMAC: 72:34:89:2d:90:1c
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.827996] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 0 LinkMAC: 82:e3:b1:d0:87:16
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.837310] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 2 LinkMAC: ca:83:2a:f2:63:e3
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.846659] wlan: [10631:I:MLO_MGR] wlan_mlme_mlo_update_partner_info: mlo_ap_vdev_attach with LinkID: 2 num_links: 3
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.858002] wlan: [10631:E:ANY] wlan_cfg80211_start_ap: vap3:HT CAP setting failed
Sun Feb 15 09:25:03 2026 kern.err kernel: [ 1014.866869] wlan: [10631:E:ANY] wlan_cfg80211_start_ap: vap3:VHT CAP setting failed
Sun Feb 15 09:25:03 2026 daemon.info hostapd: wlan2: IEEE 802.11 driver had channel switch: iface->freq=6055, freq=6055, ht=1, vht_ch=0x0, he_ch=0x0, eht_ch=0x0, offset=-1, width=10 (320 MHz), cf1=6105, cf2=0, puncturing_bitmap=0x0
Sun Feb 15 09:25:03 2026 daemon.info hostapd: wlan22: IEEE 802.11 driver had channel switch: iface->freq=6055, freq=6055, ht=1, vht_ch=0x0, he_ch=0x0, eht_ch=0x0, offset=-1, width=10 (320 MHz), cf1=6105, cf2=0, puncturing_bitmap=0x0
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.337953] wlan: [0:I:ANY] ieee80211_acs_post_event: [EXT] Channel number: 0000000032d1b74a
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.337987] wlan: [0:I:ANY] wlan_mbss_done_acs: Channel: 0000000032d1b74a
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.345582] wlan: [0:I:ANY] vap-1(wlan12): ACS result PCH 48 freq 5240, SCH 36 freq 5180, hw_mode 2 chwidth 80, vht_seg0 42 freq 5210, vht_seg1 0 freq 0 puncture pattern 0 LinkID: 0
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.352320] wlan: [17947:I:ANY] ieee80211_acs_scan_evhandler: [EXT] lock held duration (14ms)
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.386672] wlan: [10631:I:ANY] wlan_cfg80211_start_ap: Start wlan12 psoc:1 vdev:1
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.386707] wlan: [10631:I:MLO_MGR] wlan_cfg80211_start_ap: Num links from user space: 3  Max: 4
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.393177] wlan: [10631:I:ANY] DES SSID SET=GL-BE9300-abb-MLO
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.402540] wlan: [10631:I:ANY] desired hw mode: 41
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.408288] wlan: [10631:I:ANY] wlan_cfg80211_chan_to_phymode: band:1 width: 3 channel_cfreq: 5240 center_freq1: 5210 chandef.center_freq2: 0 flags: 512
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.412511] wlan: [10631:I:ANY] HT Support:00000000956f5932 VHT Support:00000000be6fc447 HE Support:000000002116e425
Sun Feb 15 09:25:05 2026 kern.err kernel: [ 1017.426423] wlan: [10631:I:ANY] Max supported wireless mode: 4
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.436958] wlan: [10631:I:ANY] Phymode: 41
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.436958]
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.442599] wlan: [10631:I:ANY] ieee80211_ucfg_set_freq_internal:
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.442599]  Channel is configured already!!
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.448481] wlan: [10631:E:ANY] wlan_mlme_parse_appie: wlan12 Beacon Protection is enabled
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.448481]
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.458672] wlan: [10631:I:MBSSIE] wlan_cfg80211_start_ap: Set tx-vap wlan12: vdev_id:1
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.468457] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: Num MLO Links: 3
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.476308] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 1 LinkMAC: 72:34:89:2d:90:1c
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.483953] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 0 LinkMAC: 82:e3:b1:d0:87:16
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.493321] wlan: [10631:I:MLO_MGR] mlme_mlo_validate_partnerinfo: LinkID: 2 LinkMAC: ca:83:2a:f2:63:e3
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.502694] wlan: [10631:I:MLO_MGR] wlan_mlme_mlo_update_partner_info: mlo_ap_vdev_attach with LinkID: 1 num_links: 3
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.664889] wlan: [0:E:ANY] mlme_ext_vap_up: VAP (wlan02) 82:e3:b1:d0:87:16 is up, vdev_id:1 pdev_id:0 psoc_id:0
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.666448] wlan: [0:I:CMN_MLME] mlme_ext_vap_up: Enabling FILS in 6Ghz VAP: 3
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.674271] wlan: [0:E:ANY] mlme_ext_vap_up: VAP (wlan22) ca:83:2a:f2:63:e3 is up, vdev_id:3 pdev_id:1 psoc_id:1
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.678666] wlan: [17947:E:ANY] mlme_6ghz_update_frm_sched_cb: ic_mbss_ctx is NULL
Sun Feb 15 09:25:06 2026 kern.err kernel: [ 1017.683128] wlan: [0:E:ANY] mlme_ext_vap_up: VAP (wlan12) 72:34:89:2d:90:1c is up, vdev_id:1 pdev_id:0 psoc_id:1
Sun Feb 15 09:25:06 2026 daemon.info hostapd: wlan12: IEEE 802.11 driver had channel switch: iface->freq=5240, freq=5240, ht=1, vht_ch=0x0, he_ch=0x0, eht_ch=0x0, offset=-1, width=3 (80 MHz), cf1=5210, cf2=0, puncturing_bitmap=0x0
Sun Feb 15 09:26:40 2026 daemon.notice netifd: wifi0 (31535): WARNING: Variable 'mld' does not exist or is not an array/object
Sun Feb 15 09:26:40 2026 daemon.notice netifd: wifi1 (31536): WARNING: Variable 'mld' does not exist or is not an array/object
Sun Feb 15 09:26:40 2026 kern.err kernel: [ 1111.863764] wlan: [31583:E:SPECTRAL] ucfg_spectral_is_mode_specific_request: Invalid spectral cp request id 6
Sun Feb 15 09:26:40 2026 daemon.notice netifd: Wireless device 'wifi0' is now up
Sun Feb 15 09:26:40 2026 daemon.notice netifd: Wireless device 'wifi1' is now up
root@GL-BE9300:~# 

I assume that this bug could explain why MLO on Flint 3 is such a pain in the ... ehm ... yeah. Pain. Just pain. Curious if it's fixable.

Even if it's AI for structure, I accepted this post because I believe, as @Maeddes does, that the root cause is real.

Hi

It still appears to be related to the specific dms not-supported issue, so please try the method mentioned in the other thread and see if it helps.

Hi,

thanks for the follow-up. Here are the answers to your questions:

  1. Reproducible: Yes, fully. Disabling MLO resolves it immediately, re-enabling brings it back.
  2. Firmware: 4.8.99
  3. Logs: Sent via PM.

Regarding the suggested workarounds – I appreciate the suggestions, but they don't address the root cause:

  • The affected client (Xiaomi POCO M7 Pro 5G) is not an IoT device, and the issue occurs on both 2.4 GHz and 5 GHz, so switching to 802.11n/g won't help.
  • Disabling 802.11v/BSS Transition is unrelated – this is not a roaming issue but a corrupted MLO bond-state after a DMS capability rejection.

The key evidence is this direct comparison from the logs:

With MLO active → EAPOL loop, handshake never completes:

kernel: ieee80211_recv_asreq: assoc req from dms not-supported sta :da:66:ee:d7:f3:93
hostapd: wlan01: STA da:66:ee:d7:f3:93 WPA: sending 1/4 msg of 4-Way Handshake
hostapd: wlan01: STA da:66:ee:d7:f3:93 WPA: received EAPOL-Key frame (2/4 Pairwise)
hostapd: wlan01: STA da:66:ee:d7:f3:93 WPA: sending 1/4 msg of 4-Way Handshake  ← stuck, no 3/4
... repeats indefinitely ...

Without MLO active → same DMS error, handshake completes immediately:

kernel: ieee80211_recv_asreq: assoc req from dms not-supported sta :da:66:ee:d7:f3:93
hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 1/4 msg of 4-Way Handshake
hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: received EAPOL-Key frame (2/4 Pairwise)
hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 3/4 msg of 4-Way Handshake  ← proceeds!
hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: pairwise key handshake completed (RSN)  ✓

The DMS error alone is harmless – the bug is specifically the interaction between the DMS rejection and the active MLO bond-state (mld0). Could you please escalate this to the WiFi driver team? This appears to be a QCA MLO stack issue rather than a configuration problem.

Thanks

Thanks for looking into this and keeping the post up – appreciated.

Thank you for providing the logs.

Actually, we’ve already escalated this issue to our Wi-Fi R&D team, and they are currently working with Qualcomm to investigate it.
However, since this issue is related to the Wi-Fi driver, progress may be slow, and updates won't be available anytime soon.


May we know have you had a chance to test the suggestions we provided earlier?

Based on your logs, the dms not-supported message only appears on the 2.4GHz interface(wlan0 for main Wi-Fi and wlan01 for guest Wi-Fi), and dms is related to the 802.11v roaming feature.

With that in mind, we’d like to check whether switching the 2.4GHz band to 802.11n/g mode or disabling 802.11v leads to any improvement.

We’ve previously seen similar errors with some IoT devices on 2.4GHz Guest Wi-Fi, and in those cases, changing the 2.4GHz band to 802.11n/g mode appeared to resolve the issue.
So we'd like to know if this also applies to your situation (Xiaomi POCO M7 Pro 5G).

Thank you for the update – glad to hear this has been escalated to Qualcomm, that's the right path for a driver-level fix.

Regarding the suggested workarounds: I haven't tested 802.11n/g mode or disabling 802.11v yet, but I'd like to flag a potential misunderstanding before we go down that path:

DMS is not part of 802.11v. DMS (Directed Multicast Service) is defined in IEEE 802.11aa, while 802.11v covers BSS Transition Management (roaming). They are independent features. Disabling 802.11v/BSS Transition is unlikely to affect the DMS capability advertisement or the resulting EAPOL loop.

Based on IEEE documents, DMS (Directed Multicast Service) should be defined under 802.11v.


Refer: https://www.ietf.org/proceedings/94/slides/slides-94-intarea-1.pdf

The 802.11v BSS Transition Management appears to be the only 802.11v-related feature currently enabled on the BE9300, so we’d like to try disabling it to see if that helps.

1 Like

Thanks for the clarification – you're right, I stand corrected. The IEEE document confirms DMS is defined under 802.11v-2011. I'll test disabling 802.11v tonight and report back.

1 Like

Test Results: 802.11v Disable & 802.11n/g Mode — MLO + DMS Bug

Test 1: Disable 802.11v (BSS Transition)

Configuration: bss_transition='0' on wifi2g + wlanmld2g, all other settings unchanged, MLO active.

Result: POCO connected successfully.

19:20:18  kernel: assoc req from dms not-supported sta :da:66:ee:d7:f3:93
19:20:18  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 1/4 msg of 4-Way Handshake
19:20:18  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: sending 3/4 msg of 4-Way Handshake  ✓
19:20:18  hostapd: wlan0: STA da:66:ee:d7:f3:93 WPA: pairwise key handshake completed (RSN)  ✓
19:20:18  dnsmasq: DHCPACK 192.168.8.133 da:66:ee:d7:f3:93 POCO-M7-Pro-5G  ✓

The dms not-supported error still appears (as expected — it reflects the client capability, not a bug by itself), but the handshake completes cleanly. No EAPOL loop.

→ Disabling 802.11v is a clean, functional workaround.


Test 2: Switch 2.4 GHz to 802.11n/g Mode

Configuration: hwmode='11ng' on wifi0 (2.4 GHz), 802.11v re-enabled, MLO active.

Result: POCO connected successfully — but with critical side effects:

19:21:56  kernel: wlan_cfg80211_start_ap: vap1:HT CAP setting failed   ← 5 GHz broken
19:21:56  kernel: wlan_cfg80211_start_ap: vap1:VHT CAP setting failed  ← 5 GHz broken
19:21:56  kernel: wlan_cfg80211_start_ap: vap2:HT CAP setting failed   ← 6 GHz broken
19:21:56  kernel: wlan_cfg80211_start_ap: vap2:VHT CAP setting failed  ← 6 GHz broken

Setting 2.4 GHz to 11ng mode causes HT/VHT capability failures on the 5 GHz and 6 GHz interfaces. The 5 GHz and 6 GHz networks degrade significantly. This is not acceptable as a permanent fix on a BE9300 — the 11ng mode had to be reverted immediately (uci set wireless.wifi0.hwmode='11axg').


Update

Based on these tests, the root cause can be refined?

Component Role
MLO active Required to trigger the bug
dms not-supported client Required — triggers the corrupted association path
802.11v / bss_transition=1 The missing third factor — enables the EAPOL loop

The bug is a three-way interaction: MLO + DMS-not-supported client + 802.11v BSS Transition active = corrupted handshake / EAPOL loop.

Disabling any one of these three breaks the loop:

  • MLO off → works (proven previously)
  • 802.11v off → works (proven in Test 1 today)
  • 11ng mode → technically works, but breaks 5/6 GHz capabilities (unusable)

Practical Workaround (Until Driver Fix)

Disabling 802.11v BSS Transition on the 2.4 GHz interfaces:

uci set wireless.wifi2g.bss_transition='0'
uci set wireless.wlanmld2g.bss_transition='0'
uci commit wireless
wifi reload

This preserves full MLO functionality on 5/6 GHz and does not affect 5/6 GHz 802.11v, while resolving the EAPOL loop for DMS-not-supported clients on 2.4 GHz.

I can send the logfiles via direct message if you want.

Thank you for sharing the test results and confirming the temporary workaround!

Final Update: Workaround confirmed — bss_transition=0 on all interfaces

After further testing, setting bss_transition=0 on all six interfaces resolves both issues completely.

Apply the fix:

bash

uci set wireless.wifi2g.bss_transition='0'
uci set wireless.wlanmld2g.bss_transition='0'
uci set wireless.wifi5g.bss_transition='0'
uci set wireless.wlanmld5g.bss_transition='0'
uci set wireless.wifi6g.bss_transition='0'
uci set wireless.wlanmld6g.bss_transition='0'
uci commit wireless
wifi reload

Confirmed results with MLO active:

  • :white_check_mark: POCO M7 Pro 5G connects on 2.4 GHz — no more EAPOL loop

  • :white_check_mark: Lenovo Tab P11 Pro connects on 5 GHz — no more wlan12 reject loop

Important: all six interfaces must be set together.

When we initially only set bss_transition=0 on the 2.4 GHz interfaces (wifi2g + wlanmld2g), the Lenovo Tab P11 Pro broke: it was getting authenticated on wlan12 (the MLO 5 GHz link) but immediately disassociated with no EAPOL, repeating three times before giving up — and never falling back to wlan0 (2.4 GHz). The Lenovo is not a WiFi 7 / MLO-capable device and relies on the regular wlan1 interface. With inconsistent bss_transition values across the MLO bundle, it could not associate on any interface at all.

Setting all six interfaces to bss_transition=0 resolved both the POCO EAPOL loop and the Lenovo association failure simultaneously. Full MLO functionality on 5/6 GHz is preserved.

This remains a workaround. The root cause is a driver-level bug in the interaction between MLO bond-state, BSS Transition Management, and DMS-not-supported clients. A proper fix requires a Qualcomm driver update.