OpenWiFi roam matrix — 424-norelease-dhcp

64 trials · roam mode · 2026-09-15 14:30 · 10 min

What this measured

A single client was driven between every pair of BSSIDs in the testbed and each transition timed from the ROAM command to the CTRL-EVENT-CONNECTED event. Trials were interleaved across pairs rather than run in blocks, so anything drifting over the run spreads across all groups instead of loading onto one.

The comparison that matters is a cross-radio roam within one AP against the same 2.4↔ 5 GHz transition between two APs. The client does identical work either way; the only difference is whether the two radios share one ath11k_base.

ipq5018

Cross-radio roams on the same AP are not materially worse than the same transition between two APs (median 0.93s vs 0.93s, completion 100% vs 100%). On this chipset the shared peer table is not costing anything measurable.

ipq6018

Cross-radio roams on the same AP are not materially worse than the same transition between two APs (median 0.93s vs 0.99s, completion 100% vs 100%). On this chipset the shared peer table is not costing anything measurable.

Dataplane after the roam

Every completed roam is followed by a real DHCP exchange from the client. This is a forwarding test, not a DHCP test: sdan drops a downstream frame whose destination MAC is absent from the MAC table for that VLAN, so a station that is associated and authorized but missing from the table receives nothing — the server answers every message and the client keeps asking. That failure is only visible from the client.

32 of 64 completed roams could not get a lease

These stations finished the 802.11 transition and then had no working dataplane. That is the reported symptom, reproduced.

Chipset / classRoamsGot a leaseNo leasemedian DHCPmax DHCP
ipq5018 / inter-ap-cross-band2424 (100%)00.30s0.40s
ipq6018 / inter-ap-cross-band240 (0%)24——
ipq6018 / intra-ap-cross-radio80 (0%)8——
ipq5018 / intra-ap-cross-radio88 (100%)00.30s0.40s

Roams that completed but had no dataplane

#ClassFromToRoamReason
2inter-ap-cross-band186h-94/2.4188n-96/51.11sno-lease(rc=1)
5inter-ap-cross-band186h-95/5188n-99/2.40.64sno-lease(rc=1)
6inter-ap-cross-band188n-99/2.4188n-96/51.15sno-lease(rc=1)
7inter-ap-cross-band188n-99/5188n-96/2.40.51sno-lease(rc=1)
8intra-ap-cross-radio188n-99/5188n-99/2.40.66sno-lease(rc=1)
10inter-ap-cross-band186h-94/2.4188n-99/51.82sno-lease(rc=1)
11intra-ap-cross-radio188n-96/2.4188n-96/51.14sno-lease(rc=1)
14intra-ap-cross-radio188n-96/5188n-96/2.40.67sno-lease(rc=1)
16intra-ap-cross-radio188n-99/2.4188n-99/50.93sno-lease(rc=1)
17inter-ap-cross-band186h-94/5188n-96/2.40.63sno-lease(rc=1)
18inter-ap-cross-band186h-95/5188n-96/2.40.89sno-lease(rc=1)
20inter-ap-cross-band188n-96/5188n-99/2.40.99sno-lease(rc=1)
21inter-ap-cross-band186h-94/5188n-99/2.40.66sno-lease(rc=1)
28inter-ap-cross-band186h-95/2.4188n-99/50.93sno-lease(rc=1)
29inter-ap-cross-band186h-95/2.4188n-96/52.01sno-lease(rc=1)
32inter-ap-cross-band188n-96/2.4188n-99/50.73sno-lease(rc=1)
34inter-ap-cross-band188n-96/2.4188n-99/50.68sno-lease(rc=1)
36intra-ap-cross-radio188n-96/2.4188n-96/51.20sno-lease(rc=1)
38inter-ap-cross-band188n-99/5188n-96/2.40.51sno-lease(rc=1)
41inter-ap-cross-band186h-95/2.4188n-99/52.00sno-lease(rc=1)
43intra-ap-cross-radio188n-99/5188n-99/2.40.72sno-lease(rc=1)
44inter-ap-cross-band186h-95/2.4188n-96/51.06sno-lease(rc=1)
49inter-ap-cross-band186h-95/5188n-96/2.41.73sno-lease(rc=1)
50inter-ap-cross-band186h-95/5188n-99/2.41.74sno-lease(rc=1)
54inter-ap-cross-band186h-94/2.4188n-99/51.79sno-lease(rc=1)
56intra-ap-cross-radio188n-96/5188n-96/2.40.90sno-lease(rc=1)
58inter-ap-cross-band186h-94/5188n-96/2.40.74sno-lease(rc=1)
59inter-ap-cross-band188n-96/5188n-99/2.40.89sno-lease(rc=1)
61inter-ap-cross-band186h-94/2.4188n-96/52.04sno-lease(rc=1)
62inter-ap-cross-band186h-94/5188n-99/2.40.74sno-lease(rc=1)
63intra-ap-cross-radio188n-99/2.4188n-99/50.94sno-lease(rc=1)
64inter-ap-cross-band188n-99/2.4188n-96/51.02sno-lease(rc=1)

