]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
2 days agorealtek: dts: adapt RTL8214FC bus location on RTL839x 24281/head
Markus Stockhausen [Sun, 19 Jul 2026 06:25:07 +0000 (08:25 +0200)] 
realtek: dts: adapt RTL8214FC bus location on RTL839x

The RTL839x has the following hard-coded bus topology:
- Bus 0: Port 0-23
- Bus 1: Port 24-51

So the bus number and the PHY address in the dts are mostly
ignored. Nevertheless fix the assignment for the Zyxel GS1920.
This does not change the functionality it just describes the
hardware correctly. While we are here add the PHY package
description too.

Link: https://github.com/openwrt/openwrt/pull/24281
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2 days agorealtek: dts: more ethernet-phy-package conversion
Markus Stockhausen [Sat, 18 Jul 2026 17:10:21 +0000 (19:10 +0200)] 
realtek: dts: more ethernet-phy-package conversion

Encapsulate some more multiport PHYs into their packages.

Link: https://github.com/openwrt/openwrt/pull/24281
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
3 days agoCI: remove labeler workflow and enable webhook-based labeling 24256/head
Josef Schlehofer [Thu, 16 Jul 2026 21:52:35 +0000 (23:52 +0200)] 
CI: remove labeler workflow and enable webhook-based labeling

Remove the .github/workflows/labeler.yml workflow and enable the "enable_labeler_yml" option in .github/formalities.json to let the webhook bot handle pull request labeling. This avoids running on GitHub Actions, so it is faster and uses fewer resources.

It uses the existing .github/labeler.yml for labels.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24256
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 days agoCI: migrate to webhook bot and simplify labeler
Josef Schlehofer [Thu, 16 Jul 2026 17:57:35 +0000 (19:57 +0200)] 
CI: migrate to webhook bot and simplify labeler

This commit migrates the repository validation to a webhook-based bot instead of the GitHub Actions workflow (.github/workflows/formal.yml).

Since the bot handles stable branch labeling automatically (via the "branch_labeling: true" configuration option), the redundant branch check and labeling steps are removed from .github/workflows/labeler.yml.

The following configuration choices are applied in formalities.json:
- check_space_after_assignment: false (Disabled temporarily to catch any issues since it is a newly implemented check)
- check_makefile_indentation: false (Disabled temporarily to catch any issues since it is a new feature)
- check_patch_headers: 'warning' (Changed to warning instead of hard error since many legacy patches lack headers)
- enable_stale_bot: false (Disabled for now)

Other configurations can be adjusted in formalities.json based on the openwrt-bot-worker repository [1].

[1] https://github.com/openwrt/openwrt-bot-worker

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24256
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 days agoramips: move sound driver to files 24236/head
Rosen Penev [Sat, 11 Jul 2026 23:32:38 +0000 (16:32 -0700)] 
ramips: move sound driver to files

This is local only. Also has never been upstreamed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24236
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: add initial support for Nokia XG-040G-MF 23809/head
Mikhail Zhilkin [Mon, 15 Jun 2026 14:27:49 +0000 (17:27 +0300)] 
airoha: add initial support for Nokia XG-040G-MF

This commit adds initial support for Nokia XG-040G-MF XG-PON ONU.

Specification
-------------
- SoC       : Airoha AN7583DT (dual-core ARM Cortex-A53 1.2 GHz)
- RAM       : 512 MiB DDR4 (Winbond W664GG6RB-06)
- Flash     : SPI-NAND 256 MiB (GigaDevice GD5F2GM7UEYIG)
- WLAN      : -
- Ethernet  : 1x 2500 Mbps (LAN1, Airoha EN8811HN)
              3x 10/100/1000 Mbps (LAN2-LAN4, Airoha AN7583 SoC switch)
- XG-PON    : ECONET EN7572, SLIC: MaxLinear PEF32001VSV12
- USB       : 1x USB2 (with power control via gpio)
              1x USB3 (with power control via gpio)
- Buttons   : Reset
- LEDs      : 1x Power (green)
              1x WAN (green)
              1x WAN (red)
              4x LAN (green)
              2x USB (green)
- Power     : 12 VDC, 1 A

Unsupported functions, limitations and known issues
---------------------------------------------------
1. XG-PON won't be available after installing OpenWrt.
2. USB ports: AN7583 SoC in OpenWrt doesn't support USB at this time.

Installation (UART)
-------------------
1. Attach UART and run picocom:
   picocom -b 115200 --send-cmd "sb -vv" /dev/ttyUSB0
2. Interrupt boot process by pressing Enter key to enter u-boot
   Username: telecomadmin
   Password: nE7jA%5m
3. Start download firmware via ymodem protocol (via UART):
   loady 0x85000000
4. Press Ctrl + A then Ctrl + S in the picocom terminal (if you are using
   a different terminal, please refer to the documentation) to start
   upload OpenWrt initramfs image using ymodem protocol. Enter local path
   to the OpenWrt initramfs image and press Enter.
5. Load OpenWrt initramfs image from the memory:
   bootm 0x85000000
5. Sysupgrade with OpenWrt sysupgrade image

Alternative for the p.3-4. Load and boot OpenWrt initramfs from tftp IP
192.168.1.254:
   tftpboot 0x85000000 192.168.1.254:openwrt-initramfs-uImage.itb
   bootm 0x85000000

Backup and installation (without UART)
--------------------------------------
1. Unplug Fiber
2. Make ONU Reset
3. Navigate: http://192.168.1.1
   Username: CMCCAdmin
   Password: aDm8H%MdA
4. Go to Apps -> Home Storage -> FTP and check Enable FTP
5. Go to Apps -> Home Storage -> SAMBA Sharing and check Enable Samba
6. Visit the following URL to open Telnet:
   http://192.168.1.1/system.cgi?telnet
7. Telnet account login:
   Username: user
   Password: <see ONU label>
8. Get root privileges:
   su user_ftp
   Password: <see ONU label>
9. Copy 'squashfs-factory-kernel.bin', 'squashfs-factory-rootfs.bin' and
   'OpenWrt.mtd2.u-boot-env.bin' (backup of 'u-boot-env' partition from
   the another Nokia XG-040G-MF with OpenWrt installed)
9. Attach USB flash drive and check the new dir in /mnt:
   ls /mnt
10. Change current dir to the flash drive (change D to your flash drive
   label):
   cd /mnt/D
11. Make backup:
   for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; \
   do cat /dev/mtd$i | gzip -9 > mtd$i.bin.gz; done
12. Check image sizes:
   ls -l | awk '{if(NR>1) {$5=sprintf("0x%x", $5); print}}'
13. Write images:
   mtd_debug erase /dev/mtd0 0x60000 0x20000
   mtd_debug write /dev/mtd0 0x60000 0x20000 OpenWrt.mtd2.u-boot-env.bin
   mtd_debug erase /dev/mtd14 0x0 0x2880000
   mtd_debug write /dev/mtd14 0x0 0x3e6cfc squashfs-factory-kernel.bin
   mtd_debug erase /dev/mtd11 0x0 0x80e0000
   mtd_debug write /dev/mtd11 0x0 0x440000 squashfs-factory-rootfs.bin
   0x3e6cfc - size of your 'squashfs-factory-kernel.bin'
   0x440000 - size of your 'squashfs-factory-rootfs.bin'
14. Reboot:
   reboot

Recovery
--------
The same as described in Installation (UART).

Return to stock
---------------
1. Follow the steps 1-5 of the Installation (UART)
2. Once in OpenWrt upload you backup to the /tmp dir of the router:
   scp -O mtd16.bin.gz root@192.168.1.1:/tmp
5. Connect to the router using ssh and install kmod-mtd-rw:
   apk update && apk add kmod-mtd-rw
   insmod mtd-rw i_want_a_brick=1
6. Unlock bootloader:
   mtd unlock bootloader
