[PATCH 00/18] wifi: mt76: mt7925: add MT7927 (Filogic 380) support
Shengyu Qu
wiagn233 at outlook.com
Wed Mar 11 11:50:14 PDT 2026
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 at jetm.me> 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@kernel.org/
>> - 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 at vger.kernel.org
>> To: Felix Fietkau <nbd at nbd.name>
>> To: Lorenzo Bianconi <lorenzo at kernel.org>
>> To: Ryder Lee <ryder.lee at mediatek.com>
>> To: Shayne Chen <shayne.chen at mediatek.com>
>> To: Sean Wang <sean.wang at mediatek.com>
>> To: Matthias Brugger <matthias.bgg at gmail.com>
>> To: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
>> To: Deren Wu <deren.wu at mediatek.com>
>> To: Ming Yen Hsieh <mingyen.hsieh at mediatek.com>
>> Cc: linux-kernel at vger.kernel.org
>> Cc: linux-arm-kernel at lists.infradead.org
>> Cc: linux-mediatek at lists.infradead.org
>> Tested-by: Marcin FM <marcin at lgic.pl>
>> Tested-by: Cristian-Florin Radoi <radoi.chris at gmail.com>
>> Tested-by: George Salukvadze <giosal90 at gmail.com>
>> Tested-by: Evgeny Kapusta <3193631 at gmail.com>
>> Tested-by: Samu Toljamo <samu.toljamo at gmail.com>
>> Tested-by: Ariel Rosenfeld <ariel.rosenfeld.750 at gmail.com>
>> Tested-by: Chapuis Dario <chapuisdario4 at gmail.com>
>> Tested-by: Thibaut François <tibo at humeurlibre.fr>
>> Tested-by: 张旭涵 <Loong.0x00 at gmail.com>
>>
>> Signed-off-by: Javier Tia <floss at jetm.me>
>> ---
>> 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 at jetm.me>
>>
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE3520CC91929C8E7.asc
Type: application/pgp-keys
Size: 6868 bytes
Desc: OpenPGP public key
URL: <http://lists.infradead.org/pipermail/linux-mediatek/attachments/20260312/713fc9ee/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-mediatek/attachments/20260312/713fc9ee/attachment-0001.sig>
More information about the Linux-mediatek
mailing list