By roam class

GroupTrialsCompleted≤2s≤5smedianp90max
inter-ap-cross-band
The same 2.4↔ 5 GHz transition, but between two APs — separate ath11k instances, so no shared peer table. The control that matters.
4848 (100%)45 (94%)48 (100%)0.93s1.87s2.06s
intra-ap-cross-radio
Both radios of one AP. On a shared-peer-table SoC this is the only path where a cross-radio peer delete can be attributed to the wrong radio.
1616 (100%)16 (100%)16 (100%)0.93s1.14s1.20s

Chipset × class

GroupTrialsCompleted≤2s≤5smedianp90max
ipq5018 / inter-ap-cross-band2424 (100%)23 (96%)24 (100%)0.93s1.86s2.06s
ipq5018 / intra-ap-cross-radio88 (100%)8 (100%)8 (100%)0.93s1.11s1.11s
ipq6018 / inter-ap-cross-band2424 (100%)22 (92%)24 (100%)0.99s2.00s2.04s
ipq6018 / intra-ap-cross-radio88 (100%)8 (100%)8 (100%)0.93s1.20s1.20s

By BSSID pair

GroupTrialsCompleted≤2s≤5smedianp90max
186h-94/2.4 → 186h-94/522 (100%)2 (100%)2 (100%)1.11s1.11s1.11s
186h-94/2.4 → 186h-95/522 (100%)2 (100%)2 (100%)1.15s1.15s1.15s
186h-94/2.4 → 188n-96/522 (100%)1 (50%)2 (100%)2.04s2.04s2.04s
186h-94/2.4 → 188n-99/522 (100%)2 (100%)2 (100%)1.82s1.82s1.82s
186h-94/5 → 186h-94/2.422 (100%)2 (100%)2 (100%)0.90s0.90s0.90s
186h-94/5 → 186h-95/2.422 (100%)2 (100%)2 (100%)1.80s1.80s1.80s
186h-94/5 → 188n-96/2.422 (100%)2 (100%)2 (100%)0.74s0.74s0.74s
186h-94/5 → 188n-99/2.422 (100%)2 (100%)2 (100%)0.74s0.74s0.74s
186h-95/2.4 → 186h-94/522 (100%)2 (100%)2 (100%)1.08s1.08s1.08s
186h-95/2.4 → 186h-95/522 (100%)2 (100%)2 (100%)0.95s0.95s0.95s
186h-95/2.4 → 188n-96/522 (100%)1 (50%)2 (100%)2.01s2.01s2.01s
186h-95/2.4 → 188n-99/522 (100%)2 (100%)2 (100%)2.00s2.00s2.00s
186h-95/5 → 186h-94/2.422 (100%)2 (100%)2 (100%)1.86s1.86s1.86s
186h-95/5 → 186h-95/2.422 (100%)2 (100%)2 (100%)0.93s0.93s0.93s
186h-95/5 → 188n-96/2.422 (100%)2 (100%)2 (100%)1.73s1.73s1.73s
186h-95/5 → 188n-99/2.422 (100%)2 (100%)2 (100%)1.74s1.74s1.74s
188n-96/2.4 → 186h-94/522 (100%)2 (100%)2 (100%)1.08s1.08s1.08s
188n-96/2.4 → 186h-95/522 (100%)2 (100%)2 (100%)1.04s1.04s1.04s
188n-96/2.4 → 188n-96/522 (100%)2 (100%)2 (100%)1.20s1.20s1.20s
188n-96/2.4 → 188n-99/522 (100%)2 (100%)2 (100%)0.73s0.73s0.73s
188n-96/5 → 186h-94/2.422 (100%)2 (100%)2 (100%)0.93s0.93s0.93s
188n-96/5 → 186h-95/2.422 (100%)2 (100%)2 (100%)0.92s0.92s0.92s
188n-96/5 → 188n-96/2.422 (100%)2 (100%)2 (100%)0.90s0.90s0.90s
188n-96/5 → 188n-99/2.422 (100%)2 (100%)2 (100%)0.99s0.99s0.99s
188n-99/2.4 → 186h-94/522 (100%)1 (50%)2 (100%)2.06s2.06s2.06s
188n-99/2.4 → 186h-95/522 (100%)2 (100%)2 (100%)1.11s1.11s1.11s
188n-99/2.4 → 188n-96/522 (100%)2 (100%)2 (100%)1.15s1.15s1.15s
188n-99/2.4 → 188n-99/522 (100%)2 (100%)2 (100%)0.94s0.94s0.94s
188n-99/5 → 186h-94/2.422 (100%)2 (100%)2 (100%)1.87s1.87s1.87s
188n-99/5 → 186h-95/2.422 (100%)2 (100%)2 (100%)0.87s0.87s0.87s
188n-99/5 → 188n-96/2.422 (100%)2 (100%)2 (100%)0.51s0.51s0.51s
188n-99/5 → 188n-99/2.422 (100%)2 (100%)2 (100%)0.72s0.72s0.72s

Failures

Every trial completed.

Testbed

BSSIDAPChipsetBandFreq
d4:ba:ba:ab:ba:ab188n-99ipq60182.4 GHz2437 MHz
d4:ba:ba:ab:ba:aa188n-99ipq60185 GHz5785 MHz
d4:ba:ba:ab:ce:6d188n-96ipq60182.4 GHz2437 MHz
d4:ba:ba:ab:ce:6c188n-96ipq60185 GHz5180 MHz
d4:ba:ba:a4:05:ca186h-94ipq50182.4 GHz2462 MHz
d4:ba:ba:a4:05:cb186h-94ipq50185 GHz5785 MHz
d4:ba:ba:a3:db:fa186h-95ipq50182.4 GHz2412 MHz
d4:ba:ba:a3:db:fb186h-95ipq50185 GHz5220 MHz
SSID
OW mPSK WPA2
Client MAC
02:03:7f:12:97:21
Client iface
sta0
Trials per pair
2
Shuffle seed
1
Roam cap (s)
25.0

Chipset topology is read from sysfs, not inferred from the model name: on IPQ6018 both phy0 and phy1 resolve to soc/c000000.wifi, while on IPQ5018 phy1 resolves to soc:wifi1@c000000 — a separate device with its own peer table.

Method

All trials

