]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
26 hours agoarm-trusted-firmware-airoha: sync an7581-bl31 BUILD_DEVICES with bl2 main master 24626/head
xiao bo [Sun, 9 Aug 2026 14:44:59 +0000 (22:44 +0800)] 
arm-trusted-firmware-airoha: sync an7581-bl31 BUILD_DEVICES with bl2

an7581-bl31 BUILD_DEVICES list was incomplete and missed:
 - airoha_an7581-evb-emmc-eagle
 - airoha_an7581-evb-emmc-kite
 - nokia_valyrian
 - nokia_xg-040g-md-ubi

These devices are present in an7581-bl2 but missing for bl31.
When building these targets, an7581‑bl31 package is never built,
causes FIP failure "fopen ...an7581‑bl31.lzma: No such file or directory".

Sync an7581‑bl31 BUILD_DEVICES to exactly match an7581‑bl2.

Fixes: https://github.com/openwrt/openwrt/commit/467c5b90ba1140dcdabc2e2e203c1d91fca9963e
Signed-off-by: xiao bo <peterwillcn@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24626
Signed-off-by: Robert Marko <robimarko@gmail.com>
30 hours agoairoha: fix AN7581 chainloader U-Boot filename
Robert Marko [Sun, 9 Aug 2026 10:58:49 +0000 (12:58 +0200)] 
airoha: fix AN7581 chainloader U-Boot filename

The uboot-airoha package now stages compressed U-Boot images using the
u-boot.lzma suffix. The AN7581 chainloader still looks for the previous
u-boot.bin.lzma filename and consequently falls back to a nonexistent
uncompressed image.

Use the staged u-boot.lzma filename when generating the chainloader FIT.

Fixes: 94a21b3fe9bd ("uboot-airoha: move FIP generation to target and enable autoselection")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
30 hours agoairoha: fix U-Boot artifacts for AN7581 eMMC boards
Robert Marko [Sun, 9 Aug 2026 10:50:08 +0000 (12:50 +0200)] 
airoha: fix U-Boot artifacts for AN7581 eMMC boards

The AN7581 eMMC Eagle and Kite boards use the shared an7581_rfb
U-Boot build, which produces artifacts with the rfb suffix. The image
recipes instead look for nonexistent per-device rfb-emmc-eagle and
rfb-emmc-kite artifacts.

Use the shared rfb artifacts for both boards so their preloader and
BL31/U-Boot FIP artifacts can be generated.

Fixes: 94a21b3fe9bd ("uboot-airoha: move FIP generation to target and enable autoselection")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
31 hours agouboot-airoha: use separate DTB for Nokia XG-040G-MD
Robert Marko [Sun, 9 Aug 2026 10:33:43 +0000 (12:33 +0200)] 
uboot-airoha: use separate DTB for Nokia XG-040G-MD

CONFIG_OF_EMBED is intended for debugging and is not recommended for
production devices. Remove it from the Nokia XG-040G-MD defconfig so
Kconfig selects CONFIG_OF_SEPARATE, consistent with the other Airoha
boards.

The existing default device tree and u-boot.bin build target ensure that
the separate DTB is built and appended to the deployable U-Boot image.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
32 hours agoarm-trusted-firmware-airoha: fix BL2 packing on Debian 11
Robert Marko [Sun, 9 Aug 2026 09:21:46 +0000 (11:21 +0200)] 
arm-trusted-firmware-airoha: fix BL2 packing on Debian 11

Debian 11 ships coreutils 8.32, whose cksum does not support the
-a crc32b option. This leaves crc empty and causes the subsequent shell
arithmetic expression to fail.

Use Python's built-in binascii.crc32 implementation instead. Python 3 is
already required by the OpenWrt build system and produces the same CRC-32
value before the existing final XOR.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
44 hours agorealtek: dts: add missing soc compatible to two Hasivo boards 24615/head
Carlo Szelinsky [Sat, 8 Aug 2026 10:02:28 +0000 (12:02 +0200)] 
realtek: dts: add missing soc compatible to two Hasivo boards

Both boards only list their board compatible in the root node, so they
do not match the realtek MIPS machine and hang early during boot.

Fixes: 7cc31af7bdd4 ("realtek: convert to generic machine initialization")
Signed-off-by: Carlo Szelinsky <github@szelinsky.de>
Link: https://github.com/openwrt/openwrt/pull/24615
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2 days agouboot-airoha: move FIP generation to target and enable autoselection
Christian Marangi [Thu, 16 Jul 2026 18:38:44 +0000 (20:38 +0200)] 
uboot-airoha: move FIP generation to target and enable autoselection

Move FIP handling to target now that we compile ATF. This is to have always
in sync new ATF and new U-Boot if one of the 2 is already compiled.

Also add HIDDEN ops to enable autoselection of the U-Boot for the required
target. This is needed to prevent user to deselect the U-Boot package
causing failure on ARTIFACTS generation.

Drop precompiled BL2 and BL31 as they can be now compiled from source.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24257
Signed-off-by: Robert Marko <robimarko@gmail.com>
2 days agopackages/boot: add arm-trusted-firmware-airoha
Christian Marangi [Thu, 16 Jul 2026 18:13:35 +0000 (20:13 +0200)] 
packages/boot: add arm-trusted-firmware-airoha

Add support for compiling Airoha ATF, based on a modified version of the
TF-A based on 2.10.

The package will clone the base TF-A and apply the modified source and
pre-compiled objects (DDR calibration, eFUSE handling, TX/RX path...) to
correctly compile.

An helper script is added to implement the same format used for special BL2
handling. BL2 is composed of 3 sub-phase with a initial BL21, a BL22 that
loads a LZMA decompressor and BL23 that actually calibrate and loads BL31
ATF.

Also a special flash_table is used to handle SPI-NAND externally to the
BL2, a special Host target is added for that.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24257
Signed-off-by: Robert Marko <robimarko@gmail.com>
2 days agoairoha: add missing CONFIG_AIROHA_CPU_PM_DOMAIN
Daniel Schwierzeck [Fri, 7 Aug 2026 11:30:45 +0000 (13:30 +0200)] 
airoha: add missing CONFIG_AIROHA_CPU_PM_DOMAIN

The kernel config refresh done with commit
ada7ded disabled the Airoha PM Domain driver
due to the broken Kconfig dependency fixed with an earlier commit.

Add the missing symbol to enable the driver again. Also do a another
kernel config refresh to resolve some dependent PM domain symbols.

Fixes: ada7ded ("airoha: an7583: refresh kernel config")
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2 days agoairoha: an7581: add airoha,chip-scu phandle to scuclk node
Daniel Schwierzeck [Tue, 7 Jul 2026 15:35:17 +0000 (17:35 +0200)] 
airoha: an7581: add airoha,chip-scu phandle to scuclk node

The clk-en7523 driver tries to look up the chip-scu regmap via the
"airoha,chip-scu" phandle first. If absent, it falls back to a
compatible-based lookup with syscon_regmap_lookup_by_compatible().

The AN7583 DTSI already had the phandle but AN7581 did not, relying
on the fallback instead. Add it so the DT explicitly describes the
connection and both platforms use the same lookup path.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2 days agoairoha: fix cpufreq probe failure
Daniel Schwierzeck [Wed, 8 Jul 2026 13:43:44 +0000 (15:43 +0200)] 
airoha: fix cpufreq probe failure

dev_pm_domain_attach_list() returns the number of attached PM domains
on success (a positive count), or a negative error code on failure.
The airoha-cpufreq driver checks 'if (ret)' which treats a successful
attachment as an error.

Fix by checking 'if (ret < 0)' like all other users of this API.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2 days agoairoha: make PM domain driver working for AN7583
Daniel Schwierzeck [Fri, 17 Jul 2026 09:26:45 +0000 (11:26 +0200)] 
airoha: make PM domain driver working for AN7583

Add SoC compatible for AN7583 to PM domain driver (the cpufreq driver
already has it).

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2 days agoairoha: fix Kconfig dependency issue with PM Domain driver
Daniel Schwierzeck [Wed, 8 Jul 2026 12:08:09 +0000 (14:08 +0200)] 
airoha: fix Kconfig dependency issue with PM Domain driver

The AIROHA_CPU_PM_DOMAIN option was added inside the MediaTek PM Domains
menu, which depends on ARCH_MEDIATEK || COMPILE_TEST. Since Airoha
platforms use ARCH_AIROHA, the menu is invisible during kernel
configuration, silently dropping AIROHA_CPU_PM_DOMAIN. This breaks
running `make kernel_menuconfig`.

Add ARCH_AIROHA to the menu dependency so that this option and its
dependencies (PM_GENERIC_DOMAINS, PM_GENERIC_DOMAINS_OF) remain
enabled on Airoha targets.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2 days agorealtek: board: some family check cleanups 24588/head
Rustam Adilov [Thu, 6 Aug 2026 15:41:58 +0000 (20:41 +0500)] 
realtek: board: some family check cleanups

The prom initialization is a bit of a mess now with all these
model and soc family checks. And realtek_read_model() function
is the worst offender of all as it goes through all of the model
info register from different SoCs just to read details from one
of them.

We can make use of the .data property in realtek_of_match to
clean things up so that each soc family has its own way of
initialization and reading model details.

Create a struct that will be used for that and add all of the
soc data structs for all chip families.

