[PATCH] tests: FT over DS to a legacy AP with WMM

Raphaël Mélotte raphael.melotte at mind.be
Tue Oct 27 08:10:37 PDT 2026


Roam with FT over the DS from an HT AP to an AP that has WMM, but no HT.

Signed-off-by: Raphaël Mélotte <raphael.melotte at mind.be>
---
Note that the kernel rejects the association with -EINVAL since commit
7d8b02592d52 (v6.9).
It is meant to be a regression test to make sure this case keeps on
working after it's fixed.

 tests/hwsim/test_ap_ft.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tests/hwsim/test_ap_ft.py b/tests/hwsim/test_ap_ft.py
index 29bec3de9..427610872 100644
--- a/tests/hwsim/test_ap_ft.py
+++ b/tests/hwsim/test_ap_ft.py
@@ -719,6 +719,24 @@ def test_ap_ft_over_ds(dev, apdev):
     check_mib(dev[0], [("dot11RSNAAuthenticationSuiteRequested", "00-0f-ac-4"),
                        ("dot11RSNAAuthenticationSuiteSelected", "00-0f-ac-4")])
 
+def test_ap_ft_over_ds_to_legacy(dev, apdev):
+    """WPA2-PSK-FT AP over DS from HT AP to legacy AP with WMM"""
+    ssid = "test-ft"
+    passphrase = "12345678"
+
+    params = ft_params1(ssid=ssid, passphrase=passphrase)
+    hapd0 = hostapd.add_ap(apdev[0], params)
+    # The target AP has no HT, but it has WMM. Set wmm_enabled explicitly,
+    # because the default value follows ieee80211n.
+    params = ft_params2(ssid=ssid, passphrase=passphrase)
+    params["ieee80211n"] = "0"
+    params["wmm_enabled"] = "1"
+    hapd1 = hostapd.add_ap(apdev[1], params)
+
+    dev[0].flush_scan_cache()
+    run_roams(dev[0], apdev, hapd0, hapd1, ssid, passphrase, over_ds=True,
+              force_initial_conn_to_first_ap=True)
+
 def cleanup_ap_ft_separate_hostapd():
     subprocess.call(["brctl", "delif", "br0ft", "veth0"],
                     stderr=open('/dev/null', 'w'))
-- 
2.54.0




More information about the Hostap mailing list