Re: [PATCH 00/18] wifi: mt76: mt7925: add MT7927 (Filogic 380) support

From: Shengyu Qu

Date: Wed Mar 11 2026 - 14:51:40 EST


Hello Sean,

Could you upload the firmware of this chip to linux-firmware repo? Also
could you(or someone who is more familiar with this chip) do a deep
review of these code? This series is heavily AI-assisted when
developing, so there might be some hidden bugs or something else that
haven't been discovered.

Best regards,
Shengyu

在 2026/3/7 15:08, Sean Wang 写道:
Hi Javier,

On Fri, Mar 6, 2026 at 6:33 PM Javier Tia <floss@xxxxxxx> wrote:

This series adds support for the MediaTek MT7927 (Filogic 380) combo
WiFi 7 + BT 5.4 module to the mt7925 driver. The MT7927 uses PCI ID
14c3:7927 (some hardware reports 14c3:6639) and shares the mt7925
firmware interface but requires different DMA ring layout, IRQ mapping,
chip initialization, and power management handling.

Tested hardware:
- ASUS ROG Crosshair X870E Hero (BT 0489:e13a, WiFi 14c3:6639)
- ASUS ProArt X870E-Creator WiFi (BT 0489:e13a / 13d3:3588, WiFi 14c3:6639)
- ASUS ROG Strix X870E-E (BT 0489:e13a, WiFi 14c3:7927)
- Gigabyte X870E Aorus Master X3D (BT 0489:e10f, WiFi 14c3:7927)
- Gigabyte Z790 AORUS MASTER X (BT 0489:e10f, WiFi 14c3:7927)
- Lenovo Legion Pro 7 16ARX9 (BT 0489:e0fa, WiFi 14c3:7927)
- TP-Link Archer TBE550E PCIe (BT 0489:e116, WiFi 14c3:7927)
- EDUP EP-MT7927BE M.2 card (WiFi 14c3:7927)
- Foxconn/Azurewave M.2 modules (WiFi 14c3:6639)
- AMD RZ738 reference design (WiFi 14c3:0738)


Thanks for coordinating the work and delivering the driver.

Tested on Arch Linux, CachyOS, EndeavourOS, Fedora (Bazzite), NixOS,
openSUSE Tumbleweed, and Ubuntu across kernels 6.13-6.19.

What works:
- WiFi 7 with EHT 320MHz on 2.4/5/6 GHz bands
- 320MHz data path verified at 841 Mbps (iperf3 -t30 -P8)
- PCIe initialization with CBTOP remap and MT7927-specific DMA layout
- Runtime power management and suspend/resume (S3)
- DBDC (dual-band concurrent) mode
- Explicit band_idx assignment for stable 5GHz/6GHz operation
- ASPM disabled for MT7927 to prevent throughput collapse

Known limitations (planned as follow-up series):
- MLO (Multi-Link Operation): tested working on 5GHz+2.4GHz STR
(776 Mbps) but requires additional patches for link lifetime
and error handling. Sean Wang's series [1] addresses these;
MLO support will be submitted as a follow-up on top of that.

[1] https://lore.kernel.org/linux-wireless/20260306232238.2039675-1-sean.wang@xxxxxxxxxx/
- TX retransmissions: elevated retry rate on all bands, firmware-side
rate adaptation issue not addressable in the driver.

Patches 1-11 bring up the basic driver (chip ID, firmware, DMA, init,
power management, 320MHz MCS, mac_reset guard, IRQ map, probe fix).
Patch 12 advertises EHT 320MHz capabilities, guarded by is_mt7927().
Patches 13-14 fix DMASHDL PM wake and disable ASPM.
Patch 15 adds 320MHz bandwidth handling in RXV/TXS status reporting.
Patch 16 fixes stale pointer comparisons in change_vif_links.
Patch 17 assigns explicit band_idx for stable 5GHz/6GHz operation.
Patch 18 adds the missing 320MHz case in bss_rlm_tlv() so firmware
receives the correct bandwidth when associated to a 320MHz BSS.

The WiFi firmware ships as part of the linux-firmware package
(mediatek/mt6639/ directory - the firmware uses the mobile SoC codename).

To: linux-wireless@xxxxxxxxxxxxxxx
To: Felix Fietkau <nbd@xxxxxxxx>
To: Lorenzo Bianconi <lorenzo@xxxxxxxxxx>
To: Ryder Lee <ryder.lee@xxxxxxxxxxxx>
To: Shayne Chen <shayne.chen@xxxxxxxxxxxx>
To: Sean Wang <sean.wang@xxxxxxxxxxxx>
To: Matthias Brugger <matthias.bgg@xxxxxxxxx>
To: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
To: Deren Wu <deren.wu@xxxxxxxxxxxx>
To: Ming Yen Hsieh <mingyen.hsieh@xxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-mediatek@xxxxxxxxxxxxxxxxxxx
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>
---
Javier Tia (18):
wifi: mt76: mt7925: add MT7927 chip ID helpers
wifi: mt76: mt7925: add MT7927 firmware paths and PCI device IDs
wifi: mt76: mt7925: add MT7927 CBTOP remap and chip initialization
wifi: mt76: mt7925: add MT7927 DMA ring layout, IRQ map, and prefetch
wifi: mt76: mt7925: skip CLR_OWN in mt7925e_mcu_init for MT7927
wifi: mt76: mt7925: add MT7927 power management, DBDC, and CNM fixes
wifi: mt76: mt7925: use irq_map fields instead of MT_INT_RX_DONE_ALL
wifi: mt76: mt7925: guard mac_reset against MT7927 DMA destruction
wifi: mt76: mt7925: populate EHT 320MHz MCS map in sta_rec
wifi: mt76: mt7925: enable MT7927 runtime power management
wifi: mt76: mt7925: fix uninitialized is_mt7927_hw in probe
wifi: mt76: mt7925: advertise EHT 320MHz capabilities for 6GHz band
wifi: mt76: mt7925: restore FW_DWLD_BYPASS_DMASHDL in MT7927 PM wake path
wifi: mt76: mt7925: disable ASPM for MT7927 to fix throughput collapse
wifi: mt76: mt7925: handle 320MHz bandwidth in RXV and TXS
wifi: mt76: mt7925: fix stale pointer comparisons in change_vif_links
wifi: mt76: mt7925: fix MT7927 band_idx for stable 5GHz/6GHz operation
wifi: mt76: mt7925: add 320MHz bandwidth to bss_rlm_tlv