With all that, remove realtek_read_model() function and most
of the soc_info.family checks in various functions.

In addition, add the rtl960x compatibles along as well so that
rtl960x model info details has somewhere to be used. RTL8198D
is also added as it is part of RTL9607C family.

Signed-off-by: Rustam Adilov <adilov@tutamail.com>
Link: https://github.com/openwrt/openwrt/pull/24588
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2 days agorealtek: dts: fix up the wrong soc compatibles
Rustam Adilov [Fri, 7 Aug 2026 15:56:36 +0000 (20:56 +0500)] 
realtek: dts: fix up the wrong soc compatibles

Some rtl9302 based boards use the realtek,rtl838x-soc compatible
in their device tree instead of the correct realtek,rtl9302-soc.

This is also the case for main rtl931x and rtl930x device tree files.

In preperation for utilizing device data in the board-realtek, fix
this up now so that these boards don't end up breaking due to incorrect
prom initialization caused by rtl838x-soc compatible.

Signed-off-by: Rustam Adilov <adilov@tutamail.com>
Link: https://github.com/openwrt/openwrt/pull/24588
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
3 days agogeneric: 6.18: disable CONFIG_SND_SOC_AN7581
Robert Marko [Fri, 7 Aug 2026 17:24:09 +0000 (19:24 +0200)] 
generic: 6.18: disable CONFIG_SND_SOC_AN7581

Instead of putting in the target config where each refresh drops it,
lets disable it in the generic config.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 days agoairoha: an7583: fix ethernet breakage on Nokia XG-040G-MF 24606/head
Mikhail Zhilkin [Fri, 7 Aug 2026 11:25:47 +0000 (14:25 +0300)] 
airoha: an7583: fix ethernet breakage on Nokia XG-040G-MF

Recent upstream cleanups moved switch port labels to the board level and
disabled switch ports/PHYs by default on the AN7583 SoC dtsi. This broke
ethernet on the Nokia XG-040G-MF since its board DTS was not updated to
explicitly configure and enable them.

Fix this by explicitly enabling gsw_port2-4 along with their respective
PHYs and restoring the "lan2", "lan3", and "lan4" port labels.

Fixes: ce55cdde26a9 ("airoha: an7583: move the switch port label from soc-level to board-level")
Fixes: d2698d325b68 ("airoha: an7583: disable all switch ports and PHYs by default")
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24606
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agozynq: enable writable MMC on Antminer S9
Zoltan HERPAI [Fri, 7 Aug 2026 16:12:09 +0000 (16:12 +0000)] 
zynq: enable writable MMC on Antminer S9

Disable write-protection on sdhci0, similar to the upstream
U-boot DTS. This also enables (obviously) the working overlayfs.

Link: https://github.com/openwrt/openwrt/issues/24602
Fixes: e050bb7946 ("zynq: add Bitmain Antminer S9 control board support")
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
3 days agoairoha: pinctrl: fix AN7583 eMMC pinmux
Robert Marko [Fri, 7 Aug 2026 11:47:57 +0000 (13:47 +0200)] 
airoha: pinctrl: fix AN7583 eMMC pinmux

The SCU IOMUX reset puts AN7583 pins 45-47 into GPIO mode. These pins
are shared with eMMC, but the generic eMMC function group only enables
the eMMC mode bit and leaves the GPIO overrides active, preventing the
card from initializing.

Add an AN7583-specific eMMC function group that also clears the GPIO
mode bits for the shared pins.

Fixes: d0110a25ed ("airoha: add pinctrl fixes for AN7581 and AN7583")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 days agoairoha: an7581/7583: build-in I2C support
Robert Marko [Fri, 7 Aug 2026 10:49:59 +0000 (12:49 +0200)] 
airoha: an7581/7583: build-in I2C support

There is no reason to add a custom kmod which is not even an7581
specific as its just the regular Mediatek MT7621 I2C driver.

So, simply enable the driver in kernel configs, drop the inclusion
per-board and remove the kmod definition.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 days agoairoha: an7581: refresh config
Robert Marko [Fri, 7 Aug 2026 10:47:43 +0000 (12:47 +0200)] 
airoha: an7581: refresh config

Refresh the an7581 kernel config by running:
make kernel_menuconfig CONFIG_TARGET=subtarget

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 days agoairoha: an7583: refresh config
Robert Marko [Mon, 3 Aug 2026 11:05:18 +0000 (13:05 +0200)] 
airoha: an7583: refresh config

Refresh the kernel config via kernel_menuconfig CONFIG_TARGET=subtarget.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 days agokernel: fix stale HIFIBERRY_STUDIO symbol, add TOUCHSCREEN_ST7123 24275/head
Joshua Covington [Sun, 2 Aug 2026 11:30:03 +0000 (11:30 +0000)] 
kernel: fix stale HIFIBERRY_STUDIO symbol, add TOUCHSCREEN_ST7123

The Kconfig symbol backing the HiFiBerry Studio driver was renamed
from SND_BCM2708_SOC_HIFIBERRY_STUDIO_DAC8X to
SND_BCM2708_SOC_HIFIBERRY_STUDIO. Update to the new symbol name.

Also add the new CONFIG_TOUCHSCREEN_ST7123 symbol, disabled by
default, to the generic config.

Signed-off-by: Joshua Covington <joshuacov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24275
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agobcm27xx: drop dwcmshc_remove() timeout_clk disable
Joshua Covington [Sun, 2 Aug 2026 11:18:40 +0000 (11:18 +0000)] 
bcm27xx: drop dwcmshc_remove() timeout_clk disable

The quilt rebase of
0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch matched
the wrong occurrence of the two clk_disable_unprepare() calls for
pltfm_host->clk and priv->bus_clk, which appear both in
dwcmshc_probe()'s error path and in dwcmshc_remove(). This added a
clk_disable_unprepare(pltfm_host->timeout_clk) call inside
dwcmshc_remove() that is present in neither mainline Linux nor
raspberrypi/linux's rpi-6.18.y.

Drop it for now rather than carry an unverified addition. If it
turns out timeout_clk does need disabling on remove, it can be
reinstated with a clear rationale.

Fixes: 7105bec48f27 ("kernel: bump 6.18 to 6.18.40")
See: https://github.com/openwrt/openwrt/pull/24419

Signed-off-by: Joshua Covington <joshuacov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24275
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agobcm27xx: update patches up to Git HEAD (2026-08-02)
Joshua Covington [Sun, 2 Aug 2026 12:03:42 +0000 (12:03 +0000)] 
bcm27xx: update patches up to Git HEAD (2026-08-02)

These patches were generated from:
https://github.com/raspberrypi/linux/commits/rpi-6.18.y
Patches were generated from the diff between linux kernel branch linux-6.18.y
and rpi-6.18.y from raspberry pi kernel source:

git format-patch -N linux-6.18.y..rpi-6.18.y (HEAD)
(HEAD -> 825dba6c63eeb40a62699d1f8a4aa3f02b0eaf49) as of 20260802
"Commit: pinctrl: bcm2835: Enable strict pinmux mode"

Exceptions:
- github workflow patches
- applied and reverted patches
- README patches
- (def)configs
- patches merged upstream

Patches refreshed against current OpenWrt-kernel.

Signed-off-by: Joshua Covington <joshuacov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24275
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: an7583: remove SFP nodes from SoC DTSI 24264/head
Daniel Schwierzeck [Tue, 30 Jun 2026 12:56:16 +0000 (14:56 +0200)] 
airoha: an7583: remove SFP nodes from SoC DTSI

SFP nodes are board-specific and do not belong in the SoC-level DTSI.
Remove them entirely since the AN7583 EVB boards do not reference them.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24264
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agoairoha: an7583: correct LED node names
Daniel Schwierzeck [Tue, 30 Jun 2026 12:56:16 +0000 (14:56 +0200)] 
airoha: an7583: correct LED node names

Use the standard 'led' node name for GPIO LEDs as required by the
devicetree specification.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
[ adapted from commit f5bf8c2b9482 ("airoha: correct led nodename") ]
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24264
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agoairoha: an7583: move the switch port label from soc-level to board-level
Daniel Schwierzeck [Tue, 30 Jun 2026 12:56:16 +0000 (14:56 +0200)] 
airoha: an7583: move the switch port label from soc-level to board-level

Different boards use different port maps. Defining the port labels in
board-level is better.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
[ adapted from commit e2f7ad08c765 ("airoha: move the switch port label from soc-level to ...-") ]
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24264
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agoairoha: an7583: disable all switch ports and PHYs by default
Daniel Schwierzeck [Tue, 30 Jun 2026 12:56:16 +0000 (14:56 +0200)] 
airoha: an7583: disable all switch ports and PHYs by default

Some boards only use some of them, so enable as necessary in the
board-level DTS.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
[ adapted from commit 007aa5a51ce8 ("airoha: disable all switch port and phy by default") ]
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24264
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agomediatek: add support Teralink TL3020 24518/head
Fil Dunsky [Fri, 12 Jun 2026 18:15:27 +0000 (21:15 +0300)] 
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>
3 days agoramips: mt7530: compile swconfig code conditionally 24574/head
Mieczyslaw Nalewaj [Wed, 5 Aug 2026 05:38:51 +0000 (07:38 +0200)] 
ramips: mt7530: compile swconfig code conditionally

