Commit Graph
67650 Commits
Author SHA1 Message Date
Mikhail Kshevetskiy 696e6de55d uboot-airoha: update pinctrl driver to match linux-7.3
U-Boot airoha pinctrl code was synced with linux-pinctrl/for-next
(future linux-7.3) branch.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/24646
(cherry picked from commit 57e5eab97e)
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
Charles Joynson 5787af6688 base-files: add mtd_get_mac_uci_config()
Add mtd_get_mac_uci_config() for reading a MAC address from a UCI-style
config stored in an MTD partition. This is needed to support the
TP-Link ER605 v1; the existing UBI helper already covers the ER605 v2.
Also refactor common sed logic into a shared helper used by both
variants and drop the redundant cat pipe.

TP-Link ER605 v2 device support is unaffected. The one and only MAC
address on the tddp partition for v1/v2 is the label MAC address.

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 180fa957e3)
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
Magnus Kroken 390a867118 mbedtls: update to 3.6.7
This version fixes security issues and bugs.

Security fixes:
* Fix a side channel in RSA PKCS#1 v1.5 decryption. (CVE-2026-50587)
* Fix a bug where transcript-hash computation errors during TLS 1.2 extended master secret calculation could be ignored instead of causing the handshake to fail. (CVE-2026-50581)
* Fix a TLS 1.3 server-side error-handling bug affecting session ticket generation. (CVE-2026-50640)
* Fix renegotiation failing and potentially causing a buffer overflow in DTLS when badmac_limit is enabled. (CVE-2026-50713)
* Reject ChaCha20 operations that would make the 32-bit block counter wrap around, which could otherwise reuse keystream and compromise confidentiality. (CVE-2026-50584)
* Fixed a TLS 1.3 record-boundary validation issue that could allow unauthenticated plaintext data to be processed across a key change.
* Fix a possible buffer overflow in mbedtls_ecdh_calc_secret() (CVE-2026-35336)
* Fix a remote buffer overflow in (D)TLS with ECDHE-PSK cipher suites when CBC is disabled. (CVE-2026-50580)
* Fix a side channel in ECC computations that allows a powerful local attacker (typically, untrusted OS attacking a secure enclave) to fully recover long-term secret keys). (CVE-2026-54435)
* Fix a potential information disclosure in TLS 1.2 servers using session tickets. (CVE-2026-50586)
* Fix timing side channel in RSA key generation, prime generation and primality testing, on platforms where division is not constant-time.
* Fix a 1-byte buffer overread when parsing a malformed ECC public key in the PK module. (CVE-2026-50583)
* Fix an out-of-bounds read when parsing TLS 1.2 ECJPAKE ServerKeyExchange messages. (CVE-2026-50588)
* Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing an mbedtls_pkcs7 context across parse -> free -> parse -> free cycles. (CVE-2026-50579)
* PKCS7 now rejects weak hash algorithms (RIPEMD160, MD5, SHA-1, SHA-224, SHA3-224) on signature verification.
* Improved documentation of mbedtls_ssl_conf_sig_algs() to emphasize that this function only sets signature algorithms that are enforced during TLS key exchange and not on certificate verification. (CVE-2026-54441)
* Ensure 'dtls_srtp_info' field from 'mbedtls_ssl_context' is properly zeroized when mbedtls_ssl_session_reset() is called. (CVE-2026-50585)
* Fix a bug where mbedtls_ssl_read() and mbedtls_ssl_write() could return 1 instead of an error code if the random generator failed when a server called these functions before the end of a TLS 1.3 handshake.
* Fix TLS 1.3 clients to reject a HelloRetryRequest whose selected group was not advertised in the original ClientHello. (CVE-2026-25832)
* Fix two bugs in the X.509 certificate parser that caused some inputs with a malformed basicConstraints extension to be accepted. (CVE-2026-49300)

Full release notes: https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.7

Remove backported upstream patches that are included in this release.