7. Restore stock:
   zcat /tmp/mtd16.bin.gz | mtd write - all_flash
8. Reboot:
   reboot

Stock layout
------------
+-------+------------+---------+---------+
| mtd   | label      | start   | size    |
+-------+------------+---------+---------+
| mtd0  | bootloader | 0       | 80000   |
| mtd1  | romfile    | 80000   | 40000   |
| mtd14 | nsb_master | c0000   | 2880000 |
| mtd15 | nsb_slave  | 2940000 | 2880000 |
| mtd6  | bosa       | 51c0000 | 40000   |
| mtd7  | ri         | 5200000 | 40000   |
| mtd8  | flag       | 5240000 | 40000   |
| mtd9  | flagback   | 5280000 | 40000   |
| mtd10 | config     | 52c0000 | a00000  |
| mtd11 | data       | 5cc0000 | 80e0000 |
| mtd12 | oopsfs     | dda0000 | 400000  |
| mtd13 | log        | e1a0000 | a00000  |
+-------+------------+---------+---------+

UART
----
A view from the back side of the PCB:
   ------------------------
   |       GND RX TX
   |        X  X  X
Connection parameters:
115200, 8N1, 3.3V

MAC addresses
-------------
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| LAN     | e0:xx:xx:xx:xx:a0 | label     |
| WAN     | e0:xx:xx:xx:xx:a1 | label + 1 |
+---------+-------------------+-----------+
The LAN MAC (hex) was found in 'ri', 0x3e

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: move common Nokia XG-040G properties to dtsi files
Mikhail Zhilkin [Mon, 29 Jun 2026 18:52:26 +0000 (21:52 +0300)] 
airoha: move common Nokia XG-040G properties to dtsi files

Move shared DTS properties for Nokia XG-040G-MD and XG-040G-MF into
common DTSI files to reduce duplication:
- an758x-nokia_xg-040g-common.dtsi
- an758x-nokia_xg-040g-stock-parts.dtsi
- an758x-nokia_xg-040g-ubi-parts.dtsi

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: an7583: remove source-only flag
Mikhail Zhilkin [Tue, 16 Jun 2026 05:12:57 +0000 (08:12 +0300)] 
airoha: an7583: remove source-only flag

Remove source-only flag from Airoha an7583 subtarget for upcoming Nokia
XG-040G-MF support. Also disable builds for airoha_an7583-evb and
airoha_an7583-evb-emmc evaluation boards.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: use standard LED function and enumerators for PHY LEDs
Mikhail Zhilkin [Sat, 27 Jun 2026 15:44:28 +0000 (18:44 +0300)] 
airoha: use standard LED function and enumerators for PHY LEDs

Configure shared LAN PHY LED templates with standard LED_FUNCTION_LAN
macros and initial function-enumerators. These nodes remain disabled
by default.

Board-specific DTS files enabling them must provide the required 'color'
property, and must override the 'function-enumerator' values if identical
colors are used to guarantee unique sysfs names.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: an7583: refresh kernel config
Mikhail Zhilkin [Mon, 22 Jun 2026 17:36:52 +0000 (20:36 +0300)] 
airoha: an7583: refresh kernel config

1. Enable MEDIATEK_GE_SOC_PHY driver and disable NET_DSA_MT7530_MDIO
2. Refresh kernel configs with:
   make kernel_oldconfig CONFIG_TARGET=subtarget

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: an7583: enable mtd virtual concat support
Mikhail Zhilkin [Sun, 14 Jun 2026 05:48:45 +0000 (08:48 +0300)] 
airoha: an7583: enable mtd virtual concat support

This is required for upcoming Nokia XG-040G-MF support.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: an7583: add default packages
Mikhail Zhilkin [Tue, 16 Jun 2026 05:20:20 +0000 (08:20 +0300)] 
airoha: an7583: add default packages

Add airoha-an7583-npu-firmware, kmod-gpio-button-hotplug, kmod-leds-gpio
and uboot-envtools to the default packages.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agoairoha: wrap long lines and fix indents
Mikhail Zhilkin [Tue, 16 Jun 2026 05:37:42 +0000 (08:37 +0300)] 
airoha: wrap long lines and fix indents

Wrap long lines and fix indents in the an7583.mk.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23809
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agokernel: use iremap for assembly 24271/head
Paul Spooren [Fri, 17 Jul 2026 19:19:46 +0000 (21:19 +0200)] 
kernel: use iremap for assembly

Currently assembly code of the Kernel may contain the build path, resulting in
unreproducible firmware images (and Kernels). Fix this by adding a iremap
KAFLAG.

Before:

    strings "/path/to/vmlinux" | grep linux-6.18.38
    /path/to/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-6.18.38
    /path/to/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-6.18.38

After

    strings "/path/to/vmlinux" | grep linux-6.18.38
    target-x86_64_musl/linux-x86_64/linux-6.18.38
    target-x86_64_musl/linux-x86_64/linux-6.18.38

Link: https://github.com/openwrt/openwrt/pull/24271
Signed-off-by: Paul Spooren <mail@aparcar.org>
3 days agorealtek: add PoE support for GS1920-24HP 24239/head
Jonas Jelonek [Wed, 27 May 2026 14:26:47 +0000 (14:26 +0000)] 
realtek: add PoE support for GS1920-24HP

Add PoE support for GS1920-24HP by providing the device tree
definition and selecting the Realtek PSE MCU driver package for build.
Support includes both versions of the device since they basically share
the same PSE frontend. The common DTSI includes the shared definitions,
the device DTS files then set the correct compatibles.

Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agorealtek: add PoE support for USW XG Pro 8 PoE
Jonas Jelonek [Fri, 26 Jun 2026 18:10:31 +0000 (18:10 +0000)] 
realtek: add PoE support for USW XG Pro 8 PoE

Add device tree definition for PoE support using the Realtek PSE MCU
driver. Select the kernel package for the driver in DEVICE_PACKAGES
accordingly.

Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agorealtek: add PoE support for XGS1930-28HP
Jonas Jelonek [Sun, 3 May 2026 22:17:30 +0000 (22:17 +0000)] 
realtek: add PoE support for XGS1930-28HP

Add support for PoE on Zyxel XGS1930-28HP by leveraging the new Realtek
PSE driver. Define the PSE controller with all its properties in DTS of
the device and link it to the PHYs.

Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agorealtek: switch to PSE driver for Plasma Cloud PSX28
Jonas Jelonek [Sun, 31 May 2026 07:40:01 +0000 (07:40 +0000)] 
realtek: switch to PSE driver for Plasma Cloud PSX28

Use the kernel PSE driver for PoE functionality on this device instead
relying on userspace apps. Drop the automatic selection for poemgr in
favor of the driver module.

Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agorealtek: add PoE support for Linksys LGS328MPCv2
Jonas Jelonek [Tue, 14 Jul 2026 22:08:27 +0000 (22:08 +0000)] 
realtek: add PoE support for Linksys LGS328MPCv2

Add PoE support to Linksys LGS328MPCv2 by adding the required device
tree definition and select the needed kernel module package, making use
of the Realtek PSE MCU driver.

Co-authored-by: Jan-Henrik Bruhn <git@jhbruhn.de>
Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
3 days agorealtek: add macro for pse-pi
Jonas Jelonek [Wed, 15 Jul 2026 08:34:19 +0000 (08:34 +0000)] 
realtek: add macro for pse-pi

Add a macro PSE_PI for the common pse-pi definition, helping with
devices which make use of the Realtek PSE MCU driver. While those
definitions stay manageable for low port counts, this adds too much
visual boilerplate with 24 or even 48 ports. The macro keeps it short
with one line per pse-pi.

Also make use of this macro directly for the two devices XS1930-12HP and
XMG1915-10EP.