Wrap all swconfig-specific code in mt7530.c with #if IS_ENABLED(CONFIG_SWCONFIG),
including struct switch_dev, the vlan/port mapping tables and all
switch_dev_ops callbacks. Register access helpers (mt7530_r32/w32), the
PSC/HWTRAP definitions, and the small set of swconfig-only register
macros and MIB tables further up the file remain unconditional - the
latter two are unused-but-harmless when swconfig is disabled and are
left alone to keep the diff focused.

When swconfig is not compiled in, the driver performs only minimal
hardware init (disables MAC learning on all ports, applies the HWTRAP
fixup) and skips switch registration, mirroring the existing behaviour
of the "mediatek,no-swconfig" device tree property. This removes the
need for that property when building DSA-only images. The property is
still honoured whenever CONFIG_SWCONFIG is enabled (built-in or as a module).

A distinct log message is used for the compile-time case, to
distinguish it from the runtime "mediatek,no-swconfig" case in dmesg.
Also switch the existing runtime "swconfig disabled" message from
pr_info() to dev_info(), changing its dmesg prefix from "mt7620: " /
"mt7530: " to the device's own prefix.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/24574
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agompc85xx: use modules for DSA drivers 24076/head
Rosen Penev [Sat, 4 Jul 2026 18:47:47 +0000 (11:47 -0700)] 
mpc85xx: use modules for DSA drivers

Use the proper drivers for each device.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24076
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agompc85xx: refresh 6.18 config
Rosen Penev [Sat, 4 Jul 2026 19:05:41 +0000 (12:05 -0700)] 
mpc85xx: refresh 6.18 config

Done with make kernel_oldconfig

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24076
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agompc85xx: drop support for 6.12
Rosen Penev [Sat, 4 Jul 2026 21:08:01 +0000 (14:08 -0700)] 
mpc85xx: drop support for 6.12

Remove the 6.12 kernel configuration and patch stack after switching to 6.18.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24076
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agompc85xx: switch to 6.18
Rosen Penev [Sat, 4 Jul 2026 21:06:31 +0000 (14:06 -0700)] 
mpc85xx: switch to 6.18

Move mpc85xx to the 6.18 kernel after testing it as the testing kernel.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24076
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoarm-trusted-firmware-rockchip: update to v2.15.0 24499/head
Ryan Leung [Fri, 31 Jul 2026 07:49:05 +0000 (17:49 +1000)] 
arm-trusted-firmware-rockchip: update to v2.15.0

Changelog: https://trustedfirmware-a.readthedocs.io/en/v2.15.0/change-log.html#id1

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/24499
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agotools/isl: update to 0.28 24573/head
Rosen Penev [Thu, 30 Jul 2026 01:51:29 +0000 (18:51 -0700)] 
tools/isl: update to 0.28

Basic update. No patches.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24573
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agoqualcommax: enable in-band signalling on the USXGMII ports 24420/head
Julius Bairaktaris [Sun, 26 Jul 2026 09:45:30 +0000 (11:45 +0200)] 
qualcommax: enable in-band signalling on the USXGMII ports

USXGMII carries the line rate to the MAC in a Clause 37 code word, so the
link needs in-band signalling. Without "managed" the port is PHY managed,
phylink disables in-band on the PHY, and with the PCS now honouring
neg_mode neither end runs autonegotiation, so nothing crosses the system
interface.

Every USXGMII port in this target was missing the property: ten ports
across eight boards, all of them an Aquantia PHY on copper, none of them
an SFP cage. ipq8074-rt-ax89x already carried "in-band-status" on its
SGMII lan8, which is why a file-level search made it look covered.

Only the two ports on ipq8072-301w have been tested on hardware. The
remaining eight are the same PHY family behind the same PCS, are broken
today for the same reason, and cannot regress from a state where they
pass no traffic, but they have not been confirmed on a board.

That test ran on the 6.18 testing kernel, where phylink switches the PHY
side on through phy_config_inband(). On 6.12 the PHY has no such op and
0760-net-phy-aquantia-enable-USXGMII-MAC-autoneg.patch forces the same
bit unconditionally, so the end state matches, but no board has confirmed
it there.

Tested-by: Rudy Andram <rmandrad@gmail.com>
Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agoqualcommax: pcs-qca-uniphy: take the USXGMII link from the receiver
Rudy Andram [Mon, 27 Jul 2026 10:32:38 +0000 (12:32 +0200)] 
qualcommax: pcs-qca-uniphy: take the USXGMII link from the receiver

qca_uniphy_pcs_get_state_usxgmii() took the link from the USXGMII code
word's link bit. An AQR113C behind this XPCS never asserts it:
autonegotiation completes, the code word tracks the copper rate as the
media renegotiates and reports full duplex, and the link bit stays clear
the whole time.

Once the port is marked as in-band managed that bit becomes the carrier
gate, so the port never gets carrier, link_up() never runs, the port MAC
is never enabled and the XPCS keeps its 10G reset default.

Take the link from the 10GBASE-R receiver instead, the way
qca_uniphy_pcs_get_state_10base_r() does. It answers the only question a
PCS can answer on its own, whether the system interface is up. The code
word stays the speed source: the Aquantia driver reports RATE_MATCH_NONE
for USXGMII, so phylink does not substitute the PHY's speed and this is
where the port's rate comes from. The link bit is kept as an_complete,
which is what it actually describes.

Confirmed on a QNAP QHora-301w, where 10g-1 now reaches carrier against a
1G link partner and configures an address.

Signed-off-by: Rudy Andram <rmandrad@gmail.com>
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agoqualcommax: pcs-qca-uniphy: honour neg_mode for USXGMII autoneg
Julius Bairaktaris [Sun, 26 Jul 2026 09:45:11 +0000 (11:45 +0200)] 
qualcommax: pcs-qca-uniphy: honour neg_mode for USXGMII autoneg

The USXGMII autoneg enable was keyed on the interface alone, so the XPCS
ran Clause 37 autonegotiation whenever the interface was USXGMII, no
matter what negotiation mode phylink had selected.

On an out-of-band link the PHY sends no code words, and the XPCS is left
waiting for them. The SerDes trains and the receiver reaches block lock,
but no traffic crosses the system interface in either direction, so the
port looks up while passing nothing.

Which side turns the PHY off depends on the kernel. From 6.16 the
Aquantia driver implements config_inband, and phylink calls it with
LINK_INBAND_DISABLE on a PHY managed link, which clears
MDIO_PHYXS_VEND_PROV2_USX_AN. On 6.12, the kernel this target builds by
default, that op does not exist and the PHY side is instead forced on
unconditionally by 0760-net-phy-aquantia-enable-USXGMII-MAC-autoneg.patch.

Key the write on neg_mode rather than dropping it, so a link that really
does negotiate in-band keeps working. Once the USXGMII ports are marked
in-band managed, this resolves to the value the driver already wrote, so
no in-tree board changes register state here today.

Diagnosed on the OpenWrt forum by rmandrad, who arrived at the same
condition independently and confirmed on a QNAP QHora-301w that enabling
autonegotiation on both the PHY and the XPCS makes the 10G ports pass
traffic.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agoqualcommax: align the AQR firmware node names
Julius Bairaktaris [Sun, 26 Jul 2026 09:37:41 +0000 (11:37 +0200)] 
qualcommax: align the AQR firmware node names

ipq8074-nbg7815 and ipq8072-mx8500 both place the AQR firmware cell at
offset 0x28 to skip the QCOM MBN header, but their node names still say
0, so the unit address disagrees with reg and dtc warns about it.
nbg7815 also calls the node aqr-fw where every other board calls it
firmware.

Only node names change. Both are referenced by label from the PHY's
nvmem-cells, not by path, and reg is untouched.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agoqualcommax: build the Aquantia PHY driver into the kernel
Julius Bairaktaris [Sat, 25 Jul 2026 17:14:16 +0000 (19:14 +0200)] 
qualcommax: build the Aquantia PHY driver into the kernel

The PPE driver registers its DSA switch, and with it attaches every user
port's PHY, before the root filesystem is mounted. A PHY driver that is
only available as a module therefore always loses the race:
phy_attach_direct() finds no matching driver, falls back to genphy_c45
and binds it with device_bind_driver(), and nothing rebinds the PHY when
the real driver shows up later.

On the boards with an Aquantia 10G PHY that leaves the AQR running under
the generic Clause 45 driver. It never loads its firmware, from the nvmem
cell or otherwise, and its system interface is never configured, so the
10G port does not pass traffic. Boards that provision the firmware from
flash have therefore never had that path execute at all.

The driver was built in until commit 8c3bcc198936 ("ipq807x: move AQR
driver from built-in to kmod"), which made it a module so that
IS_REACHABLE(CONFIG_HWMON) would evaluate true and the temperature
sensors in the AQR would be usable as thermal zones. That was correct at
the time: the ethernet driver then attached PHYs from userspace, so a
module was in place early enough, and hwmon was not built in.

Neither still holds. HWMON is compiled in on this target, so building the
PHY driver in keeps its hwmon support, and the PPE driver attaches PHYs
from its own probe. Build it in, as is already done for the AT803X and
QCA807X PHYs here.

CRC_ITU_T, which the driver selects for the firmware image
checksum, follows it from module to built-in.

Both symbols go in the ipq807x and ipq60xx config-default rather than
the target's per-kernel config. Every board with an AQR is on one of
those two subtargets and ipq50xx has none, and a subtarget's
config-default is merged for whichever kernel version the target
builds, so the 6.18 kernel picks them up as well.

kmod-phy-aquantia goes with it. The package builds empty once the symbol
is built in, because KernelPackage/install skips a module listed in
modules.builtin, but ModuleAutoLoad still runs and would ship
/etc/modules.d/18-phy-aquantia naming a module that no longer exists.
Drop it from the subtarget defaults and from the one ipq60xx device
that listed it, matching AT803X_PHY and QCA807X_PHY which carry no
kmod on this target.

Reported-by: Rye Sears <xlighting2017@users.noreply.github.com>
Tested-by: Rye Sears <xlighting2017@users.noreply.github.com>
Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agodropbear: bump to 2026.94 24363/head
Konstantin Demin [Mon, 3 Aug 2026 11:00:35 +0000 (14:00 +0300)] 
dropbear: bump to 2026.94

- update dropbear to latest stable 2026.94;
  for the changes see https://matt.ucc.asn.au/dropbear/CHANGES
- server-side 2FA is no longer deprecated
- remove previously cherry-picked patches
- automatically refresh patches

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24363
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agozynq: drop support for 6.12
Zoltan HERPAI [Tue, 4 Aug 2026 14:31:51 +0000 (16:31 +0200)] 
zynq: drop support for 6.12

Drop support for 6.12 by removing config.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
5 days agozynq: switch to 6.18
Zoltan HERPAI [Tue, 4 Aug 2026 14:31:27 +0000 (16:31 +0200)] 
zynq: switch to 6.18

Make 6.18 the default kernel.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
5 days agozynq: rename patches directory
Zoltan HERPAI [Tue, 4 Aug 2026 19:52:10 +0000 (21:52 +0200)] 
zynq: rename patches directory

Rename patches directory to be kernel-specific.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
5 days agotools/cmake: update to 4.4.0 24324/head
Jack Sun [Mon, 20 Jul 2026 15:10:24 +0000 (23:10 +0800)] 
tools/cmake: update to 4.4.0

Release notes:https://cmake.org/cmake/help/latest/release/4.4.html

Refresh patches:
- 100-no-testing.patch
- 130-bootstrap_parallel_make_flag.patch
- 150-zstd-libarchive.patch
- 160-disable_xcode_generator.patch

Signed-off-by: Jack Sun <sunjiazheng321521@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24324
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: eth: adapt interrupt handling for fragments 24538/head
Markus Stockhausen [Fri, 31 Jul 2026 09:27:23 +0000 (11:27 +0200)] 
realtek: eth: adapt interrupt handling for fragments

The existing interrupt handling of the ethernet driver worked
well until the driver implemented receive fragment handling.
This change uncovered a constellation that did not exist before.

A received packet is written into the page pool with multiple
fragments. On RTL93xx the head-of-line (HOL) feature limits
the number of receivable fragments perfectly. There will never
be a "buffer full" situation where the hardware only encounters
ring buffers that are held by the Linux kernel. On RTL83xx
this is slightly different:

- The driver programs free floating rings
- Only the ownership flag of the ring buffer decides if the
  hardware can hand over a packet to the CPU.
- So the hardware can receive a packet even if it does not
  completely fit into the available fragments.

With this there is a small chance that

- The buffer has less space than a just received packet
- The hardware generates an overflow (RUN OUT) interrupt
- With no completely received packet the hardware DOES NOT
  generate a receive (DONE) interrupt.

So it is not sufficient to just look on the DONE interrupts.
The RUN OUT interrupts must be inspected as well. As the
current logic is quite cryptic enhance this as follows:

- Provide new RTL83xx/RTL93xx specific helpers
- Add new callbacks to the driver configuration structure
- Link the configuration with the new helpers
- Use the callbacks where needed.

While we are here:

- Enable only interrupts for active receive rings. Until
  now the driver activated all receive interrupts (8/32)
  although it supports only 2 rings.
- Use DIV_ROUND_UP instead of classic division for register
  calculation.

Link: https://github.com/openwrt/openwrt/pull/24538
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
6 days agosunxi: re-order patches
Zoltan HERPAI [Sat, 16 May 2026 11:23:18 +0000 (13:23 +0200)] 
sunxi: re-order patches

Re-order the kernel patches according to generic/PATCHES.md,
and refresh them as required.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agozynq: 6.18: config cleanup
Zoltan HERPAI [Mon, 3 Aug 2026 14:47:57 +0000 (14:47 +0000)] 
zynq: 6.18: config cleanup

Remove config options that should be handled from generic.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agozynq: enable 6.18 testing kernel
Zoltan HERPAI [Mon, 25 May 2026 08:23:54 +0000 (10:23 +0200)] 
zynq: enable 6.18 testing kernel

The zynq target now supports 6.18 kernel as testing.

Compile-tested: all boards
Runtime-tested: Antminer S9

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agozynq: 6.18: add missing symbols
Zoltan HERPAI [Mon, 25 May 2026 08:23:23 +0000 (10:23 +0200)] 
zynq: 6.18: add missing symbols

Add zynq-related missing symbols that were found during 6.18 migration, and
reorder configs.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agokernel/zynq: restore files for v6.12
Zoltan HERPAI [Mon, 15 Jun 2026 13:04:20 +0000 (13:04 +0000)] 
kernel/zynq: restore files for v6.12

This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agokernel/zynq: create files for v6.18 (from v6.12)
Zoltan HERPAI [Mon, 15 Jun 2026 13:04:20 +0000 (13:04 +0000)] 
kernel/zynq: create files for v6.18 (from v6.12)

This is an automatically generated commit.

When doing `git bisect`, consider `git bisect --skip`.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
6 days agorealtek: pcs: rtl93xx: rename rxcal_ accessors to rxeq_ 24542/head
Jonas Jelonek [Sun, 2 Aug 2026 15:10:38 +0000 (15:10 +0000)] 
realtek: pcs: rtl93xx: rename rxcal_ accessors to rxeq_

Split naming convention: rxeq_* accessors control equalizer state
(get/set a coefficient, toggle adapt); rxcal_* functions run an actual
calibration procedure (measure, decide, retry). 930x's accessor layer
predates this split and still used rxcal_ throughout; rename it to
match the convention already applied consistently on 931x.

dfe_taps_adapt/dfe_disable move too - despite looping over TAP1-4,
they just apply a fixed control action with no measurement or
decision-making, same as the single-coefficient accessors. init,
fgcal, leq_adapt_lock and vth_tap0_adapt_lock stay rxcal_ - they're
the calibration-flow entry points that call these accessors as
building blocks, and the *_adapt_lock ones specifically read back a
result to decide what to lock in.

Also rename 931x's dfe_disable_5g to rxeq_dfe_disable_5g for the same
reason - it's a fixed control action, not a calibration procedure.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: gate symErr success on actual link status
Jonas Jelonek [Mon, 27 Jul 2026 20:29:37 +0000 (20:29 +0000)] 
realtek: pcs: rtl931x: gate symErr success on actual link status

symErr reads 0 both when the link is clean and when there's no signal
at all to decode errors from - the counter only increments when the
PCS is actively decoding something and finds a mismatch, so a dead
link and a healthy one are indistinguishable from symErr alone.
Confirmed on hardware: symErr read 0x0 while the port had no link.

Add rtpcs_931x_sds_10gr_link_up(), reading the same status bit as the
vendor SDK's _phy_rtl9310_linkSts_get() default case, and require it
alongside a low symErr count before declaring a calibration check
successful. A link that isn't actually up yet now keeps the retry
loop going instead of being misread as a clean, working link.

Also observed on hardware: the retry budget sometimes runs out while
symErr is still nonzero, but the link comes up and works fine anyway -
the count just hasn't fully settled within the budget. Since that's
not an actual problem, keep the final message at dev_dbg when
link_up is true; only warn when the link genuinely never came up.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: average VTH samples instead of one point-sample
Jonas Jelonek [Wed, 29 Jul 2026 19:41:33 +0000 (19:41 +0000)] 
realtek: pcs: rtl931x: average VTH samples instead of one point-sample

rxcal_fiber_adapt() locked in whatever a single rxeq_vth_get() call
returned after a fixed 200ms adapt window - no check that the reading
was representative rather than a transient/noisy excursion. Observed
on hardware: whenever the locked VTH wasn't 0xa (the reset baseline),
the link behaved worse; recalibrating a link that was already working
could leave it worse than before, which a single unlucky sample
locked in as final is a plausible cause of.

RTL930x's own analogous case (leq_adapt_lock) already avoids exactly
this by sampling 10 times over ~100ms and averaging rather than
trusting one read. Do the same here: settle for 100ms, then sample
VTH 10 times over ~100ms and lock in the rounded average, using
DIV_ROUND_CLOSEST() rather than an open-coded round-to-nearest.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: lock manual mode before reset values
Jonas Jelonek [Mon, 27 Jul 2026 18:46:36 +0000 (18:46 +0000)] 
realtek: pcs: rtl931x: lock manual mode before reset values

reset_leq_dfe() wrote reset values for LEQ and VTH/TAP0-4 before setting
their manual-mode enable mask, matching the vendor SDK's own instruction
order. On a first-ever call this is harmless, but calibration may leave
those in continuous live auto-adapt when it returns, so on a second
calibration attempt those fields can still be adapt-driven at the moment
reset_leq_dfe() writes "0" into them - the adapt engine can overwrite
that write before the enable-mask lands a few instructions later, locking
in whatever it had drifted to instead of the intended baseline.

Set the manual-mode enable mask first instead, so the fields are
guaranteed passive before their reset values are written, regardless
of what state a previous calibration pass left them in.

Testing on hardware suggests that this matters at least for VTH/TAP0-4,
showing a drift of coefficients throughout multiple calibration runs
without this change. With this change, it remains stable across runs.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: add some debug prints to RX calibration
Jonas Jelonek [Mon, 27 Jul 2026 18:43:55 +0000 (18:43 +0000)] 
realtek: pcs: rtl931x: add some debug prints to RX calibration

Add some debugging aid to the RX calibration, making it easier to spot
eventual issues caused by calibration. While the calibration has been
tested, this happened only on a small set of devices.

Adds rtpcs_931x_sds_rxeq_leq_get_coef() to read back where LEQ
auto-adapt actually settles in rxcal_leq_adapt(), mirroring what
rxcal_fiber_adapt() already does for VTH. Shares the existing
930x gray-to-binary helper since it's pure bit math, not
variant-specific. Promote it to a generic helper instead of
930x-specific.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: replace open-coded writes with named setters
Jonas Jelonek [Tue, 28 Jul 2026 22:21:01 +0000 (22:21 +0000)] 
realtek: pcs: rtl931x: replace open-coded writes with named setters

Replace the plain field writes in rtpcs_931x_sds_reset_leq_dfe() with
the rxeq_* setters, now that both wire-up commits have given them real
calibration callers. Keeps the register-level detail out of the reset
sequence and gives it named accessors instead of raw write_bits() calls.

Some bits touched by the original reset writes fall outside any known
coefficient field (reg 0xd bits [1:0], reg 0x12 bits [15:12]/[3:0]).
These are kept as separate, explicitly commented raw writes rather than
folded into the setters, since the setters are scoped to match the
vendor SDK's real per-field accessors and narrowing them silently would
drop those undocumented-but-required bits.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: wire up RX calibration for 10G fiber
Jonas Jelonek [Tue, 28 Jul 2026 22:19:49 +0000 (22:19 +0000)] 
realtek: pcs: rtl931x: wire up RX calibration for 10G fiber

Port the vendor SDK's _phy_rtl9310_fiber_adapt() as
rtpcs_931x_sds_rxcal_fiber_adapt(), dispatched from post_config for
RTPCS_SDS_ATTACH_FIBER when hw_mode is 10GBase-R (1G/100M fiber isn't
calibrated by the vendor SDK either).

Add the rxeq_tap_*/rxeq_vth_* setters (set_value, set_adapt) needed to
drive it: fiber calibration runs VTH/TAP0 auto-adapt for 200ms, then
samples the auto-adapted VTH and locks it in, forces TAP0 to a fixed
value (31, per the vendor SDK), and re-locks manual mode, before letting
DFE TAP1-4 auto-adapt freely and verifying via a symbol-error recheck
loop.

Sampling VTH needs the SerDes' debug-readback routing. Add
rtpcs_931x_sds_set_debug() and rxeq_vth_get() for it, mirroring
_phy_rtl9310_dbg_set()/_phy_rtl9310_dfe_get().

The final symbol-error recheck deliberately deviates from the vendor
SDK's shape (adapt once, recheck 3x at 150ms, require exactly 0):
symErr's field is only 8 bits wide and reads as a saturated 0xff right
after rx_reset(), which looks like "link hasn't relocked yet" rather
than a genuine error count - 10G optical relock can plausibly take
longer than 150ms. Instead, recheck more times with more patience per
check and no reset in between (so a settling link isn't interrupted),
and tolerate a small nonzero symbol-error count rather than requiring
exactly 0.

rtpcs_931x_sds_fiber_get_symerr() already existed but was unused;
wire it up alongside the existing rtpcs_931x_sds_clear_symerr().

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pcs: rtl931x: wire up RX calibration for PHY-attached ports
Jonas Jelonek [Tue, 28 Jul 2026 22:09:39 +0000 (22:09 +0000)] 
realtek: pcs: rtl931x: wire up RX calibration for PHY-attached ports

Add post_config, run after activate() like on RTL930x, dispatching RX
calibration by attachment. Port the vendor SDK's _phy_rtl9310_leq_adapt()
as rtpcs_931x_sds_rxcal_leq_adapt() for the PHY-attached case, built on
new rxeq_leq_set_coef()/rxeq_leq_set_adapt() setters and the
existing but unused rx_reset().

Add rtpcs_931x_sds_dfe_disable_5g() for the one-shot operation the SDK
issues before calibrating PHY-attached and PCB-adapt ports. Presumably,
this quiesces DFE auto-adapt on the 5G companion analog block to prevent
it from interfering with DFE adaption during calibration.

Fiber and DAC attachments remain a TODO in post_config's dispatch.

Link: https://github.com/openwrt/openwrt/pull/24542
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agokernel: drop redundant TCP fraglist GRO pull check 24524/head
Julius Bairaktaris [Sat, 1 Aug 2026 22:20:35 +0000 (00:20 +0200)] 
kernel: drop redundant TCP fraglist GRO pull check

The patch adds a pre-check to tcp_gro_receive() so that an skb which
cannot be pulled up to the GRO offset is flushed instead of reaching the
BUG() in __skb_pull(). Upstream has since fixed the same bug inside the
callee, which leaves the pre-check with nothing to protect:

  commit f2bb3434544454099a5b6dec213567267b05d79d
  ("net: add pskb_may_pull() to skb_gro_receive_list()")

skb_gro_receive_list() now rejects the short skb itself and pulls with
skb_pull() rather than the __skb_pull() that carries the BUG(). It is
the only function the is_flist branch of tcp_gro_receive() calls, so no
path is left uncovered. The fix is present in both pinned kernels,
6.12.100 and 6.18.41.

Dropping the pre-check also restores upstream's intended handling: on
failure skb_gro_receive_list() sets NAPI_GRO_CB(skb)->flush, so the skb
is delivered through the normal receive path instead of being held as a
new GRO head. Short-circuiting on the local flush skipped that.

The patch keeps applying cleanly only because the fix landed in a
different function.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24524
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agoath79: remove swconfig from DSA users 24543/head
Rosen Penev [Thu, 30 Jul 2026 22:47:35 +0000 (15:47 -0700)] 
ath79: remove swconfig from DSA users

There is no need to have the swconfig binary when DSA is in use.

Both of these devices have a single switch.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24543
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agostm32: use libdeflate-gzip 24477/head
Rosen Penev [Wed, 29 Jul 2026 18:44:42 +0000 (11:44 -0700)] 
stm32: use libdeflate-gzip

Smaller compressed size for images.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24477
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agoeconet: en75_bmt: honor per-partition enable-remap 24399/head
Ahmed Naseef [Fri, 24 Jul 2026 05:15:23 +0000 (09:15 +0400)] 
econet: en75_bmt: honor per-partition enable-remap

The per-partition branch of w_init() tested econet,enable-remap on the parent
nand node (np) instead of the partition being iterated (part_np). That branch
only runs when np does not carry the property, so the test was always false and
the loop skipped every partition. As a result econet,enable-remap on a
partition node was a silent no-op: no partition ever registered a remap range,
and "enable-remap set for ..." was never printed.

Read the property from part_np so per-partition enable-remap works as
documented. Boards that place the property on a partition now register that
range; boards that place it on the nand node are unaffected.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24399
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agotools: elfutils: fix uio header inclusion 24539/head
Paweł Owoc [Sun, 2 Aug 2026 06:51:39 +0000 (08:51 +0200)] 
tools: elfutils: fix uio header inclusion

Fixes arm64 build failures by replacing <linux/uio.h> with POSIX <sys/uio.h>
to avoid header redefinition conflicts.

gnulib's fcntl.h ends up including glibc's fcntl.h and fcntl-linux.h
which includes glibc's types/struct_iovec.h,
thats where the redefinition happens.

the lines that use <linux/uio.h> are antiquated and were never necessary.
it can be traced back to the original 2014 change that added the file with aarch64 support
in upstream commit 66637fa21044ac0058b25522f473669e73de328b

it was never necessary to use the linux header over the glibc headers,
as elfutils only needs the iovec struct and that struct was present since glibc 2.0 in the 1990s

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24539
Signed-off-by: Robert Marko <robimarko@gmail.com>
6 days agoath10k-ct: update to version 7.2 24529/head
Shiji Yang [Sun, 2 Aug 2026 00:56:26 +0000 (08:56 +0800)] 
ath10k-ct: update to version 7.2

Update to Git HEAD (2026-07-31) and switch to 7.2 kernel based
driver. We also introduced a new patch 204-* to correct the driver
version number.

Upstream merged patches:
- 005-ath10k-ct-fix-missing-prototypes-warnings-on-6.12-ke.patch

Tested on QCA9887 and IPQ4019.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24529
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
6 days agowifi-scripts: restore noscan for sta/adhoc/mesh 21443/head
Omar Avelar [Tue, 7 Apr 2026 14:12:51 +0000 (08:12 -0600)] 
wifi-scripts: restore noscan for sta/adhoc/mesh

Restore the original mac80211.sh behavior by setting noscan when
fixed_freq is enabled for sta, adhoc and mesh modes. This ensures
correct channel width operation for fixed-frequency links and
matches the legacy mac80211.sh behavior.

Signed-off-by: Omar Avelar <host.omar@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21443
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
7 days agozynq: use libdeflate-gzip
Rosen Penev [Wed, 29 Jul 2026 18:47:29 +0000 (11:47 -0700)] 
zynq: use libdeflate-gzip

Smaller compressed size for images.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
7 days agomediatek: filogic: add support for COMFAST CF-WA933 22379/head
Guillaume RISCHARD [Tue, 21 Apr 2026 18:52:53 +0000 (14:52 -0400)] 
mediatek: filogic: add support for COMFAST CF-WA933

The Comfast CF-WA933[1] is an outdoor dual-band WiFi 6 access
point/router. They also OEM their routers for other providers. This PR
adds support based on, and substantially updates, the downstream device
definition[2] from Wayru, one such white label client.

It can be powered by a 12V DC barrel jack (standard 5.5x2.5mm, center
positive) or via 802.3af POE.

Hardware summary:
- SoC: MediaTek MT7981A
- RAM: 256 MiB
- Flash: SPI-NAND 128 MiB (Factory uses 64M; see details below to use
  the full 128M!)
- WiFi (MT7976DA): dual-band 802.11ax
- Ethernet (MT7531AE): 3x gigabit: 1x WAN + 2x LAN (labeled lan1/lan2).
- Button: reset
- LEDs: Power (always on), WLAN, WAN, LAN1, LAN2
- Serial: Internal header (Four unpopulated headers, clearly labeled)

MAC addresses on the tested unit:
- Label:   40:a5:ef:f0:5e:0f
- LAN:     40:a5:ef:f0:5e:0f  Factory 0xe000
- WAN:     40:a5:ef:f0:5e:10  Factory 0xe000 + 1
- 2.4 GHz: 40:a5:ef:f0:5e:11  Factory 0x0004
- 5 GHz:   40:a5:ef:f0:5e:13  Factory 0x8000 + 1

The serial number is stored as an ASCII string at Factory 0xe100.

Disassembly:

Unscrew the six 3mm hex bolts on the dome and the six 5mm bolts on the
side of the arm, then lift the dome. For reassembly, make sure the large
O ring is in the groove in the dome.

OpenWrt installation:

1. Connect to Ethernet on the WAN port. Manually set your IP address to
192.168.1.10 (important!)
2. Upload the OpenWrt sysupgrade image at http://192.168.1.1

The default U-Boot partition layout does not expose the full flash
capacity. Change the mtdparts U-Boot environment variable before
rebooting and then installing the image for the 128 MiB variant through
the same bootloader recovery/upgrade page.

Method 1: Using the serial console

1. Disassemble the unit and connect to the serial console (115200 8N1).
   Leave 3.3V disconnected.
2. On the boot loader, go straight to "0. U-Boot console"
3. Then enter:
   setenv mtdparts 'nmbm0:1024k(bl2),512k(u-boot-env),2048k(factory),2048k(fip),117248k(ubi)'
   saveenv
   reset

Method 2: From OpenWrt using uboot-envtools

apk add uboot-envtools
fw_setenv mtdparts 'nmbm0:1024k(bl2),512k(u-boot-env),2048k(factory),2048k(fip),117248k(ubi)'
reboot

Return to vendor firmware:
1. If you have changed the mtdparts environment variable, undo the
   change by setting:
   mtdparts 'nmbm0:1024k(bl2),512k(u-boot-env),2048k(factory),2048k(fip),65536k(ubi)'
2. Re-enter the same bootloader recovery/upgrade page.
3. Upload a stock COMFAST firmware image, e.g. from
   http://www.comfast.com.cn/index.php?m=content&c=index&a=show&catid=85&id=773

[1]: https://comfastgroup.com/product/cf-wa933/
[2]: https://github.com/Wayru-Network/wayru-os/tree/main/profiles/prometheus

Signed-off-by: Guillaume RISCHARD <git@stereo.lu>
Link: https://github.com/openwrt/openwrt/pull/22379
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
7 days agoqualcommax: ipq50xx: build-in PTP support
Robert Marko [Mon, 3 Aug 2026 09:44:15 +0000 (11:44 +0200)] 
qualcommax: ipq50xx: build-in PTP support

When images are built with CONFIG_ALL_KMODS=y which are all buildbot built
images, then the STMMAC_ETH driver will get demoted to a module.

This is due to ALL_KMODS including kmod-ptp which selects the full PTP 1588
support instead of just the auto selected PTP_1588_CLOCK_OPTIONAL.
That causes PTP_1588_CLOCK_OPTIONAL to get deselected, STMMAC driver built
as a module instead of being built-in and then its not shipped in the device
images leading to no working wired networking.

So, lets simply enable full PTP 1588 support as built-in into the kernel so
that STMMAC does not get demoted to a module and restores wired networking.

Signed-off-by: Robert Marko <robimarko@gmail.com>
7 days agoqualcommax: fix pwm period calculation 24479/head
Stephane Lepain [Wed, 29 Jul 2026 20:32:48 +0000 (22:32 +0200)] 
qualcommax: fix pwm period calculation

The GL.iNet GL-AXT1800 (ipq6018) requests a 40,000 ns (25 kHz) PWM
period for its four-wire fan:

  pwms = <&pwm 1 40000 0>;

with the IPQ6018 PWM node clocked at 100 MHz. ipq_pwm_apply() pins
pwm_div at its maximum and derives only pre_div from the requested
period:

  pre_div = period_ns * clk_rate / (NSEC_PER_SEC * (pwm_div + 1));
  if (!pre_div)
          return -ERANGE;

For 40,000 ns at 100 MHz this is floor(0.061) == 0, so the driver
deterministically returns -ERANGE and pwm-fan fails to probe on every
boot:

  pwm-fan pwm-fan: failed to enable PWM
  pwm-fan pwm-fan: Failed to configure PWM: -34
  pwm-fan pwm-fan: probe with driver pwm-fan failed with error -34

Probe returns before the tachometer IRQ is requested and before
fan-supply is claimed, so the board loses fan RPM reporting and the
vcc_fan 5V regulator stays disabled. The fan never spins and the DTS
cooling-maps (trips at 50/75/100 C) have no cooling device to bind to.

This is the same defect fixed for qualcommbe in commit 8db23dc91a01
("qualcommbe: fix pwm period calculation") by Kenneth Kasilag, whose
rationale explicitly calls out 25 kHz four-wire fan PWM. qualcommax
carries its own copy of the pwm-ipq driver and was not covered by that
fix. The patch added here is that work backported to qualcommax, with
authorship preserved; the base driver differs slightly between targets
so the hunks were rebased onto the qualcommax copy.

Confirmed on hardware. The board was tested on the 6.12 kernel, which
this target has since dropped; the pwm-ipq driver source is identical
under 6.12 and 6.18, so the patch and its effect are unchanged. Before,
driving the PWM directly from userspace on a GL-AXT1800 running
r35591-d0110a25ed:

  # echo 40000   > period; echo 1 > enable   -> write error (-ERANGE)
  # echo 2700000 > period; echo 1 > enable   -> succeeds

After building and flashing an image with this patch, pwm-fan probes
cleanly and the fan is verified spinning by its own tachometer:

  /sys/class/hwmon/hwmon7/name                          = pwmfan
  /sys/devices/platform/pwm-fan/hwmon/hwmon7/fan1_input = 3548
  /sys/class/regulator/regulator.3 (vcc_fan)            = enabled
  /sys/class/thermal/cooling_device1                    = pwm-fan

and no PWM errors remain in dmesg.

Link: https://github.com/openwrt/openwrt/commit/8db23dc91a015bf843f1e3fbd0891574594e86f9
Signed-off-by: Stephane Lepain <stephanelepain@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24479
Signed-off-by: Robert Marko <robimarko@gmail.com>
7 days agorealtek: board: add patch to fix boot hang 24541/head
Jonas Jelonek [Sun, 2 Aug 2026 20:02:10 +0000 (20:02 +0000)] 
realtek: board: add patch to fix boot hang

Add a patch to fix boot hang on some devices after 7cc31af7bdd4
("realtek: convert to generic machine initialization"), reusing
upstream's implementation of Realtek board setup. The issue came up on a
Linksys LGS352C device, causing total silence and a hang after
rt-loader's last line "Booting kernel from 0x80100000 ...".

While the OpenWrt downstream version operated on the plain appended
device tree using a pointer, the upstream implementation copies the FDT
into a 16 KiB buffer. Given the following survey, this may be too small
for some devices:

  rtl9311_linksys_lgs352c:                21278 bytes
  rtl9313_ubnt_usw-pro-xg-8-poe:          12809 bytes
  rtl9313_hasivo_f5800w-12s-plus:         13103 bytes
  rtl9313_xikestor_sks8300-12x-v1:        13630 bytes
  rtl9313_zyxel_xs1930-12f:               14488 bytes
  rtl9313_zyxel_xs1930-12hp:              15234 bytes
  rtl9313_hasivo_s1300wp-8xgt-4s-plus:    15341 bytes

To fix this, the patch increases the buffer size, leaving some more
headroom for further outliers.

Fixes: 7cc31af7bdd4 ("realtek: convert to generic machine initialization")
Assisted-by: Claude:claude-sonnet-5
Link: https://github.com/openwrt/openwrt/pull/24541
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
7 days agodropbear: drop obsolete rsa-sha2-256 pubkey patch 24525/head
Julius Bairaktaris [Sat, 1 Aug 2026 22:20:49 +0000 (00:20 +0200)] 
dropbear: drop obsolete rsa-sha2-256 pubkey patch

The patch relaxes buf_verify()'s "Non-matching signing type" check so
that an rsa-sha2-256 signature is accepted against an ssh-rsa key.
Dropbear no longer needs the help: both sides of that comparison are now
taken from the wire's own algorithm names, so a compliant client
satisfies expect_sigtype == sigtype unaided.

Tracing the provenance in 2026.92, since it is what the removal rests
on. svr-authpubkey.c:113 reads the algorithm name out of the
SSH_MSG_USERAUTH_REQUEST and :126 turns it into sigtype with
signature_type_from_name(); that value is what :233 hands to buf_verify()
as expect_sigtype. signkey.c:655 parses the type name out of the
signature blob through the same signature_type_from_name(), and :659
compares the two. Neither is derived from the key format found in
authorized_keys: :132 maps the signature type back to the key algorithm
with signkey_type_from_signature() purely for the checkpubkey() lookup.
RFC 8332 section 3 has a client using rsa-sha2-256 send that name in the
userauth request and in the signature both, so the two agree and the
check passes - with an ssh-rsa key in authorized_keys, which is the case
the patch was written for.

Confirmed rather than reasoned: built pristine 2026.92 with this
package's defaults (DROPBEAR_RSA 1, DROPBEAR_RSA_SHA1 0) and logged in
over publickey with an OpenSSH client pinned to
PubkeyAcceptedAlgorithms=rsa-sha2-256. It succeeds, and the server
reports "Pubkey auth succeeded ... with ssh-rsa key" - an ssh-rsa entry
in authorized_keys, an rsa-sha2-256 signature, no patch.

Keeping the patch has an effect of its own. With DROPBEAR_RSA_SHA1 0,
signature_type_from_name("ssh-rsa") falls through to
signkey_type_from_name() and returns DROPBEAR_SIGNKEY_RSA, which is 0.
That is not DROPBEAR_SIGNATURE_NONE, so the patch's own "No signature
type" guard passes it, and expect_sigtype == DROPBEAR_SIGNATURE_RSA_SHA256
skips the type check. buf_rsa_verify() then calls rsa_pad_em(), whose
switch has no case for 0 and ends in default: assert(0), so the process
aborts. Upstream's unconditional check rejects the mismatch instead.

It is also narrower than upstream's in a second way: the replacement
sits inside #if DROPBEAR_RSA / #if DROPBEAR_RSA_SHA256, while the check
it displaces is unconditional. An ECDSA or Ed25519 only build therefore
has no expect_sigtype check at all today, only the "No signature type"
guard. Dropping the patch restores the check for every configuration,
not just this package's default one.

buf_verify() runs only after checkpubkey() has succeeded, so the abort
needs a key already listed in the target's authorized_keys - post-auth,
not an authentication bypass.

The patch's extra DROPBEAR_SIGNATURE_NONE guard is not lost with it:
svr-authpubkey.c rejects that case before buf_verify() is reached.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24525
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
7 days agomediatek: filogic: add support for netis N6 V2 24089/head
Murad Rabadanov [Wed, 29 Jul 2026 05:52:42 +0000 (08:52 +0300)] 
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
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
7 days agouboot-airoha: fix eMMC boot failure caused by redundant env 24397/head
Yalei Zang [Fri, 24 Jul 2026 06:39:11 +0000 (14:39 +0800)] 
uboot-airoha: fix eMMC boot failure caused by redundant env

The an7581/an7583 configs enable redundant environment support,
but do not define CONFIG_ENV_OFFSET_REDUND.

When running `saveenv`, U-Boot tries to write the redundant environment
to MMC. Without a valid redundant environment offset, the data may be
written to an incorrect location and overwrite critical boot data such
as the GPT, BL2/preloader or BL31+U-Boot FIP.

This causes the board to fail booting after saving the environment.

Define CONFIG_ENV_OFFSET_REDUND so the redundant environment is stored
at a valid eMMC offset and no longer corrupts the bootchain.

Signed-off-by: Yalei Zang <yalei.zang@airoha.com>
Link: https://github.com/openwrt/openwrt/pull/24397
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
7 days agoairoha: an7583: add BL2 and BL31+U-Boot Artifacts for EVB board
Yalei Zang [Fri, 24 Jul 2026 01:32:05 +0000 (09:32 +0800)] 
airoha: an7583: add BL2 and BL31+U-Boot Artifacts for EVB board

Pack the BL2 and BL31+U-Boot artifacts as Airoha AN7583 is currently
supported in upstream U-Boot and bootloader files can be used for
unfused boards.

Signed-off-by: Yalei Zang <yalei.zang@airoha.com>
Link: https://github.com/openwrt/openwrt/pull/24397
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agoqualcommax: drop 6.12 support
Robert Marko [Sun, 2 Aug 2026 17:39:22 +0000 (19:39 +0200)] 
qualcommax: drop 6.12 support

No point in keeping 6.12 on qualcommax anymore.

Signed-off-by: Robert Marko <robimarko@gmail.com>
8 days agoqualcommax: default to 6.18
Robert Marko [Sun, 2 Aug 2026 17:38:48 +0000 (19:38 +0200)] 
qualcommax: default to 6.18

Lets default to 6.18 kernel for qualcommax.

Signed-off-by: Robert Marko <robimarko@gmail.com>
8 days agogeneric: backport net-dsa-realtek use devm_mutex_init for locks 24486/head
Mieczyslaw Nalewaj [Thu, 30 Jul 2026 07:07:58 +0000 (09:07 +0200)] 
generic: backport net-dsa-realtek use devm_mutex_init for locks

Backport four upstream commits that convert mutex_init() calls to
devm_mutex_init() in the Realtek DSA driver family. With
CONFIG_DEBUG_MUTEXES enabled, mutex_destroy() must be called before a
mutex is discarded; using the devm variant handles this cleanup
automatically and avoids leaking a warning on driver removal/failure.

Added patches (applied to both backport-6.12 and backport-6.18):
- 944-01: net: dsa: realtek: rtl8365mb: use devm_mutex_init for mib_lock
- 944-02: net: dsa: realtek: use devm_mutex_init for regmap lock
- 944-03: net: dsa: realtek: use devm_mutex_init for vlan_lock
- 944-04: net: dsa: realtek: use devm_mutex_init for l2_lock

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/24486
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agoeconet: en7528: add UBI support to DASAN H660GM-A 24398/head
Ahmed Naseef [Fri, 24 Jul 2026 03:52:07 +0000 (07:52 +0400)] 
econet: en7528: add UBI support to DASAN H660GM-A

Move the DASAN H660GM-A root filesystem from a raw squashfs in the tclinux
partition to UBI, following the layout already used by the en751221
ChinaMobile GS3101.

tclinux is split into an explicit 4MB tclinux_kernel partition holding the
raw LZMA kernel and a tclinux_rootfs partition covering the remainder. The
latter is concatenated with the unused "unknown" partition into a single UBI
volume, giving 153MB on the Airtel variant and 41MB on the Generic one. The
two regions are not adjacent, so this needs mtd virtual concat, which is
enabled for the subtarget.

The TRX plus UBI image recipe is identical to the one the GS3101 uses, so
factor it out into a Device/tclinux-ubi template instead of duplicating it.

The .trx is written linearly into tclinux by the vendor installer, so an
oversized image would run past its end into tclinux_slave and destroy the
vendor firmware in the alternate slot. FACTORY_SIZE guards against this and
is set to the size of the partition the .trx is written into.

Existing installations have to be reflashed with the .trx rather than
sysupgraded, since the ubi MTD only appears once the new device tree is
running.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24398
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agoprojectsmirrors: remove GNOME mirrors mirror.csclub.uwaterloo.ca 24498/head
Zhi You [Fri, 31 Jul 2026 04:43:40 +0000 (12:43 +0800)] 
projectsmirrors: remove GNOME mirrors mirror.csclub.uwaterloo.ca

This site no longer provide GNOME mirror services.

Signed-off-by: Zhi You <yuzhii0718@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24498
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agomediatek: add support for Cudy WR3000U v1 24447/head
Dmitry Mostovoy [Tue, 28 Jul 2026 07:26:19 +0000 (03:26 -0400)] 
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>
8 days agorealtek: dsa: rtl931x: downgrade print_matrix to debug 24507/head
Jonas Jelonek [Fri, 31 Jul 2026 13:39:38 +0000 (13:39 +0000)] 
realtek: dsa: rtl931x: downgrade print_matrix to debug

Downgrade rtldsa_931x_print_matrix from pr_info to pr_debug to reduce
the massive amount printed during boot (64 lines). There doesn't seem
any benefit right now for keeping this at info level. And RTL931X is
the only variant that uses info-level print right now, all others
already use pr_debug.

Debug output can be activated individually for people who need this for
testing/debugging.

Link: https://github.com/openwrt/openwrt/pull/24507
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agox86: use libdeflate for gzip 24150/head
Rosen Penev [Wed, 8 Jul 2026 21:12:42 +0000 (14:12 -0700)] 
x86: use libdeflate for gzip

Shrinks size slightly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24150
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agoqualcommax: qca_edma: give the DSA conduit a stable MAC address 24512/head
Julius Bairaktaris [Fri, 31 Jul 2026 22:27:46 +0000 (00:27 +0200)] 
qualcommax: qca_edma: give the DSA conduit a stable MAC address

edma_probe() assigns a random address unconditionally, so the conduit
changes its MAC on every boot, and with it every DSA user port that has
no address of its own and therefore inherits the conduit's.

The conduit is a DMA engine behind the switch and has no address of its
own, which is why no board describes one for it. Take the address from
the switch this conduit serves instead: its ports carry the board's
addresses, either from DT or patched in by the bootloader, so this needs
nothing added per board. Keep the random address for the case where the
switch describes no address either.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24512
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
8 days agokernel: bump 6.18 to 6.18.41 23537/head 24419/head
John Audia [Fri, 31 Jul 2026 19:46:26 +0000 (15:46 -0400)] 
kernel: bump 6.18 to 6.18.41

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.41

Update script ran/no patches required a refresh/updated checksums only.

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/24419
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agokernel: bump 6.18 to 6.18.40
John Audia [Tue, 28 Jul 2026 10:52:48 +0000 (06:52 -0400)] 
kernel: bump 6.18 to 6.18.40

Removed upstreamed:
  airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch[1]
  airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch[2]
  airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch[3]
  airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch[4]
  airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch[5]
  airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch[6]
  generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch[7]
  generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch[8]
  generic/backport-6.18/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch[9]
  qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch[10]
  airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch[11]
  airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch[12]

Manually rebased:
  airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
  bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch
  mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch

Removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG, it was removed upstream [13]

All other patches automatically rebased via update_kernel.sh

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=db3cd694ded4c8d492b62c7228e9c0d9230b13d0
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=a888f3d5970ff21e092bc9edcf3d9ffee9ae68a7
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=dcac6e4221f39f4f80adc7fb761c358a612fca62
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=4d48c08a0bf6c6ab8c07df37ee8794da891eec80
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=112b5eff24e044561ee9599a0d34e0fcea1df4e0
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=2066e692ec7a10af63d9c75899c9a66946cfede9
7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=3d3638fe921371e52be77baefe792c126fcdfc8c
8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=8d501b1411548442aaf1de3268654046f5bcf4c1
9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=10e05634ddc19953d7357a39eebee4e142dc8397
10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=226feccaac81833f227e7ad4b7702ff5c918211f
11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=5985ddfd3e83fee2e021ed6908d4026516f47278
12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=ad6963c3bb458fc1b722627405800c32e4cd840b
13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=c401492e01c7bfd38cf14c94d85c7efafe7d1a25

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
[Fixed 0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch,
180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
and removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG]
Link: https://github.com/openwrt/openwrt/pull/24419
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agokernel: netfilter: add kmod-nft-core dep to kmod-nf-flow
John Audia [Sat, 25 Jul 2026 16:29:55 +0000 (12:29 -0400)] 
kernel: netfilter: add kmod-nft-core dep to kmod-nf-flow

nf_flow_table.ko now links in the flowtable path discovery code
(nft_flow_route() and friends), which was moved out of
nft_flow_offload.c and references nf_tables symbols directly. This
makes nf_flow_table.ko depend on nf_tables.ko at load time, so
kmod-nf-flow needs kmod-nft-core.

Upstream: 93d7a7ed0734 ("netfilter: flowtable: move path discovery infrastructure to its own file")

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/24419
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agoixp4xx-microcode: use the linux-firmware images 24422/head
Linus Walleij [Sat, 3 Jan 2026 22:19:28 +0000 (23:19 +0100)] 
ixp4xx-microcode: use the linux-firmware images

The IXP4xx firmware is now in linux-firmware so use these images
instead and drop the special microcode builder package.

Apply a change to the github labeler at the same time as the special
ixp4xx microcode package no longer exists after this.

Link: https://github.com/openwrt/openwrt/pull/24422
Signed-off-by: Linus Walleij <linusw@kernel.org>
9 days agouml: add v6.18 as testing kernel
Christian Lamparter [Wed, 3 Jun 2026 18:39:10 +0000 (20:39 +0200)] 
uml: add v6.18 as testing kernel

Check out the TESTING_KERNEL option to build OpenWrt UML with v6.18.
Be aware that the old UML networking is now gone! Please checkout:

https://docs.kernel.org/virt/uml/user_mode_linux_howto_v2.html#setting-up-uml-networking

Note: v6.12 already supported vector transports.
The README.md has been updated to reflect this change.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agouml: refresh patches for v6.18
Christian Lamparter [Wed, 3 Jun 2026 19:19:56 +0000 (21:19 +0200)] 
uml: refresh patches for v6.18

 - 101-mconsole-exec.patch: fdtables now needs to be included separately.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agouml: refresh kernel config for v6.18
Christian Lamparter [Wed, 3 Jun 2026 19:14:55 +0000 (21:14 +0200)] 
uml: refresh kernel config for v6.18

One interesting piece of information that has come up:

UML has come a long way with VFIO_PCI. But this functionality is
unused/disabled because the target doesn't set the PCI feature.

I think this feature could be added and the related CONFIG_VFIO
options could be selected by the kmod-vfio package.

That said, CONFIG_NO_IOMEM=y and friends will have to go.
So this can involve more work than one would expect.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agouml: restore v6.12 patches and config
Christian Lamparter [Wed, 3 Jun 2026 18:38:10 +0000 (20:38 +0200)] 
uml: restore v6.12 patches and config

simply copied from openwrt

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agouml: move patches and config from v6.12 to v6.18
Christian Lamparter [Wed, 3 Jun 2026 18:36:06 +0000 (20:36 +0200)] 
uml: move patches and config from v6.12 to v6.18

Two patches are skipped:
 - 000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch
   It's included. This was backported from upstream.

 - 102-pseudo-random-mac.patch
   The deprecated um_net driver has been removed.
   You need to convert to the vector-based network driver.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agokernel/modules: set CONFIG_UML_SOUND for UML if kmod-sound-core is selected
Christian Lamparter [Wed, 3 Jun 2026 20:07:04 +0000 (22:07 +0200)] 
kernel/modules: set CONFIG_UML_SOUND for UML if kmod-sound-core is selected

This was changed in upstream linux kernel with:

|commit db4bfcba7bb8 um: Fix hostaudio build errors
|Author: Randy Dunlap <rdunlap@infradead.org>
|Date:   Tue Aug 1 22:15:00 2023 -0700
|
|   um: Fix hostaudio build errors
|
|   Use "select" to ensure that the required kconfig symbols are set
|   as expected.
|   Drop HOSTAUDIO since it is now equivalent to UML_SOUND.
|
|   Set CONFIG_SOUND=m in ARCH=um defconfig files to maintain the
|   status quo of the default configs.
|
|   Allow SOUND with UML regardless of HAS_IOMEM. Otherwise there is a
|   kconfig warning for unmet dependencies. (This was not an issue when
|   SOUND was defined in arch/um/drivers/Kconfig. I have done 50 randconfig
|   builds and didn't find any issues.)
|   [...]

The reason why this was not spotted is because of IOMEM. We would need
to have a device that requires IOMEM first and the obvious choice would
be VFIO_PCI. But none of the pci features are set for the UML target.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
9 days agoppp: fix precompiled filter option 24467/head
Qingfang Deng [Thu, 30 Jul 2026 01:20:05 +0000 (09:20 +0800)] 
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: 9cecf2b16e0e ("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
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agohostapd: only follow a station channel on radios that hold a link
Felix Fietkau [Fri, 31 Jul 2026 01:19:42 +0000 (03:19 +0200)] 
hostapd: only follow a station channel on radios that hold a link

A station MLD is configured across every radio it may use, which marks all
of those radios as channel following. Only the radios the station actually
holds a link on have a channel to follow; the rest waited for one that never
arrived, so they ignored their configured channel and kept whatever ACS had
picked at start up. Later channel changes were dropped as well, because the
pending follow was treated as authoritative.

Track the frequency reported through apsta_state per radio and let a radio
without one apply its own configuration. The supplicant marks the radios
holding no link when the station completes an association, and repeats the
notification on link reconfiguration, so radios are handed back and forth as
the station adds or drops links rather than staying stuck on the first
association.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
9 days agowifi-scripts: keep radio config out of the MLD configuration
Felix Fietkau [Thu, 30 Jul 2026 08:12:06 +0000 (10:12 +0200)] 
wifi-scripts: keep radio config out of the MLD configuration

wpad decides whether to keep or tear down an MLD interface by comparing the
whole configuration object, which embedded the full device configuration of
every participating radio. Any radio level change, such as a channel or
txpower update, therefore destroyed and recreated the station MLD and
dropped the backhaul link. Neither hostapd nor wpa_supplicant reads
radio_config; it is only used locally to resolve the phy.

Signed-off-by: Felix Fietkau <nbd@nbd.name>