Signed-off-by: Magnus Kroken <mkroken@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24131
(cherry picked from commit 5d8a8a33dc)
Link: https://github.com/openwrt/openwrt/pull/24818
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 01:44:24 +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
Qingfang Deng 4007488e13 ppp: fix precompiled filter option
The upgrade to 2.5.0 accidentally dropped the CPP defines, so the
precompiled-active-filter option has been missing and the demand dialing
option in uci has been broken since then. Add the missing defines.

Fixes: 9cecf2b16e ("ppp: update to 2.5.0")
Closes: https://github.com/openwrt/openwrt/issues/24454
Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24467
(cherry picked from commit f59200bc56)
Link: https://github.com/openwrt/openwrt/pull/24767
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-21 02:24:20 +02:00
Sander van Deijck 21945f8774 wolfssl: update to 5.9.2
Release notes:
https://github.com/wolfSSL/wolfssl/releases/tag/v5.9.2-stable

This is a security release fixing 32 CVEs (6 High, 15 Med, 11 Low).
Many of them apply to the configuration built here: --enable-opensslall
and --enable-opensslextra are unconditional, and TLS 1.3, session
tickets and OCSP stapling default to y.

Fixes CVEs:
- CVE-2026-11310 (High)
- CVE-2026-11999 (High)
- CVE-2026-6679 (High)
- CVE-2026-55958 (High)
- CVE-2026-55960 (High)
- CVE-2026-55961 (High)
- CVE-2026-6731 (Med)
- CVE-2026-6091 (Med)
- CVE-2026-6094 (Med)
- CVE-2026-6329 (Med)
- CVE-2026-6330 (Med)
- CVE-2026-8720 (Med)
- CVE-2026-10097 (Med)
- CVE-2026-10098 (Med)
- CVE-2026-10592 (Med)
- CVE-2026-7532 (Med)
- CVE-2026-6291 (Med)
- CVE-2026-7511 (Med)
- CVE-2026-11703 (Med)
- CVE-2026-55962 (Med)
- CVE-2026-55964 (Med)
- CVE-2026-6092 (Low)
- CVE-2026-6331 (Low)
- CVE-2026-6681 (Low)
- CVE-2026-10512 (Low)
- CVE-2026-6678 (Low)
- CVE-2026-7531 (Low)
- CVE-2026-6325 (Low)
- CVE-2026-6412 (Low)
- CVE-2026-6450 (Low)
- CVE-2026-12340 (Low)
- CVE-2026-55967 (Low)

OCSP responder authorization is now strictly enforced per RFC 6960
4.2.2.2. The CheckOcspResponderChain() fallback, which accepted any
responder certificate issued by an ancestor of the target's issuer,
was removed. Setups relying on an indirectly issued OCSP responder
will start to fail validation.

Refreshed patches.

Signed-off-by: Sander van Deijck <sander@vandeijck.com>
Link: https://github.com/openwrt/openwrt/pull/24700
(cherry picked from commit c84523a6b6)
Link: https://github.com/openwrt/openwrt/pull/24701
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-21 00:15:26 +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 32841c3ed2 base-files: handle name collision between kernel UBI volume and MTD partition
On the AP-325 (and variants), the bootloader enforces a particular UBI volume
layout and naming, so unfortunately the kernel's UBI volume and MTD partition
end up with the name, which confuses the current logic.

Therefore, add an option to ignore the MTD partition.

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 5497d5ba23)
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
Lech Perczak d0d5556fcc wifi-scripts: fix default cipher selection for 11ad in iface.uc
hw_mode property is only present in device configuration section,
not the interface section, so testing for config.hw_mode in
iface.parse_encryption is wrong. Test for (dev_config.band == 60g)
instead, this will cause GCMP to be properly selected instead of
CCMP unless set explicitly, and while at that will cover both hostapd
and wpa_supplicant cases.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24586
(cherry picked from commit 00045786e6)
Link: https://github.com/openwrt/openwrt/pull/24762
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 22:45:45 +02:00
Lech Perczak 689bf360e5 wifi-scripts: set hw_mode = 'ad' for 60GHz radios in hostapd config
ucode version of hostapd handler, when setting hw_mode property based on
band, incorrectly matches hw_mode = "a" for 5, 6, and 60GHz, while 60GHz
radios need this set explicitly as "ad".
This causes broken frequency display in LuCI, and potentially other issues,
so add an explicit check for 60GHz band.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24586
(cherry picked from commit aac62cf2e5)
Link: https://github.com/openwrt/openwrt/pull/24762
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 22:45:45 +02:00
Lech Perczak 6bc29f3424 wifi-scripts: add 60G band to mac80211.uc to support 802.11ad
/etc/config/wireless is missing 60G band for routers supporting it.
This support was enabled in OpenWrt v23 but somehow disappeared in v24.