Link: https://github.com/openwrt/openwrt/pull/24239
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agouboot-airoha: fix AN7583 pinctrl compatible
Robert Marko [Fri, 17 Jul 2026 10:06:45 +0000 (12:06 +0200)] 
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>
4 days agomtd: fis: fix buffer overflow from negative memset size 23550/head
Anna Kiri [Tue, 26 May 2026 17:10:36 +0000 (19:10 +0200)] 
mtd: fis: fix buffer overflow from negative memset size

In fis_remap(), when desc < last, the memset size is computed as
'tmp - end'. Since tmp is calculated as 'end - positive_value', tmp is
always less than end, making 'tmp - end' negative. When cast to size_t,
this wraps to a very large value, causing a massive buffer overflow.

Fix by swapping the operands to 'end - tmp' which correctly computes the
number of bytes to clear.

Signed-off-by: Anna Kiri <bredcorn@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23550
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agokernel: remove kmod-crypto-misc 23927/head
Rosen Penev [Tue, 23 Jun 2026 21:48:58 +0000 (14:48 -0700)] 
kernel: remove kmod-crypto-misc

Nothing selects this. In addition, a lot of those algorithms are
legacy/obsolete.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23927
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agomediatek: fix nmbm max-reserved-blocks for Keenetic/Netcraze devices 24001/head
Maxim Anisimov [Mon, 29 Jun 2026 13:14:20 +0000 (16:14 +0300)] 
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
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agoramips: mt7620: fix jumbo frame mode 24242/head
Gleb Pesin [Wed, 15 Jul 2026 19:12:33 +0000 (19:12 +0000)] 
ramips: mt7620: fix jumbo frame mode

MAX_RX_PKT_LEN value 2 selects 1552-byte frames, not jumbo mode.
Select value 3 so the configured 2 KiB frames are actually accepted by
the switch.

Tested on a ZBT-WE826 (MT7620). With value 2, 1534-byte IPv4
packets pass while 1535-byte packets are dropped. With value 3,
1792-byte and 1800-byte DF IPv4 packets pass.

Fixes: d083212e1105 ("ramips: ethernet: ralink: mt7620 enable jumbo frames")
Signed-off-by: Gleb Pesin <dormancygrace@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24242
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agotreewide: strip trailing whitespace where present 24255/head
Mieczyslaw Nalewaj [Thu, 16 Jul 2026 14:34:54 +0000 (16:34 +0200)] 
treewide: strip trailing whitespace where present

Ran a treewide trailing-whitespace cleanup for *.c, *.h, *.dts and *.dtsi.
Only files under target/linux/lantiq/... and target/linux/qualcommax/...
required changes, so the diff is limited to those paths.

Done by executing commands:
find . -type f | grep "\.c$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.h$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.dts$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.dtsi$" | xargs sed -i 's/[ \t]\+$//'

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/24255
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agoipq40xx: ipqess: recover TX queue on watchdog timeout 24122/head
Denis Yarkovoy [Sun, 12 Jul 2026 07:34:57 +0000 (10:34 +0300)] 
ipq40xx: ipqess: recover TX queue on watchdog timeout

The current ipqess TX timeout handler only logs the timeout. If TX
completion interrupts are lost or left masked, descriptors can remain
pending indefinitely and the master Ethernet device stays wedged until a
reboot.

Log the TX ring indexes and interrupt state to make future failures
useful, then force the TX completion NAPI path to run and re-kick the TX
producer index. This gives the driver a chance to reclaim pending TX
descriptors and wake the queue instead of reporting the same watchdog
forever.

Signed-off-by: Denis Yarkovoy <dyarkovoy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24122
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agoipq40xx: move ipqess driver source to files
Denis Yarkovoy [Sun, 12 Jul 2026 07:34:56 +0000 (10:34 +0300)] 
ipq40xx: move ipqess driver source to files

The ipqess driver is carried locally in OpenWrt and is not present in
upstream Linux. Move the driver sources out of the source-adding kernel
patch and into target/linux/ipq40xx/files/ so the local source is easier
to maintain.

Keep the kernel patch only for the upstream-style Kconfig, Makefile and
MAINTAINERS wiring, and refresh the dependent ipqess patches.

Use the void-returning platform driver .remove callback.

Signed-off-by: Denis Yarkovoy <dyarkovoy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24122
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
4 days agokernel: set MACOSX_DEPLOYMENT_TARGET to host version 24251/head
Georgi Valkov [Wed, 15 Jul 2026 14:16:29 +0000 (17:16 +0300)] 
kernel: set MACOSX_DEPLOYMENT_TARGET to host version

Fix a warning interpreted as error when building the Linux kernel
on macOS host, by setting MACOSX_DEPLOYMENT_TARGET to the version
of the host. Fixes:

make[5]: Entering directory '/Volumes/test/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-6.18.38'
  HOSTCC  scripts/mod/modpost.o
scripts/mod/modpost.c:1719:9: error: 'strchrnul' is only available on macOS 15.4 or newer [-Werror,-Wunguarded-availability-new]
 1719 |                 sep = strchrnul(namespace, ',');
      |                       ^~~~~~~~~

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24251
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agorealtek: fix fan control for Plasma Cloud PSX28/ESX28 24248/head
Jonas Jelonek [Thu, 16 Jul 2026 07:04:51 +0000 (07:04 +0000)] 
realtek: fix fan control for Plasma Cloud PSX28/ESX28

