NAT performance degradation on WiFi IPv4 download with MT7987A+MT7991A platform
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 888
- Forks
- 436
- PR merge metrics
- No merged PRs in 30d
Description
I'm experiencing IPv4 NAT performance issues on a router based on MT7987A+MT7991A platform when compiling OpenWrt from both main branch and ImmortalWrt master branch.
Problem Summary
- WAN: Both physical WAN port and USB WWAN (not affecting test results)
- LAN RJ45: IPv4 (NAT) + IPv6 + IPv6 NAT - ALL normal (both upload/download)
- WiFi:
- IPv4 upload: Normal
- IPv4 download: Only 30-40Mbps (severely limited)
- IPv6 & IPv6 NAT: Normal
- IPv4 to other LAN RJ45 devices: Normal
- IPv6 NAT shows expected processor-limited performance (slightly lower than non-NAT), which appears normal
- Firewall routing/NAT offload settings (None/Software/Hardware) show no effect - all produce same results
- Tried replacing
/lib/firmware/mediatek/mt7996/mt7992_eeprom_23_2i5i.binwith the/lib/firmware/MT7991_MT7976_EEPROM_BE5040_iPAiLNA.binextracted from the vendor firmware, but it had no effect.
Test Environment
- Platform: MT7987A + MT7991A
- OpenWrt branches tested: main branch with commit https://github.com/zzzz0317/openwrt/commit/29045f85e5e2fbb6f73ac71497644805b02ddad5 , ImmortalWrt master branch with pull request https://github.com/immortalwrt/immortalwrt/pull/2166
Other Information
dmesg
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 6.12.62 (zhangzhe@ubuntudesktop) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r37207-1aaf623a17) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Wed Dec 31 02:53:45 2025
[ 0.000000] Machine model: Hiveton H5000M
[ 0.000000] earlycon: uart8250 at MMIO32 0x0000000011000000 (options '')
[ 0.000000] printk: legacy bootconsole [uart8250] enabled
[ 0.000000] OF: reserved mem: 0x000000007ff80000..0x000000007fffffff (512 KiB) nomap non-reusable secmon@7ff80000
[ 0.000000] OF: reserved mem: 0x000000007ff70000..0x000000007ff7ffff (64 KiB) map non-reusable ramoops@7ff70000
[ 0.000000] OF: reserved mem: 0x0000000050000000..0x00000000500fffff (1024 KiB) nomap non-reusable wmcpu-reserved@50000000
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000040000000-0x000000004fffffff]
[ 0.000000] node 0: [mem 0x0000000050000000-0x00000000500fffff]
[ 0.000000] node 0: [mem 0x0000000050100000-0x000000007ff7ffff]
[ 0.000000] node 0: [mem 0x000000007ff80000-0x000000007fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.5
[ 0.000000] percpu: Embedded 20 pages/cpu s42520 r8192 d31208 u81920
[ 0.000000] pcpu-alloc: s42520 r8192 d31208 u81920 alloc=20*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: GIC system register CPU interface
[ 0.000000] CPU features: kernel page table isolation disabled by kernel configuration
[ 0.000000] alternatives: applying boot alternatives
[ 0.000000] Kernel command line: console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11000000 pci=pcie_bus_perf root=PARTLABEL=rootfs rootwait rootfstype=squashfs,f2fs
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 262144
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 1MB
[ 0.000000] software IO TLB: area num 4.
[ 0.000000] software IO TLB: mapped [mem 0x000000007ea00000-0x000000007eb00000] (1MB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[ 0.000000] GICv3: 640 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] Root IRQ handler: gic_handle_irq
[ 0.000000] GICv3: GICv3 features: 16 PPIs
[ 0.000000] GICv3: GICD_CTRL.DS=0, SCR_EL3.FIQ=0
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x000000000c080000
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] arch_timer: cp15 timer(s) running at 13.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2ff89eacb, max_idle_ns: 440795202429 ns
[ 0.000000] sched_clock: 56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns
[ 0.008197] Calibrating delay loop (skipped), value calculated using timer frequency.. 26.00 BogoMIPS (lpj=130000)
[ 0.018590] pid_max: default: 32768 minimum: 301
[ 0.025223] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.032653] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.042190] cacheinfo: Unable to detect cache hierarchy for CPU 0
[ 0.048974] rcu: Hierarchical SRCU implementation.
[ 0.053776] rcu: Max phase no-delay instances is 1000.
[ 0.059152] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.067493] smp: Bringing up secondary CPUs ...
[ 0.072332] Detected VIPT I-cache on CPU1
[ 0.072366] GICv3: CPU1: found redistributor 1 region 0:0x000000000c0a0000
[ 0.072396] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 0.072737] Detected VIPT I-cache on CPU2
[ 0.072758] GICv3: CPU2: found redistributor 2 region 0:0x000000000c0c0000
[ 0.072771] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[ 0.073056] Detected VIPT I-cache on CPU3
[ 0.073071] GICv3: CPU3: found redistributor 3 region 0:0x000000000c0e0000
[ 0.073082] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[ 0.073120] smp: Brought up 1 node, 4 CPUs
[ 0.129589] SMP: Total of 4 processors activated.
[ 0.134303] CPU: All CPU(s) started at EL2
[ 0.138406] CPU features: detected: 32-bit EL0 Support
[ 0.143560] CPU features: detected: CRC32 instructions
[ 0.148731] alternatives: applying system-wide alternatives
[ 0.154452] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[ 0.162951] Memory: 1008016K/1048576K available (9280K kernel code, 986K rwdata, 2780K rodata, 448K init, 299K bss, 37112K reserved, 0K cma-reserved)
[ 0.179255] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.189160] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.196145] 29280 pages in range for non-PLT usage
[ 0.196148] 520800 pages in range for PLT usage
[ 0.201945] pinctrl core: initialized pinctrl subsystem
[ 0.212664] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.218880] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[ 0.225975] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[ 0.233754] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 0.242046] thermal_sys: Registered thermal governor 'fair_share'
[ 0.242050] thermal_sys: Registered thermal governor 'bang_bang'
[ 0.248158] thermal_sys: Registered thermal governor 'step_wise'
[ 0.254185] thermal_sys: Registered thermal governor 'user_space'
[ 0.260266] ASID allocator initialised with 65536 entries
[ 0.272420] pstore: Using crash dump compression: deflate
[ 0.277843] printk: legacy console [ramoops-1] enabled
[ 0.283251] pstore: Registered ramoops as persistent store backend
[ 0.289457] ramoops: using 0x10000@0x7ff70000, ecc: 0
[ 0.296576] /soc/interrupt-controller@c000000: Fixed dependency cycle(s) with /soc/interrupt-controller@c000000
[ 0.309280] /soc/pcie@11280000: Fixed dependency cycle(s) with /soc/pcie@11280000/interrupt-controller
[ 0.326685] cryptd: max_cpu_qlen set to 1000
[ 0.332901] SCSI subsystem initialized
[ 0.336775] libata version 3.00 loaded.
[ 0.341982] clocksource: Switched to clocksource arch_sys_counter
[ 0.349772] NET: Registered PF_INET protocol family
[ 0.354826] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.363242] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[ 0.371632] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.379415] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.387228] TCP bind hash table entries: 8192 (order: 6, 262144 bytes, linear)
[ 0.394658] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.401315] MPTCP token hash table entries: 1024 (order: 3, 24576 bytes, linear)
[ 0.408834] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.415492] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.422731] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.428430] PCI: CLS 0 bytes, default 64
[ 0.433427] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[ 0.443407] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.449262] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.496816] mtk-pcie-gen3 11280000.pcie: host bridge /soc/pcie@11280000 ranges:
[ 0.504224] mtk-pcie-gen3 11280000.pcie: Parsing ranges property...
[ 0.510523] mtk-pcie-gen3 11280000.pcie: IO 0x0020000000..0x00201fffff -> 0x0020000000
[ 0.519019] mtk-pcie-gen3 11280000.pcie: MEM 0x0020200000..0x002fffffff -> 0x0020200000
[ 0.527551] /soc/pcie@11280000: Failed to get clk index: 0 ret: -517
[ 0.533933] mtk-pcie-gen3 11280000.pcie: failed to get clocks
[ 0.560113] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[ 0.567607] printk: legacy console [ttyS0] disabled
[ 0.592865] 11000000.serial: ttyS0 at MMIO 0x11000000 (irq = 65, base_baud = 2500000) is a ST16650V2
[ 0.602077] printk: legacy console [ttyS0] enabled
[ 0.611659] printk: legacy bootconsole [uart8250] disabled
[ 0.623804] random: crng init done
[ 0.629371] loop: module loaded
[ 0.753545] i2c_dev: i2c /dev entries driver
[ 0.758313] mtk-lvts-thermal 1100a000.lvts: golden temp=60
[ 0.765093] mtk-wdt 1001c000.watchdog: Watchdog enabled (timeout=31 sec, nowayout=0)
[ 0.774432] NET: Registered PF_INET6 protocol family
[ 0.779992] Segment Routing with IPv6
[ 0.783694] In-situ OAM (IOAM) with IPv6
[ 0.787648] NET: Registered PF_PACKET protocol family
[ 0.792776] 8021q: 802.1Q VLAN Support v1.8
[ 0.801090] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=52 arg=00000C00; host->error=0x00000002
[ 0.811019] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=52 arg=80000C08; host->error=0x00000002
[ 0.811686] phy phy-soc:usb-phy@11c50000.1: type_sw - reg 0x218, index 0
[ 0.824991] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=8 arg=000001AA; host->error=0x00000002
[ 0.827372] mtk-pcie-gen3 11280000.pcie: host bridge /soc/pcie@11280000 ranges:
[ 0.836371] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=5 arg=00000000; host->error=0x00000002
[ 0.843087] mtk-pcie-gen3 11280000.pcie: Parsing ranges property...
[ 0.852580] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=5 arg=00000000; host->error=0x00000002
[ 0.858280] mtk-pcie-gen3 11280000.pcie: IO 0x0020000000..0x00201fffff -> 0x0020000000
[ 0.867770] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=5 arg=00000000; host->error=0x00000002
[ 0.875650] mtk-pcie-gen3 11280000.pcie: MEM 0x0020200000..0x002fffffff -> 0x0020200000
[ 0.885140] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=5 arg=00000000; host->error=0x00000002
[ 0.902540] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=55 arg=00000000; host->error=0x00000002
[ 0.912140] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=55 arg=00000000; host->error=0x00000002
[ 0.921740] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=55 arg=00000000; host->error=0x00000002
[ 0.931851] mtk-msdc 11230000.mmc: msdc_track_cmd_data: cmd=55 arg=00000000; host->error=0x00000002
[ 1.027648] mmc0: new high speed MMC card at address 0001
[ 1.034291] mmcblk0: mmc0:0001 008G30 7.28 GiB
[ 1.042390] GPT:Primary header LBA != Alt. header alternate_lba
[ 1.048306] GPT:1 != 15269887
[ 1.051265] GPT: Use GNU Parted to correct GPT errors.
[ 1.056432] mmcblk0: p1 p2 p3 p4 p5
[ 1.061201] mmcblk0boot0: mmc0:0001 008G30 4.00 MiB
[ 1.067236] mmcblk0boot1: mmc0:0001 008G30 4.00 MiB
[ 1.072568] mmcblk0rpmb: mmc0:0001 008G30 4.00 MiB, chardev (250:0)
[ 1.115740] mtk-pcie-gen3 11280000.pcie: set IO trans window[0]: cpu_addr = 0x20000000, pci_addr = 0x20000000, size = 0x200000
[ 1.127147] mtk-pcie-gen3 11280000.pcie: set MEM trans window[1]: cpu_addr = 0x20200000, pci_addr = 0x20200000, size = 0x200000
[ 1.138625] mtk-pcie-gen3 11280000.pcie: set MEM trans window[2]: cpu_addr = 0x20400000, pci_addr = 0x20400000, size = 0x400000
[ 1.150099] mtk-pcie-gen3 11280000.pcie: set MEM trans window[3]: cpu_addr = 0x20800000, pci_addr = 0x20800000, size = 0x800000
[ 1.161571] mtk-pcie-gen3 11280000.pcie: set MEM trans window[4]: cpu_addr = 0x21000000, pci_addr = 0x21000000, size = 0x1000000
[ 1.173140] mtk-pcie-gen3 11280000.pcie: set MEM trans window[5]: cpu_addr = 0x22000000, pci_addr = 0x22000000, size = 0x2000000
[ 1.184707] mtk-pcie-gen3 11280000.pcie: set MEM trans window[6]: cpu_addr = 0x24000000, pci_addr = 0x24000000, size = 0x4000000
[ 1.196269] mtk-pcie-gen3 11280000.pcie: set MEM trans window[7]: cpu_addr = 0x28000000, pci_addr = 0x28000000, size = 0x8000000
[ 1.208203] mtk-pcie-gen3 11280000.pcie: PCI host bridge to bus 0000:00
[ 1.214827] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 1.220310] pci_bus 0000:00: root bus resource [io 0x0000-0x1fffff] (bus address [0x20000000-0x201fffff])
[ 1.229962] pci_bus 0000:00: root bus resource [mem 0x20200000-0x2fffffff]
[ 1.236838] pci_bus 0000:00: scanning bus
[ 1.240879] pci 0000:00:00.0: [14c3:7987] type 01 class 0x060400 PCIe Root Port
[ 1.248205] pci 0000:00:00.0: BAR 0 [mem 0x00000000-0x00007fff 64bit]
[ 1.254651] pci 0000:00:00.0: PCI bridge to [bus 00]
[ 1.259613] pci 0000:00:00.0: bridge window [io 0x0000-0x0fff]
[ 1.265708] pci 0000:00:00.0: bridge window [mem 0x00000000-0x000fffff]
[ 1.272502] pci 0000:00:00.0: bridge window [mem 0x00000000-0x000fffff 64bit pref]
[ 1.280307] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[ 1.286404] pci 0000:00:00.0: PME# disabled
[ 1.291862] pci_bus 0000:00: fixups for bus
[ 1.296057] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
[ 1.302758] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 1.310759] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[ 1.317534] pci_bus 0000:01: scanning bus
[ 1.321567] pci 0000:01:00.0: [14c3:7992] type 00 class 0x028000 PCIe Endpoint
[ 1.328815] pci 0000:01:00.0: BAR 0 [mem 0x00000000-0x001fffff 64bit]
[ 1.335270] pci 0000:01:00.0: BAR 2 [mem 0x00000000-0x00007fff 64bit]
[ 1.341836] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[ 1.347934] pci 0000:01:00.0: PME# disabled
[ 1.372023] pci_bus 0000:01: fixups for bus
[ 1.376200] pci_bus 0000:01: bus scan returning with max=01
[ 1.381764] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[ 1.388390] pci_bus 0000:00: bus scan returning with max=01
[ 1.393974] pci 0000:00:00.0: bridge window [mem 0x20200000-0x204fffff]: assigned
[ 1.401448] pci 0000:00:00.0: BAR 0 [mem 0x20500000-0x20507fff 64bit]: assigned
[ 1.408760] pci 0000:01:00.0: BAR 0 [mem 0x20200000-0x203fffff 64bit]: assigned
[ 1.416076] pci 0000:01:00.0: BAR 2 [mem 0x20400000-0x20407fff 64bit]: assigned
[ 1.423390] pci 0000:00:00.0: PCI bridge to [bus 01]
[ 1.428347] pci 0000:00:00.0: bridge window [mem 0x20200000-0x204fffff]
[ 1.435133] pci_bus 0000:00: resource 4 [io 0x0000-0x1fffff]
[ 1.440869] pci_bus 0000:00: resource 5 [mem 0x20200000-0x2fffffff]
[ 1.447129] pci_bus 0000:01: resource 1 [mem 0x20200000-0x204fffff]
[ 1.453400] pci 0000:00:00.0: Max Payload Size set to 256/ 256 (was 128), Max Read Rq 256
[ 1.461842] pci 0000:01:00.0: Max Payload Size set to 256/ 256 (was 128), Max Read Rq 256
[ 1.470402] pcieport 0000:00:00.0: assign IRQ: got 73
[ 1.475454] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[ 1.481547] pcieport 0000:00:00.0: enabling bus mastering
[ 1.487415] mtk-pcie-gen3 11280000.pcie: msi#0x0 address_hi 0x0 address_lo 0x11280c00 data 0
[ 1.495858] mtk-pcie-gen3 11280000.pcie: msi#0x1 address_hi 0x0 address_lo 0x11280c00 data 1
[ 1.504290] mtk-pcie-gen3 11280000.pcie: msi#0x2 address_hi 0x0 address_lo 0x11280c00 data 2
[ 1.512721] mtk-pcie-gen3 11280000.pcie: msi#0x3 address_hi 0x0 address_lo 0x11280c00 data 3
[ 1.521146] mtk-pcie-gen3 11280000.pcie: msi#0x4 address_hi 0x0 address_lo 0x11280c00 data 4
[ 1.529576] mtk-pcie-gen3 11280000.pcie: msi#0x5 address_hi 0x0 address_lo 0x11280c00 data 5
[ 1.538009] mtk-pcie-gen3 11280000.pcie: msi#0x6 address_hi 0x0 address_lo 0x11280c00 data 6
[ 1.546442] mtk-pcie-gen3 11280000.pcie: msi#0x7 address_hi 0x0 address_lo 0x11280c00 data 7
[ 1.554871] mtk-pcie-gen3 11280000.pcie: msi#0x8 address_hi 0x0 address_lo 0x11280c00 data 8
[ 1.563306] mtk-pcie-gen3 11280000.pcie: msi#0x9 address_hi 0x0 address_lo 0x11280c00 data 9
[ 1.571732] mtk-pcie-gen3 11280000.pcie: msi#0xa address_hi 0x0 address_lo 0x11280c00 data 10
[ 1.580250] mtk-pcie-gen3 11280000.pcie: msi#0xb address_hi 0x0 address_lo 0x11280c00 data 11
[ 1.588768] mtk-pcie-gen3 11280000.pcie: msi#0xc address_hi 0x0 address_lo 0x11280c00 data 12
[ 1.597285] mtk-pcie-gen3 11280000.pcie: msi#0xd address_hi 0x0 address_lo 0x11280c00 data 13
[ 1.605804] mtk-pcie-gen3 11280000.pcie: msi#0xe address_hi 0x0 address_lo 0x11280c00 data 14
[ 1.614320] mtk-pcie-gen3 11280000.pcie: msi#0xf address_hi 0x0 address_lo 0x11280c00 data 15
[ 1.622837] mtk-pcie-gen3 11280000.pcie: msi#0x10 address_hi 0x0 address_lo 0x11280c00 data 16
[ 1.631435] mtk-pcie-gen3 11280000.pcie: msi#0x11 address_hi 0x0 address_lo 0x11280c00 data 17
[ 1.640039] mtk-pcie-gen3 11280000.pcie: msi#0x12 address_hi 0x0 address_lo 0x11280c00 data 18
[ 1.648642] mtk-pcie-gen3 11280000.pcie: msi#0x13 address_hi 0x0 address_lo 0x11280c00 data 19
[ 1.657248] mtk-pcie-gen3 11280000.pcie: msi#0x14 address_hi 0x0 address_lo 0x11280c00 data 20
[ 1.665852] mtk-pcie-gen3 11280000.pcie: msi#0x15 address_hi 0x0 address_lo 0x11280c00 data 21
[ 1.674455] mtk-pcie-gen3 11280000.pcie: msi#0x16 address_hi 0x0 address_lo 0x11280c00 data 22
[ 1.683058] mtk-pcie-gen3 11280000.pcie: msi#0x17 address_hi 0x0 address_lo 0x11280c00 data 23
[ 1.691657] mtk-pcie-gen3 11280000.pcie: msi#0x18 address_hi 0x0 address_lo 0x11280c00 data 24
[ 1.700261] mtk-pcie-gen3 11280000.pcie: msi#0x19 address_hi 0x0 address_lo 0x11280c00 data 25
[ 1.708864] mtk-pcie-gen3 11280000.pcie: msi#0x1a address_hi 0x0 address_lo 0x11280c00 data 26
[ 1.717468] mtk-pcie-gen3 11280000.pcie: msi#0x1b address_hi 0x0 address_lo 0x11280c00 data 27
[ 1.726071] mtk-pcie-gen3 11280000.pcie: msi#0x1c address_hi 0x0 address_lo 0x11280c00 data 28
[ 1.734674] mtk-pcie-gen3 11280000.pcie: msi#0x1d address_hi 0x0 address_lo 0x11280c00 data 29
[ 1.743277] mtk-pcie-gen3 11280000.pcie: msi#0x1e address_hi 0x0 address_lo 0x11280c00 data 30
[ 1.751877] mtk-pcie-gen3 11280000.pcie: msi#0x1f address_hi 0x0 address_lo 0x11280c00 data 31
[ 1.760948] mtk-pcie-gen3 11280000.pcie: msi#0x0 address_hi 0x0 address_lo 0x11280c00 data 0
[ 1.769506] pcieport 0000:00:00.0: PME: Signaling with IRQ 74
[ 1.775450] pcieport 0000:00:00.0: AER: enabled with IRQ 74
[ 1.781074] pcieport 0000:00:00.0: save config 0x00: 0x798714c3
[ 1.786996] pcieport 0000:00:00.0: save config 0x04: 0x00100406
[ 1.792911] pcieport 0000:00:00.0: save config 0x08: 0x06040001
[ 1.798821] pcieport 0000:00:00.0: save config 0x0c: 0x00010000
[ 1.804736] pcieport 0000:00:00.0: save config 0x10: 0x20500004
[ 1.810645] pcieport 0000:00:00.0: save config 0x14: 0x00000000
[ 1.816561] pcieport 0000:00:00.0: save config 0x18: 0x00010100
[ 1.822477] pcieport 0000:00:00.0: save config 0x1c: 0x000001f1
[ 1.828386] pcieport 0000:00:00.0: save config 0x20: 0x20402020
[ 1.834304] pcieport 0000:00:00.0: save config 0x24: 0x0001fff1
[ 1.840214] pcieport 0000:00:00.0: save config 0x28: 0x00000000
[ 1.846128] pcieport 0000:00:00.0: save config 0x2c: 0x00000000
[ 1.852043] pcieport 0000:00:00.0: save config 0x30: 0x00000000
[ 1.857951] pcieport 0000:00:00.0: save config 0x34: 0x00000080
[ 1.863865] pcieport 0000:00:00.0: save config 0x38: 0x00000000
[ 1.869775] pcieport 0000:00:00.0: save config 0x3c: 0x00020149
[ 1.993366] mtk_soc_eth 15100000.ethernet: generated random MAC address 20:08:02:00:00:00
[ 2.001562] mtk_soc_eth 15100000.ethernet: generated random MAC address 20:08:02:00:00:00
[ 2.228468] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc081f00000, irq 67
[ 2.238614] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc081f00000, irq 67
[ 2.248422] clk: Disabling unused clocks
[ 2.252715] PM: genpd: Disabling unused power domains
[ 2.260974] VFS: Mounted root (squashfs filesystem) readonly on device 179:5.
[ 2.268422] Freeing unused kernel memory: 448K
[ 2.273105] Run /sbin/init as init process
[ 2.277193] with arguments:
[ 2.280151] /sbin/init
[ 2.282858] with environment:
[ 2.285989] HOME=/
[ 2.288340] TERM=linux
[ 2.407599] init: Console is alive
[ 2.411102] init: - watchdog -
[ 2.808696] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[ 2.835226] usbcore: registered new interface driver usbfs
[ 2.840765] usbcore: registered new interface driver hub
[ 2.846135] usbcore: registered new device driver usb
[ 2.856277] gpio_button_hotplug: loading out-of-tree module taints kernel.
[ 2.872094] xhci-mtk 11200000.usb: supply vbus not found, using dummy regulator
[ 2.879522] xhci-mtk 11200000.usb: supply vusb33 not found, using dummy regulator
[ 2.887702] xhci-mtk 11200000.usb: xHCI Host Controller
[ 2.892946] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 1
[ 2.903328] xhci-mtk 11200000.usb: hcc params 0x01443f99 hci version 0x120 quirks 0x0000000020200010
[ 2.912499] xhci-mtk 11200000.usb: irq 75, io mem 0x11200000
[ 2.918248] xhci-mtk 11200000.usb: xHCI Host Controller
[ 2.923475] xhci-mtk 11200000.usb: new USB bus registered, assigned bus number 2
[ 2.930861] xhci-mtk 11200000.usb: Host supports USB 3.2 Enhanced SuperSpeed
[ 2.938232] hub 1-0:1.0: USB hub found
[ 2.942167] hub 1-0:1.0: 1 port detected
[ 2.946329] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[ 2.954664] hub 2-0:1.0: USB hub found
[ 2.958425] hub 2-0:1.0: 1 port detected
[ 2.968028] usbcore: registered new interface driver usb-storage
[ 2.975201] usbcore: registered new interface driver uas
[ 2.980786] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 2.989133] init: - preinit -
[ 3.352187] mtk_soc_eth 15100000.ethernet eth0: PHY [mdio-bus:01] driver [RTL8221B-VB-CG 2.5Gbps PHY (C45)] (irq=56)
[ 3.372475] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode
[ 4.091579] usb 2-1: new SuperSpeed USB device number 2 using xhci-mtk
[ 7.514631] mount_root: loading kmods from internal overlay
[ 7.533995] kmodloader: loading kernel modules from //etc/modules-boot.d/*
[ 7.544244] kmodloader: done loading kernel modules from //etc/modules-boot.d/*
[ 7.679654] block: attempting to load /tmp/overlay/upper/etc/config/fstab
[ 7.688497] block: unable to load configuration (fstab: Entry not found)
[ 7.695262] block: attempting to load /tmp/overlay/etc/config/fstab
[ 7.701586] block: unable to load configuration (fstab: Entry not found)
[ 7.708476] block: attempting to load /etc/config/fstab
[ 7.718560] block: unable to load configuration (fstab: Entry not found)
[ 7.725747] block: no usable configuration
[ 7.730572] loop0: detected capacity change from 0 to 15184863
[ 7.832031] loop0: detected capacity change from 15184863 to 15069919
[ 8.025185] F2FS-fs (loop0): Mounted with checkpoint version = 8f5dcd5
[ 8.031956] block: attempting to load /tmp/f2fs_cfg/upper/etc/config/fstab
[ 8.039493] block: extroot: not configured
[ 8.113533] loop0: detected capacity change from 0 to 15184863
[ 8.162128] loop0: detected capacity change from 15184863 to 15069919
[ 8.177371] F2FS-fs (loop0): Mounted with checkpoint version = 8f5dcd7
[ 8.249063] block: attempting to load /tmp/overlay/upper/etc/config/fstab
[ 8.256524] block: extroot: not configured
[ 8.261533] block: attempting to load /tmp/f2fs_cfg/upper/etc/config/fstab
[ 8.268659] block: extroot: not configured
[ 8.274635] mount_root: switching to f2fs overlay
[ 8.284011] overlayfs: null uuid detected in lower fs '/', falling back to xino=off,index=off,nfs_export=off.
[ 8.295833] urandom-seed: Seeding with /etc/urandom.seed
[ 8.328242] procd: - early -
[ 8.331298] procd: - watchdog -
[ 8.867717] procd: - watchdog -
[ 8.871148] procd: - ubus -
[ 8.944343] procd: - init -
[ 9.257275] kmodloader: loading kernel modules from /etc/modules.d/*
[ 9.286559] NET: Registered PF_ALG protocol family
[ 9.299699] tun: Universal TUN/TAP device driver, 1.6
[ 9.347480] GACT probability on
[ 9.351784] Mirror/redirect action on
[ 9.363657] u32 classifier
[ 9.366385] input device check on
[ 9.370049] Actions configured
[ 9.383932] ntfs3: Enabled Linux POSIX ACLs support
[ 9.390725] usbcore: registered new interface driver cdc_wdm
[ 9.400273] qmi_wwan_q 2-1:1.4: cdc-wdm0: USB WDM device
[ 9.405875] qmi_wwan_q 2-1:1.4: Quectel RM500Q-GL work on RawIP mode
[ 9.413847] qmi_wwan_q 2-1:1.4: rx_urb_size = 31744
[ 9.419247] qmi_wwan_q 2-1:1.4 wwan0: register 'qmi_wwan_q' at usb-11200000.usb-1, RMNET/USB device, fe:c1:f1:fa:0b:df
[ 9.420044] urngd: v1.0.2 started.
[ 9.430518] net wwan0: qmap_register_device wwan0_1
[ 9.438451] usbcore: registered new interface driver qmi_wwan_q
[ 9.446290] usbcore: registered new interface driver qmi_wwan_f
[ 9.453753] usbcore: registered new interface driver qmi_wwan_s
[ 9.462684] crypto-safexcel 15600000.crypto: EIP196:121(0,1,4,4)-HIA:282(0,6,6),PE:152/480(alg:7fc1ff00)/0/0/0
[ 9.485720] usbcore: registered new interface driver cdc_acm
[ 9.491412] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 9.501012] usbcore: registered new interface driver cdc_ether
[ 9.508261] usbcore: registered new interface driver cdc_ncm
[ 9.515912] Loading modules backported from Linux version v6.18-0-g7d0a66e4b
[ 9.523064] Backport generated by backports.git 4d44cef
[ 9.529283] usbcore: registered new interface driver huawei_cdc_ncm
[ 9.562397] usbcore: registered new interface driver rndis_host
[ 9.570919] usbcore: registered new interface driver ums-alauda
[ 9.577925] usbcore: registered new interface driver ums-cypress
[ 9.585109] usbcore: registered new interface driver ums-datafab
[ 9.592323] usbcore: registered new interface driver ums-freecom
[ 9.599891] usbcore: registered new interface driver ums-isd200
[ 9.607064] usbcore: registered new interface driver ums-jumpshot
[ 9.614276] usbcore: registered new interface driver ums-karma
[ 9.621417] usbcore: registered new interface driver ums-sddr09
[ 9.628524] usbcore: registered new interface driver ums-sddr55
[ 9.635711] usbcore: registered new interface driver ums-usbat
[ 9.643629] usbcore: registered new interface driver usbserial_generic
[ 9.650245] usbserial: USB Serial support registered for generic
[ 9.671390] xt_time: kernel timezone is -0000
[ 9.677094] usbcore: registered new interface driver cdc_mbim
[ 9.738102] mt7996e 0000:01:00.0: assign IRQ: got 73
[ 9.743305] mt7996e 0000:01:00.0: enabling device (0000 -> 0002)
[ 9.749374] mt7996e 0000:01:00.0: enabling bus mastering
[ 9.812399] mtk-pcie-gen3 11280000.pcie: msi#0x1 address_hi 0x0 address_lo 0x11280c00 data 1
[ 9.862752] mt7996e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20250905122608a
[ 9.862752]
[ 9.929948] mt7996e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20250905122103
[ 9.962232] mt7996e 0000:01:00.0: DSP Firmware Version: ____000000, Build Time: 20250905121948
[ 9.994167] mt7996e 0000:01:00.0: WA Firmware Version: ____000000, Build Time: 20250905122015
[ 10.208591] mt7996e 0000:01:00.0: eeprom tx_power zeros detected, using defaults
[ 10.216068] mt7996e 0000:01:00.0: eeprom load fail, use default bin
[ 10.255848] PPP generic driver version 2.4.2
[ 10.261677] PPP MPPE Compression module registered
[ 10.267850] NET: Registered PF_PPPOX protocol family
[ 10.282067] usbcore: registered new interface driver option
[ 10.287718] usbserial: USB Serial support registered for GSM modem (1-port)
[ 10.294932] option 2-1:1.0: GSM modem (1-port) converter detected
[ 10.301335] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 10.308493] option 2-1:1.1: GSM modem (1-port) converter detected
[ 10.315099] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 10.322171] option 2-1:1.2: GSM modem (1-port) converter detected
[ 10.328553] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 10.335624] option 2-1:1.3: GSM modem (1-port) converter detected
[ 10.341958] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3
[ 10.352792] usbcore: registered new interface driver qcserial
[ 10.358652] usbserial: USB Serial support registered for Qualcomm USB modem
[ 10.367141] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 14.312080] mtk_soc_eth 15100000.ethernet eth0: PHY [mdio-bus:01] driver [RTL8221B-VB-CG 2.5Gbps PHY (C45)] (irq=56)
[ 14.340075] mtk_soc_eth 15100000.ethernet eth0: configuring for phy/2500base-x link mode
[ 14.372582] br-lan: port 1(eth0) entered blocking state
[ 14.377841] br-lan: port 1(eth0) entered disabled state
[ 14.383171] mtk_soc_eth 15100000.ethernet eth0: entered allmulticast mode
[ 14.390270] mtk_soc_eth 15100000.ethernet eth0: entered promiscuous mode
[ 14.443639] MediaTek MT7987 2.5GbE PHY mdio-bus:0f: Firmware date code: 2025/8/22, version: 7.10
[ 14.464361] MediaTek MT7987 2.5GbE PHY mdio-bus:0f: Firmware loading/trigger ok.
[ 14.472507] mtk_soc_eth 15100000.ethernet eth1: PHY [mdio-bus:0f] driver [MediaTek MT7987 2.5GbE PHY] (irq=POLL)
[ 14.482755] mtk_soc_eth 15100000.ethernet eth1: configuring for phy/internal link mode
[ 14.903652] br-lan: port 2(phy0.0-ap0) entered blocking state
[ 14.909443] br-lan: port 2(phy0.0-ap0) entered disabled state
[ 14.915295] mt7996e 0000:01:00.0 phy0.0-ap0: entered allmulticast mode
[ 14.922014] mt7996e 0000:01:00.0 phy0.0-ap0: entered promiscuous mode
[ 14.929794] mt7996e 0000:01:00.0 phy0.0-ap0: left allmulticast mode
[ 14.936191] mt7996e 0000:01:00.0 phy0.0-ap0: left promiscuous mode
[ 14.942471] br-lan: port 2(phy0.0-ap0) entered disabled state
[ 14.957837] br-lan: port 2(phy0.0-ap0) entered blocking state
[ 14.963686] br-lan: port 2(phy0.0-ap0) entered disabled state
[ 14.969497] mt7996e 0000:01:00.0 phy0.0-ap0: entered allmulticast mode
[ 14.976295] mt7996e 0000:01:00.0 phy0.0-ap0: entered promiscuous mode
[ 15.107971] br-lan: port 2(phy0.0-ap0) entered blocking state
[ 15.113794] br-lan: port 2(phy0.0-ap0) entered forwarding state
[ 15.397734] br-lan: port 3(phy0.1-ap0) entered blocking state
[ 15.403639] br-lan: port 3(phy0.1-ap0) entered disabled state
[ 15.409536] mt7996e 0000:01:00.0 phy0.1-ap0: entered allmulticast mode
[ 15.416266] mt7996e 0000:01:00.0 phy0.1-ap0: entered promiscuous mode
[ 15.423685] mt7996e 0000:01:00.0 phy0.1-ap0: left allmulticast mode
[ 15.429981] mt7996e 0000:01:00.0 phy0.1-ap0: left promiscuous mode
[ 15.436277] br-lan: port 3(phy0.1-ap0) entered disabled state
[ 15.443668] br-lan: port 3(phy0.1-ap0) entered blocking state
[ 15.449465] br-lan: port 3(phy0.1-ap0) entered disabled state
[ 15.455362] mt7996e 0000:01:00.0 phy0.1-ap0: entered allmulticast mode
[ 15.462184] mt7996e 0000:01:00.0 phy0.1-ap0: entered promiscuous mode
[ 15.648666] br-lan: port 3(phy0.1-ap0) entered blocking state
[ 15.654482] br-lan: port 3(phy0.1-ap0) entered forwarding state
[ 15.661028] br-lan: port 3(phy0.1-ap0) entered disabled state
[ 16.175476] br-lan: port 3(phy0.1-ap0) entered blocking state
[ 16.181273] br-lan: port 3(phy0.1-ap0) entered forwarding state
[ 37.819783] net wwan0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minimum_padding=0
[ 38.939178] net wwan0: link_state 0x0 -> 0x1
lspci
root@zzH5000M:~# lspci -vnn
00:00.0 PCI bridge [0604]: MEDIATEK Corp. Device [14c3:7987] (rev 01) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0, IRQ 74
Memory at 20500000 (64-bit, non-prefetchable) [size=32K]
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: [disabled] [32-bit]
Memory behind bridge: 20200000-204fffff [size=3M] [32-bit]
Prefetchable memory behind bridge: [disabled] [64-bit]
Capabilities: [80] Express Root Port (Slot-), IntMsgNum 0
Capabilities: [e0] MSI: Enable+ Count=1/32 Maskable+ 64bit+
Capabilities: [f8] Power Management version 3
Capabilities: [100] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
Capabilities: [110] L1 PM Substates
Capabilities: [200] Advanced Error Reporting
Capabilities: [300] Secondary PCI Express
Kernel driver in use: pcieport
lspci: Unable to load libkmod resources: error -2
01:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:7992]
Subsystem: MEDIATEK Corp. Device [14c3:7992]
Flags: bus master, fast devsel, latency 0, IRQ 80
Memory at 20200000 (64-bit, non-prefetchable) [size=2M]
Memory at 20400000 (64-bit, non-prefetchable) [size=32K]
Capabilities: [80] Express Endpoint, IntMsgNum 0
Capabilities: [e0] MSI: Enable+ Count=1/32 Maskable+ 64bit+
Capabilities: [f8] Power Management version 3
Capabilities: [100] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
Capabilities: [108] Latency Tolerance Reporting
Capabilities: [110] L1 PM Substates
Capabilities: [200] Advanced Error Reporting
Capabilities: [300] Secondary PCI Express
Kernel driver in use: mt7996e
modinfo
root@zzH5000M:~# lsmod | grep mt
cfg80211 331776 4 mt7996e,mt76_connac_lib,mt76,mac80211
mac80211 651264 3 mt7996e,mt76_connac_lib,mt76
mt76 81920 2 mt7996e,mt76_connac_lib
mt76_connac_lib 49152 1 mt7996e
mt7996e 139264 0
usbcore 196608 35 qcserial,option,usb_wwan,cdc_mbim,usbserial,ums_usbat,ums_sddr55,ums_sddr09,ums_karma,ums_jumpshot,ums_isd200,ums_freecom,ums_datafab,ums_cypress,ums_alauda,rndis_host,huawei_cdc_ncm,cdc_ncm,cdc_ether,cdc_acm,qmi_wwan_s,qmi_wwan_f,qmi_wwan_q,usbnet,cdc_wdm,uas,usb_storage,xhci_plat_hcd,xhci_pci,xhci_mtk_hcd,xhci_hcd,ehci_platform,ehci_fsl,ehci_hcd
xhci_hcd 135168 3 xhci_plat_hcd,xhci_pci,xhci_mtk_hcd
xhci_mtk_hcd 20480 0
root@zzH5000M:~# modinfo mt7996e
filename: /lib/modules/6.12.62/mt7996e.ko
license: Dual BSD/GPL
depends: mt76,mac80211,mt76-connac-lib,cfg80211
name: mt7996e
vermagic: 6.12.62 SMP mod_unload aarch64
parm: wed_enable (bool)
parm: sr_scene_detect (bool)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The report names the MT7987A+MT7991A platform, OpenWrt and ImmortalWrt branches, and the MT7996/MT7992 EEPROM paths, but no source file or test. Start by reproducing IPv4 NAT WiFi download performance with the cited builds and compare it with the reported IPv6 and wired results. Done means identifying the cause and showing that corrected builds no longer exhibit the 30–40 Mbps limit.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- networking, performance
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100