Run-tested-on: TP-Link Talon AD7200 v2

[Originally authored by Konstantin Glukhov, replaced SoB, because of
lack of real email, reworded commit message]

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24586
(cherry picked from commit 63d4718713)
Link: https://github.com/openwrt/openwrt/pull/24762
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 22:45:45 +02:00
Felix Fietkau 78f1217d07 wifi-scripts: pass device config to parse_encryption for station mode
setup_sta() called parse_encryption() without the device config, so the
sae-compat branch dereferenced a null dev_config.band and threw, aborting
the whole radio setup. Pass the device config through.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 97e8911c9b)
Link: https://github.com/openwrt/openwrt/pull/24762
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-20 22:45:45 +02:00
Bogdan K 4a5c6b90d2 uboot-mediatek: fix BT-R320 Ethernet mode
The CPU port between the MT7981 and MT7531 runs at 2.5 Gbps, but the U-Boot
device tree configures it as SGMII at 1 Gbps. This leaves Ethernet unable
to exchange packets despite an active physical link.

Use 2500base-x and a 2500 Mbps fixed link, matching the Linux device tree.

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/24372
(cherry picked from commit 4aaabd3a4b)
Link: https://github.com/openwrt/openwrt/pull/24078
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-08-18 11:08:56 +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
Qingfang Deng 70fbeaade8 uboot-mediatek: fix BT-R320 malformed patch
The Globitel BT-R320 patch has incorrect line numbers and corrupted
ASCII control characters.

Fixes: a3105d3f95 ("mediatek: filogic: add support for Globitel BT-R320")
Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23526
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 582cb8aba7)
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
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 8924f6c895 kernel: fix kmod-switch-rtl8366-smi dependencies for econet target
Add missing dependent package kmod-of-mdio to fix build error:

Package kmod-switch-rtl8366-smi is missing dependencies for the following libraries:
of_mdio.ko

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24727
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 308bb40b9a)
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 a83ab037db kernel: fix kmod-mdio-gpio dependencies for econet target
Add missing dependent package kmod-of-mdio to fix build error:

Package kmod-mdio-gpio is missing dependencies for the following libraries:
of_mdio.ko

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24710
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ab1693f58a)
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 bee48059af kernel: fix kmod-mdio-devres dependencies for econet target
Add missing dependent package kmod-of-mdio to fix build error:

Package kmod-mdio-devres is missing dependencies for the following libraries:
of_mdio.ko

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24710
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 943bfe441c)
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 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
Robert Marko d78c0fd16d uboot-airoha: fix AN7583 pinctrl compatible
Use the compatible expected by the AN7583 pinctrl driver so the pinctrl
and integrated GPIO driver can bind.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 696b38be9c)
Link: https://github.com/openwrt/openwrt/pull/24173
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-07 19:26:12 +02:00
Mikhail Kshevetskiy 96f1df2152 uboot-airoha: update to v2026.07
Changes:
 * removed upstreamed patches,
 * refresh patches,
 * add en7523/an7581/an7583 pinctrl support
 * add basic PCS support for an7583
 * add an7583 specific mdio bus support

The patch was adapted a bit to suit openwrt-25.12.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/24165
(cherry picked from commit baeacca598)
Link: https://github.com/openwrt/openwrt/pull/24173
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-07 19:26:12 +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