[PATCH 14/18] wifi: mt76: mt7925: disable ASPM for MT7927 to fix throughput collapse

From: Javier Tia

Date: Fri Mar 06 2026 - 19:40:34 EST


MT7927 (MT7927) exhibits severe throughput degradation when PCIe ASPM
L1 is active. Upload throughput drops from 1+ Gbps to ~200 Mbps, and
intermittent download drops to ~69 Mbps have been observed.

The root cause is that MT7927's CONNINFRA power domain and WFDMA
register access are unreliable when the PCIe link transitions in and
out of L1 sleep state. Unlike MT7925, MT7927 depends on CONNINFRA
being continuously accessible for CBTOP address remap, and its ROM
reinitializes WFDMA on every CLR_OWN which can race with L1
transitions.

Disable ASPM unconditionally for MT7927 at probe time using the
existing mt76_pci_disable_aspm() helper, which handles both the device
and parent bridge. This disables L0s in addition to L1; L0s power
savings are negligible for a PCIe WLAN card and this avoids needing a
separate L1-only code path with CONFIG_PCIEASPM fallback handling.

After the disable, mt76_pci_aspm_supported() returns false so the
2-3 ms delay in __mt792xe_mcu_drv_pmctrl() is correctly skipped.
The pci_disable_link_state() call persists across suspend/resume.

Tested-by: Marcin FM <marcin@xxxxxxx>
Tested-by: Cristian-Florin Radoi <radoi.chris@xxxxxxxxx>
Tested-by: George Salukvadze <giosal90@xxxxxxxxx>
Tested-by: Evgeny Kapusta <3193631@xxxxxxxxx>
Tested-by: Samu Toljamo <samu.toljamo@xxxxxxxxx>
Tested-by: Ariel Rosenfeld <ariel.rosenfeld.750@xxxxxxxxx>
Tested-by: Chapuis Dario <chapuisdario4@xxxxxxxxx>
Tested-by: Thibaut François <tibo@xxxxxxxxxxxxxx>
Tested-by: 张旭涵 <Loong.0x00@xxxxxxxxx>
Signed-off-by: Javier Tia <floss@xxxxxxx>
---
drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
index 6275e78777b0..e6830404c8fc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
@@ -516,7 +516,14 @@ static int mt7925_pci_probe(struct pci_dev *pdev,
if (ret)
goto err_free_pci_vec;

- if (mt7925_disable_aspm)
+ /* MT7927 CONNINFRA power domain and WFDMA register access are
+ * unreliable with PCIe L1 active, causing throughput to drop
+ * from 1+ Gbps to ~200 Mbps. Disable ASPM unconditionally
+ * rather than only L1, since L0s savings are negligible for
+ * a PCIe WLAN card and mt76_pci_disable_aspm() already
+ * handles both device and parent bridge in one call.
+ */
+ if (mt7925_disable_aspm || is_mt7927_hw)
mt76_pci_disable_aspm(pdev);

ops = mt792x_get_mac80211_ops(&pdev->dev, &mt7925_ops,

--
2.53.0