Expand 64 trials
#RoundClassFromToLatencyOutcome
11inter-ap-cross-band186h-95/2.4186h-94/51.08scompleted
21inter-ap-cross-band186h-94/2.4188n-96/51.11scompleted
31inter-ap-cross-band188n-96/2.4186h-95/51.04scompleted
41inter-ap-cross-band188n-96/2.4186h-94/51.05scompleted
51inter-ap-cross-band186h-95/5188n-99/2.40.64scompleted
61inter-ap-cross-band188n-99/2.4188n-96/51.15scompleted
71inter-ap-cross-band188n-99/5188n-96/2.40.51scompleted
81intra-ap-cross-radio188n-99/5188n-99/2.40.66scompleted
91inter-ap-cross-band188n-99/5186h-95/2.40.87scompleted
101inter-ap-cross-band186h-94/2.4188n-99/51.82scompleted
111intra-ap-cross-radio188n-96/2.4188n-96/51.14scompleted
121inter-ap-cross-band186h-94/2.4186h-95/51.09scompleted
131inter-ap-cross-band186h-95/5186h-94/2.41.86scompleted
141intra-ap-cross-radio188n-96/5188n-96/2.40.67scompleted
151intra-ap-cross-radio186h-94/5186h-94/2.40.90scompleted
161intra-ap-cross-radio188n-99/2.4188n-99/50.93scompleted
171inter-ap-cross-band186h-94/5188n-96/2.40.63scompleted
181inter-ap-cross-band186h-95/5188n-96/2.40.89scompleted
191inter-ap-cross-band188n-99/5186h-94/2.40.92scompleted
201inter-ap-cross-band188n-96/5188n-99/2.40.99scompleted
211inter-ap-cross-band186h-94/5188n-99/2.40.66scompleted
221inter-ap-cross-band186h-94/5186h-95/2.40.76scompleted
231inter-ap-cross-band188n-96/5186h-94/2.40.93scompleted
241inter-ap-cross-band188n-96/5186h-95/2.40.92scompleted
251inter-ap-cross-band188n-99/2.4186h-95/50.91scompleted
261intra-ap-cross-radio186h-95/5186h-95/2.40.93scompleted
271inter-ap-cross-band188n-99/2.4186h-94/50.93scompleted
281inter-ap-cross-band186h-95/2.4188n-99/50.93scompleted
291inter-ap-cross-band186h-95/2.4188n-96/52.01scompleted
301intra-ap-cross-radio186h-95/2.4186h-95/50.95scompleted
311intra-ap-cross-radio186h-94/2.4186h-94/51.11scompleted
321inter-ap-cross-band188n-96/2.4188n-99/50.73scompleted
332inter-ap-cross-band186h-95/2.4186h-94/50.88scompleted
342inter-ap-cross-band188n-96/2.4188n-99/50.68scompleted
352inter-ap-cross-band186h-94/5186h-95/2.41.80scompleted
362intra-ap-cross-radio188n-96/2.4188n-96/51.20scompleted
372inter-ap-cross-band188n-99/2.4186h-94/52.06scompleted
382inter-ap-cross-band188n-99/5188n-96/2.40.51scompleted
392intra-ap-cross-radio186h-94/2.4186h-94/50.87scompleted
402intra-ap-cross-radio186h-95/5186h-95/2.40.85scompleted
412inter-ap-cross-band186h-95/2.4188n-99/52.00scompleted
422intra-ap-cross-radio186h-94/5186h-94/2.40.64scompleted
432intra-ap-cross-radio188n-99/5188n-99/2.40.72scompleted
442inter-ap-cross-band186h-95/2.4188n-96/51.06scompleted
452inter-ap-cross-band186h-94/2.4186h-95/51.15scompleted
462inter-ap-cross-band188n-96/2.4186h-94/51.08scompleted
472inter-ap-cross-band188n-99/2.4186h-95/51.11scompleted
482inter-ap-cross-band188n-96/2.4186h-95/50.71scompleted
492inter-ap-cross-band186h-95/5188n-96/2.41.73scompleted
502inter-ap-cross-band186h-95/5188n-99/2.41.74scompleted
512inter-ap-cross-band188n-96/5186h-95/2.40.59scompleted
522inter-ap-cross-band188n-96/5186h-94/2.40.74scompleted
532inter-ap-cross-band188n-99/5186h-95/2.40.77scompleted
542inter-ap-cross-band186h-94/2.4188n-99/51.79scompleted
552intra-ap-cross-radio186h-95/2.4186h-95/50.93scompleted
562intra-ap-cross-radio188n-96/5188n-96/2.40.90scompleted
572inter-ap-cross-band188n-99/5186h-94/2.41.87scompleted
582inter-ap-cross-band186h-94/5188n-96/2.40.74scompleted
592inter-ap-cross-band188n-96/5188n-99/2.40.89scompleted
602inter-ap-cross-band186h-95/5186h-94/2.40.89scompleted
612inter-ap-cross-band186h-94/2.4188n-96/52.04scompleted
622inter-ap-cross-band186h-94/5188n-99/2.40.74scompleted
632intra-ap-cross-radio188n-99/2.4188n-99/50.94scompleted
642inter-ap-cross-band188n-99/2.4188n-96/51.02scompleted