openwrt / openwrt/openwrt

qualcommax/ipq50xx: Redmi AX5400 ath11k has no NSS Wi-Fi offload support, Wi-Fi throughput much lower than PHY rate

Open
#23,798 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
28.5k
Forks
13k
PR merge metrics
PR metrics pending

Description

Describe the bug

On a Xiaomi Redmi AX5400 (qualcommax/ipq50xx, IPQ5018 + QCN9074), 5 GHz Wi-Fi associates correctly at Wi-Fi 6 HE80 rates, but actual Wi-Fi throughput is much lower than expected. Runtime inspection shows that the ath11k module has no nss_offload parameter, so NSS Wi-Fi offload support is not compiled in.

This looks like a missing feature / acceleration path for ath11k on qualcommax/ipq50xx, rather than a normal wireless configuration issue. Wired throughput is normal, and the station PHY rate is high.

I reproduced this on an ImmortalWrt master build, but I am filing here because the relevant target/driver stack is inherited from OpenWrt qualcommax/ipq50xx. If this should be tracked only downstream, please let me know.

Hardware
  • Device: Xiaomi Redmi AX5400 / Redmi AX5400
  • Target: qualcommax/ipq50xx
  • SoC / radios: IPQ5018 + QCN6024/QCN9024/QCN9074 class ath11k radio
  • Client tested: Wi-Fi 6 2x2 client, connected to 5 GHz SSID
Firmware / build
  • Source tree used: ImmortalWrt master
  • Commit tested: f95f557d0478458d07b091007411895b22d7522d
  • Kernel on router: Linux cola 6.12.92 #0 SMP Fri Jun 12 03:56:12 2026 aarch64 GNU/Linux
Wireless configuration tested

5 GHz was configured to a stable non-DFS HE80 channel:

wireless.radio1.type='mac80211'
wireless.radio1.band='5g'
wireless.radio1.channel='36'
wireless.radio1.htmode='HE80'
wireless.radio1.country='US'
wireless.radio1.disabled='0'

Firewall offload was also tested with software flow offload enabled and hardware flow offload disabled:

firewall.@defaults[0].flow_offloading='1'
firewall.@defaults[0].flow_offloading_hw='0'
Observed behavior

The client associates at a high PHY rate, for example:

Station 14:ac:60:b3:97:d1 (on phy1-ap0)
  signal: -66 dBm
  tx bitrate: 1080.6 MBit/s 80MHz HE-MCS 10 HE-NSS 2
  rx bitrate: 1200.9 MBit/s 80MHz HE-MCS 11 HE-NSS 2
  expected throughput: 887.703Mbps

However, practical Wi-Fi throughput is only around 300-500 Mbit/s in iperf3/speed tests, while wired networking is normal.

NSS / module inspection

ath11k does not expose the NSS offload parameter:

cat /sys/module/ath11k/parameters/nss_offload
# missing / no such parameter

Loaded modules only show qca_nss_dp, not the full NSS Wi-Fi acceleration stack:

ath11k                475136  2 ath11k_pci,ath11k_ahb
ath11k_ahb             24576  0
ath11k_pci             20480  0
cfg80211              364544  2 ath11k,mac80211
mac80211              700416  1 ath11k
qca_nss_dp             40960  0
qca_ssdk              516096  1 qca_nss_dp

There is no qca-nss-drv, qca-nss-ecm, SFE/shortcut-fe, or ath11k NSS Wi-Fi offload path loaded.

Source inspection

In the tested tree, qualcommax/ipq50xx includes kmod-qca-nss-dp, but I could not find the full NSS Wi-Fi offload integration for ath11k, such as:

  • ATH11K_NSS_SUPPORT
  • MAC80211_NSS_SUPPORT
  • qca-nss-drv
  • qca-nss-ecm
  • ath11k NSS patches providing nss_offload=1

For comparison, external NSS-focused trees have ath11k NSS patches and nss_offload support, but they do not appear to provide a complete current OpenWrt qualcommax/ipq50xx / Redmi AX5400 integration.

Expected behavior

For a 2x2 HE80 client associated at ~1201 Mbit/s PHY, Wi-Fi throughput should be much closer to the reported expected throughput and should not be limited to roughly 300-500 Mbit/s by the CPU/mac80211 datapath if NSS Wi-Fi offload is intended to be supported on this target.

Question

Is NSS Wi-Fi offload for ath11k on qualcommax/ipq50xx / IPQ5018 + QCN9074 expected to be supported upstream? If not, would adding qca-nss-drv/qca-nss-ecm plus ath11k NSS offload patches for this target be acceptable, or is this outside OpenWrt upstream scope?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the qualcommax/ipq50xx target package definitions and the ath11k build and patch integration, then compare the tested tree with the external NSS-focused trees mentioned in the report. Check whether ATH11K_NSS_SUPPORT, MAC80211_NSS_SUPPORT, qca-nss-drv, qca-nss-ecm, and the nss_offload parameter are supported for this target. Done means establishing upstream scope and a complete, tested offload path if it is accepted.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
embedded-iot, networking, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.