Linux-mediatek Archive on lore.kernel.org
 help / color / mirror / Atom feed
* mt7925e: TX throughput collapses without RX traffic
@ 2026-11-12 13:52 Yuri D'Elia
  0 siblings, 0 replies; 2+ messages in thread
From: Yuri D'Elia @ 2026-11-12 13:52 UTC (permalink / raw)
  To: linux-wireless
  Cc: Felix Fietkau, Lorenzo Bianconi, Ryder Lee, Shayne Chen,
	Sean Wang, JB Tsai, Charlie-cy Wu, linux-mediatek

Hi,

I'm using an ASUS ProArt PX13 with an MT7925 that performs randomly.
Sometimes it has decent throughput, sometimes drops to a crawl.

TX throughput collapses whenever the host is not also receiving traffic.
RX is fine.

I'm on 2.4 GHz 802.11n/HT 20 MHz, MCS7 both ways.
The peer I'm testing against is another client on the same AP.

I did a UDP test with 1200 byte packets, sending at 5 to 40 Mbit/s:

  MT7925 -> peer:
     0.6-1.0 Mbit/s received at any sending rate, 1-2 s queueing
  MT7925 -> peer, while peer sends ~200 pkt/s to MT7925:
     5.0-5.8 Mbit/s received, ~0.13 s queueing
  peer -> MT7925:
     all received up to ~20 Mbit/s, no loss

Same result on:
- kernels 6.18.62, 7.3.3, 7.4-rc1
- MT firmware 20260605184805, 20260813113118, 20261016233029

The following had no effect:
- ASPM L1/L1.1/L1.2 off, runtime-pm and deep-sleep off, power_save off
- AQL off
- TX A-MPDU sessions kept stopped
- IOMMU group switched to identity
- Bluetooth rfkill-blocked

What I see in the driver:
- Without RX traffic, frames go out in bursts of ~48 (the UDP socket
  buffer), then nothing until the next TX-free report, up to ~1 s.
- I sampled WFDMA registers through regidx/regval during a stall
  (~7 samples/s, ~20 s): RX ring 2 DMA index always matches the
  driver tail within one sample, the RX data interrupt was always
  enabled, and HOST_INT_STA has nothing pending. Ring 2 advances by
  only ~13 entries while ~1180 frames were sent.
- Wi-Fi IRQs: ~2.6/s idle, ~82/s during the stall.

So the driver processes ring 2 quickly. The firmware seems to write
TXRX_NOTIFY only about once per second when there is no RX traffic,
and sooner when RX traffic arrives, which would explain the seemingly
"random" performance.

There are several reports of poor MT7925 throughput on linux-wireless,
the kernel bugzilla and the openwrt/mt76 tracker, but I didn't find
any that points to this.

Is there a firmware setting for the TX-free report interval or
threshold that mt7925 should send at init? I can test patches and
provide more data.

Thanks


^ permalink raw reply	[flat|nested] 2+ messages in thread

* mt7925e: TX throughput collapses without RX traffic
@ 2026-11-12 13:52 Yuri D'Elia
  0 siblings, 0 replies; 2+ messages in thread
From: Yuri D'Elia @ 2026-11-12 13:52 UTC (permalink / raw)
  To: linux-wireless
  Cc: Felix Fietkau, Lorenzo Bianconi, Ryder Lee, Shayne Chen,
	Sean Wang, JB Tsai, Charlie-cy Wu, linux-mediatek

Hi,

I'm using an ASUS ProArt PX13 with an MT7925 that performs randomly.
Sometimes it has decent throughput, sometimes drops to a crawl.

TX throughput collapses whenever the host is not also receiving traffic.
RX is fine.

I'm on 2.4 GHz 802.11n/HT 20 MHz, MCS7 both ways.
The peer I'm testing against is another client on the same AP.

I did a UDP test with 1200 byte packets, sending at 5 to 40 Mbit/s:

  MT7925 -> peer:
     0.6-1.0 Mbit/s received at any sending rate, 1-2 s queueing
  MT7925 -> peer, while peer sends ~200 pkt/s to MT7925:
     5.0-5.8 Mbit/s received, ~0.13 s queueing
  peer -> MT7925:
     all received up to ~20 Mbit/s, no loss

Same result on:
- kernels 6.18.62, 7.3.3, 7.4-rc1
- MT firmware 20260605184805, 20260813113118, 20261016233029

The following had no effect:
- ASPM L1/L1.1/L1.2 off, runtime-pm and deep-sleep off, power_save off
- AQL off
- TX A-MPDU sessions kept stopped
- IOMMU group switched to identity
- Bluetooth rfkill-blocked

What I see in the driver:
- Without RX traffic, frames go out in bursts of ~48 (the UDP socket
  buffer), then nothing until the next TX-free report, up to ~1 s.
- I sampled WFDMA registers through regidx/regval during a stall
  (~7 samples/s, ~20 s): RX ring 2 DMA index always matches the
  driver tail within one sample, the RX data interrupt was always
  enabled, and HOST_INT_STA has nothing pending. Ring 2 advances by
  only ~13 entries while ~1180 frames were sent.
- Wi-Fi IRQs: ~2.6/s idle, ~82/s during the stall.

So the driver processes ring 2 quickly. The firmware seems to write
TXRX_NOTIFY only about once per second when there is no RX traffic,
and sooner when RX traffic arrives, which would explain the seemingly
"random" performance.

There are several reports of poor MT7925 throughput on linux-wireless,
the kernel bugzilla and the openwrt/mt76 tracker, but I didn't find
any that points to this.

Is there a firmware setting for the TX-free report interval or
threshold that mt7925 should send at init? I can test patches and
provide more data.

Thanks


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-12 13:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-12 13:52 mt7925e: TX throughput collapses without RX traffic Yuri D'Elia
  -- strict thread matches above, loose matches on Subject: below --
2026-11-12 13:52 Yuri D'Elia

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox