Commit Graph
33661 Commits
Author SHA1 Message Date
David Bauer 7114f29fe2 net/l2tp: reset skb control buffer
The L2TP stack did not reset the skb control buffer before handing off
the package to the lower netdev.

In a setup with an ath10k radio and batman-adv over an L2TP tunnel
massive fragmentations happen sporadically if the L2TP tunnel is
established over IPv4.

L2TP might reset some of the fields in the IP control buffer, but L2TP
assumes the type of the control buffer to be of an IPv4 packet, while
due to it being Layer 2, this is not a given.

Clear the entire control buffer to avoid such mishaps altogether.

Link: https://github.com/torvalds/linux/commit/d70b592551ff23747e26e74081205babf8dba9b6
Signed-off-by: David Bauer <mail@david-bauer.net>
2026-09-08 00:39:23 +02:00
Maxim Anisimov 30d53697c7 kernel: add support for HeYangTek HYF1GQ4UDACAE SPI-NAND
The HeYangTek HYF1GQ4UDACAE is a 1 Gbit (128 MiB) SLC SPI-NAND with
2048 + 64 byte pages and on-die 4-bit / 512-byte ECC (JEDEC ID 0xc9),
found among others on some Keenetic KN-3411 (Buddy 6) units.

The driver is accepted upstream and sits in the MTD tree heading for
Linux 7.3, so it goes to backport-6.12 as the upstream commit
a837468386 ("mtd: spinand: add support for HeYangTek HYF1GQ4UDACAE").

The Etron and Fidelix spinand patches are refreshed because the
backport applies before them and touches the same spinand-objs line.
Other SPI-NAND patches in the MediaTek, Airoha and EcoNet targets
are refreshed for the shifted core offsets.

Signed-off-by: Aleksei Sviridkin <f@lex.la>
Link: https://github.com/openwrt/openwrt/pull/23742
(cherry picked from commit 21a236d49e)
[Adapted to the SPI-NAND read-from-cache op API used before the
 SPINAND_PAGE_READ_FROM_CACHE_1S_4S_4S_OP-style rename: kernel 6.12
 still uses SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP/_X4_OP/_DUALIO_OP/
 _X2_OP/_OP instead. Backported to 25.12 to fix boot on the
 already-supported keenetic,kn-3711, which requires this chip's
 driver to boot (see PR#24001 comment:
 https://github.com/openwrt/openwrt/pull/24001#issuecomment-4869498638).]
Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24928
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-09-03 12:50:58 +02:00
Shine 53846db686 mpc85xx: p1010: TL-WDR4900v1: DTS update for RFKILL switch
The TL-WDR4900v1, like many other similarly-aged TP-Link devices, is
using a flipswitch for toggling WiFi, not a pushbutton. Update the DTS
to reflect that. The debounce time used here has been chosen based on
other supported (but different target) TP-Link devices that are using
such a flipswitch.

Requires usage of the gpio-button-hotplug driver to work.

Fixes: #13552
Signed-off-by: Shine <4c.fce2@proton.me>
Tested-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/22494
(cherry picked from commit 2ea3f2ffe2)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Shine a9cddf7f3c mpc85xx: use gpio-button-hotplug as input subsystem
This replaces the standard Linux input subsystem with the
gpio-button-hotplug driver, which is already used with most other
targets for over a decade. While reducing overhead and resource
pressure especially for resource-constrained devices, this will
also allow for configuring things like flip-switches, in addition
to standard pushbuttons.

Will be required for a following commit.

Signed-off-by: Shine <4c.fce2@proton.me>
Tested-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/22494
(cherry picked from commit 3274238d29)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Pawel Dembicki 449f43829b mpc85xx: remove swconfig package
Every devices of mpc85xx was switched to DSA.
Swconfig can be removed.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22161
(cherry picked from commit a2b8a3fbb9)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Pawel Dembicki 7fb214fa9c mpc85xx: p2020: switch P2020RDB to DSA
Convert the P2020RDB DTS to DSA for the VSC7385 switch, add port
labels and fixed-link. Update board network defaults, preinit iface,
and compat version, and include the DSA switch kmod in the image.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22161
(cherry picked from commit 89d93700bf)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Edward Chow fb1f765ccd mpc85xx: unify wrapper address of simple image devices
The wrapper address of simple image devices should have been changed
at commit 6a8b831 , but only TL-WDR4900 and BR200-WP are changed at
that time, and now the wrapper address changes are split among patches
for specific devices. More importantly, commit 6a8b831 forgot to
change Enterasys WS-AP3715i, causing
https://github.com/openwrt/openwrt/issues/23112 .

This commit will gather the change of wrapper address of simple image
devices into a dedicated patch file.

Tested: Both WS-AP3715i and TL-WDR4900 v1 boot well.

Fixes: https://github.com/openwrt/openwrt/issues/23112
Signed-off-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/23121
(cherry picked from commit 9836f7ca13)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Edward Chow c44e5e1fdc mpc85xx: ws-ap3715i: use libdeflate-gzip for kernel
The simpleImage contains a payload already compressed with lzma-based
xz (by default), so further compressing it with lzma will often make
the result larger. On the contrary, compressing these simpleImages
with gzip can make the result smaller, so replace lzma with
libdeflate-gzip to compress kernel for ws-ap3715i.

Signed-off-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/23121
(cherry picked from commit e46844260b)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Edward Chow 1ab66b443d mpc85xx: ws-ap3715i: enable access to u-boot env
find_mtd_part() outputs /dev/mtdblockX, to which fw_setenv cannot
write, "/dev/mtd$(find_mtd_index '<vol name>')" could be used instead.

The envsize should also be changed to 0x1000 to make the CRC checksum
valid and the env block recognized by the uboot-envtools, but the
flash sector size remains 0x10000, otherwise the env block will be
readable but not writable.

The "read-only" mark within device tree is also removed.

Signed-off-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/23121
(cherry picked from commit 65a57d7159)
Link: https://github.com/openwrt/openwrt/pull/24972
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-02 11:21:25 +02:00
Mikhail Kshevetskiy b6a820ea85 airoha: an7581: dts: update number of available gpios
AN7581 SoC have more GPIOs. PCIE reset pins can be muxed to gpio,
so we have 50 GPIOs instead of 47.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/24646
(cherry picked from commit 9ccec981f5)
Link: https://github.com/openwrt/openwrt/pull/24884
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-26 11:10:33 +02:00
Mikhail Kshevetskiy dc1a8125d0 airoha: update pinctrl driver to match linux-7.3
Changes are based on linux-pinctrl/for-next (future linux-7.3) branch.
Existing pinctrl patches were adapted for upstream driver.

The commit was adapted to fit openwrt stable branch.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/24646
(cherry picked from commit 00f9f060a8)
Link: https://github.com/openwrt/openwrt/pull/24884
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-26 11:10:33 +02:00
Murad Rabadanov ecbf832c08 mediatek: filogic: add support for netis N6 V2
netis N6 V2 is a MT7981B-based router, hardware-compatible with
netis NX32U (confirmed via bootloader cross-flash). GPIO mappings
not covered by the vendor DTS were verified against NX32U and via
live link/carrier testing on switch ports, plus direct LED-toggle
confirmation on the physical device.

Hardware:
  SoC:      MediaTek MT7981B (Filogic 820)
  RAM:      256 MiB DDR3 (ESMT M15T2G16128A-AZR1-EFB, DDR3-1866)
  Flash:    128 MiB SPI-NAND
  Ethernet: 4x 1GbE (mt7531 switch: wan, lan1, lan2, lan3),
            2.5GbE internal CPU-switch link (gmac0, 2500base-x)
  WiFi:     MT7981 integrated 2.4GHz + MT7976C 5GHz radio,
            802.11ax, 2x2 MU-MIMO, HE160 supported (confirmed live;
            vendor firmware ships with HE80 for the AX1800 rating)
  USB:      1x USB 3.0 (vbus GPIO 23, active high)
  Buttons:  mesh/rfkill (GPIO 0), reset (GPIO 1)
  LEDs:     power (GPIO 4), status (GPIO 5), wan (GPIO 9),
            wlan 2.4GHz (GPIO 34, phy0tpt trigger),
            wlan 5GHz (GPIO 35, phy1tpt trigger),
            usb (GPIO 13, usbport trigger)
            all active low
  UART:     115200n8, uart0

MAC addresses:
  Interface   | Source           | Offset   | Address (this unit)
  ------------|------------------|----------|--------------------
  WAN         | Factory mac-base | 0x1fef26 | 30:07:5c:dc:7a:d2
  LAN/CPU     | Factory mac-base | 0x1fef20 | 30:07:5c:dc:7a:d0 (label)
  WiFi 2.4GHz | radio calibration (auto)     | 30:07:5c:dc:7a:d1
  WiFi 5GHz   | radio calibration (auto)     | b2:07:5c:dc:7a:d1

  LAN address matches the label on the device enclosure. WAN uses
  macaddr_factory_1fef26 on switch port@0, LAN/CPU uses
  macaddr_factory_1fef20 on port@6 (mt7531 switch). WiFi MACs are not
  set explicitly in DTS -- mt76 derives them from the radio's own
  calibration data, confirmed live to match the stock firmware value.

The USB LED (GPIO 13) was missed in the initial GPIO mapping pass --
it isn't referenced anywhere in the vendor DTS or any other board
signal, so it went unnoticed until manual GPIO toggling (`gpio clear
13` at the U-Boot prompt) confirmed it live on the physical device.
The USB LED on GPIO 13 uses the usbport trigger with trigger-sources
on both xhci ports, hence kmod-usb-ledtrig-usbport in DEVICE_PACKAGES.

The included U-Boot defenv for this board also avoids a silent
failure in ubi_write_production/ubi_write_recovery: these call
`ubi remove <vol>` without first detaching/reattaching the UBI
device, which fails silently on a busy volume while the boot script
proceeds as if it succeeded. Worked around here by adding
`ubi detach ; ubi part ubi ;` before the remove, a pattern already
used in other boards' defenvs (see issue #18231). Only this board's
defenv is touched -- other boards' defenv files are unchanged.

Known upstream issue (not specific to this port): probing
u-boot-env-layout on the ubootenv/ubootenv2 UBI volumes logs
"Invalid calculated CRC32" on every boot, see mediatek/filogic
issues #21876 and #22383.

Installation:
  Requires network access to stock firmware SSH (enabled by default)
  and a TFTP server on the same subnet.
  1. Set up a TFTP server on your PC at 192.168.1.254, serving the
     files from this release.
  2. SSH into stock firmware: ssh root@192.168.1.1
  3. Copy bl31-uboot.fip to the router and write it to the FIP
     partition: mtd write bl31-uboot.fip FIP
  4. Erase the ubi partition: mtd erase ubi
  5. Reboot. The new bootloader will detect the missing production
     image and automatically fetch initramfs-recovery.itb via TFTP.
  6. Once recovery has booted, SSH in again and sysupgrade to the
     production image: sysupgrade squashfs-sysupgrade.itb

Signed-off-by: Murad Rabadanov <the21.21@mail.ru>
Link: https://github.com/openwrt/openwrt/pull/24089
(cherry picked from commit 6c303018b3)
[ drop CONFIG_CMD_RNG/CONFIG_DM_RNG/CONFIG_RNG_MTK_V2: no mtk-rng
  driver in the 25.12 uboot-mediatek patch set ]
Signed-off-by: Murad Rabadanov <the21.21@mail.ru>
Link: https://github.com/openwrt/openwrt/pull/24548
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-24 00:51:35 +02:00
Mieczyslaw Nalewaj e472455a76 mediatek: mt7622: remove bogus dsa-migration from Netgear WAX206
The Netgear WAX206 was added to OpenWrt long after the mt7622 target
had already been converted to DSA. Consequently, this device never
shipped with a swconfig-based network setup and there is no DSA
migration to perform.

Remove the spurious $(Device/dsa-migration) reference. Device/dsa-migration
is not defined for the mediatek target, so the reference expands to nothing
and no DEVICE_COMPAT_VERSION was ever set for this device; removing it has
no effect on sysupgrade compatibility.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/24844
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 28f6d3e4fc)
2026-08-23 11:53:03 +02:00
Charles Joynson 58aa1b7f16 ramips: mt7621: add TL-R605 v1 as alternative name for TP-Link ER605 v1
This was the original name for the TP-Link ER605 v1 before rebranding.
Hardware is identical. Adds DEVICE_ALT0 entries for the original branding.

Signed-off-by: Charles Joynson <ctjoynson@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24682
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry picked from commit 4a2873190c)
Link: https://github.com/openwrt/openwrt/pull/24681
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 12:22:40 +02:00
Charles Joynson c95c39b147 ramips: mt7621: add support for TP-Link ER605 v1
This commit adds support for TP-Link ER605 v1. Like its successor the
ER605 v2, the MAC address can only be found in the tddp partition.

Hardware specifications:
- CPU: MediaTek MT7621DAT (880 MHz, 2 cores)
- CPU type: MIPS 1004Kc
- Flash: 16 MiB (GigaDevice GD25Q127CSIG)
- RAM: 128 MiB
- LAN speed: 1GbE
- LAN ports: 4
- WAN speed: 1GbE
- WAN ports: 1
- Serial: 4-pin header, unpopulated, 3.3V TTL, (115200 8N1)
- Power: 9 VDC, 0.85 A
- LEDs: Power (Green), System (Green)
- Button: RESET

Factory firmware (v1.2.0 Build 20220114 Rel.76871):
root@ER605:~# ubus call system board
{
	"kernel": "3.10.108",
	"hostname": "ER605",
	"system": "MT7621",
	"model": "mtk-apsoc-demo",
	"release": {
		"distribution": "OpenWrt",
		"version": "Barrier Breaker",
		"revision": "unknown",
		"codename": "barrier_breaker",
		"target": "ramips\/generic",
		"description": "OpenWrt Barrier Breaker 14.07"
	}
}

Factory partitions:
0x000000000000-0x000000040000 : "bootloader"
0x000000040000-0x000000070000 : "bootloader-fs"
0x000000070000-0x000000080000 : "extra-para"
0x000000080000-0x000000200000 : "kernel"
0x000000200000-0x000000df0000 : "rootfs"
0x000000df0000-0x000000e10000 : "panic-oops"
0x000000e10000-0x000000e20000 : "partition-table"
0x000000e20000-0x000000e30000 : "device-info"
0x000000e30000-0x000000e40000 : "support-list"
0x000000e40000-0x000000e50000 : "firmware-info"
0x000000e50000-0x000000e60000 : "tddp"
0x000000e60000-0x000000e80000 : "log"
0x000000e80000-0x000001000000 : "rootfs_data"
0x000000000000-0x000001000000 : "firmware"

New OpenWrt partitions:
...
0x000000080000-0x000000df0000 : "firmware"
...
0x000000e80000-0x000001000000 : "rootfs_data_back"

MAC addresses:
 - label/LAN = 'option macaddr' from factory tddp partition
 - WAN = label MAC + 1

Installation:
Split initramfs into 2 parts for writing to the kernel and rootfs
partitions on live device, leave http server up for sysupgrade.

dd if=initramfs-kernel.bin of=kernel-part.bin bs=64k count=24
dd if=initramfs-kernel.bin of=rootfs-part.bin bs=64k skip=24
md5sum kernel-part.bin rootfs-part.bin
python3 -m http.server -d . 8080

Downgrade to TP-Link firmware v1.3.1 or less if running v1.3.2.

From the web UI, open "System Tools" and select "Diagnostics".
Enable "Remote Assistance" and login as root.

tplink_label_mac=01:23:45:67:89:AB
tplink_username=admin
echo -n "$tplink_label_mac$tplink_username" | md5sum | cut -c1-16
ssh \
  -o "KexAlgorithms=+diffie-hellman-group1-sha1" \
  -o "HostKeyAlgorithms=+ssh-rsa" \
  root@192.168.0.1

Download partial initramfs binaries to /tmp and verify checksums match.

cd /tmp
wget http://192.168.0.20:8080/kernel-part.bin
wget http://192.168.0.20:8080/rootfs-part.bin
md5sum kernel-part.bin rootfs-part.bin

Write partial initramfs binaries to kernel and rootfs.

mtd -e kernel write kernel-part.bin kernel
mtd -r -e rootfs write rootfs-part.bin rootfs

Login to OpenWrt initramfs as root.

ssh root@192.168.1.1

Erase firmware partition and perform sysupgrade.

mtd erase firmware
sysupgrade -n -p http://192.168.1.111:8080/squashfs-sysupgrade.bin

Signed-off-by: Charles Joynson <ctjoynson@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24331
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry picked from commit d63c0ed825)
Link: https://github.com/openwrt/openwrt/pull/24681
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 12:22:40 +02:00
Fil Dunsky cf51ed8784 mediatek: add support Teralink TL3020
This commit adds support for Teralink TL3020 256mb wireless router.

Specification
-------------
- SoC       : MediaTek MT7981B dual-core ARM Cortex-A53
- RAM       : DDR3 256 MiB (ESMT M15T2G16128A, DDR3-1866)
- Flash     : SPI-NAND 256 MiB (Winbond W25M02GV)
- WLAN      : MediaTek MT7976 2.4/5 GHz Wi-Fi 6
- Ethernet  : MediaTek MT7531 switch, 1x WAN + 3x LAN 10/100/1000 Mbps
              (2.5GbE uplink via gmac0)
- USB       : 1x USB 2.0 Type-A (power enable on GPIO 14)
- Buttons   : WPS, Reset
- LEDs      : 7x blue, 1x red
- UART      : 4-pin header on PCB
  - assignment  : 3.3V, GND, TX, RX
  - settings    : 115200n8
- Power     : 12 VDC, 1.5 A (barrel jack)

MAC addresses
-------------
EEPROM MAC is same for all the devices, but there is a `config2` partition
with unique MAC addresses:

| Interface | MAC source                                 |
|-----------|--------------------------------------------|
| LAN       | config2, offset 0x707 (ASCII, "lanmac")    |
| WAN       | config2, offset 0x787 (ASCII, "wanmac")    |
| WLAN 2.4G | config2, offset 0x68a (ASCII, "wifi2gmac") |
| WLAN 5G   | config2, offset 0x60a (ASCII, "wifi5gmac") |

The LAN MAC (gmac0) is the one printed on the device label.

Installation
------------
Factory bootloader is locked to 64mb partition layout, so OpenWrt U-Boot
has to be flashed first. Steps 1, 2 and 4 are run from a shell on the
stock firmware, where the 'bl2' and 'fip' partitions are writable - in
OpenWrt they are read-only, so the procedure cannot be repeated from
OpenWrt. Back up both partitions before overwriting them:

    mtd read bl2 /tmp/bl2.bin
    mtd read fip /tmp/fip.bin

1. Upload OpenWrt 'bl31-uboot.fip' and 'preloader.bin' images to the /tmp
   dir of the router using scp protocol
2. Write fip and bl2 (replace bootloader):

    mtd write /tmp/openwrt-mediatek-filogic-teralink_tl3020-256mb-bl31-uboot.fip fip
    mtd write /tmp/openwrt-mediatek-filogic-teralink_tl3020-256mb-preloader.bin bl2

3. Place OpenWrt
   'openwrt-mediatek-filogic-teralink_tl3020-256mb-initramfs-recovery.itb'
   image on the tftp server (IP: 192.168.1.254)
4. Erase 'ubi' partition and reboot the router:

    mtd erase ubi
    reboot

5. U-Boot automatically boots the OpenWrt recovery image from the tftp
   server to the RAM
6. Upload OpenWrt
   'openwrt-mediatek-filogic-teralink_tl3020-256mb-squashfs-sysupgrade.itb'
   image to the /tmp dir of the router (IP: 192.168.1.1) using scp
   protocol
7. Connect to the router using ssh and run:

    ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5
    ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
    ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
    sysupgrade -n openwrt-mediatek-filogic-teralink_tl3020-256mb-squashfs-sysupgrade.itb

Recovery
--------
1. Place OpenWrt
   'openwrt-mediatek-filogic-teralink_tl3020-256mb-initramfs-recovery.itb'
   image on the tftp server (IP: 192.168.1.254)
2. Press "Reset" button and power on the router. After ~10 sec release
   the button.
3. Use OpenWrt initramfs system for recovery

Reverting to stock firmware requires writing the 'bl2' and 'fip' backups
taken above back with 'mtd write', then flashing the stock image; without
those backups there is no way back, because the stock bootloader cannot
be downloaded from the vendor.

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24518
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry picked from commit 63bf79af2a)
[ drop CONFIG_CMD_RNG/CONFIG_DM_RNG/CONFIG_RNG_MTK_V2: no mtk-rng
  driver in the 25.12 uboot-mediatek patch set ]
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24600
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 12:06:22 +02:00
Donghyun Ko 80bc5eabe5 mediatek: fix WLAN LED indication for ipTIME AX3000SE
OpenWrt has recently added the "network" LED trigger to support routers
that have a single WLAN LED for multiple phys.

This patch replaces the temporary workaround used during initial
support, where the LED was triggered only by activity on a single phy.

With this change, the WLAN LED on the ipTIME AX3000SE now correctly
indicates activity on both `phy0` and `phy1`.

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23723
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry picked from commit 9e697c05df)
Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23978
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 01:58:16 +02:00
Maxim Anisimov feaa1e685a mediatek: fix nmbm max-reserved-blocks for Keenetic/Netcraze devices
The devicetree set mediatek,bmt-max-reserved-blocks to 64, but the
factory firmware uses 256. With the lower value NMBM fails to locate
its signature on some boards, and the device does not boot.

Restore the factory value of 256 to match stock firmware and fix
boot on affected units.

Vendor nmbm max blocks value:
https://github.com/keenetic/kernel-49/blob/master/drivers/mtd/nmbm/nmbm-mtd.c#L31

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24001
(cherry picked from commit 7085d16552)
Link: https://github.com/openwrt/openwrt/pull/24568
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-21 11:37:56 +02:00
Ryan Leung bd36bf56f7 mediatek: filogic: comfast cf-wr632ax: fix nmbm configuration mismatch
Fix nmbm configuration mismatch error due to different SPI NAND OOB size in the U-Boot and Linux
drivers by overriding it to 64 using the property introduced in commit e585ae70d4
("kernel: nmbm: add mediatek,bmt-mtd-overridden-oobsize property").

Fixes: https://github.com/openwrt/openwrt/issues/24546
Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/24552
(cherry picked from commit 7a4d6eaf14)
Link: https://github.com/openwrt/openwrt/pull/24733
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-21 00:10:07 +02:00
Lukas Stockner 4e545bf51e ipq806x: add apboot package for AP-32x
This is unfortunately needed to disable the signature verification
in the stock bootloader.

Co-authored-by: Paul Spooren <mail@aparcar.org>
Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren <mail@aparcar.org>
(cherry picked from commit 68ef94cb25)
Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Link: https://github.com/openwrt/openwrt/pull/24437
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:29:39 +02:00
Lukas Stockner 65f01eb357 ipq806x: add support for Aruba AP-32x
This is a dual-radio 802.11a/b/g/n/ac access point with
dual Gigabit Ethernet.

There are two closely related models: The AP-324, which has external
antenna connectors, and the AP-325, which has internal antennas.
The board appears to be identical, and the same image works on both.
Additionally, the Siemens Scalance W1750D is an OEM variant using
the same board, so the image also works on that.

Unfortunately the factory APBoot bootloader enforces cryptographic
signatures on the firmware before booting, so a modified version
must be flashed via the serial port. See [^1] for details.

Specifications
==============
* Device:       Aruba AP-325 / AP-324
* SoC:          Qualcomm IPQ8068 2x1.4GHz ARMv7-A
* RAM:          512MiB (2x Winbond W632GU6MB-12)
* SPI flash:    4MiB Macronix MX25U3235F
* NAND flash:   128MiB Winbond W29N01HZBINF
* WiFi:         2x Qualcomm QCA9990 (one 2.4G, one 5G)
* Ethernet:     2x 1000BASE-T (Marvell 88E1514 PHY), both PoE-capable
* Power:        PoE 802.3at or 12V DC jack
* LEDs:         Red/Amber/Green status LED, Amber/Green WiFi LED
* Buttons:      1x, behind hole next to DC jack
* Console:      RJ45 connector, Cisco pinout
* USB:          1x USB 2.0 Type A, 1x internal to BLE, SoC has USB 3.0
                host but board is only wired for 2.0
* BLE:          TI CC2540 SoC, connected to USB and UART, unpopulated
                debug header on PCB
* TPM:          Atmel AT97SC3205T

How to install
==============
The stock bootloader APBoot appears to be vendor fork of U-Boot, which
disables much of the usual functionality and comes with its own booting
and firmware upgrade logic.

Unfortunately, this logic enforces RSA signatures on images,
even for the default boot from NAND.

Therefore, a patched bootloader is needed, which is built as a package.
In addition to the signature check removal, this also changes
the serial baudrate to 115200.

Luckily, the stock firmware does not disable the `sf` command
(it just hides it until you run `diag`), so the patched bootloader
can be fetched via TFTP and then flashed via console.

Flashing patched APBoot
-----------------------
* Build OpenWrt, or download `openwrt-ipq806x-generic-aruba_ap-32x-apboot.mbn`
* Connect serial cable and wired ethernet
* Access stock APBoot console at Baud 9600
* Flash patched bootloader:
```
setenv serverip <your TFTP server IP>
setenv autostart n
netget 44000000 openwrt-ipq806x-generic-aruba_ap-32x-apboot.mbn
sf probe 0
sf erase 220000 100000
sf write 44000000 220000 100000
reset
```

Booting OpenWrt
---------------
* Connect serial cable and wired ethernet
* Access patched APBoot console at Baud 115200
* Run `setenv serverip <your TFTP server IP>`
* Run `tftpboot openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari`

Installing OpenWrt
------------------
* Connect serial cable and wired ethernet
* Access patched APBoot console at Baud 115200
* Consider backing up stock firmware(s) (UBI volumes `aos0` and/or `aos1`)
  by booting into OpenWrt via initramfs (see above) and dumping them
* Wipe and repartition NAND flash (see below for explanation):
```
nand device 0
nand erase.chip
reset
ubi part ubifs
ubi remove ubifs
ubi create ubifs 1
ubi create rootfs_data
```
* Follow steps above to boot OpenWrt via initramfs
* From OpenWrt, persist installation via sysupgrade

Reverting to stock FW
---------------------

The patched bootloader remains compatible with the original firmware,
so you can just wipe the NAND, let APBoot recreate the partitions,
and flash back the `aos0`/`aos1` backup from above.

Current status
==============

Tested and working
------------------

* Console
* Wired GbE (both ports)
* WiFi (both 2.4G and 5G)
* LEDs
* Restart Button
* USB port
* External watchdog
* TPM
* BLE SoC

Future work
-----------

* GPIOs for:
  * power source (8 indicates DC jack, 59 indicates 802.3at)
  * reset source (64 for warm reset, 65 for watchdog)
  * USB overcurrent (63)
* BLE SoC reflashing
  * CC2540 comes with Aruba-specific FW out of the box
  * Debug header is exposed on PCB (pinout GND-VCC-Clock-Data-Reset),
    but that requires disassembly
  * Stock BLE FW appears to support reflashing via UART, but protocol
    would need to be reverse-engineered
* ramoops/pstore
  * It appears that APBoot clears the RAM on boot, might be something
    we can patch out as well
* Porting a modern U-Boot

Flash layout
============

SPI flash
---------

```
0x000000-0x020000 sbl1
0x020000-0x040000 mibib
0x040000-0x080000 sbl2
0x080000-0x100000 sbl3
0x100000-0x110000 ddrconfig
0x110000-0x120000 ssd
0x120000-0x1a0000 tz
0x1a0000-0x220000 rpm
0x220000-0x320000 appsbl
0x320000-0x330000 appsblenv
0x330000-0x370000 art
0x370000-0x380000 panicdump
0x380000-0x390000 certificate
0x390000-0x3a0000 mfginfo
0x3a0000-0x3b0000 flashcache
0x3b0000-0x400000 aosspare
```

Factory NAND flash
------------------
* 32MiB MTD partition `aos0`, formatted as UBI
  * 32MiB UBI volume `aos0`
    * contains kernel+initrd of the primary firmware,
      initrd contains the entire root FS
* 32MiB MTD partition `aos1`, formatted as UBI
  * 32MiB UBI volume `aos1`
    * contains kernel+initrd of the secondary firmware,
      initrd contains the entire root FS
* 64MiB MTD partition `ubifs`, formatted as UBI
  * 64MiB UBI volume `ubifs`
    * Contains UBIFS, overlay-mounted on top of the initrd,
      shared between firmware slots

APBoot understands UBI, and will read the kernel from the
`aos0` or `aos1` volume (depending on `os_partition`)
with fallback to the other one in case a check fails.

Kernels are expected to have a vendor-specific header, the included
script will add that header with the correct checksum but no signature.

OpenWrt NAND flash
------------------

OpenWrt assumes separate UBI volumes for kernel and rootfs,
as well as a volume that must be named `rootfs_data` for the UBIFS.

Unfortunately, APBoot actively checks the UBI volumes at boot, and will
repartition if it doesn't find the volumes that it expects (listed above).

Luckily, it doesn't check their size, only their existence. Therefore,
we can use the following layout:

* 32MiB MTD partition `aos0`, formatted as UBI
  * 32MiB UBI volume `aos0`
    * contains OpenWrt kernel+initrd
* 32MiB MTD partition `aos1`, formatted as UBI
  * 32MiB UBI volume `aos1`
    * contains OpenWrt root squashfs
* 64MiB MTD partition `ubifs`, formatted as UBI
  * small (single-LEB) UBI volume `ubifs`
    * Dummy volume, only there to satisfy APBoot
  * almost 64MiB UBI volume `rootfs_data`
    * contains UBIFS, overlay-mounted on top of the rootfs

[^1]: https://github.com/lukasstockner/ap325-apboot-openwrt

Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren <mail@aparcar.org>
(cherry picked from commit d2a75029a5)
Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Link: https://github.com/openwrt/openwrt/pull/24437
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:29:39 +02:00
Lukas Stockner c1096e0e8b ipq806x: add CONFIG_GPIO_WATCHDOG
The AP-325 (and variants) has an external watchdog, so this is needed to
regularly toggle the GPIO and keep the watchdog happy.

Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren <mail@aparcar.org>
(cherry picked from commit 58015a1c2a)
Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Link: https://github.com/openwrt/openwrt/pull/24437
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:29:39 +02:00
Lukas Stockner 6ebb080d8c base-files: support rootfs_data on its own partition
The current code assumes that the rootfs_data UBI volume is on the same MTD
partition as the rootfs.
Unfortunately, this does not work on the Aruba AP-325 (and variants), since
the bootloader enforces a particular UBI volume layout.

Therefore, this adds a separate variable to set the rootfs_data partition,
and updates all existing devices with a non-default rootfs partition to also
specify the new variable.

Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren <mail@aparcar.org>
(cherry picked from commit bf770bc4e3)
Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Link: https://github.com/openwrt/openwrt/pull/24437
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:29:39 +02:00
Maxim Anisimov d73bf56039 kernel: fix FM25G01B/FM25G02B Quad I/O read dummy
The FM25G01B/FM25G02B datasheets specify a single dummy byte for the
0xEB Quad I/O read-from-cache, but the generic read_cache_variants set
issues two. The extra dummy byte shifts the data phase and returns
corrupted data with no ECC error, breaking boot on NC-1812/KN-1812.
Use a dedicated read-from-cache variant set with ndummy=1 for 0xEB.

Both the FM25G{01,02}B support (d5a5c9eb2ee9) and this fix
(8211f2d74b35) were merged into the mtd tree (nand/next). Backport both
patches to backport-6.12 using the actual upstream commits, so they
apply to the OpenWrt kernel tree and upstream nand/next as is.

FM25G01B datasheet: https://www.fmsh.com/nvm/FM25G01B_ds_eng.pdf
FM25G02B datasheet: https://www.fmsh.com/nvm/FM25G02B_ds_eng.pdf

Signed-off-by: Aleksandr Mineev <sanderrrs@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24007
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry picked from commit 6b98618527)
[Adapted to the SPI-NAND read-from-cache op API used before the
 SPINAND_PAGE_READ_FROM_CACHE_1S_4S_4S_OP-style rename: kernel 6.12
 still uses SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP/_X4_OP/_DUALIO_OP/
 _X2_OP/_OP instead.]
Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24781
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:02:09 +02:00
Maxim Anisimov af591a8097 kernel: add support for FudanMicro FM25G01B and FM25G02B spi-nand
This commit adds support for FudanMicro FM25G01B and FM25G02B SPI NAND
chips. This is required to:
1. Fix bootloop on new revision of Keenetic KN-1812 and Netcraze NC-1812
   (with FudanMicro FM25G02B SPI NAND)
2. Add Nokia XG-040G-MD support (device has either SkyHigh or FudanMicro
   SPI NAND).

Fixes: https://github.com/openwrt/openwrt/issues/23855
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23864
(cherry picked from commit 7edb29d241)
[Adapted to the SPI-NAND read-from-cache op API used before the
 SPINAND_PAGE_READ_FROM_CACHE_1S_4S_4S_OP-style rename: kernel 6.12
 still uses SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP/_X4_OP/_DUALIO_OP/
 _X2_OP/_OP instead. Re-imported as the mainline commit d5a5c9eb2ee9
 under backport-6.12/436, rather than the mailing-list-form patch
 that 7edb29d originally added under pending-6.18/401.]
Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24781
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 23:02:09 +02:00
Bogdan K 69566b4133 mediatek: filogic: add USB VBUS regulator for Globitel BT-R320
USB VBUS on the BT-R320 is controlled by GPIO14.

Add a fixed regulator and hook it up to the xHCI controller.
GPIO_ACTIVE_HIGH was tested on the device: the dummy regulator warning is gone
and a USB device enumerates.

Signed-off-by: Bogdan K <zikwarface134@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24063
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 1a289c47a8)
Link: https://github.com/openwrt/openwrt/pull/24078
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-18 11:08:55 +02:00
Bogdan K 2dc9874f9f mediatek: filogic: fix Globitel BT-R320 recovery image name
The initramfs image name already contains "-initramfs". Using
"-initramfs-recovery.itb" as the suffix makes the BT-R320 recovery artifact
contain it twice.

Use "-recovery.itb" instead.

Fixes: a3105d3f95 ("mediatek: filogic: add support for Globitel BT-R320")
Signed-off-by: Bogdan K <zikwarface134@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24059
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b16caea407)
Link: https://github.com/openwrt/openwrt/pull/24078
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-18 11:08:55 +02:00
Bogdan K 38e3a27c9a mediatek: filogic: fix Globitel BT-R320 FIT rootfs mapping
Globitel BT-R320 boots the sysupgrade FIT from the eMMC production
partition with root=/dev/fit0.

The device tree did not describe the production GPT partition and
/chosen/rootdisk did not point at the FIT container. fitblk then had no
rootdisk match and the board stopped at:

  Waiting for root device /dev/fit0...

Describe the eMMC GPT partitions, set /chosen/rootdisk to production,
and use the FIT sysupgrade path.

Fixes: a3105d3f95 ("mediatek: filogic: add support for Globitel BT-R320")
Signed-off-by: Bogdan K <zikwarface134@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23895
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit a6e1135d6d)
Link: https://github.com/openwrt/openwrt/pull/24078
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-18 11:08:55 +02:00
Kirill Molotov d2e9eb9536 mediatek: filogic: add support for Globitel BT-R320
The Globitel BT-R320 (PCB rev V1.2) is an enterprise/ISP Wi-Fi 6 router
based on the MediaTek MT7981B (Filogic 820) platform.

Hardware specifications:
SoC: MediaTek MT7981B (Filogic 820)
RAM: 1GB DDR4 (Nanya NT5AD512M16C4-HR)
Flash: 128GB eMMC (UNIC UNMEN07GC4C31BS)
Switch: MediaTek MT7531AE
Ethernet: 1x 1GbE WAN, 3x 1GbE LAN
Wi-Fi: 2.4 GHz: 2x2 MT7976CN and 5 GHz: 2x2 MT7976CN (integrated FEM)
USB: 1x USB 3.0
LEDs: 2x Green (WLAN 2.4G / 5G)
Buttons: 1x Reset (GPIO 1, ACTIVE_LOW), 1x WPS (GPIO 0, ACTIVE_LOW)
Power: 12V, 1.5A
UART: 115200 8n1

Note on eMMC configuration (Addressing 52MHz limit on 128GB IC):
Debugfs output from the OEM firmware (/sys/kernel/debug/mmc0/ios) confirms
the manufacturer deliberately limits the eMMC to 52MHz High-Speed mode at 3.3V
(actual clock: 52000000 Hz, bus width: 8 bits, timing spec: mmc high-speed).
Therefore, the conservative DTS properties (max-frequency = <52000000> and
lack of HS200/HS400 support) strictly reflect the OEM hardware design.

Installation instructions:
1. SSH into the stock router (192.168.132.1, user: root, pass: password).
2. Back up existing partitions using dd.
3. Upload the OpenWrt-built GPT partition table (*-gpt.bin) and flash it:
   dd if=/tmp/gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
   echo -e 'w' | fdisk /dev/mmcblk0
4. Flash the OpenWrt-built U-Boot (*-bl31-uboot.fip) to the FIP partition:
   dd if=/tmp/uboot.fip of=$(blkid -t PARTLABEL=fip -o device) conv=fsync
5. Disconnect power. Connect PC with static IP 192.168.1.2.
6. Hold reset button, power on, and wait 10 seconds to enter U-Boot web UI.
7. Flash the OpenWrt sysupgrade image.

Stock partition layout:
p1: uboot_env
p2: factory
p3: fip
p4: kernel
p5: rootfs
p6: userdata

MAC address layout (factory partition, mmcblk0p2):
WAN: xx:xx:xx:xx:xx:xx (factory offset 0x24)
LAN: xx:xx:xx:xx:xx:xy (factory offset 0x2a)
Label: Matches LAN MAC (0x2a)
2.4G: Base MAC (extracted from factory offset 0x4)
5G: Base MAC with Locally Administered bit set

Signed-off-by: Kirill Molotov <kirill2015molotov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23188
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit a3105d3f95)
Link: https://github.com/openwrt/openwrt/pull/24078
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-18 11:08:54 +02:00
Shiji Yang 52e22c4b16 kernel: bump 6.12 to 6.12.103
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.103

Upstream merged patch:
- airoha/patches-6.12/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch[2]

New kconfig symbol:
- EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS[1]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.103&id=0c676903cb2a61992ded8e7907609cc6b0f11744
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.103&id=bf84b181b57f2b9df1b3df55e5fca1954804b25a
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24551
(cherry picked from commit 716ca269bc)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:48 +02:00
Shiji Yang 6d515de8c9 kernel: bump 6.12 to 6.12.102
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.101
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.102

Upstream merged patches:
- generic/backport-6.12/620-v6.15-ppp-use-IFF_NO_QUEUE-in-virtual-interfaces.patch[1]
- generic/backport-6.12/621-v6.17-ppp-convert-to-percpu-netstats.patch[2]
- generic/backport-6.12/625-v7.0-ppp-enable-TX-scatter-gather.patch[3]
- generic/pending-6.12/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch[4]
- airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch[7]
- airoha/patches-6.12/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch[8]

Manually rebased patches:
- bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch[5]
- bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch[5]
- bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch[5]
- bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch[5]

New kconfig symbol:
- GPU_BUDDY [6]

Obsolete kconfig symbol:
- DRM_LIB_RANDOM [6]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=cc92d8e5753da5d4e8fbc3a3a1742b1646492099
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=fa4e1dad10e78f96876784c3e1b5566da59e7d90
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=ff24b5075329f2f8d36a16cf156cf27458997660
[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=3612dccaa22bcc75fd10ceb14aef60d693567cf3
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=c4657f5438fb8c2dfbe6e23b28f2a2bd5aaf8116
[6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=1c44c262a0c2dfd083dc00308d6488d23b58b59e
[7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=16dc07941b8dd8743eb4011869b4502d9b1e8fdb
[8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=5003ab61b9b547bcd70277dc4b82a30e1c48bc02
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24551
(cherry picked from commit bdc22af245)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:48 +02:00
Rosen Penev f3a2b0fea9 generic: ppc: replace revert with proper solution
Upstream removed simple-bus from the NAND node to match documentation,
but failed to keep fsl,ifc working. Add a patch that properly fixes
this.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23657
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6863c6c5f3)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:48 +02:00
Shiji Yang 7656e6de5a kernel: bump 6.12 to 6.12.100
Changelog:
- https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.99
- https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.100

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24476
(cherry picked from commit ce16dd8ff0)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:48 +02:00
Shiji Yang f10ae5e6db kernel: bump 6.12 to 6.12.98
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.98

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24081
(cherry picked from commit 3755d0f8e4)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:48 +02:00
Shiji Yang e69fb9e2b3 kernel: bump 6.12 to 6.12.97
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.97

Upstream merged patches:
- generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch[1]
- generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch[2]
- qualcommax/patches-6.12/0753-net-dsa-qca8k-fix-led-devicename-when-using-external-mdio-bus.patch[3]
- airoha/patches-6.12/038-02-v6.14-net-airoha-Introduce-ndo_select_queue-callback.patch[9]
- airoha/patches-6.12/038-03-v6.14-net-airoha-Add-sched-ETS-offload-support.patch[10]
- airoha/patches-6.12/089-v6.14-net-airoha-Fix-channel-configuration-for-ETS-Qdisc.patch[11]

Manually rebased patches:
- bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch[4]
- generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch[5]
- loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch[6-7]

New kconfig symbol:
- DEBUG_NET_SMALL_RTNL[8]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5dc96cd938181dec01c77445c39da26f645e10e5
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=b17b73e1178aced9006b887e67e8b88fed0a08c9
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=562a838a689b6080a977deeb706a18ae8d7774a1
[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5ca45195c78bc13e5e7fad8e9c1ccfaf2859699a
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=a44c473ba778b05f9bf0f4873271fab0cec6981a
[6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=8ea20054e8d40a51c82ac4ef625e24a11cf1c0a7
[7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.18.y&id=666fc2e6e4d0a37592e5a3029deddc272e10df1e
[8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&&id=54ddb19c3d7a625d80364fd526af8849ba61e8aa
[9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=4137e7f9b80ffd81cde29f9311d78c0dab1b65ed
[10] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=e99fe426a842dcdbe7f8108ec6dff77b3ba6c336
[11] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=4c60634494ff77a3e0f5f73cbdeb3000f135153c
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24081

(cherry picked from commit cd0496035c)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:54:47 +02:00
Shiji Yang 21b63fed10 mediatek: drop PCIe reset assert delay patch
This patch has already been merged into linux 5.17 kernel.

Link: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.17.y&id=65ace9a85fa7f88aec4d9d842061108161fa47bc
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22175
(cherry picked from commit 6e7d23be8b)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:51:03 +02:00
Shiji Yang 22b571bdb2 kernel: bump 6.12 to 6.12.96
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.96

Upstream merged patch:
- rockchip/patches-6.12/035-02-v6.13-gpio-rockchip-change-the-GPIO-version-judgment-logic.patch[1]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.96&id=2b93fe74c90babae3d6951e753dc7501a3d38e67
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24081
(cherry picked from commit 5b83d0269b)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:50:38 +02:00
Shiji Yang 82311e87fb kernel: bump 6.12 to 6.12.95
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.95

Upstream merged patch:
- bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch[1]

Manually rebased patches:
- bcm27xx/patches-6.12/950-0501-gpiolib-Override-gpiochip-numbers-with-DT-aliases.patch
- bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.95&id=0e64be02dfc83e28c5ec8c21513da86dcf079bdd
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24081
(cherry picked from commit 77262b2d2e)
Link: https://github.com/openwrt/openwrt/pull/24703
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-16 13:50:38 +02:00
Myeongjae SONG d69c2a7bea ramips: fix PCIe reset GPIOs for ipTIME A8004T
The ipTIME A8004T requires GPIO19 and GPIO8 for PCIe reset control.

GPIO8 is assigned to UART3 by default, so configure the pin state
to make it available as a GPIO and add both GPIOs to the PCIe
reset-gpios property.

This fixes PCIe initialization after warm reboot.

Signed-off-by: Myeongjae SONG <devparlair@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24534
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
(cherry-picked from 8eb204ad81)
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-14 23:08:39 +02:00
Dmitry Mostovoy 95dec97d08 mediatek: add support for Cudy WR3000U v1
Hardware:
 - SoC: MediaTek MT7981B
 - CPU: 2x 1.3 GHz Cortex-A53
 - Flash: 256 MiB ESMT F50L2G41XA
 - RAM: DDR3, 512 MiB
 - WLAN: 2.4 GHz, 5 GHz (MediaTek MT7976CN, 802.11ax)
 - 1x WAN MT7531 (JXD 2531Z) 10/100/1000 Mbps
 - 4x LAN 2x MT7530 (JXD 2529S) 10/100/1000 Mbps
 - USB 3.0 port
 - Buttons: Reset, WPS
 - 8x LEDs: 2x Red, 6x Blue
 - Serial console: no need to solder. 115200 8n1
 - Power: 12 VDC, 1.5 A

The DTS inherits WBR3000UAX because WR3000U is almost the same.
The only difference is size of NAND and factory UBI length.

+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| WAN     | D4:0D:AB:xx:xx:x1 | label+1   |
| LAN     | D4:0D:AB:xx:xx:x0 | label     |
| WLAN 2g | D4:0D:AB:xx:xx:x0 | label     |
| WLAN 5g | D6:0D:AB:xx:xx:x1 | label+1   |
+---------+-------------------+-----------+

There are 2 ways to install OpenWrt:
- via an intermediate RSA-signed vendor's image or
- via UART && TFTPd

Migration to OpenWrt via OEM firmware:
- Download the migration image from
  https://drive.google.com/drive/folders/1BKVarlwlNxf7uJUtRhuMGUqeCa5KpMnj
  (The folder is Cudy's official "Cudy Intermediary OpenWrt Firmware" resource)
- Upload the migration image via OEM web interface
- After flashing, OpenWrt is accessible via http://192.168.1.1
- Flash the official OpenWrt image

Install using UART & TFTP:
- Connect to UART.
- Connect to LAN and set your IP to 192.168.1.88/24.
- Configure a TFTP server to serve
  openwrt-mediatek-filogic-cudy_wr3000u-v1-initramfs-kernel.bin file
  and run the TFTP server.
- Press reset and power-on the router. Hold the reset button for 5 seconds
- TFTP error: 'File not found' appears and MTK console becomes available
- Enter the following commands in the console:
  setenv bootfile openwrt-mediatek-filogic-cudy_wr3000u-v1-initramfs-kernel.bin
  tftpboot
  bootm
- After booting to initramfs, via http://192.168.1.1 flash
  openwrt-mediatek-filogic-cudy_wr3000u-v1-squashfs-sysupgrade.bin
- After flashing, OpenWrt is accessible via http://192.168.1.1

If you fail to flash the device,
you can use TFTP to flash back to the original firmware:
- Download the original firmware from
  https://www.cudy.com/pages/download-center/wr3000u-256mb-1-0
- Connect to LAN and set your IP to 192.168.1.88/24.
  Configure a TFTP server and an recovery.bin firmware file
- With the router off, press the RESET button.
  While the router is turning on,
  the button should continue to be pressed for at least 5 seconds
- After 1-2 minutes the original firmware is available on http://192.168.10.1

Signed-off-by: Dmitry Mostovoy <stavultras@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24447
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b9d7b448c2)
Link: https://github.com/openwrt/openwrt/pull/24537
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-14 11:09:39 +02:00
Fil Dunsky 347fd4537b mediatek: filogic: fix sysupgrade for Wavlink WL-WNT100X3
The stock layout of the WL-WNT100X3 splits the SPI-NAND into
bl2/u-boot-env/factory/fip/ubi/hw and the sysupgrade image is a
sysupgrade-tar that has to be unpacked into the "ubi" partition.

The board was however added to the default_do_upgrade() case, which
writes the image to ${PART_NAME:-image}, i.e. to the "firmware" MTD
partition that does not exist on this device:

  find_mtd_index firmware -> []
  mtd: Could not open mtd device: firmware

mtd fails, do_stage2 exits before flashing anything and the board
reboots into the old firmware without a visible error, so every
OpenWrt-to-OpenWrt sysupgrade looks like a silent no-op. Only the
initial installation works, since that one is performed by the sysupgrade
of the vendor firmware.

Drop the entry so the board falls through to the generic
nand_do_upgrade() case with CI_UBIPART defaulting to "ubi", like the
identically partitioned WL-WN586X3B.

The WL-WNT100X3 (OpenWrt U-Boot layout) variant uses fit_do_upgrade()
and is not affected.

Fixes: 829d432ecd ("mediatek: add support for Wavlink WL-WNT100X3")
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24684
(cherry picked from commit 17d131669f)
Link: https://github.com/openwrt/openwrt/pull/24686
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-14 10:58:57 +02:00
Christian Marangi 9495b6e74a airoha: refresh patch after upstream patch backport
Automatically refresh with make target/linux/refresh after upstream patch
backport.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-07-30 15:53:31 +02:00
Christian Marangi 7865e4bfae airoha: replace multi serdes patch with upstream kernel version
Now that multi serdes patch are accepted upstream, reorder the current
patch in the 1xx numbering and add the kernel version tag.

Also replace the downstream patch with the exact version merged upstream.

Downstream PCS implementation is updated with a new revision for the
ethernet code.

Update any patch affected by these changes.

Link: https://github.com/openwrt/openwrt/pull/23849
(cherry picked from commit 3ed5f08733)
[ fix conflict error ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-07-30 15:41:43 +02:00
Lorenzo Bianconi 9e612796cd airoha: introduce HW-GRO support
- Introduce HW-GRO support in order to allow bridging HW-GRO interfaces
- Enable LRO for queues (7-0)
- Rework LAN/WAN dynamic switching according to upstream requests:
  now in order to set GDM3/GDM4 as WAN it is necessary to enable Qdisc
  offloading without any dedicated ethool command.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23828
(cherry picked from commit 2c122bdd74)
[ fix conflict error ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-07-30 15:24:16 +02:00
Lorenzo Bianconi 2574384d6d airoha: Fix max RX size configuration
Set max RX size configuration (AIROHA_MAX_RX_SIZE) to 0x3f00.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23585
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 58ce7f3699)
2026-07-30 13:02:16 +02:00
Lorenzo Bianconi bfdda79bc2 airoha: apply minor fix for MTU and LRO for ethernet driver
Apply minor fixup for PPE_MTU configuration and LRO queue configuration.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description ]
Link: https://github.com/openwrt/openwrt/pull/23566
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 0324d9e4e0)
2026-07-30 13:02:08 +02:00
Lorenzo Bianconi 17c111aca9 airoha: Improve LRO performances
Add hardware TCP Large Receive Offload (LRO) support to the airoha_eth
driver, leveraging the EN7581/AN7583 SoC's 8 dedicated LRO hardware queues
mapped to RX queues 24–31. LRO hw offloading does not support
Scatter-Gather (SG) so it is required to increase the page_pool allocation
order to 2 for RX queues 24–31 (LRO queues).

Performance comparison between GRO and hw LRO has been carried out using
a 10Gbps NIC:

GRO: ~2.7 Gbps
LRO: ~8.1 Gbps

Tested-by: Madhur Agrawal <madhur.agrawal@airoha.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23530
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit d22ceb8d24)
2026-07-30 13:02:00 +02:00
Christian Marangi beb5747f37 airoha: backport GDM2 loopback fixup for Ethernet driver
Backport GDM2 loopback fixup for Ethernet driver. This should be the last
patch before introduction of Multi-Serdes support series.

(cherry picked from commit 5b25d4235d)
[ fix conflict error ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-07-30 12:59:43 +02:00
Lorenzo Bianconi 9b5e071cbc airoha: Do not allow to disable LRO if the QDMA is shared
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23439
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 9e512f7f0b)
2026-07-30 12:44:02 +02:00
Lorenzo Bianconi d0ee43721c net: airoha: Introduce LRO TCP support for RX queues 19-12
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23431
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 8bd9f4fca1)
2026-07-30 12:43:53 +02:00