The patchset should be ordered so that common changes (e.g., enabling
320 MHz support) are added first,
while chip-specific changes are introduced later (e.g.,
MT7927-specific IRQ, DMA, and hardware initialization sequences).
Before introducing chip-specific logic, try to make the functions
generic enough so that other chips can reuse them in the same way.
Checks such as is_mt7927 and duplicated function should only be added
if they cannot be avoided

The more code we can reuse across chips, the fewer maintenance
concerns there will be, and we can focus more effort on the
chip-specific parts.

Please reorganize the patchset order as follows:

1. Common patches that can be reused by other chipsets (now or in the
future) should come first we don't need to mention mt7927

"wifi: mt76: mt7925: fix stale pointer comparisons in change_vif_links"
"wifi: mt76: mt7925: add 320MHz bandwidth to bss_rlm_tlv"
"wifi: mt76: mt7925: handle 320MHz bandwidth in RXV and TXS"
"wifi: mt76: mt7925: populate EHT 320MHz MCS map in sta_rec"
"wifi: mt76: mt7925: advertise EHT 320MHz capabilities for 6GHz band"

Here we can add a helper like is_320MHz_supported() and then advertise
EHT 320MHz capabilities, but do not need to mention is_mt7927() yet.

2. Then introduce MT7927-related changes

wifi: mt76: mt7925: add MT7927 chip ID helpers
Keep the MCU part of "wifi: mt76: mt7925: add MT7927 firmware paths
and PCI device IDs" but leave enabling the PCI device table for the
last patch.

3. IRQ handling

Combine

wifi: mt76: mt7925: use irq_map fields instead of MT_INT_RX_DONE_ALL
the IRQ part of wifi: mt76: mt7925: add MT7927 DMA ring layout, IRQ
map, and prefetch
into one patch about irq_map handling, trying to reuse mt7925_irq as
much as possible.

4. DMA handling

Combine

the DMA part of "wifi: mt76: mt7925: add MT7927 DMA ring layout, IRQ
map, and prefetch"
"wifi: mt76: mt7925: restore FW_DWLD_BYPASS_DMASHDL in MT7927 PM wake path"
into one patch about DMA handling, trying to reuse mt7925_dma_init as
much as possible.

5. Hardware initialization

Combine

"wifi: mt76: mt7925: add MT7927 CBTOP remap and chip initialization"
"wifi: mt76: mt7925: fix uninitialized is_mt7927_hw in probe"
"wifi: mt76: mt7925: skip CLR_OWN in mt7925e_mcu_init for MT7927"
"wifi: mt76: mt7925: add MT7927 power management, DBDC, and CNM fixes"

into one or more patches focused on pure hardware initialization in
logical order. If the register definition is used by MT7927, add
MT7927_ as the prefix.

6. Band index fix

"wifi: mt76: mt7925: fix MT7927 band_idx for stable 5GHz/6GHz operation"
This is worth introducing helper functions and using them instead of
implementing the logic inline.

7. Low power support

Combine

"wifi: mt76: mt7925: enable MT7927 runtime power management"
"wifi: mt76: mt7925: disable ASPM for MT7927 to fix throughput collapse"

into one or more patches related to enabling or disabling low power support.

8. Final patch
The last patch should enable the MT7927 PCI device table.

drivers/net/wireless/mediatek/mt76/mt76_connac.h | 8 +-
drivers/net/wireless/mediatek/mt76/mt7925/init.c | 12 +
drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 9 +
drivers/net/wireless/mediatek/mt76/mt7925/main.c | 72 +++++-
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 59 ++++-
drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h | 12 +
drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 248 ++++++++++++++++++++-
.../net/wireless/mediatek/mt76/mt7925/pci_mac.c | 13 +-
.../net/wireless/mediatek/mt76/mt7925/pci_mcu.c | 19 +-
drivers/net/wireless/mediatek/mt76/mt792x.h | 6 +
drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 26 ++-
drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 30 +++
12 files changed, 479 insertions(+), 35 deletions(-)
---
base-commit: 97492c019da4b62df83255e968b23b81c0315530
change-id: 20260305-mt7927-wifi-support-02f9738a3962

Best regards,
--
Javier Tia <floss@xxxxxxx>



Attachment: OpenPGP_0xE3520CC91929C8E7.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature