Quick Answer: Wi-Fi 7's Multi-Link Operation (MLO) can dramatically reduce packet jitter in streaming applications β but only if you tune it correctly. The default MLO configuration on most routers creates scheduling conflicts between 6 GHz and 5 GHz bands. This guide explains how to identify, diagnose, and surgically fix jitter at the driver, firmware, and RF planning level.
If you've upgraded to a Wi-Fi 7 router β a MediaTek Filogic 880 or Qualcomm FastConnect 7800 based unit β and you're still seeing jitter spikes, perhaps you should check if your Roku is buffering; if so, consider these 7 quick fixes for smooth 4K streaming to improve your video sessions. The problem is real, it's documented, and it's frustrating in a very specific way: everything looks like it should work. The spec sheet promises sub-millisecond latency. The marketing materials show gaming with zero lag. And then you open a Wireshark capture or a ping plot and you see a jitter spike every 4β6 seconds like clockwork. Sometimes 12ms. Sometimes 40ms. Occasionally something embarrassing like 180ms that makes your video call look like a 2008 Skype session from a dial-up connection.
This is the operational reality of Wi-Fi 7 in mid-2024 through 2025. The technology is genuinely impressive on paper. In practice, it's going through the classic maturation phase that every major wireless standard goes through β where the theoretical gains collide with real-world RF environments, inconsistent firmware implementations, driver immaturity on client devices, and the fact that MLO is, architecturally speaking, one of the most complex things the 802.11be standard has ever attempted.
The jitter problem specifically has a few root causes, and they're not all the same. A careful diagnosis matters here because the fix for one cause will actively make another cause worse. This guide is structured around that diagnostic reality, much like how professionals learn to secure their smart home via managed security services.

What MLO Actually Does β And Why Jitter Happens By Design
Before diving into the tuning, it's worth being precise about what Multi-Link Operation is doing at the protocol level, because a lot of the popular explanations online are incomplete in ways that lead to bad configuration decisions.
MLO allows a single Wi-Fi 7 device to maintain simultaneous associations on multiple bands and channels. The spec defines several modes: STR (Simultaneous Transmit and Receive), NSTR (Non-Simultaneous Transmit and Receive), eMLSR (Enhanced Multi-Link Single Radio), and eMLSR with dynamic switching. Most consumer hardware in the current generation ships in either NSTR mode or eMLSR mode, not full STR β and this matters enormously for jitter behavior.
In NSTR mode, the access point and client coordinate transmission across links, but there are constraints on simultaneous transmission because the radio front-end can't fully isolate the bands. In practice, this means the scheduler has to serialize certain packet transmissions even when the spec implies they could be parallel. When you look at the resulting traffic pattern in Wireshark, you see small but consistent gaps β pipeline bubbles β in the packet flow that translate directly to application-layer jitter.
In eMLSR mode (which is where most of the current ecosystem actually operates), the device can switch between links dynamically but uses a single radio chain in an active state at any time, with the others in a low-power listen state. The link switching latency β the time it takes to move from one link to another after receiving a trigger frame β is supposed to be on the order of a few microseconds. But firmware implementations, particularly on the client side, often introduce latency in the 500Β΅s to 2ms range during this transition. In a streaming context, when you're sending 20β40 UDP packets per second, even a 1ms link-switch stall creates a perceptible jitter event.
The deeper problem is that most of the current Wi-Fi 7 access points struggle with complex smart home integrations, which is why homeowners often research if their smart home is secure through new managed security strategies. TP-Link Archer BE900, ASUS ROG Rapture GT-BE98, Netgear Orbi 970 β were designed and firmware-tuned primarily against Wi-Fi 7 client devices that didn't exist in volume when the APs shipped. The interoperability testing was mostly done against pre-production client hardware. The MLO scheduler parameters were baked in based on that testing. And then real-world client devices shipped with subtly different link management behavior, and the scheduler assumptions broke in specific RF conditions.
Diagnosing Your Jitter: Not All Spikes Are the Same
The first rule of MLO jitter debugging is: measure before you change anything. This sounds obvious, but a significant portion of forum threads on r/HomeNetworking, r/wifi, and the OpenWrt mailing lists involve people who changed four things simultaneously and can't figure out which one helped or hurt.
Establishing a Jitter Baseline
Use ping with high frequency and log it:
ping -i 0.1 -c 1000 192.168.1.1 | tee jitter_baseline.txt
The gateway ping is useful but limited. For streaming-specific jitter, use a tool that measures inter-packet arrival variance at the application layer. iperf3 with UDP mode gives you jitter as reported by the receiver:
# On receiver (server side):
iperf3 -s
# On sender (client side):
iperf3 -c 192.168.1.x -u -b 50M -t 60 --length 1400
The --length 1400 flag is important β it sizes packets close to typical streaming MTU, so you're measuring jitter in the operational envelope your actual traffic lives in, not synthetic large-block transfers.
Watch the jitter report. If you see periodic spikes β especially if they repeat at regular intervals β that's usually scheduler-related, not RF interference. Random jitter that clusters around specific times of day is more likely to be neighbor interference or duty-cycle conflicts on shared spectrum.
The 4-Second Spike Pattern
One of the most commonly reported jitter signatures in Wi-Fi 7 deployments β and one that has its own GitHub issue thread in several open-source driver repositories β is the "4-second periodic spike." It manifests as otherwise clean traffic with a jitter spike approximately every 4 seconds, typically 15β40ms depending on client hardware.
This specific pattern is almost always related to the MLO link assessment timer. The AP and client periodically reassess link quality to decide whether to migrate traffic between links. The default assessment interval in many firmware implementations is 4 seconds. During the assessment, the scheduler briefly holds packets in queue while link metrics are being evaluated. That hold manifests as a jitter spike.
The fix here is AP-side: reduce the link assessment interval (if your firmware exposes it) or β in some cases β actually increase it, depending on how your RF environment behaves. Counter-intuitive but documented.

