The Linux 7.0 kernel addresses a critical performance issue in Qualcomm's Ath11k and Ath12k WiFi drivers that has caused throughput degradation since 2019.
The Linux kernel development team has sent out networking subsystem fixes for the upcoming Linux 7.0 release, including a critical patch addressing a performance bug affecting Qualcomm's Ath11k and Ath12k WiFi drivers that has existed since their initial upstreaming.
The Problem: Wrong Aggregation Session Termination
The core issue involves incorrect handling of AMPDU (Aggregated MAC Protocol Data Unit) sessions in the Qualcomm drivers. During ongoing traffic, a request to stop an AMPDU session for one TID (Traffic Identifier) could incorrectly affect other active sessions.
The patch description explains the technical details:
"During ongoing traffic, a request to stop an AMPDU session for one TID could incorrectly affect other active sessions. This can happen because an incorrect TID reference would be passed when updating the BA session state, causing the wrong session to be stopped. As a result, the affected session would be reduced to a minimal BA size, leading to a noticeable throughput degradation."
The root cause is in the function ath11k_dp_rx_ampdu_stop(), which was passing peer->tx_tid (the base address of the array corresponding to TID 0) instead of the correct value &peer->rx_tid[params->tid] that accounts for different TID numbers.
Performance Impact
This bug has been silently degrading WiFi performance for Qualcomm-based devices since 2019 when Ath11k was first added to the Linux kernel, and since 2022 for the newer Ath12k driver. Users with Qualcomm WiFi hardware may have experienced:
- Reduced throughput under heavy network loads
- Inconsistent performance across different applications
- Poorer performance compared to similar Intel or Broadcom hardware
- Suboptimal performance in multi-device environments
Affected Hardware
The bug affects all WiFi chips using the Qualcomm Ath11k and Ath12k drivers, including:
- Qualcomm QCA6390 (common in many laptops)
- Qualcomm QCN9074 (high-performance WiFi 6/6E)
- Qualcomm QCA6490 (WiFi 6)
- Future Qualcomm chips using these driver architectures
The Fix
The solution involves correcting the argument passed from ath11k_dp_rx_ampdu_stop() to ath11k_peer_rx_tid_reo_update() during a stop AMPDU session. By ensuring the correct TID reference is used, the proper aggregation session is terminated, maintaining optimal throughput across all active sessions.
Testing and Validation
While the fix is now available in the Linux 7.0-rc7 kernel, users with supported hardware should expect performance improvements once the fix is backported to stable kernel releases. Testing methodology would involve:
- Baseline throughput measurements using tools like
iperf3ornetperf - Comparison of performance before and after the kernel update
- Stress testing with multiple concurrent connections
- Evaluation of real-world applications like video streaming, file transfers, and online gaming
Build Recommendations
For users with affected Qualcomm WiFi hardware:
- Desktop users: Consider upgrading to Linux 7.0 when it's released, or backport the fix if you're comfortable compiling kernel modules
- Laptop users: Wait for the official backport to your distribution's stable kernel
- Homelab builders: If running custom kernels, apply the patch from the Linux networking pull request
- Enterprise environments: Test the fix in a staging environment before deploying to production systems
Comparison with Other WiFi Solutions
This fix brings Qualcomm's Linux driver performance on par with other WiFi solutions:
- Intel: Has had mature driver support with good aggregation handling
- Broadcom: Generally performs well with proper BA session management
- Realtek: Mixed performance, but newer chips show improved driver quality
Future Considerations
This bug fix highlights the importance of proper testing for complex networking features like AMPDU aggregation. As WiFi standards evolve to WiFi 7 and beyond, the complexity of these drivers will only increase, making thorough testing even more critical.
For those interested in the technical details, the patches can be found in the Linux kernel networking subsystem in the latest net-next tree.
The fix is expected to be backported to supported stable kernel versions in the coming days, bringing improved performance to users of Qualcomm WiFi hardware across various Linux distributions.

Comments
Please log in or register to join the discussion