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 Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut François Tested-by: 张旭涵 Signed-off-by: Javier Tia --- 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