The Band Steering Conflict: 6 GHz vs. 5 GHz vs. 2.4 GHz
Most Wi-Fi 7 routers ship with a combined SSID that uses intelligent band steering to direct clients to the optimal band. MLO is supposed to make this more transparent and seamless. In practice, the legacy band steering logic and the MLO link management logic often conflict with each other in ways that firmware teams are still sorting out.
The specific conflict: band steering logic may try to migrate a client from 5 GHz to 6 GHz (or vice versa) using a BSS Transition Management (BTM) request, while the MLO subsystem simultaneously believes the client is stable on its current link set and schedules a burst of queued packets. These two operations β BTM-initiated migration and MLO packet burst β can collide at the queue level, causing a buffer stall that manifests as a 20β80ms jitter spike.
This is documented behavior. In the ASUS firmware discussion threads (their Merlin-based community firmware has particularly active users), several users have independently reproduced this with packet captures and traced it to the BTM + MLO scheduler collision. The workaround in Merlin firmware is to disable band steering entirely and let MLO handle link selection autonomously:
# In ASUS Merlin nvram:
nvram set smart_connect_x=0
nvram commit
service restart_wireless
This is not an official recommendation from ASUS. It's a community-documented workaround. On stock firmware, you're working with whatever the UI exposes, which varies by model and firmware version.
6 GHz Channel Planning and Co-Channel Interference
The 6 GHz band is genuinely cleaner than 5 GHz in most residential deployments right now, but "cleaner" is doing a lot of work there. In dense apartment buildings or office environments, the 6 GHz band is filling up faster than expected. Automated Frequency Coordination (AFC) for standard power operation adds latency to channel switching that can interact poorly with MLO's link assessment.
For indoor (Low Power Indoor, LPI) operation, 6 GHz devices don't require AFC. But they're also limited to lower EIRP. In a home with thick concrete walls, LPI operation on 6 GHz may result in a weaker link than 5 GHz, causing the MLO scheduler to constantly oscillate between links looking for stability it never quite finds. This shows up as chronic low-level jitter β not the dramatic spike pattern, but a floor of 5β15ms jitter that never goes away.
Manual channel selection is the first thing to try. On most current routers, the 6 GHz radio defaults to automatic channel selection with a preference for the upper channels (U-NII-5 and U-NII-7 bands). In environments with strong 5 GHz coverage from neighbors, manually selecting a 320 MHz channel in the lower U-NII-5 range and locking it there eliminates the periodic channel rescanning that contributes to jitter.
# OpenWrt UCI config (for Mediatek-based routers with mt76 driver):
uci set wireless.radio2.channel='37'
uci set wireless.radio2.htmode='HE320'
uci set wireless.radio2.noscan='1'
uci commit wireless
wifi reload
The noscan=1 parameter is significant. It disables the background scanning behavior that helps with channel selection but creates interrupt-driven context switches in the driver that inject microsecond-level delays into the packet processing pipeline.
MLO Scheduler Tuning: What You Can Actually Change
This is where the operational reality gets uncomfortable: on most consumer Wi-Fi 7 hardware, the MLO scheduler is largely opaque. You can't directly tune the link assessment interval, the queue depth thresholds, or the traffic classification engine through a standard UI. What you can do varies significantly by platform.
Qualcomm FastConnect 7800 / IPQ9574 Platforms
Qualcomm's platform (used in routers like the Netgear BE19000 and various enterprise units) exposes more tunables than most through their QCA configuration framework. The relevant parameters are in the qca-cfg80211 toolchain:
- MLO link margin: The RSSI differential threshold that triggers link preference switching. Default is typically 5dB. Reducing this to 2β3dB reduces unnecessary link switching but can cause the scheduler to stay on a marginally worse link longer.
- MLO TSPEC scheduling priority: Traffic specification negotiation for video/audio streams. By default, video traffic gets elevated priority in the MLO scheduler. Misconfigured QoS on the client side can override this.
On open-source builds using the ath12k driver (which is the Linux mainline driver for Wi-Fi 7 Qualcomm hardware), some of these parameters are accessible via debugfs:
# Check current MLO state:
cat /sys/kernel/debug/ath12k/*/mac0/mlo_state
# Note: exact paths vary by kernel version and build configuration
# This is not universally available on production firmware
It's worth noting that ath12k's MLO support in the Linux kernel has been under active development throughout 2024. Several commits in the kernel mailing list (lkml.org) explicitly address jitter-related issues with MLO link scheduling. If you're running a custom OpenWrt build, tracking mainline ath12k patches rather than waiting for vendor backports can legitimately improve jitter behavior.
MediaTek Filogic 880 Platforms
The MT7996 driver (mt76 in OpenWrt) has had its own MLO growing pains. The mt76 mailing list and associated GitHub repository (openwrt/mt76) have several open issues related to MLO scheduler behavior, with issue #3621 and related threads specifically discussing periodic jitter under UDP streaming loads. The MediaTek engineering team has engaged with the mt76 maintainers on some of these, but the interaction has been characteristically slow β vendor firmware fixes and open-source driver fixes move on different timelines, and users stuck on stock firmware are often waiting for a future release that may or may not include the relevant patches.

QoS Configuration for Streaming Traffic Under MLO
Getting QoS right in a Wi-Fi 7 + MLO environment is more nuanced than on previous Wi-Fi generations because the traffic classification now has to work across multiple links simultaneously.
WMM and the MLO Queue Mapping Problem
Wi-Fi Multimedia (WMM) defines four access categories: Background (BK), Best Effort (BE), Video (VI), and Voice (VO). In a single-link Wi-Fi 6 or 6E environment, these map cleanly to hardware queues. In an MLO environment, each link has its own set of WMM queues, and the scheduler has to decide which link's queue gets which packets.
The typical failure mode: a streaming application marks its traffic as DSCP AF41 (Video class). The AP's MLO scheduler picks this up, elevates it to the VI category, and tries to route it preferentially to the 6 GHz link because 6 GHz has higher throughput. But if the 6 GHz link is at the edge of coverage, the retransmission rate on that link is elevated. The scheduler keeps routing VI traffic there because it's following the QoS priority, not the link quality metric. The result is higher jitter than if the traffic were on 5 GHz with lower WMM priority.
The fix requires either:
- Overriding DSCP marking on the client side to be less aggressive, letting the MLO scheduler make link decisions based purely on link quality metrics rather than traffic class.
- Adjusting the WMM-to-link mapping on the AP side, if your firmware supports it.
For option 1, on Linux clients:
# Reset DSCP marking for a specific interface
tc qdisc add dev wlan0 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
For most streaming applications, having the MLO scheduler make autonomous decisions based on link quality β without the interference of aggressive QoS markings β produces better real-world jitter than any manually tuned QoS configuration. This is counterintuitive for network engineers trained on enterprise QoS philosophy, but it reflects the reality that the MLO scheduler was designed around.
OFDMA and MLO: The Scheduling Overhead Problem
Wi-Fi 7 inherits OFDMA from Wi-Fi 6/6E, but OFDMA under MLO adds scheduling complexity that has direct jitter implications. The AP has to coordinate OFDMA resource unit (RU) allocation across multiple links simultaneously. In scenarios with mixed client types β some MLO-capable, some only Wi-Fi 6E, some only Wi-Fi 5 β the OFDMA scheduler has to serve all of them without the link-coordination overhead of MLO making the non-MLO clients' experience worse.
In practice, having a significant population of legacy clients on the same AP as Wi-Fi 7 MLO clients creates scheduler contention that elevates jitter for the MLO clients. The MLO clients effectively end up waiting for OFDMA scheduling windows that have to accommodate legacy client constraints.
The semi-documented workaround here is to create a separate