Commit 82ddc472d722 ("realtek: dts: convert to upstream switch
notation") adjusted the switch description in the device tree to match
upstream. This was a correct change, however it broke the fan control
script for Plasma Cloud PSX28/ESX28 devices because it uses a
full-fledged platform device path including the switch node (because the
I2C is a child of the switch):

/sys/devices/platform/1b000000.switchcore/1b000000.switchcore:i2c@100c/i2c-4/4-002e/hwmon/

Since the mentioned change, this path doesn't exist anymore. Instead of
just changing the intermediate parts to match the DT structure again, do
not rely on that at all. Instead, use

/sys/bus/i2c/devices/4-002e/hwmon/

as the path which relies less on the DT structure and still points to
the same device. This makes fan control on those device work again,
reducing the fan speed during boot which has been broken since the
commit.

Fixes: 82ddc472d722 ("realtek: dts: convert to upstream switch notation")
Fixes: 2b5555c1950d ("realtek: rtl931x: Add support for Plasma Cloud PSX28 Switch")
Link: https://github.com/openwrt/openwrt/pull/24248
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agoairoha: an7583: fix AN7583 PCS port count
Robert Marko [Thu, 16 Jul 2026 12:27:41 +0000 (14:27 +0200)] 
airoha: an7583: fix AN7583 PCS port count

The AN7583 PCS match data does not initialize num_port. This leaves it at
zero, so probe allocates a zero-sized ports array and a later PCS lookup
returns a pointer derived from NULL.

Set the number of ports for each AN7583 PCS instance. Also reject
out-of-range PCS indices defensively.

Fixes kernel crashing on boot once ethernet starts probing on AN7583.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
5 days agoucode: update to Git HEAD (2026-07-09)
Felix Fietkau [Mon, 13 Jul 2026 09:33:44 +0000 (11:33 +0200)] 
ucode: update to Git HEAD (2026-07-09)

20a2ae469089 io: support older linux ioctls
16929698e2d3 fs: implement ioctl for macOS
395bb888bd69 io: implement ioctl for macOS
8d7d15ee1a08 compiler: add support for shorthand method declarations
7d9febd13305 nl80211: add mesh peer link enum macros to constants list
e851bb64df91 lib: avoid allocating print buffer before NULL check in uc_error_message_indent
5f3a7b87d962 compiler: prevent unbounded recompilation on failed module imports
e2493b577250 compiler: scope named function expression names to their own body
c3f0d27d812e tests: add regression test for named function expression scoping
738b55299966 vm: release owned value when property assignment fails
1ffd7c5a1011 vm: fix out-of-bounds read in single-name module import
a255256db106 vm: fix SIGFPE on INT64_MIN division and modulo by -1
3f4b313d7d78 vm: do not assign to undeclared variables in strict mode
e523682670a2 vm: release upvalue reference when resolving it on stack push
6a837090bea3 vm: release module scope reference in dynamic import
395a0a16b4f9 vm: guard error context capture against empty callframe stack
04f103bb2270 vm: respect exponent parity in integer exponentiation
bd814a4b2ae3 vm: use UC_ARRAY instead of json_type_array in object spread
5a79aa56c15e vm: release resource type prototypes after the final GC
9c5f16c8e33a lexer: do not treat /*/ as a complete block comment
a018067fd12e lexer: preserve NUL bytes in regular expression literals
65d41a1929de lexer: do not consume a sign into hexadecimal number literals
05f9bf9e5d53 lexer: fix source position of ternary question mark token
7bca646e5f88 lib: preserve embedded NUL bytes in reverse()
6fc93bf5bd95 lib: preserve embedded NUL bytes in lc() and uc()
a51f4843bce5 lib: avoid passing a signed char to isxdigit() in hex()
e8af70e4375c compiler: fix use-after-free of shorthand method name
467fb4406a47 compiler: declare leading variable in counting for loop initializer
d256e153799b rtnl: fix stack buffer overflow parsing IFLA_LINKINFO
f741ac0a144c rtnl: fix stack buffer overflow parsing RTA_MULTIPATH nexthops
c41310f7c2df rtnl: fix inverted address check in multipath nexthop parsing

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: don't swap handler config under a running setup script
Felix Fietkau [Fri, 10 Jul 2026 13:06:14 +0000 (15:06 +0200)] 
wifi-scripts: don't swap handler config under a running setup script

A reload during an in-flight setup ran wdev_config_init() immediately,
replacing handler_config/handler_data while the script was still running, so
its set_data notifications resolved against the new (renumbered) interface
table and link up/down calls became asymmetric. Defer the re-init in
check() while a handler run is in progress and re-apply from the setup and
teardown callbacks once it completes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: only manage wdev interfaces recorded in the statefile
Felix Fietkau [Fri, 10 Jul 2026 13:03:54 +0000 (15:03 +0200)] 
wifi-scripts: only manage wdev interfaces recorded in the statefile

wdev.uc adopted every operstate-down netdev on the phy and then removed any
not in its new config. hostapd BSS netdevs are legitimately operstate-down
while stopped (co-located STA down, or start_disabled), so a reload deleted
them and hostapd, seeing an unchanged config, never recreated them. Drop the
adopt-existing step; the statefile already tracks the interfaces wdev.uc
owns.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: give the OWE-transition BSS its own MAC address
Felix Fietkau [Fri, 10 Jul 2026 13:02:20 +0000 (15:02 +0200)] 
wifi-scripts: give the OWE-transition BSS its own MAC address

The transition BSS is a copy of the main BSS with the MAC already set, so
iface.prepare() was a no-op and both BSSes emitted the same bssid; with a
fixed or random MAC the duplicate was never reassigned and the second
interface failed to come up. Clear the address (and stale flags) and
prepare a fresh one, plumbing the phy/num_global/macaddr_base through
iface_setup().

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: emit per-line hostapd options correctly
Felix Fietkau [Fri, 10 Jul 2026 12:59:56 +0000 (14:59 +0200)] 
wifi-scripts: emit per-line hostapd options correctly

append() space-joins list options into one line, which breaks hostapd
options that are parsed one entry per line: anqp_elem, nai_realm,
venue_name, venue_url, hs20_conn_capab and the radius req_attr lists (a
parse error there fails the whole phy). Add append_list() to emit one line
per element and route those options through it. vendor_elements is instead
a single concatenated hex blob (join ''), and iface_interworking() no
longer overwrites domain_name with the 3GPP cell-net data (and uses ';').

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: use country_code for iw reg set in setup_phy
Felix Fietkau [Fri, 10 Jul 2026 12:53:29 +0000 (14:53 +0200)] 
wifi-scripts: use country_code for iw reg set in setup_phy

validate() converts the country alias to country_code and deletes country
before setup_phy() runs, so the iw reg set branch tested a null
config.country and never ran, leaving wdev-only radios (adhoc/mesh/monitor)
on the world regdomain. Use config.country_code.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: keep comment lines out of the config comparison data
Felix Fietkau [Fri, 10 Jul 2026 12:52:38 +0000 (14:52 +0200)] 
hostapd: ucode: keep comment lines out of the config comparison data

The generator emits a '# Setup interface: <ifname>' comment before each
interface, so the first one landed in config.radio.data and made the radio
comparison depend on the first BSS's ifname: renaming it forced a full
radio restart instead of the rename path. Skip comment lines when parsing
radio.data/bss.data.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: filter MLD loops by phy in phy_set_state/phy_status
Felix Fietkau [Fri, 10 Jul 2026 12:51:32 +0000 (14:51 +0200)] 
hostapd: ucode: filter MLD loops by phy in phy_set_state/phy_status

The per-wiphy radio-mask loops iterated all MLDs without checking the phy,
so a stop/start or status query for one wiphy touched MLDs on another wiphy
with the same radio index (clearing present bits, tearing links down, or
reporting a foreign MLD). Skip MLDs that do not belong to the phy, matching
mld_update_phy().

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: quote dpp_connector in the station config
Felix Fietkau [Fri, 10 Jul 2026 12:50:23 +0000 (14:50 +0200)] 
wifi-scripts: quote dpp_connector in the station config

dpp_connector was emitted unquoted, but wpa_supplicant parses it as a
string and hex-decodes an unquoted value; a base64url connector then failed
to parse and the network block was rejected. Emit it via the quoted-string
list. dpp_csign/dpp_netaccesskey stay raw, as they are hex.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: unregister ucode/ubus objects when deleting an unstarted BSS
Felix Fietkau [Fri, 10 Jul 2026 12:49:49 +0000 (14:49 +0200)] 
hostapd: ucode: unregister ucode/ubus objects when deleting an unstarted BSS

hostapd_free_hapd_data() skips hostapd_ucode_free_bss()/hostapd_ubus_free_bss()
for a bss that never started, so bss.delete() on such a bss freed hapd while
the ucode registry entry and ubus object still referenced it. Call both
explicitly before os_free(); they are idempotent for the started case.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: initialise conf in iface.add_bss
Felix Fietkau [Fri, 10 Jul 2026 12:48:10 +0000 (14:48 +0200)] 
hostapd: ucode: initialise conf in iface.add_bss

The early error path jumps to out: before conf is assigned, where
hostapd_config_free(conf) frees an indeterminate pointer. Initialise it to
NULL (hostapd_config_free tolerates NULL).

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: pass phy to the bss_remove callback
Felix Fietkau [Fri, 10 Jul 2026 12:47:35 +0000 (14:47 +0200)] 
hostapd: ucode: pass phy to the bss_remove callback

hostapd_ucode_free_bss() pushed only two arguments, but the bss_remove
handler (like bss_add/bss_reload) takes three (phy, name, obj), so name
received the bss resource: the DPP hook was never removed and the removal
event was malformed. Push the phy as well.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: use the base phy name for config_get_macaddr_list
Felix Fietkau [Fri, 10 Jul 2026 12:46:58 +0000 (14:46 +0200)] 
wifi-scripts: use the base phy name for config_get_macaddr_list

phydev.name is already radio-suffixed, and the hostapd handler re-applies
the suffix, so on multi-radio phys the lookup missed and the returned MAC
list was always empty, letting wdev.uc reuse a MAC hostapd had reserved for
an AP BSS. Pass the base phy and radio index.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: pass device config to parse_encryption for station mode
Felix Fietkau [Fri, 10 Jul 2026 12:46:37 +0000 (14:46 +0200)] 
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>
5 days agowifi-scripts: map the configured pairwise cipher for station mode
Felix Fietkau [Fri, 10 Jul 2026 12:46:09 +0000 (14:46 +0200)] 
wifi-scripts: map the configured pairwise cipher for station mode

Only an exact GCMP cipher was mapped to the network block; other explicit
ciphers (CCMP-256, GCMP-256, TKIP variants) left pairwise unset, so
wpa_supplicant offered its default set and could not associate with an AP
restricted to the configured cipher. Pass wpa_pairwise through, keeping the
GCMP special case that also pins group.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: do not treat WDS-station VLAN subinterfaces as the base wdev
Felix Fietkau [Fri, 10 Jul 2026 12:45:38 +0000 (14:45 +0200)] 
wifi-scripts: do not treat WDS-station VLAN subinterfaces as the base wdev

The hotplug match /(.+)\.sta.+/ also matched VLAN subinterfaces of a WDS
station (e.g. wlan0.sta1.100 -> wlan0), so the tagged subinterface was added
into the vif base networks, breaking VLAN separation. Anchor the pattern to
the plain station suffix.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: pass multicast_to_unicast as an integer
Felix Fietkau [Fri, 10 Jul 2026 12:45:10 +0000 (14:45 +0200)] 
wifi-scripts: pass multicast_to_unicast as an integer

handle_link() passed the option as a ucode boolean, but the netifd
device_set binding reads it with prop_get_int (UC_INTEGER only) and ignored
a boolean, so the option was a no-op. Convert it to 0/1.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: reset the retry counter on successful setup
Felix Fietkau [Fri, 10 Jul 2026 12:44:51 +0000 (14:44 +0200)] 
wifi-scripts: reset the retry counter on successful setup

retry was only reset on config change/start, never on a successful setup,
so occasional transient setup failures accumulated over a device lifetime
and latched retry_setup_failed after three cumulative failures. Reset it
when the device comes up.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: fix VLAN key for service-injected wifi-iface
Felix Fietkau [Fri, 10 Jul 2026 12:44:25 +0000 (14:44 +0200)] 
wifi-scripts: fix VLAN key for service-injected wifi-iface

Service data VLANs were stored under vif_data.vlans, but every consumer
reads vif.vlan, so per-VLAN config from a procd service was silently
dropped. Use the singular key, matching the adjacent station handling.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: return the interface-creation result from wdev_add
Felix Fietkau [Fri, 10 Jul 2026 12:44:07 +0000 (14:44 +0200)] 
wifi-scripts: return the interface-creation result from wdev_add

wdev_add() dropped the wdev_create() result, so every caller's error check
was dead and an nl80211 NEW_INTERFACE failure was silently ignored (hostapd
and wpa_supplicant then proceeded on a missing netdev with stale MLD
bookkeeping). Return the result.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: fix dead reload-all check in mld_set_config
Felix Fietkau [Fri, 10 Jul 2026 12:43:53 +0000 (14:43 +0200)] 
hostapd: ucode: fix dead reload-all check in mld_set_config

new_config was tested against the freshly emptied new_mld object, so it was
always false and the reload-all-interfaces block never ran. Test the
incoming config instead, so the first MLD config re-adds the spliced-out
MLD BSSes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: force restart on unresolvable static BSSID conflict
Felix Fietkau [Fri, 10 Jul 2026 12:43:40 +0000 (14:43 +0200)] 
hostapd: ucode: force restart on unresolvable static BSSID conflict

The guard meant to bail to a full restart read `!mac_idx < 0`, which parses
as `(!mac_idx) < 0` and is always false, so a static BSSID colliding with
the first (or a foreign-owned) BSS fell through and reassigned the wrong
BSS's address. Use `mac_idx <= 0`.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: fix extended-feature bit test
Felix Fietkau [Fri, 10 Jul 2026 12:21:45 +0000 (14:21 +0200)] 
wifi-scripts: fix extended-feature bit test

device_extended_features() used bitwise OR instead of AND, so every
extended-feature query returned true regardless of the driver bitmap:
ftm_responder and radar_background were always reported present.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: do not report a disabled wifi-device as up
Felix Fietkau [Fri, 10 Jul 2026 12:19:48 +0000 (14:19 +0200)] 
wifi-scripts: do not report a disabled wifi-device as up

A disabled wifi-device is intentionally still run through the setup path
(with no interfaces) to reliably tear down hostapd/wpa_supplicant and to
handle disabled/enabled flapping, so it reaches state "up" and status
reported up: true alongside disabled: true. Exclude disabled devices from
the up state in status instead.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: clear start_disabled when reloading a started BSS
Felix Fietkau [Fri, 10 Jul 2026 11:59:30 +0000 (13:59 +0200)] 
hostapd: ucode: clear start_disabled when reloading a started BSS

On a radio shared with a STA every AP BSS is generated with
start_disabled=1. A smart reload that takes the full bss.set_config() path
restarts the BSS but never cleared start_disabled, so hostapd_start_beacon()
skipped beaconing and the AP went silently quiet until an unrelated
apsta_state event. Clear it when the BSS was already started, matching the
add_bss path.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: emit a raw 64-hex PSK unquoted for station mode
Felix Fietkau [Fri, 10 Jul 2026 11:58:55 +0000 (13:58 +0200)] 
wifi-scripts: emit a raw 64-hex PSK unquoted for station mode

A 64-character hex PSK was always quoted, but wpa_supplicant rejects a
quoted passphrase longer than 63 characters, so the network block failed
and the STA never associated while netifd still reported the radio up. Emit
the key unquoted when it is a 64-character raw PMK, matching the AP path.
The sae_password branch keeps quoting, as SAE passwords are arbitrary
strings.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: honour a cancelled setup when the handler reports up
Felix Fietkau [Fri, 10 Jul 2026 11:58:33 +0000 (13:58 +0200)] 
wifi-scripts: honour a cancelled setup when the handler reports up

stop() and destroy() set cancel_setup while a setup handler is running, but
nothing read it, so a device brought down (or removed) mid-setup still went
up and stayed up, holding its interface links. Check the flag (and
autostart/delete) in wdev_mark_up and tear the device down instead of
completing the up transition.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: fix per-station PSK list parsing in sta_auth
Felix Fietkau [Fri, 10 Jul 2026 11:58:10 +0000 (13:58 +0200)] 
hostapd: ucode: fix per-station PSK list parsing in sta_auth

Two defects handling the psk array returned by an auth handler: strlen()
ran before the string was validated (strlen(NULL) on a non-string entry),
and the hex-PMK branch tested the array length instead of the entry length.
A 64-character passphrase therefore reached the passphrase branch and its
memcpy of str_len + 1 overflowed passphrase[MAX_PASSPHRASE_LEN + 1] by one
byte. Validate the type first and branch on the string length.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: fix undeclared variable in service wifi-device injection
Felix Fietkau [Fri, 10 Jul 2026 11:57:49 +0000 (13:57 +0200)] 
wifi-scripts: fix undeclared variable in service wifi-device injection

The wifi-device injection path used object shorthand `name` where no such
variable is in scope (the loop binds radio/config), so under the strict VM
config_init threw and the whole wireless configuration for that reload was
skipped. Use the radio key as the device name.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: handle null config in iface_set_config again
Felix Fietkau [Fri, 10 Jul 2026 11:57:16 +0000 (13:57 +0200)] 
hostapd: ucode: handle null config in iface_set_config again

config_reset and shutdown call iface_set_config(name) with no config, but
the null-config guard was dropped in the MLO rework, so config.phy
dereferenced null and threw: config_reset reset nothing and shutdown left
hostapd-created interfaces behind. Restore the guard, removing the stale
config entry and tearing the interface down via iface_config_remove.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: restart on config-initiated channel switch failure
Felix Fietkau [Fri, 10 Jul 2026 11:13:32 +0000 (13:13 +0200)] 
hostapd: ucode: restart on config-initiated channel switch failure

iface.switch_channel() only reports whether a CSA was started, not whether
it completed, so a config-driven channel switch that the driver never
finishes would leave the AP stuck without recovery. After issuing the CSA,
arm a timer and, if the switch has not completed by the deadline
(csa_in_progress still set), fall back to a full interface restart. The
timer is armed only on the config-initiated path, so ubus- and
apsta-triggered channel switches keep their own recovery.

Add an iface.csa_in_progress() ucode method wrapping hostapd_csa_in_progress().

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: apply channel/width changes via CSA instead of restart
Felix Fietkau [Fri, 10 Jul 2026 10:31:37 +0000 (12:31 +0200)] 
hostapd: ucode: apply channel/width changes via CSA instead of restart

A config change that only alters the channel or channel width previously
failed the radio comparison in iface_reload_config() and forced a full
interface restart, disconnecting every client. Classify the radio diff:
apply a channel/width-only change through iface.switch_channel() (CSA) so
clients stay associated, keep the full restart for any other radio change.

When a co-located STA on the same band owns the runtime channel
(#channel_owned_by_sta), the change is a no-op on the AP side, which keeps
following the STA via apsta_state. MLD APs and DFS targets fall back to a
full restart, as a single iface-level CSA cannot handle them.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agowifi-scripts: emit frequency and STA-channel markers in hostapd config
Felix Fietkau [Fri, 10 Jul 2026 10:26:55 +0000 (12:26 +0200)] 
wifi-scripts: emit frequency and STA-channel markers in hostapd config

Emit #frequency (the target channel frequency, already computed during phy
setup) and #channel_owned_by_sta (set when a co-located STA/mesh/adhoc on
the same band dictates the runtime channel) into the generated config.
The hostapd daemon uses these to decide whether a channel change can be
applied via CSA instead of a full restart.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: parse frequency and STA-channel radio markers
Felix Fietkau [Fri, 10 Jul 2026 10:26:31 +0000 (12:26 +0200)] 
hostapd: ucode: parse frequency and STA-channel radio markers

Lift the #frequency and #channel_owned_by_sta markers (emitted by the
config generator) onto config.radio and keep them out of radio.data so
they do not perturb the radio comparison. These feed the config-driven
channel switch handling added next.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: compute 6 GHz segment centre in iface_freq_info
Felix Fietkau [Fri, 10 Jul 2026 10:25:58 +0000 (12:25 +0200)] 
hostapd: ucode: compute 6 GHz segment centre in iface_freq_info

On 6 GHz there is no HT Operation IE, so a 0 secondary-channel offset made
freq_info() return without a segment centre frequency, leaving wide-channel
switches (80/160/320 MHz) on the stale centre. Pass a null offset for wide
6 GHz channels so the centre is auto-derived.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: support 320 MHz in freq_info
Felix Fietkau [Fri, 10 Jul 2026 10:23:50 +0000 (12:23 +0200)] 
hostapd: ucode: support 320 MHz in freq_info

uc_wpa_freq_info() rejected any operating width above 160 MHz, returning
null for EHT320 (width 3). Add the 320 MHz case; the existing segment-0
centre arithmetic (8 << width / 4 << width) extends correctly to width 3.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agohostapd: ucode: fix CSA bandwidth for 320 MHz and 80+80 channels
Felix Fietkau [Fri, 10 Jul 2026 10:23:19 +0000 (12:23 +0200)] 
hostapd: ucode: fix CSA bandwidth for 320 MHz and 80+80 channels

switch_channel computed the CSA bandwidth as 40 << oper_chwidth, which
mismaps oper_chwidth 3 (80+80, must be 80 MHz plus center_freq2) to 320
and 9 (320 MHz) to 20480. Map the operating channel width to the actual
MHz bandwidth explicitly.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agoairoha: an7583: update ethernet node for new PCS implementation
Robert Marko [Thu, 16 Jul 2026 09:37:44 +0000 (11:37 +0200)] 
airoha: an7583: update ethernet node for new PCS implementation

With new PCS implementation, the pcs property needs to be updated to the
new name of 'pcs-handle' to correctly work with PCS fwnode
consumer/provider.

Fixes: 4d5f579a8120 ("airoha: update PCS node in DTSI for new PCS implementation")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
5 days agoqualcommbe: i2c-an7581: depend only on target
Robert Marko [Thu, 16 Jul 2026 09:30:48 +0000 (11:30 +0200)] 
qualcommbe: i2c-an7581: depend only on target

i2c-an7581 (In reality its just i2c-mt7621) should depend on the airoha
target in general and not on an7581 as an7583 also uses it.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
5 days agoqualcommbe: an7583: correct I2C controller compatible
Robert Marko [Thu, 16 Jul 2026 09:22:57 +0000 (11:22 +0200)] 
qualcommbe: an7583: correct I2C controller compatible

AN7583 DTS currently uses a non existant compatible that only exists in the
Airoha SDK.

It should just be changed to the generic MT7621 compatible as AN7581 uses
as well.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
5 days agompc85xx: use regulator for USB power 16842/head
Rosen Penev [Mon, 28 Oct 2024 19:41:53 +0000 (12:41 -0700)] 
mpc85xx: use regulator for USB power

Use upstream solution for managing GPIO power for USB devices.

A small patch is needed to make the whole thing work as this is an older
USB driver that does not use the PHY framework.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16842
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agokernel: disable pcrypt 24222/head
Qingfang Deng [Tue, 14 Jul 2026 07:57:10 +0000 (15:57 +0800)] 
kernel: disable pcrypt

The obsolete pcrypt module is being removed upstream.

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agoath79: fix u-boot-env nvmem-layout on enterasys,ws-ap3705i 24134/head
Zoltan Szalay [Tue, 7 Jul 2026 22:57:34 +0000 (00:57 +0200)] 
ath79: fix u-boot-env nvmem-layout on enterasys,ws-ap3705i

The u-boot-env0 partition on this board stores a redundant U-Boot
environment (4-byte CRC32 + 1-byte flag + data), with the flag byte
differing between the u-boot-env0/u-boot-env1 copies (0x00 vs 0x01).
The actual environment size used by U-Boot for the CRC calculation is
0x1000 bytes, not the full 0x10000 byte partition.

The DTS declared this as the plain, non-redundant "u-boot,env" layout
with no env-size, so the kernel's u-boot-env nvmem-layout driver
miscomputes the CRC and fails to probe:

  u-boot-env-layout ...nvmem-layout: Invalid calculated CRC32: 0xbc490a68 (expected: 0xfae56b95)
  u-boot-env-layout ...nvmem-layout: probe with driver u-boot-env-layout failed with error -22

Because the probe fails, the macaddr_uboot_ethaddr nvmem cell is never
created, so eth0's nvmem-cells reference never resolves and the
ag71xx-legacy platform device is stuck in "deferred probe pending"
forever - the device boots with no functioning Ethernet interface at
all.

Switch to "u-boot,env-redundant-count" (matching the redundant-env
layout already used on other boards from this vendor lineage, e.g.
qca9557_extreme-networks_ws-ap3805i.dts) and set env-size to the
verified 0x1000, which fixes CRC validation and lets eth0 probe
successfully.

Verified on real hardware: before the fix, eth0 never comes up
(confirmed against the official 25.12.5 release, matching CRC values
exactly); after the fix, eth0 links up normally and dmesg is free of
any CRC/nvmem-layout errors.

Signed-off-by: Zoltan Szalay <dealer@ddsweb.hu>
Signed-off-by: Zoltan Szalay <szazo@halycomp.hu>
Link: https://github.com/openwrt/openwrt/pull/24134
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: gate WDIG 10G-mode bit on real baud rate 24232/head
Jonas Jelonek [Tue, 14 Jul 2026 13:16:42 +0000 (13:16 +0000)] 
realtek: pcs: rtl930x: gate WDIG 10G-mode bit on real baud rate

This bit was set unconditionally for any 10G-capable SerDes regardless
of hw_mode, including SGMII/1000BASEX/2500BASEX running on 10G-capable
silicon. The vendor SDK's dal_longan_construct_mac_default_10gmedia_fiber
gates it on the port's declared protocol class instead, applying it to
PHY-attached XSGMII/USXGMII as well as genuine fiber - the "medium to
fiber" naming doesn't match its actual condition.

Gate on speed == RTPCS_SDS_PLL_SPD_10000 instead, matching the real
10G-class protocol family, and actively clear it for 1G/2.5G modes so a
prior 10G-class configuration doesn't leave it stuck across a runtime
downshift. 0 also matches this register's confirmed hardware reset
default on an unconfigured SerDes.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: gate TX tuning on attachment and baud rate
Jonas Jelonek [Fri, 10 Jul 2026 13:38:15 +0000 (13:38 +0000)] 
realtek: pcs: rtl930x: gate TX tuning on attachment and baud rate

TX amp/pre-emphasis tuning depends on the SerDes' real baud rate class
rather than hw_mode, so key config_attachment's dispatch on that instead.

At 1G/2.5G, attachment doesn't change meaningful: even a non-adaptive
fiber receiver needs little compensation on a short trace, so
PHY-attached and fiber links already use the same config there. At 10G,
real channel loss is high enough that it matters: PHY-attached links
equalize on the PHY's own far-end receiver and need less amp drive,
while genuine fiber/DAC links, which have no adaptive receiver
downstream, need the full config. Real DAC-vs-fiber detection doesn't
exist yet, so both of those still share one config for now.

Make use of the PLL speed enum for now, though it is a bit blurry and
may not represent the real baud rate in some cases, e.g. QSGMII (1.25G
PLL with multiplier -> 5G).

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: refactor TX config
Jonas Jelonek [Fri, 10 Jul 2026 09:13:40 +0000 (09:13 +0000)] 
realtek: pcs: rtl930x: refactor TX config

Replace the on-stack, hardcoded pre/main/post-amp locals with static
const rtpcs_sds_tx_config data, one struct per speed class (1g, 2g5,
10g), instead of duplicating the same literals inline on every call.

Move the decision logic about which values are applied to the
config_media function. The tx_config should only be about what is set,
decision logic is handled one layer above. This also prepares further
refactoring.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl93xx: commit attachment only after successful config
Jonas Jelonek [Mon, 13 Jul 2026 10:50:21 +0000 (10:50 +0000)] 
realtek: pcs: rtl93xx: commit attachment only after successful config

sds->attachment was written right after selection, before
config_attachment() ran, so a failed config call would leave it
reflecting a value that was never actually applied to hardware. Move
the assignment after the call succeeds, matching how sds->hw_mode is
only committed after set_hw_mode() succeeds.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl93xx: rename media to attachment
Jonas Jelonek [Fri, 10 Jul 2026 13:53:01 +0000 (13:53 +0000)] 
realtek: pcs: rtl93xx: rename media to attachment

"media" doesn't fit well once PHY sits alongside FIBER/DAC_SHORT/
DAC_LONG as a value: a PHY isn't a transmission medium, whereas what
actually matters here is what electrically terminates the SerDes lane
on the other end. Rename the enum, struct field, ops vtable member,
and both variants' config functions accordingly. Calling it 'attachment'
better fits what it actually is, doesn't confuse with the variants and
also fits to the PMA (Physical Medium Attachment) sublayer that lives
below PCS.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl93xx: rename MEDIA_PCB to MEDIA_PHY
Jonas Jelonek [Fri, 10 Jul 2026 13:45:43 +0000 (13:45 +0000)] 
realtek: pcs: rtl93xx: rename MEDIA_PCB to MEDIA_PHY

Every SerDes lane runs over some PCB trace before reaching the port,
even fiber/DAC ones, so PCB doesn't describe what actually
distinguishes this case: the SerDes terminates directly into a PHY
chip rather than a fiber module or DAC cable.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: classify SGMII as PHY-attached media
Jonas Jelonek [Fri, 10 Jul 2026 13:36:19 +0000 (13:36 +0000)] 
realtek: pcs: rtl930x: classify SGMII as PHY-attached media

SGMII always terminates in a PHY, whether on-board or embedded in an
SFP copper module, so it belongs with QSGMII/XSGMII/USXGMII rather
than the direct fiber/DAC modes. The PHY equalizes on its own far-end
receiver in either case, so no media-dependent TX tuning is needed.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: only apply TX config for 10G SerDes
Jonas Jelonek [Mon, 13 Jul 2026 12:17:50 +0000 (12:17 +0000)] 
realtek: pcs: rtl930x: only apply TX config for 10G SerDes

So far, there was only a misleading and confusing gate to avoid applying
the TX config to SerDes which do not need it or where it even breaks
some modes. This is achieved by not applying any configuration for
QSGMII mode. While this fits the real-world cases we know so far where
QSGMII is only used on SerDes 0/1 but never on others, it implicates
that this is true too for QSGMII on 10G SerDes. Looking at the SDK, this
assumption doesn't hold.

To fix this, drop out of config_media in case a non-10G SerDes is
delivered. The SDK does the same in various ways, ending up with the
config just being applied for SerDes 2 - 9.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl930x: use cmu_page getter for tx_config
Jonas Jelonek [Fri, 10 Jul 2026 08:56:57 +0000 (08:56 +0000)] 
realtek: pcs: rtl930x: use cmu_page getter for tx_config

Derive the CMU page from rtpcs_93xx_sds_get_cmu_page() instead of
hardcoding it per hw_mode case. Also change the function to return
int and propagate errors instead of silently doing nothing.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
5 days agorealtek: pcs: rtl93xx: make cmu_page getter generic
Jonas Jelonek [Fri, 10 Jul 2026 08:48:48 +0000 (08:48 +0000)] 
realtek: pcs: rtl93xx: make cmu_page getter generic

Rename rtpcs_931x_sds_cmu_page_get() to rtpcs_93xx_sds_get_cmu_page()
and move it next to the other 93xx-shared helpers, so RTL930X can
reuse it instead of duplicating the same hw_mode-to-CMU-page switch.
Also fix the wrong -ENOTSUPP return to -EOPNOTSUPP.

Link: https://github.com/openwrt/openwrt/pull/24232
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agoqualcommax: ipq50xx: backport upstreamed patches for IPQ5018 PHY clocks 24238/head
George Moussalem [Wed, 15 Jul 2026 09:09:55 +0000 (13:09 +0400)] 
qualcommax: ipq50xx: backport upstreamed patches for IPQ5018 PHY clocks

Backport upstreamed patches for IPQ5018 PHY RX and TX clocks support.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24238
Signed-off-by: Robert Marko <robimarko@gmail.com>
6 days agoqualcommax: backport upstreamed patches for IPQ CMN PLL support
George Moussalem [Wed, 15 Jul 2026 08:05:21 +0000 (12:05 +0400)] 
qualcommax: backport upstreamed patches for IPQ CMN PLL support

Backport upstreamed patched for IPQ CMN PLL support.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24238
Signed-off-by: Robert Marko <robimarko@gmail.com>
6 days agoqualcommax: backport upstreamed patches for IPQ PWM support
George Moussalem [Wed, 15 Jul 2026 06:55:24 +0000 (10:55 +0400)] 
qualcommax: backport upstreamed patches for IPQ PWM support

Backport upstreamed patches for IPQ PWM support and refresh following
patches.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24238
Signed-off-by: Robert Marko <robimarko@gmail.com>
6 days agorealtek: add PoE support for XS1930-12HP 21728/head 23222/head
Jonas Jelonek [Mon, 18 May 2026 21:30:31 +0000 (21:30 +0000)] 
realtek: add PoE support for XS1930-12HP

Add support for PoE functionality using the realtek-pse-mcu driver
(kmod-pse-realtek-mcu-i2c) interfacing the on-board PoE MCU and RTL8239
PSE chips.

This doesn't include any support for PoE-related LEDs.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: use realtek-pse-mcu kernel driver for PoE on XMG1915-10EP
Jonas Jelonek [Sun, 3 May 2026 22:13:44 +0000 (22:13 +0000)] 
realtek: use realtek-pse-mcu kernel driver for PoE on XMG1915-10EP

Instead of relying on the userspace implementation, make this device the
first user of the new realtek-pse kernel driver (kmod-pse-realtek-mcu-uart)
based on the PSE-PD framework to interface PoE functionality of that
switch. Control of PoE functionality happens via ethtool / netifd now.
Drop selecting realtek-poe for this device.

This doesn't include any support for PoE-related LEDs.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: pse: add patch for sysfs detection control
Jonas Jelonek [Wed, 1 Jul 2026 10:47:27 +0000 (10:47 +0000)] 
realtek: pse: add patch for sysfs detection control

Add a patch which modifies the Realtek PSE MCU driver backport to add a
sysfs control to control detection mode per port. Some older,
bad-designed devices aren't detected properly in standard mode on some
switches, though vendor firmware powers them properly. Testing shows
that enabling the detection of legacy PDs by allowing wider resistance,
more input capacitance and using a wider detection window, solves this
issue.

The legacy detection can be activated by writing 1 to
portN/detection_legacy in the device's sysfs, e.g.

  echo 1 > /sys/bus/i2c/devices/3-0020/port0/detection_legacy

This patch is kept downstream for now, upstreaming will be attempted
though it is likely that upstream prefers a generic pse-pd approach.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agorealtek: add Realtek PSE MCU driver
Jonas Jelonek [Sun, 3 May 2026 20:44:35 +0000 (20:44 +0000)] 
realtek: add Realtek PSE MCU driver

Add pending patches which add a PSE driver for the PSE setup found on
most of Realtek-based switches. An MCU with a Realtek-defined firmware
and protocol fronts one or more PSE chips (from Realtek or Broadcom) as
a management controller.

The driver provides both I2C/SMBus and UART communication, which varies
among our supported switches. There is no need for complicated userspace
handling anymore, the PSE setup is defined in the device tree and
interfaced in userspace via ethtool, netlink and netifd support.

Those patches have progressed far enough upstream, the bindings are
reviewed. Thus, we can keep this intermediate version downstream to open
it up earlier for usage. Only little changes are expected til the final
version lands.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agogeneric: pse-pd: add patches for module-based PSE drivers
Jonas Jelonek [Sun, 3 May 2026 20:43:57 +0000 (20:43 +0000)] 
generic: pse-pd: add patches for module-based PSE drivers

Add a backport patch and pending patches needed by upcoming PSE drivers
which are built as modules and probed after the MAC/PHY.

The net effect for module-built PSE controllers: attachment to PHYs
happens via the lifecycle notifier rather than via probe-time
-EPROBE_DEFER coupling, so the MDIO/DSA probe no longer sees any
PSE-originated -EPROBE_DEFER and the probe-retry storm is gone.

Link: https://github.com/openwrt/openwrt/pull/23222
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agodropbear: bump to 2026.92 24113/head
Konstantin Demin [Thu, 9 Jul 2026 11:07:20 +0000 (14:07 +0300)] 
dropbear: bump to 2026.92

- update dropbear to latest stable 2026.92;
  for the changes see https://matt.ucc.asn.au/dropbear/CHANGES
- remove previously cherry-picked patches
- cherry-pick upstream patches:
  - avoid out-of-bounds read matching ecdsa curve identifier
- automatically refresh patches

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24113
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agolantiq: move pcie driver from patch to files 24190/head
Rosen Penev [Sat, 11 Jul 2026 22:24:53 +0000 (15:24 -0700)] 
lantiq: move pcie driver from patch to files

This driver is quite huge and local only. Never seems to have been
submitted upstream.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24190
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
6 days agombedtls: fix arm32 build errors with GCC 15.3 23774/head
Shiji Yang [Sat, 13 Jun 2026 14:19:06 +0000 (22:19 +0800)] 
mbedtls: fix arm32 build errors with GCC 15.3

It seems that GCC 15.3 has added additional OOB checks for ARCH arm32.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/23774
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
7 days agoairoha: configure PCIe 2-lanes mode for eMMC EAGLE RFB board
Christian Marangi [Tue, 14 Jul 2026 12:44:13 +0000 (14:44 +0200)] 
airoha: configure PCIe 2-lanes mode for eMMC EAGLE RFB board

The EAGLE PCIe WiFi card require PCIe0 to be in 2-lanes mode to correctly
work. Add the missing property to enable this mode and restore correctly
functionality of the WiFi card.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
7 days agoairoha: add missing SCU phandle for PCIe 2-lanes mode
Christian Marangi [Tue, 14 Jul 2026 12:41:49 +0000 (14:41 +0200)] 
airoha: add missing SCU phandle for PCIe 2-lanes mode

The SCU phandle is mandatory to configure PCIe MUX when PCIe 2-lanes mode
is enabled.

Add the missing property where needed.

Fixes: 7d56183d903f ("airoha: replace PCIe x2-mode patch with new pending version")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
7 days agoairoha: replace PCIe x2-mode patch with new pending version
Christian Marangi [Tue, 14 Jul 2026 12:25:42 +0000 (14:25 +0200)] 
airoha: replace PCIe x2-mode patch with new pending version

The current x2-mode patch is mostly an hack ported from Airoha SDK. Replace
with in favor of a new version posted upstream that better implement
handling of reset and configuring x2-mode. This now use the standard
num-lanes property and dedicated PERSTOUT resets exported by the clk
driver.

All the DTS that used x2-mode are updated.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
7 days agouboot-mediatek: update to v2026.07 24125/head
Shiji Yang [Mon, 6 Jul 2026 14:06:09 +0000 (22:06 +0800)] 
uboot-mediatek: update to v2026.07

Remove upstreamed patches:
- 002-pinctrl-mediatek-set-MT798x-rev-as-MTK_PINCTRL_V1.patch[1]
- 005-scripts-dtc-drop-yaml-in-DT-validation.patch[2]
- 006-mips-mtmips-align-MT7621-image-blobs-to-8-byte-bound.patch[3]
- 110-pinctrl-mediatek-MT7981-some-register-map-fixes.patch[4]

[1] https://github.com/u-boot/u-boot/commit/b681f2be8cc81de83fdd4c56cdb35755ca0409eb
[2] https://github.com/u-boot/u-boot/commit/8ef8dee4f3a2b2021decfefd853dbd2a1632b77f
[3] https://github.com/u-boot/u-boot/commit/de79075f0f6b8795d1f9e30ff36435583b1a119a
[4] https://github.com/u-boot/u-boot/commit/5576522219d40ffeb7918dd04263f5d925df9d1d
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
8 days agoqualcommax: pin EDMA processing to dedicated CPUs 24203/head
Robert Marko [Mon, 13 Jul 2026 09:07:26 +0000 (11:07 +0200)] 
qualcommax: pin EDMA processing to dedicated CPUs

IPQ60xx and IPQ807x use threaded NAPI for EDMA. The NAPI threads
inherit CPU0 affinity, and running both there can eventually starve the
RX fill ring under sustained traffic.

Add an IPQ60xx smp_affinity service and extend the existing IPQ807x
service to discover the EDMA IRQs and NAPI IDs at runtime. Place RX on
CPU1 and TX on CPU2. Retry EDMA setup asynchronously because its NAPI
threads may appear after the init service runs.

Provide the same UCI enable and logging controls on both subtargets.
IPQ50xx uses a different Ethernet driver and is left unchanged.

Link: https://github.com/openwrt/openwrt/pull/24203
Signed-off-by: Robert Marko <robimarko@gmail.com>