Compare commits

..

1873 Commits

Author SHA1 Message Date
Tim Harvey
99c0c36027 imx: cortexa53: remove KSZ9477 static driver
The KSZ9477 driver was added to the cortexa53 kernel to support the
Gateworks Venice product family which has a board with this switch. Now
that the kmod-dsa-ksz9477 driver is available as a package remove the
static configuration ad add the package.

This resolves an issue caused by having the switch driver static and the
PHY driver as a module such that the PHY driver was not registered early
enough to be used causing some errata to not be worked around.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/22120
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 231553b280)
2026-02-24 20:39:09 +01:00
Tim Harvey
5f9f0f12a5 kernel: netdevices: add KSZ9477 DSA switch packages
This adds kernel packages for the Microchip KSZ9477 switch family.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/22120
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit c053b22573)
2026-02-24 20:39:01 +01:00
Hauke Mehrtens
264720d41b wireless-regdb: update to version 2026.02.04
75bedc5 wireless-regdb: Update regulatory info for Australia (AU) for 2025
a6e5195 wireless-regdb: Update broken link in regulatory.bin(5) manpage
9e8c67f wireless-regdb: Update regulatory info for Malaysia (MY) for 2024
61a4637 wireless-regdb: Update regulatory info for Malaysia (MY) for 2025
5cefe55 wireless-regdb: Update regulatory info for Tunisia (TN) on 6GHz for 2025
1a729ae wireless-regdb: Update regulatory info for Canada (CA) for 2025
ea20dfa wireless-regdb: update regulatory database based on preceding changes

Link: https://github.com/openwrt/openwrt/pull/22150
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7c5e329b54)
2026-02-24 20:25:42 +01:00
Jonas Lochmann
b0ea1b6cdf iproute2: include upstream patch for musl libc
Due to a missing include, the constant UINT_MAX is undefined. This
fixes issues when building v25.12.0-rc5. Including a newer version of
iproute2 would include the patch, but causes other building issues.

Signed-off-by: Jonas Lochmann <openwrt@jonaslochmann.de>
Link: https://github.com/openwrt/openwrt/pull/22128
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 5f063d18bd)
2026-02-24 20:25:40 +01:00
Shiji Yang
ffd38ddffe kernel: net: fix deadlock caused by phy led trigger
Register phy led_triggers earlier to avoid AB-BA deadlock.

Fixes: https://github.com/openwrt/openwrt/issues/18472
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22136
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0bfcb0a36c)
2026-02-23 21:57:58 +01:00
Stijn Tintel
dbb6f0b547 mediatek: TP-Link EAP683-UR support
The TP-Link EAP683-UR is identical to the EAP683-LR. Add it as ALT0
variant.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 708dcca80a)
2026-02-22 23:23:09 +02:00
Stijn Tintel
07a8ae37c2 mediatek: TP-Link EAP683-LR support
Add support for the TP-Link EAP683-LR, an AX6000 Ceiling Mount WiFi 6
AP.

Hardware:
* SoC: MediaTek MT7896AV
* RAM: 1GiB DDR4 (Samsung K4A8G165WC-BCTD)
* Flash: 128MiB SPI-NAND (ESMT F50L1G41LB)
* Ethernet: 1x 10/100/1000/2500 Mbps PoE-PD (MaxLinear GPY211C)
* WiFi: MT7976AN/MT7976GN 2.4/5GHz 4T4R
* LEDS: 3x blue connected to a single GPIO line
* Buttons: 1x reset
* BLE/Thread/Zigbee: CC2652

Stock firmware uses a random MAC address for ethernet, label MAC for
2.4 and label MAC + for 5GHz.

Installation via bootloader:
* Solder JST??? connector on J255, alternatively solder wires on the
  TP13-TP15 pads. Pinout: TP13: TX, TP14: RX, TP15: GND, TP16: VCC.
  The pins for J255 are in the same order.
* Interrupt boot process by repeatedly pressing Ctrl+b during boot
* In the boot menu, select U-Boot console
* Ensure the U-Boot environment variable "tp_boot_idx" is not set:
  # setenv tp_boot_idx
  # saveenv
* Boot the OpenWrt initramfs:
  # tftpboot openwrt-mediatek-filogic-tplink_eap683-lr-initramfs-kernel.bin
  # bootm
* copy openwrt-mediatek-filogic-tplink_eap683-lr-squashfs-sysupgrade.bin
  to /tmp and install it using sysupgrade

Flashing via OEM firmware is currently not supported. The
tplink-safeloader utility does not recognize the OEM firmware:

  DEBUG: can not find fwuphdr
  Firmware image partitions:
  base     size     name
  Segmentation fault (core dumped)

To revert to the OEM firmware, you can set the U-Boot environment
variable "tp_boot_idx" to 1 via bootloader, or using fw_setenv via
OpenWrt. This should result in booting from the ubi1 partition, which
OpenWrt should not touch. Then use the web interface to upgrade
firmware: System > Firmware Update.

The OEM firmware uses 0x800000 for the runtime_backup partition size.
This causes the following warning:

  mtd: partition "runtime_backup" extends beyond the end of device "nmbm_spim_nand" -- size truncated to 0x600000

This is due to the NMBM reserved blocks. Use 0x600000 in our DTS.

Thanks to init Lab's user890104, who soldered jumper wires on the TTL
pads for me so I could have serial console. My soldering skills just
aren't good enough to pull that off without risk damaging things.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit f1749142ca)
2026-02-22 23:23:09 +02:00
Rosen Penev
c0dd42dcc4 Revert "bmips: huawei-hg556a-c: use nvmem for wifi eeprom"
This reverts commit 72f43ac220.

The NVMEM codepath does not perform automatic byte conversion. It can be
fixed but the upstream version is quite different from the local
mac80211 patch. Revert until mac80211 gets updated and the whole mess
can get squared away.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22091
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b270580dea)
2026-02-21 14:02:55 +01:00
Mieczyslaw Nalewaj
17d625c858 ramips: remove obsolete SPI flash nodes after kernel fix
Remove incomplete SPI flash definitions from affected device tree files.
These fragments only defined address-cells and size-cells without any
actual flash configuration (partitions, compatible string, etc.).

After applying openwrt/openwrt#20942 ("kernel: of: fix bad cell count error
for SPI flash node"), the kernel properly handles SPI flash nodes without
requiring these incomplete definitions in device-specific DTS files.

This cleanup eliminates unnecessary code that was likely a workaround for
the previous kernel issue.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/22036
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 313d563664)
2026-02-20 10:19:00 +01:00
Felix Fietkau
e370701a57 uclient: update to Git HEAD (2026-02-20)
7a0aa2e4afb4 uclient-http: fix data_eof for body-less responses

Fixes: https://github.com/openwrt/openwrt/issues/22103
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-02-20 09:08:45 +00:00
Felix Fietkau
e2089a5d3e hostapd: fix dealing with required interface restart in AP+STA mode
Ensure that the BSS start_disabled option is always cleared, so that
interfaces come up properly.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit b7cd16dba3)
2026-02-19 15:14:47 +00:00
Yaroslav Isakov
ad24a28363 hostapd: fix EAP-PWD in experimental hostapd-radius server
Without initializing pwd_group, it's set to 0, which is reserved value.
When EAP-PWD is used in wpa_supplicant/eapol_test, next error is seen:
EAP-PWD: Server EAP-pwd-ID proposal: group=0 random=1 prf=1 prep=0
EAP-pwd: Unsupported or disabled proposal

Signed-off-by: Yaroslav Isakov <yaroslav.isakov@gmail.com>
(cherry picked from commit 9d78b2f53c)
2026-02-19 15:14:16 +00:00
Chad Monroe
ae2fbe48d2 hostapd: initialize first BSS radio_mask during driver init
Secondary BSSes inherit the alloc value which bypasses
NL80211_ATTR_VIF_RADIO_MASK in nl80211_create_iface() and causes the
kernel to default new interfaces to all radios.

The ucode bss_create fallback fails to correct this because
the interface is already UP.. the kernel rejects SET_INTERFACE with
-EBUSY.

Signed-off-by: Chad Monroe <chad@monroe.io>
(cherry picked from commit 50d3d287e4)
2026-02-19 15:14:16 +00:00
Hauke Mehrtens
9cbdc2056b OpenWrt v25.12.0-rc5: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-19 02:16:14 +01:00
Hauke Mehrtens
b36d5e3da0 OpenWrt v25.12.0-rc5: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-19 02:16:11 +01:00
Hauke Mehrtens
482ba7230a ucode-mod-bpf: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c3f2a09a25)
2026-02-17 22:30:37 +01:00
Hauke Mehrtens
9cd17a1064 ebtables: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the CFLAGS. ebtables does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 77d896725f)
2026-02-17 22:30:35 +01:00
Hauke Mehrtens
5884c75aad arptables: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the CFLAGS. arptables does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 33b2c6f955)
2026-02-17 22:30:34 +01:00
Hauke Mehrtens
5f724fc319 iwinfo: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the FLAGS. iwinfo does not support CPPFLAGS.
This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 379d5b8bc4)
2026-02-17 22:30:33 +01:00
Hauke Mehrtens
acad156c06 zyxel-bootconfig: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the CFLAGS. zyxel-bootconfig does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b8ea5004f4)
2026-02-17 22:30:32 +01:00
Hauke Mehrtens
e0bad5bf1f ravpower-mcu: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit ddb1c1ab33)
2026-02-17 22:30:30 +01:00
Hauke Mehrtens
9bb7755066 wireless-tools: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the CFLAGS. wireless-tools does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit d69b283068)
2026-02-17 22:30:28 +01:00
Hauke Mehrtens
551beecf59 resolveip: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0f1c1c581f)
2026-02-17 22:30:27 +01:00
Hauke Mehrtens
0cd63fda4c iwcap: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bfd57eab3d)
2026-02-17 22:30:26 +01:00
Hauke Mehrtens
9f88e5c743 libcap: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Allow to extend the CPPFLAGS and not only overwrite.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 53e6935960)
2026-02-17 22:30:24 +01:00
Hauke Mehrtens
afbcaa4525 bzip2: add CPPFLAGS
Add the OpenWrt CPPFLAGS to the CFLAGS. bzip2 does not support CPPFLAGS.
This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit cd1fda5c8b)
2026-02-17 22:30:23 +01:00
Hauke Mehrtens
da0b16367c 6rd: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b497c3f68f)
2026-02-17 22:30:21 +01:00
Hauke Mehrtens
790aaa5b07 464xlat: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 2ca7c2b846)
2026-02-17 22:30:20 +01:00
Hauke Mehrtens
361be894b3 gdb: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 39e5f11631)
2026-02-17 22:30:19 +01:00
Hauke Mehrtens
370af1aa65 binutils: add CPPFLAGS
Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 35939e4db9)
2026-02-17 22:30:17 +01:00
John Audia
bdc594e0af tools: m4: update to 1.4.21
Changelog: https://github.com/autotools-mirror/m4/blob/branch-1.4/NEWS

This update fixes a build error on my system:
./string.h:777:20: error: expected identifier or '(' before '_Generic'
  777 | _GL_EXTERN_C void *memchr (const void *__s, int __c, size_t __n)
      |                    ^~~~~~

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21987
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ce9a0ff3fb)
2026-02-17 20:30:27 +01:00
Edward Chow
42ad77a4a6 bcm53xx: fix target name of meraki_mx64-a0
The target name of meraki_mx64-a0 in
target/linux/bcm53xx/image/Makefile used not to be consistent with the
one defined in target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
and generates warning for "Image check failed" during sysupgrade.

This commit would also make the target name for meraki_mx64-a0 to
conform to the openwrt standard.

Signed-off-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/22034
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 625f01cd80)
2026-02-17 01:47:55 +01:00
Hauke Mehrtens
576aa04151 ath79: add env-size for Sitecom WLR-7100 / WLR-8100 u-boot-env
The Linux kernel assumes that the u-boot environment covers the full
partition, but it only covers 0x1000 bytes. Linux checks the CRC and
does this over the full partition. This fails like this:
```
u-boot-env-layout 1f000000.spi:flash@0:partitions:partition@30000:nvmem-layout: Invalid calculated CRC32: 0xfcac8c41 (expected: 0x14e6335a)
u-boot-env-layout 1f000000.spi:flash@0:partitions:partition@30000:nvmem-layout: probe with driver u-boot-env-layout failed with error -22
```

Define the u-boot environment with a length of 0x1000 bytes to calculate
the CRC only over this area.

When replicating the u-boot environment with these parameters it
generates the same CRC:
```
mkenvimage -p 0 -b -s 0x1000 -o output.bin input.txt
```

Fixes: https://github.com/openwrt/openwrt/issues/21696
Fixes: 5e3a602def ("ath79: sitecom,wlrx100: use nvmem")
Link: https://github.com/openwrt/openwrt/pull/22030
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 68a466b698)
2026-02-17 01:47:48 +01:00
Hauke Mehrtens
ff3fad172d build: pass CPPFLAGS to cmake build
The TARGET_CPPFLAGS contain the include paths used by OpenWrt. This also
contains the including of the fortify sources headers. If they are not
provided, the applications will not use fortify sources headers when
compiled against musl. Add them to cmake builds too. cmake does not
support a special CPPFLGS option [0], just add them to CFLAGS and
CXXFLAGS like we also do it for meson and normal make.
This should fix fortify sources support for cmake builds.

I found this explanation for the flags:
 * CFLAGS: C flags, passed during compile AND link
 * CXXFLAGS: C++ flags, passed during compile AND link
 * CPPFLAGS: pre-processor flags, passed ONLY during compile
 * LDFLAGS: linker flags, passed ONLY during link

[0]: https://gitlab.kitware.com/cmake/cmake/-/issues/12928

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7bf8d568f6)
2026-02-17 01:47:41 +01:00
Hauke Mehrtens
eddb6342cd fortify-headers: fix -Werror=format-nonliteral in fortify/stdio.h
Some applications might activate -Werror=format-nonliteral when building
their application. This breaks fortify headers build. Tell GCC to ignore
such warnings for this code.

This fixes the libubox and ucode build:
```
/include/fortify/stdio.h: In function 'snprintf':
/include/fortify/stdio.h:101:9: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  101 |         return __orig_snprintf(__s, __n, __f, __builtin_va_arg_pack());
      |         ^~~~~~
/include/fortify/stdio.h: In function 'sprintf':
/include/fortify/stdio.h:110:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  110 |                 __r = __orig_snprintf(__s, __b, __f, __builtin_va_arg_pack());
      |                 ^~~
/include/fortify/stdio.h:114:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  114 |                 __r = __orig_sprintf(__s, __f, __builtin_va_arg_pack());
      |                 ^~~
cc1: all warnings being treated as errors
ninja: build stopped: subcommand failed.
```

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b237266640)
2026-02-17 01:47:35 +01:00
Hauke Mehrtens
ba34bdca3d fstools: update to Git HEAD (2026-02-15)
8d377aa627be libfstools: Rename PATH_MAX to MTD_PATH_MAX

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0f4e4a41b2)
2026-02-17 01:47:28 +01:00
Rosen Penev
d66fc6e86f lantiq: handle EPROBE_DEFER for MAC
If nvmem is used for ethernet mac address, we need to defer loading to
get the proper mac.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21955
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit fb71774232)
2026-02-17 01:47:14 +01:00
Tomáš Macholda
42b10de18d mvebu: add support for RIPE Atlas Probe v5
RIPE Atlas Probe v5 is a network measurement device based on Turris MOX.

u-boot bootscript supports booting both from the original Turris BTRFS
layout and default OpenWrt ext4 boot + root partition layout.

Specifications:
* SoC: Marvell ARMADA 3720
* RAM: 512 MiB, DDR3
* eMMC: 4G
* Ethernet: 1x 1GbE

MAC:
LAN MAC: label on board

Flash instructions:
* For using the default ext4 layout, boot into a live system using
tftpboot in u-boot and flash an OpenWrt SD image onto /dev/mmcblk0.
* For the Turris layout, put the new rootfs into subvolume '@', not
forgetting to add Image, device tree, and boot.scr to /boot.

Misc:
* USB connection is only for power. For UART access use the pin header:
  1: GND
  2: +1.8V
  5: TX
  6: RX
* Flashing the image onto Turris Shield won't work. Use Turris MOX image
  instead.

Signed-off-by: Tomáš Macholda <tomas.macholda@nic.cz>
Link: https://github.com/openwrt/openwrt/pull/20031
(cherry picked from commit 0271f2ee36)
Signed-off-by: Trix Taiclet <git@trix.moe>
Link: https://github.com/openwrt/openwrt/pull/22048
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-17 01:40:00 +01:00
Felix Fietkau
5c0a038ed3 udebug: update to Git HEAD (2026-01-16)
c5c493ed5787 udebug-cli: fix reference to invalid variable in error message
875e1a7af6ca udebug-cli: add logdump command

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 55c498eb7b)
2026-02-16 08:20:29 +00:00
Harin Lee
16dcfc613a wifi-scripts: fix macaddr check in mac80211.uc
This fixes a simple logic error in the macaddr existence check in mac80211.uc.

Signed-off-by: Harin Lee <me@harin.net>
Link: https://github.com/openwrt/openwrt/pull/21277
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 2ebcda1ea6)
2026-02-16 08:20:29 +00:00
Felix Fietkau
4ab2e3d0dd wifi-scripts: wireless.uc: add MLO support for procd service data
This allows services to dynamically configure MLO interfaces without
using UCI.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 0a8bccf85d)
2026-02-16 08:20:29 +00:00
Felix Fietkau
4305911499 wifi-scripts: move the "disabled" option to the wifi-iface section
This helps for setups where the wifi interfaces are added dynamically
via procd data by avoiding automatically bringing up interfaces with
the default config. Internally, they are treated pretty much the same
by netifd.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 79a0aebd81)
2026-02-16 08:20:29 +00:00
Felix Fietkau
f867497e35 wifi-scripts: netifd: fix null dereference in config_init for missing devices
Add optional chaining when accessing device config in the wifi-iface
loop to handle cases where a referenced device doesn't exist.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 8b994ed397)
2026-02-16 08:20:22 +00:00
Felix Fietkau
3e3f325063 wifi-scripts: fix nested config accumulation in wdev_set_data
When storing device-level data, wdev_set_data() spread the entire wdev
object into handler_data. Since handler_config.data is set from the
previous handler_data[wdev.name] before each setup, this created
exponentially growing nesting with each reload, eventually causing
"nesting too deep" JSON parse errors.

Fix by initializing cur to a simple object containing only the device
name instead of the entire wdev object.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 68c2ab8f5f)
2026-02-16 08:14:41 +00:00
Felix Fietkau
53f88bd15b wifi-scripts: iwinfo.uc: cache survey data in iface object
Extract survey fetching into get_survey() and store results in iface.survey,
allowing access to full survey info (not just noise) for later use.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e855f32bdd)
2026-02-16 08:13:24 +00:00
John Crispin
8725a4713e wifi-scripts: refactor iwinfo.uc to support dynamic data updates
Moved interface discovery and data population into an exported update()
function that can be called on-demand to refresh wireless interface
information. This allows using iwinfo.uc as a library inside daemons.

Signed-off-by: John Crispin <john@phrozen.org>
(cherry picked from commit 26eab84f81)
2026-02-16 08:13:24 +00:00
Felix Fietkau
765130cea1 uclient: update to Git HEAD (2026-02-13)
63413daa8760 uclient-http: fix HTTP authentication after deferred header processing
4fa6fae02f74 uclient-fetch: Extract opt_post variable
8df3120639a4 uclient-fetch: Use HEAD for --spider
0392dfc8e8c4 uclient-fetch: Support of --method, --body-data and --body-file
115c92824b6d uclient-fetch: add OPTIONS request type
a1531e89f6c2 uclient-fetch: support for WebDAV methods

Fixes: https://github.com/openwrt/uclient/issues/14
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 88f3c0eeb0)
2026-02-16 08:11:36 +00:00
Felix Fietkau
4b37510109 uclient: update to Git HEAD (2026-01-31)
b3ee1209a3d0 uclient-http: reset fd to -1 after close in disconnect
9c2ad269c42b uclient-http: fix seq field check to use correct field
80c9bd29c233 uclient-http: fix hang on HTTP to HTTPS redirect
931bbfeb2c92 ucode: fix memory leak when using ssl context

Fixes: https://github.com/openwrt/uclient/issues/11
Fixes: https://github.com/openwrt/uclient/issues/13
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 9d496dfb98)
2026-02-16 08:11:36 +00:00
Felix Fietkau
84fec0d218 libubox: update to Git HEAD (2026-02-13)
d324c0503040 libubox: send warnings to stderr
5a65cb5a79b7 libubox: document positional arguments
8c7b489daa02 libubox: add anonymous strings, ints, et al in arrays
5ec7ff2effb3 uloop: use volatile sig_atomic_t for do_sigchld flag
0efa2cd3b74c usock: check SO_ERROR after poll in usock_inet_timeout()
1a73ded9f738 usock: fix timeout handling in usock_inet_timeout()
1aa36ee774c8 usock: implement RFC 8305 Happy Eyeballs for usock_inet_timeout()

Fixes: https://github.com/openwrt/uclient/issues/8
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 7bc8aa492f)
2026-02-16 08:11:03 +00:00
Felix Fietkau
29c2315b1d ucode: add ubus fixes
- avoid double close of externally owned channel fds
- fix refcounting bug

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e9d6025725)
2026-02-16 08:10:30 +00:00
John Crispin
130466783a procd: reload_config: support UCI overlay directory
Check /var/run/uci/ before /etc/config/ so that overlay configs
also trigger service reload events.

The overlay directory takes precedence, and uci show already handles
merging overlay + base configuration correctly.

Signed-off-by: John Crispin <john@phrozen.org>
(cherry picked from commit aaa2d9f1e5)
2026-02-16 08:09:16 +00:00
John Crispin
3091dbcb45 unetmsg: notify subscribers when remote peer connection drops
When a remote peer's connection drops (device powered off, unetmsgd
crash, network failure), network_rx_cleanup_state silently removed
the remote publish/subscribe handles without notifying local
subscribers. This meant local clients had no way to detect that a
remote peer had disappeared.

Call handle_publish for each channel where a remote publish handle
is removed during connection cleanup, so local subscribers receive
the publisher change notification and can react accordingly.

Signed-off-by: John Crispin <john@phrozen.org>
(cherry picked from commit 7fd71f2c74)
2026-02-16 08:09:16 +00:00
Felix Fietkau
40a7b55d70 unetmsg: only send publish notifications for remote publisher changes
handle_publish() notifies local subscribers about publisher state
changes. The publish/subscribe handler in network_socket_handle_request()
was calling it for both remote publish and subscribe changes, but
subscriber changes are not relevant to local subscribers.

Guard the handle_publish() calls with a msgtype == "publish" check,
matching the local client paths in unetmsgd-client.uc which already
have this guard.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e0722d0ac4)
2026-02-16 08:09:16 +00:00
Felix Fietkau
41ec0c16a7 unetmsg: fix reconnect loop when RX authenticates before TX
When both peers connect simultaneously, the RX side can authenticate
before the TX handshake completes. network_check_auth() was sending a
ping on the unauthenticated TX channel, which gets rejected by the
remote's pre-auth handler as "Auth failed", killing the connection and
triggering an endless reconnect cycle.

Check chan.auth before interacting with the TX channel. If TX auth
hasn't completed yet, just schedule a reconnect timer - auth_data_cb
already handles state sync when TX auth completes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 212040b5ca)
2026-02-16 08:09:16 +00:00
Felix Fietkau
69a4ca5e4a unetmsg: close all channels on network removal
network_close() only closed the listening socket without shutting down
established RX/TX connections. This left remote state in
core.remote_publish/core.remote_subscribe for hosts on the removed
network, causing stale entries in channel listings and failed routing
attempts.

Close all RX and TX channels before removing the network, which also
triggers remote state cleanup via network_rx_socket_close().

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 389a79d972)
2026-02-16 08:09:16 +00:00
Felix Fietkau
d63541ff98 unetmsg: fix inverted condition in network_rx_socket_close()
The cleanup condition checked != instead of ==, inverting the logic.
This caused two problems:

When an authenticated RX connection disconnected, remote state for that
host was never cleaned up since the stored entry matched the one being
closed.

When a stale unauthenticated connection from a peer closed, any existing
authenticated connection from the same peer was incorrectly deleted and
its remote state wiped.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit f09596f84f)
2026-02-16 08:09:16 +00:00
Felix Fietkau
ef79f65981 unetmsg: fix publish notification timing around remote auth
When a remote peer's publish registrations arrive via RX before the
local TX connection is authenticated, handle_publish fires but the
subscriber can't reach the remote publisher yet since the TX channel
isn't ready.

Suppress publish notifications on the RX side when no authenticated TX
channel exists for the remote host. After TX authentication completes,
re-trigger handle_publish only for topics that the specific peer
publishes and that have local subscribers.

Signed-off-by: John Crispin <john@phrozen.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 3efcf444a1)
2026-02-16 08:09:09 +00:00
Felix Fietkau
535403297e unetmsg: fix stale network cleanup in unetd_network_update()
The condition checked !data.networks instead of !data.networks[name],
making it always false since data.networks was already validated earlier
in the function. Networks removed from unetd were never closed.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit a2368e0f69)
2026-02-16 08:07:46 +00:00
Felix Fietkau
dfbd371658 unetmsg: remove redundant socket close
channel.disconnect() already closes the fd via ubus_shutdown(),
so calling socket.close() afterwards is redundant and causes EBADF.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit bdc3c1a820)
2026-02-16 08:07:46 +00:00
Felix Fietkau
7b68399ecf unetmsg: add timeout for outgoing auth requests
Add a 10-second timeout for outgoing auth requests to prevent
connections from getting stuck when the remote peer goes silent
after the hello handshake but before responding to auth.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 8a304d051f)
2026-02-16 08:07:46 +00:00
Felix Fietkau
e1728da72f unetmsg: add null check in TX disconnect callback
The network may be deleted before the disconnect callback fires.
Check for null to avoid crash when accessing net.tx_channels.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit f631d1576d)
2026-02-16 08:07:46 +00:00
Rany Hany
e5d1332f73 wifi-scripts: ucode: fix ieee80211w default
This should not be defaulted to anything in the schema.

What seemed like a minor cleanup actually broke this
as the schema defines a default value already. I did
not notice as I had this explictly set in my config.

Fixes: 70ba7512 ("wifi-scripts: ucode: allow sae_pwe to be modified for AP mode")
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/22043
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f012e8d50a)
2026-02-16 01:52:06 +01:00
Goetz Goerisch
f27d38666c Revert "kernel: revert ip6_tunnel use skb_vlan_inet_prepare() in __ip6_tnl_rcv()"
This reverts commit ee0b160acc.

A backport commit was missing which was backported upstream with
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.71&id=4ce768ac429ec1c2d4ba63a408fed454ed12b248

Link: https://lore.kernel.org/all/CANn89iL5ksZZCJr7SK9=4Sw6EejdOzr5_m6pBMM8RVtbLy_ACA@mail.gmail.com/

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22025
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 385b02614e)
2026-02-15 13:23:34 +01:00
John Audia
29bfcadbc3 kernel: bump 6.12 to 6.12.71
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.71

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21985
(cherry picked from commit baa433ffe9)
Link: https://github.com/openwrt/openwrt/pull/22017
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-15 02:07:04 +01:00
John Audia
47f0c12080 kernel: bump 6.12 to 6.12.70
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.70

Removed upstreamed:
 backport-6.12/605-01-v6.17-net-phy-add-phy_interface_weight.patch[1]

All patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.70&id=4dc7b69bca8ef6b932a7c6bea63450796b1146ce

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21985
(cherry picked from commit 2c4a719d26)
Link: https://github.com/openwrt/openwrt/pull/22017
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-15 02:07:04 +01:00
John Audia
228a89a013 kernel: bump 6.12 to 6.12.69
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.69

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21904
(cherry picked from commit b4759469c9)
[Refreshed on top of 25.12]
Link: https://github.com/openwrt/openwrt/pull/22017
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-15 02:07:04 +01:00
Rany Hany
b7c9051deb wifi-scripts: ucode: allow sae_pwe to be modified for AP mode
Some Android devices have issues with H2E causing downgrades to PSK
when using WPA2/3. With WPA3 it doesn't work reliably whatsoever.

My Samsung A55/6 for example has the following behavior:

daemon.info hostapd: lan5g: STA <redacted> IEEE 802.11: authenticated
daemon.notice hostapd: SAE: <redacted> indicates support for SAE H2E, but did not use it
daemon.info hostapd: lan2g: STA <redacted> IEEE 802.11: authenticated
daemon.info hostapd: lan2g: STA <redacted> IEEE 802.11: associated (aid 1)
daemon.notice hostapd: lan5g: Prune association for <redacted>
daemon.notice hostapd: lan2g: AP-STA-CONNECTED <redacted> auth_alg=open
daemon.info hostapd: lan2g: STA <redacted> RADIUS: starting accounting session 8234C696AAC1AE7D
daemon.info hostapd: lan2g: STA <redacted> WPA: pairwise key handshake completed (RSN)
daemon.notice hostapd: lan2g: EAPOL-4WAY-HS-COMPLETED <redacted>

This is also brought up in the issue: https://github.com/openwrt/openwrt/issues/9963

Ultimately this allows users to have the option to at the very least
disable H2E.

Unrelated: a minor cleanup was done so that ieee80211w uses set_default instead.
There is no functional change on that front.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/22021
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 70ba7512e7)
2026-02-15 01:27:19 +01:00
Rany Hany
80ba5e4e27 6in4: improve HE tunnel update procedure
- uclient-fetch timeout bumped from 5s to 15s. If we do not do this
  we get flagged by HE as the update request is expensive and takes
  more than 5s to execute. Currently 5s timeout causes uclient-fetch
  to be killed prematurely as can be seen by the following log:

  10:34:57 user.notice 6in4-henet: update 1/3: timeout
  10:35:07 user.notice 6in4-henet: update 2/3: timeout
  10:35:17 user.notice 6in4-henet: update 3/3: timeout
  10:35:22 user.notice 6in4-henet: update failed

  The above is the worst case, what usually happens is:

  10:53:59 user.notice 6in4-henet: update 1/3: timeout
  10:54:06 user.notice 6in4-henet: update 2/3: abuse
  10:54:06 user.notice 6in4-henet: updated

- We now use an exponential backoff starting from 5 seconds.

- Detect ca-bundle so we don't use --no-check-certificates
  unnecessarily.

- The while loop was changed so we don't retry unnecessarily
  after the final failure.

- Worst-case total time the update operation might take before
  bailing out is:

     (sum(15 + (5 × (2^(x − 1))), 1, 2) + 15) seconds = 1 min

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/22016
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 862b46dd8f)
2026-02-15 01:27:13 +01:00
Fil Dunsky
b8fe7b5c65 mediatek: add support for netis NX32U
This PR adds support for netis NX32U router.

Specification
-------------
- SoC       : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3 GHz
- RAM       : 256 MiB DDR3
- Flash     : SPI-NAND 128 MiB (ESMT)
- WLAN      : MediaTek MT7976CN dual-band WiFi 6
  - 2.4 GHz : b/g/n/ax, MIMO 2x2
  - 5 GHz   : a/n/ac/ax, MIMO 2x2
- Ethernet  : 10/100/1000 Mbps x3 (LAN, MediaTek MT7531AE)
              10/100/1000 Mbps x1 (WAN, SoC internal phy)
- USB       : 3.0
- Buttons   : Mesh, Reset
- LEDs      : 1x Power (green), unmanaged
              1x Internet (green), gpio-controlled
              1x WPS (green), gpio-controlled
              1x WiFi 2.4 GHz (green), gpio-controlled
              1x WiFi 5 GHz (green), gpio-controlled
              1x LAN activity (green), switch-controlled
              1x WAN activity (green), switch-controlled
              1x USB (green), gpio-controlled
- Power     : 12 VDC, 1 A

Installation
------------
1. Connect to the router using ssh (user: admin, pass: web interface
   password)
2. Backup:
```
cat /dev/mtd0 | gzip -1 -c > /tmp/mtd0_spi0.0.bin.gz
cat /dev/mtd1 | gzip -1 -c > /tmp/mtd1_BL2.bin.gz
cat /dev/mtd2 | gzip -1 -c > /tmp/mtd2_u-boot-env.bin.gz
cat /dev/mtd3 | gzip -1 -c > /tmp/mtd3_Factory.bin.gz
cat /dev/mtd4 | gzip -1 -c > /tmp/mtd4_FIP.bin.gz
cat /dev/mtd5 | gzip -1 -c > /tmp/mtd5_ubi.bin.gz
```
3. Download mtd backup from the /tmp dir of the router to your PC using
   scp protocol
4. Upload OpenWrt 'bl31-uboot.fip', 'preloader.bin' images to the /tmp
   dir of the router using scp protocol
5. Write FIP and BL2 (replace bootloader):
```
mtd write /tmp/openwrt-mediatek-filogic-netis_nx32u-bl31-uboot.fip FIP
mtd write /tmp/openwrt-mediatek-filogic-netis_nx32u-preloader.bin BL2
```
6. Place OpenWrt
   'openwrt-mediatek-filogic-netis_nx32u-initramfs-recovery.itb' image on
   the tftp server (IP: 192.168.1.254)
7. Erase 'ubi' partition and reboot the router:
   mtd erase ubi
   reboot
8. U-Boot automatically boot OpenWrt recovery image from tftp server to
   the RAM
9. Upload OpenWrt 'sysupgrade.itb' image to the /tmp dir of the router
   (IP: 192.168.1.1) using scp protocol
10. Connect to the router using ssh and run:
```
ubidetach -p /dev/mtd4; ubiformat /dev/mtd4 -y; ubiattach -p /dev/mtd4
ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
sysupgrade -n openwrt-mediatek-filogic-netis_nx32u-squashfs-sysupgrade.itb
```

Recovery
--------
1. Place OpenWrt
   'openwrt-mediatek-filogic-netis_nx32u-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

+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| LAN     | dc:xx:xx:d1:xx:18 | label     |
| WAN     | dc:xx:xx:d1:xx:1a | label+2   |
| WLAN 2g | de:xx:xx:11:xx:19 |           |
| WLAN 5g | de:xx:xx:71:xx:19 |           |
+---------+-------------------+-----------+
The LAN MAC was found in 'Factory', 0x1fef20
The WAN MAC was found in 'Factory', 0x1fef26
The WLAN 2g/5g MAC prototype was found in 'Factory', 0x4

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21368
(cherry picked from commit 0f713d5d11)
Link: https://github.com/openwrt/openwrt/pull/22004
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:21:24 +01:00
Fil Dunsky
317f893891 mediatek: filogic: add support for Bazis AX3000WM
- SoC: MediaTek MT7981B
 - CPU: 2x 1.3 GHz Cortex-A53
 - Flash: 128 MiB SPI NAND (Winbond W25N01GV)
 - RAM: 256 MiB (Nanya NT5CC128M16JR-EK)
 - WLAN: 2.4 GHz, 5 GHz (MediaTek MT7976CN, 802.11ax)
 - Ethernet: 1x 10/100/1000/2500 Mbps MaxLinear GPY211C WAN, 1x10/100/1000 Mbps MT7981 LAN
 - USB 3.0 port
 - 2x buttons: Reset, Mesh
 - 3x LEDs on top panel (red, green, blue)
 - 3x PHY port LEDs (1 amber, 2 green)
 - Board version: WD830M V2.0
 - Power: 5 VDC, 3 A

UART: internal test points, 3V3 115200 8N1 (RX, TX, GND)

Interface	MAC			Algorithm
LAN (label)	1c:bf:ce:xx:xx:x1	0x4
WAN		1c:bf:ce:xx:xx:x2	0xa
WLAN 2.4G	1c:bf:ce:xx:xx:x3	0x2a
WLAN 5G		1c:bf:ce:xx:xx:x4	0x24

At the moment installation is possible via UART only since SSH root
is password protected.

Set a static ip on the ethernet interface of your PC:
(ip address: 192.168.1.2, subnet mask:255.255.255.0).
Boot into initramfs via TFTP:
```
setenv serverip 192.168.1.2
tftpboot 0x46000000 openwrt-mediatek-filogic-bazis_ax3000wm-initramfs-recovery.itb
bootm 0x46000000
```

Install kmod-mtd-rw and activate it:
```
apk update && apk add kmod-mtd-rw
insmod mtd-rw i_want_a_brick=1
```
Upload to the router and write OpenWrt BL2 and FIP bootloader:
```
mtd write openwrt-mediatek-filogic-bazis_ax3000wm-preloader.bin BL2
mtd write openwrt-mediatek-filogic-bazis_ax3000wm-bl31-uboot.fip FIP
```
Prepare ubi partition:
```
ubidetach -p /dev/mtd4
ubiformat /dev/mtd4 -y
ubiattach -p /dev/mtd4
```

Upgrade via luci web interface with sysupgrade file or by issuing a command:
```
sysupgrade -n openwrt-mediatek-filogic-bazis_ax3000wm-squashfs-sysupgrade.itb
```
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21813
(cherry picked from commit 658e4adca4)
Link: https://github.com/openwrt/openwrt/pull/21924
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:18:26 +01:00
Pawel Dembicki
7f9363a715 package: uboot-qoriq: fix T4240RDB u-boot selection
Mark T4240RDB u-boot variants as device-built and avoid installing them into rootfs.

Without this buildbot crashes during package install with:

ERROR: unable to select packages:

  u-boot-fsl_T4240RDB-nor (no such package):

    required by: world[u-boot-fsl_T4240RDB-nor]

  u-boot-fsl_T4240RDB-sdboot (no such package):

    required by: world[u-boot-fsl_T4240RDB-sdboot]

Fixes: c5d3d5fe28 ("package: u-boot: initial support for qoriq arch")
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21514
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 20727f89d5)
Link: https://github.com/openwrt/openwrt/pull/21477
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:15:12 +01:00
Pawel Dembicki
2723b32ef3 qoriq: kernel: refresh config
Done by 'make kernel_oldconfig'.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/10941
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit ffda7e6748)
Link: https://github.com/openwrt/openwrt/pull/21477
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:15:12 +01:00
Pawel Dembicki
43784b1c56 qoriq: add support for NXP T4240RDB board
Hardware specs:
  - NXP T4240, 12C/24T @ 1.67 GHz
  - 3 × 2 GB DDR3 SO-DIMM
  - 128 MB NOR flash
  - 2 GB SLC NAND
  - SD card interface
  - PCIe: x4 and x8
  - SATA 3 Gbps
  - 8 × 1 GbE
  - 4 × 10 GbE SFP
  - RTC

This commit adds the sysupgrade and factory images for T4240RDB board in
both variants:
  - nor: for booting and read whole system from NOR memory
  - sdboot: for booting and read whole system from SD card

SD Card images install:

  - Burn image to sdcard. E.g:
      gunzip -c gunzip -c openwrt-qoriq-generic-fsl_T4240RDB-squashfs-sdcard.img.gz | \
      sudo dd of=/dev/mmcblk0 conv=fsync,notrunc status=progress bs=4M && sync
  - Download lastest Cortina PHY firmware from NXP github [1], if you accept their
    EULA [2].
  - Install Cortina PHY on image, E.g:
      dd if=cs4315-cs4340-PHY-ucode.txt of=/dev/mmcblk0 bs=1 seek=2M
  - Insert SD-Card to SD slot
  - Switch SW3.4 to OFF
  - Configre mac addresses from sticker in u-boot. E.g:
      setenv ethaddr 00:10:f3:3a:a8:66
      setenv eth1addr 00:10:f3:3a:a8:67
      setenv eth2addr 00:10:f3:3a:a8:68
      setenv eth3addr 00:10:f3:3a:a8:69
      setenv eth4addr 00:10:f3:3a:a8:6a
      setenv eth5addr 00:10:f3:3a:a8:6b
      setenv eth6addr 00:10:f3:3a:a8:6c
      setenv eth7addr 00:10:f3:3a:a8:6d
      setenv eth8addr 00:10:f3:3a:a8:6e
      setenv eth9addr 00:10:f3:3a:a8:6f
      setenv eth10addr 00:10:f3:3a:a8:70
      setenv eth11addr 00:10:f3:3a:a8:71
      saveenv
  - reset and boot

NOR images install:

  - download and extract factory image on tftp server root
  - boot device and stop in u-boot (from nor or sd card u-boot)
  - configure server and ip address. E.g:
      setenv ipaddr 192.168.1.2
      setenv serverip 192.168.1.1
  - Download image and run flashing:
      tftpboot $loadaddr openwrt-qoriq-generic-fsl_T4240RDB-squashfs-factory-nor.bin
      protect off all
      erase $fwaddr +$filesize
      cp.b $loadaddr $fwaddr $filesize
  - Switch SW3.4 to ON
  - Switch SW3.1-3 to OFF
  - reboot
  - Do postprocessing (see bellow)

NOR images post processing:

  - Configre mac addresses from sticker in u-boot. E.g:
      setenv ethaddr 00:10:f3:3a:a8:66
      setenv eth1addr 00:10:f3:3a:a8:67
      setenv eth2addr 00:10:f3:3a:a8:68
      setenv eth3addr 00:10:f3:3a:a8:69
      setenv eth4addr 00:10:f3:3a:a8:6a
      setenv eth5addr 00:10:f3:3a:a8:6b
      setenv eth6addr 00:10:f3:3a:a8:6c
      setenv eth7addr 00:10:f3:3a:a8:6d
      setenv eth8addr 00:10:f3:3a:a8:6e
      setenv eth9addr 00:10:f3:3a:a8:6f
      setenv eth10addr 00:10:f3:3a:a8:70
      setenv eth11addr 00:10:f3:3a:a8:71
      saveenv
  - boot
  - Download and refresh RCW stored in eeprom:
      tr '\0' '\377' < /dev/zero | dd bs=256 of=/sys/bus/i2c/devices/0-0050/eeprom
      cat /tmp/openwrt-qoriq-generic-fsl_T4240RDB-squashfs-rcw.bin > /sys/bus/i2c/devices/0-0050/eeprom
  - Download lastest Cortina PHY firmware from NXP github [1], if you accept their
    EULA [2].
  - Install Cortina PHY on image, E.g:
      mtd write cs4315-cs4340-PHY-ucode.txt /dev/mtd4
  - reset and boot

[1] https://raw.githubusercontent.com/nxp-qoriq/qoriq-firmware-cortina/refs/tags/lf-6.12.34-2.1.0/cs4315-cs4340-PHY-ucode.txt
[2] https://github.com/nxp-qoriq/qoriq-firmware-cortina/blob/lf-6.12.34-2.1.0/EULA.txt

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/10941
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 0a2b3b66db)
Link: https://github.com/openwrt/openwrt/pull/21477
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:15:12 +01:00
Pawel Dembicki
bf7494a644 package: u-boot: initial support for qoriq arch
This package adds initial u-boot support for qoriq target.

U-boot for qoriq devices must be compiled with 32-bit compiler and
linked with 32-bit linker. It's part of mpc 85xx target. But qoriq
target is 64-bit. As workaround, mpc85xx binary toolchain is downloaded
only for this u-boot.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/10941
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit c5d3d5fe28)
Link: https://github.com/openwrt/openwrt/pull/21477
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:15:12 +01:00
Pawel Dembicki
2dd34796d8 kernel: move patch from mpc85xx to pending
The patch "Revert "powerpc: dts: mpc85xx: remove "simple-bus" compatible
from ifc node" has been sent upstream [0].

It is also required for qoriq target and in this commit it is moved to
the generic/pending folder.

[0] https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20251105205524.17362-1-rosenp@gmail.com/

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/10941
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 5ed0f5a6dd)
Link: https://github.com/openwrt/openwrt/pull/21477
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 01:15:12 +01:00
Matt Merhar
bffedc5784 build: propagate errors when generating apk indexes
The build would continue even if the some of the intermediate commands
failed, as long as the last command in the final iteration of the loop
was successful.

Add 'set -e' to the subshell so that we immediately exit. Previously,
only the exit status of the final make-index-json.py mattered.

Fixes: https://github.com/openwrt/openwrt/issues/21981
Signed-off-by: Matt Merhar <mattmerhar@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21993
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit fcb07b00ec)
2026-02-13 21:18:30 +01:00
Raylynn Knight
ca13153d10 x86: base-files add support for Sophos 210r3 and 230r2
This fixes a previous commit for Sophos XG 210r3 which was missing
board_name mapping and adds support for the SG related version and the
XG/SG 230r2 which is the same hardware with a faster processor.

Sophos board_name mapping was modified to support all Sophos
SG/XG devices.

Sophos SG/XG 210r3 and SG/XG 230r2 are rackmounted x86 based firewall
with 6 RJ-45 gigabit ethernet ports (eth0-5) and 2 SFP gigabit ethernet
ports (eth6, eth7) all running Intel NICs supported by igb driver. The 210r3
and 230r2 only differ in the processor used.  This board update maps
eth1 (marked as WAN) as wan and eth0 and eth2-5 as lan.  Leaving the
two SFP ports unmapped.

Fixes: 4880e8e338 ("x86: add board mapping for Sophos XG 210r3")
Signed-off-by: Raylynn Knight <rayknight@me.com>
Link: https://github.com/openwrt/openwrt/pull/21959
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit d0c82dbb17)
2026-02-13 00:18:14 +01:00
Tomáš Macholda
72f5912448 mvebu: add depends for Turris MOX boards
Add dependencies for Turris MOX board modules directly as
DEVICE_PACKAGES. (So that users don't have to add them manually.)

The device uses an SD card for primary storage so space shouldn't be an
issue.

Signed-off-by: Tomáš Macholda <tomas.macholda@nic.cz>
Link: https://github.com/openwrt/openwrt/pull/21151
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bbfee76d1d)
2026-02-13 00:18:14 +01:00
Matt Merhar
324e157b4b apk: handle edge case when parsing .apk files
This was a regression introduced in the recent alignment changes and led
to failures when reading (i.e. 'mkndx') certain packages like follows:

ERROR: python3-botocore-1.31.7-r1.apk: unexpected end of file

It affected packages with a header size greater than the read buffer
size of 128KB but less than 160KB (128KB + (128KB / 4)).

In those cases, we'd attempt a 0 byte read, leading to APKE_EOF.

Based on some tests of files across multiple archs and feeds, it seems
the only packages meeting those criteria were python3-botocore and
golang-github-jedisct1-dnscrypt-proxy2-dev.

Fixes: 64ec08eee1 ("apk: backport upstream fixes for unaligned access")
Signed-off-by: Matt Merhar <mattmerhar@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21992
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 8c6ed4e927)
Link: https://github.com/openwrt/openwrt/pull/22001
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-13 00:12:35 +01:00
Robert Marko
ac7c25ee92 mvebu: cortex-a53: respect DEVICE_packages for Methode devices
Use the added support for generating per device targz rootfs so that images
generated for Methode devices when CONFIG_TARGET_MULTI_PROFILE and
CONFIG_TARGET_PER_DEVICE_ROOTFS are set, we actually get the targz rootfs
that respects DEVICE_PACKAGES.

Currently, buildbot generated images have no networking, LM75 nor I2C
working, as the generated images do not include required kmods that are
listed in DEVICE_PACKAGES.

While at it, there is no need for tar to run in verbose mode.

Fixes: 7dff6a8c89 ("mvebu: uDPU: add sysupgrade support")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit ef92265772)
2026-02-12 16:59:52 +01:00
Robert Marko
b856372329 image: support generating per device targz rootfs
Currently, for targets that use the CONFIG_TARGET_ROOTFS_TARGZ a single
rootfs tarball is generated for the subtarget based of $(TARGET_DIR).

However, this means that it does not respect DEVICE_PACKAGES like other
rootfs images.

So, lets augment CONFIG_TARGET_ROOTFS_TARGZ by adding a proper targz fstype
so that per device rootfs is generated under lock.

This is required so that devices that use custom sysupgrade archives like
Methode devices, can actually include a per device rootfs so when building
for multiple devices and with CONFIG_TARGET_PER_DEVICE_ROOTFS set the built
image actually includes the listed DEVICE_PACKAGES.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit d89cb72c23)
2026-02-12 16:59:43 +01:00
Hauke Mehrtens
8d1601b837 kernel: refresh patches
Refresh the patches to make them apply cleanly again.

Fixes: 105eb9ca95 ("kernel: add cake-mq support")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 30ac12f4b4)
2026-02-12 01:00:22 +01:00
Zhi-Jun You
8bafa45f35 mediatek: filogic: add 6G precal to Acer Vero W6m
Bootlog has the following line:
mt7915e 0000:01:00.0: missing precal data, size=403472

It is because precal was not included in the previous NVMEM conversion.

Fix this by adding it to the dts.

Fixes: dbc2923cbe ("mediatek: filogic: convert Acer Predator W6 to use NVMEM framework")
Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c62bab29d5)
2026-02-12 00:49:01 +01:00
Zhi-Jun You
661ffcbf7d mediatek: filogic: add 6G precal to Acer Predator W6
Bootlog has the following line:
mt7915e 0000:01:00.0: missing precal data, size=403472

It is because precal was not included in the previous NVMEM conversion.

Fix this by adding it to the common dts.

Fixes: dbc2923cbe ("mediatek: filogic: convert Acer Predator W6 to use NVMEM framework")
Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit eb369b267d)
2026-02-12 00:48:59 +01:00
Zhi-Jun You
a47290c869 mediatek: filogic: add precal to W6 common dtsi
Bootlog has the following line:
mt798x-wmac 18000000.wifi: missing precal data, size=403472

It is because precal was not included in the previous NVMEM conversion.

Fix this by adding it to the common dtsi.

Fixes: dbc2923cbe ("mediatek: filogic: convert Acer Predator W6 to use NVMEM framework")
Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 3f430451b1)
2026-02-12 00:48:58 +01:00
Qingfang Deng
74bf3689ea kernel: backport pppoe improvements
Backport PPP patches accepted upstream.

Manually rebased:
- target/linux/ipq40xx/patches-6.12/999-atm-mpoa-intel-dsl-phy-support.patch

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21892
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 316492b809)
2026-02-11 14:32:46 +01:00
Linus Walleij
b82ef842c5 gemini: select the right GPIO input package
We don't want kmod-gpio-button-hotplug, we want the more
normal kmod-input-gpio-keys.

Link: https://github.com/openwrt/openwrt/pull/21750
(cherry picked from commit 37b13b6ea6)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
f034005f95 gemini: set disk activity on orange LED
Set the disk activity LED to the intended trigger.

Link: https://github.com/openwrt/openwrt/pull/21750
(cherry picked from commit f52f1a85d1)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
b7cee916ed gemini: sl93512r: override SL93512R partitions for firmware
This is patch is identical in form and purpose as the IB-4220-B
patch. We switch over to a single "firmware" partition.

All reference design-based machines are now converted and we can
drop the legacy set-up code.

It turns out that the reference design also uses the flash layout
with a 3072KB kernel so augment the sysupgrade to do the right
thing also here.

Link: https://github.com/openwrt/openwrt/pull/21820
(cherry picked from commit c579e1d04c)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
1ed4f59e13 gemini: sq201: override SQ201 partitions for firmware
This is patch is identical in form and purpose as the IB-4220-B
patch. We switch over to a single "firmware" partition.

Link: https://github.com/openwrt/openwrt/pull/21820
(cherry picked from commit 81215f55e2)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
dd4423f298 gemini: override IB-4220-B partitions for firmware
To optimize the flash usage and to make firmware upgrades
simpler, catenate the three firmware partitions "Kern",
"Ramdisk" and "Application" into one, and use all of this
for the combined MTD-splitted kernel+rootfs.

This works fine as long as the kernel is placed in the
beginning of this firmware partition and we leave the
RedBoot partition as is, so the boot loader still can load
the kernel from the first two RedBoot partitions.

Using the RedBoot partitions "as is" can be considered
harmful, because when you flash to a RedBoot partition the
file size is used for downsizing of the partition and make
firmware upgrades fail if they are larger than the RedBoot
partition size after flashing, despite there is actually
flash there. So overriding with fixed partitions is just
generally a good idea.

Link: https://github.com/openwrt/openwrt/pull/21820
(cherry picked from commit 387752dc76)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
980c3ddac8 kernel: Add necessary CONFIG_MTD_SPLIT config option
Buils break without this new config, mea culpa.

Link: https://github.com/openwrt/openwrt/pull/21855
(cherry picked from commit eb0a1a3a89)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
c9ab6ffada kernel: mtdsplit: create executable prolog splitter
The problem is the following: we have three fixed partitions
in a RedBoot partition for kernel, initrd and rootfs. On the
surface this looks good.

But we have little flash and want to use it efficiently. We want
to use the OpenWrt "firmware" partition scheme where the kernel,
initramfs and sqashfs+jffs2 rootfs is appended, leaving maximum
space for a writeable rootfs.

To do this we will override the existing RedBoot partition table
with one that merges the three separate partitions into one
"firmware" partition.

RedBoot is still booting the system. It still needs to read the
first two parts "as if" these were the kernel and initrd. This
works fine, because the kernel still comes first.

We already have hacks in place to merge the two kernel and initrd
into one binary image and execute it. This is done by prepending
a "prolog" to the kernel that does the necessary copying in
memory and then jumps to execute the kernel.

Since this "prolog" copying routine is just 92 bytes but has 512
bytes allocated, we can trivially create a firmware format that
can be used for splitting the image into kernel and rootfs
using a tagging scheme that can be done directly by scripting
so we don't need any special binary programs.

This splitter implements that idea.

This will be used on the Gemini platform and was tested on the
Raidsonic IB-4220-B.

Link: https://github.com/openwrt/openwrt/pull/21820
(cherry picked from commit 5ac8f14ccb)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
40b5a83fdb gemini: use tar stream to write firmware
The firmware update file can get big, so instead of extracting
the whole file into the tmp folder potentially running out of space
and make the upgrade fail, stream from tar xvf -O directly to the
mtd write command.

Refactor the checking of partitions and the actual upgrade into
two steps when we are at it.

Link: https://github.com/openwrt/openwrt/pull/21782
(cherry picked from commit 1977301b5f)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
43547e9314 gemini: pad storlink reference firmware to 128kb
The redboot partition parser gets upset if a partition
doesn't end on an even erase block and marks the partition
read-only.

Fix this by always padding the three firmware items to
128kb.

It is no longer required for the filesystem to be padded
to 6144kb, so we pad this to just 128kb like the kernel
images.

Link: https://github.com/openwrt/openwrt/pull/21750
(cherry picked from commit db7a2fb217)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
26f776335a gemini: Fix up sysupgrade platform.sh script
The Storlink reference designs sometimes fail upgrade because
not the entire partition is used, so the size isn't equal to
the actual flash space available for the partition.

Fix this by calculating the actual partition sizes by measuring
across the partition offsets instead.

Link: https://github.com/openwrt/openwrt/pull/21750
(cherry picked from commit 04bc0b6d3f)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
0a5e9bc662 gemini: select CONFIG_BLK_DEV_LOOP
The gemini is using split squashfs/jffs2 root filesystems on
all devices, so without CONFIG_BLK_DEV_LOOP the device does
not gain a writeable root filesystem with these boot messages:

mount_root: unable to create loop device
mount_root: jffs2 not ready yet, using temporary tmpfs overlay

and then it never gets out of that. Fix this so we get writeable
rootfs again.

Link: https://github.com/openwrt/openwrt/pull/21748
(cherry picked from commit b8dc7ac9c6)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
1bd010f83b gemini: create a copy-kernel for 3072k kernels
The Raidsonic devices do not use a 2048k kernel "Kern"
partition like the Storlink reference designs. Instead
it uses a 3072k partition to fit a slightly
larger kernel.

Sadly the current OpenWrt Gemini kernel is still bigger
than 3072k so we need to make use of the Ramdisk
partition as well.

Create a special "copy-kernel" version that can deal
with the Raidsonic 3072k kernels. Tested on the
Raidsonic IB-4220-B booting kernel v6.12.66.

Fix a copy/paste error in the image generation makefile
while we are at it.

Link: https://github.com/openwrt/openwrt/pull/21686
(cherry picked from commit 691aa70e16)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
dd8727dd67 gemini: support upgrade on reference designs
The Gemini reference design-derived devices uses a partition
format which is predictable and we can exploit this to offer
some proper upgrade path.

The kernel for these contains a hack to use this partition
format unaltered by combining the partitions "Kern" and "Ramdisk"
to one image with all of the kernel+ramdisk in memory.

Then the "Application" which is used for the rootfs go into its
own partition.

Standard flash layout:
Kern         2048k |
Ramdisk      6144k | = 9216k
Application  6144k | = 15360k

Following the pattern of the factory image we create three
images named zImage, rd.gz and hddapp.tgz (these filenames
are misleading! They are just required by the old firmware.)
and flash each individually with "mtd" during upgrades.

Since the IB-4220-V has a different layout with a bigger kernel
space we parameterize this so we can handle this too. (More
fixes are needed for that device though.)

A way to upgrade older OpenWrt on these platforms to the latest
and greatest will be to copy the file
target/linux/gemini/base-files/lib/upgrade/platform.sh
to /lib/upgrade/platform.sh
on your running system and then run sysupgrade from the image
produced after this patch.

The script is picky to sanity check the partitions before
commencing upgrade.

This was tested with a full sysupgrade on the iTian SQ201.

Link: https://github.com/openwrt/openwrt/pull/21680
(cherry picked from commit 0b0cd4efe2)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
4a59012dbb gemini: Fix up the rootfs device for SQ201
The rootfs partition is /dev/mtdblock3, fix it up.

Link: https://github.com/openwrt/openwrt/pull/21662
(cherry picked from commit 8dec72061f)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Linus Walleij
62818bda83 gemini: Add DTS fix from upstream kernel
This contains small but important DTS fixes for the
RedBoot partitions.

Link: https://github.com/openwrt/openwrt/pull/21662
(cherry picked from commit 92682593d5)
Link: https://github.com/openwrt/openwrt/pull/21973
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-02-11 08:47:45 +01:00
Rui Salvaterra
08cba4608e iproute2: add cake_mq support
Add two patches backported from iproute2-next.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit f9320e8d2d)
2026-02-11 02:12:22 +01:00
Rui Salvaterra
dd79febbbe kernel: add cake-mq support
Add the required patches in order to backport cake-mq from Linux 7.0.

Many thanks to Toke Høiland-Jørgensen for providing the git trees with backports
for both 6.12 and 6.18.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 105eb9ca95)
2026-02-11 02:12:12 +01:00
Christoph Krapp
1f1dd426b5 ath79: add calibration variant for TP-Link TL-WA1201 v2
Now that we have a board file, add calibration variant for TP-Link
TL-WA1201 v2 and add ipq-wifi package for it.

Tested-by: Jim McDonald <122668301+jimmyd998@users.noreply.github.com>
Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21736
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0fa94cff86)
Link: https://github.com/openwrt/openwrt/pull/21951
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-11 00:14:43 +01:00
Christoph Krapp
667bf0b3c2 ipq-wifi: Add entry for TP-Link TL-WA1201 v2
Add IPQ Wifi entry for ath79 TP-Link TL-WA1201 v2.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21736
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0230a35882)
Link: https://github.com/openwrt/openwrt/pull/21951
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-11 00:14:43 +01:00
Robert Marko
efa6205e08 ipq-wifi: update to Git HEAD (2026-01-28)
88514e5aab3e qca9888: add bdf for TP-Link TL-WA1201 v2

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 953ef12f17)
Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21951
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-11 00:14:43 +01:00
Robert Marko
1c69a82182 ipq-wifi: update to Git HEAD (2026-01-24)
38804f59fbb9 ci: add ath12k BDF-s
d28bc0724dc6 ipq8074: add TCL LINKHUB  HH500V BDF
8e1fb2f59893 ipq6018:add TP-Link EAP620 HD v3 BDF Add board file for TP-Link EAP620 HD v3. bdwlan_US.bin sourced from EAP620 HD(US)_V3_1.4.4 Build 20250718 stock firmware.

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 12fd85eb79)
Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21951
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-11 00:14:43 +01:00
Mario Andrés Pérez
3ebb157b2d mediatek: filogic: gl-mt2500 fix compatibles PHY variants
These devices share the same "compatible" in device tree causing some
incompatibilities (sysupgrades, ASU profile identification), assign a
unique "compatible" and "model" to each variant.

Context:
Commit [1] added each variant's dts compatible to the SUPPORTED_DEVICES
field of the other variant to make easy sysupgrades between these
physically indistinguishable devices variants possible.

But there were found three issues which does not allow this:
- the sysupgrade's stricter check still used in some sysupgrade
paths(this check is being replaced(and redundant) with the newer fwtool's
SUPPORTED_DEVICES check using the info in images METADATA), this check
will fail when sysupgrading from a different board_name(compatible dts)
that the image was created for (image profile name).[2]
- ASU needs unique "dts compatible" to identify the devices profile.
- and an ASU's profile identification limitation when several devices from
a common target share SUPPORTED_DEVICES entries.[3]

There is a proposal for these issues but not yet implemented [4][3].

Until these issues are fixed we won't allow "easy" sysupgrades between
these two device variants.

Commit [5] avoided the ASU profile identification limitation but
missed the required two unique dts compatibles in order to make the two
variants fully work, although not allowing easy sysupgrade between them.

[1]: 8d30e07180
[2]: sysupgrade stricter check https://github.com/openwrt/openwrt/issues/20566#issuecomment-3583555482
[3]: ASU proposal https://github.com/openwrt/asu/pull/1533
[4]: allow easy sysupgrade proposal https://github.com/openwrt/openwrt/pull/20947
[5]: b71f4665cd
Fixes: b71f466 ("mediatek: filogic: fix supported_devices list for gl-mt2500")
Fixes: 8d30e07 ("mediatek: filogic: fix for new GL.iNet GL-MT2500/GL-MT2500A hardware revision")
Fixes: https://github.com/openwrt/openwrt/issues/20566
Fixes: https://github.com/openwrt/asu/issues/1525

Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21842
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7aa1f7e814)
2026-02-11 00:09:30 +01:00
Matt Merhar
82fec218e1 apk: backport upstream fixes for unaligned access
On the kirkwood target, packages would frequently fail to install with
APKE_ADB_SCHEMA, APKE_ADB_BLOCK, and/or segfaults. The culprit was
unaligned access leading to bogus values being read out of memory on
these particular ARMv5 CPUs.

Pull in the relevant upstream fixes to address this.

Fixes: https://github.com/openwrt/openwrt/issues/21307
Link: https://gitlab.alpinelinux.org/alpine/apk-tools/-/merge_requests/391
Link: https://gitlab.alpinelinux.org/alpine/apk-tools/-/merge_requests/392
Signed-off-by: Matt Merhar <mattmerhar@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21958
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 64ec08eee1)
2026-02-10 15:07:44 +01:00
Felix Fietkau
910eb0cc4e wifi-scripts: fix spurious teardown on config_change during setup
When config_change is set during an active setup (e.g. by a concurrent
reconf call), wdev_mark_up() attempted to call setup() while still in
"setup" state. Since setup() requires state "up" or "down", it silently
returned, leaving the state as "setup". The subsequent wdev_setup_cb()
then treated this as a setup failure, triggering an unnecessary
teardown+restart cycle.

Fix this by removing the config_change handling from wdev_mark_up() and
moving it to wdev_setup_cb() instead. wdev_mark_up() now always
transitions to "up" state. When wdev_setup_cb() runs afterwards and
finds the device already "up" with config_change set, it initiates a
clean re-setup from the "up" state where setup() can run.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 3553eda283)
2026-02-09 08:22:10 +01:00
Paul Donald
85342bea07 wireguard-tools: fix script errors
follow-up to 148207730a

Schoolboy error on the peer_psk value.

Also fix an issue when joining peer IPv4 and IPv6 AllowedIPs
(${peer_a_ips/ /, } replaces only the first space, while
${peer_a_ips// /, } replaces all the spaces).

Closes: https://github.com/openwrt/openwrt/issues/21847
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21851
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3f0de6a28d)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Paul Donald
436b090bc7 wireguard-tools: enable reload without teardown
- preserve (active) interface (at reload)

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0a576dec74)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Paul Donald
f78d9d898c wireguard-tools: avoid temp file for peer generation
- no longer write any temporary file for peer gen
- use wg syncconf to update active interfaces (not setconf)

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 148207730a)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Paul Donald
89d6ada56e wireguard-tools: avoid temp file for key gen
- no longer write any temporary file for key gen

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 97789875d5)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Paul Donald
3a31d73d28 wireguard-tools: add protocol renew handler
- add a renew handler
- add a peer detect handler

( benefits from https://github.com/openwrt/netifd/pull/66 )

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 400742a855)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Paul Donald
61e931db7e wireguard-tools: detect address changes at reload
Proto handler now also detects changes to
- addresses

Tighten also assign address portion

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21784
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d59b360cee)
Link: https://github.com/openwrt/openwrt/pull/21840
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-09 00:47:28 +01:00
Rosen Penev
5caf02eba9 package-pack: fix Ubuntu 18.04 compilation
Add \ to fix parsing with make 4.1.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21910
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 71ad91ecfa)
2026-02-09 00:40:31 +01:00
Burak Aydos
d527d58cf8 lantiq: xrx200: handle EPROBE_DEFER for MAC address
The xrx200 ethernet driver falls back to a random MAC address on any
error from of_get_ethdev_address(), including -EPROBE_DEFER. When the
MAC address comes from an nvmem layout driver (such as u-boot-env on
NAND), the nvmem cell may not be available yet at first probe attempt.

Fix this by propagating EPROBE_DEFER so the driver probe is deferred
until the nvmem cell becomes available.

Tested on Zyxel P-2812HNU-F1 (NAND, u-boot-env nvmem layout).

Signed-off-by: Burak Aydos <byhexadecimal@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21861
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 50e7e5c80d)
2026-02-09 00:40:31 +01:00
Markus Stockhausen
2efc40b0ed realtek: dts: add LGS328C port 21 definition
Port 21 definition was missed during addition of LGS328C.
Add it to the dts.

Fixes: 853d73f ("realtek: add support for Linksys LGS328C")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21793
Signed-off-by: Robert Marko <robimarko@gmail.com>

(cherry picked from commit 75fd2497ac)
Link: https://github.com/openwrt/openwrt/pull/21900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 21:25:29 +01:00
Bjørn Mork
53d688cf85 realtek: dsa: remove storm control
Commit 78bf3a5f44 ("realtek: dsa: Fix rate control initialization") enabled
code setting up the "storm control" feature. This casued a speed regression
on rtl838x, reducing the effective max speed per port from line rate to around
500 Mbits/s.

Storm control is a policy feature with a number of input parameters depending
on use case and environment.  It is not possible to define a meaningful static
policy in the driver. The problem isn't just the arbitrary limits in the
current code.  Such features require userspace interfaces.

Drop this code for now. It wasn't missed while it was disabled.

Fixes: 78bf3a5f44 ("realtek: dsa: Fix rate control initialization")
Link: https://github.com/openwrt/openwrt/issues/21692
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/21877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3972aeaf7c)
Link: https://github.com/openwrt/openwrt/pull/21900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 21:25:29 +01:00
Markus Stockhausen
21414937d1 realtek: dsa: rtl839x: fix uninitialized global access
Setup for DSA QOS on RTL839x accesses unitialized memory. For some
reason the handover of the priv structure was realized via global
intermediate variable switch_priv. During refactoring for adbb9a6
("realtek: dsa: rtl83xx: fix init section mismatch") this was not
noticed. Since then RTL839x devices crash during startup.

Fix this by using standard handover via function parameters.

Fixes: e81affb9 ("realtek: dsa: rtl83xx: fix init section mismatch")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21703
Signed-off-by: Robert Marko <robimarko@gmail.com>

(cherry picked from commit ac96463944)
Link: https://github.com/openwrt/openwrt/pull/21900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 21:25:29 +01:00
Markus Stockhausen
0837be599d realtek: dsa: rtl83xx: fix init section mismatch
Compilation currently spits this message:

WARNING: modpost: vmlinux: section mismatch in reference:
rtl83xx_sw_probe+0x6a4 (section: .text.rtl83xx_sw_probe)
-> rtl83xx_setup_qos (section: .init.text)

That means that we have a "normal" function caller (can be
called during the whole uptime) and a "initialization" function
callee (only available during init.

Fix this and directly fix the unwanted family checks.

Fixes: 012e0091 ("realtek: dsa: avoid use-after-free")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21690

(cherry picked from commit adbb9a6423)
Link: https://github.com/openwrt/openwrt/pull/21900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 21:25:29 +01:00
Carl-Daniel Hailfinger
dec360a3ac realtek: dsa: avoid use-after-free
The realtek target uses some functions marked __init for initialization.
However, that means they can only be called once when compiled in and
afterwards the memory occupied by them is freed and potentially reused.
Some "impossible" (code at a given location can't crash in the way it
does) crashes can be caused by this because upon re-execution of those
functions, garbage gets executed. Such re-execution can happen for
deferred probes or repeated probes.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Link: https://github.com/openwrt/openwrt/pull/21504
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>

(cherry picked from commit a91c3abe83)
Link: https://github.com/openwrt/openwrt/pull/21900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 21:25:29 +01:00
Shine
8c895dc4c5 wifi-scripts: fix encryption setting of default OpenWrt SSID
Commit 01a87f4bd0 changed the encryption
setting of the default SSID "OpenWrt" from "none" to "open". The correct
setting as per the documentation [1] is "none", though.
While this invalid setting won't cause a wrong hostapd setup, it will
at least cause malfunction in LuCI.

Change the default encryption setting back to "none".

[1] https://openwrt.org/docs/guide-user/network/wifi/basic#encryption_modes

Fixes: 01a87f4bd0
Signed-off-by: Shine <4c.fce2@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21925
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 4ab5fcc04f)
2026-02-08 19:05:59 +01:00
Mikhail Zhilkin
5f1b0fbf9b mediatek: routerich be7200: fix usb issue
This commit fixes non-working USB port:
---
[    5.294036] xhci-mtk 11200000.usb: error -EPERM: Failed to get supply 'vbus'
[    5.301163] xhci-mtk 11200000.usb: error -EPERM: Failed to get regulators
[    5.307938] xhci-mtk 11200000.usb: probe with driver xhci-mtk failed with error -1
---

While testing the USB power on/off functionality during the previous
commit, I didn't sufficiently test the actual operation of the USB
devices.

Fixes: ff5e66a920 ("mediatek: add support for Routerich BE7200")
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21795
(cherry picked from commit 2651a6ced9)
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21882
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-08 00:42:03 +01:00
Gustavo Henrique Nihei
cb209ad0d4 ext-toolchain: fix wrapper for gcc-ar, gcc-nm, gcc-ranlib
The pattern '*-*cc-*' incorrectly matches these tools because their names
contain 'cc-'. This causes them to receive compiler CFLAGS, breaking
builds with 'ar: two different operation options specified'.

Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
Link: https://github.com/openwrt/openwrt/pull/21757
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 435917735a)
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
Link: https://github.com/openwrt/openwrt/pull/21899
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:50:57 +01:00
Derek Denk
45788a48c7 mediatek: filogic: add support for Cudy AP3000 Wall v1
This commit adds support for the Cudy AP3000 Wall v1.

SoC: MediaTek MT7981b
RAM: 256MiB
Flash: spi-nand spi0.0: 128 MiB
Wifi: MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
LEDs: 1 LED in two colors (red & white)
Buttons: 1 reset, 1 led on/off
Ethernet: 5x 1GbE
Power: PoE powered (standalone)

The stock firmware is a customized variant of OpenWrt, which implements
a signature check that only allows flashing official firmware. Cudy offers
intermediate OpenWrt firmware images on their website [1][2] which do not
implement the signature check. After flashing the intermediate image the
upstream official OpenWrt image can be installed.

The stock firmware can be recovered via TFTP using the U-Boot based boot
loader[3]. Set up a TFTP server on your computer with IP 192.168.1.88/24
serving the stock firmware from Cudy's website renamed to "recovery.bin".
Press and hold the reset button while powering on the device, wait for the
TFTP server to send the recovery.bin file, then release the reset button.
The router will take a couple of minutes to reboot and set up the stock
firmware.

[1] https://www.cudy.com/blogs/faq/openwrt-software-download
[2] https://drive.google.com/drive/folders/1BKVarlwlNxf7uJUtRhuMGUqeCa5KpMnj
[3] https://www.cudy.com/en-us/blogs/faq/how-to-recovery-the-cudy-router-from-openwrt-firmware-to-cudy-official-firmware

Signed-off-by: Derek Denk <derek.denk@live.com>
Link: https://github.com/openwrt/openwrt/pull/21266
(cherry picked from commit afad4c71f8)
Link: https://github.com/openwrt/openwrt/pull/21890
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:30:03 +01:00
Aleksander Jan Bajkowski
4da230548f airoha: an7581: add switch ports interrups
The MT7531 has an incorrect interrupt number described in the DTS.
This commit also adds PHY interrupts. They work the same as on
the MT7988.

Tested on Gemtek W1700k.

Suggested-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/21016
(cherry picked from commit 788958880b)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:03:50 +01:00
Ziyang Huang
36caca6ce8 airoha: an7581: enable USB support
The an7581.dtsi contains the mediatek,mtk-xhci device.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21460
(cherry picked from commit f8a6798bf3)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:03:16 +01:00
Aleksander Jan Bajkowski
1f1d0ca74f airoha: show link rate and duplex
Implement the .get_link_ksettings to get the rate, duplex, and
auto-negotiation status.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/21530
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 4953db3aef)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:02:27 +01:00
Ziyang Huang
3e87d3b9cc airoha: an7581: correct led nodename
Use standard name.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit f5bf8c2b94)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:01:56 +01:00
Ziyang Huang
e567287172 airoha: an7581: correct phy nodename
Let node unit address same as reg.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit 077120fb64)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:01:30 +01:00
Ziyang Huang
045a938c05 airoha: an7581: move the switch led label from soc-level to board-level
Different boards use different port map. For example, some board may use
a GE port as WAN. So defining the led label in board-level is better.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit ea54b6a478)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:00:53 +01:00
Ziyang Huang
768f427773 airoha: an7581: move the switch port label from soc-level to board-level
Different boards use different port map. Defining the port labels in
board-level is better.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit e2f7ad08c7)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:00:21 +01:00
Ziyang Huang
75332d89aa airoha: an7581: disable all switch port and phy by default
Some board only use some of them, so enable as necessary in
board-level dts.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit 007aa5a51c)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 16:59:45 +01:00
Ziyang Huang
7000e421f1 airoha: an7581: correct the pinctrl-name of phy leds
address the following issues:

    [    3.542844] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.552550] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.562449] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.574350] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
(cherry picked from commit 65aed6aa12)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 16:59:12 +01:00
Aleksander Jan Bajkowski
90d68d3f02 airoha: an7583: fix scuclk unit-address
Fix the unit-address of the scuclk node.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20985
(cherry picked from commit 79ff31104c)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 16:58:43 +01:00
Aleksander Jan Bajkowski
0dc1b12154 airoha: en7583: dts: fix typo disable
No functional changes intended.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20985
(cherry picked from commit 914fe44647)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 16:58:11 +01:00
Aleksander Jan Bajkowski
7c201ca77b airoha: replace patches with upstream version
Replace patches with version accepted upstream.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/21333
(cherry picked from commit f49b452cc0)
Link: https://github.com/openwrt/openwrt/pull/21838
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 16:57:32 +01:00
Matt Merhar
2151b98144 apk: backport upstream fix for invalid fetch timestamps
Uninitialized memory led to bogus, huge timestamps being set on files
downloaded with the wget backend. This caused odd issues like 'ls -l'
crashing busybox when attempting to list the .apk file afterwards.

Link: 42f159e67b
Signed-off-by: Matt Merhar <mattmerhar@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/21874
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f750e3096f)
2026-02-05 17:12:56 +01:00
Daniel Golle
a3821c7798 kernel: mtk_eth_soc: fix memory leak in downstream patch
Bc-bocun Chen of MediaTek has discovered a memory leak in the error path
in our downstream patch for mtk_eth_soc which adds support for the 10G
PCS and PHY paths of the MT7988 SoC.
Fix this by freeing the at this point already allocated netdev resources
before returning the error.

Fixes: 4cb6bd9a6d ("mediatek: switch to pending XFI 10G Ethernet drivers")
Reported-by: Bc-bocun Chen <bc-bocun.chen@mediatek.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 4d71c767c4)
2026-02-05 02:56:45 +00:00
Aryaman Srivastava
06b5e42277 ramips: add support for D-Link DIR-1360 A1
The D-Link DIR-1360 A1 is an AC1300 router based on the MT7621AT SoC.

Specifications :-

* SoC: MediaTek MT7621AT
* RAM: 256 MB DDR3
* Flash: 128 MB SPI NAND (Winbond W29N01HV)
* WiFi: MT7615D (2.4 GHz + 5 GHz DBDC)
* Ethernet: 5x 10/100/1000 Mbps (1x WAN, 4x LAN)
* USB: 1x USB 3.0
* Buttons: Reset, WPS
* LEDs: Power (White/Orange), Internet (White/Orange), USB, 2.4G/5G WLAN

MAC addresses are retrieved from the 'factory' partition via NVMEM.
LAN: 0xe000 (gmac0)
WAN: 0xe006 (gmac1)
WLAN: 0xe00c (pcie0)

Flash Instruction :-

1-Set a static IP on your PC (e.g., 192.168.0.10, Gateway 192.168.0.1).
2- Power off the router and connect your PC to a LAN port.
3- Hold the Reset button and power on the router; continue holding for 5 seconds.
4- Access the Recovery UI at http://192.168.0.1 in your browser.
5- Upload the OpenWrt factory.bin image and wait for the reboot.

With these definitions in place, the DIR-1360 A1 boots reliably, exposes all hardware features correctly, and can be flashed via both the OEM recovery interface and standard OpenWrt upgrade paths.

Signed-off-by: Aryaman Srivastava <aryamansrivastava895@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21616
(cherry picked from commit 7a8e2efed5)
Link: https://github.com/openwrt/openwrt/pull/21826
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-05 00:16:40 +01:00
Anton Danilov
0f9056c2bd mediatek: add Motorcomm PHY support to Cudy AP3000 v1
Newer Cudy AP3000 v1 routers feature a Motorcomm YT8821 PHY
instead of the Realtek PHY [1]. Support for the YT8821
was recently introduced for the Cudy WR3000H router [2].
On the AP3000, the changes allow the PHY to be autodetected.

[1]: https://forum.openwrt.org/t/cudy-ap3000-v1-indoor-wan-motorcomm-yt8821-support/245491
[2]: https://github.com/openwrt/openwrt/pull/21399

Signed-off-by: Anton Danilov <frimen.c@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21776
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 31f30f5a6c)
2026-02-05 00:14:09 +01:00
Paweł Owoc
a62b5fe71c mac80211: ath11k: fix for unsupported 11ax EDCA
Currently publicly available firmware for ath11k does not support
the 11ax EDCA parameter.
Skipping sending this parameter allows the use of STA mode.

Fixes: https://github.com/openwrt/openwrt/issues/20702
Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21563
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 5fc9296912)
Link: https://github.com/openwrt/openwrt/pull/21575
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-04 00:03:44 +01:00
John Audia
9bf33c02d5 kernel: bump 6.12 to 6.12.68
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.68

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21797
(cherry picked from commit 0bd6a89561)
Link: https://github.com/openwrt/openwrt/pull/21825
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-03 23:26:21 +01:00
Hirokazu MORIKAWA
db44ad28b6 kernel: revert ip6_tunnel use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
Fixe Linux 6.12.67 broke ipip6 tunnel (DS-Lite) and MAP-E.

Upstream report: https://lists.openwall.net/netdev/2026/01/30/70
Fixes: https://github.com/openwrt/openwrt/issues/21737
Signed-off-by: Hirokazu MORIKAWA <morikw2@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21783
(cherry picked from commit ee0b160acc)
Link: https://github.com/openwrt/openwrt/pull/21825
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-03 23:26:21 +01:00
John Audia
8dbd00d4cd kernel: bump 6.12 to 6.12.67
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.67

Manually rebased:
  rockchip/patches-6.12/160-01-phy-rockchip-inno-usb2-Simplify-rockchip-usbgrf-handling.patch

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Add it again.

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21629
(cherry picked from commit 2228b7048c)
Link: https://github.com/openwrt/openwrt/pull/21687
Link: https://github.com/openwrt/openwrt/pull/21825
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-03 23:26:20 +01:00
Andrew LaMarche
beb134292d kernel: fix rtl8261n driver for non-realtek chips
Part of the phy patch process breaks functionality on non-Realtek
platforms. Only apply this on Realtek SoCs to fix functionality
everywhere else.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21777
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 268a0cb363)
Link: https://github.com/openwrt/openwrt/pull/21799
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-01 20:46:42 +01:00
Felix Fietkau
b99c19835c wifi-scripts: fix ieee80211w override for psk-sae/sae-mixed
The ucode wifi-scripts unconditionally set ieee80211w=1 for psk-sae
and eap-eap2 auth types, ignoring any user-configured value. This
caused ieee80211w=2 (MFP required) to be silently downgraded to 1
(MFP optional) when using sae-mixed encryption.

Change the logic to only set the default of 1 when ieee80211w is not
already configured by the user.

Fixes: https://github.com/openwrt/openwrt/issues/21751
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 1bbb60184d)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-01 20:41:57 +01:00
Burak Aydos
ba7cb3771b lantiq: xrx200: add env-size for P-2812HNU-F1 u-boot-env
The u-boot-env partition on the Zyxel P-2812HNU-F1 is 128 KiB but
the actual environment data is only 8 KiB (0x2000 bytes). Without
the env-size property, the u-boot,env nvmem layout driver assumes
env-size equals the full partition size and computes an incorrect
CRC32 over the entire 128 KiB, causing all nvmem cell reads to fail
silently.

Add env-size = <0x2000> so the CRC32 is computed over the correct
8 KiB region, allowing nvmem-cells (such as ethaddr) to be read
properly by the kernel.

Signed-off-by: Burak Aydos <byhexadecimal@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21780
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6952844436)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-01 20:41:52 +01:00
Tim Harvey
cca2f56023 kernel: modules: Add tpm-tis-spi
Add a module for tpm-tis-spi for TCG TIS 1.3 TPM security chips
connected to a regular non-tcg SPI master.

Add imx target compatibility for kmod-tpm.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/21726
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 92a94dc9b0)
2026-02-01 11:25:20 +01:00
Chukun Pan
6afff2039b uboot-rockchip: add HINLINK H28K support
Add pending uboot support for the HINLINK H28K.

This fixes the rockchip build again.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit 384127320e)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-30 15:05:28 +01:00
Hauke Mehrtens
d43bd94600 OpenWrt v25.12.0-rc4: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-29 23:52:16 +01:00
Hauke Mehrtens
925519daf1 OpenWrt v25.12.0-rc4: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-29 23:52:13 +01:00
Hauke Mehrtens
12374d88b9 Revert "kernel: bump 6.12 to 6.12.67"
This reverts commit 53a525f346.

Linux 6.12.67 broke ipip6 tunnel (DS-Lite) and MAP-E.

Revert this Linux kernel bump till the problem is fixed.

Fixes: https://github.com/openwrt/openwrt/issues/21737
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-29 23:36:22 +01:00
Ivan Pavlov
b98323c0e1 tcpdump: update to 4.99.6
Various improvements and bug fixes.
Changelog: https://github.com/the-tcpdump-group/tcpdump/blob/tcpdump-4.99.6/CHANGES

Signed-off-by: Ivan Pavlov <AuthorReflex@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21744
(cherry picked from commit 141d04a4d6)
Link: https://github.com/openwrt/openwrt/pull/21756
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-29 10:47:53 +01:00
Ivan Pavlov
fd04f9240f libpcap: update to 1.10.6
Vulnerabilities fixed: CVE-2025-11961 and CVE-2025-11964
Various improvements and bug fixes.
Changelog: https://github.com/the-tcpdump-group/libpcap/blob/libpcap-1.10.6/CHANGES

Upstreamed patches removed:
  001-Add-support-for-Realtek-Ethertype-DSA-data.patch
  002-Linux-handle-other-DSA-tags.patch

Signed-off-by: Ivan Pavlov <AuthorReflex@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21744
(cherry picked from commit 9a7ddcac3f)
Link: https://github.com/openwrt/openwrt/pull/21756
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-29 10:47:14 +01:00
Felix Fietkau
dece3bf36b wifi-scripts: iwinfo.uc: fix null reference in info()
Fixes: https://github.com/openwrt/openwrt/issues/21651
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 434e1461b2)
2026-01-29 00:45:54 +01:00
Felix Fietkau
b0c75adcc5 tcpdump: add PROVIDES=tcpdump to tcpdump-tiny
Improves handling of dependencies on tcpdump

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 0b302ec658)
2026-01-29 00:45:54 +01:00
Ivan Pavlov
90b8ed725a openssl: update to 3.5.5
This release incorporates the following bug fixes and mitigations:

  fixed Improper validation of PBMAC1 parameters in PKCS#12 MAC verification.
  (CVE-2025-11187)

  fixed Stack buffer overflow in CMS AuthEnvelopedData parsing.
  (CVE-2025-15467)

  fixed NULL dereference in SSL_CIPHER_find  () function on unknown cipher ID.
  (CVE-2025-15468)

  fixed openssl dgst one-shot codepath silently truncates inputs >16 MiB.
  (CVE-2025-15469)

  fixed TLS 1.3 CompressedCertificate excessive memory allocation.
  (CVE-2025-66199)

  fixed Heap out-of-bounds write in BIO_f_linebuffer on short writes.
  (CVE-2025-68160)

  fixed Unauthenticated/unencrypted trailing bytes with low-level OCB function calls.
  (CVE-2025-69418)

  fixed Out of bounds write in PKCS12_get_friendlyname  () UTF-8 conversion.
  (CVE-2025-69419)

  fixed Missing ASN1_TYPE validation in TS_RESP_verify_response  () function.
  (CVE-2025-69420)

  fixed NULL Pointer Dereference in PKCS12_item_decrypt_d2i_ex  () function.
  (CVE-2025-69421)

  fixed Missing ASN1_TYPE validation in PKCS#12 parsing.
  (CVE-2026-22795)

  fixed ASN1_TYPE Type Confusion in the PKCS7_digest_from_attributes  () function.
  (CVE-2026-22796)

Adjust patches due to formatting changes.

Link: https://github.com/openwrt/openwrt/pull/21752
Signed-off-by: Ivan Pavlov <AuthorReflex@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21755
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit df6db01f4f)
2026-01-29 00:39:55 +01:00
Robert Marko
63060b0155 mvebu: cortex-a53: fix Methode eDPU migration to upstream DTS
Migration of the eDPU DTS to upstream one broke the eDPU plus model
since the required ethernet aliases are missing and U-Boot then cannot
find the required ethernet nodes.

So, after sending the required fix upstream, lets apply it in OpenWrt
as well.

Fixes: 9852dda410 ("mvebu: move DTS diff into a patch for Methode uDPU")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 3353827fb5)
2026-01-28 11:05:06 +01:00
Youfu Zhang
b1dc2736db wifi-scripts: fix ucode mobility_domain default value
The mobility_domain value generated by ucode differed from the previous
shell script implementation. The legacy shell script used `echo` on the
SSID, which appended a trailing newline.

To maintain roaming compatibility with pre-25.12 releases and OpenWrt
forks in default configuration, update the ucode logic to include this
newline character when generating the default value.

Fixes: #21731
Signed-off-by: Youfu Zhang <zhangyoufu@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21732
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 1d0e2859c5)
2026-01-28 00:25:41 +01:00
Hauke Mehrtens
a8e32d208a mac80211: update to version 6.18.7
This is based on Linux kernel 6.18.7.

This update contains the following upstream fixes:
f75b9d2c9f5b wifi: rtl8xxxu: Add USB ID 2001:3328 for D-Link AN3U rev. A1
401b10a72f5a wifi: rtw88: Add USB ID 2001:3329 for D-Link AC13U rev. A1
c0d93d69e147 staging: rtl8723bs: fix out-of-bounds read in rtw_get_ie() parser
e841d8ea7223 staging: rtl8723bs: fix stack buffer overflow in OnAssocReq IE parsing
bf323db1d883 staging: rtl8723bs: fix out-of-bounds read in OnBeacon ESR IE parsing
b1497ea24639 wifi: ath10k: move recovery check logic into a new work
99fc0689a588 wifi: ath11k: restore register window after global reset
ab0554f51e5f wifi: ath12k: Fix MSDU buffer types handling in RX error path
d911fa97dab3 wifi: ath12k: fix VHT MCS assignment
ca2a33cee1ef wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
18d4706956b7 wifi: ath11k: fix VHT MCS assignment
6b1a0da75932 wifi: ath11k: fix peer HE MCS assignment
d0a5b5d56438 wifi: ath12k: restore register window after global reset
1564c04afa92 wifi: iwlwifi: mld: add null check for kzalloc() in iwl_mld_send_proto_offload()
d0bb3db7b295 wifi: ath12k: fix potential memory leak in ath12k_wow_arp_ns_offload()
36faecac7a2c wifi: ath12k: fix reusing m3 memory
4f93750fa588 wifi: ath12k: fix error handling in creating hardware group
41b623129175 wifi: ath12k: enforce vdev limit in ath12k_mac_vdev_create()
e442e820e953 wifi: ath12k: unassign arvif on scan vdev create failure
bcf44fe565bf wifi: rtw89: usb: use common error path for skbs in rtw89_usb_rx_handler()
87cc6fe79c3e wifi: rtw89: usb: fix leak in rtw89_usb_write_port()
c7ca777c5879 wifi: ath12k: Fix timeout error during beacon stats retrieval
51b823d7723f wifi: cw1200: Fix potential memory leak in cw1200_bh_rx_helper()
c9d1c4152e6d wifi: rtl818x: Fix potential memory leaks in rtl8180_init_rx_ring()
a6fb8785b179 wifi: mac80211: fix CMAC functions not handling errors
5ebf0fe7eaef wifi: rtl818x: rtl8187: Fix potential buffer underflow in rtl8187_rx_cb()
b8f34c1c5c4f wifi: mt76: mt7996: fix null pointer deref in mt7996_conf_tx()
cbeca0b7ea20 wifi: mt76: mt7996: Remove unnecessary link_id checks in mt7996_tx
d582d0e988d6 wifi: mt76: wed: use proper wed reference in mt76 wed driver callabacks
d2d11298dfc3 wifi: mt76: mt7996: Remove useless check in mt7996_msdu_page_get_from_cache()
2cde732373a7 Revert "wifi: mt76: mt792x: improve monitor interface handling"
74bb080717a3 wifi: mt76: mt7996: fix max nss value when getting rx chainmask
95bb36f8d6b3 wifi: mt76: mt7996: fix implicit beamforming support for mt7992
ee94375d06b5 wifi: mt76: mt7996: fix several fields in mt7996_mcu_bss_basic_tlv()
d64e6f27260e wifi: mt76: mt7996: fix teardown command for an MLD peer
e5c42efeb162 wifi: mt76: mt7996: set link_valid field when initializing wcid
9a43ed9ab800 wifi: mt76: mt7996: fix MLD group index assignment
7d6cd8f51ad8 wifi: mt76: mt7996: fix MLO set key and group key issues
1a4b481a21ae wifi: mt76: mt7996: fix using wrong phy to start in mt7996_mac_restart()
b4b789d24319 wifi: mt76: mt7996: fix EMI rings for RRO
46f0648e261c wifi: mt76: mt7996: grab mt76 mutex in mt7996_mac_sta_event()
70656b45467c wifi: mt76: Move mt76_abort_scan out of mt76_reset_device()
c319967690d4 wifi: mt76: mt7996: skip deflink accounting for offchannel links
abdedd46dc58 wifi: mt76: mt7996: skip ieee80211_iter_keys() on scanning link remove
f4c57afff3b0 wifi: mt76: mt7996: Add missing locking in mt7996_mac_sta_rc_work()
4d42aba0ee49 mt76: mt7615: Fix memory leak in mt7615_mcu_wtbl_sta_add()
ad26a7ef0488 wifi: ieee80211: correct FILS status codes
40257a2ef1bc wifi: rtl8xxxu: Fix HT40 channel config for RTL8192CU, RTL8723AU
c3ab9657866f wifi: cfg80211: stop radar detection in cfg80211_leave()
0283fac52b42 wifi: cfg80211: use cfg80211_leave() in iftype change
9c6f9b2a80ed wifi: mt76: mt792x: fix wifi init fail by setting MCU_RUNNING after CLC load
f5323b43019d wifi: brcmfmac: Add DMI nvram filename quirk for Acer A1 840 tablet
498e286941b9 wifi: mt76: Fix DTS power-limits on little endian systems
e5c129a05531 wifi: rtw88: limit indirect IO under powered off for RTL8822CS
90a15ff32464 wifi: rtlwifi: 8192cu: fix tid out of range in rtl92cu_tx_fill_desc()
7ea38152a289 wifi: cfg80211: sme: store capped length in __cfg80211_connect_result()
182a2786d248 wifi: mac80211: do not use old MBSSID elements
de5eb6b65e9f wifi: iwlwifi: Fix firmware version handling
a21704df4024 wifi: mac80211: Discard Beacon frames to non-broadcast address
e3c35177103e wifi: avoid kernel-infoleak from struct iw_point
b97be67dc06e wifi: mac80211: restore non-chanctx injection behaviour
1251bbdb8f5b wifi: mac80211_hwsim: fix typo in frequency notification

The following patches were applied upstream:
build/130-backports-move-__counted_by-to-compiler_types.h-head.patch patch [1]
build/999-kernel-6.12.64.patch [2]

[1]: b63f79524e
[2]: ed8c176dfa

Link: https://github.com/openwrt/openwrt/pull/21711
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 9bdb1b4eb4)
2026-01-27 23:25:20 +01:00
Chukun Pan
3cb84dcbe9 d1: refresh kernel config
Run 'make kernel_oldconfig' to get an up-to-date config.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit 8dccd1e44f)
2026-01-27 16:30:05 +01:00
Chukun Pan
79d8e14497 d1: enable overlay support
Add the loop module and mkfs tool to use f2fs/ext4
based overlays. This fixes the following bug:

mount_root: unable to create loop device
mount_root: no usable overlay filesystem found, using tmpfs overlay

Fixes: 99545b4bb1 ("d1: add new target")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit 1e7950a45d)
2026-01-27 16:30:03 +01:00
Chukun Pan
947bcc95f8 d1: enable usbgadget feature
The USB of most d1 devices works in otg or peripheral mode.
Enable this feature to use usbgadget and fix musb errors:

musb-sunxi 4100000.usb: Invalid or missing 'dr_mode' property
musb-sunxi 4100000.usb: probe with driver musb-sunxi failed with error -22

Fixes: 99545b4bb1 ("d1: add new target")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit 81580cc92c)
2026-01-27 16:30:02 +01:00
Álvaro Fernández Rojas
5c72cd46db odhcp6c: update to 25.12 Git HEAD (2026-01-25)
ee2949e3a70a dhcpv6: add config for strict RFC7550
abf6677391f0 dhcpv6: replace hash_ifname() with MD5 implementation

699cc61568...ee2949e3a7

Link: https://github.com/openwrt/openwrt/pull/21719
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-27 08:14:41 +01:00
Hauke Mehrtens
692150ee1f kernel: add missing kernel config option
The CONFIG_SOFTLOCKUP_DETECTOR_INTR_STORM option shows up when the
OpenWrt option CONFIG_KERNEL_SOFTLOCKUP_DETECTOR is activated.

Link: https://github.com/openwrt/openwrt/pull/21710
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bf9e90c94e)
2026-01-26 23:59:37 +01:00
Hauke Mehrtens
890a1d31fd kernel: reorder configuration options
Reorder the kernel configuration options by running:
./scripts/kconfig-reorder.sh

Link: https://github.com/openwrt/openwrt/pull/21710
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit daa36b7770)
2026-01-26 23:59:37 +01:00
Álvaro Fernández Rojas
31f65ffef5 odhcpd: update to 25.12 Git HEAD (2026-01-19)
2e5068b97290 dhcpv4: de-escalate error logging to debug
90929d9d2c78 netlink: clean up sockets, close files
e282a3c7e3f7 dhcpv6-ia: switch case refactor in dhcpv6_handle_ias()
386784657453 dhcpv6: set static defines for DHCPv6 option header size

0779ee287d...2e5068b972

Link: https://github.com/openwrt/openwrt/pull/21704
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-26 18:48:44 +01:00
Hauke Mehrtens
7c732c8a47 mt76: mt7996: fix crash when using mesh
Backport a fix from upstream mt76 to fix a crash in 802.11s mesh mode.

Fixes: https://github.com/openwrt/openwrt/issues/20751
Link: https://github.com/openwrt/openwrt/pull/21643
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 17d45f677b)
2026-01-26 00:43:57 +01:00
Maxim Anisimov
a71aef647b mediatek: enable wan led for Keenetic KN-(3711/3811)
The indicator is unused by default and not associated
with the wan port. So let’s fix this.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21635
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 46ff60ce02)
2026-01-25 23:56:15 +01:00
Maxim Anisimov
593b7d924e mediatek: simplify nvmem mac for Keenetic KN-(3811/3911)
This is a cosmetic change. There is no need to use mac
address increment/decrement in the dts on these devices,
so this can be simplified.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21635
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 9bcfe7b76f)
2026-01-25 23:56:10 +01:00
Maxim Anisimov
fdf2a1bf00 mediatek: drop spi cal for Keenetic KN-(3711/3811/3911)
In the original DTS from the device firmware, there are
no entries that enable SPI calibration. Therefore, it
should be disabled.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21635
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 299105441a)
2026-01-25 23:55:37 +01:00
Maxim Anisimov
4d444dabba mediatek: fix label mac for Keenetic KN-(3711/3811/3911)
Keenetic devices always use the WAN port MAC address as
the MAC address printed on the label.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21635
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 5c195add76)
2026-01-25 23:55:30 +01:00
David Yang
1a810b5fa4 iproute2: add dcb utility
KERNEL_DCB was introduced in 40f1db9cb1, however the dcb utility is not
enabled for iproute2. Although DCB is not generally available among
Ethernet cards, not having the dcb utility renders it completely
unchangeable.

On aarch64, it takes ~85.3KiB.

Signed-off-by: David Yang <mmyangfl@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21606
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f0f5525b75)
2026-01-25 23:55:05 +01:00
Hauke Mehrtens
3d167c6b81 firewall: change synflood_protect option name
The `syn_flood` option name is deprecated, `synflood_protect` should
be used instead. firewall3 and firewall4 both support this option since
a long time. LuCI already replaces the option name.
0abcb39b62

Suggested-by: rparge in OpenWrt forum
Link: https://github.com/openwrt/openwrt/pull/21642
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 2ae350b725)
2026-01-25 23:54:19 +01:00
Zeyu Dong
1d87d1f5aa ipq40xx: fix image pipeline for MR6350
Add two missing $$ in the factory image build pipeline for MR6350

Signed-off-by: Zeyu Dong <dzy201415@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21682
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 979f70cc7e)
2026-01-25 22:16:19 +01:00
Robert Marko
fc40e08c5b microchipsw: lan969x: include ip-bridge and dcb tools
Now that DCB is enabled by default, it makes sense to include it on
lan969x.

While we are here, lets include ip-bridge as these devices are switches
and the Busybox applet does not expose enough functionality.

These devices have no space constraints.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 51710e9dd4)
2026-01-25 22:14:23 +01:00
Robert Marko
24077b9885 microchipsw: enable DCB by default
Switchdev driver used by microchipsw supports DCB and has not storage
constraints, so enable kernel and driver DCB support by default.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 4c0c7442db)
2026-01-25 22:14:16 +01:00
John Audia
53a525f346 kernel: bump 6.12 to 6.12.67
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.67

Manually rebased:
  rockchip/patches-6.12/160-01-phy-rockchip-inno-usb2-Simplify-rockchip-usbgrf-handling.patch

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21629
(cherry picked from commit 2228b7048c)
Link: https://github.com/openwrt/openwrt/pull/21687
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-25 16:02:03 +01:00
Robert Marko
5af01636ef uboot-microchipsw: add FIP update flashing shortcut
Add env variable to make it easy to flash an FIP update.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 78c98abd30)
2026-01-25 11:23:58 +01:00
Robert Marko
b6389043f0 microchipsw: update DTS with the latest pending upstream
Update the DTS to the latest pending upstream version, it looks like this
should get merged soon upstream.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 19e097e18a)
2026-01-25 11:23:29 +01:00
George Moussalem
9e99b5b652 qualcommax: ipq50xx: Correct USB DWC3 wrapper interrupts
Interrupts for DWC3 node were completely mixed up - SPI interrupt 62 is
not listed in reference manual at all.  It was also causing dtbs_check
warnings:

  ipq5018-rdp432-c2.dtb: usb@8af8800 (qcom,ipq5018-dwc3): interrupt-names:0: 'pwr_event' was expected
  ipq5018-rdp432-c2.dtb: usb@8af8800 (qcom,ipq5018-dwc3): interrupt-names: ['hs_phy_irq'] is too short

Warning itself was introduced by commit 53c6d854be4e ("dt-bindings: usb:
dwc3: Clean up hs_phy_irq in binding"), but this was trying to bring
sanity to the interrupts overall, although did a mistake for IPQ5018.
IPQ5018 does not have QUSB2 PHY and its interrupts should rather match
ones used in IPQ5332.

Correct it by using interrupts matching the bindings and reference
manual.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21454
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e1a9636959)
2026-01-25 11:21:36 +01:00
George Moussalem
404b81e0f7 qualcommax: ipq50xx: correct assigned cmn pll clock rate
In IPQ5018, the reference clock to the CMN PLL block from the on-board
Wi-Fi has its divider set to 2. This divider wasn't taken into
consideration when calculating the CMN PLL clock rate which meant the
resulting clock rate was doubled.

With the reference clock divider being accounted for in the driver,
correct the assigned clock rate to 4.8GHz.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21453
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d6ab889e45)
2026-01-25 11:21:36 +01:00
George Moussalem
735e9490dd qualcommax: ipq50xx: enable ipq-cmn-pll driver compilation
Add missing dt-bindings/include files needed for compilation of driver.
Enable compilation of the CMN PLL driver by adding the symbols to
Kconfig and Makefile.

Fixes: 468975a985 ("qualcommax: ipq50xx: backport upstreamed patches for adding ipq5018 CMN PLL support")
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21453
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit fdce6f99be)
2026-01-25 11:21:36 +01:00
Robert Senderek
27b48d0002 qualcommax: ipq50xx: Add support for Zyxel SCR50AXE
This is tri-band WiFi6E capable router. Also Zyxel Nebula managed so no real local GUI. To open device 4 screws must be located uder the label.
Four latches are on front and two on each side. Better start from ethernet port side where 3 small latches are easy to handle.
FCC shows It's identical to WSQ65 sold as Zyxel Multy M6E but that's nowhare to be found yet. WSQ65 is not covered by this PR

Speficiations:
* SoC: Qualcomm IPQ5018
* RAM: 1GB DDR3
* Flash: Winbond W25N02KWZEIR 256MB
* UART: PCB "J3"  is located left from front LED strip
              (VCC/TX/RX/     /GND)   3.3V 115200n8
* Wi-Fi1: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
* Wi-Fi2: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
* Wi-Fi3: QCN6122 (2x2:2 6 Ghz 802.11an/ac/ax)
* Ethernet: QCA8337 4xLAN 1Gbit / 1xWAN 1Gbit
* Buttons: WPS , Reset
* LEDs: 13 in total
   RGB power, RGB wan, RGB status (cloud), RGB wifi, Green wps
* FCCID: I8803891

*Flash Instructions starts with getting root:
connect uart to J3 connector next to the front LEDs
go to failsafe when this shows up in log:
"Press the [f] key and hit [enter] to enter failsafe mode"
execute:
mount_root
passwd -d root
reboot

logon as root:
look for 'Please press Enter to activate this console.'
login is root password is empty
execute:
fw_setenv DebugFlag=0x1
fw_setenv bootdelay=0x2
passwd -d root
backup ubi partition "rootfs" into safe space
reboot

*OpenWrt installation
stop uboot and execute:
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.10
tftpboot *-factory.ubi
flash rootfs
reset

or:
tftpboot *-initramfs-uImage.itb
bootm
use sysupgrade as usual

*restore OEM from backup
stop uboot and execute:
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.10
tftpboot *-initramfs-uImage.itb
bootm
transfer rootfs.bin backup and execute:
ubiformat /dev/mtd16 -y -f /tmp/rootfs.bin

Signed-off-by: Robert Senderek <robert.senderek@10g.pl>
Link: https://github.com/openwrt/openwrt/pull/21042
(cherry picked from commit f948f71300)
Link: https://github.com/openwrt/openwrt/pull/21440
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-24 11:36:14 +01:00
Hauke Mehrtens
ebf9f13938 lantiq: AVM Fritz 736x: fix PCIe reset GPIO
The vr9.dtsi configures the GPIO 38 as reset GPIO. Also the fon LED is
configured on GPIO 38. This conflicts and makes the probing of the PCIe
controller fail in OpenWrt 25.12.

The AVM GPL source code configured GPIO 21 as PCIe reset.

Fixes: https://github.com/openwrt/openwrt/issues/21562
Link: https://github.com/openwrt/openwrt/pull/21641
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit a4285d7cc0)
2026-01-24 01:41:28 +01:00
Tianling Shen
4303066fb8 rockchip: fix set default serial_{addr,port} in boot script
On some SoCs like RK3399, U-Boot no longer export the serial
address in $stdout variable, it has been changed to something like
`stdout=serial,vidconsole` since video supported was added. So
detect $soc variable instead, this also makes the script more clear.

Addtional note: rk3566 is reported as rk3568, rk3582 is reported as
rk3588 in $soc.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21610
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 609deedd87)
2026-01-23 16:07:17 +00:00
Chukun Pan
f618048052 rockchip: add HINLINK H28K support
Hardware:
- RK3528 SoC
- 1x USB 2.0
- 8/32GB eMMC
- 1/2/4GB LPDDR4
- 1x 1GbE RTL8111H
- 1x 1GbE RTL8211F
- MicroSD card slot

Installation:
  Use dd or balenaEtcher to flash the firmware.

Note:
  The RK3528 SoC does not support MSI-X, so it can't
  adjust the interrupts of r8169 to other CPU cores.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit e8997e7e03)
2026-01-23 16:07:17 +00:00
Chukun Pan
dcc6ffb354 rockchip: correct MAC address for Radxa E20C
Use the unique MAC address in EEPROM for eth0.
The MAC address of RTL8111H (eth1) is correct.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit 7a07d38f33)
2026-01-23 16:07:17 +00:00
Chukun Pan
ee7acbc0ed rockchip: configure WAN port LED of Radxa E20C
The WAN(eth1) port LED on the Radxa E20C is completely off.
Since the r8169 driver supports configuring LEDs, using it.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
(cherry picked from commit dccfc10957)
2026-01-23 16:07:17 +00:00
Chester A. Unal
1b107a3c33 packages: nvram: add set_bcm43602_variables quirk for ASUS RT-AC3200
Broadcom BCM43602 needs certain NVRAM variables to be set to function. Add
a quirk for it and add ASUS RT-AC3200 which has got Broadcom BCM43602 to
the quirk. Thanks to Tom Brautaset for finding the needed variables.

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
(cherry picked from commit cd2ad6c464)
2026-01-23 16:06:24 +00:00
Chester A. Unal
6e55dbc260 packages: nvram: add asus,rt-ac{3200,5300} to set_wireless_led_behaviour
Add ASUS RT-AC3200 and ASUS RT-AC5300 to the set wireless LED behaviour
quirk. ASUS RT-AC3200's wireless chip is different than ASUS RT-AC5300's,
the environment variables for it are 0:ledbh10 and 1:ledbh10.

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
(cherry picked from commit 64b6293eb7)
2026-01-23 16:06:24 +00:00
Chester A. Unal
630c404e8c bcm53xx: add support for ASUS RT-AC3200 and ASUS RT-AC5300
ASUS RT-AC3200 and ASUS RT-AC5300 are AC3200 and AC5300 routers,
respectively, featuring 5 Ethernet ports over the integrated Broadcom
switch.

ASUS RT-AC3200 hardware info:
* Processor: Broadcom BCM4709A0 dual-core @ 1.0 GHz
* Switch: BCM53012 in BCM4709A0
* DDR3 RAM: 256 MB
* Flash: 128 MB
* 2.4GHz: BCM43602 3x3 single chip 802.11b/g/n SoC
* 5GHz: BCM43602 3x3 two chips 802.11a/n/ac SoC
* Ports: 4 LAN Ports, 1 WAN Port

ASUS RT-AC5300 hardware info:
* Processor: Broadcom BCM4709C0 dual-core @ 1.4 GHz
* Switch: BCM53012 in BCM4709C0
* DDR3 RAM: 512 MB
* Flash: 128 MB
* 2.4GHz: BCM4366 4x4 single chip 802.11b/g/n SoC
* 5GHz: BCM4366 4x4 two chips 802.11a/n/ac SoC
* Ports: 4 LAN Ports, 1 WAN Port

Flashing instructions:
* Boot to CFE Recovery Mode by holding the reset button while power-on.
* Connect to the router with an ethernet cable.
* Set IPv4 address of the computer to 192.168.1.2 subnet 255.255.255.0.
* Head to http://192.168.1.1.
* Reset NVRAM.
* Upload the OpenWrt image.

CFE bootloader may reject flashing the image due to image integrity check.
In that case, follow the instructions below.

* Rename the OpenWrt image as firmware.trx.
* Run a TFTP server and make it serve the firmware.trx file.
* Run the URL below on a browser or curl.
  http://192.168.1.1/do.htm?cmd=flash+-noheader+192.168.1.2:firmware.trx+flash0.trx

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
(cherry picked from commit 4284d56568)
2026-01-23 16:06:24 +00:00
Paul Donald
b2b40d09eb ucode: update to Git 85922056ef7 (2026-01-16)
45bf891e1d8d rtnl: add module documentation
8bbf01215ce3 nl80211: add module documentation
40a6aeb698e1 nl80211: add new attribute "mlo_links" for per link information
376e8733609e ubus: complete pending requests when disconnecting locally
32449bfb69d6 io: add ptsname, tcgetattr, tcsetattr, grantpt, unlockpt
76bf32679d86 digest: fix jsdoc to reveal sha512 functions
58b4597fa2ae build: drop remnant
6ef0b3ada3fd build: respect bin/lib paths
28132276a426 build: adjust flags and definitions
cb1b1c1a097b zlib: make chunk size configurable
6f80655c88c3 debian: refresh packaging
9fc4889c6e8e debian: adjust LTO build
a503a49f5cef debian: build "digest" and "zlib" modules
ffc48a2a4db9 socket: fix off-by-one in uv_to_sockaddr()

Fixes: https://github.com/jow-/ucode/issues/366

dropped patch 130 - integrated at source.
refreshed patches

https://github.com/openwrt/openwrt/pull/21585
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21585
(cherry picked from commit a82738d83f)
Link: https://github.com/openwrt/openwrt/pull/21631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-22 21:14:26 +01:00
Felix Fietkau
7aeb44935b ucode: remove the fs.read_nb patch
It is obsolete since the io module was added

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e06c4125fd)
Link: https://github.com/openwrt/openwrt/pull/21631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-22 21:14:26 +01:00
Ryan Chen
f70c393d62 wifi-scripts: fix WiFi 6E discovery for 6GHz 320MHz operation
WiFi 6E (802.11ax) clients cannot discover 6GHz APs operating at
320MHz because the HE Operation element contains uninitialized
center frequency values.

For EHT320 mode, the code sets eht_oper_centr_freq_seg0_idx but not
the corresponding HE values. Later, the HE values are copied from
VHT values, but VHT is not used on 6GHz, leaving he_oper_chwidth
and he_oper_centr_freq_seg0_idx at 0. This causes WiFi 6E clients
to see incorrect channel width information, making the AP invisible
to them during scanning.

Fix this by:
1. Setting he_oper_chwidth to 3 (160MHz) for EHT320 mode
2. Computing he_oper_centr_freq_seg0_idx based on the 160MHz segment
   that contains the primary channel
3. Preserving these pre-set values instead of overwriting them with
   uninitialized VHT values

WiFi 7 clients continue to see 320MHz operation via the EHT Operation
element, while WiFi 6E clients can now discover and connect at 160MHz.

Signed-off-by: Ryan Chen <rchen14b@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21588
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a8bdb1e6d6)
2026-01-21 22:31:18 +01:00
Robert Marko
687ece117b microchipsw: lan969x: use network driver as a module
Due to PTP conflicts with CONFIG_ALL_KMODS which causes the end images
to end up with no switchdev driver included, lets switch to using the
switchdev and PHY drivers as modules instead.

Fixes: 88a404a2d1 ("microchipsw: add support for Microchip LAN969x switches")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit b300a9e63d)
2026-01-21 16:26:20 +01:00
Robert Marko
5a3c5ec351 kernel: modules: package Microchip SparX-5 switchdev driver as a module
Package the Microchip SparX-5 switchdev driver as a module.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 9a4c6550a7)
2026-01-21 16:26:13 +01:00
Hauke Mehrtens
704d999d5a OpenWrt v25.12.0-rc3: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-21 01:24:27 +01:00
Hauke Mehrtens
8fca489a02 OpenWrt v25.12.0-rc3: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-21 01:24:24 +01:00
Hauke Mehrtens
30527a4c34 Revert "kernel: pcs-mtk-lynxi: backport fix for in-band status capabilities"
This reverts commit 7390e63374.

This broke SFP handling on some Mediatek SoCs.
Some SFPs are configured for inband/2500base-x link mode and were
rejected with this change.

Fixes: https://github.com/openwrt/openwrt/issues/21436
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 8076376aca)
2026-01-21 01:20:54 +01:00
Paul Donald
cb206004ea ucode: enable ucode-mod-zlib
The module exists in ucode and has been present for a while
but has not been enabled. It provides the ucode zlib module
for handling gzip and zlib compression in ucode scripts.

The package is ~ 5Kb. Installed ~18Kb.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21417
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 16ae5c23e5)
Link: https://github.com/openwrt/openwrt/pull/21608
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:47:57 +01:00
Felix Fietkau
d88e3573a7 ucode: add package for ucode-mod-io
It was included in the last update

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit ed2587c73d)
Link: https://github.com/openwrt/openwrt/pull/21608
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:47:57 +01:00
John Audia
df2d060dbd kernel: bump 6.12 to 6.12.66
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.66

All patches automatically rebased

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21591
(cherry picked from commit c0fb8e1f35)
Link: https://github.com/openwrt/openwrt/pull/21607
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:41:15 +01:00
Emre Yavuzalp
aafcf04d0d mediatek: filogic: TP-Link Archer AX80 v1 (EU) support
Device specification

SoC Type: MediaTek MT7986B, Cortex-A53, 64-bit 1.6GHz Quad Core
RAM: ESMT M15T4G16256 (512MB)
Flash: ESMT F50L1G41LB (128 MB)
Ethernet: MediaTek MT7531AE + 2.5GbE MaxLinear GPY211C0VC (SLNW8)
Ethernet: 1x2.5Gbe (WAN/LAN 2.5Gbps), 4xGbE (WAN/LAN 1Gbps, LAN1, LAN2, LAN3)
WLAN 2g: MediaTek MT7975
WLAN 5g: MediaTek MT7975
LEDs: All White(probably)

Buttons: 4 (Reset,ledswitch,wps,wlan),
USB ports: 1 (USB 3.0)
Power: 12 VDC, 2.0 A
Connector: Barrel
Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
slots contain "seconduboot" (also U-Boot 2022.01-rc4)
Serial console (UART)

                            V
+-------+-------+-------+-------+
| +3.3V |  GND  |  TX   |  RX   |
+---+---+-------+-------+-------+
    |
    +--- Don't connect

CPU BLOCK HERE                                                         LAN PORTS HERE

Installation (UART)
Note: There might be methods without UART possible soon.
Place OpenWrt initramfs image on tftp server with IP 192.168.1.2

Attach UART, switch on the router and interrupt the boot process by pressing 'Ctrl-C'

Load and run OpenWrt initramfs image:

      tftpboot initramfs-kernel.bin
      bootm

!!Attention!! is very important! After entering OpenWrt, please set / update the environment variables:

fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
fw_setenv mtdids "spi-nand0=spi-nand0"
fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data),8M(mali_data)"
fw_setenv tp_boot_idx 0

Run 'sysupgrade -n' with the sysupgrade OpenWrt image from console or Luci WebUI.

Recovery

Press Reset button and power on the router
Navigate to U-Boot recovery web server (192.168.1.1) and upload the OEM firmware

Stock layout

0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"
0x000007300000-0x000007B00000 : "mali_data"

ubi0/ubi1 format
U-Boot at boot checks that all volumes are in place:

+-------------------------------+
| Volume Name: uboot Vol ID: 0|
| Volume Name: kernel Vol ID: 1|
| Volume Name: rootfs Vol ID: 2|
+-------------------------------+
MAC addresses
+---------+-------------------+-----------+
| label | 00:eb:xx:xx:xx:be | label |
| LAN | 00:eb:xx:xx:xx:be | label |
| WAN | 00:eb:xx:xx:xx:bf | label+1 |
| WLAN 2g | 00:eb:xx:xx:xx:be | label |
| WLAN 5g | 00:eb:xx:xx:xx:bd | label-1 |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file "default-mac".
OEM wireless eeprom is also there (file "MT7986_EEPROM.bin").

Signed-off-by: Emre Yavuzalp <emreyavuzalp2@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20630
(cherry picked from commit 6bfb305394)
Link: https://github.com/openwrt/openwrt/pull/21594
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:54:03 +01:00
Fil Dunsky
db694b40c9 mediatek: add support for Airpi AP3000M
This adds support for the Airpi AP3000M 5G CPE based on MediaTek MT7981B.

Specifications:

SoC: MediaTek MT7981B (dual-core ARM Cortex-A53)
RAM: 1GB DDR4
Storage: 8GB or 16GB eMMC
Ethernet: 1x 2.5GbE LAN, 1x 1GbE WAN
Wireless: 2.4GHz/5GHz 802.11ax
Buttons: Reset, WPS
LEDs: System, 2.4GHz WiFi, 5GHz WiFi
Cooling: PWM-controlled fan
Expansion: M.2 slot for 5G modem

The factory partition (mmcblk0p2) is empty in stock firmware.
Execute via SSH before flashing OpenWrt:
```
dd if=/lib/firmware/MT7981_iPAiLNA_EEPROM.bin of=/dev/mmcblk0p2 bs=4k count=1
MAC addresses
```
Fixed MAC addresses are derived by macaddr_generate_from_mmc_cid.

Installation via U-Boot web page

Set static IP 192.168.88.2/255.255.255.0 on your computer.
Connect to the 1GbE port (WAN) and hold the reset button while booting the device. Wait for about 6 seconds, and release the reset button.
Open U-boot web page on your browser at http://192.168.88.1
Select the OpenWRT sysupgrade image, upload it, and start the upgrade.
Wait for automatic reboot.
Installation via sysupgrade

Flash the sysupgrade file via LuCI upgrade page without saving the settings.

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21397
(cherry picked from commit: 6ff4557317)
Link: https://github.com/openwrt/openwrt/pull/21601
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:49:24 +01:00
Pierre-Emmanuel Frot
067178b7fd x86: cs5535audio: add support for subtarget legacy
Build kernel module for cs5535 internal audio for target x86 "legacy" also
(so far only for target x86 "geode")

Signed-off-by: Pierre-Emmanuel Frot <piemfrot@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21596
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e45ba0ef6e)
2026-01-19 12:51:45 +01:00
Maximilian Baumgartner
b590b79a77 mediatek: fix gmac definition for cudy m3000
The gmac definition has an offset of 1 compared to the label MAC.
Fixes: a55ab9e134 ("mediatek: filogic: prevent faulty mac address assignment")

Signed-off-by: Maximilian Baumgartner <aufhaxer@googlemail.com>
Link: https://github.com/openwrt/openwrt/pull/21560
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 687a2535d5)
2026-01-18 11:37:02 +01:00
Robert Marko
528bee9e39 microchipsw: drop source-only
Now that there is a consumer board available, lets drop source-only so that
buildbots provide official images.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-01-18 11:33:44 +01:00
Robert Marko
2210c6e632 boot: arm-trusted-firmware-microchipsw: depend on host Ruby
Microchip ATF depends on Ruby scripts to generate the FWU monitor HTML
and more, so make sure that host Ruby is available.

We also need to call the scripts directly via Ruby executable as shebang
wont work due to lack of Ruby in the Buildbot container.

Fixes: 5205c0c426 ("microchipsw: lan969x: add Microchip EV23X71A")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 082fe669f7)
2026-01-18 11:21:27 +01:00
Robert Marko
111151379d boot: arm-trusted-firmware-microchipsw: fix compilation against LibreSSL
LibreSSL 3.9+ has dropped support for X509V3 extension API so cert_create
tool does not compile against it at all.

This was hidden by the fact that it was compiling against OpenSSL on my
host which still has that API, however we do not ship libssl-dev in the
Buildbot containers so compiling against distro OpenSSL is not possible.

So, after a long time trying to find any docs on that API I resorted to
LLM(Gemini 3 Pro) to get it to compile.

Our libcrypto is linked against pthread so we must pass -lpthread as well
for cert_tool.

Fixes: 5205c0c426 ("microchipsw: lan969x: add Microchip EV23X71A")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 410277ca12)
2026-01-18 11:21:27 +01:00
George Sapkin
43057c5c16 imagebuilder: add ABI suffix to packages when using apk
If an apk package with an ABI version doesn't have priority set, it
can't be selected by its base name:

$ make manifest PACKAGES='libustream-openssl libsqlite3'
ERROR: unable to select packages:
  libsqlite3 (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libsqlite3-0
    required by: world[libsqlite3]
  libustream-openssl (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libustream-openssl20201210
    required by: world[libustream-openssl]

Look up the ABI version in apk index and if present, add an ABI suffix
to all requested packages.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21449
(cherry picked from commit 31cdd13d22)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
d943ebf5b3 build: add default priority to ABI-versioned packages
If a package has an ABI version defined, set priority to 10. The enables
packages with an ABI version to be installed by their base name instead
of a name and an ABI version, e.g.:

libfoo3, where 3 is the ABI version can be installed by just libfoo.

This affects manual installation only, as the dependency resolution
takes care of ABI versions.

Refactor apk priority logic into a helper define.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 470e030a5e)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
f74790057f build: remove redundant shebang from apk lifecycle scripts
Due to the way apk lifecycle scripts are defined, they might end up with
multiple shebangs. Remove them.

Before:

  post-upgrade: |
    #!/bin/sh
    export PKG_UPGRADE=1
    #!/bin/sh
    [ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0
    [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
    . ${IPKG_INSTROOT}/lib/functions.sh
    export root="${IPKG_INSTROOT}"
    export pkgname="adblock-fast"
    add_group_and_user
    default_postinst
    #!/bin/sh
    # check if we are on real system
    if [ -z "${IPKG_INSTROOT}" ]; then
    	/etc/init.d/adblock-fast enable
    fi
    exit 0

After:

  post-upgrade: |
    #!/bin/sh
    export PKG_UPGRADE=1
    [ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0
    [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
    . ${IPKG_INSTROOT}/lib/functions.sh
    export root="${IPKG_INSTROOT}"
    export pkgname="adblock-fast"
    add_group_and_user
    default_postinst
    # check if we are on real system
    if [ -z "${IPKG_INSTROOT}" ]; then
    	/etc/init.d/adblock-fast enable
    fi
    exit 0

Fixes: b52e897 ("include/package-pack: remove leading whitespace from install scripts")
Fixes: 03880e2 ("include/package-pack: add missing apk package lifecycle events")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 1dec4683f6)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
46244b6b0b build: fix implicit self-provides
Fix setting implicit self-provides for packages when they don't have any
PROVIDES specified.

Remove redundant self-provide for kmods, since kmods are packages and
will have a self-provide added already.

Fixes: 5ed650a ("build: add support for virtual provides")
Fixes: 9b37b71 ("build: provide virtual self in kmods")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 2d844a0770)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
2f644e7cad elfutils: drop libelf1 provide
ABI version is added to a package name during packaging, so there's no
need to specify it manually. And nothing explicitly depends on libelf1.

Fixes: d7bf089 ("elfutils: rename libelf1 to libelf")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 8cc2743c48)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
6543c6800b uclient: provide virtual wget-any
Packages shouldn't provide a package that another package, in this case
wget from packages provides. Explicitly provide a virtual @wget-any
instead to match the implicit wget provide and switch the only consumer
to use the new provider.

Set uclient-fetch as the default variant for wget-any.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit af1fa176c3)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
953ef12689 build: fix provides logic when ABI version is set
Same as for the base package name, when a package has an ABI version,
provide both unversioned provider in addition to one with ABI version
and version.

So for each provide instead of providing only:

$provide$ABI_version=$package_version

now provide:

$provide $provide$ABI_version=$package_version

When a provide ends in a number, the ABI version will be prefixed with
a - sign, e.g.: provide1-0

Fixes: 18029977 ("build: fix apk packaging and ABI-versioning")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 952c918028)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
b4e537e9cd build: refactor dependency formatting
Refactor dependencies and extra dependencies logic into a helper define
and document it.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 779fa7ff6c)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
5976c47b9f build: don't auto mark all provides as virtual
Don't mark all provides as virtual when ALTERNATIVES is set.
Automatically marking all provides as virtual prevents variants from
conflicting between each other. Alternatives have nothing to do with
packaging and packages are expected to manage their own provides.

Updated internal provides explanation.

Remove unnecessary back slashes from FormatProvides.

Fixes: 18029977 ("build: fix apk packaging and ABI-versioning")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 2a1977a4b8)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
9a0045bbbf build: remove default provider priority
Remove default provider priority since packages are expected to
explicitly declare virtual provides and set default variants. With
default priority some package variants without PROVIDES and not marked
as default end up with priority 0 and are not picked for installation.

Before the change dnsmasq-dhcpv6 is selected for dnsmasq, because the
former has higher priority:

name <dnsmasq> selected from selectable list
select_package: dnsmasq (requirers=1, autosel=1, iif=0, order_id=0x4000005f)
  consider dnsmasq-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
   prefer existing package
    choose as new provider
  consider dnsmasq-dhcpv6-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=1, installed=0
    prefer highest declared provider priority
    choose as new provider
  consider dnsmasq-full-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=1, installed=0
    prefer lowest available repository
selecting: dnsmasq-dhcpv6-2.91-r2, available: 1
assign dnsmasq-dhcpv6 to dnsmasq-dhcpv6-2.91-r2
assign dnsmasq to dnsmasq-dhcpv6-2.91-r2
disqualify_package: dnsmasq-2.91-r2 (conflicting provides)
disqualify_package: dnsmasq-full-2.91-r2 (conflicting provides)
    apply_constraint: libc
    apply_constraint: provider: libc-1.2.5-r5: 1

After the change dnsmasq is selected for dnsmasq based on
lexicographical order:

name <dnsmasq> selected from selectable list
select_package: dnsmasq (requirers=1, autosel=1, iif=0, order_id=0x4000005f)
  consider dnsmasq-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
   prefer existing package
    choose as new provider
  consider dnsmasq-dhcpv6-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
    prefer lowest available repository
  consider dnsmasq-full-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
    prefer lowest available repository
selecting: dnsmasq-2.91-r2, available: 1
assign dnsmasq to dnsmasq-2.91-r2
disqualify_package: dnsmasq-dhcpv6-2.91-r2 (conflicting provides)
disqualify_package: dnsmasq-full-2.91-r2 (conflicting provides)
    apply_constraint: libc
    apply_constraint: provider: libc-1.2.5-r5: 1

Fixes: dea8397 ("include/package-pack: add default 'provider_priority' for APK packages")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 49fc319033)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
Steffen Förster
e753ed9cec ramips: fix gmac definition for cudy ap1300 outdoor
The gmac definition has an offset of 1 at the moment. This leads to an
off by one error in downstream projects that rely on the package label mac.

Signed-off-by: Steffen Förster <nemesis@chemnitz.freifunk.net>
Link: https://github.com/openwrt/openwrt/pull/21543
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 66b6791abe)
2026-01-15 23:11:00 +01:00
Jörg Seitz
8bf63c2289 mediatek: add support for device zbt-z8103ax-c
- adopted MTD partition size increase from 64M to 128M
  -> this allows boot to complete
- moved MAC addressing stuff out of partition definitions
- all MAC addressing stuff is in .dtsi

Specifications:

SoC: MediaTek MT7981B
RAM: 256MiB
Flash: Winbond SPI-NAND 128 MiB
Switch: 1 WAN, 3 LAN (Gigabit) MediaTek MT7531
Buttons: Reset, Mesh
Power: DC 12V 1A
WiFi: MT7981B 2.4Ghz & 5.8Ghz

Led Layout from bottom to top:

    Power
    Mesh (RGB Led, user controllable, default set to OpenWrt Status)
    WLAN 2 GHz (user controllable)
    WAN (user controllable)
    LAN3
    LAN2
    LAN1
    WLAN 5 GHz (Not on front panel but blinks through enclosure,
               user controllable)

Buttons:

    Reset
    Mesh (user controllable, no default function)

Installation:

A. Through U-Boot menu:

 -  Prepare your connecting computer to use a static IP in
	network 192.168.1.0/24
 -  Power down the router and hold in the Reset button.
 -  While holding in the button power up the router again.
 -  Hold the button in for 10 seconds and then release.
 -  Use your browser to go to 192.168.1.1
 -  If you see a GUI allowing for flashing firmware then
	you got the right model.
 -  Upload the sysupgrade file.

Note: Recovery GUI can be used to recover from an incorrect
      firmware flash.

B. Through OpenWrt Dashboard:

    If your router comes with OpenWrt preinstalled
	(modified by the seller), you can easily upgrade
	by going to the dashboard (192.168.1.1) and then
	navigate to System -> Backup/Flash firmware,
	then flash the firmware

MAC Addresses were found in Factory partition:

offset 0x4 F8:5E:3C:xx:xx:aa --> Router Label -2
offset 0xa F8:5E:3C:xx:xx:bb --> Router Label -1
offset 0x24 F8:5E:3C:xx:xx:cc --> Router Label +1
offset 0x2a F8:5E:3C:xx:xx:yy --> printed on Router Label

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
(cherry picked from commit 479f1403f2)
Link: https://github.com/openwrt/openwrt/pull/21464
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 21:28:46 +01:00
Jörg Seitz
5067807ba8 mediatek: extract DTS include for zbt z8103ax
- Use .dtsi for old z8103ax featuring a 64M Nand
- Prepare .dtsi for model C of z8103ax featuring a 128M Nand

This .dtsi is supposed to match boards labeled as hardware
revision Z8103AX_V01. Model variant D of zbt-z8103ax appears
to use very same board.

DTS include does also

- set wifi mac addresses in &wifi section
- set eth mac addresses in &eth section
- set LAN switch mac addresses in &switch section

All of the above allows to get rid of 11_fix_wifi_mac script

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
(cherry picked from commit b21b019af4)
Link: https://github.com/openwrt/openwrt/pull/21464
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 21:28:31 +01:00
Val Kulkov
f138ad9112 wifi-scripts: fix wifi failure on specifying value of DAE client
The code to be replaced is a glorious no-op. A default value for
config.radius_das_client does not need to be assigned. This parameter
already has non-empty value: see the enclosing 'if' block.

As a result, the value of config.radius_das_client never gets modified
to contain both dae_client and dae_secret. This breaks hostapd.add_iface()
that expects config.radius_das_client to contain both dae_client and
dae_secret separated by a whitespace.

Fixes: #21519
Signed-off-by: Val Kulkov <val.kulkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21522
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c7f585bfc3)
2026-01-15 21:11:02 +01:00
John Audia
e4264e0a22 kernel: bump 6.12 to 6.12.65
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.65

Manually rebased:
  generic/hack-6.12/904-debloat_dma_buf.patch
  econet/patches-6.12/010-v6.16-MAINTAINERS-Add-entry-for-newly-added-EcoNet-platfor.patch

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 226981d49c)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
John Audia
31b1c6541e kernel: bump 6.12 to 6.12.64
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.64

Manually rebased:
  bcm27xx/patches-6.12/950-0019-BCM2708-Add-core-Device-Tree-support.patch
  bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch
  bcm27xx/patches-6.12/950-0875-PCI-brcmstb-Add-bcm2712-support.patch
  ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch

Removed upstreamed:
  generic-backport/403-v6.19-mtd-mtdpart-ignore-error-ENOENT-from-parsers-on-subp.patch[1]
  bcm27xx/patches-6.12/950-0873-PCI-brcmstb-Reuse-config-structure.patch[2]
  bcm27xx/patches-6.12/950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch[3]
  bcm27xx/patches-6.12/950-0951-media-i2c-imx219-Restore-the-1920x1080-to-using-a-1-.patch[4]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=846ceb1a94460f7331e879c02ff2dd505435b51b
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=8d185636a6299ff9d2e9eec3a4a25026c13d2351
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=38aa6ca6285ff76a7570e5b9acd1151f5cea783a
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=620f9d7bcf771b532bce67ffecf2d97759a4747f

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Co-Authored-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21431
[Fixed: 950-0019-BCM2708-Add-core-Device-Tree-support.patch]
[remove 950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch]
(cherry picked from commit ba6b07a4ab)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
Hauke Mehrtens
6656ce2f47 bcm27xx: refresh kernel patches
The patch 950-0019-BCM2708-Add-core-Device-Tree-support.patch creates a
symbolic link. It looks like quilt does not support this and never
refreshed it.

I removed the symbolic link, refreshed the patch and then added it
back again.

Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 39700aeaa1)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
John Audia
c8eacec725 mac80211: fix build for 6.12.64 bump
Disable the backport shim on 6.12.64 and newer where the function
is provided by the kernel.

References:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/hrtimer.h?h=v6.12.64&id=12493e7e888d266453d1c3898dc160178749afb3
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/hrtimer.h?h=v6.12.64&id=d579cc549298a02ba90b7a6d20a2ba8e160f3f31

Co-Authored-by: Pascal Ernster <git@hardfalcon.net>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 5b887135ba)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
Álvaro Fernández Rojas
88f97a9649 netifd: use stable IAID for DHCPv4
Commit 9151c7015e introduced support for the global DHCP DUID to
generate a RFC4361-style client identifier.
However, the IAID introduced in those changes is based on ifindex, which
is subject to changes and causes issues on environments requiring a stable
IAID.

This commit switches the IAID to a stable one based on MD5.

(cherry picked from commit e1c125c167)
Fixes: 9151c7015e ("netifd: use the global DHCP DUID for DHCPv4")
Link: https://github.com/openwrt/openwrt/pull/21489
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-15 11:06:32 +01:00
Álvaro Fernández Rojas
b5d0946351 base-files: introduce a function to generate IAID
Add new function "network_generate_iface_iaid()" to generate a stable IAID
from an interface name.

(cherry picked from commit e1f2b666ff)
Link: https://github.com/openwrt/openwrt/pull/21489
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-15 11:06:32 +01:00
Hauke Mehrtens
073a8d07e9 libiwinfo: update to Git HEAD (2026-01-14)
f5dd57a84cc3 nl80211: fix 5Ghz frequency calculations

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f6429413d9)
2026-01-15 01:31:18 +01:00
Pawel Dembicki
7f6d739fd7 mpc85xx: fix failsafe iface selection for mpc85xx boards
Some mpc85xx boards still boot with failsafe configured on a non-LAN
interface. Align the preinit interface with the first DSA port or the
interface that LAN is connected to.

This makes failsafe reachable on devices where the default selection does
not map to the primary LAN port.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21516
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit a73db6d0a0)
2026-01-15 01:31:17 +01:00
Pawel Dembicki
85a4358432 mpc85xx: p2020: add support for WatchGuard XTM330 (NC5AE7)
Hardware specifications:
  - CPU: Freescale/NXP P2020, dual-core PowerPC @ 1 GHz
  - RAM: 1 GB DDR3
  - Flash: 2 MB NOR, 512 MB NAND
  - Networking: 7x Gigabit Ethernet ports (via two Marvell 88E6171
    switches,  each attached to a different MAC)
  - USB: 2x USB 2.0 ports (front panel)
  - mini-PCIe slot
  - RTC: Ricoh RS5C372A
  - 4 buttons (via external MCU)
  - 3 LEDs (via external MCU)
  - LCD display (via external MCU)

Installation procedure:

1. Obtain the original MAC address table from the stock bootlog, for
   example:

     setting device eth0 to 00:90:7f:00:00:01
     setting device eth1 to 00:90:7f:00:00:02
     setting device eth2 to 00:90:7f:00:00:03
     setting device eth3 to 00:90:7f:00:00:04
     setting device eth4 to 00:90:7f:00:00:05
     setting device eth5 to 00:90:7f:00:00:06
     setting device eth6 to 00:90:7f:00:00:07

2. Open the case and move jumper JP1 from 2-3 to 1-2 to enter FAILSAFE
   mode.
3. Power on the device and interrupt the boot process to access the U-Boot
   shell.
4. Program the MAC base address into the EEPROM (text after '#' is a
   comment):

     mac ports 3
     mac 2 00:90:7f:00:00:01   # first MAC address from bootlog
     mac save

5. Reset the device and enter the U-Boot console again.
6. Connect a TFTP server to port 6 and boot the initramfs image:

     setenv ipaddr 192.168.1.3
     setenv serverip 192.168.1.2
     setenv loadaddr 1000000
     tftpboot $loadaddr openwrt-mpc85xx-p2020-watchguard_xtm330-initramfs-kernel.bin
     bootm $loadaddr

7. (Optional) Backup all MTD partitions if you want the ability to restore
   stock firmware.
8. Perform a normal sysupgrade from the initramfs environment.
9. Power off the device and move jumper JP1 back to 2-3.
10. The device will now boot OpenWrt.

Known issues:
  - LCD, buttons and LEDs are controlled by an external MCU; the protocol is
    currently unknown.
  - The internal connection between the two Marvell switches is unused by
    OpenWrt.
  - The stock firmware uses an empty U-Boot environment; saving variables
    modifies the environment and prevents a normal boot. FAILSAFE U-Boot
    remains functional.
  - WatchGuard configuration is encrypted; DSA MAC addresses are stored in
    this configuration.
  - Failsafe Ethernet works on port1.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21020
(cherry picked from commit 6150f9ceab)
Link: https://github.com/openwrt/openwrt/pull/21517
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 01:30:29 +01:00
FUKAUMI Naoki
c9e2d8191b rockchip: add "compat_version": "1.1" for Radxa E52C
This is something I missed in https://github.com/openwrt/openwrt/pull/20608

Fixes: 1f1db75432 ("rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T")
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/21533
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 43039157ba)
2026-01-14 11:21:15 +01:00
Carl-Daniel Hailfinger
d01aa41d40 realtek: ethernet: avoid using unitialized memory
The mac_addr variable was not zero-initialized, causing weird side effects
when the memory contents were a valid MAC address.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Link: https://github.com/openwrt/openwrt/pull/21504
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 19b8d391a9)
2026-01-13 00:23:38 +01:00
Til Kaiser
4542656411 kernel: modules: add kmod-pmbus-sensors package
Introduce the kmod-pmbus-sensors package to provide the
generic PMBus hwmon driver (CONFIG_SENSORS_PMBUS).

This enables support for a wide range of PMBus-based devices
including ADP4000, BMR310, BMR480, MAX20796, TPS544B25, and others.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/21444
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 9653fd423b)
2026-01-13 00:23:38 +01:00
Anari Jalakas
33ef80f2c6 readline: add $(FPIC) to LDFLAGS
Ensure -fPIC is passed during the linking stage to fix LTO build
failures (relocation errors) on MIPS and other architectures.

Fixes: #20436
Signed-off-by: Anari Jalakas <anari.jalakas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21455
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 4ff0f496a4)
2026-01-13 00:23:38 +01:00
Jakub Vaněk
b413363b47 mediatek: fix PHY autodetection on Cudy WR3000H
Newer Cudy WR3000H units have a Motorcomm YT8821 PHY instead of a
Realtek PHY on the WAN port. Before this commit, the Motorcomm PHY
could not be autodetected by the kernel -- the PHY would show up as
just a generic clause 45 PHY and the proper driver would not be loaded.

The cause of the detection failure likely was that the YT8821 PHY was
held in reset during PHY detection. To fix this, move the reset GPIO
definition to the MDIO bus level. This reset line is deasserted before
the autodetection process, see also [1]. With this change, both Realtek
and Motorcomm PHYs can be supported with a single device tree.

[1]: https://lore.kernel.org/all/20251119134750.394655-1-horatiu.vultur@microchip.com/

Signed-off-by: Jakub Vaněk <linuxtardis@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 02f0efd60b)
2026-01-13 00:19:55 +01:00
Andrew MacIntyre
7dbacdaa80 mediatek: add Motorcomm PHY driver to Cudy WR3000H
Recent Cudy WR3000H v1 units have a Motorcomm YT8821 2.5G PHY for
the WAN interface instead of the RTL8221B PHY used in earlier units,
so add kmod-phy-motorcomm to be able to use it.

Signed-off-by: Andrew MacIntyre <andymac@pcug.org.au>
[linuxtardis@gmail.com: slightly reworded the commit description]
Signed-off-by: Jakub Vaněk <linuxtardis@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit dbafbab876)
2026-01-13 00:19:54 +01:00
Andrew MacIntyre
8d407de491 kernel: add kmod-phy-motorcomm
The Motorcomm YT8821 2.5G PHY is being used in some devices as an
alternative to devices like the RTL8221B.  Package it as a kmod
so it can be used as a device package rather than requiring changes
to the target kernel config.

Signed-off-by: Andrew MacIntyre <andymac@pcug.org.au>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 96a1337374)
2026-01-13 00:19:52 +01:00
Rany Hany
31daacadd4 wifi-scripts: move no_probe_resp_if_max_sta to wifi-iface
It is a BSS-level option and not radio-level. As such,
move it to wifi-iface and ap.uc.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21412
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 9b1b5a6aec)
2026-01-11 20:22:36 +01:00
Eric Fahlgren
2c7bce7202 base-files: uci-defaults: migrate time zonename on upgrade
Timezone names no longer allow spaces, so older installations
upgrading to new will have their timezone reset to UTC.

For example, on 24.10:
  $ uci get system.@system[0].zonename
  America/Los Angeles

After upgrade to 25.12:
  $ uci get system.@system[0].zonename
  UTC

Add a migration script to edit zonename on first boot.

Fixes: https://github.com/openwrt/luci/commit/d9a087e4
Link: https://github.com/openwrt/luci/issues/8203
Link: https://forum.openwrt.org/t/openwrt-25-12-0-rc1-release-candidate/244364/98
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 54c7ad8d8a)
2026-01-11 19:13:32 +01:00
Leo Barsky
09bdb71acc econet: refresh patches 6.12
Manually rebased:
econet/patches-6.12/901-nand-enable-en75-bbt.patch

Fixes: 5230157a16 ("kernel: QCOM SPI NAND: backport multiple fixes")
Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21500
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit cffc2a9102)
2026-01-11 19:10:38 +01:00
Rany Hany
49f9248ec9 wifi-scripts: ucode: fix RRM defaults
They are being default enabled unconditionally when they should
depend on 802.11k. 802.11k should not be enabled by default
either as it can cause issues with certain older drivers and
is useless without a userspace program like usteer or DAWN.

If users want to enable 802.11k they will enable it when they
set such programs up.

Another inconsistency with rnr was dealt with so that it is not
default enabled. This is also not done with old wifi-scripts
and is generally unexpected and surprising behavior.

Moreoever, this introduces an inconsistency between old shell
wifi-scripts and ucode version. Old wifi-scripts does not do this.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21425
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ee60b65643)
2026-01-11 17:28:40 +01:00
Thomas Perale
51fab879a7 ppp: update deprecated cpe
The CPE 'samba:ppp' added in OpenWrt commit [1], has been deprecated in
favour of 'point-to-point_protocol_project:point-to-point_protocol'
(see [2]).

[1] c61a239514 add PKG_CPE_ID ids to package and tools
[2] https://nvd.nist.gov/products/cpe/detail/1224B76D-6BB3-4088-9F42-23AC04A764F2

Signed-off-by: Thomas Perale <thomas.perale@mind.be>
Link: https://github.com/openwrt/openwrt/pull/21441
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit dd519f6c05)
2026-01-11 16:48:41 +01:00
Tianling Shen
f9e60e980c rockchip: fix kernel tag for backported patches
These patches were actually merged in kernel 6.19 instead of 6.18,
fix them to avoid confusing when moving to new kernel version.

While at it, refresh the RK3528 PCIE L1ss patch since it was
accepted in 6.19 as well.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21419
(cherry picked from commit c79fa27cbf)
Link: https://github.com/openwrt/openwrt/pull/21448
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-11 13:13:21 +01:00
Robert Marko
1bff8d0210 linux: crypto: fix dependencies for curve25519 and poly1305
Currently, kmod-crypto-kpp is only implied for curve25519 and thus it
can get unselected and then building will fail due to missing kpp.ko.

Same issue happens with kmod-crypto-hash for poly1305.

So, lets drop the whole implies logic and make sure to always select
them as dependencies.

Fixes: #21386
Link: https://github.com/openwrt/openwrt/pull/21483
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 93665d0aa3)
2026-01-11 11:12:04 +01:00
JINLIANG GU
46e4aa3283 netifd: dhcp: suppress udhcpc default vendor class if specified in sendopts
When DHCP Option 60 is specified via sendopts (hex, decimal, or named
formats), udhcpc sends its default "udhcp <version>" string alongside
the custom value, which causes authentication failures with some ISPs.

This fix detects Option 60 in sendopts and automatically passes -V ""
to udhcpc to suppress the default version string while allowing
multiple user-defined vendor classes.

Supported formats:
- Hexadecimal: 0x3c
- Decimal: 60
- Named: vendor

(cherry picked from commit 89d982d723)
Fixes: #21242
Signed-off-by: JINLIANG GU <ihipop@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21450
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-10 20:38:54 +01:00
Robert Marko
858bde06b5 microchipsw: lan969x: add Novarq Tactical 1000
Novarq Tactical 1000 is a LAN9696 based switch.

Specifications:
* CPU: Microchip LAN9696 switch SoC
* DRAM: 2GB DDR4
* Storage:
	* 32MB QSPI NOR
	* 16GB eMMC
* Networking:
	* 24 x 10/100/1000 RJ45 via LAN8804 Quad PHY-s over QSGMII
	* 4 x 100/1000/2500/5000/10000 SFP+ ports
	* 1 x 10/100/1000 management RJ45 via LAN8840 PHY over RGMII (U-Boot too)
* USB: 1 x USB2.0 Type-A
* Management via USB-C (MCP2200):
	* UART @ 115200 baud (Default), 921600 possible
	* GPIO-s for bootstrap and reset
* LED-s:
	* 2 per networking port (Green and Yellow)
	* Green status LED
* Soft reset GPIO
* Power: 12V DC barrel jack
* External PoE:
	* Option for PoE add-on
* Temperature Sensors:
	* TMP1075 onboard
	* CPU temperature
* Microchip MCP79402 RTC with battery back-up
* Microchip ATECC608C secure peripheral
* CPU heatsink with PWM fan
* Onboard header for case fan

Installation instructions:

1. Connect to UART via the USB-C port
2. Connect the management port
3. Boot and interrupt U-Boot
4. TFTP the OpenWrt initramfs image and boot it
5. SCP the OpenWrt eMMC GPT image to a running OpenWrt initramfs to /tmp
openwrt-microchipsw-lan969x-novarq_tactical-1000-squashfs-emmc-gpt.img.gz

And decompress it via:
gzip -d /tmp/openwrt-microchipsw-lan969x-novarq_tactical-1000-squashfs-emmc-gpt.img.gz

6. Wipe eMMC with:
dd if=/dev/zero of=/dev/mmcblk0 bs=1M

7. Flash OpenWrt eMMC image with:
dd if=/tmp/openwrt-microchipsw-lan969x-novarq_tactical-1000-squashfs-emmc-gpt.img
of=/dev/mmcblk0

After a restart OpenWrt will boot, and then regular sysupgrade can be used
for upgrades.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 29b3d929a6)
2026-01-09 18:55:19 +01:00
Robert Marko
122fcb21da microchipsw: use upstreamed patches
Replace some of the pending patches with the upstreamed versions and mark
them accordingly.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 7b7a559976)
2026-01-09 18:55:19 +01:00
Robert Marko
1d474646aa boot: arm-trusted-firmware-microchipsw: update to latest
Update microchipsw TF-A to the latest bugfix release that fixes
SHA checksum validation if large files are uploaded via the monitor mode.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 6e0379deb9)
2026-01-09 18:55:19 +01:00
Robert Marko
7d9602e527 microchipsw: use latest DTS
Use the latest v3 that is sent upstream, it now uses a DTS header for clock
indices.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 6944f1c6a0)
2026-01-09 18:55:19 +01:00
Shiji Yang
d925dd4887 tools/squashfs4: fix rare data corruption issue
There is a chance that the squashfs4 tool may create a broken image
under certain conditions. Backport the fix from upstream to address
this issue.

Report: https://forum.openwrt.org/t/bug-squashfs4-tools-4-7-4-create-corrupted-image/244894
Fixes: 64432358e0 ("tools/squashfs4: update to 4.7.3")
Reported-by: Oleg S <remittor@gmail.com>
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21458
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d93429888c)
2026-01-09 17:09:31 +01:00
Robert Marko
99a46b745c ipq-wifi: rename BDF for EAP623-Outdoor HD v1
BDF for EAP623-Outdoor HD v1 was renamed in the repo, but ipq-wifi
was not updated to reflect that, so do it now to fix broken wifi.

Fixes: #21432
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0ff1553bd7)
2026-01-08 11:18:58 +01:00
Hauke Mehrtens
7082aa3b49 OpenWrt v25.12.0-rc2: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 23:56:34 +01:00
Hauke Mehrtens
4dd2e6ec5b OpenWrt v25.12.0-rc2: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 23:56:31 +01:00
George Sapkin
d76c64ad00 build: restore opkg-related provides logic
Re-add opkg provides logic to CONTROL when USE_APK is not set and remove
virtual provider prefix.

Fixes: cefbf11 ("build: refactor provides logic")
Fixes: https://github.com/openwrt/openwrt/issues/21372
Fixes: https://github.com/openwrt/openwrt/issues/21382
Fixes: https://github.com/openwrt/openwrt/issues/21402
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21409
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 838a9ff1ca)
2026-01-05 23:48:50 +01:00
Hannu Nyman
987214c9f8 mediatek: remove erroneous pipe action from BE7200 recipe
Remove the errorneous pipe action from the BE7200 device package list.

It causes visible errors into config:

 perus@ub2510:/OpenWrt/aarch64$ make defconfig
 ...
 tmp/.config-target.in:55023:warning: ignoring unsupported character '|'
 tmp/.config-target.in:191877:warning: ignoring unsupported character '|'
 tmp/.config-target.in:191878:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285812:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285815:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285819:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285820:warning: ignoring unsupported character '|'
 #
 # configuration written to .config
 #

 File tmp/.config-target.in:

  55020         select DEFAULT_urandom-seed
  55021         select DEFAULT_urngd
  55022         select DEFAULT_wpad-basic-mbedtls
  55023         select DEFAULT_|
  55024         help
  55025           Build firmware images for Routerich BE7200

Fixes: ff5e66a920 ("mediatek: add support for Routerich BE7200")
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/21376
(cherry picked from commit 93e9e67ee9)
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21383
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:53:07 +01:00
Mikhail Zhilkin
d1ff5681b4 mediatek: add support for Routerich BE7200
This PR adds support for Routerich BE7200 router.

Specification
-------------
- SoC       : MediaTek MT7987A Quad-core ARM Cortex-A53 2.0 GHz
- RAM       : 1024 MiB DDR4
- Flash     : SPI-NAND 512 MiB (Giga Device)
- WLAN      : MediaTek MT7992E, WiFi 7
  - 2.4 GHz : b/g/n/ax, MIMO 4x4
  - 5 GHz   : a/n/ac/ax, MIMO 4x4
- Ethernet  : 10/100/1000 Mbps x3 (LAN, Airoha AN8855AE)
              10/100/1000/2500 Mbps x1 (WAN, SoC internal phy)
- USB       : 3.0 x1
- Buttons   : Mesh, Reset
- LEDs      : 1x Status (blue), gpio-controlled
              1x WiFi (blue), gpio-controlled
              1x mesh (blue), gpio-controlled
              3x LAN activity (blue), gpio-controlled
              1x WAN activity (blue), gpio-controlled
              1x WAN no-link (red), gpio-controlled
- Power     : 12 VDC, 1.5 A

Installation
------------
1. Update stock firmware via the web interface (don't keep settings).

Update U-Boot (optional)
------------------------
After installing OpenWrt, you may want to install opensource U-Boot.
1. Install kmod-mtd-rw:
   apk update && apk add kmod-mtd-rw
2. Unlock bootloader:
   insmod mtd-rw i_want_a_brick=1
   mtd unlock BL2
   mtd unlock FIP
3. Download and write open-source BL2 and FIP:
   cd /tmp
   wget https://.../openwrt-mediatek-filogic-routerich_be7200-preloader.bin
   wget https://.../openwrt-mediatek-filogic-routerich_be7200-bl31-uboot.fip
   mtd write /tmp/openwrt-mediatek-filogic-routerich_be7200-preloader.bin BL2
   mtd write /tmp/openwrt-mediatek-filogic-routerich_be7200-bl31-uboot.fip FIP
4. Reboot the router.

Return to stock
---------------
1. Update OpenWrt wirh the vendor's firmware (don't keep settings).

Recovery (original U-Boot)
-----------------------------
1. Press Reset button and power on the router. After ~10 sec release
   the button;
2. Upload and flash squashfs-sysupgrade.itb image via the web interface.

Recovery (open-source U-Boot)
-----------------------------
1. Place OpenWrt
   'openwrt-mediatek-filogic-routerich_be7200-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

Recovery (full disaster)
------------------------
Use UART and mtk_uartboot tool.
Link: https://github.com/981213/mtk_uartboot

USB power control
-----------------
Disable: echo disabled > /sys/devices/platform/usb-power/state
Enable: echo enabled > /sys/devices/platform/usb-power/state

UART
----
UART pins are silkscreened on the PCB. Don't connect Vcc.
Serial connection parameters: 115200, 8n1, 3.3V

MAC addresses
-------------
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| WAN     | 24:0f:5e:xx:xx:30 | label     |
| LAN     | 24:0f:5e:xx:xx:31 | label+1   |
| WLAN 2g | 24:0f:5e:xx:xx:32 | label+2   |
| WLAN 5g | 24:0f:5e:xx:xx:33 | label+3   |
+---------+-------------------+-----------+
The WLAN 2g MAC was found in 'Factory', 0x4

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21235
(cherry picked from commit ff5e66a920)
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21383
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:53:01 +01:00
Mikhail Zhilkin
a21680586c arm-trusted-firmware-mediatek: add mt7987-spim-nand0 build
This commit adds a new non-ubi spim-nand build for mt7987.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21235
(cherry picked from commit 8398a03e29)
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21383
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:52:58 +01:00
Robert Senderek
a1bb2cbb9d mvebu: Add support for WD MyCloud EX2 Ultra
Hardware
--------
Marvell Armada 385 (MV88F6820)
1GB RAM
256MB NAND
1x 1Gbit
2x USB 3.0
2x SATA-III
UART: 115200 8N1 3.3V
RTC
Weltrend MCU WT6703F connected via UART1 for Power LED / PWM Fan / hw reset / WoL

Installation
------------
Connect UART 3.3V adapter to JP2  pins: 1-RX / 2-GND / 5-TX

Use USB2.0 FAT32 pendrive with openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin
 1. stop boot by pressing 1
 2. usb start
 3. fatload usb 0:1  0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin;bootm 0x02000000 -
 4. do backup mtd1 mtd3
 5. use sysupgrade

Or tftp
 1. stop boot by pressing 1
 2. setenv ethact egiga2;setenv serverip 192.168.11.114;setenv ipaddr 192.168.11.113
 3. tftpboot 0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin; bootm 0x02000000 -
 4. do backup mtd1 mtd3
 5. use sysupgrade

or Evgeny Kolesnikov <evgenyz@gmail.com> method from his failed PR 2040

- Using original firmware's network settings obtain SSH access to the device.
- Put *-image-cfs-factory.bin and *-uImage-factory.bin images into device's /tmp directory.
- Write kernel (uImage) image 'flash_eraseall /dev/mtd1 && nandwrite --markbad -p /dev/mtd1 /tmp/*-uImage-factory.bin'.
- Write rootfs (image-cfs) image 'ubiformat /dev/mtd3 -f /tmp/*-image.cfs-factory.bin -y'.
- Reboot the device.

Installation (upgrade):

Use *-sysupgrade.bin in a usual way.
Weltrend MCU control is done via uart1 19200
install coreutils-stty
stty -F /dev/ttyS1 raw speed 19200
stty -F /dev/ttyS1 raw speed 19200

PWM Fan Control
off: 00
echo -n -e '\xfa\x02\x00\x00\x00\x00\xfb' > /dev/ttyS1
slow: 5F
echo -n -e '\xfa\x02\x00\x5f\x00\x00\xfb' > /dev/ttyS1
max: FF
echo -n -e '\xfa\x02\x00\xff\x00\x00\xfb' > /dev/ttyS1

Power LED Control
Blue
echo -n -e '\xfa\x26\x00\x11\x00\x01\xfb' > /dev/ttyS1
Red
echo -n -e '\xfa\x26\x00\x14\x00\x01\xfb' > /dev/ttyS1
Orange
echo -n -e '\xfa\x26\x00\x12\x00\x01\xfb' > /dev/ttyS1

more here: https://github.com/c-MM/mcm-daemon/blob/master/mcm.h

Signed-off-by: Robert Senderek <robert.senderek@10g.pl>
Link: https://github.com/openwrt/openwrt/pull/17779
(cherry picked from commit 96ad29a0f3)
Link: https://github.com/openwrt/openwrt/pull/21364
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:26:25 +01:00
Hauke Mehrtens
a78f0078c4 kernel: QCOM SPI NAND: backport multiple fixes
These patches fix bugs in a patch we backported.

These patch were cherry picked from upstream Linux because it references
a patch we backported in the fixes tag.

The patches were reordered to match the ordering in the upstream Linux kernel.

Fixes: 93173aee96 ("qualcommbe: ipq95xx: Add initial support for new target")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 5230157a16)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:01 +01:00
Hauke Mehrtens
236149c306 kernel: phylink: disable autoneg for interfaces that have no inband
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

The first two patches are providing function needed by the last patch.

Fixes: 813ecda1f3 ("generic: backport phylink patches for PCS/PHY caps OPs")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 69d76e3a14)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:01 +01:00
Hauke Mehrtens
a725b439e9 kernel: RTL8211FVD: restore disabling of PHY-mode EEE
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 48c9e55094 ("kernel: backport upstream Realtek PHY patches")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 2c7241b209)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:01 +01:00
Hauke Mehrtens
fafe124d8e kernel: mv88e6xxx: backport fixes
These patches fix bugs in a patch we backported.

These patch were cherry picked from upstream Linux because it references
a patch we backported in the fixes tag.

Fixes: c990f6e156 ("linux: generic: net: dsa: mv88e6xxx LED support")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 9c4b7fbaad)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
f575392914 kernel: reserved_mem: add missing IORESOURCE_MEM flag on resources
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 9d3009f426 ("airoha: major backport of Airoha Ethernet driver feature support")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit b3cc77eead)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
22d30efdc8 kernel: as21xxx: backport patch improve PHY HW reset
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

The function phy_id_compare_vendor() is needed by the fix.
Refresh 782-05-v6.16-net-phy-Add-support-for-Aeonsemi-AS21xxx-PHYs.patch with the upstream code.

Fixes: 08a616b216 ("generic: backport support for Aeonsemi AS21xxx PHY")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit b3318fe819)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
15eb5f05ef kernel: pcs-mtk-lynxi: backport fix for in-band status capabilities
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 813ecda1f3 ("generic: backport phylink patches for PCS/PHY caps OPs")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 7390e63374)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
301515ab7d kernel: PHY: backport led fixes commit
This patch fixes a bug in some patches we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 63b45a10c0)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
952ec239af kernel: r8169: backport upstream fix
This fixes a bug introduced in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 91ce7f606a ("generic: backport upstream v6.16 r8169 patches")
Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 6ac5e28902)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:23:00 +01:00
Hauke Mehrtens
946541c8cb kernel: move patches to backported
These formally pending patches were merged into upstream Linux some time
ago. Move them to the backports folder and add the kernel version they
were added to the file name.

Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 3c821c19a8)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:22:59 +01:00
Hauke Mehrtens
f5f4071479 kernel: refresh upstreamed patches
Replace pending patches which are already integrated in upstream Linux
with their upstream versions.

These patches were exported with:
git format-patch -1 -k

Link: https://github.com/openwrt/openwrt/pull/21366
(cherry picked from commit 7130053695)
Link: https://github.com/openwrt/openwrt/pull/21390
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-05 00:22:59 +01:00
George Moussalem
8f0d7ae61b qualcommax: ipq50xx: add support for Linksys MX6200
Linksys MX6200 is a triband Wi-Fi 6E wireless router.

Speficiations:
* SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
* Memory: Nanya NT5CC256M16ER-EK (512 MiB DDR3-933)
* Serial Port: 3v3 TTL 115200n8
* Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
	 QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
	 QCN6122 (2x2:2 6 Ghz 802.11an/ac/ax)
* Ethernet: IPQ5018 integrated virtual switch connected to:
	    - LAN Port: Internal IPQ5018 GE PHY
	    - WAN Port: Maxlinear Ethernet GPY115C PHY
* Flash: Macronix MX35UF2GE4AD (256 MiB)
* LEDs: 1x multi-color PWM LED
* Buttons: 1x WPS (GPIO 27 Active Low)
           1x Reset (GPIO 28 Acive Low)
* FCC ID: 2AYRA-08436

Flash instructions:
************************************************************************
NOTE: serial access is required! Although the web UI allows you to
install the Openwrt image, secure boot is enabled which will prevent
booting an unsigned image. The boot sequence must be adjusted in U-boot
to allow booting unsigned images.
************************************************************************

1. On OEM firmware, login to the web UI (typically @ http://192.168.1.1)
and click 'CA' in the bottom right corner.
Then click -> Connectivity -> Manual Upgrade.
Alternatively, browse to
http://<router IP>/fwupdate.html.
Upload openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi.
Continue with step 5.
2. Installation on alternate partition using serial connection from OEM
firmware (default login: root, password: admin):
flash_erase /dev/mtd19 0 0
nandwrite -p /dev/mtd19 openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi
reboot
Continue with step 5.
3. Installation using serial connection from initramfs
setup tftp server listening on IP in 192.168.1.0/24 (other than the
router IP 192.168.1.1). In U-boot, load the initramfs image to memory:
tftp $loadaddr <your IP>:openwrt-qualcommax-ipq50xx-linksys_mx6200-initramfs-uImage.itb
boot the image using command:
bootm $loadaddr
when fully booted, scp the sysupgrade image to your router IP (default:
192.168.1.1):
scp -O <path>/openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-sysypgrade.bin root@192.168.1.1:/tmp/
use sysupgrade to flash the image to nand:
sysupgrade -n -v /tmp/openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-sysupgrade.bin
Continue with step 5.
4. Optionally install on alternate partition. From Openwrt:
mtd -r -e rootfs_1 -n write openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi rootfs_1
Continue with step 5.
5. Setup U-boot for ability to dual boot signed (stock) and non-signed
(Openwrt) images with auto-detection.
From U-boot, run (be aware: copy line by line):
setenv setnandbootargs 'setenv bootargs init=/sbin/init ubi.mtd=rootfs rootfstype=squashfs rootwait'
setenv nandinitcmd 'setenv mtdids nand0=nand0; run setrootfscmd; ubi part rootfs 2048'
setenv setrootfscmd 'if test $boot_part = 1; then setenv mtdparts mtdparts=nand0:0x${imgsize}@0x${prikern}(rootfs); else setenv mtdparts mtdparts=nand0:0x${imgsize}@0x${altkern}(rootfs); fi'
setenv readhdr1cmd 'ubi read $loadaddr kernel 0x40; setexpr IMGOFF $loadaddr + 0x10; setexpr CODEOFF $loadaddr + 0x14; setexpr SIGOFF $loadaddr + 0x1c; setexpr CERTOFF $loadaddr + 0x24'
setenv readhdr2cmd 'setexpr.l HDR *$loadaddr; setexpr.l IMGSZ *$IMGOFF; setexpr.l CODESZ *$CODEOFF; setexpr.l SIGSZ *$SIGOFF; setexpr.l CERTSZ *$CERTOFF; setexpr TSIZE $CODESZ + $SIGSZ; setexpr TSIZE $TSIZE + $CERTSZ'
setenv testmbncmd 'if test $HDR -ne edfe0dd0 -a $IMGSZ -eq $TSIZE; then bootipq; else ubi read $loadaddr kernel $kernsize; run setnandbootargs; bootm $loadaddr; fi'
setenv bootcmd2 'if test $auto_recovery = no; then bootipq; else run nandinitcmd; run readhdr1cmd; run readhdr2cmd; run testmbncmd; fi'
setenv bootcmd 'run bootcmd2'
saveenv
6. Back to the OEM firmware.
Download firmware from OEM website:
MX6200: https://support.linksys.com/kb/article/408-en/
From serial/SSH, in Openwrt, flash OEM firmware to alternate partition:
mtd -r -e rootfs_1 -n write FW_MX6200_1.0.11.216041_prod.signed.img rootfs_1

Switching active partition:
1. From U-boot, executive the following to switch to partition 1:
setenv boot_part 1
for partition 2:
setenv boot_part 2
2. From Openwrt:
fw_printenv boot_part
In case it's 1:
fw_setenv boot_part 2
. /lib/upgrade/platform.sh
linksys_bootconfig_set_primaryboot "0:bootconfig" 1
linksys_bootconfig_set_primaryboot "0:bootconfig1" 1
In case it's 2:
fw_setenv boot_part 1
. /lib/upgrade/platform.sh
linksys_bootconfig_set_primaryboot "0:bootconfig" 0
linksys_bootconfig_set_primaryboot "0:bootconfig1" 0
and
reboot

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Link: https://github.com/openwrt/openwrt/pull/21273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-04 19:07:39 +01:00
George Moussalem
c936a98ed3 qualcommax: ipq50xx: upgrade SMEM dualboot Linksys devices
Add support for upgrades on dual firmware Linksys devices with the
partition table stored in SMEM and that store both the kernel and rootfs
in a single partition. Switching the active boot partition requires
updating the partition info table in SMEM in addition to setting
the active boot partition in a U-boot variable as U-boot will keep them
in sync upon reboot if they're not.

U-boot always sets the name of the active partition to rootfs and that
of the inactive partition to rootfs_1 in SMEM. when Linux loads the
partition table from SMEM it will load the right partition based on the
offset set in the SMEM partition table. For upgrades, flashing to the
alternate partition will always be to rootfs_1, while flashing the
current partition will be on rootfs.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Link: https://github.com/openwrt/openwrt/pull/21273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-04 19:07:39 +01:00
George Moussalem
46e8c1b502 qualcommax: ipq50xx: functions for bootconfig partition
The BOOTCONFIG partition is used by Qualcomm's boot chain to store
metadata about the device's startup configuration. It contains info such
as versioning, configuration flags, primary boot partition, and more.

Newer devices with dual boot partitions not only store the active boot
partition in a U-boot variable but also in partition info in the
BOOTCONFIG partition. As such, add library functions to set and toggle
the active boot partition.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Link: https://github.com/openwrt/openwrt/pull/21273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-04 19:07:39 +01:00
George Moussalem
898b1668c0 qualcommax: ipq50xx: move bootargs to Linksys board files
Move setting kernel bootargs from the base template down to the
respective Linksys board files. This allows for having devices which
require different bootargs use the base template device tree file.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Link: https://github.com/openwrt/openwrt/pull/21273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-04 19:07:39 +01:00
George Moussalem
facaa3d904 qualcommax: ipq50xx: load Linksys partition tables from SMEM
The partition table on Linksys devices with a Qualcomm AX IPQ SoC is
stored in SMEM. As such, load partition table from SMEM rather than
statically defining them in their respective device trees. This helps
generalize the base template and requires less maintenance.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Link: https://github.com/openwrt/openwrt/pull/21273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-04 19:07:39 +01:00
Eric Fahlgren
66662fae91 packages: ethtool: restore CONFLICTS
Inadvertent removal of 'CONFLICTS' breaks kconfig selection.
Restore it.

Fixes: ded99c2984 ("treewide: add explicit default variant part 2")
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21388
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 8630fa09c7)
2026-01-04 18:43:37 +01:00
Eric Fahlgren
eed0ab3e47 treewide: add explicit default variant part 2
Add 'DEFAULT_VARIANT' to two packages, 'iw' and 'eapol-test',
that were missed in the first pass.  Refactor 'iw' and 'ethtool'
package definitions to be consistent with the pattern used in most
other packages.

Fixes: https://github.com/openwrt/openwrt/commit/f4fdb996
Fixes: https://github.com/openwrt/openwrt/commit/7a78dc4a
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21380
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ded99c2984)
2026-01-04 18:42:42 +01:00
Linus Walleij
ed2d3b143c ixp4xx: fix bug in Actiontec DTS file
This misassigned ethernet port bug was merged in the upstream
kernel.

Link: https://github.com/openwrt/openwrt/pull/21367
Signed-off-by: Linus Walleij <linusw@kernel.org>
(cherry picked from commit b73fd273b3)
2026-01-04 18:20:34 +01:00
Valent Turkovic
b52a3124db wifi-scripts: wdev.uc: fix mesh mode frequency handling
Mesh mode interface creation fails when the freq parameter is empty or
undefined. Unlike adhoc mode which checks if freq exists before using it,
mesh mode blindly constructs the iw command with freq parameter, resulting
in invalid syntax like:

  iw dev mesh0 mesh join ssid freq  NOHT

This causes the mesh interface to be created without joining the mesh
network, leaving it in a DOWN state with no channel assigned.

Fix by adding freq validation check similar to adhoc mode.

Tested on two routers in parallel as mesh peers:
- Xiaomi AX3000T (MediaTek MT7981)
- OpenWrt One (MediaTek MT7981)
- OpenWrt 6.6.119, 802.11s mesh on 5GHz (Channel 36, HE80)

Signed-off-by: Valent Turkovic <valent@meshpointone.com>
Link: https://github.com/openwrt/openwrt/pull/21373
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7214acd759)
2026-01-04 16:57:20 +01:00
Felix Fietkau
c0b24e2a9f cli: fix typo in error reporting
Return the proper error code for COMMAND_FAILED

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit a10d10edd7)
2026-01-04 16:57:20 +01:00
Felix Fietkau
ec16f2532d unetmsg: fix variable shadowing bug in network_rx_cleanup_state()
The for-in loop variable 'name' was shadowing the function parameter,
causing remote subscription cleanup to fail when hosts disconnect.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit e782341848)
2026-01-02 21:30:01 +01:00
Fil Dunsky
8004708f2d mediatek: add ubootmod layout for Cudy WBR3000UAX v1
This allows us to use the full size of nand,
which extends ubi size from 64Mb to 122.25Mb.

If you are at factory firmware, please refer
to [PR](https://github.com/openwrt/openwrt/pull/21141)
to boot into OpenWrt first.

1. Log in to the device and backup all the partitions,
especially unique `Factory` and `bdata` partitions
from System -> Backup / Flash Firmware -> Save mtdblock contents.
2. Install kmod-mtd-rw to unlock mtd partitions for writing:
```bash
apk update && apk add kmod-mtd-rw && insmod mtd-rw i_want_a_brick=1
```
3. Write new OpenWrt (U-Boot Layout) `BL2` and `FIP`:
```bash
mtd write openwrt-mediatek-filogic-cudy_wbr3000uax-v1-ubootmod-preloader.bin BL2
mtd write openwrt-mediatek-filogic-cudy_wbr3000uax-v1-ubootmod-bl31-uboot.fip FIP
```
4. Set static IP on your PC: `192.168.1.254`, gateway `192.168.1.1`
5. Serve openwrt-mediatek-filogic-cudy_wbr3000uax-v1-ubootmod-initramfs-recovery.itb
using TFTP server.
6. Connect Router LAN with PC LAN.
7. Cut off the power and re-engage, wait for TFTP recovery to complete.
8. After OpenWrt initramfs recovery has booted,
clean `/dev/mtd5` ubi partition to utilize maximum of free space & create ubootenvs:
```bash
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
```
4. Perform sysupgrade.

Tested-by: 4pda users
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21225
(cherry picked from commit 15df98f3b5)
Link: https://github.com/openwrt/openwrt/pull/21342
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 19:45:43 +01:00
Fil Dunsky
2a78fc851c mediatek: add support for Cudy WBR3000UAX v1
Another OEM variation of a Cudy WR3000 series device made for Russian market.

Hardware:
 - SoC: MediaTek MT7981B
 - CPU: 2x 1.3 GHz Cortex-A53
 - Flash: 128 MiB GigaDevice SPI NAND. Flash Model: F50L1G41LB, ID: C801
 - 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, just open the case and unskrew the radiator, TX-RX, RX-TX, GND-GND, VCC do not connect, 115200 8n1
 - Power: 12 VDC, 1.5 A

+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| WAN     | 80:AF:CA:xx:xx:x1 | label+1   |
| LAN     | 80:AF:CA:xx:xx:x0 | label     |
| WLAN 2g | 80:AF:CA:xx:xx:x0 | label     |
| WLAN 5g | 82:AF:CA:xx:xx:x1 | label+1   |
+---------+-------------------+-----------+

Based on a factory layout with only 64mb partition for easier transition from factory to OpenWrt for users if the "intermediate" RSA signed firmware will be provided by Cudy.

**Installation**
The installation must be done via UART & TFTP by disassembling the router. On other occasions Cudy has distributed intermediate firmware and dts to make installation easier, but since this router is OEM special WB order for local RU market there is a possibility they will not provide it.

**Install using UART & TFTP**
1. Connect to UART.
2. Since the factory BL is locked and the boot process can not be stopped, you have to use mtkuartboot, hold reset, engage the power, boot into your payloaded bl2 & fip.
3. Connect to LAN and set your IP to 192.168.1.254.
4. Configure a TFTP server to serve openwrt-mediatek-filogic-cudy_wbr3000uax-v1-initramfs-kernel.bin file.
5. Run these steps in u-boot using the name of your file:

```
setenv bootfile openwrt-mediatek-filogic-cudy_wbr3000uax-v1-initramfs-kernel.bin
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.254
tftpboot
bootm
```

6. Router will boot into OpenWrt initramfs recovery, just open your browser `192.168.1.1` and sysupgrade with the `Keep settings` option turned off.

Tested-by: many 4pda users
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21225
(cherry picked from commit d7d6faf26f)
Link: https://github.com/openwrt/openwrt/pull/21342
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 19:45:43 +01:00
Fil Dunsky
ea9cf72722 arm-trusted-firmware-mediatek: add Cudy DDR3 target
Since there are many similar devices from Cudy (TR3000 / WR3000E / WR3000P / WR3000S / WBR3000UAX) this will allow to create OpenWrt U-Boot layout for all of them using same DDR3 target.

Tested-by: 4pda users
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21225
(cherry picked from commit f4c9ab6591)
Link: https://github.com/openwrt/openwrt/pull/21342
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 19:45:43 +01:00
Jacob Potter
482d5e5c41 realtek: rtl838x: fix lan9 and lan10 on Netgear GS110TUP
The GS110TUP's lan9 port is connected via a QSGMII PHY to SERDES 2, and
therefore should use the SWITCH_PORT_SDS macro instead of SWITCH_PORT. This
was missed in e956adfe because the GS110TUP is not particularly well
documented and the old code was confusing.

lan10 is an SFP and doesn't have an onboard PHY, so also remove its
associated PHY references and update it to match other devices' SFP ports.

Fixes: https://github.com/openwrt/openwrt/issues/21324
Signed-off-by: Jacob Potter <jacob@j4cbo.com>
Link: https://github.com/openwrt/openwrt/pull/21346
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b2c0182f26)
2026-01-02 18:12:56 +01:00
Eric Fahlgren
107ac00404 package: ethtool: specify just one default variant
Inadvertently defining 'DEFAULT_VARIANT' on both ethool and
ethtool-full variants resulted in

    $ make defconfig
    tmp/.config-package.in:121615:error: recursive dependency detected!
    tmp/.config-package.in:121615:  symbol PACKAGE_ethtool-full is selected by PACKAGE_ethtool
    tmp/.config-package.in:121605:  symbol PACKAGE_ethtool depends on PACKAGE_ethtool-full

Fix this by simply undefining 'DEFAULT_VARIANT' on the ethtool-full
variant, which is ugly, but expedient.

Fixes: https://github.com/openwrt/openwrt/commit/f4fdb996
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21363
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 7a78dc4a5d)
2026-01-02 18:11:33 +01:00
Eric Fahlgren
c80bae3c18 treewide: add explicit default variant
Some packages with variants did not specify the default among the
alternatives, so were left without any apk 'provider_priority'
for that package.  This caused the apk solver to select the wrong
variant, silently changing the requested package list.

Notable among these were busybox, procd and the hostapd/wpad suite.
This behavior presented in the imagebuilders when creating the
image as follows, silently replacing packages even when explicitly
requested:

    $ make image PACKAGES=busybox
    ...
    ( 14/148) Installing busybox-selinux (1.37.0-r6)
    ...

We add 'DEFAULT_VARIANT:=1' to the packages that were missing one,
providing apk with sufficient information to choose the correct
package.

See link below for further examples and discussion.

Link: https://github.com/openwrt/openwrt/pull/21288#issuecomment-3704101422
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21358
(cherry picked from commit f4fdb9964a)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:04 +01:00
George Sapkin
038546e2e5 kernel/rtl8812au-ct: provide a virtual kmod
Switch rtl8812au-ct to use the new virtual kmod provides semantic.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit 2c81176f2b)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
f1520c2871 kernel/ath10k: provide a virtual kmod
Switch ath10k and related kmods to use the new virtual kmod provides
semantic and mark ath10k as the default variant.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit 8f4c64b930)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
90dfdc78fe kernel/r8169: provide a virtual kmod
Switch r8169 and related kmods to use the new virtual kmod provides
semantic and mark r8169 as the default variant.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit 01fa50b774)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
832d373272 ca-certificates: provide a virtual package
Switch ca-certs provides to use the new virtual provides semantic that
enables ca-bundle and ca-certificates to be installed side-by-side.

Provide the new format virtual ca-certificates-any in ca-bundle.

Fixes: https://github.com/openwrt/openwrt/issues/21257
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit d75a6bed7a)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
d1b08c2d82 build: provide virtual self in kmods
Add an implicit self-provide to kmods. apk can't handle self provides,
be it versioned or virtual, so opt for a prefix and a suffix instead.
Package name without a prefix/suffix is too generic and might conflict
with other packages, e.g. wireguard. This allows several variants to
provide the same virtual package without adding extra provides to the
default one, e.g. r8169 implicitly provides kmod-r8169-any and is marked
as default, so r8125 can explicitly provide @kmod-r8169-any as well.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit 9b37b7185c)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
40baf2f82c build: add support for virtual provides
Allow defining virtual provides using the PROVIDES field by prefixing
them with @, e.g.:

PROVIDES:=@ca-certs

Virtual provides don't own the provided name and multiple packages with
the same virtual provides can be installed side-by-side. Packages must
still take care not to override each other's files.

Add an implicit self-provide to packages. apk can't handle self
provides, be it versioned or virtual, so opt for a suffix instead. This
allows several variants to provide the same virtual package without
adding extra provides to the default one, e.g. wget implicitly provides
wget-any and is marked as default, so wget-ssl can explicitly provide
@wget-any as well.

Filter out virtual provides when generating metadata.

Filter out virtual provides prefix and self provide where appropriate.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit 5ed650acbf)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
George Sapkin
3abc02c2eb build: refactor provides logic
Refactor provides logic into a helper define and use it for both apk and
control. Document the behavior.

Store preformatted provides in Package/$(1)/PROVIDES similar to defines.

Remove unnecessary logging.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21288
(cherry picked from commit cefbf1184f)
Link: https://github.com/openwrt/openwrt/pull/21355
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-02 18:11:03 +01:00
Daniel Golle
5d017aeeeb mediatek: filogic: asus,rt-ax57m: remove unused pinctrl groups
Remove unused pinctrl groups defined in the device tree, probably as a
result of importing the vendor device tree which is based on the
reference board from MediaTek's SDK.

114b5c2063 ("mediatek: filogic: Add support ASUS RT-AX57M")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 96205c99d01cf7f5e69f03ccdea790d0eb9ddb36)
Signed-off-by: Garrett Mesmer <garrettmesm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21237
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:42:36 +01:00
Garrett Mesmer
fafb36f865 mediatek: filogic: Add support ASUS RT-AX57M
ASUS RT-AX57M, RT-AX54HP V2, RT-AX1800HP V2, RT-AX1800S V2, and RT-AX3000S all use the same firmware and have identical hardware

Hardware
--------
SOC: MediaTek MT7981b
RAM: 256MB DDR3L (Winbond W632GU6NB-09)
FLASH: 128MB SPI-NAND (Winbond W25N01KVZEIR)
WIFI: Mediatek MT7981b + Mediatek MT7976DAN 802.11ax 2.4/5 GHz
ETH: MediaTek MT7531AE Switch
UART: 3V3 115200 8N1 (Pinout silkscreened / Do not connect VCC)

MAC addresses
-------------
LAN	Label MAC (stored in mtd ubi Factory partition at offset 0x4)
WAN	LAN
2.4G	LAN + 2 in first octet
5G	LAN

Installation
-----------------------------------------------------------
Vendor-UI Method
-----------------------------------------------------------
1. Download the OpenWrt initramfs.trx image.

2. Connect the PC via LAN to one of the yellow router ports and wait
   until your PC to get a DHCP lease.

3. Browse to http://192.168.1.1 (or whatever your router IP is configured as)

4. If your router is brand new, finish the setup process and log into
   the Web-UI.

5. Navigate to Administration -> Firmware Upgrade and upload the
   downloaded OpenWrt initramfs.trx image.

6. Wait for OpenWrt to boot. Open the default OpenWrt IP in a web browser and perform a system upgrade using the sysupgrade image as instructed in the top banner.

---------------------------------------------------------------------------
Revert to stock firmware:
1: Install package facinstall -> https://forum.openwrt.org/t/facinstall-package-for-easy-installation-factory-images/177587
2. Install Asus stock trx image via OpenWRT LuCI interface.

Signed-off-by: Garrett Mesmer <garrettmesm@gmail.com>
Co-Authored-By: Oleg S <remittor@gmail.com>
Signed-off-by: Oleg S <remittor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20491
(cherry picked from commit d09e2b1926a6009299eb034928df2c6b6b04dfa8)
Link: https://github.com/openwrt/openwrt/pull/21237
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:39:54 +01:00
Wei-Ting Yang
4c645e84c0 util-linux: update to 2.41.3
Release notes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.3-ReleaseNotes

Also update URL to use HTTPS.

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21276
(cherry picked from commit c1281a501e)
Link: https://github.com/openwrt/openwrt/pull/21357
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:34:58 +01:00
Wei-Ting Yang
a20349be32 tools: util-linux: update to 2.41.3
Release notes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.3-ReleaseNotes

Remove upstreamed:
110-meson-fix-a-bug-in-posixipc_libs-configuration.patch

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21276
(cherry picked from commit 99fd5aa496)
Link: https://github.com/openwrt/openwrt/pull/21357
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:34:58 +01:00
Hauke Mehrtens
787c268cbc libiwinfo: update to Git HEAD (2025-11-29)
2ebef3da84e8 iwinfo: Query hostapd for 'ssid2'

Link: https://github.com/openwrt/openwrt/pull/21347
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 2139360a78)
Link: https://github.com/openwrt/openwrt/pull/21357
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:34:58 +01:00
Liangbin Lian
e04ebcc06b base-files: fix default_postinst clearing luci cache
The path to the LuCI index cache file has changed to
/tmp/luci-indexcache.*.json since OpenWrt 22.03.

Update functions.sh to align with luci.mk.

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21280
(cherry picked from commit e9fd3facd0)
Link: https://github.com/openwrt/openwrt/pull/21357
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:34:58 +01:00
John Audia
8db96adeb1 kernel: bump 6.12 to 6.12.63
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.63

Manually rebased:
  qualcommax/patches-6.12/0113-remoteproc-qcom-Add-secure-PIL-support.patch
  qualcommax/patches-6.12/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch

Removed upstreamed:
  airoha/patches-6.12/029-14-spi-airoha-snfi-en7523-workaround-flash-damaging.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.63&id=7be679104357439ff6eab076975f5f74368acd69

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc

Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21329
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b638d886f0)
Link: https://github.com/openwrt/openwrt/pull/21356
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:32:36 +01:00
John Audia
8b464ef4ce generic: add missing symbol
Set SND_SOC_NAU8325 to no

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21329
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b3d1da9115)
Link: https://github.com/openwrt/openwrt/pull/21356
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-02 14:32:36 +01:00
Eric Fahlgren
0d3e93e7ba mediatek: filogic: fix supported_devices list for gl-mt2500
The SUPPORTED_DEVICES sets for both Maxlinear (v1) and Airoha (v2)
devices were identical, so sysupgrade was unable to detect when an
incorrect image was being installed.  This caused "soft bricking" of
devices when a v1 image was installed on a v2 device, and vice versa.

Fix this by making the supported_devices distinct for each device
version, by renaming the devices with a version-specific name.
This is reflected in the file name and the image metadata.

Fixes: https://github.com/openwrt/openwrt/issues/20566
Fixes: https://github.com/openwrt/asu/issues/1525
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20632
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b71f4665cd)
2025-12-30 23:03:26 +01:00
Andrii Kuiukoff
234b367b10 uboot-mediatek: comfast,cf-wr632ax: fix missing escape sequence
Add missing escape sequence to restore terminal coloring in the OpenWrt U-Boot boot menu.

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21283
[Fix _bootmenu_update_title too]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 3af16b2359)
2025-12-30 23:03:26 +01:00
Hauke Mehrtens
1818f4fbce wifi-scripts: use OWE + country for 6GHz
Wifi on the 6GHz band does not support open networks, configure owe by
default. 6GHz wifi also needs a country code, configure a broken country
code '00' by default to hint the user to change it.

Link: https://github.com/openwrt/openwrt/pull/21313
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 01a87f4bd0)
2025-12-30 14:46:05 +01:00
Leon M. Busch-George
ff713d3d9e wifi-scripts: don't set wpa_pairwise for wpa=0
Without this patch, the

    if (!config.wpa)
	  	config.wpa_pairwise = null;

is overwritten immediately.

Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
Link: https://github.com/openwrt/openwrt/pull/21215
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit bc4e7fd38e)
2025-12-30 10:40:18 +01:00
Álvaro Fernández Rojas
948b1b564d odhcp6c: update to 25.12 Git HEAD (2025-12-29)
699cc61568b6 dhcpv6: omit IA_NA on Request
8774d3c0ec9c dhcpv6: dhcpv6_send: convert whitespaces to tabs
11abe3790431 ra: convert if block to switch
c05b803d38e9 odhcp6c: do cleanup at exit
6aa4e491a869 config: fix potential memory leaks in error paths
235cdc97d73b all: add log helpers
6e3272d609d3 dhcpv6: clarifying comments
04aea4e3f870 dhcpv6: offload FQDN construction to init_dhcpv6
449ce8374275 dhcpv6: migrate dhcpv6_response_is_valid to switch case

5ab3203875...699cc61568

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-29 18:26:52 +01:00
Mikhail Kshevetskiy
d819a05a8e airoha: spi: update airoha-snfi patches and en7523 dts
Changes:
* use upstream patches for airoha-snfi driver
* update in kernel en7523 dts to add spinand support

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/21299
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d9b1c74780)
2025-12-28 12:48:49 +01:00
Qingfang Deng
ffd0e5c9f0 mvebu: enable tickless idle
Switch to NO_HZ_IDLE for energy saving. Also enable Menu cpuidle
governor for tickless systems.

Run-tested: Linksys WRT1900AC v2

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21136
(cherry picked from commit c13f299918)
Link: https://github.com/openwrt/openwrt/pull/21305
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-28 12:46:23 +01:00
Florian Maurer
a9bc5059c2 ath79: cf-ew71-v2: set label-mac-device to eth1
The EW71v2 has the WAN port configured at eth1.
The printed label-mac is configured on this iface in openwrt.

Signed-off-by: Florian Maurer <f.maurer@outlook.de>
(cherry picked from commit 7f3537ee2c)
2025-12-27 18:29:22 +01:00
Nick Hainke
571d716e69 wifi-scripts: fix race in wireless interface creation
When wdev interfaces and hostapd interfaces are mixed, race conditions
can occur. Sometimes all interfaces are started correctly, sometimes only
the wdev interface and some of the hostapd interfaces, and sometimes only
the wdev interface.

Fix this by creating the wdev interfaces first, before processing
wpa_supplicant or hostapd interfaces.

Link: https://github.com/openwrt/openwrt/pull/21303
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 2015a40c38)
2025-12-27 16:28:11 +01:00
Markus Stockhausen
380e5ea1f2 realtek: fix Linksys LGS328C dts memory definition
RTL930x devices have highmem starting address at 0x20000000.
The Linksys LGS328C highmem definition is wrongly shared with
the larger LGS352C RTL931x model and starts at 0x90000000.
Fix it by splitting the definition.

Fixes: 853d73f ("realtek: add support for Linksys LGS328C")

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21262
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 5d7470d4ca)
2025-12-27 14:19:46 +01:00
Nick Hainke
a06553be26 wifi-scripts: fix mcast_rate type (number, not array)
The multicast rate (mcast_rate) is defined as a single numeric value,
not an array. The ucode scripts already expect a single number, and
the OpenWrt documentation specifies this option as an integer [0].

Adjust the wireless schema accordingly. This also fixes the wdev.uc
call path for the iw fallback mesh setup.

[0] - https://openwrt.org/docs/guide-user/network/wifi/basic

Link: https://github.com/openwrt/openwrt/pull/21291
(cherry picked from commit a6eb3d9536)
Link: https://github.com/openwrt/openwrt/pull/21301
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-12-27 12:20:17 +01:00
Nick Hainke
a32c5c69dc wifi-scripts: fix wdev fallback for mesh interfaces
The previous wdev.uc invocation failed for mesh interfaces.
Rewrite it as a loop so the mesh interface is created correctly
when no wpa_supplicant mesh support is installed.

Link: https://github.com/openwrt/openwrt/pull/21291
(cherry picked from commit a18ef412ae)
Link: https://github.com/openwrt/openwrt/pull/21301
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-12-27 12:20:17 +01:00
Dmitry Mostovoy
d23f614451 mediatek: add kmod-usb3 to default package set of WR3000P
Include XHCI USB drivers on the Cudy WR3000P v1 router, the drivers are
required to be able to use the USB port for USD devices.

Closes: https://github.com/openwrt/openwrt/issues/21231
Fixes: 04e9d154f2 ("mediatek: filogic: add support for Cudy WR3000P v1")
Signed-off-by: Dmitry Mostovoy <dmitry.mostovoy@ceifx.com>
Link: https://github.com/openwrt/openwrt/pull/21281
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 9da57e2f82)
2025-12-26 13:57:41 +01:00
Nick French
e7d89ac0ea ath79: Fix syntax error in 10_fix_wifi_mac
This typo makes the script fail with:
-ash: /etc/hotplug.d/ieee80211/10_fix_wifi_mac: line 66: syntax error: unexpected word (expecting ")")

which ultimately prevents the mac address for certain devices wireless cards being set correctly

Signed-off-by: Nick French <nickfrench@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21287
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit cb94962ac4)
2025-12-26 13:48:16 +01:00
Elwin Huang
51aa6d184a wifi-scripts: add missing 802.11be type in hwmodelist
Add EHT* check so that the hwmode will display 802.11be capability correctly.

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21267
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit 95112a4939)
2025-12-26 13:48:15 +01:00
Robert Senderek
400c1c5ea8 qualcommax: ipq50xx: remove cpufreq scaling
ipq5018 do not support freq scaling and therefore stuck on 800Mhz
This patch allows CPU to run with 1.008 Ghz as designed

Signed-off-by: Robert Senderek <robert.senderek@10g.pl>
Link: https://github.com/openwrt/openwrt/pull/21185
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit c1290fa48c)
2025-12-26 12:24:53 +01:00
Nick Hainke
2acfd9f8ab wifi-scripts: ucode: fix wpa_supplicant mesh
Mesh interfaces may not define an encryption setting. This results in
a ucode runtime error when parse_encryption() is called:
  Reference error: left-hand side expression is null
  In parse_encryption(), file /usr/share/ucode/wifi/iface.uc, line 20, byte 32:
    called from function setup_sta (/usr/share/ucode/wifi/supplicant.uc:59:31)
    called from function generate (/usr/share/ucode/wifi/supplicant.uc:243:41)
    called from function setup (./mac80211.sh:254:61)
    called from anonymous function (./mac80211.sh:342:14)
   `    config.auth_type = encryption[0] ?? 'none';`
    Near here ------------------------^

Link: https://github.com/openwrt/openwrt/pull/21293
(cherry picked from commit 00e6c18a93)
Link: https://github.com/openwrt/openwrt/pull/21295
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-12-25 22:39:34 +01:00
Dominic Germain
8bf13dcb36 kernel: add option for USB FunctionFS gadget
Add menuconfig option 'kmod-usb-gadget-fs' for the USB FunctionFS gadget
module

OpenWRT is perfect for USB gadgets that are network-enabled, since it
provides everything needed to easily manage the device. Having support
for the FunctionFS gadget enables the use of any custom USB devices
that does not have a specific module, like Media Transfer Protocol.

Signed-off-by: Dominic Germain <dominic@germain.cc>
Link: https://github.com/openwrt/openwrt/pull/21207
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 22a69dfa4a)
2025-12-25 16:22:49 +01:00
Alexander Patrakov
c8b98eab98 comgt-ncm: fix setting ip[46]table and MTU
The ncm proto handler ignored ip4table, ip6table, and mtu settings.

The fix is based on the existing code in the mbim proto handler.

Fixes: #20216.
Signed-off-by: Alexander Patrakov <patrakov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20217
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit b289edd84b)
2025-12-25 16:11:35 +01:00
George Sapkin
116083dd91 toolchain: fix libgcc ABI for libc
libc depends on knowing libgcc's ABI, so it needs to be evaluated first.
Otherwise libc will depend on an ABI-less libgcc causing the rest of the
toolchain to fail.

Building package index...
ERROR: unable to select packages:
  libgcc (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libgcc1
    required by: world[libgcc]

Before:

libc fused dependencies: libgcc
libgcc fused dependencies:
libatomic fused dependencies: libgcc1

After:

libgcc fused dependencies:
libc fused dependencies: libgcc1
libatomic fused dependencies: libgcc1

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21265
(cherry picked from commit 5e32bfbf4b)
Link: https://github.com/openwrt/openwrt/pull/21253
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-24 19:39:54 +01:00
George Sapkin
eaeae068cc build: fix missing PKG_INFO_DIR
If the first built package has an ABI, PKG_INFO_DIR might not exist, so
ensure it does.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21265
(cherry picked from commit 56bc4a0d89)
Link: https://github.com/openwrt/openwrt/pull/21253
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-24 19:39:54 +01:00
George Sapkin
e0ea3d73d2 build: fix apk packaging and ABI-versioning
The updated logic for the APK dependencies and provides is as follows:

- If ABI version is defined:
  - package is named `package_name-ABI_version`
  - package implicitly provides
    `package_name-ABI_version=package_version`
    this implies that only one version of a package per ABI can be
    installed at the same time
  - additionally provide `package_name` so multiple packages can be
    looked up by its base name
  - for each `provides`, provide `provide-ABI_version=package_version`
    this implies that only one version of a provide can be installed at
    the same time

- else if ABI version is _not_ defined
  - package is named `package_name`
  - package implicitly provides `package_name=package_version`
    this implies that only one version of a package can be installed at
    the same time
  - if `alternatives` is defined
    - for each `provides`, provide `provide`
      this implies that multiple versions of a provide can be installed
      at the same time
  - else if `alternatives` is _not_ defined
    - for each `provides`, provide `provide=package_version`
      this implies that only one version of a provide can be installed
      at the same time

Both cases a package can be looked up by its base name.

ABI version `alternatives`, `conffiles`, `conffiles_static`, `list` and
`rusers` files so multiple versions of the same ABI package can be
installed side by side, and so they don't overwrite each other's
packaging files.

ABI version `EXTRA_DEPENDS` so dependencies can be correctly looked up
using the existing OpenWrt semantics without the ABI specified. This is
needed since ABI-versioned libraries no longer provide
`package_name=package_version`, so that they can be installed side by
side.

Remove duplicate dependencies when `EXTRA_DEPENDS` specifies a versioned
one that is already in `DEPENDS`.

ABI is defined
------------------------------------------------------------------------

`libsqlite3` has `PROVIDES` set to `libfake` and has two different ABI
versions installed. `libfake` is just an example to demonstrate the
mechanics, as the library can already be depended upon using e.g.
`libsqlite3-0=3.51.0-r1`. Note the ABI-versioned lists.

```
root@OpenWrt:/tmp# apk add --allow-untrusted ./libsqlite3-0-3.51.0-r1.apk
(1/1) Installing libsqlite3-0 (3.51.0-r1)
libsqlite3-0-3.51.0-r1.post-install: Executing script...
OK: 22 MiB in 157 packages

root@OpenWrt:/tmp# apk add --allow-untrusted ./libsqlite3-1-4.00.0-r1.apk
(1/1) Installing libsqlite3-1 (4.00.0-r1)
libsqlite3-1-4.00.0-r1.post-install: Executing script...
OK: 23 MiB in 158 packages

root@OpenWrt:/tmp# apk query --fields name,version,contents,provides libsqlite3-0 libsqlite3-1
Name: libsqlite3-0
Version: 3.51.0-r2
Provides: libfake-0=3.51.0-r2 libsqlite3
Contents:
  lib/apk/packages/libsqlite3-0.list
  usr/lib/libsqlite3.so.0
  usr/lib/libsqlite3.so.3.51.0

Name: libsqlite3-1
Version: 4.00.0-r1
Provides: libfake-1=4.00.0-r1 libsqlite3
Contents:
  lib/apk/packages/libsqlite3-1.list
  usr/lib/libsqlite3.so.1
  usr/lib/libsqlite3.so.4.00.0

root@OpenWrt:/tmp# ls -lh /usr/lib/libsqlite3.so.*
lrwxrwxrwx    1 root     root          20 Nov 20 00:23 /usr/lib/libsqlite3.so.0 -> libsqlite3.so.3.51.0
lrwxrwxrwx    1 root     root          20 Nov 20 00:27 /usr/lib/libsqlite3.so.1 -> libsqlite3.so.4.00.0
-rwxr-xr-x    1 root     root        1.0M Nov  6 18:19 /usr/lib/libsqlite3.so.3.51.0
-rwxr-xr-x    1 root     root        1.0M Nov  6 18:19 /usr/lib/libsqlite3.so.4.00.0
```

ABI is not defined
------------------------------------------------------------------------

Both `avahi-dbus-daemon` and `avahi-nodbus-daemon` provide `avahi-daemon`,
but have no ABI specified. This results in `avahi-daemon=0.8-r11` provides
for both packages and only one being able to be installed at the same time:

```
root@OpenWrt:/tmp# apk add --allow-untrusted ./avahi-nodbus-daemon-0.8-r11.apk
(1/4) Installing libavahi-nodbus-support (0.8-r10)
libavahi-nodbus-support-0.8-r10.post-install: Executing script...
(2/4) Installing libdaemon (0.14-r5)
libdaemon-0.14-r5.post-install: Executing script...
(3/4) Installing libexpat (2.7.3-r1)
libexpat-2.7.3-r1.post-install: Executing script...
(4/4) Installing avahi-nodbus-daemon (0.8-r11)
avahi-nodbus-daemon-0.8-r11.post-install: Executing script...
23 MiB in 160 packages

root@OpenWrt:/tmp# apk query --fields provides avahi-nodbus-daemon
Provides: avahi-daemon=0.8-r11

root@OpenWrt:/tmp# apk add --allow-untrusted ./avahi-dbus-daemon-0.8-r11.apk
ERROR: unable to select packages:
  avahi-dbus-daemon-0.8-r11:
    conflicts: avahi-nodbus-daemon-0.8-r11[avahi-daemon=0.8-r11]
    satisfies: world[avahi-dbus-daemon><Q1R111s+ke9Vf+eCxDHX2BZVUK54Q=]
  avahi-nodbus-daemon-0.8-r11:
    conflicts: avahi-dbus-daemon-0.8-r11[avahi-daemon=0.8-r11]
    satisfies: world[avahi-nodbus-daemon><Q1BAu7nLI2MgRabpveLTGO2ksQz7E=]
```

Provides and alternatives
------------------------------------------------------------------------

Both `uclient-fetch` and `wget-nossl` provide `wget` and specify
alternatives, so provides are not versioned and both packages can be
installed at the same time:

```
root@OpenWrt:/tmp# apk query --fields name,version,contents,provides uclient-fetch wget-nossl
Name: uclient-fetch
Version: 2025.10.03~dc909ca7-r1
Provides: wget
Contents:
  bin/uclient-fetch
  lib/apk/packages/uclient-fetch.alternatives
  lib/apk/packages/uclient-fetch.list

Name: wget-nossl
Version: 1.25.0-r1
Provides: gnu-wget wget
Contents:
  lib/apk/packages/wget-nossl.alternatives
  lib/apk/packages/wget-nossl.list
  usr/libexec/wget-nossl

```

Fixes: https://github.com/openwrt/openwrt/issues/20582
Fixes: https://github.com/openwrt/openwrt/issues/20802
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/20819
(cherry picked from commit 18029977f6)
Link: https://github.com/openwrt/openwrt/pull/21253
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-24 19:39:54 +01:00
George Moussalem
2da39423ed qualcommax: ipq50xx: fix reo2host-status interrupt vector
Interrupt vector for reo2host-status is wrongly assigned.
Status interrupts weren't received and a workaround was applied to
mac80211 to periodically poll the reo status ring. Therefore, the
workaround can be removed with the proper hardware interrupt line
assigned.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21272
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-24 13:07:01 +01:00
Robert Marko
a4a2638590 microchipsw: sync with DTS sent upstream
Sync the DTS with the version sent upstream, clock bindings also.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit bce8432bbd)
2025-12-24 11:04:32 +01:00
Radek Dostál
c3cf33f98b ath79: fix build of big images for TP RE355v1, RE450v1 & v2
After merge of https://github.com/openwrt/openwrt/pull/20709 I noticed,
that https://mirror-03.infra.openwrt.org/snapshots/targets/ath79/tiny/
still does not contain the build for RE450.

I analyzed the problem and noticed, that only builds which fits into
original size can be build and if the image is larger, it fails with
the following error: "WARNING: Image file .../openwrt/build_dir/
target-mips_24kc_musl/linux-ath79_tiny/tmp/
openwrt-ath79-tiny-tplink_re450-v1-squashfs-sysupgrade.bin is too big:
  > 7864320".

This error is quite misleading as the image is smaller than 7864320. The
reason for this error is that default tplink-safeloader has hardcoded
factory partition structure and fails to generate any file.

Rather then fixing tplink-safeloader I followed approach from commit
ebd5e5fb53 ("ramips: switched TP-Link RE305 v1 to new partition layout")
and switched away from "tplink-safeloader sysupgrade".

I did not include "IMAGES := sysupgrade.bin", because with tiny target it
is still possible to locally build even factory image.

Fixes commit e768731dc8 ("ath79: switch TP-Link RE355 v1, RE450 v1 and
RE450 v2 to mtd-concat").

Signed-off-by: Radek Dostál <rd@radekdostal.com>
Link: https://github.com/openwrt/openwrt/pull/21158
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bdbb4bdfa0)
2025-12-22 18:51:03 +01:00
Mikhail Kshevetskiy
623e329a52 mediatek: fix pwn fan settings for sinovoip bpi-r3 (v3)
Popular cheap PWM fans for this machine, like the ones coming in
heatsink+fan combos will not work properly at the currently defined
medium speed. Trying different pwm setting using a command

  echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1

I found:

  pwm1 value     fan rotation speed   cpu temperature     notes
  -----------------------------------------------------------------
    0            maximal              31.5 Celsius        too noisy
   40            optimal              35.2 Celsius        no noise hearable
   95            minimal
   above 95      does not rotate      55.5 Celsius
  -----------------------------------------------------------------

Current cooling levels are:

	cooling-levels = <255 96 0>;

Thus only cpu-active-high and cpu-active-low modes are usable.
This patch fixes cpu-active-medium settings for bpi-r3 board.

This patch may not be enough. Users may wants to tweak their thermal_zone0
trip points, thus tuning fan rotation speed depending on cpu temperature.
That can be done on the base of the following example:

  === example =========
  # cpu temperature below 25 Celsius degrees, no rotation
  echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp
  # cpu temperature in [25..32] Celsius degrees, normal rotation speed
  echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp
  # cpu temperature above 50 Celsius degrees, max rotation speed
  echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp
  =====================

Changes v2:
* put patch to a proper directory
* updated patch description
* tested with latest openwrt based on linux-6.6

Changes v3:
* use upstream linux patch
* update patch description

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17130
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 095151b235)
2025-12-22 10:34:23 +01:00
Hauke Mehrtens
02f9e71dd2 OpenWrt v25.12.0-rc1: revert to branch defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-20 00:20:16 +01:00
Hauke Mehrtens
b1a74b1cde OpenWrt v25.12.0-rc1: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-20 00:20:13 +01:00
Álvaro Fernández Rojas
9e9b05130c odhcpd: update to 25.12 Git HEAD (2025-12-18)
0779ee287db5 dhcpv6-ia: reconfigure message length bug fix
d69896b0ac7c all: remove dead code
3f6b3b4b9f8a odhcpd: remove fallback DNS search domain
ff3f72fdd01d router: remove some log spam in send_router_advert()
c1cc541e1065 router: improve send_router_advert()
901851b883da router: Modify relayed RA PIO P flag according to interface policy
179429ba477d router: Modify relayed RA PIO A flags according to interface policy

cb1b8770b7...0779ee287d

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-18 21:25:49 +01:00
Álvaro Fernández Rojas
988902fa9a odhcp6c: update to 25.12 Git HEAD (2025-12-18)
5ab3203875ad dhcpv6: use stable IAID for IA_NA
29922b7fb497 odhcp6c: avoid clearing CLIENT_ID

2582843959...5ab3203875

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-18 18:58:45 +01:00
Álvaro Fernández Rojas
f1984e2e5a odhcpd: update to 25.12 Git HEAD (2025-12-14)
cb1b8770b782 config: add default value for dhcpv6_pd_min_len
20eb94d02dfe config: allow minimum PD len up to 64
7ebd96083971 Revert "router: optimize duplicated PIO comparison"
90ae6fc6e478 statefiles: don't consider no hostname as broken

1ff1328a4f...cb1b8770b7

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-17 23:40:38 +01:00
Álvaro Fernández Rojas
68e2095a8b odhcp6c: update to 25.12 Git HEAD (2025-12-17)
2582843959a7 dhcpv6: fix NA/PD=try when NA/PD aren't provided
db6bec98ead1 odhcp6c: fix "-S" usage
b9ab6b6abc64 odhcp6c: reset res variable on INIT state

5212a1019d...2582843959

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-17 23:37:32 +01:00
Markus Petri
da669004ef vrx518_tc: fix rx_len_adj
Fix rx_len_adj to avoid leaking the ethernet FCS into the actual frame
data in single line mode (the default)

Fixes: https://github.com/openwrt/openwrt/issues/20983
Signed-off-by: Markus Petri <devel@isjunk.org>
Link: https://github.com/openwrt/openwrt/pull/21045
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 487178f8b0)
2025-12-17 22:07:42 +01:00
Janusz Dziedzic
131071cd26 linux-firmware: intel: bump BE200 wifi firmware
Latest backports require newer firmware (bump to 101).
8788f6b3c6

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21194
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7bfe7788b1)
2025-12-17 21:26:17 +01:00
Petr Štetiar
fe635c56ac dropbear: bump to 2025.89 (CVE-2025-14282, CVE-2019-6111)
- Security: Avoid privilege escalation via unix stream forwarding in Dropbear
  server. Other programs on a system may authenticate unix sockets via
  SO_PEERCRED, which would be root user for Dropbear forwarded connections,
  allowing root privilege escalation.
  Reported by Turistu, and thanks for advice on the fix.
  This is tracked as CVE-2025-14282, and affects 2024.84 to 2025.88.

  It is fixed by dropping privileges of the dropbear process after
  authentication. Unix stream sockets are now disallowed when a
  forced command is used, either with authorized_key restrictions or
  "dropbear -c command".

  In previous affected releases running with "dropbear -j" (will also disable
  TCP fowarding) or building with localoptions.h/distrooptions.h
  "#define DROPBEAR_SVR_LOCALSTREAMFWD 0" is a mitigation.

- Security: Include scp fix for CVE-2019-6111. This allowed
  a malicious server to overwrite arbitrary local files.
  The missing fix was reported by Ashish Kunwar.

- Server dropping privileges post-auth is enabled by default. This requires
  setresgid() support, so some platforms such as netbsd or macos will have to
  disable DROPBEAR_SVR_DROP_PRIVS in localoptions.h. Unix stream forwarding is
  not available if DROPBEAR_SVR_DROP_PRIVS is disabled.

  Remote server TCP socket forwarding will now use OS privileged port
  restrictions rather than having a fixed "allow >=1024 for non-root" rule.

  A future release may implement privilege dropping for netbsd/macos.

- Fix a regression in 2025.87 when RSA and DSS are not built. This would lead
  to a crash at startup with bad_bufptr().
  Reported by Dani Schmitt and Sebastian Priebe.

- Don't limit channel window to 500MB. That is could cause stuck connections
  if peers advise a large window and don't send an increment within 500MB.
  Affects SSH.NET https://github.com/sshnet/SSH.NET/issues/1671
  Reported by Rob Hague.

- Ignore -g -s when passwords arent enabled. Patch from Norbert Lange.
  Ignore -m (disable MOTD), -j/-k (tcp forwarding) when not enabled.

- Report SIGBUS and SIGTRAP signals. Patch from Loïc Mangeonjean.

- Fix incorrect server auth delay. Was meant to be 250-350ms, it was actually
  150-350ms or possibly negative (zero). Reported by pickaxprograms.

- Fix building without public key options. Thanks to Konstantin Demin

- Fix building with proxycmd but without netcat. Thanks to Konstantin Demin

- Fix incorrect path documentation for distrooptions, thanks to Todd Zullinger

- Fix SO_REUSEADDR for TCP tests, reported by vt-alt.

Dropped:

 * 050-dropbear-multihop-fix.patch as its included in the release 5cc0127000db5f
 * 051-fix-pubkey-options.patch as its included in the release 1d4c4a542cd5df
 * 052-fix-missing-depends-for-sntrup761x25519-sha512.patch as its included
   in the release 1a2c1e649a1824
 * 053-Don-t-limit-channel-window-to-500MB.patch as its included in the release a8610f7b98ad

Manually rebased:

 * 110-change_user.patch

Fixes: CVE-2025-14282, CVE-2019-6111
Reviewed-by: Hauke Mehrtens <hauke@hauke-m.de>
Reviewed-by: Konstantin Demin <rockdrilla@gmail.com>
Tested-by: Konstantin Demin <rockdrilla@gmail.com> [mediatek/filogic (GL.iNet GL-MT6000)]
Link: https://github.com/openwrt/openwrt/pull/21186
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 70a4da1ceb)
2025-12-17 03:59:24 +00:00
Hauke Mehrtens
fe1b06f725 kernel: Fix boot of realtek rtl838x
Revert two patches from upstream Linux:
135178e90a
63a93d1cd6

This fixes a boot hang on realtek rtl838x switches.
This is the last printed message:
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)

Thread on mips mailing list:
https://lore.kernel.org/linux-mips/b35fe4b3-8f42-49f4-a6bf-9f0e56d4050c@hauke-m.de/T/#u

Link: https://github.com/openwrt/openwrt/pull/21166
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21126
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0bfc66e7b5)
2025-12-17 00:32:25 +01:00
John Audia
0669972095 kernel: bump 6.12 to 6.12.62
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.62

Manually rebased:
  bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch

Removed upstreamed:
  backport-6.12/830-v6.18-spi-bcm63xx-fix-premature-CS-deassertion-on-RX-only-transactions.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.62&id=e31194bf494f6900a5f96f55ed194a00e458f8d1

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21126
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 97e9d7038e)
2025-12-17 00:32:23 +01:00
Hauke Mehrtens
74247287ad uboot-sunxi: fix u-boot build
The u-boot target name has to match the u-boot configuration. Switch
this back to the old names.

Fixes: d871e95e7f ("sunxi: image: sync target profiles names with DT compatible")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 86996634f0)
2025-12-17 00:10:36 +01:00
Rany Hany
c432647d18 wifi-scripts: update phys after rename_phy_by_name call
This fixes a failed bring up of the radio on bootup
if the model defines a rename of phy in its /etc/board.json.
This specifically impacts Redmi AX6S and any router that does so
in its /etc/board.json. The fix fortunately is simple, just update
phy name in phys after rename.

The entry that specifically causes this issue is the following:

{
	<omitted>
	"wlan": {
		"wl0": {
			"path": "platform/18000000.wmac",
			"info": {
				"antenna_rx": 15,
				"antenna_tx": 15,
				"bands": {
					"2G": {
						"ht": true,
						"max_width": 40,
						"modes": [
							"NOHT",
							"HT20",
							"HT40"
						],
						"default_channel": 1
					}
				},
				"radios": [
				]
			}
		},
	...
}

The issue is that after rename, referenced phy in config is going to be
wl0 but in phys array it is still phy0; and so it fails to find phy
and does not bring up radio.

Fixes: https://github.com/openwrt/openwrt/issues/20250
Fixes: https://github.com/openwrt/openwrt/issues/20339
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21175
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e4d5e76af0)
2025-12-16 20:23:29 +01:00
Jonas Jelonek
88ab3205fe realtek: mdio-serdes: use correct device table identifier
Use the correct identifier 'rtsds_of_match' instead of
'rtsds_mdio_of_match' because the latter doesn't exist.

This doesn't cause an error for 6.12. However, with 6.18 the
implementation of MODULE_DEVICE_TABLE has changed to use 'static' and
'used' [1] instead of 'extern' and 'unused' [2].

[1] 7d0a66e4bb/include/linux/module.h (L260)
[2] adc218676e/include/linux/module.h (L249)

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21182
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d519a3ee86)
2025-12-16 14:03:11 +01:00
Jonas Jelonek
c870f16350 realtek: pcs: move polarity into SerDes struct
As a first real usage of the new SerDes struct, move the polarity
configuration there. It was previously located in the global rtpcs_ctrl
struct as an array, indexed by SerDes id. Because this is per-SerDes
information, the new SerDes struct is the correct place to live in.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 56a71f3c82)
2025-12-16 13:38:14 +01:00
Jonas Jelonek
4d86ac6401 realtek: pcs: drop unneeded SerDes number range checks
By using references to pre-initiated SerDes instances instead of plain
SerDes number, there is no need to check for the range anymore in
various places. During driver/pcs init it is ensured that only valid
SerDes will reach the configuration functions.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 18eea05483)
2025-12-16 13:38:14 +01:00
Jonas Jelonek
d2a34744fe realtek: pcs: make use of SerDes struct in set_autoneg
Also switch set_autoneg (and related helper rtpcs_sds_modify) to the
SerDes struct instead of the plain SerDes id by using just the reference
to the SerDes instance instead of (ctrl, sds_id) tuple. This completes
the transition.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit d8dd8bd88f)
2025-12-16 13:38:14 +01:00
Jonas Jelonek
cf03520c71 realtek: pcs: make use of SerDes struct in SerDes setup
Make use of the previously added SerDes struct in SerDes setup and all
functions in its call path by removing (ctrl, sds_num) being passed to
every function call and instead just pass the reference to the
corresponding SerDes instance.

Various SerDes calculations for even, odd and neighbor are unified by
switching to previously introduced helpers.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 1fccb0eb16)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
0fe7f97896 realtek: pcs: switch to id from SerDes struct
Drop usage of the to-be-phased-out SerDes id stored in rtpcs_link and
use the reference to the SerDes instance to use the embedded id in
rtpcs_serdes instead.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 4d9400f86b)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
6f98353eec realtek: pcs: assign SerDes reference upon PCS creation
Upon creation of a phylink_pcs instance by calling rtpcs_create, assign
a reference to the corresponding SerDes to the link structure. In the
next step, this should be used everywhere instead of the plain SerDes
number.

Rename the field used to hold the SerDes number from 'sds' to 'sds_num'
and name the new field 'sds' to make clear what is what.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 69bbcc685b)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
01cfdb1610 realtek: pcs: add helpers for even, odd, neighbor SerDes
Add dedicated helpers to get references to even, odd and neigbor SerDes
if needed. This should replace the various calculations scattered
throughout the code, providing a unified way to work with adjacent
SerDes.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 232c1fb14a)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
40201e7f73 realtek: pcs: add separate SerDes struct
Add a separate structure for a SerDes. This is needed to appropriately
store per-SerDes information, which in turn is needed for future work.
Additionally, it's intended to reduce boilerplate and several
inconsistencies.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6b3f8fb16f)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
b9e5803d04 realtek: pcs: use per-variant SerDes count
Use a separate configuration field for the number of SerDes for each
variant of the Realtek Otto family. Add this field to the config
structure, assign it and use it during driver probe. This narrows
possible error cases and is needed for upcoming extensions.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 6cf33aacfe)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
d8b1a54c78 realtek: pcs: add dedicated enum for SerDes modes
The Realtek SerDes mode capabilities do not map 1:1 to the
PHY_INTERFACE_MODE_* modes used in the kernel and passed to the PCS.
For example, some PHY chips use the proprietary XSGMII mode for which
there isn't an equivalent in the kernel, or HSGMII.

In the past, this led to problems and confusion using kernel's XGMII to
handle the XSGMII mode, and needed a downstream patch for HSGMII. They
have been solved/worked around for now, but XSGMII is currently not
implemented at all. And who knows what might come in the future.

To make our life easier, introduce a dedicated internal representation
of SerDes modes which differs from kernel's PHY_INTERFACE_MODE_*. This
allows us to map "external" modes to different internal modes as needed
instead of carrying the PHY_INTERFACE_MODE_* through the whole SerDes
configuration code. The PCS driver needs to map PHY_INTERFACE_MODE_* to
RTPCS_SDS_MODE_* in pcs_config, and the latter should be used as the
only one.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a4d6e10bf2)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
96c86b2ff1 realtek: pcs: rtl930x: drop unused and broken function
Drop the unused and broken function rtpcs_930x_sds_clock_wait from the
PCS driver. The proper working variant is already some lines above and
called rtpcs_930x_sds_wait_clock_ready.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit decc4f6ba8)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
e989bf80a8 realtek: pcs: drop PCS creation without SerDes ref
Since the beginning, the PCS driver had the ability to call its
rtpcs_create without a reference to a valid PCS node. A comment in the
code mentions that this is done for RTL838X and its built-in octa-PHY
which is connected directly instead of via a SerDes. Further
explanations are not provided.

Drop this ability and make the rtpcs_create call in the dsa driver
conditional. As the built-in PHY of RTL838X isn't attached to a SerDes,
there is no obvious point of having the PCS driver in that chain. The
ports are marked as internal and have no pcs-handle, thus no phylink_pcs
instance should be created.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a58e41e522)
2025-12-16 13:38:13 +01:00
Jonas Jelonek
2e56a1ffc6 realtek: mdio-serdes: improve debugfs creation
Commit 3c073b5cb2 cleaned up the debugfs creation in
mdio-realtek-otto-serdes driver to not explicitly check if the root
directory already exists. This is fine because kernel handles the case
properly so there's no need to check anymore.

However, this pollutes the boot log with:
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'

Now, the root directory creation is attempted multiple times, causing
the kernel to print an error message because the directory already
exists.

Fix this by moving the SerDes loop into rtsds_debug_init and only try
to create the root debugfs directory once.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21179
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 8e4730fd60)
2025-12-16 13:12:15 +01:00
Christoph Krapp
86ebe649c2 ipq40xx: convert Orbi led labels to function/color
The eight leds controlled by the LED controller are RGB leds themselves
but are flashing white by default. The color part is controlled by GPIOs
53 (green), 54 (red), 57 (blue) and 60 (white).
Therefore define the led nodes of the controller as white instead of RBG
as well as backlight as their function.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3045f205b3)
2025-12-16 10:30:26 +01:00
Christoph Krapp
ce54f6e893 ipq40xx: fix second 5ghz radio on Netgear RBx40
When support was added for the RBR40 and RBS40 it was assumed that they
also share the same second 5ghz wifi chip as their bigger siblings.
Turns out that instead of QCA9984 (RBx50, SRx60) these devices use
QCA9886 like the RBx20 devices to.
They also load different boardfiles for the IPQ4019 chip.

This moves the wifi nodes from the orbi.dtsi to each device dts file and
change the RBx40 boardfile variants.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f0909f7a05)
2025-12-16 10:30:26 +01:00
Christoph Krapp
368c9c0c99 ipq-wifi: add entry for Netgear RBK40
Add boardfile override packages for Netgear RBK40 devices.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e9d6015bef)
2025-12-16 10:30:26 +01:00
Christoph Krapp
d4274a10f6 ipq40xx: fix Netgear RBR40 wan mac
The WAN port currently has the same MAC set as all the other LAN ports.
Fix this by adding the missing case in ipq40xx_setup_macs().

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 0f0f578d0a)
2025-12-16 10:30:26 +01:00
Christoph Krapp
8e5cdd84eb ipq40xx: split orbi devices in router and satellite
Netgear Orbi devices are split into router and satellite units. Even
though the hardware is mostly the same, the network configuration is
different. Router units have a designated WAN port while satellite units
have all available ports labeled as "Ethernet".
This splits the device trees into both unit types and adjusts the port
labels.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 314dbb7fec)
2025-12-16 10:30:26 +01:00
Robert Marko
872fd1f0b6 ipq-wifi: update to Git HEAD (2025-12-16)
10eddd6f1cba qca4019: qca9888: add bdfs for Netgear RBK40

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 4e688db5a8)
2025-12-16 10:28:20 +01:00
Christoph Krapp
d18dfbdcbc qualcommax: ipq807x: use ascii-env driver for Linksys MX4200v1
Just like it has already been changed for v2, use the ascii-eq-delim-env
driver to extract the label mac from the devinfo partition.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20732
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit f0c5348775)
2025-12-16 10:24:17 +01:00
Mario Andrés Pérez
6d7fbcccac sunxi: image: sync target profiles names with DT compatible
Following up with errors reported in the ASU repo, these bananapi cases
do not match the DT compatible "bpi", sync with dts sources.
Also some profiles were overwriting SUPPORTED_DEVICES.
Sysupgrade would be failing in SUPPORTED_DEVICES check since
the DT compatible(/tmp/sysinfo/board_name) is not in SUPPORTED_DEVICES.
This should also fix errors when using ASU sysupgrade clients.
- Sync profile makefile target names with DT compatibles.
- Fix overwrites of SUPPORTED_DEVICES instead of appending.
- Adapt the uboot-sunxi profiles accordingly.
*bpi-p2-zero dts is still not upstream.

V2:
- Include fixes for arm926ejs(ARM926EJ-S) subtarget (LicheePi Nano and
PopStick v1.1) (profile rename for correct default SUPPORTED_DEVICES)

Fixes: https://forum.openwrt.org/t/luci-attended-sysupgrade-support-thread/230552/246
Fixes: https://github.com/openwrt/asu/issues/486
Fixes: https://github.com/openwrt/asu/issues/524
Fixes: 9aa66b8ce7 "sunxi: add support for Banana Pi M2 Berry"
Fixes: d5f615bf2a "sunxi: add support for Sinovoip Banana Pi M2 Plus"
Fixes: 3819c1638a "sunxi: Add support for Banana Pi M2 Ultra"
Fixes: 6bf8193b25 "sunxi: add support for Bananapi P2 Zero"
Fixes: 80edfaf675 "sunxi: add support for Banana Pi M3"
Fixes: 3c24a1d423 "sunxi: add support for NanoPi NEO Plus2 board"
Fixes: a689307c97 "sunxi: build image/uboot for the NanoPi NEO2"
Fixes: fde68cb809 "sunxi: add support for FriendlyARM NanoPi R1S H5"
Fixes: 3ec468ff4f "sunxi: add F1C100 (arm926ej-s) support"

Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21095
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit d871e95e7f)
2025-12-16 01:46:49 +01:00
Karsten Sperling
946e43c3d8 scripts,ipkg-build: Fix error message for invalid package name
Use the correct variable ($pkg instead of $name) in the error message.

Signed-off-by: Karsten Sperling <ksperling@apple.com>
Link: https://github.com/openwrt/openwrt/pull/20077
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 63bf77b801)
2025-12-16 01:41:45 +01:00
Hauke Mehrtens
7f4272dc18 libcap: Revert "libcap: update to 2.77"
This reverts commit c25265953b.

Linking of libpsx.so from libcap 2.77 fails on powerpc 464fp. Revert
back to the older version which works.

Bug report: https://bugzilla.kernel.org/show_bug.cgi?id=220860
Fixes: c25265953b ("libcap: update to 2.77")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 5b0617ae1f)
2025-12-16 01:26:24 +01:00
Martin Nadvornik
81d7d379c7 mediatek: fix IPv4 address missing on interface in failsafe mode for cudy ap3000-v1
cudy ap3000-v1 did not work correctly in failsafe mode
because the address 192.168.1.1 was missing on the eth0 inteface.
it was reachable via it's IPv6 link-local address however.
this commit fixes the issue.

Fixes: https://github.com/openwrt/openwrt/issues/20750
Signed-off-by: Martin Nadvornik <martin.nadvornik@gmx.at>
Link: https://github.com/openwrt/openwrt/pull/21172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit e5cd6461c9)
2025-12-16 00:29:13 +01:00
Rany Hany
7c4da36cf2 wifi-scripts: ucode: improve formatting of expected throughput
Convert to MBit/s like all other fields and specify the unit.
Most users probably aren't aware that this is in kilobits/s.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20567
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 36da03a6c1)
2025-12-15 12:39:57 +01:00
Rany Hany
c743099fe1 wifi-scripts: add support for using list for iface in wifi-station/vlan
This is a trivial change to allow users to use 'list' on iface.
Old wifi-scripts already implements this, so this just ensures
that shell-based and ucode wifi-scripts are on-par with each other.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20977
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 1ead4e6e16)
2025-12-15 12:31:14 +01:00
Rany Hany
b13c6a732a wifi-scripts: fix broken match all case for wifi-vlan
When iface is omitted, wifi-vlan will apply to all interfaces.
However, netifd.set_vlan call is not successful as it assumes
that every wifi-vlan section corresponds to one VIF.

For this reason in the wifi-vlan case (cur_type == "vlan")
we create a composite key in the form `${vif.name}/${vlan.name}`
allowing the same vlan section to correspond to multiple VAPs.
`/` was decided as a delimiter as it is an invalid character
for a network interface name and UCI identifier; so it is
impossible for it to cause conflicts.

It was verified that the `ubus call network.wireless status`
works as expected with this change. Moreover, wifi-station
is not susceptible to this problem.

This also means that it is now possible for wifi-vlan
to support `list` iface similar to old shell-based wifi-scripts.
This will be done in a follow-up commit.

Fixes: 98435a37a7 ("wifi-scripts: iface should be optional in wifi-vlan definition")
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20977
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 211b11a56e)
2025-12-15 12:31:14 +01:00
Robert Marko
87fd61bd02 ipq-wifi: update to Git HEAD (2025-12-15)
c6202981872e ipq5018: use correct board for GL-iNet B3000 IPQ5018 radio
ec72376cadf1 qca4019: Add Meraki Underdog
059b7114c77b ipq6018: add tp-link eap620hd v2

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b4bc9ed318)
2025-12-15 09:56:30 +01:00
Shiji Yang
ec22ac9401 kernel: rtl836x: remove legacy platform_data support
There are no platform_data based devices using it anymore. Also move
header files to the driver folder.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21138
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 852d17ed82)
2025-12-15 09:32:10 +01:00
Markus Stockhausen
bcbf4bd8ac realtek: use devm_kzalloc() for serdes debugfs setup
This will free memory automatically during driver unloading.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a4011797c2)
2025-12-15 09:30:03 +01:00
Markus Stockhausen
77b47f33e5 realtek: cleanup debugfs creation in serdes driver
debugfs_create_dir() has a proper logic to handle existing directories.
Skip the manual test. Additionally quit early if directory creation fails.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 3c073b5cb2)
2025-12-15 09:30:03 +01:00
Markus Stockhausen
a53655ed14 realtek: simplify backing serdes calculation
Calculating the backing serdes of a given frontend serdes does
not need any info about the control structure. Drop the reference.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit dcbc8722e9)
2025-12-15 09:30:03 +01:00
Álvaro Fernández Rojas
5db1b65d3e odhcpd: update to 25.12 Git HEAD (2025-12-13)
1ff1328a4fc1 odhcpd: fix captive_portal_uri reset
74f00bf43eab dhcpv4: fix DNS server option
0d0fc5ffe993 README.md: update dhcp ubus events

ca00527e5f...1ff1328a4f

Also remove duplicated /usr/share/libubox/jshn.sh include.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-13 13:02:35 +01:00
David Woodhouse
74c8435ebd image: add CONFIG_EXTRA_IMAGE_NAME
This allows an optional tag to be put in the .config file which is
included in the filename of the resulting images, so it's easier to
build images with different functionality for the same target hardware.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Link: https://github.com/openwrt/openwrt/pull/20984
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 24b8db118b)
2025-12-12 22:08:27 +00:00
Paul Donald
25f32651f8 apk: bump to 3.0.2
We drop patch 0020-apk-fix-compile: integrated at source.
Compressed help now functions normally.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21127
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit b15628ec80)
2025-12-12 14:00:35 +01:00
David Härdeman
4444f314ac base-files: always generate default DUID
The previous logic was copied from 12_network-generate-ula, but fails to
account for upgrades where the "auto" value isn't set (it is set by
base-files/files/bin/config_generate). Fix this to always set the
default duid if it isn't set.

Also, rename the file to better reflect what it does.

Closes: #21029
Fixes: a660a076db ("base-files: generate a global DHCP DUID")
Link: https://github.com/openwrt/openwrt/pull/21118
Signed-off-by: David Härdeman <david@hardeman.nu>
Signed-off-by: Petr Štetiar <ynezz@true.cz> [fixes,closes tag]
(cherry picked from commit 52fa3728e5)
2025-12-11 06:42:18 +00:00
Shiji Yang
65a60d2fa7 bcm27xx: fix patch wrong CRLF line-ending
Use Unix LF style instead of Windows CRLF style.

Fixes: 738876e76b ("kernel: bump 6.12 to 6.12.58")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20973
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 86bd55c4fd)
2025-12-11 00:57:57 +01:00
Chukun Pan
8117f30f6f arm-trusted-firmware-mediatek: remove DDR combo for MT7987
The DRAM_USE_COMB option is only valid for the MT7988. There
is no DRAM type selection for the MT7987, so remove it.

Fixes: de8fc8b ("arm-trusted-firmware-mediatek: add builds for MT7987")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21000
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit bb2d9c1a65)
2025-12-11 00:57:57 +01:00
Chukun Pan
4f889c2caa arm-trusted-firmware-mediatek: add MT7987 DDR4 4BG images
Add the DDR4_4BG_MODE option, which supports 4GB DDR4 RAM
for the MT7987 and 8GB DDR4 RAM for the MT7988. If this mode
is not enabled, bl2 can only recognize half the size of RAM.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21000
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f037a2e8bb)
2025-12-11 00:57:57 +01:00
Chukun Pan
c6d74b2ddd arm-trusted-firmware-mediatek: add MT7981 sdmmc images
Add bl2 images for mt7981 sdmmc ddr4 devices.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21000
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 3b14ace444)
2025-12-11 00:57:56 +01:00
Chukun Pan
e402882943 arm-trusted-firmware-mediatek: rearrange some images
Rearrange some images to maintain consistency.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21000
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 69918d1e0b)
2025-12-11 00:57:56 +01:00
Qingfang Deng
cd88eb969f kernel: add network teaming modules
Teaming is a link aggregation implementation similar to bonding, but
it's configured by a userspace program.

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21120
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 8b05db405b)
2025-12-11 00:57:56 +01:00
Shine
4e5e8b95a6 mpc85xx: add support for Watchguard Firebox T10-W, T15(-W)
This commit adds support for the Watchguard Firebox models
T10-W, T15 and T15-W.

CPU:      Freescale P1010
RAM:      512MB (T10) / 1024MB (T15)
Flash:    1MB SPI-NOR, 512MB NAND (T10) / 1024MB NAND (T15)
WiFi:     802.11abgn 2T2R AR9582 based Mini-PCIe card (-W models only)
Ethernet: 3x GBE (via AR8033 PHY)
LEDs:     7x hard-wired (6x LAN, 1x Power)
          4x GPIO single-colored (Attn/Status/Mode/Failover)
          1x GPIO dual-colored (2.4/5G WiFi, -W models only)
Serial:   RJ45, Cisco pinout, 115200/8N1
Other:    Battery backed RTC
          Atmel TPM 1.2 chip (unsupported)

Based on 35f6d79, which introduced Watchguard Firebox T10 support.

The T10 and T15 are identical hardware, with the exception of the T15
having twice the flash and RAM size.

The T10-W and T15-W models have their Mini-PCIe slot populated with an ath9
(AR9582) based WiFi card. The slot is either unpopulated or empty for
non-WiFi models. All required drivers are present by default on the mpc85xx
target, so T10/T10-W resp. T15/T15-W can use the same OpenWrt image.

This commit also introduces the zImage loader from 7d768a9 to boot the
kernel. This is required, since the U-Boot version used in these devices
appears to have a hard limit of 16MB for the kernel size it can handle. The
current kernel size is around 17MB, though, due to kernel page alignment
required for memory protection.

Installation (replaces previous instructions for T10):

1. If the U-Boot password is known, proceed with step 2.

   If the U-Boot password is unknown, dump the NOR flash using a SPI
   programmer and patch the unknown password to a known one. You can use
   blocktrron's Python script:

   https://github.com/blocktrron/t10-uboot-patcher/

   This script will patch the password to '1234' (without quotes).

   Alternatively, you can search for the hashed password in the NOR dump
   yourself and overwrite it with a known one. The SHA1 hash is:

   E597301A1D89FF3F6D318DBF4DBA0A5ABC5ECBEA

   Write the patched NOR dump back to the device.

2. Connect the device via serial cable, power it on and interrupt
   the boot process by pressing Ctrl+C. Enter the U-Boot password to access
   the CLI.

3. (Optional) Populate the uboot-env partition by entering:

   saveenv

   This will allow you to use uboot-envtools from within OpenWrt later,
   e.g. to increase the loadable kernel size.

   The default loadable kernel size is 5MB, the compressed kernel size at
   the time of this commit is 3.1MB.

4. Serve the initramfs OpenWrt image from a TFTP server at 10.0.1.13/24,
   connected to eth0 (WAN) of the device. File name must be 'uImage'. Boot
   with:

   tftpboot; bootm;

   Make sure to use the correct image for your device (T10 resp. T15)!

5. After booting, connect to OpenWrt on eth1 (LAN) via SSH. Verify
   that the UBI partiton is mtd7, format it and install the sysupgrade
   image.

   $ cat /proc/mtd
   $ ubiformat /dev/mtd7 -y
   $ sysupgrade -n <path to sysupgrade.bin>

6. The device should now boot OpenWrt from NAND flash. Enjoy.

Back to stock:

Use the vendor recovery procedure.

Stock recovery might also be necessary in case you have accidentally used
the fw_setenv command from within OpenWrt without using saveenv in U-Boot
first.

In order to use the vendor firmware recovery procedure, the NAND partitions
mtd3 to mtd6 must remain intact. Make sure not to overwrite them, or keep
dumps of them for later recovery.

Signed-off-by: Shine <4c.fce2@proton.me>
Link: https://github.com/openwrt/openwrt/pull/16776
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit be7aa5bda4)
2025-12-11 00:57:55 +01:00
Shine
bb61b5b31d mpc85xx: p1010: use common DTSI for Watchguard Firebox T1X
In preparation of adding support for additional Watchguard Firebox devices
based on Freescale P1010, introduce a common DTSI.

Signed-off-by: Shine <4c.fce2@proton.me>
Link: https://github.com/openwrt/openwrt/pull/16776
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 15ef024805)
2025-12-11 00:57:55 +01:00
Hauke Mehrtens
39b578147b ucode: update to Git HEAD (2025-12-01)
afe4be60628a lib/fs: fix return value for flush
5f08ecf8e372 lib/uloop: fix return value doc for run()
1affe484f302 lib/uloop: pass eof and error to cb
559860cbd76d lib: introduce io library
ef07e2448a56 vm: optimize string+string concat with ucv_string_alloc

Changes: 48ed18d253...f7c2b97a82

Backport PR to fix compilation with Ubuntu 18.04:
https://github.com/jow-/ucode/pull/355

Link: https://github.com/openwrt/openwrt/pull/21100
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit e40ca676ee)
2025-12-11 00:57:55 +01:00
Christian Marangi
12316d0280 OpenWrt v25.12: set branch defaults
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-11 00:49:28 +01:00
Nick Hainke
c25265953b libcap: update to 2.77
Update to latest release.

Add patch `003-Revert-libcap-Add-build-ldflags-to-_makenames-rule.patch`
to fix errors in the form of:
```
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(__stack_chk_fail.o): relocation R_X86_64_32 against symbol `__stack_chk_guard' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(strerror.o): relocation R_X86_64_32 against `.rodata.errmsgstr' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(realloc.o): relocation R_X86_64_32S against hidden symbol `__malloc_size_classes' can not be used when making a PIE object
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(__stdout_write.o): relocation R_X86_64_32S against hidden symbol `__stdio_write' can not be used when making a PIE object
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(ofl.o): relocation R_X86_64_32 against `.bss.ofl_lock' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld.bfd: /external-toolchain/openwrt-toolchain-x86-64_gcc-14.3.0_musl.Linux-x86_64/toolchain-x86_64_gcc-14.3.0_musl/lib/libc.a(stderr.o): warning: relocation against `__stderr_FILE' in read-only section `.rodata.stderr'
/usr/bin/ld.bfd: /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x12): undefined reference to `__libc_csu_fini'
/usr/bin/ld.bfd: (.text+0x19): undefined reference to `__libc_csu_init'
collect2: error: ld returned 1 exit status
```

Changes: https://git.kernel.org/pub/scm/libs/libcap/libcap.git/diff/?id=v1.2.77&id2=v1.2.69&dt=2

The apk size did not increase much:
Old size for armsr/armv8:
 16245 libcap-2.69-r1.apk

new size for armsr/armv8:
 16315 libcap-2.77-r1.apk

Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/20881
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:31:38 +01:00
Hauke Mehrtens
afdbdbae3b bridger: update to Git HEAD (2025-10-23)
856921fb2062 nl: improve polling
a40cb7994e92 nl: handle netlink socket buffer overflow
9fc2bc3e3d4d bpf: skip all multicast packets

Changes: 95125f0b0b...9fc2bc3e3d

Link: https://github.com/openwrt/openwrt/pull/21104
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:29:24 +01:00
Hauke Mehrtens
367d8b2115 nftables: update to version 1.1.6
Announcement: https://lwn.net/Articles/1049470/
Changes: https://git.netfilter.org/nftables/diff/?id=v1.1.6&id2=v1.1.5&dt=2

The apk size did not increase much:
Old size for armsr/armv8:
318457 nftables-json-1.1.5-r1.apk

new size for armsr/armv8:
327941 nftables-json-1.1.6-r1.apk

Link: https://github.com/openwrt/openwrt/pull/21096
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:26:39 +01:00
Hauke Mehrtens
f26294f161 libnftnl: update to version 1.3.1
Announcement: https://lwn.net/Articles/1049279/
Changes: https://git.netfilter.org/libnftnl/diff/?id=libnftnl-1.3.1&id2=libnftnl-1.3.0&dt=2

The apk size did not increase much:
Old size for armsr/armv8:
 62606 libnftnl11-1.3.0-r1.apk

new size for armsr/armv8:
 64212 libnftnl11-1.3.1-r1.apk

Link: https://github.com/openwrt/openwrt/pull/21096
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:26:31 +01:00
Hauke Mehrtens
4e06003d06 libnl: update to version 3.12
Changes: https://github.com/thom311/libnl/compare/libnl3_11_0...libnl3_12_0

The apk size did not increase much:
Old size for armsr/armv8:
   767 libnl200-3.11.0-r1.apk
 13480 libnl-cli200-3.11.0-r1.apk
 44511 libnl-core200-3.11.0-r1.apk
  9101 libnl-genl200-3.11.0-r1.apk
 32485 libnl-nf200-3.11.0-r1.apk
185723 libnl-route200-3.11.0-r1.apk

new size for armsr/armv8:
   764 libnl200-3.12.0-r1.apk
 13471 libnl-cli200-3.12.0-r1.apk
 45031 libnl-core200-3.12.0-r1.apk
  9098 libnl-genl200-3.12.0-r1.apk
 32479 libnl-nf200-3.12.0-r1.apk
193131 libnl-route200-3.12.0-r1.apk

Link: https://github.com/openwrt/openwrt/pull/21097
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:24:22 +01:00
Christian Marangi
04946ee8ab openwrt-keyring: update to Git HEAD (2025-12-10)
f0670054fd3a apk: add OpenWrt 25.12 release build public key

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-10 23:22:27 +01:00
Hauke Mehrtens
5cbafcbb67 iproute2: update to version 6.18
The removed patch 001-lib-bridge-avoid-redefinition-of-in6_addr.patch
was integrated upstream.

Changes: https://github.com/iproute2/iproute2/compare/v6.17.0...v6.18.0

The apk size did not increase much:
Old size for armsr/armv8:
 43778 ip-bridge-6.17.0-r1.apk
164653 ip-tiny-6.17.0-r1.apk
208236 tc-bpf-6.17.0-r1.apk
210209 tc-full-6.17.0-r1.apk
172483 tc-tiny-6.17.0-r1.apk

new size for armsr/armv8:
 43781 ip-bridge-6.18.0-r1.apk
164956 ip-tiny-6.18.0-r1.apk
208578 tc-bpf-6.18.0-r1.apk
210482 tc-full-6.18.0-r1.apk
172664 tc-tiny-6.18.0-r1.apk

Link: https://github.com/openwrt/openwrt/pull/21101
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-10 23:18:58 +01:00
Christian Marangi
521087d131 mac80211: backport patch fixing support for GCC15
Backport patch fixing support for GCC15 caused by __counted_by.

This macro was moved to a different header in recent kernel version and
caused wrong detection on the #ifndef condition.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-10 22:48:55 +01:00
Linus Walleij
1c7ec8ab19 scripts/jungo-image: Fix up whitespace
Recent Python versions are strict about whitespace and will
complain about mixtures of tabs and spaces. Convert any tabs
so the script just use spaces for indentation.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://github.com/openwrt/openwrt/pull/21116
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-10 19:11:13 +01:00
Vincent Li
9e9206427f loongarch64: Disable strict alignment to fix BPF program failures
CONFIG_ARCH_STRICT_ALIGN=y (default in config-6.12) causes BPF programs
(XDP, TC, tracing, etc.) to fail verification with misaligned packet
and memory access errors, breaking essential kernel functionality.

Hardware support status:
- Supported (modern CPUs): 2K2000, 2K3000, 3A5000, 3A6000, 3C5000,
                          3C6000, 3D5000
- Unsupported (legacy): 2K500, 2K1000

The current default prioritizes legacy compatibility over:
1. BPF program functionality across multiple subsystems
2. Performance on widely deployed modern hardware
3. Modern kernel features relying on unaligned accesses

Since BPF programs require unaligned access capabilities and most
LoongArch deployments use modern CPUs with hardware support, disable
CONFIG_ARCH_STRICT_ALIGN. Legacy system users can manually enable
it if needed.

Link: https://github.com/vincentmli/BPFire/issues/69
Reference: https://elixir.bootlin.com/linux/v6.12/source/arch/loongarch/Kconfig#L534

Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21121
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-10 19:10:30 +01:00
Andreas Gnau
f3e4620f59 build: depend on tools/zstd for download
Downloading packages from git requires zstd to compress their tarballs.
Make sure that zstd from host tools is compiled when running make
download. Otherwise, either the download would fail because zstd is not
present or a random version from the host would be used leading to hash
mismatches.

Signed-off-by: Andreas Gnau <andreas.gnau@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/21125
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-10 19:04:44 +01:00
Álvaro Fernández Rojas
4e4986aaf6 odhcpd: update to Git HEAD (2025-12-10)
ca00527e5fc3 statefiles: don't write empty hosts files
24b70c5c2ff0 Revert "statefiles: fix escape sequence for broken hostname output"
5203ad13954c statefiles: fix stale pio handling for !ubus
a64760b30f67 odhcpd: rename piofolder to piodir
6779344a8c8a statefiles: use tmpfile functions for pio files
9f8abcc662d0 statefiles: rename prefix information functions
cb65b83e524e config: move pio json handling to statefiles.c
5b01849cc42c statefiles: add a dirfd helper function
eadde3d7dd74 statefiles: add tmp helper functions
c29aa7091498 statefiles: fix escape sequence for broken hostname output
00f2d7a4dbe5 dhcpv4: don't send zero IPv6-only preferred option
c86d29bb83d6 Revert "dhcpv6-ia: add some noise to the T1 and T2 periods"
b062769ab85f Revert "do not delegate ULA prefixes"
fd4714bb2dfe do not delegate ULA prefixes
81ea5bfef775 dhcpv6-ia: add some noise to the T1 and T2 periods

79252ed0c0...ca00527e5f

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-10 09:54:21 +01:00
Álvaro Fernández Rojas
46532c9bcb odhcp6c: update to Git HEAD (2025-12-09)
5212a1019d75 odhcp6c: clear the socket buffer after initialising it

1d6c4e794c...5212a1019d

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-09 22:41:05 +01:00
Hauke Mehrtens
355bb8c890 libubox: update to Git HEAD (2025-12-08)
5714bf6ae652 build: install libubox
440b4e988f39 tests: shunit2: add dump and setters coverage
a3ff29ef93df tests: shunit2: add test for _jshn_append via JSON script
38d70328ecbd github: ci: add MIPS64, PowerPC64 and RISCV64
edaf77da740d scripts: devel-build: add missing LUAPATH
c0773869c9d6 build: disable static json-c
ecddb31dc34d formal: fix workflow permissions
7928f1711703 libubox: Add ability to find ordinal position inside a table

Changes: a75209f629...7928f17117

Link: https://github.com/openwrt/openwrt/pull/21099
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 20:41:58 +01:00
Hauke Mehrtens
0cceb4b509 ubus: update to Git HEAD (2025-12-02)
3cc98db1a422 formal: fix workflow permissions

Changes: 2737da3819...3cc98db1a4

Link: https://github.com/openwrt/openwrt/pull/21102
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 20:39:06 +01:00
Hauke Mehrtens
9c286bd1e3 libnl-tiny: update to Git HEAD (2025-12-02)
087d4ce8c07b github: ci: add cmake build and source directories
2871f3f26abb github: ci: add powerpc arch
567be1101523 github: ci: add MIPS64, PowerPC64 and RISCV64
40493a655d8c formal: fix workflow permissions

Changes: 532ac744de...40493a655d

Link: https://github.com/openwrt/openwrt/pull/21098
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 20:37:39 +01:00
Hauke Mehrtens
e7a57a980e uci: update to Git HEAD (2025-12-02)
66127cd76c5d formal: fix workflow permissions

Changes: 5bea135723...66127cd76c

Link: https://github.com/openwrt/openwrt/pull/21103
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 20:36:25 +01:00
Shiji Yang
409b2f41a1 uboot-mediatek: fix readmem command help message
Correct the order of the arguments.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21109
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 20:32:50 +01:00
Kyle Hendry
c2c38469a8 bmips: b53: enable bcm63268 internal PHYs
On the smartrg sr505n the bootloader only sets registers to enable the
PHYs if it's interrupted. When Linux boots this results in a -EINVAL
error when trying to read from the EPHYs and the GPHY doesn't work.
This patch disables low power mode in the GPHY/EPHYs and properly resets
the EPHYs.

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17648
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-09 15:12:43 +01:00
Hauke Mehrtens
d11b77db5e apk: Fix host compilation with C89
This fixes the following build error:
```
../src/apk.c: In function 'parse_options':
../src/apk.c:584:4: error: a label can only be part of a statement and a declaration is not a statement
  584 |    char *arg = opt_parse_arg(&st);
      |    ^~~~
```

Upstream MR: https://gitlab.alpinelinux.org/alpine/apk-tools/-/merge_requests/376

Fixes: b91ebdabbb ("apk: bump to 3.0.1")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 02:06:26 +01:00
Zhiwei Cao
344bb7f916 mediatek: filogic: add support Netcore NX30V2/N30PRO/POWER30AX/W7/GW3001
Hardware specification:
  SoC: MediaTek MT7981B
  Flash: ESMT F50L1G41LB 128MB
  RAM: ESMT M15T2G16128A DDR3 256MB
  Ethernet: 3x 1G
  Button: Reset, WPS

MAC addresses
  LAN:	Label MAC (stored in Factory partition offset 0x1fef20)
  WAN:	LAN + 1
  WiFi:	LAN

Official LED layout, from left to right:
  [power] [internet] [wps] [wifi] [lan3/2/1] [wan]

Redefinition for OpenWrt:
  [power]: used for led-boot, led-failsafe, and led-running
  [internet]: used for WAN RX/TX indication
  [wps]: used for led-upgrade
  [wifi] and [lan3/2/1]: unchanged
  [wan]: used for WAN link indication

Installing OpenWrt:
  - Setup a tftp server on your PC. Copy
    xxx-preloader.bin, xxx-bl31-uboot.fip and
    xxx-initramfs.itb to tftp root directory.
  - Connect to the router via ssh or telnet,
    username: useradmin, password is the web
    login password of the router.
  - Backup all critical flash partitions with
    the following commands where x.x.x.x is
    the IP of your PC.

    IP=x.x.x.x
    cd /dev
    for d in /sys/class/mtd/mtd?; do
      if [ "$(cat $d/name)" = "BL2" ]; then
        tftp -l $(basename $d) -r bl2.img -p $IP
      elif [ "$(cat $d/name)" = "FIP" ]; then
        tftp -l $(basename $d) -r fip.bin -p $IP
      elif [ "$(cat $d/name)" = "Factory" ]; then
        tftp -l $(basename $d) -r factory.bin -p $IP
      fi
    done
    for d in /sys/devices/virtual/ubi/ubi0/ubi0_*; do
      [ "$(cat $d/name)" != "customer" ] && continue
      tftp -l $(basename $d) -r customer -p $IP
      break
    done

  - Flash with the following commands:

     cd /tmp
     tftp -r xxx-preloader.bin -g x.x.x.x
     tftp -r xxx-bl31-uboot.fip -g x.x.x.x
     mtd write xxx-preloader.bin spi0.0
     mtd write xxx-bl31-uboot.fip FIP
     mtd erase ubi

  - Set a static ip(192.168.1.254) for your PC.
    And then reboot the router. It will run
    initramfs image automatically.
  - After openwrt boots up, perform sysupgrade
    via web UI.

Reverting to the vendor firmware:
  - Setup a tftp server on your PC with ip
    address 192.168.1.254. And make sure
    bl2.img, fip.bin, factory.bin and customer
    are located in tftp root directory.
  - Power off the router.
  - Press and hold WPS key, then power on
    the router.
  - Release WPS key, when internet/wifi/wps
    leds are blinking.
  - Wait until internet/wifi/wps leds light
    up, power off the router.
  - Press and hold reset key, power up the
    router, release reset key 15s later.
  - Connect to http://192.168.1.1, now you
    can upload vendor .bin firmware.

Uboot netconsole:
  Uboot netconsole can be enabled by WPS
  or reset key.

  - Setup a linux PC with ip 192.168.1.254.
    Open a new terminal and execute
    'stty -isig -echo cbreak; nc -lup 6666'
  - Press and hold WPS(or reset) key, then
    power on the router.
  - Release key once internet/wifi/wps leds
    are all on.
    NOTE: don't hold the key more than 5s
    after internet/wifi/wps leds on, or it
    will try to revert to vendor firmware.
  - 5s later, uboot bootmenu will show on
    the terminal.

Signed-off-by: Zhiwei Cao <bfdeh@126.com>
Link: https://github.com/openwrt/openwrt/pull/18631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:29:39 +01:00
Rosen Penev
b182f2e0b4 ath79: meraki_mr1[26]: userspace cal to nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21002
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:21:03 +01:00
Rosen Penev
6b961303e0 ath79: moxa,awk-1137c: use nvmem for calibration
Userspace handling is deprecated.

Use led-sources for simplicity.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21026
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:17:48 +01:00
Brian Lee
26ff8efc8a mediatek: filogic: replace spaces with tabs for indentation
This commit replaces the 7-8 spaces with 1 tab to modify the indentation appropriately.

Signed-off-by: Brian Lee <larte332@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21018
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:15:20 +01:00
Pawel Dembicki
011890ad93 mediatek: filogic: add support for Kebidumei AX3000-U22
Kebidumei AX3000-U22 is one of many clones of the same range extender
that can be found on Aliexpress or other Chinese portals.

The easiest way to identify this model is by searching for "AX3000
Repeater" and picking the device that looks like mine [0].

Specification:
- SoC:     MediaTek MT7981B (1.3 GHz)
- RAM:     256 MB
- Flash:   16 MB SPI NOR
- Ports:   1 x 1 GbE
- Antenna: 6 (2 fake)
- WiFi:    MediaTek dual-band WiFi 6
  - 2.4 GHz: b/g/n/ax, MIMO 2x2
  - 5 GHz:   a/n/ac/ax, MIMO 2x2
- Buttons: Reset & WPS
- LEDs:    Ethernet (green), Status (red, green, blue)
- Power:   110–240 V AC (internal PSU, board uses 12 V DC)
- Serial:  unmarked connector on PCB
           [1: Vcc, 2: RX, 3: TX, 4: GND]

Install via OEM web UI:
1. Use reset button to perform factory reset.
2. Connect PC to LAN port and obtain DHCP address.
3. Upload the sysupgrade image via OEM firmware upgrade page,
   e.g. http://192.168.18.1/upgrade.html
4. After reboot, hold reset button to clear leftover vendor config.

Install via serial:
1. Connect serial console (115200 8N1).
2. Enter the console.
3. Backup mtd4 partition if you want to restore OEM FW later.
4. Download image.
5. Run 'sysupgrade -n'.

Revert to stock:
1. Run sysupgrade without keeping config using mtd4 backup.

[0] https://openwrt.org/_media/media/kebidumei_ax3000-u22.png

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20287
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:12:07 +01:00
Rosen Penev
05cd169cd4 gpio-button-hotplug: some modern cleanups
devm_kmalloc_array addition.

of_property_present instead of boolean hack.

for_each_available_child_of_node_scoped to avoid of_node_put.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21033
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 01:04:17 +01:00
Maxim Anisimov
cc2aefe619 mediatek: add Keenetic KN-1812/Netcraze NC-1812 support
This commit adds support for Keenetic KN-1812/Netcraze NC-1812

Device specification
--------------------
SoC Type:   MediaTek MT7988D, Cortex-A73, 64-bit
RAM:        1024MB DDR4 Micron MT40A512M16TB-062E:R
Flash:      SPI NAND Winbond W25N02KV (256 MiB)
Ethernet:   4x1GbE (internal MT7988 built-in) + 2.5GbE (internal MT7988 phy) + 10GbE (RTL8261BE)

WLAN:       MT7992AV
WLAN 2g:    MediaTek MT7975N, b/g/n/ax/be, MIMO 4x4
WLAN 5g:    MediaTek MT7977B, a/n/ac/ax/be, MIMO 4x4
LEDs:       5 LEDs, 1 power green, 1 internet green,
            2x fn green, 1 wlan green, gpio-controlled
Button:     4 (Reset, WPS, FN1, FN2)
USB port:   Yes, 1xUSB3.2 and 1xUSB2.0 (via GL850G)
Power:      12 VDC, 3 A

Notes:
 * The device supports dual boot mode
 * Fn2 led reassigned to wlan 2.4

Flash instruction:
The only way to flash OpenWrt image is to use tftp recovery mode in U-Boot:

1. Configure PC with static IP 192.168.1.2/24 and tftp server.
2. a) Keenetic
      Rename "openwrt-mediatek-filogic-keenetic_kn-1812-squashfs-factory.bin"
      to "KN-1812_recovery.bin" and place it in tftp server directory.
   b) Netcraze
      Rename "openwrt-mediatek-filogic-netcraze_nc-1812-squashfs-factory.bin"
      to "NC-1812_recovery.bin" and place it in tftp server directory.
3. Connect PC with ethernet port, press the reset button, power up
   the device and keep button pressed until status led start blinking.
4. Device will download file from server, write it to flash and reboot.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20737
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:55:51 +01:00
Maxim Anisimov
7423edb393 mediatek: import patch from Mediatek SDK for pcie
Without this patch some devices can't detect wifi chip.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20737
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:55:50 +01:00
Shiji Yang
ac1ee98c45 uboot-envtools: reorganize the initialization scripts
Reorder device names alphabetically and group together the same configs.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21052
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:34:22 +01:00
Shiji Yang
448425261b uboot-envtools: ipq40xx: remove unused function ubootenv_mtdinfo()
This function is defined but unused. There is no reason to keep it.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21052
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:34:22 +01:00
Marcin Leksmark
7ff663cc31 ramips: mt7621.mk: fix alphabetical ordering some Cudy devices
This PR doesn't change anything other than fixing the alphabetical order of some Cudy devices
(R700 and c200p)

Signed-off-by: Marcin Leksmark <lexmark3200@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/21044
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:31:07 +01:00
Jonas Jelonek
c3887c126d realtek: dsa,phy: rtl838x: remove 'SerDes as PHY' leftovers
RTL838X SerDes is now completely managed by the PCS driver so it's time
to remove all the unused leftovers from DSA and PHY drivers to have that
finally separated.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:44 +01:00
Jonas Jelonek
a63da75e44 realtek: rtl838x: drop SFP pseudo-PHYs and phy-handle
Remove all pseudo-PHYs and phy-handle properties from DTS of RTL838X
devices. RTL838X SerDes is now handled by PCS driver and thus not
treated as PHY anymore.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:41 +01:00
Jonas Jelonek
e956adfe3e realtek: rtl838x: setup SDS entirely in PCS driver
After having moved the configuration code and sequences from PHY and
DSA drivers to the PCS driver, add the hooks in PCS driver and remove
calls in PHY and DSA drivers to let PCS driver setup the SerDes
entirely on its own.

Also add pcs-handle to device tree definitions for most of the switch
ports because, due to the refactoring of the SerDes configuration, this
is needed now for all SerDes-attached ports.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:38 +01:00
Jonas Jelonek
b670d48366 realtek: pcs: rtl838x: refactor imported code
The previous commit just imported some code as-is and commented it.
It needs heavy adjustments to compile and work within the PCS driver.
Do that now to that extent that it can be used within the driver. More
cosmetics and improvements will be done later.

Split the once-for-all SerDes configuration into the usual flow where
each SerDes is configured separately and on its own, as requested by the
PCS subsystem.

Move mode setting and patching into proper functions which are called
during SerDes configuration. Some configuration sequences are broken up
and moved into the SerDes configuration flow, e.g. reset sequences
because they were usually a single/few values applied to all SerDes at
once before.

Add proper configuration for SerDes 4 QSGMII to be able to setup this
mode properly on our own.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:34 +01:00
Jonas Jelonek
f4129beb39 realtek: pcs: rtl838x: import SerDes code from DSA/PHY
Import functions 'rtl8380_sds_rst', 'rtl8380_sds_power',
'rtl8380_configure_serdes' and 'rtl83xx_config_interface' from DSA and
PHY driver respectively but comment the code for now.

The code needs heavy adjustments to make it compile and work. To make
this as transparent as possible, do that in two stages.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:31 +01:00
Jonas Jelonek
6a5cae7d74 realtek: pcs: rtl838x: transplant firmware config
In the PHY driver, firmware files were used to store configuration
values for the SerDes which need to be applied upon initialization.
There are several issues which prevent to just take that over into the
PCS driver:
* SerDes and PHY parts are mixed within a firmware file
* SerDes access in PHY driver is based on writing into the switch's
  global register space; PCS driver uses access via MDIO interface
  --> destination values do not match
* firmware file format is not SerDes-agnostic
* no documentation or script for the "old" firmware files

Unfortunately, there is no proper firmware format yet where to take over
the required sequences. Thus, extract the sequences needed for RTL838X
SerDes, transform them to work with the MDIO based access and put them
as functions in the PCS driver.

Note that this should just be a temporary solution. In a next step, a
proper firmware format should be established and all configuration
sequences currently in the code should be moved into firmware files.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:28:27 +01:00
Jonas Jelonek
328b970ecd realtek: pcs: add init_serdes_common hook
Add a new hook called 'init_serdes_common' to be able to perform
initialisations or anything else subject to all SerDes. This hook is
called in the end of 'rtpcs_probe' after everything else is done.

This is meant primarily to support the transition of RTL83XX from PHY
driver to PCS driver. Thus, it may be removed later again or kept if
there is sufficient need for this.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:27:57 +01:00
George Sapkin
a703b9100e scripts/kernel_bump: adjust commit messages
Due to the recent changes with the formality checks kernel_bump commit
messages no-longer pass them.

Adjust these messages to follow the updated checks:
- start the first word after prefix with lower-case
- reduce the overall subject length by removing the redundant 'kernel'

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21012
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-09 00:06:07 +01:00
Jonas Jelonek
c9553caa0e realtek: fix SFP support on Engenius EWS2910P
EWS2910P has two SFP slots of which only one was fully supported so far.
The issue so far was that both SFP slots share the same I2C SCL line but
neither the kernel nor any downstream driver was able to deal with this.

Thus, only one SFP slot was completely working (with detection etc.) but
the other one had to be enabled manually. Networking was functional in
both though.

Since acd7ecc9ed we have a driver which is able to deal with that. Thus,
we can fix the SFP support for this device.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20687
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-08 23:42:38 +01:00
Christian Marangi
721f808253 mac80211: add pending fix for wrong resource_size() usage for ath11k
Add pending fix for wrong resource_size() usage that cause firmware
crash on load on ath11k.

Refresh all affected patch by this.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 21:44:26 +01:00
Christian Marangi
1c02c78e7c Revert "generic: add pending patch fixing resource_size()"
This reverts commit 63e2b17c01.

Further discussion with Upstream for the topic revealed an even subtle
problem that require specific driver to be fixed. Revert the wrong
generic fix in favor of specific ath11k fix.

Link: https://lore.kernel.org/all/20251207215359.28895-1-ansuelsmth@gmail.com/T/#m990492684913c5a158ff0e5fc90697d8ad95351b
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 21:43:36 +01:00
Paul Donald
b91ebdabbb apk: bump to 3.0.1
Recently finalized 3 branch bumped to 3.0.1

dropped patches
-010-libressl4.patch; integrated at source
-999-small-scripts-tar.patch; integrated at source

refreshed remaining patches

DEPRECATION: Option 'compressed-help' is deprecated - removed.
DEPRECATION: Option 'zstd' value 'false' is replaced by 'disabled'

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21093
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 21:30:39 +01:00
Paul Donald
1684c28cfe apk: define minimal variant for install
Choose the minimal release build which excludes a number of
unused applets, not used on user devices.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21093
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 21:30:39 +01:00
Petr Štetiar
83f6177dbf dropbear: enable configurable port forwarding options
Currently its only possible to disable port forwarding only for specific
keys, via the OpenSSH-style restriction in `authorized_keys` file.

In some use cases it might be feasible to disable such features globally
on service level, so lets add new LocalPortForward and RemotePortForward
config knobs.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/21071
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 18:53:34 +01:00
Vincent Li
ed5cefb037 loongarch64: backport kernel BPF trampoline
Enable xdp-loader to attach multiple XDP programs to a single interface by
backporting the BPF trampoline implementation from Linux kernel 6.17 to
6.12 for LoongArch64.

The xdp-loader utility relies on libxdp, which in turn requires kernel
support for BPF trampoline. While x86_64 and other architectures have
this feature, LoongArch64 only gained it in kernel 6.17. Without this
backport, xdp-loader fails on LoongArch64 systems running kernel 6.12.

Changes backported include:
- BPF trampoline infrastructure for LoongArch64
- Necessary JIT compiler updates
- Related BPF subsystem changes

This allows full compatibility with the xdp-tools ecosystem on LoongArch64
systems running older kernel versions.

Reference: https://github.com/xdp-project/xdp-tools/tree/main/lib/libxdp

Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21077
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 18:52:19 +01:00
Shiji Yang
301eee8099 ath10k-ct: remove outdated iommu revert patch
The issue described in the patch can not be reproduced in the latest
6.18 ath10k-ct driver. It should have been fixed by the upstream.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21089
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 18:47:45 +01:00
Shiji Yang
46c885ab6c mac80211: ralink: remove rt2x00soc.ko
"rt2x00soc.c" was removed in 6.18 kernel backport[1]. Fix build error:

openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7620/mac80211-regular/backports-6.18/drivers/net/wireless/ralink/rt2x00/rt2x00soc.ko' is missing.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.18&id=7f6109086c9e7bbc78ff936dac45626870455c76
Fixes: 52a0873742 ("mac80211: update to version 6.18")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21089
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 18:47:45 +01:00
Caleb James DeLisle
75915e3580 econet: fix wrong board name for Zyxel PMG5617GA
Board name was specified incorrectly in the DT, fix.
This bug was introduced in #20580 (31f5fc8fea8931f5) which was
merged last week, and econet is still a mostly experimental target,
so it is considered unnecessary to update SUPPORTED_DEVICES.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/21023
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:30:27 +01:00
Caleb James DeLisle
4e0dfa6e27 econet: update en75_chboot to use OpenWrt board_name
Instead of using the name from /proc/cpuinfo, use board_name from
/lib/functions.sh

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/21023
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:30:27 +01:00
Rosen Penev
72f43ac220 bmips: huawei-hg556a-c: use nvmem for wifi eeprom
The ralink custom property is deprecated and only kept around for
byteswap capability.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21058
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:28:40 +01:00
Rosen Penev
5ba9354fc5 bmips: use led-sources for ath9k
Avoids having to create a custom LED for wifi.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21058
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:28:40 +01:00
Rany Hany
7f05a9af9a hostapd: allow ubus ban client address to be a broadcast address
This will allow del_client with ban_time on a broadcast address
to also ban all clients temporarily.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/18670
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:26:07 +01:00
Rany Hany
5d7107ef63 hostapd: add ubus support to disasoc/deauth all wireless STAs
Similar to the hostapd control interface, treat ff:ff:ff:ff:ff:ff
as a stand in for "all clients".

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/18670
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:26:07 +01:00
Christian Marangi
cc20942931 rtl8812au-ct: rework patch to support kernel 6.18
Rework patch to support backports package based on kernel 6.18.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:08 +01:00
Christian Marangi
c8855881ea mwlwifi: add pending patch to support kernel 6.18
Add pending patch to support backports package based on kernel 6.18.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:08 +01:00
Christian Marangi
5869531992 ath10k-ct: switch to base 6.18
Switch ath10k-ct kernel version base to 6.18 to align with backports
package based on 6.18 kernel version.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:08 +01:00
Christian Marangi
03e197e23e ath10k-ct: update to Git HEAD (2025-12-01)
bb84e1597474 Add 6.18 ath10k-ct driver

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:07 +01:00
Christian Marangi
1346dc176f mt76: backport patch fixing support for 6.18
Backport upstream patch fixing support for 6.18 due to kernel upstream
commit b74947b4f6ff ("wifi: cfg80211/mac80211: Add support to get radio
index")

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:07 +01:00
Christian Marangi
6e09394c3b ramips: migrate wifi compatible to new name
Migrate wifi compatible from ralink,rt2880-wmac to ralink,rt2880-wifi to
align to new 6.18 backports version.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:06 +01:00
Christian Marangi
52a0873742 mac80211: update to version 6.18
Drop all upstreamed patch and refresh all affected patch.

Minor changes were needed to the
350-mac80211-allow-scanning-while-on-radar-channel due to changes in
6.18.

Also some changes were needed to downstream patch due to upstream commit
b74947b4f6ff ("wifi: cfg80211/mac80211: Add support to get radio index")

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:06 +01:00
Christian Marangi
63e2b17c01 generic: add pending patch fixing resource_size()
Add opending patch fixing resource_size(9 if resource start and end is
set to zero.

This is to indirectly fix a helper rework in ath11k qmi code that cause
firmware load panic.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:06 +01:00
Christian Marangi
5c513d1f65 generic: move reserved_mem backports patch to generic
Move reserved_mem backports patch from airoha to generic dir as it will
be also used by backports package based on 6.18.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:05 +01:00
Christian Marangi
2740ebdd60 generic: backport support for faux base driver
Backport support for faux base driver needed for backports package to
compile with kernel 6.18.

Link: https://github.com/openwrt/openwrt/pull/20964
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-08 00:37:05 +01:00
Álvaro Fernández Rojas
35dbdd644c odhcp6c: update to Git HEAD (2025-12-06)
1d6c4e794cdb src: convert allow_slaac_only to boolean
8cfe71daaad7 src: stop overriding allow_slaac_only values
aac34157167b odhcp6c: drop script_sync_delay override
05aa750fbe44 config: fix default value for allow_slaac_only

f19dd37fb4...1d6c4e794c

Also add myself as maintainer.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-07 11:50:44 +01:00
George Moussalem
9323ed52d0 qualcommax: ipq50xx: fix qca8337 dtc warnings
Add missing address-cells and size-cells properties under the switch's
ports node to fix a multitude of below build warnings:

Warning (reg_format): /soc@0/mdio@90000/ethernet-switch@11/ports/port@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Warning (avoid_default_addr_size): /soc@0/mdio@90000/ethernet-switch@11/ports/port@1: Relying on default #address-cells value

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20982
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-07 11:25:40 +01:00
George Moussalem
3bbb4f6ce7 qualcommax: ipq50xx: remove disabled partitions node
Although the bootloader tries to 'fixup' the qpic nand node, it actually
can't find it as the node was renamed to spi based on the new driver
architecture. The added benefit is that it also silences build warning:

Warning (spi_bus_reg): /soc@0/spi@79b0000/partitions: missing or empty reg property

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
---
Node rename:

old node name: qpic-nand@79b0000
new node name: spi@79b0000

Bootloader logs:

   Booting using the fdt blob at 0x44d3fc78
   Uncompressing Kernel Image ... OK
   Loading Device Tree to 4a3f6000, end 4a3ff805 ... OK
fdt_fixup_qpic: QPIC: unable to find node '/soc/qpic-nand@79b0000'
parse_fdt_fixup: unable to find node '/soc/qpic-nand@79b0000/'
Link: https://github.com/openwrt/openwrt/pull/20982

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-07 11:25:40 +01:00
Rosen Penev
a90fb76736 lantiq: tplink_tdw89x0: use led-sources for wifi LED
Avoids having to create a custom LED for wifi.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21059
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-06 19:30:22 +01:00
Mario Andrés Pérez
ff63c5cd82 bcm53xx: image: sync targets names with DT compatible
Some devices profile names and *.dts files are named without suffix
"-v1" but the DT compatible has the suffix. (xwr-3150 exception)

This breaks ASU sysupgrades since the default SUPPORTED_DEVICES is the
makefile image profile target and it does not match the actual DT
compatible sent by the ASU client.

This is not breaking sysupgrade because the platform implementation
does not depends on DEVICE_NAME(not use sysupgrade-TAR). And the
board_name() checks are done against the correct DT compatible.[1]

[1]: 09e7b24ceb/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh (L36-L62)
Fixes: https://github.com/openwrt/asu/issues/560
Fixes: https://github.com/openwrt/asu/issues/560#issuecomment-2083236275
Fixes: https://github.com/openwrt/asu/issues/1108
Fixes: https://forum.openwrt.org/t/luci-attended-sysupgrade-support-thread/230552/243
Fixes: c459a6b "bcm53xx: add support for Luxul FullMAC WiFi devices"
Fixes: 1d47f81 "bcm53xx: build images for Luxul ABR-4500 and XBR-4500 routers"
Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-06 18:55:49 +01:00
Goetz Goerisch
6c0ef7d4c8 odhcpd: update to Git HEAD (2025-12-04)
63f040e88b12 formal: fix workflow permissions
d970ae0ca4a3 router: improve RA PIO search logic
8fde62a82bdd router: rename router_clear_ra_pio
8b26b0124aed router: remove duplicated PIOs
d354ebb66cdc router: optimize duplicated PIO comparison
79252ed0c0c2 router: skip if branch in PIO clear functions

6fbd70c083...79252ed0c0

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21055
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-06 17:06:22 +01:00
David Bauer
00c8b5c612 libunwind: fix complie for PPC32
libunwind fails to compile because the include for the WORDSIZE
definition was missing when compiling with musl libc.

This lead to unw_word_t being defined as 64 bit long instead
of the correct 32 bit.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-12-06 01:49:16 +01:00
Shine
09e7b24ceb mpc85xx: p1010: Fix Sophos RED 15w NAND partitions
This partially reverts 78d259e7d2.
That commit broke mounting the root fs on Sophos RED 15w due to
partition size mismatch, and changed the partition sequence, causing
the OpenWrt partition numbers to change from mtd3:kernel/mtd4:ubi to
mtd4:kernel/mtd5:ubi.

Fixes: 78d259e7d2 ("mpc85xx: fix some dtc warnings")
Signed-off-by: Shine <4c.fce2@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20745
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-06 00:59:08 +01:00
Tianling Shen
e159d1ec81 rockchip: drop sdmmc speed limitation for RK3576/RK3588
The stability issue doesn't seem to be found on newer rockchip SoCs
like RK3528, RK3576 and RK3588, so drop the sdr50 limitation.

In addtion, the HS200 limitation for NanoPC T6 is also removed as
upstream fixed the real issue in mmc driver.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20432
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-06 00:56:32 +01:00
Álvaro Fernández Rojas
1842735a06 odhcp6c: update to Git HEAD (2025-12-04)
f19dd37fb467 odhcp6c: accept EUI64 and random for interface ID
e955729c781f formal: fix workflow permissions
9557d3e245aa vscode: set tabs to 8 whitespaces by default
98dfd156f399 src: fix shadowed local variables

f98b6ec823...f19dd37fb4

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-05 19:47:18 +01:00
Marcin Maj
3a10dd5967 ath79: fix platform check image mikrotik nor
Every attempt to update a device with NOR flash
and RouterBOOT v6 resulted in the error:
“RouterBOOT 6 and earlier requires ELF-in-YAFFS image.”
The cause was that xargs did not fully remove whitespace,
so the condition "$bootentry" != "kernel" always evaluated to true.

Signed-off-by: Marcin Maj <marcinmajsc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21034
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-05 10:26:59 +01:00
Christian Marangi
cc57e155a6 airoha: fix kernel panic from I2S driver
Commit 8f1914053b ("airoha: replace I2S patch with upstream pending
version") introduced a kernel panic with I2S driver.

Add the fixed patch to fix the kernel panic.

Fixes: 8f1914053b ("airoha: replace I2S patch with upstream pending version")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-05 00:54:38 +01:00
Christian Marangi
7b55651e61 airoha: enable I2S sound driver and add nodes for eMMC RFB board
Enable I2S sound driver and add nodes for eMMC RFB board since it's the
one that always have the I2C codec and can use the sound card.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 23:16:13 +01:00
Christian Marangi
8f1914053b airoha: replace I2S patch with upstream pending version
Replace I2S sound patch with upstream pending version. This adds ETDM
support and fix various bug in the downstream implementation.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 23:16:13 +01:00
Caleb James DeLisle
d6b4b63850 econet: basic Ethernet support
This is about as simple as it gets, it's able to start up and put
the onboard switch into dumb switch mode and then send untagged
frames which become available on every switch port.

It is out-of-tree to allow for rapid development and it is being
proposed now because even in this state it brings a lot of value
to the EcoNet platform and it is a fairly complex ethernet system
so it will take some time before the driver is in a state that
may be considered for upstreaming.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20685
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-04 22:58:00 +01:00
Caleb James DeLisle
dac466452b econet: standardize partitions in DTS files
In preparation for the introduction of ethernet, this patch normalizes the
partitions in the devices in DT so that the partition to upgrade will
always be called tclinux, no matter what it is called from the factory.
Also fix a math error in Nokia G240G-E partition table and remove leading
zeros from paritition offsets.

Finally, add NVMEM mac-address entries where they are left by the
factory. In preparation for the introduction of Ethernet and Wifi
support.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20685
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-04 22:58:00 +01:00
Tianling Shen
4582d25a66 rockchip: backport MMC CQE fixes
Added missing platform data struct for RK3576 to fix boot issues,
fixed general stability issues and also improved random write
performance.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21028
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-04 22:28:06 +01:00
Hauke Mehrtens
5aeaddc0c8 bcm47xx: Fix lzma-loader compilation
Fixes:
```
LzmaDecode.c: In function 'RangeDecoderReverseBitTreeDecode':
LzmaDecode.c:199:5: error: 'symbol' undeclared (first use in this function)
  199 |     symbol |= (bit << i);
      |     ^~~~~~
LzmaDecode.c:199:5: note: each undeclared identifier is reported only once for each function it appears in
```

Fixes: 4ffd5aa239 ("treewide: fix coccinelle checks")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-04 21:41:40 +01:00
Hauke Mehrtens
27e5d7ddd9 ramips: Fix cmpilation
Fixes this compile problem:
```
drivers/net/ethernet/ralink/esw_rt3050.c: In function 'rt3050_esw_init':
drivers/net/ethernet/ralink/esw_rt3050.c:1467:12: error: 'pdev' is used uninitialized [-Werror=uninitialized]
 1467 |         if (!pdev)
      |            ^
drivers/net/ethernet/ralink/esw_rt3050.c:1461:33: note: 'pdev' was declared here
 1461 |         struct platform_device *pdev;
      |                                 ^~~~
cc1: all warnings being treated as errors
```

Fixes: 4ffd5aa239 ("treewide: fix coccinelle checks")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-04 21:12:24 +01:00
Álvaro Fernández Rojas
4814636b9b generic: 6.12: backport b53 fixes for BCM5325
Replace pending b53 fixes patches with the accepted ones from net-next for
linux v6.19.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-04 19:29:54 +01:00
Christian Marangi
6c94b53f11 sdk: use GIT_COMMIT for buildbot SDK
Instead of using tag name, directly use git commit for the base feed
string if we detect we are generating an SDK from a buildbot (using
CONFIG_BUILDBOT)

This improve security and generates consistent feed.conf.default files
following the pattern used by feeds repository.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 19:20:55 +01:00
Christian Marangi
289172b00e sdk: invert logic for GIT_BRANCH and GIT_TAGNAME
There is currently a logic error with generating the base feed string.

In the scenario where the commit of a Tag match the latest commit of a
stable branch, the stable branch have priority over the tag name.

This results in generating SDK that actually target the branch instead
of the specific tag.

To fix this invert the logic and give priority to the tag name.

Fixes: #18583
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 19:20:38 +01:00
Christian Marangi
0338dd44d5 sdk: filter out main on GIT_BRANCH parsing
Branch named main was never filter out on parsing the GIT_BRANCH define.

Add main to the name of branch that should be filtered.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 19:08:08 +01:00
Christian Marangi
78a8cfb577 tools: gnulib: fix broken install of .m4 files
Makefile foreach works only on parsing the Makefile and in this specific
case only works if the package is already extracted and file actually
exist.

On scenario where the package still has to be built, foreach doesn't
find any file causing Host/Install to not install any .m4 file.

To handle this, use a shell for loop that scan files in the
Host/install.

Fixes: c820f097e0 ("tools: gnulib: install .m4 file with gl_ prefix")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-04 16:35:40 +01:00
Shiji Yang
9c6dbb0e3d busybox: fix regression for long long type dump support
Fix wrong output using '%d' format when byte count parameter is not
given.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21013
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-04 12:15:59 +01:00
Robert Marko
1db4155aa9 qca-nss-dp: update to Git HEAD (2025-11-24)
cdedfd891bdf nss-dp: fix hardware STP state sync with the kernel
19c51af0c5be nss-dp: switchdev: improve FDB cleanup for roaming

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-04 12:08:56 +01:00
Robert Marko
af853d3d38 rpcd: update to Git HEAD (2025-12-03)
a284e7751fa7 file: bump sz_size to 64 bits
ffb9961c1f8b file: provide user name and group name lookups for stat listings

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-04 11:06:48 +01:00
Goetz Goerisch
316a85ed91 odhcpd: update to Git HEAD (2025-12-01)
338ca8abb950 dhcpv4: support IPv6-only preferred (RFC8925)
7336992e6866 dhcpv6-ia: fix a crash when static lease isn't configured
a170d63874f2 src: fix shadowed local variables
90f503fc7ca6 ubus: fix shadow local variable
ef8de928da7f build: enable DHCPV4_SUPPORT and UBUS
def8adea9e6c statefiles: remove hosts entries from statefile
e568bde96e9f odhcpd: remove OAF_BROKEN_HOSTNAME
1fe60e14e468 odhcpd: remove OAF_STATIC
9ae348c07ce0 dhcpv6: remove OAF_TENTATIVE
d0e6bc4d1cc2 odhcpd: remove OAF_BOUND
7fddd3916664 statefiles: change ipv4 MAC statefile syntax
bb2da6dcb58d build: fix BUILD_ARGS
94ef124f726e dhcpv6-ia: fix crash in dhcpv6_free_lease()
6fbd70c08342 build: disable static libraries

d21e504b38...6fbd70c083

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21009
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-04 08:45:17 +01:00
Hauke Mehrtens
cd9229d061 treewide: Fix const compile errors
Fixes compile errors caused by static const arrays;

The lantiq firmware is const now.

ATTRIBUTE_GROUPS() does not take const.

Fixes: 5b263f3360 ("treewide: add const to static arrays")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-03 23:28:43 +01:00
Mikhail Zadorozhnyi
6f2325b23d mvebu: gl-mv1000: add devicetree patch for sdhci1
GL-MV1000 external SD controller was broken by a recent kernel update
due to a mistake in Device Tree: "regulator-gpio" was defined without
required "gpios" property.

Removing this regulator definition from the device tree fixes this issue
without any side effects so far.

"main" branch uses upstream devicetree for this device, so add a kernel
patch for the "mvebu" kernel family.

Relevant discussions:
https://github.com/openwrt/openwrt/issues/20309
https://github.com/openwrt/openwrt/pull/20378

Signed-off-by: Mikhail Zadorozhnyi <zador.blood.stained+git@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/20390
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-03 22:46:29 +01:00
Christian Marangi
8ad5f35a90 autoconf-archive: backport patch for C++23 support
Backport upstream patch for C++23 support on ax_cxx_compile_stdcxx.m4.

This is needed by Asterisk package to correctly configure.

It's currently not possible to bump to a more recent autoconf-archive
release 2024.10.16 as it's currently affected by multiple BUGs ([1])

[1] e1acc7a67b

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-03 20:00:21 +01:00
Christian Marangi
c820f097e0 tools: gnulib: install .m4 file with gl_ prefix
It was found that there is currently a conflict for the cond.m4 that
is also shipped by automake, making the gnulib one having priority causing
problem with finding AM_CONDITIONAL macro.

To handle this, install gnulib .m4 file with a gl_ prefix to the
filename.

This make sure gnulib .m4 file won't have name conflict with automake
.m4 default files permitting correct autoreconf run of any affected
package by this.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-03 18:44:42 +01:00
Robert Marko
5205c0c426 microchipsw: lan969x: add Microchip EV23X71A
Microchip EV23X71A is a LAN9696 based EVB.

Specifications:
* CPU: Microchip LAN9696 switch SoC
* DRAM: 1GB DDR4
* Storage:
	* 2MB QSPI NOR
	* 4GB eMMC
* Networking:
	* 24 x 10/100/1000 RJ45 via LAN8814 Quad PHY-s over QSGMII
	* 4 x 100/1000/2500/5000/10000 SFP+ ports
	* 1 x 10/100/1000 management RJ45 via LAN8840 PHY over RGMII (U-Boot too)
* USB: 1 x USB2.0 Type-A
* Management via USB-C (MCP2200):
	* UART @ 115200 baud
	* GPIO-s for bootstrap, reset and clock selection
* DIP switch for boostrap configuration
* LED-s:
	* 2 per networking port (Green and Yellow)
	* Green status LED
	* Yellow reset LED
* Hard reset button
* Power:
	* 12V DC barrel jack
	* 48/56V DC screw terminal
	* Selectable via toggle switch
* PTP support:
	* Sync-E DPLL ZL30732B to generate the board required clocks
	* Two SMAs for PTP and two for Station clock inputs and outputs
	* Two ITU-T G.8275-compliant RS-422 interfaces for PTP applications
* External PoE:
	* Option for PoE add-on, like EV14Y36A (IEEE 802.3af/at/bt Type 4
	standard com-pliant)
* Option for external CPU control via SPI and PCIe

Installation instructions:

1. Connect to UART via the USB-C port
2. Connect the management port
3. Boot and interrupt U-Boot
4. TFTP the OpenWrt initramfs image and boot it
5. SCP the OpenWrt eMMC GPT image to a running OpenWrt initramfs to /tmp
openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img.gz

And decompress it via:
gzip -d /tmp/openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img.gz

6. Wipe eMMC with:
dd if=/dev/zero of=/dev/mmcblk0 bs=1M

7. Flash OpenWrt eMMC image with:
dd if=/tmp/openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img
of=/dev/mmcblk0

After a restart OpenWrt will boot, and then regular sysupgrade can be used
for upgrades.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2025-12-03 12:13:17 +01:00
Robert Marko
88a404a2d1 microchipsw: add support for Microchip LAN969x switches
Add a new microchipsw target aimed add supporting Microchip switch
SoC-s.

Start by supporting LAN969x SoC-s as the first subtarget.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2025-12-03 12:13:17 +01:00
Rosen Penev
5e3a602def ath79: sitecom,wlrx100: use nvmem
Userspace handling is deprecated.

Also use led-sources for simplicity.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20508
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-03 00:55:26 +01:00
Rani Hod
ff1419f895 mediatek: filogic: add support for Widelantech WAP430X
This AX3000 flying saucer-shaped device is sold under a few names:
- Widelantech WAP430X
  http://www.widelantech.com/?m=home&c=View&a=index&aid=131
- Felicomm
- UeeVii UAP200 (sold on amazon.com)
True name, as marked on the PCB and as appears in the DTS, is WAP430X.

Hardware:
- SoC: Mediatek MT7981B
- RAM: 256MiB DDR3
- ROM: 16MiB NOR flash (Winbond 25Q128JVSQ)
- Wired: one GbE RJ45 port
- Wireless: Mediatek MT7976CN DBDC
- Antennas: Internal (two 2.4 GHz 4.5 dBi, three 5 GHz 6 dBi)
- GPIO: two blue LEDs (status, WLAN), one button (reset)
- Power: DC5521 (12V) or 802.3af PoE (48V 0.3A)
- UART: J500 on PCB [3v3] (Rx) (Tx) (Gnd), 115200n

Original firmware is GECOOS 8.0_2024081000, a fork of OpenWrt 21.02
created by Widelantech. All ports are closed except 443 (web management
interface) and 80 (redirects to 443). UART is locked down, but U-Boot
bootloader is friendly.

Installation is done via UART (see note below).

Method 1: press any key during boot to enter MTK U-Boot bootloader,
then choose option 2 (Upgrade firmware) and upload sysupgrade binary
via TFTP (or via Xmodem).

Method 2: put sysupgrade binary on a webserver (http, not https); after
GECOOS loads, choose option 4 (固件在线升级 = online firmware upgrade)
in the menu and enter the URL to the sysupgrade binary.

Note: GECOOS has a slick web management, and firmware can be uploaded
at https://6.6.6.6/#/system/sysupgrade but it's still not clear how to
convert the sysupgrade binary to a factory binary accepted by the web
interface (WIP).

Signed-off-by: Rani Hod <rani.hod@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20402
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-03 00:53:39 +01:00
Rosen Penev
e5b86c2320 ath79: ecb1xxx: use nvmem
Userspace handling is deprecated.

Also switch LED to led-sources for simplicity.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20529
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-03 00:01:41 +01:00
Rosen Penev
616b0cebe7 gpio-button-hotplug: use devm_kmemdup_array
Eliminates a manual memcpy.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19932
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-02 23:32:42 +01:00
Rosen Penev
5b263f3360 treewide: add const to static arrays
Allows more compiler optimization.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19932
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-02 23:32:42 +01:00
Rosen Penev
4ffd5aa239 treewide: fix coccinelle checks
Unneeded semicolon

WARNING comparing pointer to 0

WARNING: NULL check before some freeing functions is not needed.

WARNING: casting value returned by memory allocation function to (u32 *)

ERROR: allocation function on line 378 returns NULL not ERR_PTR on failure

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19932
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-02 23:32:42 +01:00
Rosen Penev
55b5e44673 ath79: ews511ap: use nvmem
Userspace handling is deprecated.

This is a weird one. It should be using u-boot,env, but the variable
name is unknown. Keep it as is.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20520
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-02 23:02:46 +01:00
gongzi miao
d0fcbddaad kernel: bump 6.12 to 6.12.60
changelog:
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.60

Signed-off-by: gongzi miao <miaogongzi0227@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21010
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-02 22:51:19 +01:00
Sven Eckelmann
141ac0b2bd realtek: dsa: rtl930x: Fix flow control with ingress shaping
Tests with ingress shaping and enabled flow control showed really high
packet loss. It seems like the MAC pause frames are not created correctly
when both burst high off is set to the same value as burst high on.

By default, RTL930x has set the burst high values to:

* on: 64K
* off: 32K

Using the same 1:2 ratio seems to solve the high packet loss rate during
UDP tests.

Fixes: 2e74eb6d93 ("realtek: dsa: rtl93xx: Support per port throttling")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/21011
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-02 10:42:24 +01:00
Felix Fietkau
2bc7978323 openssl: fix AES-GCM-SIV and AES-SIV with zero-length messages
Fix the cipher implementation to avoid treating empty input as finalizer.
This issue is fixed in the openssl 3.6 branch, but the fix approach from
that branch is not suitable for 3.5, since the code is completely different.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-12-01 19:20:14 +01:00
Robert Marko
5bdf1b8d9c qualcommax: fix CPR of_property_present conversion
CPR conversion to of_property_present is broken in multiple places, either
by leaving the comma after now the last argument or by attempting to replace
an instance that actually uses the returned length.

So, lets fix these in order for qualcommax to compile again.

Fixes: c9e7f32c4c ("treewide: use of_property_present")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-01 15:05:56 +01:00
Eric Schäfer
401c0a03f1 qualcommax: ipq807x: add support for Zyxel NWA210AX
The Zyxel NWA210AX is a wall- and ceiling-mountable access point (AP).

Hardware specifications:
- SoC: Qualcomm IPQ8071A
- RAM: 1 GB (Samsung K4A8G165WC-BCTD)
- Flash: 8 MB (Winbond W25Q64DW), 256 MB (Winbond W29N02GZ)
- Ethernet: 1x 2.5 Gbps RJ45 port (QCA8081), 1x 1 Gbps RJ45 port (AR8033)
- WiFi: 2.4 GHz 802.11ax/b/g/n (QCN5024), 5 GHz 802.11 ac/ax/n (QCN5054)
- Power: DC 12V/PoE 802.3at
- Button: Reset
- LEDs: Multicolour red/green/blue/white via LP5562

Installation/flashing instructions:
1. In OEM web interface navigate to gear icon → System → SSH and enable SSH.
2. Log in via SSH (username/password are the same as for the web interface).
3. Run "debug dual-image show".
4. Verify that output is "Current Image num: 1".
5. If this is not the case (i.e. if the output is "Current Image num: 0"):
   a. Either flash a fresh version of factory firmware, or
   b. run "debug dual-image set boot-image image1" and then run "reboot".
6. Log in via SSH again and verify that output is "Current Image num: 1".
7. Rename "openwrt-qualcommax-ipq807x-zyxel_nwa210ax-squashfs-factory.bin" to
   "openwrt.bin" to avoid upload errors in the OEM web interface.
8. Reopen OEM web interface, navigate to wrench icon → File Manager →
   Firmware Package and upload the bin file. Once the upgrade process is
   finished and OpenWrt has booted, the LED will light up green.

Switching between OpenWrt and OEM firmware:
- OpenWrt → Zyxel via ssh command "zyxel-bootconfig-ipq807x set image1".
- Zyxel → OpenWrt via ssh command "debug dual-image set boot-image image0".

This commit is based on the work of Pascal Beleiu  <pascal@beleiu.de>:
93ca21f3 (qualcommax: ipq807x: add support for Zyxel NWA210AX, 2025-03-17)

Signed-off-by: Eric Schäfer <eric@es86.de>
Link: https://github.com/openwrt/openwrt/pull/19828
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-01 14:30:27 +01:00
Rosen Penev
bda163eb7c ath79: add back mistakenly removed label
Fixes target builds.

Fixes: 592d4e6 ("ath79: mr600-v1: use led-sources for ath9k")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21008
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 11:56:18 +01:00
Álvaro Fernández Rojas
d7f777b41c generic: 6.12: backport bcm63xx-spi CS deassertion fix
Backport fix for premature SPI CS deassertion on RX-only transactions from
linux v6.18, which is needed for bmips (bcm63xx).

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-12-01 09:12:36 +01:00
Rany Hany
0e7a7e62fb wifi-scripts: add beacon_prot and spp_amsdu support
This adds support for beacon_prot and spp_amsdu in hostapd and
beacon_prot in wpa_supplicant (spp_amsdu is not relevant there).
Both options are disabled by default unless set in the config.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20793
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:51:31 +01:00
Shiji Yang
9f5cb25867 ipq40xx: dts: remove useless ethernet0 alias for WIA3300-20
The MAC addresses of this device are not assigned by the bootloader.
Therefore, this alias is useless.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20478
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:46:33 +01:00
Shiji Yang
7bbbe77504 ipq40xx: dts: convert WIA3300-20 SPI chipselect to hardware mode
On ipq40xx platform, some specific GPIO can be configured as hardware
controlled SPI CS pin. This commit is an example of how to convert the
chipselect pin to the hardware CS mode.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20478
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:46:33 +01:00
Rany Hany
c16d83184b wifi-scripts: change wifi-station's mac option into list
In the past PR[1] to add SAE wifi-station support, a commenter[2] requested
that the mac option be changed into a list. After trying to migrate my old
RADIUS setup I found myself wanting this change as well as it would simplify
my config. This patch does precisely that. Old configs that specify
`option mac ....` still work without any issues.

This change was done for both PSK and SAE. The schema was updated as well.

[1]: https://github.com/openwrt/openwrt/pull/17145
[2]: https://github.com/openwrt/openwrt/pull/17145#issuecomment-2523507953

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/17650
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:44:12 +01:00
Tomáš Macholda
ea6ee93060 mvebu: add support for Turris MOX
Adds support for Turris MOX, a modular router extendable by board modules (MOX B-G).

You can explore the idea behind the modules at: https://mox-configurator.turris.cz/

More information about Turris MOX can be found here: https://docs.turris.cz/hw/mox/intro/

Also works with Turris Shield (Turris MOX A and C with a simplified OS UI).

Specifications:
-----------------------

MOX A
- SoC: Marvell Armada 3720
- RAM: 512/1024 MB, DDR3
- Memory:
    - 8 MB SPI NOR Flash for U-Boot and rescue system
    - SD card slot
- 1x RJ-45, 1Gbps
- 1x USB 3.0
- 1x activity LED
- 1x reset button
- SDIO header
- misc pin header (UART, GPIO, JTAG, ...)

MOX B, G
- 1x mPCIe slot
- 1x SIM slot

MOX C
- 4x RJ-45, 1Gbps

MOX D
- SFP, 2.5Gbps

MOX E
- 8x RJ-45, 1Gbps

MOX F
- 4x USB 3.0

Module support:
-----------------------

Additional packages are needed for some modules.

MOX A (core)
- works as is

MOX B, G (mPCIe, mPCIe passthrough)
- works as is

MOX C, E (4x, 8x RJ-45)
- kmod-dsa
- kmod-dsa-mv88e6xxx

MOX D (SFP)
- kmod-sfp
- kmod-phy-marvell-10g

MOX F (4x USB 3.0)
- works as is

Wi-Fi 5, 3x3 card (WLE900VX)
- kmod-ath10k
- ath10k-board-qca988x
- ath10k-firmware-qca988x

Wi-Fi 6, DBDC, 2x2 card (MT7915DAN)
- kmod-mt7915e
- kmod-mt7915-firmware

Interface naming:
-----------------------

- MOX A's RJ-45 is assigned to `eth0`.
- MOX C, E (4x, 8x RJ-45) are assigned to `lan<number>@eth1`
- If MOX D (SFP) is connected directly to MOX A, the resulting interface
  is `eth1`. If it's connected through MOX E (8x RJ-45), the resulting
  interface is `sfp@eth1`.

Quirks:
-----------------------

- MOX is sensitive to the order of connected modules. Verify that the
  confguration is valid at: https://mox-configurator.turris.cz/
- `CONFIG_MOXTET` and `CONFIG_GPIO_MOXTET` need to be enabled in kernel
  config. Moxtet is a bus protocol needed to discover and configure MOX
  modules. It must be compiled into the kernel for the modules to work.
  Though it's very small so it won't bloat up the kernel image.

Flashing instructions:
-----------------------

1. Download `openwrt-*-ext4-sdcard.img.gz` and `gunzip` it.
2. Insert an SD card and flash the image to it using dd:
   dd if=openwrt-*-ext4-sdcard.img.gz of=/dev/mmcblk0 bs=4096 conv=fsync
3. Plug the SD card into MOX.

Troubleshooting:
-----------------------

- https://docs.turris.cz/hw/serial/#turris-mox
- https://docs.turris.cz/hw/mox/rescue-modes/

Signed-off-by: Tomáš Macholda <tomas.macholda@nic.cz>
Link: https://github.com/openwrt/openwrt/pull/20356
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:32:14 +01:00
Rany Hany
cfb976d1d7 wifi-scripts: make ft_iface configurable
This is useful as there are cases where no network is configured
or the configured network is isolated (APs are blocked from
communicating with each other over it). In both cases, it would make
sense to set ft_iface to another interface dedicated to FT over DS
traffic.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20797
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:25:16 +01:00
INAGAKI Hiroshi
5baaee843a ath79: add support for NEC Aterm WF1200HP2
NEC Aterm WF1200HP2 is a 2.4/5 GHz band 11ac (Wi-Fi 5) router with FE
ports, based on AR9344.

Specification:

- SoC              : Atheros AR9344
- RAM              : DDR2 128 MiB (2x ESMT M14D5121632A-2.5BG2A)
- Flash            : SPI-NOR 8 MiB (Macronix MX25L6406EM2I-12G)
- WLAN             : 2.4/5 GHz 2T2R
  - 2.4 GHz        : Atheros AR9344 (SoC)
  - 5 GHz          : Qualcomm Atheros QCA9882
- Ethernet         : 4x 10/100 Mbps
  - switch         : Atheros AR9344 (SoC)
- LEDs/Keys (GPIO) : 12x/4x
  - note           : all LEDs are controlled by ath10k chip (QCA9882)
- UART             : through-hole on PCB (J1)
  - assignment     : 3.3V, GND, NC, TX, RX from tri-angle marking
  - settings       : 9600n8 (U-Boot: 115200n8)
- Power            : 12 VDC, 0.7 A (Max. 8 W)
- Stock OS         : NetBSD based

Flash instruction using initramfs-factory.bin image (StockFW WebUI):

1. Boot WF1200HP2 with router mode
2. Access to the WebUI ("http://aterm.me/" or "http://192.168.10.1/") on
   the device and open firmware update page ("ファームウェア更新")
3. Select the OpenWrt initramfs-factory.bin image and click update
   ("更新") button
4. After updating, the device will be rebooted and booted with OpenWrt
   initramfs image
5. On the initramfs image, upload (or download) uboot.bin and
   sysupgrade.bin image to the device
6. Replace the bootloader with uboot.bin image

   mtd write <uboot.bin image> bootloader

7. Perform sysupgrade with sysupgrade.bin image

   sysupgrade <sysuppgrade image>

8. Wait ~120 seconds to complete flashing and rebooting

Flash instruction using initramfs-factory.bin image (bootloader CLI):

 1. Connect and open serial console
 2. Power on WF1200HP2 and interrupt bootloader by ESC key
 3. Login to the bootloader CLI with the password "chiron"
 4. Start TFTP server by "tftpd" command
 5. Upload initramfs-factory.bin via tftp from your computer

    example (Windows): tftp -i 192.168.0.1 PUT initramfs-factory.bin

 6. Boot initramfs image by "boot" command
 7. On the initramfs image, backup the stock bootloader and firmware if
    needed
 8. Upload (or download) uboot.bin and sysupgrade.bin image to the
    device
 9. Replace the bootloader with uboot.bin image (see above)
10. Perform sysupgrade with sysupgrade.bin image (see above)
11. Wait ~120 seconds to complete flashing and rebooting

Notes:

- The stock bootloader requires the unknown filesystem on firmware area
  in the flash chip. Booting OpenWrt from that filesystem cannot be
  handled, so the bootloader needs to be replaced to mainline U-Boot
  before OpenWrt installation.

Known issues:

- All LEDs on the front side are connected to the GPIO controller on the
  ath10k chip (QCA9882) and controlled by it. The current ath10k driver
  supports only one LED as "ath10k-phyN", but using as a GPIO controller
  is not supported yet. As a result, all 12x LEDs on the front side
  cannot be controlled by users.

MAC Addresses:

LAN    : C0:25:A2:xx:xx:44 (config,  0x6 (hex))
WAN    : C0:25:A2:xx:xx:45 (config,  0xc (hex))
2.4 GHz: C0:25:A2:xx:xx:46 (config,  0x0 (hex))
5 GHz  : C0:25:A2:xx:xx:47 (config, 0x12 (hex))

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20611
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:17:48 +01:00
INAGAKI Hiroshi
29014b54d4 ath79: add support for NEC Aterm WF1200HP
NEC Aterm WF1200HP is a 2.4/5 GHz band 11ac (Wi-Fi 5) router with FE
ports, based on AR9344.

Specification:

- SoC              : Atheros AR9344
- RAM              : DDR2 128 MiB (2x ESMT M14D5121632A-2.5BG2A)
- Flash            : SPI-NOR 8 MiB (Macronix MX25L6406EM2I-12G)
- WLAN             : 2.4/5 GHz 2T2R
  - 2.4 GHz        : Atheros AR9344 (SoC)
  - 5 GHz          : Qualcomm Atheros QCA9882
- Ethernet         : 4x 10/100 Mbps
  - switch         : Atheros AR9344 (SoC)
- LEDs/Keys (GPIO) : 12x/4x
  - note           : all LEDs are controlled by ath10k chip (QCA9882)
- UART             : through-hole on PCB (J1)
  - assignment     : 3.3V, GND, NC, TX, RX from tri-angle marking
  - settings       : 9600n8 (U-Boot: 115200n8)
- Power            : 12 VDC, 0.7 A (Max. 8 W)
- Stock OS         : NetBSD based

Flash instruction using initramfs-factory.bin image (StockFW WebUI):

1. Boot WF1200HP with router mode
2. Access to the WebUI ("http://aterm.me/" or "http://192.168.10.1/") on
   the device and open firmware update page ("ファームウェア更新")
3. Select the OpenWrt initramfs-factory.bin image and click update
   ("更新") button
4. After updating, the device will be rebooted and booted with OpenWrt
   initramfs image
5. On the initramfs image, upload (or download) uboot.bin and
   sysupgrade.bin image to the device
6. Replace the bootloader with uboot.bin image

   mtd write <uboot.bin image> bootloader

7. Perform sysupgrade with sysupgrade.bin image

   sysupgrade <sysuppgrade image>

8. Wait ~120 seconds to complete flashing and rebooting

Flash instruction using initramfs-factory.bin image (bootloader CLI):

 1. Connect and open serial console
 2. Power on WF1200HP and interrupt bootloader by ESC key
 3. Login to the bootloader CLI with the password "chiron"
 4. Start TFTP server by "tftpd" command
 5. Upload initramfs-factory.bin via tftp from your computer

    example (Windows): tftp -i 192.168.0.1 PUT initramfs-factory.bin

 6. Boot initramfs image by "boot" command
 7. On the initramfs image, backup the stock bootloader and firmware if
    needed
 8. Upload (or download) uboot.bin and sysupgrade.bin image to the
    device
 9. Replace the bootloader with uboot.bin image (see above)
10. Perform sysupgrade with sysupgrade.bin image (see above)
11. Wait ~120 seconds to complete flashing and rebooting

Notes:

- The stock bootloader requires the unknown filesystem on firmware area
  in the flash chip. Booting OpenWrt from that filesystem cannot be
  handled, so the bootloader needs to be replaced to mainline U-Boot
  before OpenWrt installation.

Known issues:

- All LEDs on the front side are connected to the GPIO controller on the
  ath10k chip (QCA9882) and controlled by it. The current ath10k driver
  supports only one LED as "ath10k-phyN", but using as a GPIO controller
  is not supported yet. As a result, all 12x LEDs on the front side
  cannot be controlled by users.

MAC Addresses:

LAN    : C0:25:A2:xx:xx:44 (config,  0x6 (hex))
WAN    : C0:25:A2:xx:xx:45 (config,  0xc (hex))
2.4 GHz: C0:25:A2:xx:xx:46 (config,  0x0 (hex))
5 GHz  : C0:25:A2:xx:xx:47 (config, 0x12 (hex))

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20611
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:17:48 +01:00
INAGAKI Hiroshi
5acccdc5ae uboot-ath79: add FE profile for NEC Aterm series (AR9344)
Add ar9344_nec_aterm_fe profile for NEC Aterm WF1200HP and WF1200HP2
based on Atheros AR9344, but using internal FE switch instead of
external GbE switch.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20611
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:17:47 +01:00
Andrew LaMarche
e11e1c18ee ramips: add support for TP-Link Archer AX21
This patch adds support for the TP-Link Archer AX21 v4.

Device specification
--------------------
SoC Type:	Mediatek MT7621DAT
RAM:		DDR (128MB)
Flash:		ESMT EN25QH128A (16MB)
Ethernet:	5x (4 lan, 1 wan) via embedded switch/SoC built-in
Wi-Fi:		2x2 2.4GHz via MT7975DN, 2x2 5GHz via MT7905DAN
LEDs:		Power, 2.4GHz, 5GHz, WAN, LAN, WPS
Buttons:	Reset, WPS

Installation
------------

Upload the factory image using the Web UI.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20932
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:11:23 +01:00
Rosen Penev
fb1e8a446d ath79: ubnt: nvmem calibration
Userspace handling is deprecated.

Moved pcie wifi nodes out of dtsi as these devices differ in wifi
chipsets and thus calibration size. Added compatible lines too.

Removed pointless label_mac assignments as label-mac-device is already
implemented.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20303
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:03:06 +01:00
Richard Fröhning
f57a0e8db3 mediatek-filogic: assign WAN netdev trigger to blue:wan LED for cudy wr3000e
- rename blue:wan-online to blue:wan
- assign wan netdev trigger to blue:wan

Signed-off-by: Richard Fröhning <misanthropos@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20808
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:57:23 +01:00
Rosen Penev
579d4654c7 ath79: ar9344: use led-sources for ath9k
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19865
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:54:06 +01:00
Til Kaiser
5629e06cf2 ramips: mt76x8: add Teltonika RUT976 support
This commit adds support for the Teltonika RUT976, part
of the RUTE series, which is very similar to the RUT956.
The RUT976 now has a 5G modem and the flash size has doubled.

Specification:
- MediaTek MT7628AN SoC
- 128 MB RAM
- 32MB Flash
- 4x 10/100 Mbps Ethernet, with passive PoE support on LAN1
- MediaTek MT7628AN 2.4 GHz 802.11n WiFi
- Quectel RG255C 5G modem
- GNSS
- RS232, DB9 connector, Cypress ACM via USB, /dev/ttyACM0
- RS485 /dev/ttyS1
- microSD card slot
- 2.0 USB Type-A HOST port
- analog 0-24V input (MCP3221)
- Relay
- 2x Digital input
- 2x Digital output
- 2x SIM slot (can be swapped via GPIO)
- eSIM (depends on hardware configuration, can be swapped via GPIO)

GPIO:
 - 1 button (Reset)
 - 7 LEDs (power, status green/red, RSSI 1,2,3,4,5)
 - 5 Modem control (power button, reset, status, SIM select, eSIM select)
 - 2 Digital input
 - 2 Digital output
 - 1 Isolated input
 - 1 RS485 tx enable
 - 1 RS485 rx enable
 - 1 Relay
 - 1 Data Carrier Detect (DCD)

Flashing via OEM WebUI:
1. Download the firmware image *-squashfs-factory.bin
2. Upload firmware image via OEM WebUI firmware update, do not keep settings

To revert back to OEM firmware:
https://wiki.teltonika-networks.com/view/Bootloader_menu

Mobile data connection:
Create proto qmi interface.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/20933
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:49:57 +01:00
Til Kaiser
7ff854a197 uqmi: skip registration state check if not supported
The Quectel RG255C modem used in the Teltonika RUT976 does not support
the 'Get Serving System' QMI command, returning "Invalid QMI command".
Without this change, the script would fail even though the connection
could be established successfully.

This patch skips the registration state check if the command is not
supported and relies on subsequent checks instead.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/20933
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:49:57 +01:00
Til Kaiser
902b25abf3 generic: 6.12: backport net-usb-qmi_wwan: add Quectel RG255C
Backport support for the Quectel RG255C USB modem.
This modem is used, among others, on the Teltonika RUT976.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/20933
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:49:57 +01:00
Til Kaiser
93c29343ad ramips: split Teltonika RUT9M SPI-NOR layout into separate dtsi
Introduce mt7628an_teltonika_rut9m.dtsi to hold the SPI-NOR flash
definition and partition layout specific to the RUT9M series.

This refactor prepares for supporting the Tetonika RUT976
(part of the RUTE series), which shares most hardware with
RUT9M devices but has a different flash layout.

Update RUT9x1 and RUT9x6 DTS files to include the new dtsi.
Existing RUT9M devices remain unchanged.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/20933
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 23:49:57 +01:00
Schneider Azima
b2648d8951 mediatek: add support for Mercusys MR85X
This commit adds support for Mercusys MR85X router.

Device specification:
 - SoC: Mediatek MT7981b, Cortex-A53, 64-bit
 - RAM: 512MB
 - Flash: SPI NAND GigaDevice GD5F1GQ5UEYIGY (128 MB)
 - Ethernet: Realtek rtl8367s + 2.5Gbe Airoha en8811h
 - Ethernet: 1x2.5Gbe (WAN 2.5Gbps), 3xGbe (LAN 1Gbps, port0, port1, port2)
 - Wireless: 2.4GHz (802.11 b/g/n/ax)
 - Wireless: 5GHz (802.11 a/n/ac/ax)
 - LEDs: 1 amber and 1 green status LEDs, 4 green gpio-controlled LEDs
   on ethernet ports
 - Buttons: 2 (reset,wps)
 - Bootloader: Main U-Boot - U-Boot 2022.07-rc3. Additionally, both UBI
   slots contain "seconduboot" (also U-Boot 2022.07-rc3)

Installation (UART):
 - Place OpenWrt initramfs-kernel image on tftp server with IP 192.168.1.2
 - Attach UART, switch on the router and interrupt the boot process by
   pressing 'Ctrl-C'.
 - Set the uboot environment for startup.
   setenv tp_boot_idx 0; saveenv
   If the bootarg is set to boot from ubi1, also change it to ubi0.
 - Load and run OpenWrt initramfs image.
   setenv serverip 192.168.1.2; setenv ipaddr 192.168.1.1; tftpboot initramfs-kernel.bin; bootm
 - Browse IP 192.168.1.1, upload the 'sysupgrade' image and do upgrade.

Recovery:
 - Press Reset button and power on the router.
 - Navigate to U-Boot recovery web server (http://192.168.1.1/) and
   upload the OEM firmware.

Stock layout:
0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"

ubi0/ubi1 format:
U-Boot at boot checks that all volumes are in place:
+-------------------------------+
| Volume Name: uboot   Vol ID: 0|
| Volume Name: kernel  Vol ID: 1|
| Volume Name: rootfs  Vol ID: 2|
+-------------------------------+

MAC addresses:
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| label   | 00:FF:xx:xx:xx:EE | label     |
| WAN     | 00:FF:xx:xx:xx:EF | label+1   |
| LAN     | 00:FF:xx:xx:xx:EE | label     |
| WLAN 2g | 00:FF:xx:xx:xx:ED | label-1   |
| WLAN 5g | 00:FF:xx:xx:xx:EC | label-2   |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file "default-mac".
OEM wireless eeprom is also there, file "MT7981_EEPROM.bin".

Signed-off-by: Schneider Azima <Schneider-Azima12@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/19187
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 22:59:34 +01:00
Schneider Azima
c79c32b4e5 mediatek: build rtl8367s_gsw as a kernel module
The RTL8367S_GSW config for filogic target is not set by default.
This switch model can be recognized by multiple drivers. Configure it as an optional module instead of default set in config.

Signed-off-by: Schneider Azima <Schneider-Azima12@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/19187
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 22:59:28 +01:00
Rosen Penev
f190a5e842 kernel: remove uboot,env hack
Since everything got migrated to the layouts driver, this is no longer
needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20948
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 20:18:08 +01:00
Aleksander Jan Bajkowski
48c9e55094 kernel: backport upstream Realtek PHY patches
Backport of the latest upstream Realtek PHY patches. WoL uses
devm_pm_set_wake_irq(), so the patch that adds this function
has also been backported.

Changelog:
4465ae435ddc net: phy: realtek: create rtl8211f_config_phy_eee() helper
bb78b71faf60 net: phy: realtek: eliminate priv->phycr1 variable
e1a31c41bef6 net: phy: realtek: allow CLKOUT to be disabled on RTL8211F(D)(I)-VD-CG
910ac7bfb1af net: phy: realtek: eliminate has_phycr2 variable
27033d069177 net: phy: realtek: eliminate priv->phycr2 variable
8e982441ba60 net: phy: realtek: create rtl8211f_config_rgmii_delay()
b826bf795564 net: phy: realtek: fix RTL8211F wake-on-lan support

Tested on Netgear WAX206 with RTL8221B-VB-CG.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20987
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:39:50 +01:00
Rosen Penev
c9e7f32c4c treewide: use of_property_present
Easier to read and reason about.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19951
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:18:06 +01:00
Hauke Mehrtens
8d2d49195f toolchain: glibc: Update glibc 2.41 to recent HEAD
373408c19f stdlib: resolve a double lock init issue after fork [BZ #32994]
62928cf7d8 elf: Do not add a copy of _dl_find_object to libc.so
f48de98bce elf: Extract rtld_setup_phdr function from dl_main
513629b14d elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943)
1502c248d5 nptl: Fix SYSCALL_CANCEL for return values larger than INT_MAX (BZ 33245)
daa4de5253 AArch64: Avoid memset ifunc in cpu-features.c [BZ #33112]
0bb6dad5af AArch64: Optimize algorithm in users of SVE expf helper
2a0b52fdd6 AArch64: Optimize inverse trig functions
307a8a4434 AArch64: Improve codegen in SVE log1p
503f7a7d33 AArch64: Optimize SVE exp functions
6db0f659c8 AArch64: Optimise SVE FP64 Hyperbolics
c467918138 AArch64: Improve codegen SVE log1p helper
330cd035df Remove <libc-tsd.h>
f409ec073f Use proper extern declaration for _nl_C_LC_CTYPE_{class,toupper,tolower}
5d8614b284 ctype: Fallback initialization of TLS using relocations (bug 19341, bug 32483)
940d821afb Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables [BZ #33234]
4a3e5f1e4c elf: Introduce separate _r_debug_array variable
9d6577fdff elf: Introduce _dl_debug_change_state
b05ce0de3d elf: Restore support for _r_debug interpositions and copy relocations
85780b6055 elf: Compile _dl_debug_state separately (bug 33224)
dd87fcda43 x86-64: Add GLIBC_ABI_GNU2_TLS version [BZ #33129]
e2d9e9eb26 x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212]
3f3b4fdd0b elf: Fix handling of symbol versions which hash to zero (bug 29190)
42f9c70ac2 elf: Test dlopen (NULL, RTLD_LAZY) from an ELF constructor
aa5dbd5332 elf: Preserve _rtld_global layout for the release branch
c1bec0b52d i386: Update ___tls_get_addr to preserve vector registers
7aa907241c i386: Also add GLIBC_ABI_GNU2_TLS version [BZ #33129]
ed4672abb5 i386: Add GLIBC_ABI_GNU_TLS version [BZ #33221]
a52c9b75c7 Optimize __libc_tsd_* thread variable access
9867e44cdc AArch64: Fix SVE powf routine [BZ #33299]
cf926cd7fb nss: Group merge does not react to ERANGE during merge (bug 33361)
4b1f8c90f9 x86: Detect Intel Wildcat Lake Processor
7c0632472d x86: Detect Intel Nova Lake Processor
580746904b x86: fix wmemset ifunc stray '!' (bug 33542)
1f57ffdf35 aarch64: Disable ZA state of SME in setjmp and sigsetjmp
97076e0cf1 aarch64: update tests for SME
1a0ee26714 aarch64: define macro for calling __libc_arm_za_disable
889ae4bdbb aarch64: clear ZA state of SME before clone and clone3 syscalls
e4ffcf32b9 aarch64: tests for SME
5bf8ee7ad5 aarch64: fix cfi directives around __libc_arm_za_disable
75b6b263e9 aarch64: Do not link conform tests with -Wl,-z,force-bti (bug 33601)
215e9155ea aarch64: fix includes in SME tests
360f60fb63 AArch64: Optimise SVE scalar callbacks
ca489fc802 AArch64: Fix instability in AdvSIMD tan
442cc3901b AArch64: Fix instability in AdvSIMD sinh
1e16b570bb AArch64: fix SVE tanpi(f) [BZ #33642]
5c6445672a AArch64: Fix and improve SVE pow(f) special cases
040256e79b ppc64le: Restore optimized strcmp for power10
f8cdc03e1e ppc64le: Restore optimized strncmp for power10
6a0b8e3665 ppc64le: Power 10 rawmemchr clobbers v20 (bug #33091)

Link: https://github.com/openwrt/openwrt/pull/20989
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:14:52 +01:00
Rosen Penev
2f30e14c49 ath79: convert pcie gpios to led-sources
Simpler dts.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19860
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:06:13 +01:00
Rosen Penev
099807bea5 ath79: fix some ath10k LEDs
ath10k loads before ath9k and thus ends up as phy0.

Also use led-sources to avoid some confusion.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19860
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:06:13 +01:00
Rosen Penev
592d4e67c6 ath79: mr600-v1: use led-sources for ath9k
The ath9k driver creates an ath9k LED by default. Instead of having a non
functional LED, configure it properly and remove the extra as it's not
needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19860
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 19:06:13 +01:00
Vincent Li
d4dcb94968 loongarch64: add Loongson PCI DWMAC as built-in
Add the CONFIG_DWMAC_LOONGSON driver to the loongarch64 kernel
configuration as a built-in module.

This driver is required for the integrated Ethernet controller found on
modern Loongson devices such as the 3A6000 NUC and 2K3000. Including it
by default ensures these popular devices have network functionality
out-of-the-box.

Configuration changes were made via `make kernel_menuconfig` for the
loongarch64 target.

Ref: https://github.com/openwrt/openwrt/issues/20945
Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20975
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 18:53:03 +01:00
Brian Lee
e7086d7a2f mediatek: filogic: add support for ASUS TUF-AX4200Q
ASUS TUF-AX4200Q(TUF 小旋风Pro WiFi6 AX4200) is a home router that adds an additional 2.5G Ethernet port to ASUS TUF-AX4200.

Hardware
- - - - - - - -
- SOC   : MediaTek MT7986
- RAM   : 512MB DDR3
- FLASH : 256MB SPI-NAND (Winbond W25N02KV)
- WIFI  : Mediatek MT7986 DBDC 802.11ax 2.4/5 GHz
- ETH   : MediaTek MT7531 Switch
          MaxLinear GPY211C 2.5 N-Base-T PHY (WAN)
          MaxLinear GPY211C 2.5 N-Base-T PHY (LAN)
- UART  : 3V3 115200 8N1 (Pinout silkscreened / Do not ocnnect VCC)

Installation
- - - - - - - -
Vendor-UI Method:

1. Download or make the OpenWrt initramfs.trx image
2. Connect the PC via LAN to one of the yellow router ports and wait until your PC to get a DHCP lease.
3. Browse to http://192.168.50.1/
4. If your router is brand new, finish the setup process and log into the Web-UI.
5. Navigate to Administration -> Firmware Upgrade and upload the downloaded OpenWrt image.
6. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device using SCP and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>

TFTP Method:

1. Download the OpenWrt initramfs image.
   Copy the image to a TFTP server reachable at 192.168.1.70/24.
   Rename the image to tufax4200q.bin.

2. Connect the PC with TFTP server to the TUF-AX4200Q.
   Set a static ip on the ethernet interface of your PC.
   (IP address: 192.168.1.70, subnet mask: 255.255.255.0)
   Connect to the serial console,
   interrupt the autoboot process by pressing '4' when prompted.

3. Download & Boot the OpenWrt initramfs image.

   $ setenv ipaddr 192.168.1.1
   $ setenv serverip 192.168.1.70
   $ tftpboot 0x46000000 tufax4200q.bin
   $ bootm 0x46000000

4. Wait for OpenWrt to boot.
   Transfer the sysupgrade image to the device using SCP and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>

(based on support for ASUS RT-AX52 by achterin and trx image generation by remittor)

Signed-off-by: Brian Lee <larte332@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20900
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-30 18:45:40 +01:00
Alexandru Gagniuc
95bd7a76a1 qualcommbe: update ipq9574 PCS driver
Update the ipq9574 PCS driver the version provided by Qualcomm via
github. The updated driver simplifies link up handling by removing
unnecessary clock rate changes.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20993
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-30 16:51:12 +01:00
Alexandru Gagniuc
cc6b9ff17b qualcommbe: drop "uniphy" from pcs node labels
According to Qualcomm developers, the pcs nodes on IPQ9574 will be
labeled "pcs<n>" and "pcs<n>_ch<m>". The proposed IPQ5424 changes
include the simpler labels. Rename the IPQ95xx nodes for consistency.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20993
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-30 16:51:12 +01:00
Alexandru Gagniuc
6891dc2562 qualcommbe: use ipq_pcs_get/put() in PPE (MAC) driver
ipq_unipcs_create/destroy() are provided by an older version of the
IPQ9574 PCS driver. Use the renamed versions ipq_pcs_get/put() to
allow updating the PCS driver.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20993
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-30 16:51:12 +01:00
Álvaro Fernández Rojas
2b3efc300a odhcp6c: update to Git HEAD (2025-11-24)
f98b6ec82362 all: implement RFC8910 §3 URI equality check
3484787e9a5b all: implement RFC8910 captive portal (CP) option
25a0c40580f9 dhcpv6: refactor variable names
165bcc68ef2b dhcpv6: refactor variable names
8f60e7b1833c dhcpv6: refactor variable names
319305fceeef dhcpv6: refactor variable names
dcb53c496513 dhcpv6: assign a new field for prefix exclusion length
080b64d70e73 dhcpv6: refactor variable names
66dd9b26b73a dhcpv6: refactor variable names
f038a50604ae odhcp6c: set environment script to its current location
5f63e7e47dfc github: ci: add MIPS64, PowerPC64 and RISCV64
038407eca8a4 dhcpv6: restart DHCPv6 on receipt of RA containing a new prefix
af9968c0293f dhcpv6: fix processing PIO exclusion loop variable collision
5492f09ec075 odhcp6c: apply draft-ietf-6man-slaac-renum-11 lifetime rules
38a31eb29a48 src: add fallthrough attribute
b46d79c8792c odhcp6c: properly guard attributes

cbc8ff0e62...f98b6ec823

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-30 16:46:57 +01:00
Rosen Penev
f614322d28 mediatek: rtl8367s: modernize gpio API
Upstream is strongly considering removing of_gpio.h. As of this commit,
3 upstream drivers remain with actual usage.

Get ahead of upstream and use the GPIOD API before the OF one goes away.

Rework to remove mediatek,reset-pin in favor of the standard
reset-gpios.

Fix wrong high GPIO.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20088
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-29 21:08:39 +01:00
Coia Prant
23a070dfb1 ramips: add support for Hongdian H8850 v20
This is an industrial 4G router equipped with OpenWrt SNAPSHOT OEM
customized version

WARNING: The original firmware device tree is modified from evb
boards, and the device tree name is evb board. This submitted device
tree is a modified version, which deletes the non-this-device parts
and adds GPIO watchdog.

Specification:
- SoC: MediaTek MT7628DAN
- Flash: 16 MB
- RAM: 64 MB
- Power: DC 5V-36V 1.5A
- Ethernet: 1x WAN/LAN, 3x LAN (10/100 Mbps)
- Wireless radio: 802.11n 2.4g-only
- LED:
  System/Power (PWR): Always Off
  Modem (NET): GPIO/3 active-low
  LAN: Always On
  RF (Modem Signal): GPIO/2 active-low
  WIFI: GPIO/44 active-low
- Button:
  WPS / RESET: GPIO/11 active-low
- UART: 1x UART on PCB - 115200 8N1
- GPIO Watchdog: GPIO/0 mode=toggle timeout=1s
- Modem: 1x Built-in modem on board (Power: GPIO/4 active-high)
- SIM Slots: 1x SIM Slots

Issue:
- Factory partition not store mac address on original firmware

Flash instruction:
Using TTL:
1. Connect the board to the computer via TTL.
2. Enter original firmware failsafe mode.
3. Use wget download firmware to board /tmp
4. Use command "mtd -r write openwrt-ramips-mt76x8-hongdian_h8850-v20-squashfs-sysupgrade.bin firmware"
   to flash

Original Firmware Dump / More details:
https://blog.gov.cooking/archives/research-hongdian-h8850-v20-and-flash.html

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Tested-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20259
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-29 19:19:46 +01:00
Rosen Penev
f891609fab qualcommbe: fix wrongly edited patch
Line count was incorrect

Fixes: 96fc2fa ("treewide: convert u-boot,env to nvmem-layout")

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2025-11-29 18:11:32 +01:00
George Sapkin
9f6c16e722 formal: fix workflow permissions
Fix formality check permissions that are needed to post optional
summaries back to the PR.

Link: https://github.com/openwrt/actions-shared-workflows/pull/64
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/20930
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 18:05:53 +01:00
Shiji Yang
1aee2f5567 ipq40xx: convert CRLF line-ending to LF for Linksys MR6350
Use Unix LF style instead of Windows CRLF style.

Fixes: 00bb18b851 ("ipq40xx: Add support for Linksys MR6350")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20973
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 18:04:38 +01:00
Robert Marko
39f2019985 Revert "treewide: fixup ath10k nodes"
This reverts commit 741689a335.

Only after merging I remebered the reason why it was changed to 0,0 [1].

[1] 1e20f7b6c6

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 17:56:11 +01:00
Shiji Yang
60521b6e5a gitattributes: automatically convert dts file CRLF line endings to LF
It seems that some developers prefer to use the Windows OS to add new
device support. Add new attributes for device tree files so that the
CRLF line endings can be automatically normalized to LF.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20978
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 17:52:35 +01:00
Rosen Penev
734eacf313 ramips: rt3xxx: fix wifi node address
The reg value says it should be wifi@1,0, not wifi@0,0.

Should fix dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20351
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 17:46:36 +01:00
Rosen Penev
741689a335 treewide: fixup ath10k nodes
Use compatible before reg for consistency.

Also fixup the wifi node name for some qualcomm platforms where the slot
is 1 instead of 0.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20351
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 17:46:36 +01:00
Rosen Penev
66672e7021 ath79: tplink_tl-wdrxxxx: use led-sources for ath9k
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19861
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-29 00:46:36 +01:00
Hauke Mehrtens
c84025dea2 uboot-mediatek: mtd: spinand: esmt: add support for F50L1G41LC
Add support for esmt F50L1G41LC flash chip. It is used in some recent
Cudy devices.

Link: https://github.com/openwrt/openwrt/pull/20962
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 23:42:29 +01:00
Hauke Mehrtens
9424b2b786 kernel: mtd: spinand: esmt: add support for F50L1G41LC
Backport upstream patch to add support for the ESMT F50L1G41LC flash
chip. It is used in multiple Cudy products manufactured starting
November 2025.

Link: https://github.com/openwrt/openwrt/pull/20962
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 23:42:29 +01:00
George Moussalem
1f879b8839 qualcommax: ipq50xx: split firmware variants and refactor QCN6122 support
IPQ5018 based boards come in multiple wireless architectures.
The SOC itself provides 2.4G wifi while 5G wifi is added by either an
IPQ5018-specific QCN6122 (2x2) solution or by the more generally
available PCIe-based QCN9074 (4x4) wifi chip.

On IPQ5018/QCN6122-based boards, both QCN6122 and IPQ5018 wifi is
initialized by IPQ5018 firmware which comes in different versions:
- IPQ5018: firmware files to initialize WCSS and the internal wifi chip
- IPQ5018/QCN6122: above + additional firmware segments to initialize
the QCN6122 chip incl. (de-)assertion of resets and clocks enablement

OpenWrt currently packages the combined IPQ5018/QCN6122 firmware for
both architectures. As such, let's switch to using IPQ5018-only firmware
for boards not packed with QCN6122 chip(s) and keep using the shared
firmware for devices that do have QCN6122(s) chips.
This helps us move to using upstreamed IPQ5018 firmware while using the
legacy repo for IPQ5018/QCN6122 firmware and rule out any initialization
conflicts/issues caused by loading QCN6122 on IPQ5018-only boards.

While at it, default to the secure WCSS remoteproc driver sent upstream
for review, move QCN6122 wifi nodes to a separate dtsi, override the Q6
node to load the multi-PD-based architecture remoteproc driver for
needed only by IPQ5018/QCN6122 designs, reference said dtsi in
boards packed with QCN6122 wifi chip(s), and add provision for migrating
the radio path as the wifi nodes now adhere to linux device tree naming
conventions.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20928
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-28 10:27:53 +01:00
George Moussalem
00d61da588 qualcommax: Add support for qcom remoteproc WCSS secure PIL driver
Add support for qcom remoteproc WCSS secure PIL driver.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20928
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-28 10:27:53 +01:00
Rani Hod
cdf187f1e7 siflower: sf21 device tree fix
`i2c1` node was missing `resets`, so even when enabled, the driver would
not recognize it:
```
i2c_designware c101000.i2c: Unknown Synopsys component type: 0x00000000
```

With this fix, I2C pins on BPi-RV2 26-pin GPIO header are usable.

Signed-off-by: Rani Hod <rani.hod@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20969
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-28 09:47:39 +01:00
Goetz Goerisch
9274e9a733 odhcpd: update to Git HEAD (2025-11-27)
4246bbda56d6 dhcpv4: improve pool var naming
407789e5f307 odhcpd: rename union if_addr -> in46_addr
66e7739f7c86 odhcpd: rename prefix -> prefix_len
75dfe0e71050 odhcpd: rename iface->addr4 -> iface->oaddrs4
d619b5ae28a4 dhcpv4: fix no_dynamic_dhcp
e8022eebc8a7 netlink: variable naming cleanup
fca3fee38ea4 netlink: add netmask for IPv4
1c2e8b60809a dhcpv4: simplify pool determination
558fb499c8c2 dhcpv4: rename iface->dhcpv4_local -> iface->dhcpv4_own_ip
ab8b1572247d dhcpv4: remove iface->dhcpv4_mask
af0c94063e66 dhcpv4: remove iface->dhcpv4_bcast
83055f636091 odhcpd: consistent dns naming
0a54ce0d2b57 odhcpd: rename iface->search -> iface->dns_search
a05cc991716c dhcpv4: iface->dhcpv4_router -> iface->dhcpv4_routers
b4ab371c541a config: fix (S)NTP realloc handling
adb2b8a1afff config: fix realloc() handling for the "upstream" option
38b0920e376b config: fix realloc() error handling for "dhcpv6_raw" option
2e1042c6c07f config: handle realloc failure in piofolder parsing
b9db4d7061a0 dhcpv6: handle realloc failure
ae9e22ab3fad netlink: make it clearer that we're handling realloc correctly
d21e504b38ab dhcpv6-ia: fix realloc bug

650a5df88e...d21e504b38

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20958
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-28 07:55:31 +01:00
Rosen Penev
eed995d4f9 lantiq: more conversions to nvmem
Now that NVMEM in UBI is supported, more handling can be moved.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 01:20:33 +01:00
Rosen Penev
75b9fae0c3 lantiq: dgn3500: use nvmem to load calibration
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 01:20:33 +01:00
Rosen Penev
00e5204e84 lantiq: homehub-v3a: assign wlan mac in dts
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 01:20:33 +01:00
Rosen Penev
feba8983ac kernel: disable non layout u-boot,env
All users of regular CONFIG_NVMEM_U_BOOOT_ENV have been converted to use
layouts.

CONFIG_NVMEM_U_BOOT_ENV selects the layout variant anyway so this is
safe to do.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 01:20:33 +01:00
Rosen Penev
96fc2fa594 treewide: convert u-boot,env to nvmem-layout
Non nvmem-layout is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-28 01:20:33 +01:00
Raylynn Knight
2dc3617c0b mpc85xx: HPE MSM460 add HPE MSM466 alias
Define MSM466 as alternative name, to explicitly show the device is
supported using existing image (MSM460).  The only difference between
the MSM460 and MSM466 is that the MSM466 has external antenna.

Signed-off-by: Raylynn Knight <rayknight@me.com>
Link: https://github.com/openwrt/openwrt/pull/20937
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-27 22:58:32 +01:00
Thomas Richard
1cbaed41b5 arm-trusted-firmware-stm32: bump to v2.13
Since version 4.8.0, OPTEE handles correctly RTC clock configuration for
STM32MP15 based boards. So the patch can be dropped.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/20953
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-27 20:49:32 +01:00
Thomas Richard
9c87b7f85e optee-os-stm32: bump to 4.8.0
Bump optee-os-stm32 to upstream release 4.8.0.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/20953
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-27 20:49:32 +01:00
Thomas Richard
b617a61908 uboot-stm32: bump to 2025.10
Bump uboot-stm32 to upstream release 2025.10 and remove upstreamed patch.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/20953
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-27 20:49:32 +01:00
Christian Marangi
4fd310a8d3 kernel: move .quilt_used to quilt.mk
Move .quilt_used from kernel-defaults.mk to quilt.mk.

This is done to be consistent with the parallel Build/Patch/Default and
Host/Patch/Default and permit better Quilt handling on any package that
might use Kernel/Patch/Default.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 20:26:37 +01:00
Christian Marangi
30a863bea0 Revert "kernel: move .quilt_used to quilt.mk"
This reverts commit 61bfcc4bd7.

The change was wrong as it was placed on the wrong define section.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 20:24:05 +01:00
Anari Jalakas
929a460bfa config: add !USE_APK dependency to CLEAN_IPKG
When USE_APK is enabled, APK replaces opkg/ipkg, leading to a build
failure when CLEAN_IPKG is also selected. Add 'depends on !USE_APK' to
CLEAN_IPKG to ensure this option is only selectable when opkg/ipkg is
the active package manager.

Signed-off-by: Anari Jalakas <anari.jalakas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20957
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 14:46:26 +01:00
Christian Marangi
cf14eb6c86 bpf-headers: update to version 6.12
Update bpf-headers to version 6.12 now that we target kernel version
6.12.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 14:31:30 +01:00
Christian Marangi
fee916f6b8 bpf-headers: correctly support refreshing the package
Overwrite default Quilt/Refresh/Package and use the Kernel variant to
correctly refresh bpf-headers patches.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 14:31:30 +01:00
Christian Marangi
61bfcc4bd7 kernel: move .quilt_used to quilt.mk
Move .quilt_used from kernel-defaults.mk to quilt.mk.

This is done to be consistent with the parallel Build/Patch/Default and
Host/Patch/Default and permit better Quilt handling on any package that
might use Kernel/Patch/Default.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 14:18:50 +01:00
Christian Marangi
ed7e01b7b6 libtraceevent: switch to meson and add missing dep for libtraceevent-extra
Switch to Meson build system and add missing dependency for
libtraceevent-extra.

This switch indirectly fix a compilation error on 32bit target that
weren't getting correct target CFlags. Using Meson fix honour our CFlags
and fix the compilation error.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 13:39:57 +01:00
Shiji Yang
de1b8012fe generic: add missing symbol ARM64_CONTPTE
Add the missing symbol to fix build halt on aarch64 targets:
```
Contiguous PTE mappings for user memory (ARM64_CONTPTE) [Y/n/?] (NEW) make[7]: *** [scripts/kconfig/Makefile:85: syncconfig] Error 1
make[6]: *** [Makefile:686: syncconfig] Error 2
```

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20954
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 13:38:17 +01:00
Nick Hainke
cc88cf5b65 selinux-policy: update to 2.8.4
Changelog:
73e77ae odhcpd anticipate per link configuration
c353698 various
8465968 iwinfo: ucode
9d9f12c various
2f41f9b various
70bb8bc various loose ends
6e817d4 netifd odhcpd wifi
69558b8 addresses various surfaced policy issues
9eb2dae README update
0a710e3 README
6fffaf6 pidfs: fsuse task seclabelfs
b051c6d makefile reproducible

Link: https://github.com/openwrt/openwrt/pull/20955
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 13:32:52 +01:00
Christian Marangi
15f2a8c4f2 ethtool: drop dependency on kernel 6.6
Since now we default to 6.12 and we dropped any support for kernel 6.6,
drop any dependency on it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:47:43 +01:00
Christian Marangi
6c037b6bd0 kselftests-bpf: drop dependency on kernel 6.6
Since now we default to 6.12 and we dropped any support for kernel 6.6,
drop any dependency on it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:47:16 +01:00
Christian Marangi
8cb728d88e config: drop dependency on kernel 6.6
Since now we default to 6.12 and we dropped any support for kernel 6.6,
drop any dependency on it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:46:37 +01:00
Shiji Yang
0883bb7d31 treewide: dts: remove {#address,#size}-cells from "spi-nand" compatible node
The child node "partitions" doesn't have "reg" property. Hence, we
don't need to use "#address-cells" and "#size-cells" to describe the
reg property information.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20942
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:37:49 +01:00
Shiji Yang
f2c1697819 treewide: dts: remove {#address,#size}-cells from "jedec,spi-nor" compatible node
The child node "partitions" doesn't have "reg" property. Hence, we
don't need to use "#address-cells" and "#size-cells" to describe the
reg property information.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20942
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:37:49 +01:00
Shiji Yang
b4d7263bc3 kernel: of: avoid some unnecessary bad cell count warnings
This patchset silences some noisy dts false warnings:

[    0.616266] OF: Bad cell count for /spi@1100d000/flash@0/partitions
[    0.622551] OF: Bad cell count for /spi@1100d000/flash@0/partitions

Closes: https://github.com/openwrt/openwrt/issues/14701
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20942
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:37:49 +01:00
Mieczyslaw Nalewaj
43c48d09ec packages: remove dependencies for kernel 6.6 and 6.12
Once kernel 6.6 support ends, its dependencies will become redundant.
Remove them and keep only those for kernel 6.12.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/20943
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:35:13 +01:00
Mieczyslaw Nalewaj
8a1ee7577e treewide: drop Linux 6.6 patches, hacks, configs and conditional
Drop all kernel 6.6 patches, hacks, backports and configuration support,
and remove the CONFIG_LINUX_6_6 guarded conditional in filogic.mk.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/20943
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:35:13 +01:00
Rosen Penev
67af946dd7 lantiq: match wifi node names to reg
node name matches various comments about the pci path.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20522
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-27 00:51:37 +01:00
Nick Hainke
d691e05395 libsemanage: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Remove upstreamed:
- 0001-libsemanage-create-semanage_basename-to-ensure-posix.patch

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Nick Hainke
e603841c80 libselinux: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Remove upstreamed:
- 0001-Inject-matchpathcon_filespec_add64-if-defined-__INO_.patch
  -> 5c3fcbd931
- 100-v2-libselinux-be-careful-with-non-portable-LFS-macro.patch
  -> 21dd00713a

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Nick Hainke
0ceb26a8e8 libsepol: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Nick Hainke
4225b2c237 secilc: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Nick Hainke
c7fec66897 policycoreutils: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Remove upstreamed patch:
- 0001-policycoreutils-run_init-define-_GNU_SOURCE.patch

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Nick Hainke
59a1e5b495 checkpolicy: update to 3.9
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-39

Link: https://github.com/openwrt/openwrt/pull/20908
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-27 00:02:26 +01:00
Hauke Mehrtens
2fe4e7d36f lantiq: Fix build of xway target
The kernel update commit also changed the name of the dtsi node. Adapt
the other dts files.

Fixes: 738876e76b ("kernel: bump 6.12 to 6.12.58")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-26 21:48:30 +01:00
Stijn Tintel
28cc1c368c kernel: drop CONFIG_ARM64_CONTPTE from target configs
This is no longer needed after the previous commit.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-26 21:08:34 +02:00
Stijn Tintel
e6b35fef99 kernel: fix dependency on non-existent symbol
KERNEL_ARM64_CONTPTE depends on KERNEL_ARM64 which does not exist. Fix
it by depending on aarch64 instead.

Fixes: e9799d2dd4 ("kernel: add KERNEL_ARM64_CONTPTE")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-26 21:08:01 +02:00
Goetz Goerisch
2418ff90d9 odhcpd: update to Git HEAD (2025-11-23)
8a8bb3c1a673 src: consolidate and improve fallthrough
8ffe79e3f086 src: improve attributes
0a4d4e11c91c odhcpd: simplify signal handling
6af938921628 odhcpd: make ubus optional at runtime
7313ba262b76 odhcpd: update devel-build.sh
038a7bbfc30d dhcpv4: simplify random address selection
8c574bd2fe62 dhcpv6: prevent network loop scenario
76b2d00ee5f0 router: Modify relayed RA PIO L and RA M/O flags according to interface policy
d236b2e0c53e github: ci: add MIPS64, PowerPC64 and RISCV64
d1500bb5d64d all: implement RFC8910 captive portal (CP) option
9830e5e2bf37 all: implement RFC8910 captive portal (CP) option for DHCPv4
9b9ea96ca90e statefiles: fix off-by-one-bug
c10784ece29c dhcpv4: replace ToS precedence
24f013500691 dhcvp4: use tmp fd in dhcpv4_setup_interface()
3c32b27d8bab dhcpv4: simplify error handling in dhcpv4_setup_interface()
5b7cfef774fb dhcpv4: define val where it is used in dhcpv4_setup_interface()
b0739f23c310 dhcpv4: add BPF to dhcpv4_setup_interface()
650a5df88eba ndp: correctness fix for BPF filter

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20919
[add myself as maintainer]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-26 18:56:19 +01:00
Goetz Goerisch
a119464754 qoriq: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20889
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-26 17:21:14 +02:00
Goetz Goerisch
22d2061e23 qoriq: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20889
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-26 17:21:14 +02:00
Mario Andrés Pérez
2e944e083e tools: mtd-utils: fix patch 110 for musl
This patch is introducing the same header that the other patch
001-ubifs-utils-link-libmissing.a-in-case-execinfo.h-isn.patch
is guarding against missing in musl libc. We need to
mimic that.

Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20938
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-26 10:16:48 +01:00
John Audia
5a4e65f612 linux-firmware: update to 20251125
% git log --no-merges --pretty=oneline --abbrev-commit 20251125...20251011 > dddd
00c92044d982 Revert "amdgpu: update GC 11.0.1 firmware"
1b629c2ee14d QCA: Add Bluetooth firmware for WCN685x uart interface
338d4f11a152 qcom: Add ADSP firmware for qcs6490-thundercomm-rubikpi3
e5f2034193cd qcom: venus-5.4: update firmware binary for v5.4
beeb1c6d8fd6 qcom: venus-5.4: remove unused firmware file
4b245479aaca iwlwifi: add Sc/Wh FW for core98-181 release
a193f375146b amdgpu: DMCUB updates for various ASICs
8bcc91d13bbe rtl_bt: Update RTL8852B BT USB FW to 0x42D3_4E04
6299022aec47 ASoC: tas2781: Add more symbol links on SPI devices
9aa00eca20c4 amdgpu: update vega20 firmware
42ea1f79b1da amdgpu: update vega12 firmware
a58d54daedbb amdgpu: update vega10 firmware
1e069e319b1d amdgpu: update vangogh firmware
f7e13466f3cb amdgpu: update renoir firmware
96e217e08b13 amdgpu: update yellow carp firmware
4c44a08fa5bc amdgpu: update VCN 3.1.2 firmware
3719d638b955 amdgpu: update PSP 13.0.5 firmware
aaa7079598fa amdgpu: update GC 10.3.6 firmware
69c122001d45 amdgpu: update VCN 5.0.0 firmware
b8ee4087b353 amdgpu: update SMU 14.0.3 firmware
d714bc8d2e61 amdgpu: update PSP 14.0.3 firmware
90e45a48f841 amdgpu: update GC 12.0.1 firmware
4a2eda3fe051 amdgpu: update SMU 14.0.2 firmware
c3c6345875f1 amdgpu: update PSP 14.0.2 firmware
b2fdc1bd241e amdgpu: update GC 12.0.0 firmware
e96100557112 amdgpu: update VCN 4.0.4 firmware
e2ce9e78f0d6 amdgpu: update smu 13.0.7 firmware
65e62c306034 amdgpu: update PSP 13.0.7 firmware
870a03682058 amdgpu: update GC 11.0.2 firmware
5bdf63c32ed9 amdgpu: update SMU 13.0.10 firmware
e54655337b9f amdgpu: update SDMA 6.0.3 firmware
2c961a06a486 amdgpu: update PSP 13.0.10 firmware
e063d1e8fec5 amdgpu: update GC 11.0.3 firmware
51df8d90d0b6 amdgpu: update smu 13.0.0 kicker firmware
de657c55c334 amdgpu: update PSP 13.0.0 kicker firmware
fff12585de36 amdgpu: update VCN 4.0.0 firmware
37e6b3808abf amdgpu: update SMU 13.0.0 firmware
4567a327551f amdgpu: update PSP 13.0.0 firmware
c4f4863f7db0 amdgpu: update GC 11.0.0 firmware
87eae0321d6d amdgpu: update navy flounder firmware
fcc1130d0510 amdgpu: update sienna cichlid firmware
ea80880af0ed amdgpu: update navi14 firmware
649d7fdf1d4e amdgpu: update navi12 firmware
7b7e771fb2f7 amdgpu: update navi10 firmware
8f25606de7cc amdgpu: update VCN 5.0.1 firmware
60456ab4b075 amdgpu: update PSP 13.0.12 firmware
4d69373e4f8d amdgpu: update GC 9.5.0 firmware
e092a40e7f6d amdgpu: update PSP 13.0.14 firmware
7cd8bd09ad5c amdgpu: update GC 9.4.4 firmware
ae59315f6c03 amdgpu: update PSP 14.0.5 firmware
1b6afb6a7efb amdgpu: update GC 11.5.3 firmware
5176cb313398 amdgpu: update PSP 14.0.4 firmware
71857dd04b14 amdgpu: update GC 11.5.2 firmware
2f28317f7e39 amdgpu: update green sardine firmware
522d9e12207b amdgpu: update VCN 4.0.3 firmware
8f041792d723 amdgpu: update SDMA 4.4.2 firmware
e378955cf3ed amdgpu: update PSP 13.0.6 firmware
86faa583fbdb amdgpu: update GC 9.4.3 firmware
d9f867fa205b amdgpu: update VCN 4.0.6 firmware
77e84ba0b2db amdgpu: update PSP 14.0.1 firmware
85173cf441ec amdgpu: update GC 11.5.1 firmware
4f77f6c84776 amdgpu: update PSP 13.0.11 firmware
e281c8286079 amdgpu: update GC 11.0.4 firmware
e6d6584a618a amdgpu: update VCN 4.0.5 firmware
bafad280328c amdgpu: update PSP 14.0.0 firmware
1c5716794ac6 amdgpu: update GC 11.5.0 firmware
cf102ce55053 amdgpu: update VCN 4.0.2 firmware
7f4f67696c51 amdgpu: update PSP 13.0.4 firmware
df7ad95b388b amdgpu: update GC 11.0.1 firmware
2e749805f26b amdgpu: update beige goby firmware
662215782556 amdgpu: update dimgrey cavefish firmware
72eabbcf8945 amdgpu: update aldebaran firmware
59c101ad56d3 amdgpu: add vce1 firmware
ab4f6864c8e8 mediatek MT7922: update bluetooth firmware to 20251118163447
704ba612298f linux-firmware: update firmware for MT7922 WiFi device
f21bf2079594 qcom: update ADSP, CDSP firmware for kaanapali platform, change the license
094f6b619316 qcom: add ADSP, CDSP firmware for sm8750 platform
b7dee782236f rtl_nic: add firmware rtl9151a-1
c710fdbe961e qcom: Update aic100 firmware files
0649fe0f8a0f mt76: add firmware for MT7990
d7d4a94071f0 mt76: update firmware for MT7992
1de8ddcbce20 mt76: update firmware for MT7996
3f3667bb2b0c cirrus: cs35l57: Add firmware for a few Dell products
62b60d741ff7 cirrus: cs42l45: Add firmware for Cirrus Logic CS42L45 SDCA codec
24bc7c974de2 qcom: Add sdx35 Foxconn vendor firmware image file
6167e5566900 linux-firmware: Update AMD cpu microcode
fcf22f506bf5 rtl_bt: Update RTL8922A BT USB firmware to 0x41C0_C905
c0af6c70df29 linux-firmware: add firmware for mt7987 internal 2.5G ethernet phy
a50c068b4977 rtw88: 8822b: Update firmware to v30.20.0
e5606bd7012d rtl_nic: add firmware rtl8125k-1
c5831f31fb58 ASoC: tas2781: Update dsp firmware for HP and ASUS projects
ad907cca1b30 Revert "Merge branch 'robot/patch-0-1762671757' into 'main'"
d665e29c15bd ASoC: tas2781: Update dsp firmware for HP and ASUS projects
213080aee725 amdgpu: DMCUB updates for various ASICs
23cf7dbb64d8 amdgpu: DMCUB updates for various ASICs
95cd295ec628 qcom: add SOCCP firmware for kaanapali platform
9444af1a20eb xe: Update GUC to v70.53.0 for BMG, LNL, PTL
f2a23165093f i915: Update GUC to v70.53.0 for DG2, MTL
4dedd6cbe36f rtw89: 8851b: update fw to v0.29.41.5
84cc37f396bc rtw89: 8852b: update fw to v0.29.128.0 with format suffix -2
3ab5b9e563d5 rtw89: 8852b: update fw to v0.29.29.14
1b1c14bbe283 Revert "rtw89: 8852b: update fw to v0.29.128.0"
9a0d0ed60e4f rtw89: 8852bt: update fw to v0.29.127.0 with format suffix -1
be71e790deb7 rtw89: 8852bt: update fw to v0.29.122.1
b6252a035ca2 Revert "rtw89: 8852bt: update fw to v0.29.127.0"
a976b0aa25c9 linux-firmware: Update firmware file for Intel BlazarU core
5a689a2fb837 linux-firmware: Update firmware file for Intel BlazarI core
7742578435dd linux-firmware: Create audio folder in ti folder, and move all the audio firmwares into it
e189b618b99d amdgpu: DMCUB updates for various ASICs
646d97f5320d linux-firmware: Update WHENCE for microcode_amd_fam19h.bin
e637542fa8b9 linux-firmware: Update AMD cpu microcode
0fc31ad67f09 linux-firmware: update firmware for MT7925 WiFi device
b63c322f293e mediatek MT7925: update bluetooth firmware to 20251015213201
35e542439e8a rtl_bt: Add firmware and config files for RTL8761CUV
ad9154476766 linux-firmware: Update AMD cpu microcode
7bcedf5c907e qcom: add ADSP firmware for kaanapali platform
728e92438d2f amdgpu: DMCUB updates for various ASICs
05105d2434ec linux-firmware: Renaming the file to cover a wide range of HP Lunar Lake system.
b582532def13 mediatek MT7920: update bluetooth firmware to 20251020151255
33d0511d15d4 linux-firmware: update firmware for MT7922 WiFi device
c2087f880be1 linux-firmware: update firmware for MT7920 WiFi device
3a49a7356a8c amd-ucode: Fix minimum revisions in README
0de0cd7fc74c cirrus: cs35l41: Rename various Asus Laptop firmware files to not have Speaker ID
93c929780994 mediatek MT7922: update bluetooth firmware to 20251020143443
b0b775e5ad10 Revert "linux-firmware: update firmware for MT7922 WiFi device"
d06442f2b6f5 QCA: Update Bluetooth WCN6856 firmware 2.1.0-00653 to 2.1.0-00659
9440754a997a iwlwifi: add Bz/Fm and gl FW for core98-161 release
f2fbfd22d9d1 iwlwifi: update Bz/Hr and Bz/Gf firmwares for core98-161 release
dda8b9b09a1c iwlwifi: update ty/So/Ma firmwares for core98-161 release
822db3708dbc iwlwifi: update cc/Qu/QuZ firmwares for core98-161 release
edc9bbecf0fe intel: qat: Fix missing link
80bca4b3d75e amdgpu: DMCUB updates for various ASICs
7a1a266e22f1 nvidia: add generic bootloader for GSP-enabled systems
2121082a8884 linux-firmware: qcom: sync audioreach firmwares from v1.0.0 build
4ba7ff78711b qcom: vpu: rename firmware binaries
15cb201918e5 Intel IPU7: Update product signed firmware binary
10de40e2bb55 i915: Xe2LPD DMC v2.29
4bda88bd3a9f i915: Xe3LPD DMC v2.32
afae3516d1d8 i915: Xe3LPD_3002 DMC v2.27
bcce0efb5c4a WHENCE: nvidia: rearrange GSP-RM firmware lines
a96c15581a53 linux-firmware: Add ISH firmware file for Intel Pather Lake platform
55d8d2fa006b linux-firmware: Update firmware file for Intel Magnetar core
890cad9f8387 linux-firmware: Update firmware file for Intel BlazarU core
7bbab634ede0 linux-firmware: Update firmware file for Intel BlazarI core

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20936
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-26 09:38:38 +01:00
Nick Hainke
e7022ec14e tools/ninja: update to 1.13.2
Release Notes:
https://github.com/ninja-build/ninja/releases/tag/v1.13.2

Link: https://github.com/openwrt/openwrt/pull/20935
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-26 09:37:03 +01:00
Nick Hainke
b03c79f382 wolfssl: update to 5.8.4
Release Notes:
https://www.wolfssl.com/wolfssl-5-8-4-now-available/

Fixes CVEs:
- CVE-2025-12889
- CVE-2025-12888
- CVE-2025-11936
- CVE-2025-11935
- CVE-2025-11934
- CVE-2025-11933
- CVE-2025-11932
- CVE-2025-11931

Link: https://github.com/openwrt/openwrt/pull/20922
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-26 09:35:04 +01:00
Jimmy Cavanaugh
68631b186e mvebu: add support for Fortinet FortiWiFi 30E
Fortinet FortiWiFi 30E (FWF-30E) is a UTM, based on Armada 385 (88F6820).

Specification:

- SoC          : Marvell Armada 385 88F6820
- RAM          : DDR3 1 GiB (4x Nanya NT5CC256M8IN-D1)
- Flash        : SPI-NOR 128 MiB (Macronix MX66L1G45GMI-10G)
- Ethernet     : 5x 10/100/1000 Mbps
  - Switch     : Marvell 88E6176
- Wireless     : Atheros AR9382 2x2 802.11abgn (mini-PCIe)
- LEDs/Keys    : 16x/1x
- UART         : "CONSOLE" port (RJ-45, RS-232C level)
  - port       : ttyS0
  - settings   : 9600bps 8n1
  - assignment : 1:NC , 2:NC , 3:TXD, 4:GND,
                 5:GND, 6:RXD, 7:NC , 8:NC
  - note       : compatible with Cisco console cable
- HW Monitoring: nuvoTon NCT7802Y
- USB          : 1x USB 3.0
- Power        : 12 VDC, 2 A
  - plug       : Molex 5557-02R

Flash instruction using initramfs image:

 1. Power on FWF-30E and interrupt to show bootmenu
 2. Call "[I]: System information." -> "[S]: Set serial port baudrate."
    and set baudrate to 9600 bps
 3. Call "[R]: Review TFTP parameters.", check TFTP parameters and
    connect computer to "Image download port" in the parameters
 4. Prepare TFTP server with the parameters obtained above
 5. Rename OpenWrt initramfs image to "image.out" and put to TFTP
    directory
 6. Call "[T]: Initiate TFTP firmware transfer." to download initramfs
    image from TFTP server
 7. Type "r" key when the following message is showed, to boot initramfs
    image without flashing to spi-nor flash

    "Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]?"

 8. On initramfs image, backup mtd if needed

    minimum:

    - "firmware-info"
    - "kernel"
    - "rootfs"

 9. On initramfs image, upload sysupgrade image to the device and perform
    sysupgrade
10. Wait ~200 seconds to complete flashing and rebooting.
    If the device is booted with stock firmware, login to bootmenu and
    call "[B]: Boot with backup firmware and set as default." to set the
    first OS image as default and boot it.

Notes:

- Both colors of Bi-color LEDs on the front panel cannot be turned on at
  the same time.

- "PWR" and "Logo" LEDs are connected to power source directly.

- The following partitions are added for OpenWrt.
  These partitions are contained in "uboot" partition (0x0-0x1fffff) on
  stock firmware.

  - "firmware-info"
  - "dtb"
  - "u-boot-env"
  - "board-info"

Image header for bootmenu tftp:

  0x0 - 0xf  : ?
 0x10 - 0x2f : Image Name
 0x30 - 0x17f: ?
0x180 - 0x183: Kernel Offset*
0x184 - 0x187: Kernel Length*
0x188 - 0x18b: RootFS Offset (ext2)*
0x18c - 0x18f: RootFS Length (ext2)*
0x190 - 0x193: DTB Offset
0x194 - 0x197: DTB Length
0x198 - 0x19b: Data Offset (jffs2)
0x19c - 0x19f: Data Length (jffs2)
0x1a0 - 0x1ff: ?

*: required for initramfs image

MAC addresses:

(eth0): 70:4C:A5:xx:xx:42 (board-info, 0xd880 (hex))
WAN   : 70:4C:A5:xx:xx:43
LAN 1 : 70:4C:A5:xx:xx:44
LAN 2 : 70:4C:A5:xx:xx:45
LAN 3 : 70:4C:A5:xx:xx:46
LAN 4 : 70:4C:A5:xx:xx:47

Signed-off-by: Jimmy Cavanaugh <jamie@cavanaugh.co.nz>
Link: https://github.com/openwrt/openwrt/pull/20787
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-26 00:48:07 +01:00
Rani Hod
b92a339f92 siflower: bpi-rv2 device tree fix
As per schematics, GPIO 30 is incorrect to use as the reset pin for the
QSGMII PHY SF23P1240; the correct one is GPIO 22.

Signed-off-by: Rani Hod <rani.hod@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20925
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 22:21:13 +01:00
Andreas Gnau
26ba9b609b base-files: board_detect: make resilient against power-cuts
If board_detect is interrupted by cutting power on first boot,
board.json might only be half-way written and the file will not be
written again correctly on subsequent boots.

Write to a temporary file first, then rename. Since a rename on the same
file system is an atomic operation, it ensures that either
/etc/board.json does not exist or that the complete file exists.

Signed-off-by: Andreas Gnau <andreas.gnau@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20831
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 21:51:25 +01:00
Andreas Gnau
cac609aca8 base-files: board_detect: Address shellcheck warnings
* SC2166 (warning): Prefer [ p ] && [ q ] as [ p -a q ] is not well
   defined.
 * SC2086 (info): Double quote to prevent globbing and word splitting.
 * SC2091 (warning): Remove surrounding $() to avoid executing output
   (or use eval if intentional).

Signed-off-by: Andreas Gnau <andreas.gnau@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20831
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 21:51:25 +01:00
Goetz Goerisch
0337cdfb33 kernel: bump 6.6 to 6.6.117
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.117

All patches auto-refreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20927
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 21:20:52 +01:00
Goetz Goerisch
d711d906ad siflower: refresh kernel-6.12 config
refreshed with make kernel_oldconfig CONFIG_TARGET=subtarget

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20893
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 19:08:19 +01:00
Goetz Goerisch
245841eb4b siflower: add kmod-i2c-designware-platform to device packages
adding the kmod-i2c-designware-platform by user suggestion

Co-authored-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20893
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 19:08:18 +01:00
Goetz Goerisch
28f9ef5f5c siflower: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20893
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 19:08:18 +01:00
Goetz Goerisch
cdafb1fde9 siflower: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20893
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 19:08:18 +01:00
Chukun Pan
f911c2dc44 mediatek: update Bananapi BPi-R4 Lite support
Devices package:
  Add missing USB3 driver

Device tree:
  Fix model name and pwm usage
  Add missing supply for I2C and USB
  Update network port names based on the shell image [1]

[1] https://docs.banana-pi.org/bpi-r4_lite/banana_pi_bpi-r4_lite_case_1.png

Fixes: 8b6c6978 ("mediatek: add support for BananaPi BPi-R4 Lite")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2025-11-25 16:48:28 +00:00
Chukun Pan
21fe2a8e43 mediatek: update mt7987 SoC device tree
mt7987b.dtsi:
  Enabled lvts (for CPU thermal) and trng by default.
  Remove non-existent netsys include headers, fix build.

mt7987.dtsi:
  Remove unused rt5190a include headers
  Fix pwm-fan errors: binding cdev pwm-fan to trip 3 failed: -22

Fixes: 9de7189ed ("mediatek: build image for MT7987 RFB")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2025-11-25 16:48:28 +00:00
Chukun Pan
295601b0d4 mediatek: mt7987: enable usb 3.0 by default
There is no reason to limit USB to 2.0 mode by default. This
limitation should be done when both gmac2 and USB are enabled.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2025-11-25 16:48:28 +00:00
Chukun Pan
de8eb38db8 mediatek: move node from mt7987a SoC dtsi
Remove I2C, PCIe, PWM, UART and USB from the MT7987A SoC dtsi.
These should not be enabled by default, but rather enabled based
on the device.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2025-11-25 16:48:28 +00:00
Daniel Golle
7af6029644 mediatek: mt7987: sync mt7987.dtsi with MediaTek SDK
Make sure uart0 got all required clocks assigned.

Fixes: 1c3b32c45a ("mediatek: fix uart clocks in MT7987 infracfg clock driver")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-25 16:48:21 +00:00
Goetz Goerisch
b947b6af04 zynq: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20892
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:27:24 +01:00
Goetz Goerisch
d263af38c0 zynq: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20892
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:27:24 +01:00
Goetz Goerisch
cd851fb96e at91: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20871
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:23:14 +01:00
Goetz Goerisch
ca626376d5 at91: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20871
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:23:14 +01:00
Hannu Nyman
9ba24e0ee9 tools/cmake: update to 4.2.0
Update cmake to version 4.2.0
Release notes at https://cmake.org/cmake/help/v4.2/release/4.2.html

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20863
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:22:46 +01:00
Goetz Goerisch
117546b49a bcm53xx: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20874
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:21:50 +01:00
Goetz Goerisch
7748ed6c68 bcm53xx: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20874
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:21:50 +01:00
Goetz Goerisch
e34726bf66 bcm47xx: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20887
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:21:17 +01:00
Goetz Goerisch
2aa9a41136 bcm47xx: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20887
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:21:17 +01:00
Goetz Goerisch
e9b7a9e42c bcm4908: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20888
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:20:35 +01:00
Goetz Goerisch
2830d3b434 bcm4908: switch to kernel 6.12
switch the kernel to 6.12 by default

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20888
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 17:20:34 +01:00
Konstantin Meshkov
2c2b048295 kirkwood: add aliases and new partition for support D-Link DNS-325 A1
- Added fan0 alias
- Implemented LED aliases and thermal zones
- Restructured partitions: u-boot, u-boot-env, ubi

Signed-off-by: Konstantin Meshkov <skyline@mail.ru>
[ improve commit title ]
Link: https://github.com/openwrt/openwrt/pull/17924
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 15:41:38 +01:00
Konstantin Meshkov
7e829b8209 kirkwood: add support for D-Link DNS-325 A1
The D-Link DNS-325 A1 is NAS with 2x HDD (3.5 inch) bays, 1x 10/100/1000Base-T port and 1x USB 2.0 port

Device specification:

    SoC: Marvell 88F6281-A1 1.2 GHz
    RAM: 256 MB (2xSEC K4T1G084QF-HCF7:128Mx8 @400 CL6)
    Flash: 128 MB (SAMSUNG 946 K9F1G08U0B PCB0)
    SATA: 2x internal SATA II drives
    Ethernet: 1x Gigabit (Marvell 88E1116R-NNC1)
    LED: 7x (white: Power, white/red: Right SATA Activity, USB Activity, Left SATA Activity)
    Key: 3x (Power, Reset, USB Copy/Unmount)
    Serial: 5 pin header (RXD,GAP,3.3V,GND,TXD), (115200,8,N,1), 3.3V TTL
    USB ports: 1x USB 2.0

Flash instruction:

NOTE: this process uses a serial connection. It will upgrade the bootloader and reset the bootloader environment variables

USB flash stick setup

    Format to FAT32 without mbr
    Copy these files to USB flash stick: dlink_dns-325-a1-initramfs-uImage dlink_dns-325-a1-squashfs-factory.bin dlink_dns-325-a1-squashfs-sysupgrade.bin u-boot.kwb (from u-boot-dns325 directory)

NAS setup

    Connect LAN cable between router and NAS device
    Connetc USB flash stick to NAS device
    Connect serial to NAS device

Boot from new u-boot and install it

    $ kwboot -p -b u-boot.kwb -B115200 -t /dev/ttyUSB0
    Power on NAS
    After download copleted and booted NAS device with new u-boot stop in bootloader by pressing any key
    => usb start
    => fatload usb 0 0x1000000 /u-boot.kwb
    => nand erase.part u-boot
    => nand write 0x1000000 u-boot ${filesize}
    => reset

Update MAC address in u-boot env

    Stop in bootloader by pressing any key
    Get your MAC address from label on chassis
    => setenv ethaddr XX:XX:XX:XX:XX:XX
    => saveenv

Install OpenWrt by flashing factory image from u-boot

    => usb start
    => fatload usb 0 0x1000000 /dlink_dns-325-a1-squashfs-factory.bin
    => nand erase.part ubi
    => nand write 0x1000000 ubi ${filesize}
    => reset

Based-on: #9296
Signed-off-by: Konstantin Meshkov <skyline@mail.ru>
[ refresh uboot patches ]
Link: https://github.com/openwrt/openwrt/pull/17924
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 15:41:38 +01:00
Scott Mercer
6065edf3b2 mac80211: ath11k: fix rssi for IPQ5018 and QCN6122
Add pending patch to fix RSSI station data on IPQ5018 and QCN6122.

Signed-off-by: Scott Mercer <TheRootEd24@gmail.com>
[ improve commit description, replace patch ]
Link: https://github.com/openwrt/openwrt/pull/20834
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 15:30:47 +01:00
Nick Hainke
90a768aea8 libtraceevent: update to 1.8.6
Update to latest release.

Link: https://github.com/openwrt/openwrt/pull/20921
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-25 14:09:07 +01:00
Nick Hainke
09360ef26a wpan-tools: update to 0.10
Release Notes:
https://github.com/linux-wpan/wpan-tools/releases/tag/wpan-tools-0.10

Link: https://github.com/openwrt/openwrt/pull/20920
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-25 14:08:07 +01:00
Christian Marangi
41541bf30e libunistring: fix compilation error with MUSL
MUSL doesn't provide PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP as
it's only glibc and as the MACRO say, it's NP (not portable).

Add patch to check for this and disable overwriting the function
accordingly.

Fixes: 9bdf723476 ("libunistring: update to 1.4.1")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-25 13:41:11 +01:00
Álvaro Fernández Rojas
b0e9371cb1 generic: 6.12: add pending b53 fixes for BCM5325
These patches fix the remaining issues with BCM5325 switches and allow
dropping the default VLAN on Huawei HG556a.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-25 13:24:32 +01:00
Rany Hany
c15b85ee04 wifi-scripts: add missing na_mcast_to_ucast default when proxy_arp is disabled
Adds missing default value for na_mcast_to_ucast when proxy_arp is not enabled
in order to silence the following msg:

   daemon.notice: netifd: radio1 (xxxx): sh: out of range

Fixes: bcdb29f78f ("wifi-scripts: add na_mcast_to_ucast option")
Reported-by: Antony Kolitsos <zeusomighty@hotmail.com>
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20806
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-25 11:46:55 +01:00
Rany Hany
2d7a6017f1 wifi-scripts: ucode: fix bug moving to empty wifi-station config
When transitioning from a config with one or more wifi-stations, to a configuration
that has no wifi-station; the file would not be empty/reset and the old wifi-station
entries would remain.

This is because iface_wpa_stations and iface_sae_stations return early if there
are no wifi-stations present, which is an incorrect behavior as it causes the
file to actually have old entries.

'sae_password_file' and 'wpa_psk_file' are also set by default inside
of iface_auth_type to same path as the one used by wifi-station, so it
is indeed going to be set in the config and would contain the old
entries.

This happens with reload and wifi restart. So the only solution
would be to manually remove the file.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20700
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-25 11:46:12 +01:00
Rany Hany
e740139302 wifi-scripts: iface should be optional in wifi-station definition
Similar to "wifi-scripts: iface should be optional in wifi-vlan definition"
(98435a3), wifi-station iface should also be optional. By default, it is
supposed to match all interfaces if omitted.

Fixes: https://github.com/openwrt/openwrt/issues/20705
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20694
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-25 11:45:24 +01:00
Rany Hany
63c146a464 wifi-scripts: ucode: fix wifi-vlan "network" option not working
The call to netifd.set_vlan(...) had an incorrect argument
order. It should be (interface, ifname, vlan) not
(interface, vlan, ifname). This prevented wifi-vlan's
"network" option from working as netifd was not able
to find the wifi-vlan section.

Fixes: https://github.com/openwrt/openwrt/issues/20705
Fixes: https://github.com/openwrt/openwrt/issues/20911
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20918
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-25 11:44:29 +01:00
Caleb James DeLisle
31f5fc8fea econet: New device: Zyxel PMG5617GA
This device has one USB2.0 port, plus ethernet, 2x wifi, ethernet, xPON
and VoIP.

Installation instructions: (Assuming root shell via SSH or serial)
1. Place OpenWrt TRX file on a USB stick formatted VFAT
2. Plug in the stick to the modem
3. Type: mtd write -f -e tclinux /mnt/usb2_sda1/<name of file>.trx tclinux

At this point, both OpenWrt and the vendor OS will be installed
because the device has space for two operating systems. Switch the OS
to boot to OpenWrt:

1. mtd readflash tmpdata 999999999 0 reservearea
2. echo -n '0' | dd of=./tmpdata bs=1 count=1 seek=397311 conv=notrunc
3. mtd write -f -e reservearea ./tmpdata reservearea
4. reboot

WARNING: While you can install with SSH alone, you need serial to use
OpenWrt on EcoNet devices because the Ethernet driver has not yet been
developed.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20580
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:50:54 +01:00
Paweł Owoc
8d8990a07e mtd: add dump command help
Add missing dump command help.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20725
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:43:23 +01:00
Paweł Owoc
693db5945b mtd: allow to use dump and verify on read-only devices
Dump and verify commands can be used on read-only devices.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20725
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:43:23 +01:00
Rany Hany
7ea659503a wifi-scripts: ucode: add missing config.auth_type assignment for psk2
This ends up breaking wifi-station and wifi-vlan as it depends on
config.auth_type being either psk or psk-sae. When set to psk2,
this would be unset causing that feature to not work.

See discussion in https://github.com/openwrt/openwrt/issues/20705#issuecomment-3568446006

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20914
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:37:46 +01:00
Sven Eckelmann
29a9c3feb1 realtek: Fix alignment of parameters
The parameters must be aligned based on the last opened parenthesis
(+1). If this not a multiple of the tab size (8) then the rest
alignment must be done using spaces.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:51 +01:00
Sven Eckelmann
0aa4f6a2f2 realtek: Fix typo "mutli"
It is written "multi" and not "mutli"

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:51 +01:00
Sven Eckelmann
07e4b82da5 realtek: Fix typo "intialization"
It is written "initialization" and not "intialization"

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:51 +01:00
Sven Eckelmann
53fee72216 realtek: Drop space after casts
The Linux kernel coding style recommends not to add a space after
casts.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:51 +01:00
Sven Eckelmann
4bd1cb66df realtek: Drop unnecessary newlines
It is recommended in the Linux kernel coding style not to add multiple
newlines after another.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:51 +01:00
Sven Eckelmann
583807806c realtek: Use BIT(x) helper instead of manual shift
Instead of manually writing shift operations, it is preferred to
use BIT(b) or GENMASK(e, s).

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
70563e6aa2 realtek: Switch to kernel integer types
uint(8|16|32|64)_t and int(8|16|32|64)_t types should not be used in
kernel code. The shorter s(8|16|32|64) and u(8|16|32|64) or the
endianness specific versions (le*, be*) must be used instead.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
612f1e6afb realtek: Don't reinitialize static variables to 0
Static variables (and global variables) are initialized to 0 by
default. It is not needed and discouraged to reinitialize them
to 0.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
6eb46033eb realtek: Use short name for "unsigned long int"
It is preferred in the Linux kernel to use the short type name
"unsigned long" instead of "unsigned long int". The same is true
for short and the signed version of the types.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
20fd6c9d10 realtek: Keep return statements on new line
It is not allowed in the Linux kernel to have the condition and
the actual statement(s) on the same line. This is required to
make it easier to identify the body of an if/do/while/for/..

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
281c90cb1b realtek: Drop repeated words in comments
The repeated words don't make any sense in these comments/sentences and can
just be dropped.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
f29c597324 realtek: Start function scope on newline
In contrast to array initializations, function scopes must start
on a newline and not at the a line which defines the function
parameters.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
1dd22279eb realtek: Fix spaces around braces, ops and keywords
The Linux kernel coding style has strict rules when spaces must be
added around operations or after keywords. The whole list is to
complex to summarize it here but can be found at
https://www.kernel.org/doc/html/v6.17/process/coding-style.html

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
230a1835c3 realtek: Clean up global array definitions
Global array initialization must have the open brace on the first
line and the next lines must be intended by one level. The closing
brace must be one a separate line.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
8f42966c08 realtek: Separate variables and code by newline
The Linux coding style requires to have a newline between the vaariables
definition block and the beginning of a scope and the code.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
5a2a2b2020 realtek: Use __packed helper
In the Linux kernel, it is preferred not to use compiler specific
attributes but instead utilize the kernel specific helpers.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
d5fec0b125 realtek: pcs: Fix overflow in rtpcs_930x_sds_clock_wait
It can happen that the calculation `start + (HZ / 1000) * timeout`
overflows `unsigned long`. This must be handled correctly to avoid too long
waits. Luckily, the `time_before()` helper already does this.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
69c6658c73 realtek: pcs: Reduce nesting during calibration
It is preferred in the kernel to have less nesting of scopes. More common
is to perform pre-condition checks (like error handlers) and then react to
them.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
80375e5acd realtek: ethernet: Avoid usage of unsafe strcpy
strcpy doesn't check the length of the destination buffer. And strlcpy
would not make sure to null-terminate the destination buffer.

Even when it is clear that this string will fit in the currrent buffer, it
is just best practice to avoid strcpy.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
bc71e705aa realtek: dsa: Avoid misleading 'case' indentation
The case statements should be at the same indentation level as the switch.
Having different levels makes it harder to spot where the next case starts.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
e506cb68b1 realtek: pcs: Use "unused" attribute helper
In the Linux kernel, it is preferred not to use compiler specific
attributes but instead utilize the kernel specific helpers.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
230d936394 realtek: pcs: Drop return on end of void functions
There is nothing to return from a void function. And it doesn't change the
execution flow. The return at the end of a void function is therefore just
a NOP.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
dae62b0170 realtek: dsa: Drop extra space before printed newline
The white space is not visibible when it is printed. It might have been
added by accident to the format string.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
f6ba70739d realtek: Avoid line continuations in quoted strings
It is preferred to have the whole quoted string on a single line to make it
easier to find these lines in the source code (while grep'ing). And since
these quotes are inside  a string, they will also add unwanted whitespaces.

At the same time, add the missing newine at the end of the `pr_debug`
lines.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
7ade70bc42 realtek: mdio: Drop extern declaration for internal function
There is no external component using these functions and these functions
are local to the current translation unit. These functions can therefore be
declared static.

The currently unused *_field functions were kept because they might be used
in the future.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
1518753474 realtek: Keep extern declaration in headers
The common declarations should not be spread around in different source
files but kept inside the header files. This is unfortunately currently not
the best place to store them because soc_info is actually from non-DSA
code. But it is at least better than having them in diffent source files.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:50 +01:00
Sven Eckelmann
7704e500e5 realtek: Fix block comment style
In net code, it is preferred to have block comments which

* either are one line: `/* ... */`
* multiple lines with:
  - starting with the first comment line directly: `/* ...`
  - each line is intended with the first asterisk: ` * ...`
  - the last line is just the end of the comment:  ` */`

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
c6e0638ed1 realtek: Avoid braces around single statement blocks
The Linux kernel coding style prefers not to use braces around blocks which
are only one statement long.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
18262471f3 realtek: Fix order of "static" + "inline" keywords
THe correct order (which the rest of the code is using) is "static inline".

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
1f1cafb217 realtek: Drop out-of-memory messages
The kernel already complains loud enough to inform about an out-of-memory
situation. It is recommended not to add extra logging for *alloc errors.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
4f71495a47 realtek: Fix SPDX license lines in headers
Headers must use block-style comments to avoid problems with non-C
programming languages which try to use this header file.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
3e539b6447 realtek: Remove extern from function declarations
In contrast to variables, functions don't need extern declarations. It is
also preferred in the kernel not to use extern in front of function
declarations.

The extern+static parts in clk-rtl83xx.c were skipped because they are a
little bit unexpected ("extern *_dram_set_rate" are never used, "static
_sram_set_rate" are used but should from the C code perspective always be
NULL). This is left for an interested reader with the correct test HW and
some interests to dig in the code from commit 4850bd887c ("realtek: add
RTL83XX clock driver") for the *_dram_set_rate -> *_sram_set_rate
relocation and how these SRAM function pointers are set in this translation
unit.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
039c9802a1 realtek: Enclose complex macros in parentheses
The macros will be inserted as is by the pre-compiler into places which
uses them. This can cause weird effects because this can break the syntax
or the ordering of operations. Just adding parentheses can avoid a lot of
these unexpected effects.

(for even more complex, multi-expression macros, `do {...} while (0)` is
required).

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
Sven Eckelmann
c6ed536839 realtek: Prefer linux/* includes over asm/* ones
It is preferred in the Linux kernel to include the "normal" linux/*
include files instead of the asm includes files when available.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:28:49 +01:00
John Audia
3a5a5c768a kernel: bump 6.12 to 6.12.59
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.59

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc (Intel N150)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20916
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-25 00:01:11 +01:00
Sven Eckelmann
4dab2a9405 realtek: dsa: Build check size of drop counter names
The commit 1cfd45ae0b ("realtek: Add debugfs support for RTL9300") caused
previously an out of bounds access on the array holding the names of drop
counters (and incorrect names in the output) fur RTL839x because of a
missing comma. To avoid such situation in the future, calculate the size of
the array during compilation. And to ensure that this count matches the
actual number of counters in HW, compare this number during compile time
with the expected value.

Suggested-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20905
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-24 17:43:03 +01:00
Sven Eckelmann
abb7bbb64a realtek: dsa: rtl839x: Fix incorrect drop counter names
The counter names "CFM" and "VLAN_IGR_FLTR" were not separated by a comma
in the `rtl839x_drop_cntr` array. As result, these two headers were merged
to a single header "CFMVLAN_IGR_FLTR" and everything after that was shifted
by one. The last name (for the 45th counter) was also not defined and was
therefore accessing data outside the array.

Fixes: 1cfd45ae0b ("realtek: Add debugfs support for RTL9300")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20905
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-24 17:43:03 +01:00
Nick Hainke
adad973a9c toolchain: binutils: update to 2.45.1
Release Notes:
- https://sourceware.org/pipermail/binutils/2025-November/145592.html

Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-24 09:41:48 +01:00
Nick Hainke
27d24fb7b0 libxml2: update to 2.15.1
Update to latest release. Location of cmake files changed.

Link: https://github.com/openwrt/openwrt/pull/20880
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-24 09:40:35 +01:00
Nick Hainke
686b7a3ab4 binutils: update to 2.45.1
Patches automatically refreshed.

Release Notes:
- 2.45.1: https://sourceware.org/pipermail/binutils/2025-November/145592.html
- 2.45.0: https://lists.gnu.org/archive/html/info-gnu/2025-07/msg00009.html
- 2.44.0: https://lists.gnu.org/archive/html/info-gnu/2025-02/msg00001.html
- 2.43.0: https://lists.gnu.org/archive/html/info-gnu/2024-08/msg00001.html

Link: https://github.com/openwrt/openwrt/pull/20884
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-24 09:39:48 +01:00
Nick Hainke
6f0fee58e6 libbsd: update to 0.12.2
Update to latest release.

Link: https://github.com/openwrt/openwrt/pull/20899
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-24 09:38:37 +01:00
Aleksander Jan Bajkowski
6c3eea4cfe mediatek: filogic: increase flash speed on ASUS TUF AX6000
This commit increases the SPI bus frequency from 20 to 52 MHz. Reduces boot
time by 2s. Below is a performance comparison.

Before:
root@OpenWrt:~# dd if=/dev/mtd1 of=/dev/null bs=10M count=1 status=progress
10485760 bytes (10 MB, 10 MiB) copied, 1.68404 s, 6.2 MB/s

After:
root@OpenWrt:~# dd if=/dev/mtd1 of=/dev/null bs=10M count=1 status=progress
10485760 bytes (10 MB, 10 MiB) copied, 0.819222 s, 12.8 MB/s

Taken from PR #18752 as each device should be tested individually, so I have
created a separate PR for this.

Signed-off-by: Sky Huang <SkyLake.Huang@mediatek.com>
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20853
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 01:09:13 +01:00
Jan Hoffmann
fccf75eb03 mediatek: filogic: add factory image for Asus TUF-AX4200
The initramfs.trx image can be flashed from the web interface of factory
firmware.

Unfortunately, the default boot command of the bootloader does not load
the ramdisk in the FIT image. This means that the image can only be
built when the option TARGET_ROOTFS_INITRAMFS_SEPARATE is disabled.

Tested with firmware 3.0.0.4.388_33965 (U-Boot 2022.10 / 2.0.0.5).

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/20841
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 01:07:04 +01:00
Mikhail Zhilkin
05cddcd12a kernel: add support for Fudan Micro FM25S01BI3 SPI-NAND
Add support for Fudan Micro FM25S01BI3 SPI NAND.
Link: https://www.fmsh.com/nvm/FM25S01BI3_ds_eng.pdf

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20872
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 01:02:17 +01:00
Mikhail Zhilkin
40fc91be6e kernel: fix QE bit for Fudan Micro FM25S01A SPI-NAND
According to datasheet (http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf)
there is no QE (Quad Enable) bit for FM25S01A flash, so remove it.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20872
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 01:02:17 +01:00
Jascha Sundaresan
46ab9f3f1c filogic: add support for Netgear EAX17
Hardware
--------

SOC:   MediaTek MT7981
RAM:   512MB DDR4
FLASH: 128MB SPI-NAND
WIFI:  Mediatek MT7915 (integrated) 2x2 802.11ax 2.4 / 5 GHz
ETH:   Mediatek MT7981 internal 1 GbE PHY
UART:  3V3 115200 8N1 (Pinout silkscreened / Do not connect VCC)

Installation
------------

1. Download the OpenWrt initramfs image. Copy the image to a TFTP server
2. Connect the TFTP server to the EAX17. Conect to the serial console,
   interrupt the autoboot process by pressing '0' when prompted.
3. Download & Boot the OpenWrt initramfs image.

   $ tftpboot openwrt.bin
   $ bootm

4. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device
   using scp and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>

Signed-off-by: Jascha Sundaresan <flizarthanon@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20354
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 00:57:19 +01:00
Qing W.
1748ce8295 mediatek: add support for WAVLINK WL-WN536AX6 Rev a
Product name: Wavlink WL-WN536AX6 Rev a "Mighty LX2"
Product link: https://www.wavlink.com/en_us/product/WL-WN536AX6.html

Specifications:
SOC: MT7986AV
RAM: 512MB DDR4
Flash: 128MB SPI NAND
Ports: 4 LAN (1G) & 1 WAN (2.5G)
WIFI: MT7976PN + MT7975N
LEDs: 8 (STATUS, WIFI, WAN, LAN1, LAN2, LAN3, LAN4, PWR)
USB: 1 (3.0)

MAC table, same as stock firmware:
LAN: 80:3F:5D:xx:xx:x1 partition "hw" at 0x44e (ASCII)
WAN: 80:3F:5D:xx:xx:x2 partition "hw" at 0x460 (ASCII)
2G: 80:3F:5D:xx:xx:x3
5G: 80:3F:5D:xx:xx:x4

* Installation with OEM WebUI:

Note: Make sure PC is connected on LAN1 port. The OEM firmware has an unknown root password and settings are kept after upgrading firmware. Therefore, a customized Openwrt firmware is needed to remove the root password on login, by adding `passwd -d root` to /etc/init.d/bootcount. The WebUI does a filename check so the customized firmware is named accordingly.

1. Download modified firmware file `WAVLINK_WN536AX6-A_M36AX6_V250320-WO-437baca-modified.bin` from https://github.com/ses1er/firmware-misc/tree/main/wavlink/wl-wn536ax6a
2. Log into WebUI on default IP: http://192.168.20.1
3. Browse to More (top menu) -> System -> Firmware Upgrade.
4. Under `Local Upgrade` section, check the device to be upgraded and upload downloaded modified firmware. Click `UPLOAD FILE`, then `APPLY`
5. Wait about 2 minutes (ignore progress bar), and browse to http://192.168.20.1. You should see LUCI login page. Username is root and no password.
6. Browse to `System -> Backup/Flash Firmware`, click on `Flash Image`, click `Browse` and locate `openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin` file.
7. Uncheck `Keep settings and retain the current configuration` and click `Continue`.
8. Router will now be set to IP 192.168.1.1 which is the Openwrt default.

* Installation with UART:

Note: Having UART connected while cold booting the device will result in a kernel panic when initializing wifi. I've found this workaround:
1. Power off the device and ensure UART is not connected to PC.
2. Power up the device, when lights come on, plug in UART.
3. Warm boots and soft restarts will not cause kernel panic for the duration of device being powered on. Repeat steps for subsequent cold boots.

1. Configure TFTP server with IP 192.168.1.66. Copy `openwrt-mediatek-filogic-wavlink_wl-wn536ax6a-initramfs.itb` to TFTP root.
2. Interrupt boot by pressing 0.
3. Run the following in Uboot console: `setenv serverip 192.168.1.66; setenv ipaddr 192.168.1.1; tftpboot 0x46000000 openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-initramfs.itb; bootm`
4. Transfer `openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin` to device:
   (`scp -O openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/`)
5. Run the following on device: `sysupgrade -n /tmp/openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin`

Signed-off-by: Qing W. <ses1er@gmail.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://github.com/openwrt/openwrt/pull/20760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-24 00:43:13 +01:00
Nick Hainke
9bdf723476 libunistring: update to 1.4.1
Release Notes:
https://fossies.org/linux/libunistring/ChangeLog

Link: https://github.com/openwrt/openwrt/pull/20902
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-24 00:13:42 +01:00
Nick Hainke
86003e0b79 jansson: update to 2.14.1
Release Notes:
https://github.com/akheron/jansson/releases/tag/v2.14.1

Link: https://github.com/openwrt/openwrt/pull/20901
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 23:55:25 +01:00
Nick Hainke
d74dce45ef mpfr: update to 4.2.2
Release Notes:
https://www.mpfr.org/mpfr-current/

Link: https://github.com/openwrt/openwrt/pull/20898
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 23:53:50 +01:00
Nick Hainke
b6c274bf0f nettle: update to 3.10.2
Release Notes:
https://lists.gnu.org/archive/html/info-gnu/2025-06/msg00006.html

Link: https://github.com/openwrt/openwrt/pull/20896
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 23:52:11 +01:00
Nick Hainke
c476870174 libusb: update to 1.0.29
Release Notes:
- https://github.com/libusb/libusb/releases/tag/v1.0.29
- https://github.com/libusb/libusb/releases/tag/v1.0.28

Link: https://github.com/openwrt/openwrt/pull/20897
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 23:50:47 +01:00
Donghyun Ko
2c667f2df4 mediatek: use dt-bindings drive strength macros for ipTIME AX7800M-6E
Replace hardcoded numbers with the dt-bindings drive strength macros
defined in "dt-bindings/pinctrl/mt65xx.h".

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20894
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-23 22:32:48 +01:00
Sven Eckelmann
6e094232db realtek: Cleanup tab vs spaces for indentation
Sources files should used for the proper indentation:

* use tabs instead of 8 spaces
* spaces should never directly before a tab
* no whitespace characters at the end of a line

These rules were partially not followed in various source files.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20895
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-23 22:26:10 +01:00
Nick Hainke
223cc6e1aa gperf: update to 3.3
Release Notes:
- 3.3: https://savannah.gnu.org/news/?id=10758
- 3.2: https://savannah.gnu.org/news/?id=10747

Link: https://github.com/openwrt/openwrt/pull/20886
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 21:14:29 +01:00
Nick Hainke
04013941ee libbpf: update to 1.6.2
Release Notes:
- 1.6.2: https://github.com/libbpf/libbpf/releases/tag/v1.6.2
- 1.6.1: https://github.com/libbpf/libbpf/releases/tag/v1.6.1
- 1.6.0: https://github.com/libbpf/libbpf/releases/tag/v1.6.0
- 1.5.1: https://github.com/libbpf/libbpf/releases/tag/v1.5.1

Link: https://github.com/openwrt/openwrt/pull/20882
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 21:13:09 +01:00
Nick Hainke
2833a26a5e libtool: update to 2.5.4
Release Notes:
- 2.5.0: https://savannah.gnu.org/news/?id=10631
- 2.5.1: https://savannah.gnu.org/news/?id=10660
- 2.5.2: https://savannah.gnu.org/news/?id=10669
- 2.5.3: https://savannah.gnu.org/news/?id=10676
- 2.5.4: https://savannah.gnu.org/news/?id=10693

Link: https://github.com/openwrt/openwrt/pull/20879
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 21:11:51 +01:00
Álvaro Fernández Rojas
749d54fea8 busybox: backport hexdump fix for Big Endian systems
hexdump isn't working properly on some Big Endian systems, producing
incorrect output such as:
  hexdump -vn 5 -e '"fd" 1/1 "%02x:" 2/2 "%x:"' /dev/urandom
  fdff:542c0054:17920017:
Which should be:
  fdff:542c:1792:

This breaks the default ULA prefix generation on some systems. See:
https://github.com/openwrt/openwrt/issues/19844

The issue has already been fixed upstream, so we can backport the fix:
https://git.busybox.net/busybox/commit/libbb/dump.c?id=f5c7cae55fc3e19d074198bc12152486067ea8c7

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-23 17:10:00 +01:00
Christian Lachner
671898c7d2 libpcre2: Default enable JIT support for aarch64
JIT support in pcre2 allows for extra performance for regex operations in
applications that support it. As outlined in
https://pcre.org/current/doc/html/pcre2jit.html#SEC2 64-bit ARM is
supported.

I tested this on an GL.Inet MT6000 which is an aarch64 device and to my
knowledge everything works as expected. The primary application I tested
this on was haproxy, which makes use pcre for several operations.

If there are no known downsides or known breakages I suggest to
default-enable this feature for aarch64.

Signed-off-by: Christian Lachner <gladiac@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20891
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-23 13:55:31 +01:00
Nick Hainke
557c174a3c toolchain: gcc: add fanalyzer config option
Add gcc config option for fanalyzer. As a result of this option, a static
analysis of the program flow is conducted, allowing interprocedural paths
to be identified and warnings to be issued if problems are identified.

Link: https://github.com/openwrt/openwrt/pull/12576
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 09:33:15 +01:00
Nick Hainke
57e8eb6208 refpolicy: update to 2.20250923
Changelog:
  Notable Changes
  - Several updates and fixes for systemd
  - Add new permissions and policy capabilities
  - Drop reiserfs support (it was removed in kernel 6.13)

  New Modules
  - bubblewrap
  - incus
  - kanidm
  - seatd
  - opensnitch

Refresh patch:
- 100-no-docs.patch

Link: https://github.com/openwrt/openwrt/pull/20861
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 09:23:21 +01:00
Nick Hainke
08be1ef1a1 selinux-policy: update to 2.8.3
Changelog:
- b1d7050 README
- 13f78a8 nlbwmon fix
- 9a98b2b ratelimit and nlbwmon rules
- a193e4b adds nlbwmon skel
- b5672a0 README: adds nlbwmon to wish list
- 2058100 adds radius and uam unreserved port
- 026b712 ratelimit for busybox ip
- 7661081 adds ratelimit sysagent skel and update README
- 3bea826 luci and rpcserver apk related
- ba8607d all sys agents can use inherited ssh server pipes
- 24b9396 README: adds some more items to wish list
- da7a02c ttyxperm: adds TIOCSERGETLSR
- 2fce9ee Revert "file_contexts.subs_dist: order matters with libselinux 3.8"
- 9a13714 file_contexts.subs_dist: order matters with libselinux 3.8
- a148827 README update
- 9d9a1ff iproute2 ip: ip mptcp monitor
- cf7efdc envtools: setenv

Link: https://github.com/openwrt/openwrt/pull/20859
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 09:22:41 +01:00
Nick Hainke
dadfca0559 dtc: update to 1.7.2
Changelog:
- 2d10aa2 Bump version to v1.7.2
- 48795c8 pylibfdt: Don't emit warnings from swig generate C code
- 838f11e fdtoverlay: provide better error message for missing `/__symbols__`
- d1e2384 pylibfdt/libfdt.i: Use SWIG_AppendOutput
- 18aa49a Escape spaces in depfile with backslashes.
- f9968fa libfdt.h: whitespace consistency fixups
- 9b5f65f libfdt.h: typo and consistency fixes

Link: https://github.com/openwrt/openwrt/pull/20858
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 09:20:12 +01:00
Nick Hainke
71deb5b6d5 tools/squashfs4: update to 4.7.4
Remove upstreamed patches:
- 0001-mksquashfs-fix-build-for-big-endian-architectures.patch
- 0002-gzip_wrapper-fix-byte-swapping-prototype.patch
- 0003-mksquashfs-fix-regression-introduced-by-SEEK_DATA-op.patch

Link: https://github.com/openwrt/openwrt/pull/20843
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:22:17 +01:00
Nick Hainke
ef9f45e683 tools: libressl: update to 4.2.1
Changelog:
- 3.8.0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.8.0-relnotes.txt
- 3.8.1: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.8.1-relnotes.txt
- 3.8.2: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.8.3-relnotes.txt
- 3.8.4: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.8.4-relnotes.txt
- 3.9.0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.9.0-relnotes.txt
- 3.9.1: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.9.1-relnotes.txt
- 3.9.2: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.9.2-relnotes.txt
- 4.0.0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.0.0-relnotes.txt
- 4.1.0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.1.0-relnotes.txt
- 4.2.0: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.2.0-relnotes.txt
- 4.2.1: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.2.1-relnotes.txt

Further add patches:
- 010-static.patch
- 011-fix-linking.patch

Link: https://github.com/openwrt/openwrt/pull/19562
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:17:09 +01:00
Nick Hainke
afb90babed tools/llvm-bpf: update to 21.1.6
Release Notes:
- https://discourse.llvm.org/t/llvm-21-1-6-released
- https://discourse.llvm.org/t/llvm-21-1-5-released
- https://discourse.llvm.org/t/llvm-21-1-4-released
- https://discourse.llvm.org/t/llvm-21-1-3-released
- https://discourse.llvm.org/t/llvm-21-1-2-released
- https://discourse.llvm.org/t/llvm-21-1-1-released
- https://discourse.llvm.org/t/llvm-21-1-0-released
- https://discourse.llvm.org/t/llvm-20-1-7-released

Link: https://github.com/openwrt/openwrt/pull/20870
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:13:01 +01:00
Nick Hainke
9c025e510a bpftool: update to 7.6.0
Release Notes:
- https://github.com/libbpf/bpftool/releases/tag/v7.6.0

Link: https://github.com/openwrt/openwrt/pull/20846
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:11:28 +01:00
Nick Hainke
1cd3a09485 tools/dwarves: update to 1.31
Upstream switched to tar.xz.

Release Notes:
- https://github.com/acmel/dwarves/releases/tag/v1.30
- https://github.com/acmel/dwarves/releases/tag/v1.31

Link: https://github.com/openwrt/openwrt/pull/20845
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:09:51 +01:00
Nick Hainke
582d8f0ed7 tools/libdeflate: update to 1.25
Changelog:
- Update to v1.25 (2025-10-31): no fixes or improvements, only the build
  harness maintenance.

Link: https://github.com/openwrt/openwrt/pull/20844
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-22 23:07:46 +01:00
Goetz Goerisch
dd8307e61f at91: refresh kernel-config sama7
refreshed running make kernel_oldconfig CONFIG_TARGET=subtarget

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:31 +01:00
Goetz Goerisch
8fff054b04 at91: refresh kernel-config sama5
refreshed running make kernel_oldconfig CONFIG_TARGET=subtarget

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:30 +01:00
Goetz Goerisch
5f07bb421b at91: refresh kernel-config sam9x
refreshed running make kernel_oldconfig CONFIG_TARGET=subtarget

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:30 +01:00
Goetz Goerisch
f45c5c2670 at91: add missing KConfig for sam9x sama5
CONFIG_DRM_MICROCHIP_LVDS_SERIALIZER needs to be added

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:30 +01:00
Goetz Goerisch
5f190feb5e at91: enable testing kernel 6.12
enable kernel 6.12 as testing

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:29 +01:00
Goetz Goerisch
1f3ad121f6 at91: Restore kernel files for v6.6
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: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:29 +01:00
Goetz Goerisch
00c417b56f at91: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19471
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 16:09:20 +01:00
Hauke Mehrtens
34aa008923 ucode: update to Git HEAD (2025-11-19)
8567eef4d3a5 examples/execute-file: free program
292e0f87cbf7 examples: free syntax_error
fd5889028f5e Revert "nl80211: read all pending event messages"
80a88b852620 types: add ucv_string_alloc helper function

The removed patch was applied upstream.

Link: https://github.com/openwrt/openwrt/pull/20850
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-22 12:50:01 +01:00
Christian Marangi
bca5e064af omap: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Link: https://github.com/openwrt/openwrt/pull/20857
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:16:35 +01:00
Christian Marangi
12ebda3854 omap: switch to kernel 6.12
Move the omap target to kernel 6.12 by default.

Link: https://github.com/openwrt/openwrt/pull/20857
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:16:34 +01:00
Christian Marangi
95f62f1fe2 imx: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Link: https://github.com/openwrt/openwrt/pull/20856
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:11:52 +01:00
Christian Marangi
3519588d65 imx: switch to kernel 6.12
Move the imx target to kernel 6.12 by default.

Link: https://github.com/openwrt/openwrt/pull/20856
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:11:51 +01:00
Christian Marangi
345efe66fd apm821xx: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Link: https://github.com/openwrt/openwrt/pull/20855
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:11:18 +01:00
Christian Marangi
c2b3bb66e0 apm821xx: switch to kernel 6.12
Move the apm821xx target to kernel 6.12 by default.

Link: https://github.com/openwrt/openwrt/pull/20855
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:11:17 +01:00
Christian Marangi
f9802d70c6 package: drop creating spurious tmp directory in feed directory
In implementing APK support it seems a a leftover was never removed that
creates an unused tmp directory in the package feed directory.

Drop it as it's not used anywhere. What is actually needed is the
creation of the $$(PDIR_$(1)) directory for the feed package directory
in the bin/packages directory.

This was a side effect of using INSTALL_DIR on $$(PDIR_$(1))/tmp that
indirectly creates the $$(PDIR_$(1)) parent directory.

Fixes: d788ab376f ("build: add APK package build capabilities")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 10:01:55 +01:00
Christian Marangi
ed4aabf425 Revert "package: drop creating spurious tmp directory in feed directory"
This reverts commit cea8507dcc.

This actually cause package pack error on every package outside the
target directory.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-22 09:58:26 +01:00
Rosen Penev
8e5db148e9 apk: update to 3.0.0-rc8
Added compatibility patch for LibreSSL 4.0.

Refreshed other patches.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20851
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-21 23:35:33 +01:00
Christian Marangi
cea8507dcc package: drop creating spurious tmp directory in feed directory
In implementing APK support it seems a a leftover was never removed that
creates an unused tmp directory in the package feed directory.

Drop it as it's not used anywhere.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-21 23:34:02 +01:00
Álvaro Fernández Rojas
08964109be generic: 6.12: backport b53 patches from netdev-next
These patches have been accepted in netdev-next for linux v6.19.

2b3013ac0302 net: dsa: b53: add support for bcm63xx ARL entry format
300f78e8b6b7 net: dsa: b53: add support for 5389/5397/5398 ARL entry format
a7e73339ad46 net: dsa: b53: move ARL entry functions into ops struct
e0c476f325a8 net: dsa: b53: split reading search entry into their own functions
1716be6db04a net: dsa: b53: provide accessors for accessing ARL_SRCH_CTL
bf6e9d2ae1db net: dsa: b53: move writing ARL entries into their own functions
4a291fe72267 net: dsa: b53: move reading ARL entries into their own function
a6e4fd38bf2f net: dsa: b53: b53_arl_read{,25}(): use the entry for comparision

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-21 21:42:55 +01:00
Álvaro Fernández Rojas
cd75f703c2 generic: 6.12: backport b53 patches from v6.18
These patches have been accepted for linux v6.18.

e57723fe536f net: dsa: b53: properly bound ARL searches for < 4 ARL bin chips
674b34c4c770 net: dsa: b53: fix ageing time for BCM53101
89eb9a62aed7 net: dsa: b53: fix reserved register access in b53_fdb_dump()
61730ac10ba9 net: dsa: b53: mmap: Implement bcm63268 gphy power control
7f95f04fe190 net: dsa: b53: mmap: Add gphy port to phy info for bcm63268
5ac00023852d net: dsa: b53: mmap: Implement bcm63xx ephy power control
e8e13073dff7 net: dsa: b53: mmap: Add register layout for bcm6368
c251304ab021 net: dsa: b53: mmap: Add register layout for bcm6318
aed2aaa3c963 net: dsa: b53: mmap: Add syscon reference and register layout for bcm63268
fcf02a462fab net: dsa: b53: Define chip IDs for more bcm63xx SoCs
be7a79145d85 net: dsa: b53: Add phy_enable(), phy_disable() methods
762e7e174da9 net: dsa: tag_brcm: do not mark link local traffic as offloaded

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-21 21:42:55 +01:00
Álvaro Fernández Rojas
318b789cf3 generic: 6.12: reorganize b53 patches
A considerable amount of b53 patches has been backported to 6.12, so we
can rename and group the remaining ones.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-21 21:42:55 +01:00
Hauke Mehrtens
853da1d299 rpcd: update to Git HEAD (2025-11-10)
483263c7b0cd file: append "target" for symbolic links

Link: https://github.com/openwrt/openwrt/pull/20849
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 21:40:58 +01:00
Hauke Mehrtens
96fb4b5f1a uci: update to Git HEAD (2025-11-18)
b65c091a09a9 github: ci: disable json-c tests
e1ab90c510ce github: ci: add tests
8022b2e4d010 uci: add a simple build script
dec51f48a114 github: ci: add cmake build and source directories
238963f48c84 github: ci: add powerpc arch
ebb3a01a0b01 build: install uci
5bea13572325 github: ci: add MIPS64, PowerPC64 and RISCV64

Link: https://github.com/openwrt/openwrt/pull/20848
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 21:37:51 +01:00
Hauke Mehrtens
2cffbea0ae ubus: update to Git HEAD (2025-11-18)
966c82b2197c github: ci: disable json-c tests
c4d7aff97bbe github: ci: add tests
00010b8af022 ubus: add a simple build script
1eab20d6cda2 github: ci: add cmake build and source directories
f79ddca64806 github: ci: add powerpc arch
5c7eea7fc090 build: install ubus
2737da3819fe github: ci: add MIPS64, PowerPC64 and RISCV64

Link: https://github.com/openwrt/openwrt/pull/20847
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 21:36:44 +01:00
Hauke Mehrtens
4f8f0bfeef kernel: mtdsplit_h3c_vfs: Fix build
Fix a recently introduces compile problem.

Fixes: 2acf18bf4d ("kernel: mtdsplit_h3c_vfs: use -ENOENT instead of -ENODEV")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 21:35:32 +01:00
Janusz Dziedzic
7f5c7b8626 mac80211: fix netns crash
[  201.286070] CPU: 0 UID: 0 PID: 34 Comm: kworker/u8:1 Tainted: G S         O       6.12.51 #0
[  201.294509] Tainted: [S]=CPU_OUT_OF_SPEC, [O]=OOT_MODULE
[  201.299812] Hardware name: Bananapi BPI-R64 (DT)
[  201.304422] Workqueue: netns cleanup_net
[  201.308347] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  201.315304] pc : cfg80211_switch_netns+0x270/0x2d0 [cfg80211]
[  201.321086] lr : cfg80211_switch_netns+0x26c/0x2d0 [cfg80211]
[  201.326846] sp : ffffffc081143ca0
[  201.330153] x29: ffffffc081143ca0 x28: 61c8864680b583eb x27: 0000000000000000
[  201.337287] x26: ffffffc080c46000 x25: ffffff8000d28800 x24: ffffffc081143d80
[  201.344421] x23: ffffff800834e360 x22: ffffffc080d6b280 x21: ffffffc07904aeb8
[  201.351554] x20: ffffff800834c200 x19: ffffff8005e90000 x18: 0000000000000000
[  201.358688] x17: 0000000000000000 x16: 000000000000001d x15: ffffffc081143cf8
[  201.365821] x14: ffffff8005703600 x13: 00000000000003bb x12: 0000000000000000
[  201.372955] x11: 00000000000000c0 x10: 0000000000000000 x9 : ffffffc081143bd0
[  201.380088] x8 : 0000000000000000 x7 : 7f7f7f7f7f7f7f7f x6 : 1f1f1f1f1f1f6348
[  201.387222] x5 : 0000000000000004 x4 : ffffff8000ce8000 x3 : 0000000000000000
[  201.394355] x2 : 0000000000000000 x1 : ffffff8005e90800 x0 : 00000000ffffffea
[  201.401489] Call trace:
[  201.403926]  cfg80211_switch_netns+0x270/0x2d0 [cfg80211]
[  201.409340]  ops_exit_list+0x40/0x80
[  201.412910]  cleanup_net+0x344/0x558
[  201.416480]  process_one_work+0x174/0x300
[  201.420489]  worker_thread+0x278/0x430
[  201.424234]  kthread+0xd8/0xdc
[  201.427283]  ret_from_fork+0x10/0x20

Fixes: e005cdea10 ("mac80211: update to version 6.16")
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20829
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 02:17:53 +01:00
Myoung Ha, Ji
de0b9b6252 ramips: add support for ipTIME AX2002MESH
ipTIME AX2002MESH is an 802.11ax (Wi-Fi 6) router based on
MediaTek MT7621 SoC.

Specifications:
- SoC: MediaTek MT7621, MIPS 1004Kc, 880 MHz
- RAM: 128 MiB
- Flash: NAND 128 MiB (ESMT PSU1GA30DT)
- WLAN: MediaTek MT7915E
  - 2.4 GHz: ax/b/g/n
  - 5 GHz: ac/ax/n
- Ethernet:
  - LAN: MediaTek MT7530, 2x 1GbE
  - WAN: MediaTek SoC built-in, 1x 1GbE
- UART: J4 header, 115200 8N1
  - Pinout: [3V3] [TX] [RX] [GND]
- Button: Reset
- LEDs: 6 LEDs
  - 1x CPU (Amber)
  - 1x WLAN 5GHz (Amber)
  - 1x WLAN 2.4GHz (Amber)
  - 2x LAN (Amber)
  - 1x WAN (Amber)
- Power: DC 12V/1A

MAC addresses:
| Interface | MAC               | Algorithm                 |
|:----------|:-----------------:|:--------------------------|
| WLAN 2.4G | 58:86:94:XX:XX:34 | label                     |
| WAN       | 58:86:94:XX:XX:35 | label + 1                 |
| LAN       | 58:86:94:XX:XX:37 | label + 3                 |
| WLAN 5G   | 5A:86:94:XX:XX:37 | label + 3 with LA bit set |
- The WLAN 2.4G MAC address (label) is stored in factory partition, 0x4

Installation:
- Stock web interface:
  1. Flash the **initramfs-factory** image through the web page.
  2. Boot into OpenWrt and perform sysupgrade with **sysupgrade** image.
- Recovery mode:
  1. Turn on the device and press the Reset button more than 10 seconds
     to enter recovery mode.
  2. Access the recovery web interface at 192.168.0.1/24 and flash the
     **initramfs-factory** image.
  3. Boot into OpenWrt and perform sysupgrade with **sysupgrade** image.

Signed-off-by: Myoung Ha, Ji <webmaster@null0xff.com>
Link: https://github.com/openwrt/openwrt/pull/20584
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 01:49:58 +01:00
Jahidul Islam
2462b36f0c mediatek: add support for Imou HX21
This board is also as known as LC-HX3001

Hardware specification:
  SoC: MediaTek MT7981B 2x A53
  Flash: Foresee F35SQA001G 128 MB SPI-NAND
  RAM: 256MB DDR3
  Ethernet: 4x 10/100/1000 Mbps
  Switch: MediaTek MT7531AE
  WiFi: MediaTek MT7976C
  Button: Reset, Mesh
  Power: DC 12V 1A

Gain SSH access:
Method 1:
1. Connect UART Adapter to the router
2. UART pins are enabled, set the root password with passwd command
   start the dropbear instance on port 22

Method 2:
1. Login into web interface, and restore the router with SSH enabled configuration.
2. After reboot Default Web interface password will be 12345678
   SSH password is empty

Flash instructions:
1. Connect to HX21, backup everything, especially 'Factory' part.
3. Write new FIP:
   mtd write openwrt-mediatek-filogic-hx_21-bl31-uboot.fip FIP
4. Set static IP on your PC:
   IP 192.168.1.254/24, GW 192.168.1.1
5. Serve OpenWrt initramfs image using TFTP server.
6. Wait for TFTP recovery to complete.
7. After OpenWrt has booted, perform sysupgrade.
8. To write new BL2
   Install mtd-rw
   opkg update && opkg install kmod-mtd-rw
   insmod mtd-rw i_want_a_brick=1
   mtd write openwrt-mediatek-filogic-imou_hx21-preloader.bin bl2

Signed-off-by: Jahidul Islam <hello@jahid.io>
Link: https://github.com/openwrt/openwrt/pull/20753
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 01:43:09 +01:00
Radek Dostál
2f17e44c69 ath79: re-enable build of TP-Link RE355 v1, RE450 v1 and RE450 v2
With previous patches these devices have only 128 KiB less space than
RE450 v3. It may be even possible to revert commit 65b6f1c1b2 ("ath79:
move TP-Link RE450 v1 & v2 and RE355 v1 to tiny target") but that was
not done as the device has only 8 MiB flash and will eventually run out of
it anyway.

Signed-off-by: Radek Dostál <rd@radekdostal.com>
Link: https://github.com/openwrt/openwrt/pull/20709
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 00:03:24 +01:00
Radek Dostál
e768731dc8 ath79: switch TP-Link RE355 v1, RE450 v1 and RE450 v2 to mtd-concat
This patch utilizes unused and empty flash space in the original partition
layout and increase maximum image size by 1664 KiB.

Tested on RE450v1 by running sysupgrade with build of size 5697 KiB and
checking that df shows 1988 1K-blocks for "/overlay".

Inspired by commit ebd5e5fb53 ("ramips: switched TP-Link RE305 v1 to new
partition layout").

Signed-off-by: Radek Dostál <rd@radekdostal.com>
Link: https://github.com/openwrt/openwrt/pull/20709
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 00:03:24 +01:00
Radek Dostál
a03bd9d9a8 ath79: reduce config partition size for RE450 v1 and RE355 v1 to 0x20000
Dump of content of my RE450 v1 showed, that there are valid data only
up to 0x10420. Everything after is just 0xFF. This will also make
partition table identical to qca9563_tplink_re450-v2.dts, which seems
to be logical.

Signed-off-by: Radek Dostál <rd@radekdostal.com>
Link: https://github.com/openwrt/openwrt/pull/20709
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-21 00:03:24 +01:00
Marcin Leksmark
485f9b0d31 ramips: add support for D-Link DIR-2660 A2
This patch adds support for D-Link DIR-2660 A2.
Based on the commit: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=b5dd746cbb1aaf91f4b68e9f3eda97413550d904,

Both devices look identical, except for the A1/A2 designation.
You can safely install the A1 firmware for the A2 – I've been testing it for several months as a DUMB AP – without any problems.

Specifications:
* SoC: MediaTek MT7621AT
* RAM: 256 MB (DDR3)
* Flash: 128 MB (NAND)
* WiFi: MediaTek MT7615N (x2)
* Switch: 1 WAN, 4 LAN (Gigabit)
* Ports: 1 USB 2.0, 1 USB 3.0
* Buttons: Reset, WPS
* LEDs: Power (white/orange), Internet (white/orange), WiFi 2.4G (white),
        WiFi 5G (white), USB 3.0 (white), USB 2.0 (white)

Notes:
* WiFi 2.4G and WiFi 5G LEDs are wired directly to the wireless chips

Installation:
* D-Link Recovery GUI: power down the router, press and hold the reset
  button, then re-plug it. Keep the reset button pressed until the power
  LED starts flashing orange, manually assign a static IP address under
  the 192.168.0.xxx subnet (e.g. 192.168.0.2) and go to http://192.168.0.1

* Some modern browsers may have problems flashing via the Recovery GUI,
  if that occurs consider uploading the firmware through cURL:

    curl -v -i -F "firmware=@file.bin" 192.168.0.1

Signed-off-by: Marcin Leksmark <lexmark3200@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20020
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 23:46:27 +01:00
Christian Marangi
f9eaa1cf1f kernel: mtdsplit_minor: use -ENOENT instead of -ENODEV
New linux version will check the return code of parser on subpartitions.
The only valid case for skipping a parser with an error is -ENOENT.

Change the relevant entry to -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:12 +01:00
Christian Marangi
91a9fb7460 Revert "kernel: mtdsplit_minor: return 0 if not fatal"
This reverts commit ade045084b.

Skipping parser for subpartition will be handled now with -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:12 +01:00
Christian Marangi
d21262edcf kernel: mtdsplit_uimage: use -ENOENT instead of -ENODEV
New linux version will check the return code of parser on subpartitions.
The only valid case for skipping a parser with an error is -ENOENT.

Change the relevant entry to -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:11 +01:00
Christian Marangi
8e6c6928da Revert "kernel: mtdsplit_uimage: return 0 if not fatal"
This reverts commit a51359aafd.

Skipping parser for subpartition will be handled now with -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:11 +01:00
Christian Marangi
2acf18bf4d kernel: mtdsplit_h3c_vfs: use -ENOENT instead of -ENODEV
New linux version will check the return code of parser on subpartitions.
The only valid case for skipping a parser with an error is -ENOENT.

Change the relevant entry to -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:11 +01:00
Christian Marangi
728ca2bc39 Revert "kernel: mtdsplit_h3c_vfs: return 0 for non-fatal errors"
This reverts commit 6fa1775348.

Skipping parser for subpartition will be handled now with -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:11 +01:00
Christian Marangi
e9ae6b19f0 kernel: generic: mtdsplit_seil: use -ENOENT instead of -ENODEV
New linux version will check the return code of parser on subpartitions.
The only valid case for skipping a parser with an error is -ENOENT.

Change the relevant entry to -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:11 +01:00
Christian Marangi
730b3872fe Revert "kernel: generic: mtdsplit_seil: return 0 instead of -ENODEV"
This reverts commit 5aab294726.

Skipping parser for subpartition will be handled now with -ENOENT.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:42:10 +01:00
Tianling Shen
d2fa070f70 mediatek: fix ubi size for zbtlink zbt z8102ax v2
According to the factory uboot and firmware[1], the ubi size is set
to 512 MiB (0x20000000) and it exceeds the size of the flash, after
that the uboot and kernel resizes it to 114.5 MiB (0x7280000) instead
of 114.125 MiB (0x7220000). The mismatch of the ubi size causes
kernel fails to read ubi volumes and throws panic.

Trim whitespaces while at it.

1. https://github.com/immortalwrt/immortalwrt/issues/2123#issuecomment-3523744128

Fixes: c908fc7d95 ("mediatek: add support for Zbtlink ZBT-Z8102AX v2")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20769
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 23:26:29 +01:00
James Davis
2cc8d3e382 mediatek: add Zyxel NWA90AX PRO model identifier
Adds the 81E1 model identifier for the Zyxel NWA90AX Pro to allow factory flashing to these devices.

Device tree output of the latest OEM firmware upgrade
-----------------------------------------------------
/dts-v1/;

/ {
        timestamp = <0x6860779e>;
        description = [00];
        compat-models = [81 e1 ff ff ff ff ff ff ff ff];
        fw_version = "7.10(###.3)";

        images {

Device tree of the OpenWRT factory firmware after change
--------------------------------------------------------
/dts-v1/;

/ {
        timestamp = <0x68f513d9>;
        description = "Zyxel FIT (Flattened Image Tree)";
        compat-models = [80 e1 81 e1 ff ff ff ff ff ff];
        fw_version = "9.99(###.1)";
        address-cells = <0x01>;

        images {

Fixes: e34e874a11 ("mediatek: add support for Zyxel NWA90AX PRO")
Signed-off-by: James Davis <james.l.davis@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20759
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 23:16:54 +01:00
Donghyun Ko
05a597efd6 mediatek: add support for ipTIME AX3000SE
Specification
-------------
- SoC       : MediaTek MT7981BA dual-core ARM Cortex-A53 1.3GHz
- RAM       : DDR3 256Mbytes, ESMT M15T2G16128A
- Flash     : 128Mbytes NAND Flash, ESMT F50L1G41LB
- WLAN      : MediaTek MT7976CN dual-band Wi-Fi 6
  - 2.4GHz  : b/g/n/ax, MU-MIMO
  - 5GHz    : a/n/ac/ax, MU-MIMO
- Ethernet  : MediaTek MT7531AE
  - LAN     : 10/100/1000 Mbps x4
  - WAN     : 10/100/1000 Mbps x1
- UART      : 1x4 pin header hole on PCB
  - 3.3V, RX, GND, TX (115200, 8N1)
- Buttons   : WPS, Reset
- LEDs      : 1x CPU (Amber/Blue)
              1x Wi-Fi (Amber/Blue)
              1x WAN activity (Amber/Blue)
              4x LAN activity (Amber/Blue)
- Power     : 12VDC, 1A (Center positive polarity)

Note: The LED color is amber or blue, depending on your router's color
(black/white).

MAC address
-----------
+-----------+-------------------+-----------+
| Interface | MAC               | Algorithm |
+-----------+-------------------+-----------+
| WLAN 2.4G | B0:38:6C:xx:xx:xx | label     |
| WLAN 5G   | B2:38:6C:4x:xx:xx |           |
| WAN       | B0:38:6C:xx:xx:xx | label + 1 |
| LAN       | B0:38:6C:xx:xx:xx | label + 3 |
+-----------+-------------------+-----------+
The WLAN 2.4G MAC address was found in 'Factory' partition, 0x4

Installation
------------
1. Download the OEM recovery software (ipTIME Firmware Wizard (11ac))
   from the manufacturer's website
2. Download the *squashfs-factory.bin file from the OpenWrt website
3. Press a reset button, and power up the router (keep pressing the reset button)
4. Wait more than 10 seconds until the CPU LED stop blinking
5. Connect the router (LAN port) to the PC
6. Run the OEM recovery software and follow the instructions
7. Select the *squashfs-factory.bin file during the router recovery process
8. Wait for the router to boot from *squashfs-factory.bin

Limitation: Triggering the WLAN LED for activity on both phy0 (2.4GHz) and phy1 (5GHz)
----------
Currently, the UCI doesn't support triggering a single LED for activity
on multiple WLAN interfaces. As a temporary workaround, the LED is
configured to only indicate activity on `phy1`. If you wish to monitor
`phy0` instead, you must change the device from `phy1-ap0` to `phy0-ap0`
in the LuCI LED configuration.

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20771
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 23:10:11 +01:00
Mikhail Kshevetskiy
b8742b1ae0 uboot-airoha: update to v2025.10
Changes:
 * removed upstreamed patches,
 * rebased local patches,
 * fix en7581_evb/an7583_evb booting issues
 * enable position independent code

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20400
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:08:39 +01:00
Mikhail Kshevetskiy
6e3867e5b1 airoha: spi: update en7523 airoha snfi patches & dts
Use latest patch version

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20400
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:08:39 +01:00
Ziyang Huang
a19ccd9d15 airoha: an7581: enable NPU by default
There is no reason not to do this.

Use the following commands to enable hardware offloading:
    uci set firewall.@defaults[0].flow_offloading='1'
    uci set firewall.@defaults[0].flow_offloading_hw='1'
    uci commit

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20484
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:05:36 +01:00
Balázs Triszka
c7d6692bd8 airoha: fix PHY_DETACH_NO_HW_RESET patch panic
Fix kernel panic caused by downstream PHY_DETACH_NO_HW_RESET patch.

[   20.994001] airoha_eth 1fb50000.ethernet wan: validation of usxgmii with support 00,00000000,00000000,00006000 and advertisement 00,00000000,00000000,00006000 failed: -EINVAL
[   21.058106] Unable to handle kernel access to user memory outside uaccess routines at virtual address 00000000000000b8
[   21.068879] Mem abort info:
[   21.071684]   ESR = 0x0000000096000005
[   21.075436]   EC = 0x25: DABT (current EL), IL = 32 bits
[   21.080790]   SET = 0, FnV = 0
[   21.083854]   EA = 0, S1PTW = 0
[   21.086997]   FSC = 0x05: level 1 translation fault
[   21.091931] Data abort info:
[   21.094829]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
[   21.100359]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[   21.105419]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[   21.110762] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000091bc8000
[   21.117218] [00000000000000b8] pgd=0800000084ee9003, p4d=0800000084ee9003, pud=0800000084ee9003, pmd=0000000000000000
[   21.127892] Internal error: Oops: 0000000096000005 [#1] SMP
[   21.133483] Modules linked in: pppoe ppp_async nft_fib_inet nf_flow_table_inet pppox ppp_generic nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nfte
[   21.191941] CPU: 3 UID: 0 PID: 1882 Comm: netifd Tainted: G           O       6.12.57 #0
[   21.200046] Tainted: [O]=OOT_MODULE
[   21.203534] Hardware name: Gemtek W1700K (DT)
[   21.207892] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   21.214861] pc : phy_detach+0xe8/0x194
[   21.218628] lr : phy_detach+0xe4/0x194
[   21.222387] sp : ffffffc0823ebae0
[   21.225702] x29: ffffffc0823ebae0 x28: ffffff8005451c00 x27: 0000000000000000
[   21.232846] x26: 0000000000000000 x25: 0000000000001003 x24: ffffffc080cf8240
[   21.239990] x23: 0000000000001002 x22: ffffff807fc527f8 x21: ffffffc080c93318
[   21.247125] x20: ffffff8001cfc000 x19: ffffff80036f7000 x18: ffffff8012cde323
[   21.254269] x17: 303a302d30333537 x16: 000000000000000e x15: 0000005139b64de4
[   21.261413] x14: 0000000000000001 x13: ffffff80020b46c0 x12: 0000000000000001
[   21.268550] x11: ffffff80020b46c0 x10: ffffff8005451cc0 x9 : ffffff807dbf5200
[   21.275694] x8 : ffffff80020b46c0 x7 : ffffff80010a8ed0 x6 : 0000000000000000
[   21.282838] x5 : 00000000000013f8 x4 : 0000000000000000 x3 : ffffff8005451c00
[   21.289983] x2 : 0000000000000000 x1 : ffffff8005451c00 x0 : 0000000000000000
[   21.297128] Call trace:
[   21.299575]  phy_detach+0xe8/0x194
[   21.302988]  phylink_fwnode_phy_connect+0x194/0x1c0
[   21.307874]  phylink_of_phy_connect+0x18/0x20
[   21.312248]  airoha_dev_open+0x44/0x2b0
[   21.316094]  __dev_open+0xe8/0x15c
[   21.319505]  __dev_change_flags+0x154/0x1c0
[   21.323698]  dev_change_flags+0x20/0x64
[   21.327541]  dev_ifsioc+0x28c/0x444
[   21.331032]  dev_ioctl+0x290/0x4b8
[   21.334434]  sock_ioctl+0x31c/0x444
[   21.337923]  __arm64_sys_ioctl+0x354/0xe60
[   21.342020]  invoke_syscall.constprop.0+0x58/0xec
[   21.346725]  do_el0_svc+0x3c/0xd4
[   21.350041]  el0_svc+0x18/0x60
[   21.353097]  el0t_64_sync_handler+0x118/0x124
[   21.357455]  el0t_64_sync+0x150/0x154

Make sure the phydev have a driver before asserting a signal or we would
dereference a NULL address.

Signed-off-by: Balázs Triszka <info@balika011.hu>
[ improve commit description ]
Link: https://github.com/openwrt/openwrt/pull/20740
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:04:04 +01:00
Chukun Pan
69f0ee5baf airoha: backport and fix pinctrl driver
Backport changes to the pinctrl driver to bring it closer to
the upstream version. Also fix the bug in the pinctrl driver:

pinctrl-airoha ...pinctrl: invalid function mdio in map table

Fixes: bd7f5b3 ("airoha: replace AN7583 pinctrl patch with upstream version")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20770
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:00:13 +01:00
Chukun Pan
db51030324 airoha: reorder I2C and UART patches
The I2C and UART patch numbers are duplicates
of other patches, so reordered them.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20770
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 23:00:13 +01:00
Liangbin Lian
e6a5ca0da7 rockchip: LinkEase EasePi R1 use dedicated uboot
Fixes the "mdio_bus stmmac-1: MDIO device at address 1 is missing" error
that occurs during cold boot when initializing GMAC.

Fixes: 8ca4caacd0 ("rockchip: Add support for RK3568 LinkEase EasePi R1")
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20772
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 22:24:11 +01:00
Liangbin Lian
5dff7b45d3 uboot-rockchip: add dedicated uboot for LinkEase EasePi R1
The generic-rk3568 does not reset the gmac phy, causing the kernel to
fail to initialize gmac during cold boot with the error message
"mdio_bus stmmac-1: MDIO device at address 1 is missing."

Adding a dedicated uboot for EasePi R1 to resolve this issue.

The EasePi R1's DTS hasn't been merged into the Linux release yet,
so it cannot be submitted to the upstream u-boot.

Fixes: ef093299db ("uboot-rockchip: add support for LinkEase EasePi R1")
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20772
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 22:24:11 +01:00
gongzi miao
738876e76b kernel: bump 6.12 to 6.12.58
changelogs:
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.58

Removed upstreamed patches:
1. target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch
   Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=a4daaf063f8269a5881154c5b77c5ef6639d65d3

2. target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch
   Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=9a7a5d50ee2e035325de9c720e4842d6759d2374

3. target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch
   Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=d0e217b33d42bfe52ef7ef447916a23a586e6e5c

4. target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch
   Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=8cc561dd9d02f1753ae34dfdd565662828be9a9d

Additional changes:
- Manually adapted bcm27xx patch:
  * 950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch
    Rebased and adjusted for kernel 6.12 to fix context conflicts.
- Synced lantiq DTS (danube.dtsi) with upstream bindings
  to fix DT validation issues on kernel 6.12.
- Manually adapted DTS to match OpenWrt's lantiq DTS layout.

Compile-tested on x86_64
Run-tested on x86_64

Signed-off-by: gongzi miao <miaogongzi0227@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20777
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-20 21:30:26 +01:00
Nick Hainke
e62ff2eb2b toolchain: nasm: update to 3.01
Switch to tar.xz and update to latest release.

Link: https://github.com/openwrt/openwrt/pull/20836
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-20 21:23:23 +01:00
Konstantin Demin
9b7ffed9eb base-files: allow to skip unwanted scripts
this change allows one to selectively "hush" scripts from /etc/profile.d/ directory.
e.g., to skip "opkg to apk cheatsheet" message ("/etc/profile.d/apk-cheatsheet.sh") create empty file "/etc/profile.d/apk-cheatsheet.hush" using, for example, command "touch /etc/profile.d/apk-cheatsheet.hush"

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19953
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-20 17:48:18 +01:00
Konstantin Demin
eb71d10009 base-files: split /etc/profile
- move extra parts to /etc/profile.d/*
- improve syntax and messages

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19953
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-20 17:48:18 +01:00
Andy Chiang
f7d6e73d59 kernel: fix build of kmod-udptunnel4 and kmod-udptunnel6
This fixes the following errors:
```
make[4]: Entering directory '/home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.12.57'
  MODPOST /home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/ovpn-dco-0.2.20250801/drivers/net/ovpn-dco/Module.symvers
ERROR: modpost: "udp_tunnel6_xmit_skb" [/home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/ovpn-dco-0.2.20250801/drivers/net/ovpn-dco/ovpn-dco-v2.ko] undefined!
ERROR: modpost: "setup_udp_tunnel_sock" [/home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/ovpn-dco-0.2.20250801/drivers/net/ovpn-dco/ovpn-dco-v2.ko] undefined!
ERROR: modpost: "udp_tunnel_xmit_skb" [/home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/ovpn-dco-0.2.20250801/drivers/net/ovpn-dco/ovpn-dco-v2.ko] undefined!
make[6]: *** [scripts/Makefile.modpost:145: /home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/ovpn-dco-0.2.20250801/drivers/net/ovpn-dco/Module.symvers] Error 1
make[5]: *** [/home/runner/work/OP/OP/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.12.57/Makefile:1897: modpost] Error 2
make[4]: *** [Makefile:224: __sub-make] Error 2
```

ref 1d15a96b29
fixes: openwrt/packages#22998

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20839
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 17:28:39 +01:00
Nick Hainke
075ec5501a tools/ccache: update to 4.12.1
Release Notes:
https://ccache.dev/releasenotes.html#_ccache_4_12_1

Patch manually refreshed:
- 100-honour-copts.patch

Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/20837
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-20 14:00:41 +01:00
Álvaro Fernández Rojas
15fb19cdb3 mpc85xx: refresh kernel patch
Commit 4afaacdd7f changed 107-powerpc-85xx-add-ws-ap3825i-support.patch
without refreshing the rest of the patches.

4afaacdd7f mpc85xx: relocate AP3825i simpleImage loader
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-20 10:26:07 +01:00
Zhu Yujie
e73c4a72f4 siflower: add support for Linux 6.12
Set KERNEL_TESTING_PATCHVER to allow testing Linux 6.12.

Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:33 +01:00
Zhu Yujie
fc53b04160 siflower: 6.12: change .remove_new callback to .remove
Move back to .remove from .remove_new as kernel 6.12 unified the usage
of .remove and .remove_new (and .remove_new is expected to be dropped in
later version)

Signed-off-by: Zhu Yujie <libriunc@gmail.com>
[ improve commit description ]
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:32 +01:00
Zhu Yujie
25c6c2678e siflower: 6.12: apply trivial driver fixes
Apply trivial fixes for 6.12 files:
- Make functions static
- Add lots of missing header in drivers
- Fix no newline at end of file error and other new line error
- Drop deprecated validate function for xgmac
- Use devm for stmmac probe
- Remove host_ prefix from pcie_host_ops

Tested-by: Jingkun Zheng <mx@kevinmx.top>
Tested-by: Zhu Yujie <libriunc@gmail.com>
Tested-by: Chuanhong Guo gch981213@gmail.com
Signed-off-by: Zhu Yujie <libriunc@gmail.com>
[ improve commit description ]
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:32 +01:00
Zhu Yujie
c5e8ee681b siflower: sf21: update config-6.12
Refresh kernel configuration of the sf21 subtarget for use with Linux 6.12.

Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:32 +01:00
Zhu Yujie
31cb99491e siflower: spi: replace 'master' with 'controller' in driver
This change replaces the term 'master' with 'controller' in the
Siflower SPI driver (sf_qspi) to align with the Linux kernel's
inclusive language policy.

Tested-by: Jingkun Zheng <mx@kevinmx.top>
Tested-by: Zhu Yujie <libriunc@gmail.com>
Tested-by: Chuanhong Guo gch981213@gmail.com
Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:31 +01:00
Zhu Yujie
5866f9b024 siflower: 6.12: refresh patches
This involves rebasing the patches and resolving any conflicts
arising from changes in the base kernel between the previous
supported version and 6.12.

Tested-by: Jingkun Zheng <mx@kevinmx.top>
Tested-by: Zhu Yujie <libriunc@gmail.com>
Tested-by: Chuanhong Guo gch981213@gmail.com
Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:31 +01:00
Zhu Yujie
11565a298e siflower: 6.12: drop upstreamed patches
Drop patches from the 6.12 patchset that have been merged into the
mainline Linux kernel since the previous version.

Dropped patches:
001-net-phy-c45-add-genphy_c45_pma_read_ext_abilities-fu.patch
002-net-phy-Optimize-phy-speed-mask-to-be-compatible-to-.patch
003-net-phy-Add-driver-for-Motorcomm-yt8821-2.5G-etherne.patch
014-riscv-add-an-option-for-efficient-unaligned-access.patch

Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:31 +01:00
Zhu Yujie
dc9436728a kernel/siflower: Restore kernel files for v6.6
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: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:30 +01:00
Zhu Yujie
e67017d489 kernel/siflower: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Zhu Yujie <libriunc@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20555
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 20:57:30 +01:00
Rany Hany
a7790ce410 wifi-scripts: bump reassociation_deadline default to 20000
Most users on forums face a broken 802.11r setup when having
a very simple 802.11r config (i.e., just ieee80211r enabled).

In most cases, simply bumping reassociation_deadline to
20000 fixes their problems and allows 802.11r to just work.

Reassociation Deadline is already set to 20 seconds on Cisco
equipment by default[1] which is why this value has been
chosen.

It is also mentioned on the OpenWRT Wiki as a value that should
be changed in order for 802.11r to work on Apple devices. I think
it would be better to change the defaults instead so users don't
have to do much work for a working setup.

[1]: https://www.cisco.com/c/en/us/td/docs/wireless/controller/technotes/80211r-ft/b-80211r-dg.html

Fixes: https://github.com/openwrt/openwrt/issues/7907
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20799
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-19 18:54:27 +01:00
Rany Hany
b947064db4 wifi-scripts: allow rssi_reject_assoc_timeout to be configured
This is useful to alter the default ban time after an STA
association is rejected for being below RSSI threshold.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20811
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-19 13:57:30 +01:00
Robert Marko
f4ff823435 include: rootfs: fix APK compressed scripts tarball support
APK will generate the compressed scripts.tar by default, however we rely
on using TAR support for updating the tarball on the fly and this does not
work when tarball is compressed and will cause the following errors:
staging_dir/host/bin/tar: Cannot update compressed archives
Try /staging_dir/host/bin/tar --help' or
staging_dir/host/bin/tar --usage' for more information.

So, lets simply decompress the scripts.tar.gz before usage and then
compress it after we are done.

Fixes: 5d85657f6d ("apk-tools: implement compression of on-device scripts.tar")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-19 13:51:04 +01:00
Andy Chiang
9359fc9376 tools: erofs-utils: update to 1.8.10
ChangeLog:
  https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/ChangeLog?h=v1.8.10

Build system: x86/64
Tested on:
  - x86/64 (build + run)
  - mediatek/filogic GL-MT3000 (build + run)

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20804
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 12:39:53 +01:00
Lorenzo Bianconi
79d418eed8 mt76: Enable NPU support for Airoha AN7581 SoC
Airoha AN7581 SoC supports a Network Processor (NPU) to offload WiFi
traffic. Add the required bits to enable the support of it in the MT76
driver. This will be enabled by default if we are compiling for the
Airoha AN7581 SoC.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description ]
Link: https://github.com/openwrt/openwrt/pull/20826
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 11:30:57 +01:00
Christian Marangi
00a166d065 siflower: switch to .remove_new for downstream driver
Switch to .remove_new for downstream driver that still use the old
.remove to reduce patch delta for 6.12 bump.

Suggested-by: Zhu Yujie <libriunc@gmail.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-19 11:26:55 +01:00
Hauke Mehrtens
a2a78c04f8 build: Add support for linking with DT_RELR
This adds the -Wl,-z,pack-relative-relocs linking options.
This reduces the size of some binaries.

This is only supported on i386, x86_64, aarch64 and loongarch64 in
binutils. This feature is not support for MIPS.

musl libc supports it since version 1.2.4 .
glibc supports it since vesion 2.36.
binutils ld supports it since version 2.38 for x86 and since version
2.43 for LoongArch.

This reduces the size of the armsr default root file system from
5,262,198 bytes to 5,200,950 bytes by 61,248 bytes.

Link: https://github.com/openwrt/openwrt/pull/20679
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:17:09 +01:00
Hauke Mehrtens
08997df475 lua: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:46 +01:00
Hauke Mehrtens
18cad16f5b wireless-tools: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:46 +01:00
Hauke Mehrtens
51ab518bf9 zyxel-bootconfig: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:46 +01:00
Hauke Mehrtens
ef2c544f04 bzip2: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:45 +01:00
Hauke Mehrtens
2fc6a143a7 resolveip: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:45 +01:00
Hauke Mehrtens
f95fd36a2e comgt: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:45 +01:00
Hauke Mehrtens
f5fade5fbf ead: Forward LDFLAGS
Forward the TARGET_LDFLAGS to the linking process.

Link: https://github.com/openwrt/openwrt/pull/20813
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:13:45 +01:00
David Bauer
4afaacdd7f mpc85xx: relocate AP3825i simpleImage loader
The initramfs images beginning 24.10 do not boot on the AP3825i. The
space available for decompression preceeding the compressed image is not
enough, crashing the system.

To make existing installation instructions continue to work, link the
loader at an address following the loadaddress of the U-Boot image.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-18 21:41:35 +01:00
David Bauer
d91d4b0a74 mpc85xx: drop Kernel 6.6
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-18 21:41:35 +01:00
David Bauer
80ba925d02 mediatek: add uqmi to RUTC50 default packages
Teltonika RUTC50 has a 5G modem. Install uqmi by default to control the
modem with the default package set.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-18 20:42:09 +01:00
David Senoner
68f0988205 ramips: Add support for TP-Link Archer A5 v6 (EU)
According to the TP-Link websites the Archer C50 v6 EU is the same model
as the Archer A5 v6 EU. Installation method is the same as the C50 v6, as
they are basically the same hardware.
The commit is based on e9ac1b1.

Signed-off-by: David Senoner <seda18@rolmail.net>
2025-11-18 20:42:08 +01:00
Nick Hainke
e867131a20 qoriq: enable 6.12 testing kernel
Add testing kernel support.

Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/18669
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-18 19:29:27 +02:00
Nick Hainke
0853ffc7f1 qoriq: refresh 6.12 kernel config files
All kernel symbols are automatically refreshed by
`make kernel_oldconfig CONFIG_TARGET=target`.

Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/18669
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-18 19:29:27 +02:00
Nick Hainke
0f198be3bf kernel/qoriq: Restore kernel files for v6.6
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: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/18669
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-18 19:29:27 +02:00
Nick Hainke
21fcb093a6 kernel/qoriq: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Nick Hainke <vincent@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/18669
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-18 19:29:27 +02:00
Tianling Shen
0ccb7c9100 rockchip: backport eMMC CQE support
Backport eMMC Command Queuing support for RK3576/RK3588.

As the RK3576 device-tree has been upstreamed with the 'supports-cqe;'
property set by default, the kernel already tried to use CQE, which
results in system hang during suspend. This fixes the issue.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20780
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-18 17:26:45 +01:00
Eric Fahlgren
5d85657f6d apk-tools: implement compression of on-device scripts.tar
Default behavior for apk was to create an uncompressed scripts.tar
file.  Due to the structure of tar files, with fixed block
size and null padding, this file becomes very large on OpenWrt
installations where there are typically two scripts per package.
This could cause the raw tar file to easily grow to over 500KB,
whereas the compressed file is generally around 20-30KB.

When stored in the /rom partition of a squashfs device, the file
is compressed and this is not an issue.  But, as soon as you add
or delete a package, the scripts.tar file is fully expanded into
the /overlay partition and can cause issues on small-flash devices.

This issue was addressed in an upstream commit by detecting
whether the scripts.tar file is compressed (its name must be
exactly 'scripts.tar.gz'), and then retaining that compression by
reading/writing the file using a compressed stream.

This commit applies a cherrypicked patch for the upstream commit, and
compresses the scripts.tar during construction of the device rootfs.

Fixes: https://github.com/openwrt/openwrt/issues/17108
Link: 012cdcfdf9
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20795
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-18 17:25:06 +01:00
Rosen Penev
dc420acc77 apm821xx: fix pcie node numbers
The values provides are correct if after the @ it would be the bus
number and then device number. But it's actually, device and then
function for pcie devices.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19425
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 13:15:12 +01:00
Rosen Penev
66a7e04e9e apm821xx: rename pciex to pcie
Fixes:

Warning (pci_bridge): /plb/pciex@d00000000: node name is not "pci" or "pcie"

Matches upstream commit: 86bc917d2ac117ec922dbf8ed92ca989bf333281

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19425
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 13:15:12 +01:00
Christian Marangi
e5ad92c588 kernel: mtdsplit: rework and make use of -ENOENT error
Rework each affected mtdsplit driver to make use of -ENOENT error
instead of -ENODEV to handle new kernel that checks error from parser on
subpartitions.

The only acceptable error is -ENOENT that skip the parser. This follow
pattern used upstream and also by an mtdsplit parser, mtdsplit_bcm_wfi,
and also by a workaround currently implemented for mtdsplit_mstc_boot.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 13:07:59 +01:00
Christian Marangi
1db7ed390d Revert "kernel: mtdsplit_fit: always return 0 when partition can't be split"
This reverts commit 627a0e7da0.

A better solution has been accepted upstream that doesn't hide all
unexpected error.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:53:29 +01:00
Christian Marangi
39aa7c77f9 airoha: refresh kernel patches
Refresh kernel patches with make target/linux/refresh.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:51:58 +01:00
Christian Marangi
b7aa0aa9bf airoha: backport patch fixing offload support with GDM2 present
Backport upstream patch fixing offload support in the presence of GDM2
interface.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:50:50 +01:00
Stefan Kalscheuer
bcae238390 bcm53xx: add 6.12 testing kernel
Add 6.12 testing kernel for bcm53xx target.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20167
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:49:25 +01:00
Stefan Kalscheuer
9fc6c0317e bcm53xx: 6.12: refresh kernel config
Add new and remove obsolete symbols for Kernel 6.12 by running
make kernel_oldconfig.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20167
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:49:25 +01:00
Stefan Kalscheuer
ce058f2c7b bcm53xx: 6.12: refresh patches
Drop upstreamed patches:
030-v6.7-0001-ARM-dts-BCM5301X-Set-MACs-for-D-Link-DIR-885L.patch
030-v6.7-0002-ARM-dts-BCM5301X-Set-MAC-address-for-Asus-RT-AC87U.patch
030-v6.7-0003-ARM-dts-BCM5301X-Relicense-Felix-s-code-to-the-GPL-2.patch
030-v6.7-0004-ARM-dts-BCM5301X-Relicense-Vivek-s-code-to-the-GPL-2.patch
030-v6.7-0005-ARM-dts-BCM5301X-Explicitly-disable-unused-switch-CP.patch
030-v6.7-0006-ARM-dts-BCM5301X-Set-fixed-link-for-extra-Netgear-R8.patch
030-v6.7-0007-ARM-dts-BCM5301X-Set-switch-ports-for-Linksys-EA9200.patch
040-v6.11-ARM-dts-broadcom-convert-NVMEM-content-to-layout-syntax.patch

All other patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20167
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:49:24 +01:00
Stefan Kalscheuer
9e3c242992 kernel/bcm53xx: Restore kernel files for v6.6
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: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20167
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:49:24 +01:00
Stefan Kalscheuer
fc6cdb7ba1 kernel/bcm53xx: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20167
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:49:24 +01:00
Christian Marangi
2434ad8b08 generic: 6.12: backport fix for mtd parser error handling
Backport a trivial patch that half restore original functionality of MTD
parser for subpartition by ignoring if the parser returns -ENOENT.

This fix parsing and booting of some brcm devices.

Link: https://github.com/openwrt/openwrt/pull/20822
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:48:38 +01:00
Stefan Kalscheuer
23f9fa72b2 zynq: add 6.12 testing kernel
Add 6.12 testing kernel for zynq target.

Tested-by: Luis Araneda <luaraneda@gmail.com> # Zybo Z7-20
Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:47:54 +01:00
Stefan Kalscheuer
ef25e165cf zynq: 6.12: refresh kernel config
Add new and remove obsolete symbols for Kernel 6.12 by running
make kernel_oldconfig.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:47:54 +01:00
Stefan Kalscheuer
ef49247b54 kernel/zynq: Restore kernel files for v6.6
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: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:47:53 +01:00
Stefan Kalscheuer
c55173ac54 kernel/zynq: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20166
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:47:53 +01:00
Lorenzo Bianconi
28a710885e airoha: backport kernel part of WiFi MT76 offload patch
Backport the kernel parf of the WiFi MT76 offload patch. This is needed
as we have a dedicated package that only have mt76 related changes.

Add missing include in airoha_offload.h in order to enable MT76 NPU
offloading (and fix compilation error)

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description and use proper patch ]
Link: https://github.com/openwrt/openwrt/pull/20807
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:45:30 +01:00
Daniel Golle
1c3b32c45a mediatek: fix uart clocks in MT7987 infracfg clock driver
MediaTek has applied a fix for the MT7987 infracfg clock driver in their
SDK, pick it.

Link: fe98d04c60/master/files/target/linux/mediatek/patches-6.12/999-clk-01-clk-mediatek-fix-mt7987-infracfg-clk-driver.patch
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-18 11:28:37 +00:00
Andy Chiang
93cfbc7d1f mediatek: add support for EROFS
Enable EROFS support for Mediatek targets.

Build system: x86/64
Run-tested: mediatek/filogic GL-MT3000

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20792
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-18 12:18:02 +01:00
Stefan Kalscheuer
9d2882f3c0 bcm4908: add 6.12 testing kernel
Add 6.12 testing kernel for bcm4908 target.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20169
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:50:53 +01:00
Stefan Kalscheuer
705f7adb34 bcm4908: 6.12: refresh kernel config
Add new and remove obsolete symbols for Kernel 6.12 by running
make kernel_oldconfig.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20169
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:50:52 +01:00
Stefan Kalscheuer
aec7153f14 bcm4908: 6.12: refresh patches
Drop upstreamed patches:
* 130-arm64-dts-broadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch

All other patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20169
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:50:52 +01:00
Stefan Kalscheuer
8a8fb241f7 kernel/bcm4908: Restore kernel files for v6.6
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: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20169
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:50:52 +01:00
Stefan Kalscheuer
8967a34385 kernel/bcm4908: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20169
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:50:51 +01:00
Kyle Hendry
08c8beec8c bcm47xx: 6:12: refresh patches
- remove no_llseek in 831-old_gpio_wdt.patch, see
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cb787f4ac0c2e439ea8d7e6387b925f74576bdf8
- refresh remaining patches

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19708
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:48:55 +01:00
Kyle Hendry
e61b1523bb bcm47xx: enable 6.12 testing kernel
Allow selecting 6.12 as testing kernel on bcm47xx.

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19708
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:48:54 +01:00
Kyle Hendry
602f12d053 kernel/bcm47xx: Restore kernel files for v6.6
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: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19708
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:48:54 +01:00
Kyle Hendry
389653947c kernel/bcm47xx: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19708
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-17 21:48:53 +01:00
Shiji Yang
2cce634a9e ramips: disable build TP-Link EAP235-Wall
After investigating the EAP235-Wall u-boot GPL code, it was found that
the u-boot of this device directly loads the kernel from the SPI NOR
Flash direct access address. However, due to hardware limitation, MT7621
can only remap the first 4MiB Flash. Excluding some partitions before
the kernel, this device can only boot kernels smaller than 0x360000.
This means that unless you install a modified bootloader, the mainline
OpenWrt will no longer work on this model.

Closes: https://github.com/openwrt/openwrt/issues/20500
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20509
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-17 10:33:17 +01:00
Shiji Yang
e2d823d068 ramips: fix LZMA decompression error for TP-Link EAP615-Wall
Relocating the kernel load address to avoid the memory overlap issue.

Fixes: https://github.com/openwrt/openwrt/issues/19403
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20509
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-17 10:33:17 +01:00
Shiji Yang
583e401abb ramips: enable LZMA loader for ZIO FREEZIO
Fix the kernel LZMA decompression error issue.

Fixes: https://github.com/openwrt/openwrt/issues/11815
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20509
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-17 10:33:17 +01:00
Álvaro Fernández Rojas
acdf8a6291 odhcpd: update to Git HEAD (2025-11-14)
d3dc577d7e84 dhcpv6-ia: add missing limits header
be7ca7c0792b config: fix memleak during odhcpd reload
366bd81804a6 dhcpv4: update ubus DHCPv4 events/methods
942df078b670 odhcpd: rename dhcpv6_lease->clid[_data|_len]
f872ae543e6d odhcpd: rename [lease_cfg|dhcpv4_lease]->ipaddr to ipv4
aa6870be6be4 dhcpv4: use an AVL to store leases
f2d3f907e9e0 github: ci: add powerpc arch
62b94b9abac3 github: ci: add cmake build and source directories
e523232ba223 github: ci: disable json-c tests
764fda0d05a8 scripts: devel-build: disable json-c tests
f13d2cecaebf netlink: fix typo in debug msg
fa6e63bb8200 src: fix whitespace issues
2c6a9d6e12d4 vscode: enable indentation detection
b6ade2ebc514 odhcpd: add support for "ignore"
77f9a0dad517 statefiles: support per-interface hosts files
9ba4e3e0f5c5 statefiles: don't make hostsfile dependent on statefile
be9c9f895ab4 statefiles: don't write expired leases
f6f2ef2de045 statefiles: simplify statefiles_write_state6()
940ecbb39161 statefiles: write straight to file in statefiles_write_state4()
ebe0b83db6a9 statefiles: correct some comments/variable names
67a6626dd2f5 statefiles: unify host4 writing
bf9889dfcd47 statefiles: unify host6 writing
593b6b72927c statefiles: group functions
8b2a62250485 statefiles: add function to write IPv4 hosts
06904ee1d4fb statefiles: simplify state/host file writing
bb39f088f3ef statefiles: move dhcpv6_ia_enum_addrs() to odhcpd.c
cc614a451f9b statefiles: add dhcpv6_lease to dhcpv6_log_ia_addr() args
8500654e39d5 statefiles: create helper functions to write leases
98276afcff82 statefiles: introduce statefiles_write()
310846535d06 statefiles: use dirfd in dhcpv6_ia_write_statefile()
50c35c3195f2 statefiles: bail early in dhcpv6_ia_write_statefile()
134ec453dd58 statefiles: simplify dhcpv6_ia_write_hostsfile()
7136fbe390a5 dhcpv6-ia: split statefile handling to separate file
2b26df1293c1 src: replace #pragma once with defines
43baf47948c6 src: remove whitespaces at EOL
df1824aec66c vscode: add tab settings
a89b57fa1786 odhcpd: Implement RFC9762 DHCPv6 PD Preferred flag for PIOs
e63ec4001f83 dhcpv4: add support for RFC4361-style clientid
29357349b33a odhcpd: remove the "legacy" option
f6ba8004d699 odhcpd: document the "upstream" option
56c06a162a4f odhcpd: document the "ra_advrouter" option
e3aaf3312cd5 odhcpd: remove the "ra_management" option
5238defd2c1d odhcpd: remove the "pd_manager" and "pd_cer" options
4f20351c3713 odhcpd: remove the "filter_class" option
869e2231bbc9 config: drop iface_attr_info
af446679d112 README.md: add missing options
7d1b081dcb1b dhcpv4: lazy store statefiles

d44af6dd8f...d3dc577d7e

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20789
2025-11-17 08:14:26 +01:00
Andrii Kuiukoff
97256a28fe ramips: add support for EDUP EP-RT2960S
EDUP EP-RT2960S has the similar hardware design as the SIMAX1800T.
The main difference is the arrangement of the GPIO pins
and the location of the MAC address.

Specification
-------------
- SoC       : Mediatek MT7621
- RAM       : 256 MiB DDR3
- Flash     : 128 MiB NAND Flash
- WLAN      : Mediatek MT7905 DBDC
  - 2.4 GHz : 2x2 MIMO WiFi6
  - 5 GHz   : 2x2 MIMO WiFi6
- Ethernet  : MT7621 built-in 10/100/1000 Mbps 1x WAN; 3x LAN
- UART      : 3.3V, 115200n8
- Buttons   : 1x RESET; 1x WPS/MESH
- LEDs      : 1x Multi-Color(Blue;Green;Red)
- Power     : DC 12V1A
- CMIIT ID  : 2022AP7163
- TFTP IP   :
  - server  : 192.168.1.254
  - router  : 192.168.1.28

TFTP Installation(recommend)
------------
1. Set local tftp server IP "192.168.1.254" and NetMask "255.255.255.0".
2. Rename initramfs-kernel.bin to "factory.bin" and put it in the root
   directory of the tftp server. tftpd64 is a good choice for Windows.
3. Remove all Ethernet cables and WiFi connections from the PC, except
   for the one connected to the EDUP EP-RT2960S. Start the TFTP server, plug
   in the power adapter and wait for the OpenWrt system to boot.
4. Backup "firmware" partition and rename it to "firmware.bin". We need
   it to back to the stock firmware.
5. Use "fw_printenv" command to list envs. If "firmware_select=2" is
   observed then set u-boot env variable via command:
   `fw_setenv firmware_select 1`
6. Apply sysupgrade.bin in OpenWrt LuCI.

Web UI Installation
------------
1. Apply update by uploading initramfs-factory.bin to the web UI.
2. Use "fw_printenv" command to list envs. If "firmware_select=2" is
   observed then set u-boot env variable via command:
   `fw_setenv firmware_select 1`
3. Apply squashfs-sysupgrade.bin in OpenWrt LuCI.

Return to Stock Firmware
----------------------------
  Restore the backup firmware partition in the installation step 4.

MAC addresses
-------------
+---------+-------------------+
|         | MAC example       |
+---------+-------------------+
| LABEL   | 24:D5:1C:xx:xx:xx |
| LAN     | 24:D5:1C:xx:xx:xx |
| WAN     | 24:D5:1C:xx:xx:xx |
| WLAN2G  | 24:D5:1C:xx:xx:xx |
| WLAN5G  | 26:D5:1C:xx:xx:xx |
+---------+-------------------+

Tips:
-----------
  User can use `TFTP Installation` method to recover a brick device.

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20600
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 21:59:28 +01:00
Matthias Van Parys
59ecc11ccf hostapd: pass global linker options to CLI tools
The CLI tools hostapd_cli and wpa_cli are compiled with
`TARGET_LDFLAGS_C` rather than the standard `TARGET_LDFLAGS`.
This variable is empty, leading to global linker options not being
applied.

Set this variable equal to `TARGET_LDFLAGS` right after the package.mk
include to make sure global linker options are applied, but local options
such as linking to crypto libraries are not.

Signed-off-by: Matthias Van Parys <matthias.vanparys@softathome.com>
Link: https://github.com/openwrt/openwrt/pull/20345
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 21:44:49 +01:00
Jonathan Luijsmans
8afdc50092 lua5.3: Add TARGET_LDFLAGS to MYLDFLAGS
Add TARGET_LDFLAGS to MYLDFLAGS make sure that the required flags are used
during the compilation.

Signed-off-by: Jonathan Luijsmans <jonathan.luijsmans_ext@softathome.com>
Link: https://github.com/openwrt/openwrt/pull/20642
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 21:34:08 +01:00
Sven Eckelmann
501f4edb04 realtek: dsa: Clarify statistic port iterator variable
The functions iterating through the port statistic/counter (for
initialization or polling) use the generic name "i" for the iterator. This
makes reading the actual body of the loop cumbersome because it is not
clear that various parameters of functions are about a ports.

Suggested-by: Felix Baumann <felix.bau@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Sven Eckelmann
e20ab65281 realtek: dsa: rtl931x: Reduce HW counters polling interval
Some SoC families require table access to get the HW counters. A mutex is
required for this access - which will potentially cause a sleep in the
current context. This is not always possible with .get_stats64 because it
is also called in atomic contexts.

For these SoCs, the retrieval of the current counters in .get_stats64 is
skipped and the counters are simply retrieved a lot more often from the HW.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Sven Eckelmann
e76ed39f3b realtek: dsa: Refresh link_stats in .get_stats64
If an architecture doesn't need to sleep for retrieving the current
statistics from the HW, it is possible to directly retrieve the last values
from the HW when .get_stats64 is called. This avoids the stale counters
with the current refresh interval of 60 seconds.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Sven Eckelmann
bd78eeb53f realtek: dsa: Select counter lock based on sleeping behavior
On many architectures, retrieving the HW counters from the switch is not
potentially sleeping. This would potentially allow these architectures to
retrieve the most recent values from the HW when .get_stats64 is called.
But because of the global mutex (which may sleep on lock), this would no
longer be possible.

Reintroduce the per port counters lock which protects from parallel
writes+reads of the non-link_stat counters. The locking is made abstract by
using helpers which identify the correct locking mechanism based on the
used read methods of the SoC.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Harshal Gohel
3c95a60e33 realtek: dsa: rtl931x: add ethtool statistics support
Add MIB data structures and table access routines for the RTL931X family.
These counters can now be exposed through the ethtool statistics interface.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Sharadanand Karanjkar
fdc424c1e3 realtek: dsa: add table-based statistics infrastructure
Some Realtek SoCs such as the RTL931X store MIB counters in tables rather
than registers. Unlike register reads, table access requires programming
the table control register, setting the command field to determine read or
write, and then polling for completion. This makes it necessary to
implement a separate path for table-based statistics.

Like register-based MIBs, the table-based MIBs also come in two types: STD
and PRIV which will require slightly different implementations.

Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Sharadanand Karanjkar
ac6bd8473d realtek: dsa: rework MIB read locking and polling
Some Realtek SoCs do not expose MIB counters as simple registers. Instead,
retrieving counters may require blocking operations or take longer than a
normal register read. This makes the existing approach of direct reads
unsuitable. The existing approach uses spin locks which forbid sleeping
inside their context. But some hardware accesses methods (for example table
reads) might block (sleep).

To handle this, the MIB read path is redesigned with two levels of
locking:

* A global mutex protects updates of MIB data from the hardware. This is
  necessary because reads can occur both in the polling workqueue and from
  ethtool callbacks, also two user threads might call the ethtools
  callbacks. A global mutex helps to avoid parallel reads of the same
  hardware data. For table reads, this is not necessarily required because
  they are already using a table lock. But they are the reason why
  spin-locks can no longer be used (see above).

* A per-port spinlock protects the shared memory region where per-port
  counters are copied. Avoids reading of half copied values in
  .get_stats64()

As part of this change, MIB reads were removed from .get_stats64() since
that callback can be started from an atomic context and must never sleep
(block) in this context. A shared memory region is provided which will be
updated periodically by MIB workqueue and .get_stats64() will simply return
data from the shared memory.

Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20631
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-16 00:10:56 +01:00
Pawel Dembicki
38ed1510db mac80211: mwl8k: inject DSSS Parameter Set element into beacons if missing
Some Marvell AP firmware used with mwl8k misbehaves when beacons do not
contain the DSSS Parameter Set (WLAN_EID_DS_PARAMS) with the current
channel. When hostapd/mac80211 omits this element (which is valid on
some bands), the firmware may report bogus RX channel information and AP
mode becomes unusable.

Backport the upstream fix that ensures beacons always carry the DSSS
Parameter Set for mwl8k: when setting the beacon, detect if the element
is missing and inject it after SSID and Supported Rates (per spec
ordering). This mirrors behaviour in newer Marvell drivers and restores
stable operation.

Tested on Linksys EA4500 (88W8366).

Fixes: openwrt/openwrt#19088
Link: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git/commit/?id=c4e1ac09ee1c750890e36cb1f841f25518f23589

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20757
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 22:11:29 +01:00
Aleksander Jan Bajkowski
787c1106d5 kernel: backport upstream realtek PHY patches
Changelog:
18aa36238a4d: net: phy: realtek: add interrupt support for RTL8221B
61958b33ef0b: net: phy: realtek: Add RTL8224 cable testing support
ffff5c8fc2af: net: phy: realtek: fix rtl8221b-vm-cg name
2c67301584f2: net: phy: realtek: Avoid PHYCR2 access if PHYCR2 not present
f63f21e82eca: net: phy: realtek: support for TRIGGER_NETDEV_LINK on RTL8211E and RTL8211F
a9b24b3583ae: net: phy: realtek: add error handling to rtl8211f_get_wol

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20650
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 20:43:19 +01:00
Marcin Leksmark
35a86267e9 ramips: fix support for Cudy r700
This PR fixes support for Cudy r700.

Original PR: https://github.com/openwrt/openwrt/pull/18532
Fixed:

- WAN port functionality;
- RESET button;
- Status LED;
- LAN port names consistent with the chassis;
- Merged partitions "debug", "backup" & "firmware"  to one partition "firmware" ("debug" & "backup" contained unimportant data);
- Removed redundant DTS elements.

Installation:

To install OpenWRT, you need the intermediate firmware from Cudy. (U-boot is locked). After installing the intermediate firmware, you can install OpenWRT via sysupgrade.

Recovery:

TFTP available.
1. Place the recovery.bin in the serving directory of your TFTP server.
2. Set your IP to 192.168.1.88/24.
3. Press the “Reset” button of Cudy router and hold it. Before the Cudy router is powered on and before TFTP start to download the firmware, don't release the “Reset” button.
4. Power on the Cudy router.
5. You can release the reset button only when TFTP starts downloading firmware.
6. When the SYSTEM LED turns solid green, the upgrade is complete.

Fixes: 75403dd1d0 ("ramips: add support for Cudy R700")
Signed-off-by: Marcin Leksmark <lexmark3200@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20756
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 20:37:20 +01:00
Tianling Shen
2f184801c3 rockchip: add Radxa ROCK 2A/F support
Hardware
--------
RockChip RK3528 ARM64 (4 cores)
1/2/4GB LPDDR4 RAM
1x LED (state)
1x Reset button
0/8/16/32/64GB eMMC on-board
Micro-SD Slot
PCIe FPC connector
3x USB 2.0 Port
HDMI/AV OUT
USB Type-C 5V Power

ROCK 2A:
+ 3.5mm audio out
+ 1000 Base-T
+ SYS LED
+ USB 3.0 Port (conflicts with PCIe)

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
internal eMMC using dd.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
b400ef9dbc uboot-rockchip: add ROCK 2A/2F support
Add support for the Radxa ROCK 2A/2F board.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
da08958a30 rockchip: add Radxa E20C support
Hardware
--------
RockChip RK3528 ARM64 (4 cores)
1/2/4GB LPDDR4 RAM
2x 1000 Base-T
3x LEDs (LAN / SYS / WAN)
1x User button
0/8/16/32/64GB eMMC on-board
Micro-SD Slot
USB 2.0 Port
USB Type-C 5V2A Power

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
internal eMMC using dd.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
9aca1216d1 uboot-rockchip: add Radxa E20C support
Add support for the Radxa E20C board.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
decaf4cc7a uboot-rockchip: backport updates for RK3528
Added USB boot support and eMMC r/w fixes for RK3528.
Refreshed upstreamed patches while at it.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
bdb269c163 rockchip: unset KERNEL_LOADADDR in default profile
Unset KERNEL_LOADADDR in default profile to avoid using the value
from other boards (if someone forgets to set KERNEL_LOADADDR).

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
9483f4459f rkbin: pack rk3528 atf/tpl blobs
Currently there's no usable mainline (open source) TF-A implementation
for rk3528 SoCs, so pack the prebuilt firmware from the vendor.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
221e6c845c rockchip: backport pending driver/dts updates for rk3528
Backport pending nvmem/thermal/usb updates for rk3528.
These patches are not merged by upstream yet but worthy to have here.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
97b90c5951 rockchip: backport dts updates for rk3528
Backport core dts updates for rk3528.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Tianling Shen
c7a26da60d rockchip: backport driver updates for rk3528
Backport clk/mac/phy driver updates for rk3528.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20375
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:56:27 +01:00
Liangbin Lian
d7530c1e54 rockchip: make NIC name predictable for LinkEase EasePi R1
The probe order for PCIe buses and devices is non-deterministic,
making the names eth2 and eth3 unpredictable (they may be swapped).

This patch fixes the names by referencing the device path using
`ucidef_set_network_device_path`.

This patch ensures that the OpenWrt interface name matches the case label.

Fixes: 8ca4caacd0 ("rockchip: Add support for RK3568 LinkEase EasePi R1")
Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20779
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:48:47 +01:00
Zhi-Jun You
7ea377ed71 wifi-scripts: ucode: fix init value of config.ht_capab under 20MHz
Currently the path for setting 20MHz doesn't set ht_capab to '' at the
beginning which results in null in ht_capab in hostapd.conf.

Fix this by setting config.ht_capab to '' for 20MHz htmode.

Fixes: #20762

Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/20768
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:45:37 +01:00
John Audia
c4986bf921 intel-microcode: update to 2025111
Change log: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/microcode-20251111

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20774
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 19:28:03 +01:00
Álvaro Fernández Rojas
4b1c2fb270 odhcp6c: update to Git HEAD (2025-11-14)
cbc8ff0e6226 github: ci: add powerpc arch
8eba02233133 github: ci: add cmake build and source directories
5f3104ea17ae github: ci: disable json-c tests
27ff42cd40f9 scripts: devel-build: disable json-c tests
e0a9d02b52d1 dhcpv6: DHCPV6_OPT_INFO_REFRESH contains a 4 byte option
5a02da9c1200 dhcpv6: use compile time resolved sizeof(struct in6_addr) for IPv6 values
cf203ceb3fc8 dhcpv6: set a static define for DUID max length
3627e85d1540 dhcpv6: set static defines for DHCPv6 option header size
ecb9a0243e77 odhcp6c: RFC comments
c284c587d37d all: spell fixes
1259a32d7e4d dhcpv6: dhcpv6_handle_reply switch case handling
227280a37853 dhcpv6: dhcpv6_handle_advert; migrate if blocks to switch case
b253f8907e72 dhcpv6: migrate to switch case for dhcpv6_handle_reply
61a54db802cb dhcpv6: migrate to switch case for dhcpv6_handle_reply
49c64bbe00ba all: drop CER_ID
16ce83075b2e dhcpv6: refactor u8 and u16 to u32 to avoid boolean coercion

e5690c1f13...cbc8ff0e62

Options related to homenet (EXT_CER_ID) have been removed, so drop them from
the package.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20791
2025-11-15 16:41:29 +01:00
Sven Eckelmann
44976dcac4 realtek: dsa: Add MSTI to HW MST ID mapping
The MSTI range is 0..4095 but the HW range is only supporting a lower
range - for example 0..63 for RTL930x. But the HW doesn't really need to
know the actual MSTI. It is therefore possible to use a mapping from MSTI
to HW slot to allow a larger range of MSTIs.

Since the CIST (MSTI 0) is always needed, the mapping data structure is
skipping this entry and is always keeping the HW slot 0 for CIST.

This doesn't increase the total number of MSTIs a HW supports.

Suggested-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Issam Hamdi
6c15c5d5eb realtek: dsa: rtl93xx: Support multi spanning tree states
The MSTP support (usually implemented by mstpd) requires from the kernel
that a VLAN can associated with an MSTI. At the moment, all these VLANs
just get the msti 0 harcoded on creation. But the
vlan_tables_read()+vlan_tables_write() helper already allow the
modification of the MSTI and only require a minimal hook to expose this
functionality.

It is also necessary to adjust the (M)STP states per MSTI and not only per
port (or for the CIST). The rtl83xx_port_stp_state_set() function was in
theory already capable to modify other MSTIs than CIST - if the msti would
not have been hardcoded to 0.

The userspace can trigger these modifications using netlink:

* (Re)associating VLANs with an MSTI:

      bridge vlan global set dev <BR> vid <X> msti <Y>

* Setting the port state in a given MSTI:

      bridge mst set dev <PORT> msti <Y> state <Z>

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Sven Eckelmann
5e77a81877 realtek: dsa: Sync CIST with MSTI state for unbridged ports
The VLANs and their MSTIs are shared on the realtek switch HW between
bridged and unbridged ports. But the MSTI state cannot be updated for an
unbridged port via DSA. To ensure that the port is still configured
correctly after leaving a bridge, the CIST state updates via DSA must also
be propagated to the MSTI states.

Suggested-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Sven Eckelmann
5d36445dc1 realtek: dsa: Adjust MSTP states after joining/leaving bridge
When joining a bridge or leaving a bridge, the CIST state will
automatically be adjusted by DSA using .port_stp_state_set(). But MSTIs are
completely unhandled.

If a port is joining a bridge, the default state must be disabled. The MSTP
daemon is then responsible for adjusting the state.

If the bridge is left, the forwarding state must be enforced because VLANs
(and with this also the MSTIs assigned to them) are shared between bridged
and non-bridged ports. An unbridged port must therefore not be left in an
blocked/disabled state for a VLAN (MSTI).

Suggested-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Sven Eckelmann
2d14c1008e realtek: dsa: Automatically return lost VLANs to CIST
If a VLAN doesn't have any members anymore, then it is removed and
implicitly returns back from any MSTI to CIST. The DSA layer will not
create any call to .vlan_msti_set and the driver is required to handle this
directly.

Suggested-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Sven Eckelmann
280cf19cdb realtek: dsa: Record number of supported MSTs
Each SoC supports a different number of MST(I)s. The code must know this
limitation to correctly reject unsupported MSTIs or to allocate a large
enough mapping table.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Issam Hamdi
9c2e8d6cef realtek: dsa: rtl93xx: Implement vlan fast age flushing
The DSA port code is trying to flush associated VLANs whenever the MST
state is changed. This functionality is available on a per port+vid based
using the L2_TBL_FLUSH_CTRL which is already used for the .port_fast_age
callbacks.

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Issam Hamdi
6236291cb4 realtek: dsa: rtl93xx: Switch to MSTP compatible STP mode
The realtek DSA switch driver sets up all VLANs using CIST. It is therefore
not necessary to enforce CIST using the ST_CTRL register.

This allows us later to overwrite the MSTI of VLANs. This is necessary to
get MSTP working on RTL93xx.

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20421
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 16:21:16 +01:00
Andy Chiang
337557a158 download: use reasonable timeout and retry parameters
Set a timeout of 5 seconds and 3 retries to reduce the time it takes for connection timeout.

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19977
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-15 15:47:23 +01:00
Roland Reinl
00bb18b851 ipq40xx: Add support for Linksys MR6350
This pull request is based on
- the discussions in https://forum.openwrt.org/t/adding-openwrt-support-for-linksys-mr6350
- https://github.com/openwrt/openwrt/pull/11405 which added support for similar devices.

Device Specs:
- IPQ4019
- Quad Core CPU
- 256 MB RAM
- 256 MB FLASH
- 4 LAN ports, 1 WAN port
- 2.4GHz (802.11n) and 5GHz (802.11c) wifi
- 3 LEDs (Red, blue, green) which are routed to one indicator at the top of the case
- 2 buttons (Reset, WPS)

Disassembling the device:
- There are 4 screws at the bottom of the device which must be removed
- Two are under the fron rubber feets
- Two are under the labels in the back (corner next to the rear rubber feets)

Serial interface:
- The serial interface is already populated on the device with a 6-pin header
- Pin 1 is next to the heatsink
- Pinout: 1: 3.3V, 2: TX, 3: RX, 4: unknown, 5: GND, 6: GND
- Settings: 115200, 8N1

Migrating to OpenWrt requires multiple steps:
- Load and boot the initramfs image
- Adapt U-Boot settings to support bigger kernels
- Flash the sysupgrade image

Load and boot initramfs:
- Connect serial interface
- Set up a TFTP server on IP 192.168.1.254
- Copy openwrt-ipq40xx-generic-linksys_mr6350-initramfs-zImage.itb to TFTP server
- Rename file to C0A80101.img
- Boot up the device and stop in U-Boot
- Run the following U-Boot commands after a link has been established:
  tftp
  bootm
- Initramfs image is started now.

Adapt U-Boot settings to support bigger kernels:
- Run "fw_printenv" in the initramfs image  after booting
- There should be an entry kernsize=300000 which indicates the maximum size for the kernel is 3MB
- Execute "fw_setenv kernsize 500000" to increase the max kernel size to 5MB
- Check that the change are applied with "fw_printenv"

Flash the sysupgrade image:
- Default sysupgrade routine either with a initramfs image containing LuCI or via command line.

Revert back to OEM firmware:
- Only tested with FW_MR6350_1.1.3.210129_prod.img
- Flash the OEM firmware via sysupgrade
- Forced update is required

Signed-off-by: Roland Reinl <reinlroland+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17977
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:28:22 +01:00
Christoph Krapp
0db1b11073 ipq40xx: add support for Netgear RBS20
This device has only half the flash and ram of the RBR20. It also has
two lan ports instead of wan and lan.

Hardware
--------
SOC:    Qualcomm IPQ4019
FLASH:  128MB (Winbond W29N01HVSINF)
RAM:    256MB (Winbond W632GU6MB-12)
WIFI:   Qualcomm IPQ4019
        Qualcomm Atheros QCA9886
ETH:    2x LAN
LED:    5 (4 RGB at top, 1 RG at back)
BTN:    WPS, Reset
UART:   115200 8N1 (dotted Pin = VCC) VCC-TX-RX-GND

MAC addresses
-------------
LAN     Label MAC (stored in boarddata1 offset 0x0)
2.4G    LAN
5GLow   LAN + 3 (stored in boarddata1 offset 0xc)
5GUpper LAN + 2 (stored in boarddata1 offset 0x12)

Installation
------------
Either use the vendor ui upgrade method or nmrpflash to install the
factory image.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20560
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:24:50 +01:00
Christoph Krapp
251d551fa6 ipq40xx: add support for Netgear RBR20
This device shares a lot of similarities with the LBR20 - the RBR20 just
misses the LTE modem and its formfactor is alot smaller. Other than that
the LED configuration matches other RBR devices but the RBR20 has less
LEDs than its larger counterparts.

Hardware
--------
SOC:    Qualcomm IPQ4019
FLASH:	256MB (Winbond W29N02GVSIAF)
RAM:  	512MB (Nanya NT5CC256M16EP-EK)
WIFI:   Qualcomm IPQ4019
        Qualcomm Atheros QCA9886
ETH:	1x WAN, 1x LAN
LED:	5 (4 RGB at top, 1 RG at back)
BTN:	WPS, Reset
UART:	115200 8N1 (dotted Pin = VCC) VCC-TX-RX-GND

MAC addresses
-------------
LAN	Label MAC (stored in boarddata1 offset 0x0)
WAN	LAN + 1 (stored in boarddata1 offset 0x6)
2.4G	LAN
5GLow	LAN + 3 (stored in boarddata1 offset 0xc)
5GUpper LAN + 2 (stored in boarddata1 offset 0x12)

Installation
------------
Either use the vendor ui upgrade method or nmrpflash to install the
factory image.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20560
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:24:50 +01:00
Robert Marko
14446b3201 ipq-wifi: update to Git HEAD (2025-11-15)
fa62f8a2885c ipq8074: add BDF for Zyxel NWA210AX
7c6b7545f69a qca4019: qca9888: add bdfs for Netgear RBK20

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:23:21 +01:00
Issam Hamdi
22178914c6 realtek: dsa: rtl93xx: Configure default QoS prioritization
RTL838x+RTL839x both configure a default QoS behavior with a default
mapping. This also needs to be added to RTL93xx to ensure a consistent
behavior:

* Set the default mapping between DSCP and priority: prio = dscp >> 3.
* Set the default mapping between internal priority and queues
* Set uniform prioritization of queues (as with other SoCs)

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20640
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:19:46 +01:00
Sven Eckelmann
d78a2a6597 realtek: rtl93xx: Send per port packets on physical port
If link aggregation with LACP is activated, we must send out the LACP
packets on the physical port and not on a logic port. Otherwise, the per
port packets might be (rebalanced) between the different ports in a link
aggregation group.

Such rebalancing breaks 802.3ad and will leave ports in a churned state.

Fixes: 8c42e63a69 ("realtek: rtl93xx: fix incorrect destination port selection")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20728
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:18:18 +01:00
Sven Eckelmann
993a44b24c realtek: dsa: Add non-primary LAG ports to port matrix
If ports of a RTL93xx switch are not added to a port matrix then they are
not used for the link aggregation. As result, communication will then just
break on non-primary interfaces.

This can be reproduced in balanced-xor and 802.3ad bandwidth mode.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20729
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:17:21 +01:00
Jonas Jelonek
203b8886bd realtek: pcs: rtl93xx: fix SerDes polarity configuration for RTL931X
Commit 56e9a73d0b added support for configuring the SerDes polarity for
both RTL930X and RTL931X. Based on the code in the Realtek SDK in [1]
and [2], in both cases the same register bits are set. Thus, a common
implementation was provided which worked with e.g. USXGMII or 10GBase-R
configured SerDes.

However, after further tests, a strange issue occured where it didn't
work that well for all SerDes configurations. While running fine for
10GBase-R links on two adjacent SerDes, it didn't for 1000Base-X links
on one of two adjacent SerDes with the link not being detected as a
symptom.

Diving into the SDK again revealed that the referenced implementation of
polarity configuration is (by accident or by purpose) misleading. While
[1] and [3] for RTL930X match, [2] and [4] for RTL931X actually don't.
[4] writes the bits for the 1G polarity setting on different background
SerDes, thus in another frontend page.

Split implementations for RTL930X and RTL931X again and adjust the one
for RTL931X according to [4]. This resolves the issues with 1000Base-X
behavior.

[1] 69d2890a2e/sources/rtk-xgs1210/src/hal/phy/phy_rtl9300.c (L1384)
[2] 69d2890a2e/sources/rtk-xgs1210/src/hal/phy/phy_rtl9310.c (L3479)
[3] 69d2890a2e/sources/rtk-xgs1210/src/dal/longan/dal_longan_construct.c (L2246)
[4] 69d2890a2e/sources/rtk-xgs1210/src/dal/mango/dal_mango_construct.c (L1550)

Fixes: 56e9a73d0b ("realtek: pcs: rtl93xx: provide proper SerDes polarity
configuration")
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20767
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:16:20 +01:00
Daniel Golle
e811e6480a ath79: fix MAC addresses on MikroTik RB962UiGS-5HacT2HnT
The MikroTik RouterBOARD 962UiGS-5HacT2HnT (hAP ac) currently comes up
with random MAC addresses. Assign the MAC addresses from hard_config for
LAN and WAN ports.

Fixes: c2140e32ce ("ath79: add support for MikroTik RouterBOARD 962UiGS-5HacT2HnT (hAP ac)")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Link: https://github.com/openwrt/openwrt/pull/20782
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:15:29 +01:00
Rany Hany
6df060ba4a wifi-scripts: ucode: create wpa_psk_file and sae_password_file when needed
This handles the case when 'wpad' or 'wpad-mini' package is used which is
missing WPA3 support. This makes it impossible to use ucode wifi-scripts
on such APs as it will raise an error:

   daemon.err hostapd: Line 87: unknown configuration item 'sae_password_file'

This also achieves parity with what is currently happening with old wifi-scripts.
The behavior now matches.

Fixes: https://github.com/openwrt/openwrt/issues/20781
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20784
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-15 11:13:36 +01:00
Álvaro Fernández Rojas
27c9b706e7 libubox: update to Git HEAD (2025-11-14)
a75209f62982 blobmsg: refactor blobmsg_cast_u64/s64
97d1839295e5 github: ci: minor fixes
e8dafede37fc github: ci: add powerpc arch
c1f0024fb052 github: ci: add cmake build and source directories
4dd874d2b412 github: ci: tests: rename test step
7686b12d11ba github: ci: tests: add build/bin to path
be21d12b2bed github: ci: disable json-c tests
af438ba0705f scripts: devel-build: disable json-c tests
240d2d5ef58b tests: shunit2: add test for _jshn_append leading space fix
82cb5fd66af9 libubox: Drop extraneous space when appending values to variable
17143f94dcbf libubox: add a simple build script
5b11fb18dc05 github: ci: add tests

e357be611c...a75209f629

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-15 08:22:24 +01:00
Daniel Golle
971c058cf5 mediatek: add mt7987-2p5g-phy-firmware to MT7987 devices
Add mt7987-2p5g-phy-firmware to DEVICES_PACKAGES of the MT7987A RFB as
well as the BananaPi R4 Lite.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-14 02:25:15 +00:00
Daniel Golle
60fc2918dc linux-firmware: package mt7987-2p5g-phy-firmware
Package firmware for the built-in 2.5G PHY of the MediaTek MT7987 SoC.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-14 02:25:15 +00:00
Daniel Golle
c887694358 linux-firmware: update to 20251111
$ git log --no-merges --pretty=oneline --abbrev-commit  20251021..20251111
fcf22f50 rtl_bt: Update RTL8922A BT USB firmware to 0x41C0_C905
c0af6c70 linux-firmware: add firmware for mt7987 internal 2.5G ethernet phy
a50c068b rtw88: 8822b: Update firmware to v30.20.0
e5606bd7 rtl_nic: add firmware rtl8125k-1
c5831f31 ASoC: tas2781: Update dsp firmware for HP and ASUS projects
ad907cca Revert "Merge branch 'robot/patch-0-1762671757' into 'main'"
d665e29c ASoC: tas2781: Update dsp firmware for HP and ASUS projects
213080ae amdgpu: DMCUB updates for various ASICs
23cf7dbb amdgpu: DMCUB updates for various ASICs
95cd295e qcom: add SOCCP firmware for kaanapali platform
9444af1a xe: Update GUC to v70.53.0 for BMG, LNL, PTL
f2a23165 i915: Update GUC to v70.53.0 for DG2, MTL
4dedd6cb rtw89: 8851b: update fw to v0.29.41.5
84cc37f3 rtw89: 8852b: update fw to v0.29.128.0 with format suffix -2
3ab5b9e5 rtw89: 8852b: update fw to v0.29.29.14
1b1c14bb Revert "rtw89: 8852b: update fw to v0.29.128.0"
9a0d0ed6 rtw89: 8852bt: update fw to v0.29.127.0 with format suffix -1
be71e790 rtw89: 8852bt: update fw to v0.29.122.1
b6252a03 Revert "rtw89: 8852bt: update fw to v0.29.127.0"
a976b0aa linux-firmware: Update firmware file for Intel BlazarU core
5a689a2f linux-firmware: Update firmware file for Intel BlazarI core
77425784 linux-firmware: Create audio folder in ti folder, and move all the audio firmwares into it
e189b618 amdgpu: DMCUB updates for various ASICs
646d97f5 linux-firmware: Update WHENCE for microcode_amd_fam19h.bin
e637542f linux-firmware: Update AMD cpu microcode
0fc31ad6 linux-firmware: update firmware for MT7925 WiFi device
b63c322f mediatek MT7925: update bluetooth firmware to 20251015213201
35e54243 rtl_bt: Add firmware and config files for RTL8761CUV
ad915447 linux-firmware: Update AMD cpu microcode
7bcedf5c qcom: add ADSP firmware for kaanapali platform
728e9243 amdgpu: DMCUB updates for various ASICs
05105d24 linux-firmware: Renaming the file to cover a wide range of HP Lunar Lake system.
b582532d mediatek MT7920: update bluetooth firmware to 20251020151255
33d0511d linux-firmware: update firmware for MT7922 WiFi device
c2087f88 linux-firmware: update firmware for MT7920 WiFi device
3a49a735 amd-ucode: Fix minimum revisions in README
0de0cd7f cirrus: cs35l41: Rename various Asus Laptop firmware files to not have Speaker ID
93c92978 mediatek MT7922: update bluetooth firmware to 20251020143443

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-14 02:25:15 +00:00
Felix Fietkau
05feabfd09 kernel: mtk_eth_soc: fix encapsulation check for GSO fraglist packets
Use skb->encapsulation flag instead of skb_tnl_header_len() to detect
encapsulated packets. Prevents false positives on non-encapsulated packets.

Reported-by: Mason-cw Chang (張哲維) <Mason-cw.Chang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 14:24:38 +01:00
Felix Fietkau
92445cc982 wifi-scripts: respect rsn_override=0 in mixed modes
Only set rsn_override_key_mgmt when rsn_override is enabled.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 12:41:42 +00:00
Felix Fietkau
ff44aa490a wifi-scripts: only enable RSN override when parameters differ
When encryption is set to 'sae' without explicit pairwise cipher in
non-HE/EHT mode, both the main RSNE and override RSNE would advertise
identical parameters (SAE+CCMP+MFP=2), adding unnecessary overhead.

Check that the pairwise ciphers differ before enabling override. This
preserves the intended behavior for HE/EHT modes (GCMP-256+CCMP vs CCMP)
while avoiding pointless override IEs.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 12:26:59 +00:00
Felix Fietkau
e81936f5bc hostapd: fix phy parameter in iface_update_supplicant_macaddr
The function was using phydev.name (e.g., "phy0.0") instead of
phydev.phy (e.g., "phy0") when calling wpa_supplicant.phy_set_macaddr_list.
This is inconsistent with all other wpa_supplicant ubus calls in the same
file which correctly use phydev.phy.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 12:02:55 +00:00
Felix Fietkau
75791ea634 wifi-scripts: fix MLO AP setup with disabled radios
When an MLO interface specifies multiple radios and the first radio
is disabled, the MLO configuration was never created because the code
only attempted to create it when processing the first device in the
list (which gets skipped if disabled).

Fix by creating the MLO config for the first enabled device instead
of only when processing dev_names[0].

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 11:56:39 +00:00
Felix Fietkau
2fb3cbda58 wpa_supplicant: fix MAC address assignment for MLD interfaces
Assign the address at wdev create time, similar to legacy interfaces.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 11:56:39 +00:00
Felix Fietkau
d619ff6872 wifi-scripts: fix wds client mode with MLO
Ensure that the 4addr flag is passed to phy.wdev_add.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 11:56:39 +00:00
David Bauer
8d679ff5dd mpc85xx: make kernel 6.12 the default kernel
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-12 19:38:29 +01:00
Pawel Dembicki
daca63ac8f mpc85xx: kernel: 6.12: fix issue with ifc nodes in P1010
In upstream [0] ifc node compatible was changed and it broke ifc at all.
Rosen Penev send revert commit to upstream [1] which repair it.

This patch add this pending patch to mpc85xx.

[0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0bf51cc9e9e57a751b4c5dacbfa499ba5cd8bd72
[1] https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20251105205524.17362-1-rosenp@gmail.com/

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
2025-11-12 19:37:36 +01:00
David Bauer
8358e594c6 mpc85xx: introduce 6.12 testing kernel
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-12 19:37:35 +01:00
David Bauer
57bdd90b83 mpc85xx: refresh kernel config
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-12 19:37:35 +01:00
David Bauer
710c7d9be3 mpc85xx: use strscpy instead of strlcpy
Usage of strlcpy results in a compilation error. strscpy is preferred
anyways and equivalent for our case.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-12 19:37:35 +01:00
David Bauer
af69ad3898 mpc85xx: refresh kernel 6.12 patches
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-11-12 19:37:35 +01:00
Pawel Dembicki
3ae3accd89 kernel/mpc85xx: Restore kernel files for v6.6
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: Pawel Dembicki <paweldembicki@gmail.com>
2025-11-12 19:37:35 +01:00
Pawel Dembicki
314ce20aa8 kernel/mpc85xx: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
2025-11-12 19:37:35 +01:00
Chang Liu
5ab6e6011f qualcommax: ipq50xx: Add support for CMCC PZ-L8
CMCC PZ-L8 is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on IPQ5000.

Specifications:
- SoC			: Qualcomm IPQ5000
- RAM			: Integrated 256MiB DDR3L
- Flash			: 128 MiB SPI-NAND (ESMT F50D1G41LB)
- WLAN			: 2.4/5 GHz 2T2R
- 	2.4 GHz		: Qualcomm IPQ5000 (SoC)
- 	5 GHz		: Qualcomm Atheros QCN6102
- Ethernet		: 4x 10/100/1000 Mbps
- 	switch		: Qualcomm Atheros QCA8337
- LEDs/Keys (GPIO)	: 2x LEDs, 2x Keys
- UART			: Through-hole on PCB, 4pins in the middle of the black aluminum heat sink
- 	assignment	: 3.3V, GND,TX, RX (from left to right)
- 	settings	: 115200n8
- Power			: 12 VDC, 1 A

Flashing Instructions:
1. SSH Method
	(1) Enable SSH on the stock firmware
	a. Version 501.8 and 501.9:
	Log in to http://192.168.10.1 with the password on the sticker
	Append "/admin/system/admin" to the URL and press Enter
	Delete "Dropbear instance", click "Add instance", then "Save and Apply"
	Reboot the router

	b. Version 501.11 and 501.12:
	While the router is running the stock firmware, press and hold the reset button for 20-30 seconds
	Open http://192.168.10.1:56781 and login with username "root" and the password on the sticker
	Run "vi /etc/config/dropbear" and delete the line "option enable '0'"
	Reboot the router

	(2) Upload the factory.ubi file to router's /tmp directory (using scp or wget)
	and execute the following commands in the router's shell

	export rootfs=$(cat /proc/mtd | grep rootfs | grep -v _ | cut -d: -f1)
	ubidetach -f -p /dev/${rootfs}
	ubiformat /dev/${rootfs} -y -f /tmp/factory.ubi

2. U-Boot Method using UBI Image
	Place the factory.ubi file on your TFTP server, enter U-Boot CLI and exec these commands

	tftpboot <your_tftp_server_ip>:factory.ubi
	flash rootfs
	reset

3. U-Boot Method using initramfs Image
	(1) Place the openwrt-*-initramfs-fit-uImage.itb file on your TFTP server
	and rename it to initramfs.bin
	(2) Enable serial console, enter to U-Boot CLI and exec these commands

	tftpboot <your_tftp_server_ip>:initramfs.bin
	bootm

	(3) Once boot completed, upload the sysupgrade.bin file to router's /tmp directory
	(using scp or wget) and execute the following command in openwrt shell

	sysupgrade -n /tmp/sysupgrade.bin

Switching to the Stock Firmware:
Please follow the commit 3b7d72bc2e

Partition Layout (Stock Firmware):
0x000000000000-0x000000080000 : "0:SBL1"
0x000000080000-0x000000100000 : "0:MIBIB"
0x000000100000-0x000000140000 : "0:BOOTCONFIG"
0x000000140000-0x000000180000 : "0:BOOTCONFIG1"
0x000000180000-0x000000280000 : "0:QSEE"
0x000000280000-0x000000380000 : "0:QSEE_1"
0x000000380000-0x0000003c0000 : "0:DEVCFG"
0x0000003c0000-0x000000400000 : "0:DEVCFG_1"
0x000000400000-0x000000440000 : "0:CDT"
0x000000440000-0x000000480000 : "0:CDT_1"
0x000000480000-0x000000500000 : "0:APPSBLENV"
0x000000500000-0x000000640000 : "0:APPSBL"
0x000000640000-0x000000780000 : "0:APPSBL_1"
0x000000780000-0x000000880000 : "0:ART"
0x000000880000-0x000000900000 : "0:TRAINING"
0x000000900000-0x000004300000 : "rootfs"
0x000004300000-0x000007d00000 : "rootfs_1"

Notes:
This device is almost the same as ELECOM WRC-X3000GS2, including partition layout and the dual-boot feature.

Known Issues:
- All Wi-Fi related peripherals are disabled in device tree, since 256 MiB RAM is too few for ath11k.
- This device has another version with nand flash FM25SL01, which is not supported at the moment.
  https://github.com/immortalwrt/immortalwrt/blob/master/target/linux/mediatek/patches-6.12/342-mtd-spinand-Support-fmsh.patch

MAC Addresses:
Interface	MAC Address		Location (binary)
LAN		A4:39:B6:xx:xx:9D	(0:ART, 0x00-0x05)
WAN		A4:39:B6:xx:xx:9E	(0:ART, 0x06-0x0B)
2.4 GHz		A4:39:B6:xx:xx:9F	(0:ART, 0x0C-0x11)
5 GHz		A4:39:B6:xx:xx:A0	(0:ART, 0x12-0x17)

Signed-off-by: Chang Liu <jssqliuchang@gmail.com>
2025-11-12 14:34:07 +01:00
Liangbin Lian
26ddab47d9 imagebuilder: fix repeated generation of package index when signing is enabled
`$(MAKE) package_index` will generate Packages.sig if signing is enabled, and Packages.sig is always newer than Packages.gz, cause repeated generation of package index on next build. So we should ignore Packages.sig.

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
2025-11-12 21:23:33 +08:00
Andy Chiang
00e881451a wifi-scripts: ucode: fix start failed
When using wpad-openssl/wpad-basic-openssl, wpa_supplicant/hostapd may not be ready because of openssl.
This cause supplicant.setup and hostapd.setup to be failed.
Therefore, wait for wpa_supplicant/hostapd to be ready before supplicant.setup and hostapd.setup.

Run-tested: mediatek/filogic GL-MT3000
fixes: #20361

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-12 13:45:50 +01:00
Paweł Owoc
cc3e211264 wifi-scripts: use stationary_ap conf for AX mode
Use stationary_ap configuration for 6GHz AX AP (not only BE).
This change fixes the 6GHz network not visible issue for QCN9024.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
2025-11-12 12:14:53 +01:00
Felix Fietkau
0ad0955214 kernel: fix mtk_eth_soc handling of fraglist packets without GSO_FRAGLIST
Fixes tx hangs when disabling rx fraglist GRO

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-12 12:14:16 +01:00
Kacper Ludwinski
ba041eb451 prereq-build: add Python 3.13 support
Add support for Python version 3.13 to include/prereq-build.mk.
One of the reasons for this change is that
Ubuntu 25.04 ships with Python 3.13 as default version.
Let's support it.

Signed-off-by: Kacper Ludwinski <kacper@ludwinski.dev>
Link: https://github.com/openwrt/openwrt/pull/20735
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-12 12:11:15 +01:00
Ernestas Kulik
fd7e43d429 scripts: feeds: Don’t hardcode IS_TTY
When building in environments that set IS_TTY, the feeds script does not
honor it and passes a hardcoded value to scan.mk, causing unwanted
control characters to appear in stdout.

This commit addresses the issue by checking IS_TTY and MAKE_TERMOUT
variables and uses their values if defined.

Closes #8039

Signed-off-by: Ernestas Kulik <ernestas.k@iconn-networks.com>
Link: https://github.com/openwrt/openwrt/pull/20743
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-12 12:05:53 +01:00
Christian Marangi
b29cf08a1e openssl: add MODULES_DIR MACRO for provider
Add MODULES_DIR MACRO for provider useful if the relevant package
require to define the default OpenSSL MODULES_PATH.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-11 23:58:54 +01:00
Hauke Mehrtens
c552564642 firmware-utils: update to Git HEAD (2025-11-11)
313f344d8436 dlink-sge-image: add support for D-Link DIR-X1860 B1/DIR-X1550 A1
ac7a4abdde7d iptime-crc32: add support for ipTIME AX3000SE
c42a3bc53da8 iptime-crc32: add support for ipTIME AX2002MESH

Link: https://github.com/openwrt/openwrt/pull/20734
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 21:29:22 +01:00
Hauke Mehrtens
98bea87773 tools: firmware-utils: update to Git HEAD (2025-11-11)
ac7a4abdde7d iptime-crc32: add support for ipTIME AX3000SE
c42a3bc53da8 iptime-crc32: add support for ipTIME AX2002MESH

Link: https://github.com/openwrt/openwrt/pull/20734
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 21:29:22 +01:00
Hauke Mehrtens
985394bf26 ucode: update to Git HEAD (2025-11-07)
e8a7290e55c0 socket: fix `recv()` incorrectly reporting unrelated errors
ddde611fb9d4 socket: fix convertion of hw addresses to ucode strings
924ccc95be32 vm: make sure uc_vm_insn_to_name() always returns a value
754590d26f23 lexer: fix parsing \xHH and \0OOO escape sequences
623f550e579a fs: add dup2() function
6c9385a99edd fs: add mkdtemp() method for creating temporary directories
ea579046a619 fs: reset errno to zero in get_fd()

The removed patches are integrated upstream.

Fixes: https://github.com/jow-/ucode/issues/332
Fixes: https://github.com/jow-/ucode/issues/337
Link: https://github.com/openwrt/openwrt/pull/20718
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 21:27:39 +01:00
Tomasz Maciej Nowak
6af5b8033c tegra: promote kernel 6.12 as default
It has been stable so far. As result of this change drop 6.6 files.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Link: https://patchwork.ozlabs.org/project/openwrt/patch/20251111183950.426981-1-tmn505@terefe.re/
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 21:23:14 +01:00
Alexandru Gagniuc
7656e74a95 qualcommbe: support 10g-qxgmii in QCA8084 PHY driver
The "old" QCA8084 PHY driver does not implement 10g-qxgmii support.
This is blocking several devices which use the QCA8084 form being
merged. Qualcomm has provided updated drivers for the MAC (ppe), PCS,
and PHY via github. We only need to update the PHY driver.

Update the QCA8084 PHY driver using the patches provided by Qualcomm.
Re-organize the patches so that the changes go into the existing
patches. The SERDES functionality is new, so it gets new patches. This
is sufficient to enable 10g-qxgmii on ipq95xx platforms.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20721
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-11 17:21:54 +01:00
Christian Marangi
bd7f5b32a6 airoha: replace AN7583 pinctrl patch with upstream version
Replace Airoha AN7583 pinctrl patch with upstream version as it has been
accepted upstream. Add the related kernel version tag to identify it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-11 17:20:13 +01:00
Florian Bomers
4daff067d7 kernel: sound: add support for MIDI 2.0 and UMP
New Packages / build options:
* sound-midi2: enable MIDI 2.0 / UMP in ALSA MIDI
* sound-midi2-seq: enable MIDI 2.0 / UMP in ALSA sequencer
* sound-midi2-usb: enable USB MIDI 2.0 support
* sound-dynamic-minors: allow more than 8 MIDI devices
More info about ALSA MIDI 2.0:
 https://docs.kernel.org/6.12/sound/designs/midi-2.0.html
More info about MIDI 2.0:
 https://midi.org/midi-2-0

Signed-off-by: Florian Bomers <github@bome.com>
Link: https://github.com/openwrt/openwrt/pull/20727
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-11 12:13:40 +01:00
Christoph Krapp
6f99711b1b ipq40xx: fix unit-address of Netgear LBR20 ubi partition
The unit-address of the ubi partition was @a9c0000 but the partition
actually starts at offset 0x0ad00000. Ideally they should match, so
align them.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20733
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-11 10:34:47 +01:00
Sven Eckelmann
356acef794 realtek: dsa: Clarify meaning of secondary lag member variable
The name "is_lagmember" implies that the port is part of a LAG. But this
information is already stored in lagmembers. In reality, it is stored the
non-primary LAG members. Renaming it accordingly, makes the code a lot more
readable

Also the type (u32 array) looks like it would contain some kind of large id
(like the group ID). But it only stores a single bit. It is more appropriate
to just use a single bit per port.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Sven Eckelmann
f82da653fd realtek: DSA: Document meaning of lag priv variables
The names of the LAG variables in struct rtl838x_switch_priv are not self
explaining. They are even suggesting that they are dealing with information
which are actually stored in a different variable. As first step, document
their meaning.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Sven Eckelmann
14095ab268 realtek: dsa: Drop LAG checks already handled by DSA handlers
There is no need to check conditions in rtl83xx_lag_add()/rtl83xx_lag_del()
when they are already checked in
rtl83xx_port_lag_join()/rtl83xx_port_lag_leave().

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Sven Eckelmann
e9bb1debb7 realtek: dsa: Use DSA allocated LAG ids
It is not necessary to have a private LAG id allocation when the shared DSA
code already provides the complete infrastructure for it.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Sven Eckelmann
ca014cfd72 realtek: dsa: Drop secondary LAG configuration handler
The DSA code is responsible to inform the driver about link aggregation
changes. Having a second one which behaves slightly different makes the
whole process fragile and creates hard to debug problems.

It also complicates the code because the secondary event handler can also
not rely on shared DSA state to handle things like LAG ID.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Sven Eckelmann
108381e5a1 realtek: dsa: Fix LAG id allocation
The rtl83xx_lag_can_offload() function always returned an error because
ds->num_lag_ids was never set. This basically disabled the DSA lag
configuration completely.

Drop the private n_lag variable and instead use the DSA specific one. This
ensures that all the code always has the same reference for the number of
LAGs.

Fixes: 32e5b5ee6b ("realtek: Add Link Aggregation (aka trunking) support")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20707
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 01:06:49 +01:00
Hauke Mehrtens
23211b196c udebug: update to Git HEAD (2025-10-21)
8c967bce23ae CMakeLists.txt: rename udebug-cli to udebug on installation
75f39cd4a806 add debian package support

Link: https://github.com/openwrt/openwrt/pull/20719
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:23:22 +01:00
Hauke Mehrtens
1f21cc9600 uci: update to Git HEAD (2025-11-03)
57c1e8cd2c05 github: add CI build
2e46a7405f26 github: improve CI
c1e2eee6c5e3 github: fix CI apt dependencies

Link: https://github.com/openwrt/openwrt/pull/20717
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:22:11 +01:00
Hauke Mehrtens
c0a30370f9 ubus: update to Git HEAD (2025-11-03)
6fdf7a979162 github: improve CI
0d4bcb56f5e1 github: fix CI apt dependencies

Link: https://github.com/openwrt/openwrt/pull/20716
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:21:16 +01:00
Hauke Mehrtens
825dbed09a ubox: update to Git HEAD (2025-10-30)
6f78fa496bf3 ubox validate: port range check fix

Link: https://github.com/openwrt/openwrt/pull/20715
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:20:14 +01:00
Hauke Mehrtens
56eb74960d libnl-tiny: update to Git HEAD (2025-11-03)
fa6a52b03713 github: add CI build
c69fb5ef80b9 github: improve CI
532ac744dedc github: fix CI apt dependencies

Link: https://github.com/openwrt/openwrt/pull/20714
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:18:34 +01:00
Hauke Mehrtens
e0b6fa2216 libubox: update to Git HEAD (2025-11-03)
7a3863acfb15 lua: CMakeLists: drop redundant cmake_minimum_required
61cc1e6fdc0e examples: CMakeLists: drop redundant cmake_minimum_required
7d6b9d98d0bd add debian/ directory
9caf555f00e2 github: improve CI build
e357be611cd9 github: fix CI apt dependencies

Link: https://github.com/openwrt/openwrt/pull/20713
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:17:26 +01:00
Tianling Shen
fefd50ec00 rockchip: add missing KERNEL_LOADADDR for LinkEase EasePi R1
Commit 8ca4caacd0 ("rockchip: Add support for RK3568 LinkEase EasePi R1")
forgot to include the SoC recipe, which leads KERNEL_LOADADDR undefined.

Fixes: 8ca4caacd0 ("rockchip: Add support for RK3568 LinkEase EasePi R1")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20722
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:11:16 +01:00
Tianling Shen
d720ad5254 rockchip: fix assign IRQ SMP affinity for Radxa E52C
The ifname was renamed to `lan`/`wan` in commit 1f1db75432
 ("rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T"),
update accordingly.

Fixes: 1f1db75432 ("rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20722
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:11:16 +01:00
Sven Eckelmann
14d3ea43ab realtek: dsa: rtl93xx: Keep mgmt recv action functions local
Th function to set the mangement frames receive actions is only used in the
SoC specific files. They can therefore be kept local without any
declaration in headers.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20704
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:05:20 +01:00
Sven Eckelmann
fa8ac8e562 realtek: dsa: rtl931x: Sync mgmt recv action code with RTL930x
The code for the RTL930x management action configuration was cleaned up
significantly for commit 75fe6b2d0b ("realtek: rtl930x: Add support for
trapping management frames"). Sync these changes to RTL931x to make it
easier to extend both implementations.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20704
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-11 00:05:20 +01:00
Hauke Mehrtens
0c6fa6edce odhcp6c: update to Git HEAD (2025-11-09)
17ef5f40d48a readme: rewrite in markdown
0fcfe9166173 readme: document all environment options
e3949977ca94 readme: update for prpl patch-set additions
86544fa2b581 src: align SoftAtHome license headers format
8bad7df9feb9 src: reorder includes alphabetically
6d353ff96826 src: remove pragma once in headers
f5684d570200 treewide: remove whitespaces at EOL
e5cfea8f6ef8 src: add missing if/else braces
a92f199d6b8d dhcpv6: potential bug fix for checking DHCPV6_OPT_STATUS
9e414d41e16e readme: fix description string
775e6c759cfd dhcpv6: return early upon success
e5690c1f13ed treewide: Replace _unused with _o_unused

This fixes the build on powerpc.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Link: https://github.com/openwrt/openwrt/pull/20712
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-10 23:52:06 +01:00
Christian Marangi
3169ffa4c7 airoha: backport patch fixing out of order DMA for ethernet driver
Backport upstream patch fixing out of order DMA access for ethernet
driver. This is relevant in the context of QoS when packets doesn't
follow linear handling by QDMA HW.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-10 19:27:11 +01:00
Christian Marangi
cce81ed05b uboot-airoha: drop HIDDEN option
Drop HIDDEN option from U-Boot default for Airoha while support for ATF
gets pushed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-10 19:16:01 +01:00
Christian Marangi
eedc7b3b79 airona: an7583: fix typo for CONFIG_PHY_AIROHA_USB
KConfig flag have an extra whitespace for CONFIG_PHY_AIROHA_USB and
value is not ignored.

Drop the extra whitespace to correctly ignore the value on kernel
compilation.

Fixes: c5b12fc02a ("airoha: Introduce support for Airoha AN7583 SoC")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-10 18:25:49 +01:00
Andy Chiang
4ad22d0342 firewall: config: add dest addr restrictions for DHCPv6 rules
Some ISPs may use a GUA or other non-LLA as the source addr for the DHCPv6 response, but the destination addr is always LLA (fe80::/10).
Therefore, adding a dest addr restriction improves security.
See https://forum.mikrotik.com/t/xfinity-comcast-dhcpv6-configuration-change/156031/10

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20562
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 15:23:16 +01:00
Rany Hany
df338d67d4 wifi-scripts: allow sae_password_file to be configured
Adds missing config_add_string for sae_password_file.

Fixes: 65a1c666f2 ("hostapd: add SAE support for wifi-station and optimize PSK file creation")
Fixes: https://github.com/openwrt/openwrt/issues/19717
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/19964
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 15:21:45 +01:00
Andy Chiang
631d535282 toplevel.mk: use relative path for feeds/base symlink
Currently, feeds/base is created as an absolute symlink to $(TOPDIR)/package.
If the OpenWrt source tree is copied to another location for building (while keeping the old tree), the symlink will still point to the package directory in the old tree.
Using a relative symlink ensures that feeds/base always points to the package directory within the current OpenWrt source tree, improving portability and avoiding incorrect links.

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20297
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 15:20:34 +01:00
David Härdeman
a88a19982d odhcpd: update Makefile description
Make it a little bit more consistant, and a bit more idiomatic.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20673
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-10 12:58:15 +01:00
David Härdeman
002e22b069 odhcpd: update Makefile, remove homenet
The support has been removed from odhcpd, so remove the Makefile options
related to homenet.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20673
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-10 12:53:25 +01:00
David Härdeman
781b04a84f odhcpd: reload on change to service/network cfg
"system" is used to get the current time zone, "network" is used to get
the global DUID.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20673
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-10 12:53:11 +01:00
David Härdeman
9be4970581 odhcpd: remove legacy option
Support for this option has been removed from odhcpd, so remove it in
the defaults as well.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20673
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-10 12:52:39 +01:00
Eneas U de Queiroz
0b9111301b wifi-scripts: ucode: iwinfo: expand AKM display
This exands the list of AKMs to display:
 - display the hash when larger than the default (loosely based on
   what hostapd uses in config).
   - renaming 'WPA PSK2' to 'WPA PSK-SHA256' as a result
 - separate FILS suites from plain 802.1x
 - add suites 3, 5, 9, 19, 20, 24, and 25

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20686
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 11:46:55 +01:00
Eneas U de Queiroz
988b2ed515 wifi-scripts: ucode: iwinfo: escape control chars
Escape control characters when displaying ESSID.  It is not uncommon for
a scan to encounter invalid SSIDs, containing binary data.  Escape the
control characters to avoid messing the display (ENQ is particularly
bothersome).

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20686
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 11:46:55 +01:00
Eneas U de Queiroz
e50703d033 wifi-scripts: ucode: iwinfo: show ESSID in scan
This adds the ESSID: line to the iwinfo scan results.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20686
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-10 11:46:55 +01:00
Joe Holden
d97e529f1f realtek: RTL838x: make u-boot-env writeable ZyXEL GS1900
As per #19596 - this allows eg, modifying the bootcmd etc.

This has been useful when testing on e.g the -48, where `rtk network on` is required for the SFP ports.

Signed-off-by: Joe Holden <jwh@zorins.us>
Link: https://github.com/openwrt/openwrt/pull/19913
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 23:34:12 +01:00
Liangbin Lian
8ca4caacd0 rockchip: Add support for RK3568 LinkEase EasePi R1
Specification:
- Rockchip RK3568
- 2GB/4GB LPDDR4 RAM
- 16GB on-board eMMC
- 1x M.2 key for 2280 NVMe (PCIe 3.0)
- 1x USB 3.0 Type-A
- 1x USB 2.0 Type-C (for USB flashing)
- 2x 1000 Base-T (native, RTL8211F)
- 2x 2500 Base-T (PCIe, RTL8125B)
- 1x HDMI 2.0 Output
- 12v DC Jack
- 1x Power key connected to PMIC
- 2x LEDs (one static power supplied, one GPIO controlled)

Debug Serial Port: 3.3V TTL, 3-pin 2.54mm pitch connector, 1500000 bauds,
'J7' on board with G/R/T (GND/RX/TX) pins marked

Installation - eMMC:
-Boot official firmware (OpenWRT based)
-Upload sysupgrade.img.gz to /tmp/firmware.bin (with scp or web page)
-Flash to eMMC: sysupgrade -n -p -F /tmp/firmware.bin

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20147
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 23:13:37 +01:00
Liangbin Lian
ef093299db uboot-rockchip: add support for LinkEase EasePi R1
generic-rk3568 is enough

Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20147
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 23:13:25 +01:00
Thibaut VARÈNE
887cab883b mediatek/filogic: fix Cudy WR3000H ethernet port order
The ports are physically labelled in reverse order on the device.
This patch aligns logical names with physical ones.
LED order on front of device is correct after this patch.

Fixes: 9d66b8b312
Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
Link: https://github.com/openwrt/openwrt/pull/20528
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 23:07:59 +01:00
Trix Taiclet
71b5de61ae uboot-d1: fix build with swig 4.3.0
Swig 4.3.0 has changed SWIG_Python_AppendOutput, which now requires an
additional parameter `is_void`. SWIG_AppendOutput remains unchanged.
This was fixed upstream in u-boot/u-boot@a63456b

```
scripts/dtc/pylibfdt/libfdt_wrap.c: In function ‘_wrap_fdt_next_node’:
scripts/dtc/pylibfdt/libfdt_wrap.c:5581:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’
 5581 |     resultobj = SWIG_Python_AppendOutput(resultobj, val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
```

This is the same fix as applied in 363e07d.

Fixes: #20619
Link: #20620
Signed-off-by: Trix Taiclet <trix@c3l.lu>
Link: https://github.com/openwrt/openwrt/pull/20620
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 23:00:44 +01:00
Pawel Dembicki
ef93221841 kirkwood: kernel: remove 6.6 version support
After switching to 6.12, time to remove 6.6 support.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20672
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 22:55:44 +01:00
Pawel Dembicki
c5b75d6cde kirkwood: kernel: switch to 6.12 version
No new reggresions was observed. Time to switch to 6.12.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20672
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 22:55:44 +01:00
Shiji Yang
64432358e0 tools/squashfs4: update to 4.7.3
Release Note:
  https://github.com/plougher/squashfs-tools/releases/tag/4.7.3

The three backported patches fixed the regression and build
issue on squashfs-tools v4.7.3.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20683
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 22:45:12 +01:00
FUKAUMI Naoki
1f1db75432 rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T
The probe order for PCIe buses and devices is non-deterministic,
making the names eth0 and eth1 unpredictable (they may be swapped).

This patch fixes the names by referencing the device path using
`ucidef_set_network_device_path`.

The mapping between silkscreen labels on the board/case and OpenWrt
interface names is as follows:

- E52C
  LAN: lan
  WAN: wan

- ROCK 5 ITX
  RJ45 1: eth0
  RJ45 2: eth1

- ROCK 5T
  RJ45_1: eth0
  RJ45_2: eth1

For Radxa E52C, this breaks compatibility of the network config;
therefore, set DEVICE_COMPAT_VERSION to `1.1`.

Fixes: d16d2765bd ("rockchip: add support for Radxa E52C")
Fixes: 0839345211 ("rockchip: add support for Radxa ROCK 5 ITX/ITX+")
Fixes: 4a78af9876 ("rockchip: add support for Radxa ROCK 5T")
Link: https://github.com/openwrt/openwrt/issues/20202
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/20608
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 21:56:13 +01:00
Andrii Kuiukoff
b33df7ba33 mediatek: add support for COMFAST CF-WR632AX
COMFAST CF-WR632AX is a compact/travel (123.4 mm * 88.7 mm * 34 mm)
wireless WiFi 6 router.

Specification
-------------
- SoC          : MediaTek MT7981B dual-core ARM Cortex-A53 1.3 GHz
- RAM          : DDR3 512 MiB
- Flash        : SPI-NAND 128 MiB (Winbond)
- WLAN         : MediaTek MT7976CN dual-band WiFi 6
  - 2.4 GHz    : b/g/n/ax, MU-MIMO (2x 5 dBi antennas)
  - 5 GHz      : a/n/ac/ax, MU-MIMO (2x 5 dBi antennas)
- Ethernet     :
  - LAN x1     : 10/100/1000 Mbps (MT7981 internal PHY)
  - WAN x1     : 10/100/1000/2500 Mbps (Maxlinear GPY211C)
- USB x1       : 3.0
- UART         : through-hole on PCB
  - assignment : (RX), (TX), (GND), [VCC]
  - settings   : 115200n8
- Buttons x1   : Reset
- LEDs x3      : Status (Blue, Green, Red)
- Fan x1       : PWM, 4-wire, 5 V, 0.3 A, 45 mm * 10 mm
- Power        : 5 VDC, 3 A, Type-C

Flash instructions
------------------
WebUI Method:

1. Install the *squashfs-sysupgrade.bin image using the stock WebUI
   update page.
2. Press and hold the reset button after reboot
   to wipe the stock config.

SSH Method:

1. Import stock firmware settings from backup file
   github.com/andros-ua/owrt-misc/blob/main/cf-wr632ax/backup.file
   Note: WebUI password will be reset to admin1234 after import.
2. Connect via SSH using root:openwrt credentials.
3. Upload the *squashfs-sysupgrade.bin image.
4. Use the command: sysupgrade -n
   All checks should pass.

Return to stock
---------------
Flash a stock firmware
using the OpenWrt sysupgrade method.

Recovery
--------
Power on the router while holding the Reset button until
the LED flashes 5 times.
The U-Boot Flash WebUI will be available at http://192.168.1.1
or
Connect UART and use the U-Boot menu to flash the firmware image
or boot an OpenWrt initramfs image.

OpenWrt U-Boot flash instructions
---------------------------------
1. Flash ordinary OpenWrt image.
2. Login into the device and backup everything, especially 'Factory' part.
3. Unlock mtd partitions:
    apk add kmod-mtd-rw
    insmod mtd-rw i_want_a_brick=1
4. Write new BL2 and FIP:
    mtd write openwrt-mediatek-filogic-comfast_cf-wr632ax-ubootmod-preloader.bin BL2
    mtd write openwrt-mediatek-filogic-comfast_cf-wr632ax-ubootmod-bl31-uboot.fip FIP
5. Set static IP on your PC:
    ip 192.168.1.254 mask 255.255.255.0
6. Serve OpenWrt initramfs image using TFTP server.
7. Reboot device, wait for TFTP recovery to complete.
8. After OpenWrt has booted, perform sysupgrade.

MAC Addresses:
----------------------------------------------------------
| Interface    |  MAC              | Source              |
---------------|-------------------|----------------------
| WAN (label)  | 40:A5:EF:xx:xx:xx | Factory, 0xe000     |
| LAN          | 40:A5:EF:xx:xx:xx | Factory, 0xe000 + 1 |
| WLAN 2.4 GHz | 40:A5:EF:xx:xx:xx | Factory, 0x4        |
| WLAN 5 GHz   | 40:A5:EF:xx:xx:xx | Factory, 0x8000     |
----------------------------------------------------------

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20382
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 19:33:18 +01:00
Luis Mita
8fb644e9e8 ramips: mt7621: add support for Cudy AP1300 Outdoor v1
Hardware:
 - SoC: MediaTek MT7621DAT
 - Flash: 16 MiB XM25QH128C
 - RAM: 128 MiB
 - WLAN: 2.4 GHz (MT7603E, 11n), 5 GHz (MediaTek MT7613BEN, 11ac)
 - Ethernet: 1x10/100/1000 Mbps LAN
 - Buttons: 1 Reset button, 1 WPS button
 - LEDs: 5x Green
 - Serial Console: unpopulated header 115200 8n1 (silkscreen on PCB)
 - Power: POE 802.3af (37-57V DC)

MAC addresses:
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| LAN     | 80:af:ca:xx:xx:x0 | label     |
| WLAN 2g | 80:af:ca:xx:xx:x0 | label     |
| WLAN 5g | 82:af:ca:xx:xx:x1 | +1        |
+---------+-------------------+-----------+

Installation:
The factory firmware is locked: you can only work with Cudy signed firmware.
Download a intermediate firmware signed by Cudy here:
https://www.cudy.com/blogs/faq/openwrt-software-download

After that, login to the router (192.168.10.254, password "admin") and install the intermediate firmware.

If you can reach LuCI or SSH now on the intermediate firmware, just use the sysupgrade image with the 'Keep settings' option turned off.

Special thanks to Daniel de Kock for starting the porting work at #16265.

Signed-off-by: Luis Mita <luis@luismita.com>
Co-Authored-By: Daniel de Kock <daniel@riot.network>
Co-Authored-By: Hauke Mehrtens <hauke@hauke-m.de>
Link: https://github.com/openwrt/openwrt/pull/20268
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 18:00:18 +01:00
Jonas Jelonek
b10663c428 realtek: pcs: allow to configure SerDes polarity
Allow to configure SerDes polarity in device tree. To achieve this, add
new device tree properties that can be set in the device tree definition
of the SerDes, are read by the PCS driver during probe and are applied
upon SerDes setup.

This may be required for supporting new devices as the SerDes polarity
is usually subject to the vendors board design and defined in the
hardware profile (HWP) in the SDK. Most importantly, it is quite an
important step towards being able to setup everything on our own instead
of relying on the bootloader.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20648
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 17:48:10 +01:00
Jonas Jelonek
56e9a73d0b realtek: pcs: rtl93xx: provide proper SerDes polarity configuration
The configuration code for RTL930X already provides setting the SerDes
TX and RX PN polarity. This is covered by a function called
'..._sds_mac_link_config'. But despite its name, this function only sets
the SerDes polarity and nothing more.

Moreover, this was called always with 'not inverted' in the SerDes setup
code and thus not really allowing to be configured.

At first, streamline the SerDes polarity configuration code. Rename the
function to reflect what it actually does instead of giving the
impression of doing more. Improve the implementation of this for better
readability.

As the implementation, page, register, bits, etc. are exactly the same
for both RTL930X and RTL931X (compare [1] and [2]), move and name it
accordingly so we can also add support for RTL931X.

[1] 69d2890a2e/sources/rtk-xgs1210/src/hal/phy/phy_rtl9300.c (L1384)
[2] 69d2890a2e/sources/rtk-xgs1210/src/hal/phy/phy_rtl9310.c (L3479)

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20648
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 17:48:10 +01:00
Shiji Yang
627a0e7da0 kernel: mtdsplit_fit: always return 0 when partition can't be split
If parse_fn() callback returns any error code, the entire MTD partition
table will be destroyed. Returning "0" indicates that the partition
should not be split. This patch fixes the kernel warning when running
the initramfs image but there is no image in firmware partition:

```
[    1.554246] no rootfs found after FIT image in "firmware"
[    1.559686] Failed to parse subpartitions: -19
[    1.564120] Deleting MTD partitions on "spi0.0":
[    1.568743] Deleting bl2 MTD partition
[    1.572507] ------------[ cut here ]------------
[    1.577110] WARNING: CPU: 0 PID: 1 at del_gendisk+0x260/0x2c4
[    1.582855] Modules linked in:
[    1.585902] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.57 #0
[    1.592505] Hardware name: AiroPi AX3 (DT)
[    1.596589] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    1.603538] pc : del_gendisk+0x260/0x2c4
[    1.607452] lr : del_gendisk+0x1c/0x2c4
[    1.611280] sp : ffffffc080dab460
[    1.614583] x29: ffffffc080dab460 x28: ffffffc080d75140 x27: 0000000000000004
[    1.621711] x26: 0000000000000000 x25: 0000000000000000 x24: ffffffc080b3f3d0
[    1.628838] x23: ffffffc080cf3d78 x22: ffffffc080cf3da8 x21: ffffff80009b8780
[    1.635966] x20: ffffffc080cf3e10 x19: ffffff80009d7400 x18: ffffffc080c5ebd8
[    1.643093] x17: ffffffc080cf00f0 x16: 000000009d594d00 x15: 0000000000000088
[    1.650221] x14: 0000000000000088 x13: 00000000ffffffea x12: ffffffc080cb6b80
[    1.657348] x11: 0000000000000040 x10: ffffffc080cf3820 x9 : ffffffc080cf3818
[    1.664475] x8 : ffffff8000420dd8 x7 : 0000000000000000 x6 : 0000000000000000
[    1.671601] x5 : ffffff8000420db0 x4 : ffffff8000420dd8 x3 : 0000000000000000
[    1.678728] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000004
[    1.685855] Call trace:
[    1.688290]  del_gendisk+0x260/0x2c4
[    1.691858]  del_mtd_blktrans_dev+0x30/0x144
[    1.696120]  mtdblock_remove_dev+0xc/0x20
[    1.700119]  blktrans_notify_remove+0x88/0xc4
[    1.704464]  del_mtd_device+0x58/0xdc
[    1.708120]  __del_mtd_partitions+0x98/0xe0
[    1.712296]  del_mtd_partitions+0x50/0x70
[    1.716299]  add_mtd_partitions+0x94/0x1e0
[    1.720388]  parse_mtd_partitions+0x3d0/0x4d4
[    1.724736]  mtd_device_parse_register+0x170/0x36c
[    1.729518]  spi_nor_probe+0x250/0x2cc
[    1.733261]  spi_mem_probe+0x68/0xa0
[    1.736828]  spi_probe+0x80/0xe0
[    1.740051]  really_probe+0xb8/0x2a4
[    1.743617]  __driver_probe_device+0x74/0x118
[    1.747962]  driver_probe_device+0x3c/0xe0
[    1.752049]  __device_attach_driver+0xac/0xe8
[    1.756394]  bus_for_each_drv+0x6c/0xb0
[    1.760224]  __device_attach+0x98/0x178
[    1.764049]  device_initial_probe+0x10/0x18
[    1.768223]  bus_probe_device+0xa0/0xa4
[    1.772051]  device_add+0x540/0x724
[    1.775531]  __spi_add_device+0x13c/0x1f8
[    1.779532]  of_register_spi_device+0x44c/0x720
[    1.784051]  spi_register_controller+0x4cc/0x6c0
[    1.788658]  devm_spi_register_controller+0x48/0xa0
[    1.793525]  mtk_spi_probe+0x420/0x720
[    1.797266]  platform_probe+0x64/0xcc
[    1.800920]  really_probe+0xb8/0x2a4
[    1.804485]  __driver_probe_device+0x74/0x118
[    1.808831]  driver_probe_device+0x3c/0xe0
[    1.812916]  __driver_attach+0x88/0x154
[    1.816741]  bus_for_each_dev+0x60/0xa0
[    1.820569]  driver_attach+0x20/0x28
[    1.824138]  bus_add_driver+0xdc/0x208
[    1.827880]  driver_register+0x64/0x114
[    1.831705]  __platform_driver_register+0x20/0x30
[    1.836399]  mtk_spi_driver_init+0x18/0x20
[    1.840486]  do_one_initcall+0x4c/0x1f8
[    1.844313]  kernel_init_freeable+0x238/0x290
[    1.848661]  kernel_init+0x1c/0x120
[    1.852141]  ret_from_fork+0x10/0x20
[    1.855707] ---[ end trace 0000000000000000 ]---
[    1.860731] Deleting u-boot-env MTD partition
[    1.865431] Deleting factory MTD partition
[    1.869907] Deleting fip MTD partition
[    1.874003] Deleting firmware MTD partition
```

Ref:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/mtd/mtdpart.c?h=linux-6.12.y&id=5c2f7727d437cd42033d13ebc8b3d74b9fe65712

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20706
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-09 17:23:18 +01:00
Andy Chiang
7079e456ad ppp: add reqprefix norelease ac_mac
Use ppp and enable autoipv6, odhcp6c supports reqprefix and norelease to minimize the chance of IPv6 PD changes.[1]
PPPoE supports connecting to a specific AC/BRAS by using the pppoe-mac parameter.[2]

1. https://github.com/openwrt/openwrt/blob/master/package/network/ipv6/odhcp6c/files/dhcpv6.sh#L67
   https://github.com/openwrt/openwrt/blob/master/package/network/ipv6/odhcp6c/files/dhcpv6.sh#L77
2. https://github.com/ppp-project/ppp/blob/master/pppd/plugins/pppoe/plugin.c#L93

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19978
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-09 16:17:01 +01:00
Christian Marangi
231bbe528d bcm53xx: use -ENOENT error for TRX parser workaround patch
Change return value from -EINVAL to -ENOENT for the TRX parser
workaround patch as it's better suited and it's the common exit error
for parser failing parsing for expected condition (partition not init,
zero partition found in the schema, magic values not matching)

Also this is needed for a pending upstream patch that will permit parser
to fail and be skipped for subpartitions only with the -ENOENT error.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-09 12:58:23 +01:00
Dirk Buchwalder
71ebc54d2a mediatek: filogic: add support for TP-LINK BE450
This commit adds support for TP-LINK BE450.

Device specification
--------------------
SoC Type:   MediaTek MT7988D, Cortex-A73, 64-bit
RAM:        512MB
Flash:      SPI NAND GigaDevice (128 MiB)
Ethernet:   MediaTek MT7531AE (3 Ports) + 2.5GbE (internal MT7988 phy) + 10GbE (RTL8261N)

WLAN:       MT7992
WLAN 2g:    MediaTek MT7975N, b/g/n/ax/be, MIMO 4x4
WLAN 5g:    MediaTek MT7979N, a/n/ac/ax/be, MIMO 4x4
LEDs:       8 LEDs, 1 status blue, 2x WIFI blue, 2x Internet
	        blue/orange, 1 LAN blue, 1 usb blue, 1 wps blue, gpio-controlled
Button:     2 (Reset, WPS)
USB port:   Yes
Power:      12 VDC, 2 A
Connector:  Barrel
Bootloader: Main U-Boot - U-Boot 2023.10-rc4. Additionally, ubi0
            partition contain "seconduboot" (also U-Boot 2023.10-rc4)

Serial console (UART), unpopulated, located near the power connector
---------------------
heatsink
|   |
|   |
|   |     +----+-----+------+-------+               +-----------------+
|   |     | TX |  RX |  GND | +3.3V |               | power connector |
+---+     +----+-----+------+-------+               +-----------------+
                                  |
                Don't connect ----+

Disassemble: rm the 2 screws at the bottom and the one at the backside.
             un-clip the case starting at the edge above the LEDs.

Installation (UART)
-------------------
1. Place OpenWrt initramfs image on tftp server with IP 192.168.1.2
2. Attach UART, switch on the router and interrupt the boot process by
   pressing 'Ctrl-C'
3. Load and run OpenWrt initramfs image:
      tftpboot 0x50000000 openwrt-mediatek-filogic-tplink_be450-initramfs-kernel.bin && bootm 0x50000000
4. Run 'sysupgrade -n' with the sysupgrade OpenWrt image

Note: the 10GbE (RTL8261N) is only working if reverting this Realtek target specific commit:
      b77fa45d12

      The second ubi partition (ubi1) is empty and there is no known
      dual-partition mechanism, neither in u-boot nor in the stock firmware.

      NMBM is not used.

Not Working: WED, if activated, MT7992 isn't recognized any more.

Signed-off-by: Dirk Buchwalder <buchwalder@posteo.de>
Link: https://github.com/openwrt/openwrt/pull/20398
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 23:39:59 +01:00
John Audia
5212866508 pcre2: bump to 10.47
Update to latest version.

Changelog: https://github.com/PCRE2Project/pcre2/blob/pcre2-10.47/ChangeLog

Tested with snort3, no regressions.

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150 based box)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20554
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 22:56:03 +01:00
INAGAKI Hiroshi
5aab294726 kernel: generic: mtdsplit_seil: return 0 instead of -ENODEV
Return 0 if the current mtd is inactive or no valid header/rootfs found,
instead of -ENODEV.
Linux Kernel 6.7 and later versions handle all errors returned by mtd
parsers, including -ENODEV as error. So '0' needs to be returned if no
child partitions were not parsed.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20697
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:36:29 +01:00
Hauke Mehrtens
0334564ea6 util-linux: Update to version 2.41.2
Changes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.2-ReleaseNotes

Link: https://github.com/openwrt/openwrt/pull/20546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:22:46 +01:00
Hauke Mehrtens
6665089e94 tools: util-linux: Update to version 2.41.2
Changes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.2-ReleaseNotes

Link: https://github.com/openwrt/openwrt/pull/20546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:22:46 +01:00
Hauke Mehrtens
28aaaf3c82 e2fsprogs: Update to version 1.47.3
Changelog:
https://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.47.3

The file sizes changed only a bit:
```
  8671 bin/packages/mipsel_24kc/base/badblocks-1.47.2-r1.apk
  3449 bin/packages/mipsel_24kc/base/chattr-1.47.2-r1.apk
 61629 bin/packages/mipsel_24kc/base/debugfs-1.47.2-r1.apk
  8522 bin/packages/mipsel_24kc/base/dumpe2fs-1.47.2-r1.apk
  4620 bin/packages/mipsel_24kc/base/e2freefrag-1.47.2-r1.apk
162458 bin/packages/mipsel_24kc/base/e2fsprogs-1.47.2-r1.apk
  6837 bin/packages/mipsel_24kc/base/e4crypt-1.47.2-r1.apk
  6143 bin/packages/mipsel_24kc/base/filefrag-1.47.2-r1.apk
  4136 bin/packages/mipsel_24kc/base/libcomerr0-1.47.2-r1.apk
 12083 bin/packages/mipsel_24kc/base/libe2p2-1.47.2-r1.apk
173855 bin/packages/mipsel_24kc/base/libext2fs2-1.47.2-r1.apk
  8166 bin/packages/mipsel_24kc/base/libss2-1.47.2-r1.apk
  2987 bin/packages/mipsel_24kc/base/lsattr-1.47.2-r1.apk
 23203 bin/packages/mipsel_24kc/base/resize2fs-1.47.2-r1.apk
 36232 bin/packages/mipsel_24kc/base/tune2fs-1.47.2-r1.apk

  8671 bin/packages/mipsel_24kc/base/badblocks-1.47.3-r1.apk
  3450 bin/packages/mipsel_24kc/base/chattr-1.47.3-r1.apk
 61545 bin/packages/mipsel_24kc/base/debugfs-1.47.3-r1.apk
  8519 bin/packages/mipsel_24kc/base/dumpe2fs-1.47.3-r1.apk
  4630 bin/packages/mipsel_24kc/base/e2freefrag-1.47.3-r1.apk
161364 bin/packages/mipsel_24kc/base/e2fsprogs-1.47.3-r1.apk
  6846 bin/packages/mipsel_24kc/base/e4crypt-1.47.3-r1.apk
  6092 bin/packages/mipsel_24kc/base/filefrag-1.47.3-r1.apk
  4135 bin/packages/mipsel_24kc/base/libcomerr0-1.47.3-r1.apk
 12121 bin/packages/mipsel_24kc/base/libe2p2-1.47.3-r1.apk
175696 bin/packages/mipsel_24kc/base/libext2fs2-1.47.3-r1.apk
  8166 bin/packages/mipsel_24kc/base/libss2-1.47.3-r1.apk
  3001 bin/packages/mipsel_24kc/base/lsattr-1.47.3-r1.apk
 23208 bin/packages/mipsel_24kc/base/resize2fs-1.47.3-r1.apk
 36402 bin/packages/mipsel_24kc/base/tune2fs-1.47.3-r1.apk
```

Link: https://github.com/openwrt/openwrt/pull/20541
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:21:21 +01:00
Hauke Mehrtens
1a71840512 tools: e2fsprogs: Update to version 1.47.3
Changelog:
https://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.47.3

Add patch to fix build on older Linux systems like Debian oldstable.

Link: https://github.com/openwrt/openwrt/pull/20541
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:21:21 +01:00
Hauke Mehrtens
6d04c7b6dc iproute2: Update to version 6.17
https://www.spinics.net/lists/netdev/msg1094722.html
https://www.spinics.net/lists/netdev/msg1112693.html
https://www.spinics.net/lists/netdev/msg1126307.html

Only small size increases:
```
 42470 bin/packages/mipsel_24kc/base/devlink-6.17.0-r1.apk
  7553 bin/packages/mipsel_24kc/base/genl-6.17.0-r1.apk
 35340 bin/packages/mipsel_24kc/base/ip-bridge-6.17.0-r1.apk
195151 bin/packages/mipsel_24kc/base/ip-full-6.17.0-r1.apk
133690 bin/packages/mipsel_24kc/base/ip-tiny-6.17.0-r1.apk
 12185 bin/packages/mipsel_24kc/base/nstat-6.17.0-r1.apk
 21484 bin/packages/mipsel_24kc/base/rdma-6.17.0-r1.apk
 40935 bin/packages/mipsel_24kc/base/ss-6.17.0-r1.apk
168132 bin/packages/mipsel_24kc/base/tc-bpf-6.17.0-r1.apk
169667 bin/packages/mipsel_24kc/base/tc-full-6.17.0-r1.apk
144693 bin/packages/mipsel_24kc/base/tc-tiny-6.17.0-r1.apk

 41654 bin/packages/mipsel_24kc/base/devlink-6.14.0-r1.apk
  7551 bin/packages/mipsel_24kc/base/genl-6.14.0-r1.apk
 32847 bin/packages/mipsel_24kc/base/ip-bridge-6.14.0-r1.apk
194398 bin/packages/mipsel_24kc/base/ip-full-6.14.0-r1.apk
132656 bin/packages/mipsel_24kc/base/ip-tiny-6.14.0-r1.apk
 12114 bin/packages/mipsel_24kc/base/nstat-6.14.0-r1.apk
 21366 bin/packages/mipsel_24kc/base/rdma-6.14.0-r1.apk
 40939 bin/packages/mipsel_24kc/base/ss-6.14.0-r1.apk
163878 bin/packages/mipsel_24kc/base/tc-bpf-6.14.0-r1.apk
165511 bin/packages/mipsel_24kc/base/tc-full-6.14.0-r1.apk
140497 bin/packages/mipsel_24kc/base/tc-tiny-6.14.0-r1.apk
```

Link: https://github.com/openwrt/openwrt/pull/20545
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:17:50 +01:00
Hauke Mehrtens
b4a8ba2e88 wireless-regdb: Update to version 2025.10.07
e51d568 wireless-regdb: update regulatory rules for Botswana (BW) for 2022
5afc632 wireless-regdb: update regulatory rules for Sint Marteen (SX) for 2018
b484a31 wireless-regdb: Update regulatory info including bandwidth for Costa Rica (CR) for 2023
39e5e04 wireless-regdb: Permit lower 6 GHz band for Kazakhstan (KZ)
a827d3a wireless-regdb: update regulatory database based on preceding changes

Link: https://github.com/openwrt/openwrt/pull/20544
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:15:51 +01:00
Hauke Mehrtens
92f07864c1 wolfssl: Update to version 5.8.2
This version fixes multiple security problems:
CVE-2025-7395: Problem in certificate verification on Apple devices
CVE-2025-7394: Predictable results from RAND_bytes() after fork call in OpenSSL compatibility layer
CVE-2025-7396: Activate Curve25519 blinding support

See Release notes:
https://github.com/wolfSSL/wolfssl/releases/tag/v5.8.0-stable
https://github.com/wolfSSL/wolfssl/releases/tag/v5.8.2-stable

wolfSSL is now GPLv3 instead of GPLv2, see:
629c5b4cf6

The file size increased a bit:
```
546060 bin/packages/mipsel_24kc/base/libwolfssl5.7.6.e624513f-5.7.6-r1.apk
560684 bin/packages/mipsel_24kc/base/libwolfssl5.8.2.e624513f-5.8.2-r1.apk
```

Link: https://github.com/openwrt/openwrt/pull/20547
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:14:39 +01:00
Hauke Mehrtens
6ad9daf99a mtd-utils: Update to version 2.3.0
See announcement mail for list of new features:
https://lists.infradead.org/pipermail/linux-mtd/2025-February/108248.html

Cherry pick some upstream commits which fix build problems in some
situations.

autoreconf fixup is needed now otherwise the build fails with:
```
mtd-utils-2.3.0/missing: line 81: automake-1.16: command not found
```

The code in tests/ubifs_tools-tests/Makemodule.am does not build because
some test data is not packaged in the tar files, do not build code from
this directory.

The size increased only very little:
 61498 bin/targets/ramips/mt7621/packages/nand-utils-2.3.0-r1.apk
101643 bin/targets/ramips/mt7621/packages/ubi-utils-2.3.0-r1.apk
 61243 bin/targets/ramips/mt7621/packages/nand-utils-2.2.1-r1.apk
101291 bin/targets/ramips/mt7621/packages/ubi-utils-2.2.1-r1.apk

Link: https://github.com/openwrt/openwrt/pull/20540
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:03:46 +01:00
Hauke Mehrtens
52c0e90bdc tools: mtd-utils: Update to version 2.3.0
See announcement mail for list of new features:
https://lists.infradead.org/pipermail/linux-mtd/2025-February/108248.html

The removed patch 100-sscanf_fix.patch was applied upstream, see:
https://git.infradead.org/?p=mtd-utils.git;a=commitdiff;h=cba2d7875328b05a4a76f619de0ce7050f2df971

The patch 110-portability.patch was manually adapted.

Cherry pick some upstream commits which fix build problems in some
situations.

Link: https://github.com/openwrt/openwrt/pull/20540
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 21:01:44 +01:00
Hauke Mehrtens
a646a8e3e8 gdb: Update to version 16.3
This is a corrective release over GDB 16.2, fixing the following issues:

   PR symtab/32309 ([gdb/symtab, fission] gdb/dwarf2/read.h:289: internal-error: version: Assertion `m_dwarf_version != 0' failed)
   PR corefiles/32441 (gdb segfaults when generating a core file if target_fileio_read_alloc fails)
   PR tui/32623 (TUI console window doesn't update while inferior is running)
   PR corefiles/32634 ([gdb/corefiles] segfault in gdb.arch/i386-biarch-core.exp)
   PR backtrace/32757 ("Assertion `stashed' failed" when inline frame #0 is duplicated)
   PR tdep/32770 ([gdb/tdep, i386] FAIL: gdb.reverse/recvmsg-reverse.exp: continue to breakpoint: marker2)
   PR gdb/32775 ([AArch64] gdbserver crashes on SVE/SME-enabled systems)
   PR record/32784 ([gdb/record, aarch64] Stack smashing detected in aarch64_record_asimd_load_store)
   PR tui/32797 (Escape sequences to only reset foreground or background color to default fail)
   PR gdb/32828 (gstack regression: missing file names and line numbers)

Link: https://github.com/openwrt/openwrt/pull/20543
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 20:58:30 +01:00
Hauke Mehrtens
7f989ecb03 toolchain: gdb: Update to version 16.3
This is a corrective release over GDB 16.2, fixing the following issues:

   PR symtab/32309 ([gdb/symtab, fission] gdb/dwarf2/read.h:289: internal-error: version: Assertion `m_dwarf_version != 0' failed)
   PR corefiles/32441 (gdb segfaults when generating a core file if target_fileio_read_alloc fails)
   PR tui/32623 (TUI console window doesn't update while inferior is running)
   PR corefiles/32634 ([gdb/corefiles] segfault in gdb.arch/i386-biarch-core.exp)
   PR backtrace/32757 ("Assertion `stashed' failed" when inline frame #0 is duplicated)
   PR tdep/32770 ([gdb/tdep, i386] FAIL: gdb.reverse/recvmsg-reverse.exp: continue to breakpoint: marker2)
   PR gdb/32775 ([AArch64] gdbserver crashes on SVE/SME-enabled systems)
   PR record/32784 ([gdb/record, aarch64] Stack smashing detected in aarch64_record_asimd_load_store)
   PR tui/32797 (Escape sequences to only reset foreground or background color to default fail)
   PR gdb/32828 (gstack regression: missing file names and line numbers)

Link: https://github.com/openwrt/openwrt/pull/20543
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 20:58:30 +01:00
Hauke Mehrtens
b1255c4a32 trace-cmd: Update to version 3.3.3
d1fac9ec trace-cmd record: Always disable func_stack_trace in tracecmd_disable_all_tracing()
75e3b868 trace-cmd: utest: include libgen.h for POSIX basename()
176bc1f1 trace-cmd record: Fix compression when files are greater than 2GB
9da3427e trace-cmd lib: Use proper printf format specifiers
5f20c477 trace-cmd: Version 3.3.1
39acb4cc trace-cmd list: Use tracefs_filter_functions()
4eef18ff trace-cmd show: Add --max_latency
e4540079 trace-cmd list: Use tracefs_instances() to list instances
908d122e trace-cmd stat: Use tracefs_instances() instead of walking them
cc6de736 trace-cmd reset: Bail out immediately if user provides an invalid option
3c4fd59b trace-cmd reset: Add option to preserve specific dynamic events
19ceba14 trace-cmd reset: Update man page for -k option
bbea061f trace-cmd reset: Add bash tab completion for -B and -k
7f126040 trace-cmd utest: Add test cases for trace-cmd reset
5e8b3c16 trace-cmd lib: Prevent a memory leak in handle_options()
6295bcc1 trace-cmd record: Prevent a memory leak in show_error()
7abca575 trace-cmd lib: Check the return value of do_lseek() in trace_get_options()
22a1605c trace-cmd dump: Prevent buffer overrun in dump_clock()
52946308 trace-cmd record: Prevent memory leak in setup_network()
1b901134 trace-cmd lib: Prevent memory leak in tracecmd_create_event_hook()
59d2c3f9 trace-cmd mem: Prevent a memory leak in trace_mem()
969c36d2 trace-cmd record: Check the length of the protocol version received
201f95fd trace-cmd sqlhist: Fix missing initialization of a var
f10d39b8 trace-cmd .gitignore: Ignore utest/trace-utest in git
c76f2404 trace-cmd: Prevent buffer overflow in update_pid_filters()
db45fec2 trace-cmd: libtracecmd: Rename private functions to fix static building
d6cdfc23 trace-cmd: libtracecmd: Remove some unneeded line breaks
d14d790a trace-cmd lib: Prevent a memory leak in tracecmd_tsync_with_guest()
b948fbed trace-cmd lib: Prevent memory leak in tracecmd_msg_wait_for_cmd()
a1b5eee6 trace-cmd sqlhist: Initialize name in trace_sqlhist()
fee20bfb trace-cmd: Fix memory leak in stop_mapping_vcpus()
5f1eeba9 trace-cmd record: Fix stdin redirection to /dev/null
a1b8a0f5 trace-cmd meson: Add options for doc and utest build
24eed8d8 trace-cmd lib: Prevent a leaked FD in __tracecmd_create_buffer_recorder()
d6241881 trace-cmd sqlhist: Initialize err value to tracefs_sql()
179125a4 trace-cmd documentation: Fix typo in man of trace-cmd attach
e81cd4e3 trace-cmd lib: Copy message buffer content in get_trace_req_args()
b44a9a9f trace-cmd list: Check if any functions were found
9c44659e trace-cmd: Add trace-cmd set to bash completion (like start)
f4ede17d trace-cmd list: Show events in bash completion
2149da9c trace-cmd: Add sqlhist to bash completion
477bf923 trace-cmd: Install completion script in /usr/share/bash-completion/completions
6448ea34 trace-cmd show: Update help message for --hist and --trigger options
2fbeb317 trace-cmd list: Show all functions that match string by default
f339229f trace-cmd record: Fix compression on big-endian systems
e57b3d3e libtracecmd: Add missing error handling to trace-compress.c
b1db6f61 libtracecmd: Version 1.5.3
d0a17b4f trace-cmd: Version 3.3.2
24cdb0be trace-cmd completion: Fix trace-cmd report to show files
68bd953b trace-cmd: libtrace-cmd: Fix glob() return value checks
2d5c06e6 trace-cmd: record: Fix glob() return value checks
2c46eb6b trace-cmd split: Only open one file descriptor per CPU
9da7e594 trace-cmd: Version 3.3.3

Link: https://github.com/openwrt/openwrt/pull/20548
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 20:55:59 +01:00
Daniel Golle
b6d2ab85ef mediatek: remove non-existent package mt798x-2p5g-phy-firmware-internal
Also the MT7987 RFB accidentally already set the not-yet-existing
mt798x-2p5g-phy-firmware-internal package as one of the DEVICE_PACKAGES.
This currently breaks the build, so remove it for now. Also remove stray
'blkid' package from DEVICE_PACKAGES which was accidentally copied from
MediaTek's SDK.

Fixes: 9de7189ed4 ("mediatek: build image for MT7987 RFB")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-08 18:30:24 +00:00
Alice H.
010575c617 base-files: correct global DHCP DUID generation
The old command generates an often incorrect variable length UUID
instead of a fixed 16-octet hex string.

Ref: https://datatracker.ietf.org/doc/html/rfc8415#section-11.5

Signed-off-by: Alice H. <alice.hall0451+github@gmail.com>
2025-11-08 16:30:37 +01:00
Aleksander Jan Bajkowski
412bc7e1d8 rpcd: update to Git HEAD (2025-11-07)
11e0bee504c6 file: use lstat for file list (instead of stat) to reveal links
917000075eb4 iwinfo: add he and eht operation info to wifi scan

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20692
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-08 12:12:18 +01:00
Rany Hany
4c5df354df wifi-scripts: ucode: add SAE support for wifi-station and PPSK
This implements 65a1c666f2 ("hostapd: add SAE support for wifi-station
and optimize PSK file creation") and 913368a2 ("hostapd: add support for
SAE in PPSK option") for the ucode version as well.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/19965
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-08 12:09:31 +01:00
Aleksander Jan Bajkowski
c996ae7602 libiwinfo: update to Git HEAD (2025-11-07)
40563018dc87 iwinfo: print HT operation only if present
5f4c213fc59f iwinfo: export HE and EHT operation in scan results

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20690
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-08 00:19:34 +01:00
Rosen Penev
b872421795 tools/util-linux: remove automake dep
In the conversion to meson, this was overlooked.

Fixes e15d5cf752: ("tools/util-linux: build with meson")

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20688
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 21:18:55 +01:00
Rany Hany
372fc5419c wifi-scripts: ucode: fix setting tx_queue_data2_burst in config
Currently we unconditionally set it to 2.0 if 802.11ac and disregard
what the user set. This sets it to 2.0 only as a default in case
user didn't specify a tx_burst setting.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20565
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 21:18:15 +01:00
Rany Hany
8e457b69a2 wifi-scripts: add sae_track_password option
This is useful if multiple passwords were specified without
the use of a SAE password identifier. This is the only
way to get multiple passwords for a single peer to work
without resorting to password identifiers.

Unfortunately, support for password identifiers is non-existent
on Android and macOS; and possibly others. So this is the only
option in that case.

As an alternative, one could also continue to use WPA2-PSK instead
as that could easily resort to a bruteforce approach without any
complications.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20597
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 21:17:04 +01:00
Rany Hany
bcdb29f78f wifi-scripts: add na_mcast_to_ucast option
As this is generally only useful with "proxy_arp" enabled,
we default na_mcast_to_ucast to true if "proxy_arp" is already
enabled.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20596
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 21:15:09 +01:00
Harshal Gohel
f84371ddb5 realtek: rtl930x: Add support for Plasma Cloud MCX3 Media Converter
The Plasma Cloud MCX3 Media Converter is a 3 port multi-GBit switch with
2x 10/100/1000/2500BaseT Ethernet ports and 1x SFP+ module slot.

Hardware:

- RTL9302C SoC
- Macronix MX25L25645G (32MB flash)
- Winbond W632GU6rB-11 (256MB DDR3 SDRAM)
- RTL8224 4x 10m/100m/1/2.5 Gigabit PHY
- IC+ IP802AR POE+ PSE controller

The media converter is powered by 54 Volts 1.2A barrel connector. The
internal TTL serial connector can be used to access the terminal. Pins from
1: TX RX (unused) GND. Serial connection is via 115200 baud, 8N1.

A reset button is accessible through a hole next to the SFP+ module slot.

Installation
------------

* The device can be flashed by using sysupgrade command. Either from the
  original vendor firmware or using an initramfs (see "Debug")
* Connect serial as per the layout above. Connection parameters: 115200 8N1
* The image must be copied using scp to /tmp of the device

      scp openwrt-realtek-rtl930x-plasmacloud_mcx3-squashfs-sysupgrade.bin root@[IP address of the device]:/tmp/

* start sysupgrade without saving the original vendor configuration

      sysupgrade -n /tmp/openwrt-realtek-rtl930x-plasmacloud_mcx3-squashfs-sysupgrade.bin

Installation via u-boot
-----------------------

If you have an TFTP server connected to the switch, it is possible to
directly install the device using the factory image from u-boot

    # setup networking and IP of TFP server
    rtk network on
    setenv ipaddr 10.100.100.99
    setenv serverip 10.100.100.20

    # get factory image
    tftp 0x84000000 factory.bin

    # erase firmware partitions
    sf probe 0
    sf erase 0x100000 0x01f00000

    # write firmware to both partitions
    sf write ${fileaddr} 0x100000 ${filesize}
    sf write ${fileaddr} 0x1080000 ${filesize}

    # adjust the boot commands
    setenv bootargs "mtdparts=spi0.0:896k(u-boot),64k(u-boot-env),64k(u-boot-env2),15872k(inactive),15872k(firmware2)"
    setenv bootcmd "rtk init; bootm 0xb5080000"

    # restart
    reset

Debug
-----

* Connect serial as per the layout above. Connection parameters: 115200 8N1.
* A tftp server is required, tftpd-hpa works well.
* Power the device, at U-Boot start rapidly hit Esc key to stop autoboot
* Enable network:

      rtk network on

* Change ip address of device:

      setenv ipaddr 192.168.1.6

* Download initramfs from TFTP server:

      tftpboot 0x84000000 192.168.1.111:openwrt-realtek-rtl930x-plasmacloud_mcx3-initramfs-kernel.bin

* Boot loaded file:

      bootm 0x84000000

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20625
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 21:12:58 +01:00
Eneas U de Queiroz
ed3f84e091 wifi-scripts: ucode: fix hostapd_bss_options
The raw option inside 'config wifi-iface' is called hostapd_bss_options,
not hostapd_options.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20657
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-07 19:41:01 +01:00
Marko Zajc
38753dea64 dnsmasq: prevent upstream resolution of addresses
`list address` entries in /etc/config/dhcp are sometimes (I'm not sure
about the exact conditions) passed to upstream resolver, bypassing local
resolution. Adding them (minus the IP) to --local prevents this. In the
configuration, this means that

    # /etc/config/dhcp
    list address '/hello.com/world.com/1.2.3.4'
    list address '/foo.com/bar.com/4.3.2.1'

which previously translated into

    # /var/etc/dnsmasq.conf.*
    address=/hello.com/world.com/1.2.3.4
    address=/foo.com/bar.com/4.3.2.1

now becomes

    # /var/etc/dnsmasq.conf.*
    address=/hello.com/world.com/1.2.3.4
    local=/hello.com/world.com/
    address=/foo.com/bar.com/4.3.2.1
    local=/foo.com/bar.com/

This behaviour is controlled by the `address_as_local` boolean option, which
defaults to false (old behaviour). openwrt/luci#7957 adds support for this flag
to LuCI.

A workaround for a small list of domains is to add them to `option local`,
but this is very tedious to do for every `list address` entry and dnsmasq
limits this option to 1024 characters.

Signed-off-by: Marko Zajc <marko@zajc.tel>
Link: https://github.com/openwrt/openwrt/pull/18610
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 15:23:25 +01:00
Daniel Golle
81a9c9f3c8 mediatek: remove non-existing mt7987-2p5g-phy-firmware-internal
Because the firmware has not yet been accepted in linux-firmware we
cannot yet package mt7987-2p5g-phy-firmware-internal. Remove it from
DEVICE_PACKAGES of the BPi-R4-mini until the an upcoming linux-firmware
release will come with this firmware included, allowing us to then
create that package.

Fixes: 8b6c6978d6 ("mediatek: add support for BananaPi BPi-R4 Lite")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-07 12:03:05 +00:00
Issam Hamdi
2e74eb6d93 realtek: dsa: rtl93xx: Support per port throttling
The RTL930x and RTL931x have an ingress and egress bandwidth controller for
each port. They can can be used to reduce the throughput for each port.

They can be programmed via the the DSA flower offloading capabilities. Only
a limited functionality (bytes based rate limiter for ingress/egress) is
supported.

With kmod-sched-act-police, kmod-sched-flower and tc installed, each port
can have its ingress/egress rate limit applied in hardware using:

    # tc qdisc del dev lan1 clsact
    tc qdisc add dev lan1 clsact
    tc filter add dev lan1 ingress flower skip_sw action police rate 100mbit burst 64k conform-exceed drop
    tc filter add dev lan1 egress flower skip_sw action police rate 150mbit burst 64k conform-exceed drop

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20663
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 12:34:09 +01:00
Matthias Franck
2df73702c5 include: download.mk: do not check PKG_MIRROR_HASH when set to "skip"
In commit 042996b46b compilation of git repos is made to fail when PKG_MIRROR_HASH is not correct.

It looks like it was forgotten that in openwrt there is a posibility to set the PKG_MIRROR_HASH to "skip".
In this case the hash check should not be performed and compilation should continue as expected.

This is especially very usefull when doing local testing and development with git repos.

Signed-off-by: Matthias Franck <matthias.franck@softathome.com>
Link: https://github.com/openwrt/openwrt/pull/20655
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 12:25:42 +01:00
Matthias Franck
5f99bcdbec package: xcrypt: add missing PKG_NAME
PKG_NAME was lost during package migration from "packages" feed to "main" feed.

Signed-off-by: Matthias Franck <matthias.franck@softathome.com>
Link: https://github.com/openwrt/openwrt/pull/20662
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 12:23:52 +01:00
Jan Hoffmann
23c0145963 realtek: pcs: rtl930x: reconfigure PLL of neighbor SerDes when needed
On RTL930x, each SerDes pair shares a set of PLLs with different
capabilities (LC PLL: 1G/2.5G/10G, ring PLL: 1G/2.5G). In principle,
this allows any combination of speeds on a SerDes pair. However, it
creates a special case when trying to configure a SerDes for 10G while
the LC PLL is already in use at a slower speed for the neighbor SerDes.
The current implementation just gives up in that case. Instead, free up
the LC PLL by reconfiguring the neighbor SerDes to the ring PLL.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/20568
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-07 12:22:45 +01:00
Goetz Goerisch
099633be82 kernel: bump 6.6 to 6.6.116
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.116

All patches auto-refreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20598
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-06 22:19:12 +01:00
Goetz Goerisch
6526d6d057 kernel: bump 6.6 to 6.6.115
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.115

All patches auto-refreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20598
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-06 22:19:12 +01:00
Aleksander Jan Bajkowski
58efc5c96b treewide: fix mistaken executable bit on dts files
This commit fixes mistaken executable bit on dts files.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20676
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-06 22:14:56 +01:00
Edoardo Pinci
5db6185f2f kernel: bump 6.12 to 6.12.57
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.57

All patches automatically rebased.

Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic

Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20589
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-06 22:06:54 +01:00
Edoardo Pinci
919e0001b4 kernel: bump 6.12 to 6.12.56
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.56

Removed upstreamed:
- airoha/patches-6.12/028-v6.13-spi-airoha-do-not-keep-tx-rx-dma-buffer-always-mappe.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.56&id=ad00df9ee321e87639a740e6e372f11bfe5af52c
- airoha/patches-6.12/029-01-spi-airoha-return-an-error-for-continuous-mode-di.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/spi?h=v6.12.56&id=f5dc5baa5b04ceb0fca2460bc2863921f0e7ede5
- airoha/patches-6.12/029-03-spi-airoha-add-support-of-dual-quad-wires-spi-mod.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.56&id=182221d35c1427630ea6d9de9953c2280848c851
- airoha/patches-6.12/029-05-spi-airoha-switch-back-to-non-dma-mode-in-the-cas.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.56&id=8063828625359826316c5a1885e9ea341bbdb1b3
- airoha/patches-6.12/029-06-spi-airoha-fix-reading-writing-of-flashes-with-mo.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.56&id=4e9a2d592d91b902f918158c1049eef19f9cce90
- mediatek/patches-6.12/810-tty-serial-8250_mtk-enable-baud-clock.patch
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.56&id=7cbf5ed24a26d4d80dcc19eb2259fdb9b179d5cf

All other patches automatically rebased.

Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic

Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20589
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-06 22:06:54 +01:00
Felix Fietkau
e1a584b5d2 mt76: update to Git HEAD (2025-11-06)
0aece3089a3a wifi: mt76: mt7996: Remove useless check in mt7996_msdu_page_get_from_cache()
05b3d899ad24 wifi: mt76: Move Q_READ/Q_WRITE definitions in dma.h
85e6517b0ac5 wifi: mt76: Add mt76_dev pointer in mt76_queue struct.
a3b6c67c97d2 wifi: mt76: Add the capability to set TX token start ID
141a81557070 wifi: mt76: Introduce the NPU generic layer
647d11bb17e0 wifi: mt76: mt7996: Add NPU offload support to MT7996 driver
8ff3b2bfc37f wifi: mt76: mt7996: fix typos in comments
0043147439b4 wifi: mt76: mt7925: refactor regulatory domain handling to regd.[ch]
f0e8fe441489 wifi: mt76: mt7925: refactor CLC support check flow
588cc87bf6a2 wifi: mt76: mt7925: refactor regulatory notifier flow
dac1d45fe94b wifi: mt76: mt7925: improve EHT capability control in regulatory flow
c166c4a0e750 wifi: mt76: mt7925: add auto regdomain switch support
d7b059bba166 wifi: mt76: mt7925: disable auto regd changes after user set
84f62a6beb99 wifi: mt76: mmio_*_copy fix byte order and alignment
f5ae5b2e8116 Revert "wifi: mt76: mt792x: improve monitor interface handling"
8ae7e6dc1d3a wifi: mt76: adjust BSS conf pointer handling
1b438ebe0d06 wifi: mt76: mt7925: cqm rssi low/high event notify
7519fa4ce62c wifi: mt76: mt7996: fix max nss value when getting rx chainmask
ea0580ad065f wifi: mt76: mt7996: no need to wait ACK event for SDO command
74112c2956fb wifi: mt76: mt7996: fix implicit beamforming support for mt7992
361d6bdac45d wifi: mt76: mt7996: support fixed rate for link station
d99274cdc30c wifi: mt76: mt7996: fix several fields in mt7996_mcu_bss_basic_tlv()
ad90a85b652b wifi: mt76: mt7996: fix teardown command for an MLD peer
e9fe8bc03e41 wifi: mt76: mt7996: set link_valid field when initializing wcid
050394665502 wifi: mt76: mt7996: use correct link_id when filling TXD and TXP
5d223855552c wifi: mt76: mt7996: fix MLD group index assignment
ab8361dbc421 wifi: mt76: mt7996: fix MLO set key and group key issues
7ce7ab881b3f wifi: mt76: mt7996: fix using wrong phy to start in mt7996_mac_restart()
1e0c23ff754b wifi: mt76: mt7996: fix EMI rings for RRO
eb567bc7f9b6 wifi: mt76: mt7925: ensure the 6GHz A-MPDU density cap from the hardware.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-06 11:36:14 +00:00
Felix Fietkau
6bb30afe2f wpa_supplicant: pass control events on the per-interface ubus object
Events are passed in the same format as they would be sent on the control
socket.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-06 11:23:03 +00:00
Sven Eckelmann
4ed96e54cd realtek: dsa: Simplify rtl83xx_setup_qos
It is not necessary to have two different family_id checks directly after
another. It is simpler to just combine both into one.

Suggested-by: Álvaro Fernández Rojas <noltari@gmail.com>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20637
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-06 10:32:41 +01:00
Sven Eckelmann
78bf3a5f44 realtek: dsa: Fix rate control initialization
The rtl838x_rate_control_init() and rtl839x_rate_control_init() functions
were never called because the rtl83xx_setup_qos() always returned after the
QoS configuration

Fixes: dc9cc0d3e2 ("realtek: add QoS and rate control")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20637
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-06 10:31:55 +01:00
Christian Marangi
2703bdda02 openssl: rework CFLAGS handling on compilation
This mainly improve the CFLAGS handling on compilation of OpenSSL.

The CFLAGS are currently passed 2 times generating compilation warning
due to -fhonour-copts passed 2 times.

This can be improved by passing the CFLAGS as env to the OpenSSL
Configure tool.

For consistency we do the same for CPPFLAGS and LDFLAGS.

This permits to drop redundant flags in the Compile phase and from the
.conf file.

Link: https://github.com/openwrt/openwrt/pull/20665
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-06 10:12:05 +01:00
Scott Mercer
7670addb07 qualcommax: ipq5018: glinet-gl-b3000: fix dts nvmem macs
symtom: macs not properly incremented (all macs the same)
solution: set correct offset to mac location

Signed-off-by: Scott Mercer <TheRootEd24@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20664
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-05 21:21:41 +01:00
Eneas U de Queiroz
e495645135 cmake: set CMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
According to CMake documentation[1]:

  [CMAKE_FIND_ROOT_PATH] is a list of directories that contain the
  target environment.

  [CMAKE_FIND_ROOT_PATH_MODE_PROGRAM] sets the default behavior for the
  find_program command.

  In most cases, find_program is used to search for an executable which
  will then be executed, e.g. using execute_process or
  add_custom_command. So in most cases an executable from the build host
  is required, so setting CMAKE_FIND_ROOT_PATH_MODE_PROGRAM to NEVER is
  normally preferred.

Since CMAKE_FIND_ROOT_PATH is set to the target staging dir, and the
toolchain root dir, it will find target programs before the host ones.

An example of this problem is if you try to build antiblock from the
packages feed after llvm from the video feeds is built.  Antiblock will
search for clang-format, pickup the target version, and fail to build.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>

[1] https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html
Link: https://github.com/openwrt/openwrt/pull/20656

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-05 16:57:51 +01:00
Christian Marangi
ac7abe070a opkg: update to Git HEAD (2025-11-05)
ba73bc4672ec CMakeLists: update cmake minimum required version to 3.10
988399770af1 libbb: CMakeLists: update cmake minimum required version to 3.10
ce546f3ebff5 opkg: CMakeLists: update cmake minimum required version to 3.10
80503d94e356 libopkg: CMakeLists: update cmake minimum required version to 3.10

Fixes: #20659
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-05 16:47:32 +01:00
Daniel Golle
72ed72b984 uboot-envtools: handle U-Boot environment on the BPi-R4 Lite
The BPi-R4 Lite uses the same defaults like all other BananaPi boards
to store the bootloader environment on the boot media.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
8b6c6978d6 mediatek: add support for BananaPi BPi-R4 Lite
The BPi-R4 Lite is a WiFi-7 router board based on the MT7987 SoC.

Specification :
 - SOC: Mediatek MT7987A (4x Cortex-A53
 - RAM: 2GB
 - Flash: 32MB SPI NOR, 256MB SPI NAND, 8GB eMMC
 - Switch: MediaTek MT7531AE
 - Ports : 4x LAN (1G), 1x SFP (via MT7531), 1x WAN (2.5G)
 - Buttons : Reset & WPS/Mesh
 - LEDs : Status (PWM), SFP
 - USB: on-board VIA VL817 USB3.1/USB2.0 hub
    * 1 - mPCIe B (SIM3)
    * 2 - NGFF-KEYB (SIM1)
    * 3 - USB-A connector
    * 4 - mPCIe A (SIM4)
 - mPCIe: 1x 8GT/s x2 or 2x 8GT/s x1 (configurable via bootloader)
 - RTC: PCF8563
 - mikroBUS socket with SPI, I2C and full UART
 - on-board HT42B534 USB-to-serial for Type-C console port
 - Power: USB Type-C PD 20V, or DC via barrel connector or JST-VH 3.96

Installation:
Uncompress *sdcard.img.gz and write to microSD card, eg. using 'dd'.
Use bootloader menu on the serial console to install SPI-NAND or SPI-NOR,
once installed to SPI-NAND you can use the bootloader menu to install to
eMMC. See instructions for BananaPi R3 for details.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
3a71dd5871 uboot-mediatek: add support for the BananaPi BPi-R4 Lite
The BPi R4 Lite can boot from microSD, SPI-NAND, SPI-NOR and eMMC.
Build menu-driven U-Boot for each storage option.
Provide options for installation from microSD to SPI-NAND and SPI-NOR,
and from SPI-NAND to eMMC (similar to BPi-R3).

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
9de7189ed4 mediatek: build image for MT7987 RFB
Import and clean DT and DT-overlay files from MediaTek's SDK to build
an image with various DT-overlays for the MT7987 reference board.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
2595e31220 mediatek: improve MT7988 cpufreq driver and add support for MT7987
Import patches to use cpufreq voltage calibration data from the efuse on
MT7988, and add support for MT7987.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
edb5815d80 mediatek: port MT7987 thermal support
The MT7987 has two LVTS thermal sensors, one covering all CPU cores,
and one for the built-in 2.5GE PHY.
Add support for MT7987 to the LVTS thermal driver.
Thanks to Chad Monroe of Adtran for providing cleaned up patches for
Linux 6.6 which have been ported to Linux 6.12.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:40 +00:00
Daniel Golle
d62fc50ff4 mediatek: import patches from SDK to support MT7987 Ethernet
Compared to MT7988 (NETSYSv3) the Ethernet Frame Engine of MT7987
has been slighly updated (NETSYSv3.1), among other things the packet
scheduler (shaper) has apparently been reworked.
Import patches for basic support of the Ethernet Frame Engine of the
MT7987 SoC.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:39 +00:00
Daniel Golle
911a1145a5 mediatek: add basic support for the MT7987 SoC
The MT7987 is mostly a stripped-down low-pin-count version of the
MT7988 without the 10GBit/s SerDes. Most existing drivers can be reused.
Import to-be-sent-upstream patches doing all the groundwork for
basic support for the MT7987 SoC, adding clk, pinctrl and pwm support.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:39 +00:00
Daniel Golle
6d35edad6e uboot-mediatek: add builds for the MediaTek MT7987 reference board
Build the (upstream) configuration for the MT7987 reference board, and
enable support for DT-overlay application which will be necessary to
use the image for the MT7987 RFB generated in OpenWrt.
Adapt our downstream patches (generic reset button, rootdisk selection)
for MT7987 to prepare for real-world boards.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:39 +00:00
Daniel Golle
de8fc8b2f9 arm-trusted-firmware-mediatek: add builds for MT7987
Build TF-A for the MediaTek MT7987 SoC family.
Add necessary downstream patches in preparation for the BananaPi R4 Lite,
which connects both flash chips to SPI2 and got broken MMC bus.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:39 +00:00
Daniel Golle
a3b2a2e15d generic: mtdsplit: fit: improve detecting external-data FIT
Currently the detection of external-data FIT images works by checking
if the FIT structure is more than 4 kiB. However, for boards with lots
of different DT-overlays and configurations the FIT structure can
exceed 4 kiB which results in the FIT splitter to fail detecting the
rootfs.
Increase the threshold for external-data FIT to 512 kiB as there aren't
any kernel images smaller than that, and FIT structure less than 512 kiB
will always be an external-data FIT.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-05 14:19:39 +00:00
Kyle Hendry
f91e205286 bcm47xx: fix no previous prototype error
Make functions in b53 static and add kernel
patch to fix prototype build errors

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20653
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-05 08:39:07 +01:00
Pawel Dembicki
c686046625 layerscape: remove 6.6 kernel files
After switching to the 6.12 kernel, time to remove 6.6 support.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20614
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 23:19:28 +01:00
Pawel Dembicki
6942ca4121 layerscape: switch to Linux 6.12
Linux 6.12 has been validated on Layerscape platforms, including NXP
reference boards and multiple custom designs. Tests covered system
boot, networking, storage, and common peripherals, with no regressions
observed.

Enable 6.12 as the default to continue broader testing and integration.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20614
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 23:19:27 +01:00
Pawel Dembicki
7e4ba852b6 layerscape: configure PHY reset GPIO on LS1012A-FRDM
On the LS1012A-FRDM both PHY reset pins are tied to GPIO1_23.
Up to Linux 6.6, pinctrl did not touch this GPIO and the reset
line remained in the state set by U-Boot. Starting from 6.12,
the kernel requires explicit configuration of this pin, otherwise
the PHYs fail to be detected.

This adds a gpio-hog node to ensure the reset line stays asserted,
fixing PHY detection on boot.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20614
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 23:19:27 +01:00
Christian Marangi
2352de96c1 airoha: replace PWM patch with upstream version
Replace Airoha AN7581 PWM patch with upstream version and add kernel
version tag.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 20:40:15 +01:00
Florian Maurer
8faa9dedb4 ath11k: fix transmit queue flushing through flush_sta implementation
warning print "ath11k c000000.wifi: failed to flush transmit queue 0"
is observed during busy times.

The mac80211 fallback implementation of `flush_sta` does not handle the per STA queues well.
This is fixed by providing a ath11k specific implementation of flush_sta telling the firmware to flush a given station.
The draining of the transmit queues should therefore stop correctly, even if new packets arrive in the mean time.

An upstream ath11k RFC is available at:
https://patchwork.kernel.org/project/linux-wireless/patch/GV1P250MB14333A5BF24623C4753A10E1E8E0A@GV1P250MB1433.EURP250.PROD.OUTLOOK.COM/

The patch was tested on a Xiaomi AX3600.

Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Tested-by: Florian Maurer  <f.maurer@outlook.de>
Co-authored-by: Benjamin Berg <benjamin@sipsolutions.net>
Tested-by: Flole <flole@flole.de>
Link: https://github.com/openwrt/openwrt/pull/20293
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 20:12:06 +01:00
Christian Marangi
582cdd48c3 ipq806x: drop support for kernel 6.6
Drop support for kernel 6.6 as now kernel 6.12 is set as default kernel
version.

Link: https://github.com/openwrt/openwrt/pull/20644
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 19:31:07 +01:00
Christian Marangi
995f444f38 ipq806x: switch to kernel 6.12
Move the ipq806x target to kernel 6.12 by default as every kernel bump
problem has been handled.

Link: https://github.com/openwrt/openwrt/pull/20644
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 19:31:06 +01:00
Christian Marangi
60a71083ca ipq806x: 6.12: backport patch to handle CPUFreq with no SMEM
The Google OnHub doesn't init the SMEM in SBL causing the CPUFreq driver
to fail probe. This is caused by the fact that new CPUFreq driver makes
use of SMEM to identify the SoC variant and on Google OnHub this is not
available.

Backport patch to detect this state and fallback to compatible
matching fixing the CPUFreq driver.

Link: https://github.com/openwrt/openwrt/pull/20587
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 19:24:34 +01:00
Hannu Nyman
1b48ebd31c tools/cmake: update to 4.1.2
Update cmake to 4.1.2.
Note that cmake 4.x requires at least 3.5 as 'cmake_minimum_required'
in CMakeLists.txt of each app to be compiled.

Future cmake versions will increase that requirement to 3.10
https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:55 +01:00
Hannu Nyman
261275c72c libevent2: adjust for cmake 4.x compatibility
Patch CMakeLists.txt for cmake 4.x compatibility.
New cmake versions require at least 3.5 as 'cmake_minimum_required'
in CMakeLists.txt. In future 3.10 will be required.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:54 +01:00
Hannu Nyman
914eb430ed jansson: adjust for cmake 4.x compatibility
Patch CMakeLists.txt in selected apps for cmake 4.x compatibility.
New cmake versions require at least 3.5 as 'cmake_minimum_required'
in CMakeLists.txt. In future 3.10 will be required.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:54 +01:00
Hannu Nyman
5a8dffebe9 libjson-c: patch for cmake 4.x compatibility
Patch CMakeLists.txt in selected apps for cmake 4.x compatibility.
New cmake versions require at least 3.5 as 'cmake_minimum_required'
in CMakeLists.txt. In future 3.10 will be required.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:53 +01:00
Hannu Nyman
9bd2c55a33 treewide: edit local CMakeLists.txt to be compatible with cmake 4.x
Edit CMakeLists.txt to fulfill cmake 4.0 requirement that
cmake_minimum_required is now at least 3.5 and in future 3.10.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:53 +01:00
Hannu Nyman
3969335815 tools/liblzo: add cmake 4.x compatibility
Patch CMakeLists.txt to fulfill cmake 4.0 requirements
of cmake_minimum_required being at least 3.5 and in future 3.10.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20265
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-04 15:14:53 +01:00
Álvaro Fernández Rojas
dbbfe52568 odhcpd: update to Git HEAD (2025-11-04)
d44af6dd8f4e dhcpv6: create struct dhcpv6_lease
4df45c8c3722 dhcpv4: create struct dhcpv4_lease
a6dccae41b60 odhcpd: struct lease -> struct lease_cfg
fc0abb66f122 dhcpv4: use leasetime from a->lease
74eeff193848 router: always use link-local src address for RAs
b9a071b8341f router: Rewrite the ingress MTU to one configured for the interface
1ef9e0e610d5 router: utilize interface ra_mtu for RA
1480c09ee0aa config: clamp ra_mtu to interface MTU, and default ra_mtu to interface MTU
ee4f0df6bd68 netlink: Store interface MTU at link change
d174e25e85a1 github: fix CI apt dependencies
8f393d55a76e odhcpd: more fixes for IID calculations

fc27940fe9...d44af6dd8f

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-04 12:38:03 +01:00
Álvaro Fernández Rojas
7702ff293f odhcp6c: update to Git HEAD (2025-11-04)
b3e1db42b4db odhcp6c: fix safe interval processing to follow RFC 4862
63461f64d4c1 dhcpv6: always include IA_NA and IA_PD in Request message if requested
1051cabb4da3 dhcpv6: fix incorrect IA type being printed in syslog
c5237eabeb5c odhcp6c: prevent RELEASE at shutdown when -k is set
a01b1ff1e50f odhcp6c: fix client exiting if Renew and Rebind fails
4839bf6d0feb odhcp6c: implement RKAP: Reconfiguration Key Authentication Protocol
52a9a847def4 dhcpv6: fix solicit loop when server has no address available
7b1f67c23de6 ubus: implement ubus methods to force a Renew and Release
2b0e8f2d8541 ubus: implement retransmission configuration via ubus
8d89d373f360 odhcp6c: add failure when -E option is used without ubus support enabled
58f3c9eb1163 odhcp6c: add new argument option to disable script call
1048fc4fb622 reconfigure: move all configuration functions to a new file
93f056d3a1f2 reconfigure: implement DHCP reconfiguration
af669fb23cd3 dhcpv6: implement statistics for DHCPv6
3a1a599fecb7 ubus: implement UBus method to get state data immediately
44c50214997d ubus: emit UBus event on DHCP state changes
33b972bc526a ubus: connect to UBus backend
2f609f248faf odhcp6c: implement asynchronous handling for DHCPv6 State
6466314e7f62 odhcp6c: enable Non-Blocking DHCPv6 Socket
1df65f0caf46 dhcpv6: refactor dhcp_request Function
047c63a8156b dhcpv6: add t1 and t2 transmission
1b5f0c402bbf dscp: add option to set dscp value
96017df54d8f dhcpv6: fix wrong retransmission of DHCPv6 Solicit
b929fc8a1cfd odhcp6c: add a simple build script
adc651ffed55 cmake: make libubox mandatory
5182e2b696ef cmake: drop EXT_PREFIX_CLASS
8d052c52e18d cmake: disable pedantic
f2521b296b21 github: fix CI apt dependencies

77e1ae21e6...b3e1db42b4

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-11-04 10:26:23 +01:00
Florian Eckert
32c46b569f odhcp6c: add new option to start 4in6 protos as dynamic interface
If proto 'dhcpv6' is set for an interface, dynamic interfaces are created
for the protocols map, dslite or 464xlat if this netifd protocols are
installed and the interface option is not explicitly set to '0'.

The problem is that this option cannot be configured via LuCI, which means
that the dynamic protocols are started. In my case, that is the '464xlat'
'6in4' protocol. I see the follwing log messages continuously in the log as
I do not have a '464xlat' in my network.

Fri Aug 22 10:36:33 2025 daemon.notice netifd: Interface 'wan6_4' is now down
Fri Aug 22 10:36:33 2025 daemon.notice netifd: Interface 'wan6_4' is setting up now
Fri Aug 22 10:36:36 2025 daemon.notice netifd: Interface 'wan6_4' is now down
Fri Aug 22 10:36:36 2025 daemon.notice netifd: Interface 'wan6_4' is setting up now

To fix this by adding a new option to disable the dynamic interface creation
for '4in6' if needed. The option is named '4in6_dynamic' and is a boolean.

If the new option is 'true' (default) dynamic interfaces are create.
If the new option set to 'false' no dynamic 4in6 interface are created.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-11-03 12:06:18 +01:00
Florian Eckert
73e21749ba odhcp6c: cleanup variable definitions
The variable definitions are very confusing. Therefore, this commit groups
them together so that the line length is not exceeded.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-11-03 12:06:18 +01:00
Florian Eckert
b0d1a6aa38 odhcp6c: use && in if statement on dynamic interfaces
It es recommended to use '&&' to improve readability on 'if' statement.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-11-03 12:02:58 +01:00
Mateusz Poliwczak
38a0d6b1fd odhcp6c: add mtu_dslite option for dhcpv6 proto
This allow configuring the MTU of the ds-lite tunnel.

Updates #8190

Signed-off-by: Mateusz Poliwczak <mpoliwczak34@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20606
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-03 11:22:13 +01:00
Jan Hoffmann
10504e0c6b realtek: add support for Zyxel XGS1010-12 A1
This device is very similar to the already supported XGS1210-12 A1. For
now, only revision A1 is supported (not marked on the label).

Hardware:
- RTL9302B SoC
- 16 MiB NOR flash
- 128 MiB DDR3 SDRAM
- 8x 1G RJ45 (RTL8218D)
- 2x 2.5G RJ45 (2x RTL8226)
- 2x SFP+ (supporting 1G/2.5G/10G)
- 3.3V UART serial (115200 baud 8N1) on the right side of the case
  (from bottom to top: GND, RX, TX, VCC)

It is originally an unmanaged switch, so there are a few differences:
- No reset button
- Different partition layout: There is some reserved space in the middle
  of the flash which might be used by the bootloader for flash testing.
  The remaining space in between is used for OpenWrt using mtd-concat.
  The largest contiguous area is at the beginning, allowing a maximum
  kernel size of 7 MiB.
- No individual MAC address: This device ships with an empty U-Boot
  environment. When an OpenWrt squashfs image is booted for the first
  time, a random MAC address will be written to the environment (but
  only if the environment has been initialized from the bootloader
  before and contains the default MAC address).

Steps to boot initramfs image via network:
- Configure a TFTP server to provide the OpenWrt initramfs image
- Connect to device using serial (see hardware information above)
- Power on the device and enter U-Boot using Esc when prompted
- Run the following commands (adjust as necessary):
  # rtk network on
  # tftpboot 0x84f00000 192.168.1.100:openwrt-xgs1010-initramfs.bin
  # bootm

Installation on flash:
- Boot initramfs image as described above
- Now is a good time to create a backup of all flash partitions! You'll
  need this if you want to revert to the unmanaged factory firmware at
  some point.
- Use sysupgrade to install OpenWrt
- After restart enter U-Boot again and set the boot command:
  # setenv bootcmd 'rtk network on; bootm 0xb4900000'
  # saveenv
  # run bootcmd
  Note: The command "rtk network on" is only needed because the drivers
  currently rely on some setup by the bootloader (without this the RJ45
  ports don't work). If the drivers improve in the future, it should be
  removed (i.e. change the boot command to "bootm 0xb4900000").

Reverting to factory firmware:
- Write back your backup of the firmware partition (or write just the
  fwconcat1 partition, and erase the other two fwconcat partitions)
- Change the boot command back to "boota" (or just erase the u-boot-env
  partition so the default gets used)

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/20469
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-03 11:07:20 +01:00
Jan Hoffmann
67b687af91 realtek: restructure Zyxel XGS1210-12 device tree files
This is a preparation for adding support for XGS1010-12, which is almost
identical to XGS1210-12, with some small differences (partition layout,
missing reset key).

In addition to moving the common parts to a new file, also simplify the
definition of the 2.5G PHYs to reduce duplication. With this change, the
revision-specific files only have to specify the SMI addresses.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/20469
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-03 11:07:20 +01:00
Jonas Jelonek
3570dee5f0 realtek: dsa: remove sds_num entirely
After having moved RTL93XX SerDes configuration from PHY to PCS driver,
the DSA driver doesn't need to know about SerDes explicitly anymore.

Although RTL83XX SerDes is still partly managed within the DSA driver,
it doesn't make use of the sds_num property/field. RTL93XX was the only
user of this right now.

Thus, we can just remove the remaining 'sds_num' code which doesn't
serve any purpose anymore.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:10 +01:00
Jonas Jelonek
447415b167 realtek: dsa: remove 'RTL93XX SerDes as PHY' leftovers
RTL93XX SerDes is entirely managed through the PCS driver and not
treated as PHYs anymore. Thus, remove the leftovers from the DSA driver.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:10 +01:00
Jonas Jelonek
f578ed0dc9 realtek: phy: rtl930x: drop SerDes code
Drop the now unused SerDes code for RTL930X from rtl83xx-phy driver as
the SerDes is completely managed by the PCS driver.

This marks a breaking point because RTL930X SerDes is no longer treated
as a regular PHY device.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:10 +01:00
Jonas Jelonek
623180a422 realtek: rtl93xx: remove pseudo-PHYs and phy-handle from SFP ports
RTL93XX reached the point where the SerDes' are no longer treated as
regular PHYs. Instead, they are managed by the dedicated PCS driver.
Thus, all device tree definitions should follow this change.

Remove the pseudo-PHYs for the SerDes (so far usually defined with macro
INTERNAL_PHY) and corresponding 'phy-handle's from all SFP ports. This
removes a long-lasting confusion from our Realtek driver(s).

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:10 +01:00
Jonas Jelonek
ed240e3cc2 realtek: dsa: allow to drop phy-handle on switch ports
When Realtek SerDes is completely handled by PCS, it is not treated as
a regular PHY anymore. Thus, we should be able to drop the currently
used pseudo-PHYs and phy-handles for ports which just use the SerDes as
PCS but have no PHY attached.

Allow to drop the phy-handle from switch port definitions if there is a
pcs-handle defined by relaxing several checks in the DSA driver.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:09 +01:00
Jonas Jelonek
c447ba0a83 realtek: dsa: handle error returned by PCS
Check for and handle an error which may be returned by rtpcs_create in
various cases.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20577
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:32:09 +01:00
Sven Eckelmann
87c76704d2 realtek: dsa,pcs: rtl930x: Disable SerDes patching for 10G-QXGMII
The code to add bootstrapping for 10G-QXGMII on RTL930X broke the only
devices which are using 10G-QXGMII on RTL930X (Plasma Cloud PSX8+PSX10) in
OpenWrt. It is currently unknown what other changes are pending to get this
correctly working. But both the `rtpcs_930x_sds_usxgmii_config()` call and
the write of the "magic" SerDes values in the patching process break the
SerDes connected to the RTL8224 PHYs.

The Plasma Cloud PSX8+PSX10 devices get their RTL8224 and the 10G-QXGMII
SerDes bootstrapped directly by u-boot.

Fixes: dca20f91ea ("realtek: add serdes patch for 10G_QXGMII")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20588
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-02 16:31:30 +01:00
Daniel Golle
1cb347579a bcm27xx: package kmod-drm-v3d
Package driver for Broadcom V3D 3.x or newer GPUs.
SoCs supported include the BCM2711, BCM7268 and BCM7278.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-02 12:53:29 +00:00
Daniel Golle
71a009f6b6 kernel: package kmod-drm-shmem-helper and kmod-drm-sched
Package (hidden) DRM helper modules which are being used by some GPU
drivers.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-11-02 12:53:29 +00:00
Eric Fahlgren
3b21f97641 scripts/make-index-json: ensure that manifest output is in opkg format
Certain existing tooling, such as 'package-metadata.pl', are written
to accept the output of 'opkg list' with package manifest delimited
by '-'.  The 'make-index-json.py --manifest' output was emulating
the 'apk list --manifest' format without the delimiting dash,
thus breaking these legacy tools.

We fix this by adding the dash to the manifest output, which allows
all existing tooling to process the output irrespective of whether
the build system uses opkg or apk.

Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20094
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-01 19:42:20 +01:00
Christoph Krapp
3156d72cbf ipq806x: fix sorting in base-files
Align the sorting of cases with other targets.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20603
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-01 19:39:18 +01:00
Christoph Krapp
24e2c70ccc ipq806x: merge duplicated case in base-files
Merge identical case in base-files.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20603
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-01 19:39:18 +01:00
Christoph Krapp
2a8b899db8 ipq806x: remove trailing whitespaces in base-files
This removes the obsolete trailing whitespaces from all base-files cases
to be in line with other targets.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20603
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-01 19:39:18 +01:00
Steffen Förster
03644df111 ipq40xx: use NVMEM-on-UBI for ASUS Lyra and introduce label mac
Switch the mac lookup to NVMEM on UBI layout and add label-mac

Signed-off-by: Steffen Förster <nemesis@chemnitz.freifunk.net>
Link: https://github.com/openwrt/openwrt/pull/20612
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-01 19:31:15 +01:00
Felix Fietkau
e373a32a7c wpa_supplicant: use a timer to defer starting interfaces
This allows wpa_supplicant to process pending netlink socket messages
first. Without this change, there is a race condition where the newly
created interface processes netlink events from the removal of the
previous interface.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01:00
Felix Fietkau
3ab2f32006 wpa_supplicant: add support for issuing control socket commands via ubus
This makes it possible to have more flexible control over the supplicant
without having to install wpa_cli.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01:00
Felix Fietkau
0d189171e1 wpa_supplicant: move per-interface ubus object to ucode
Remove previous implementation

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01:00
Ayra Hikari
d44132e22f mediatek/filogic: fix Totolink X6000R sysupgrade failed
Fix Totolink X6000R image failing to upgrade via sysupgrade due to an
incorrect upgrade case. The fallback upgrade path used the NAND upgrade
routine, which caused the "layout volume not found" error on NOR flash
devices. By adding a specific case for this board, sysupgrade now uses
`default_do_upgrade`, which is compatible with the NOR flash layout.

Fixes: 7cd10ad
Signed-off-by: Ayra Hikari <ayrahikari@linuxmail.org>
2025-10-31 10:19:38 +00:00
Aleksander Jan Bajkowski
351deebb3f mediatek: mt7622: fix 2.5G WAN port on Netgear WAX206
Since 6b43a52171, the PHY is using interrupts instead of polling. It
turned out that the interrupt number is wrong and the WAN port doesn't
work. This commit fixes this bug.

Fixes: 6b43a52171 ("mediatek: mt7622: add the missing phy interrupt-parent for WAX206")
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
2025-10-31 09:58:28 +00:00
Qing W
6960d03f11 mediatek: Add support for Acer Predator Connect W6x Ubootmod
Product name: Acer Predator Connect W6x
Product link: https://www.acer.com/us-en/predator/networking/wi-fi/predator-connect-w6x/pdp/FF.G2TTA.001

* Specifications:

SOC: MT7986AV
RAM: 1024MB
Flash: 256 MB SPI NAND
Ports: 4 LAN (1G) & 1 WAN (2.5G)
WIFI: MT7976GN + MT7976AN
LED: 1, ws2812b controller

** This commit includes a fix for the GPIO pins for factory/reset and WPS. It was reversed and is now fixed.

* U-Boot Mod Openwrt Installation via UART:

Openwrt Stock Layout Commit: 6e04dccb7a
NOTE: Stock Openwrt is not necessary. You can go straight to ubootmod version of the firmware. However, it is recommended to follow stock layout instructions to backup NAND.

1. Configure TFTP server with IP 192.168.1.66. Copy `openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-initramfs-recovery.itb` to TFTP root and rename to `predator.bin`
2. Interrupt boot by pressing 0 on startup or select `U-Boot Console` in U-Boot Boot Menu.
3. Run setenv `serverip 192.168.1.66; setenv ipaddr 192.168.1.1; tftpboot 0x46000000 predator.bin; bootm` in uboot console.
4. Wait for boot complete on Openwrt initramfs env.
5. Transfer `openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-initramfs-recovery.itb`,
		`openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-squashfs-sysupgrade.itb`,
		`openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-bl31-uboot.fip`,
		`openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-preloader.bin` to router's /tmp/ directory.
6. run `ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5`
7. run `ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB`
8. run `ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB`
9. run `ubimkvol /dev/ubi0 -n 2 -N recovery -s 10MiB`
10. run `ubiupdatevol /dev/ubi0_2 /tmp/openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-initramfs-recovery.itb`
11. install kmod-mtd-rw via opkg or apk.
12. run `insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1`
13. run `mtd write /tmp/openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-preloader.bin bl2`
14. run `mtd write /tmp/openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-bl31-uboot.fip fip`
15. run `sysupgrade -n /tmp/openwrt-mediatek-filogic-acer_predator-w6x-ubootmod-squashfs-sysupgrade.itb`
16. reboot to ubootmod layout

MTD layout before ubootmod:
```
dev:    size   erasesize  name
mtd0: 00100000 00020000 "bl2"
mtd1: 00080000 00020000 "u-boot-env"
mtd2: 00200000 00020000 "factory"
mtd3: 00200000 00020000 "fip"
mtd4: 00020000 00020000 "prod"
mtd5: 00100000 00020000 "dual"
mtd6: 00100000 00020000 "pot"
mtd7: 06400000 00020000 "ubi"
mtd8: 06400000 00020000 "ubi1"
mtd9: 00800000 00020000 "storage"
```

MTD layout after ubootmod:
```
dev:    size   erasesize  name
mtd0: 00100000 00020000 "bl2"
mtd1: 00080000 00020000 "u-boot-env"
mtd2: 00200000 00020000 "factory"
mtd3: 00200000 00020000 "fip"
mtd4: 00020000 00020000 "prod"
mtd5: 0d200000 00020000 "ubi"
```

Signed-off-by: Qing W <ses1er@gmail.com>
2025-10-31 09:40:07 +00:00
Stijn Segers
8067fd5292 uboot-tools: relabel Zyxel devices
Commits d205878ede and 46cf10771a relabeled the supported Zyxel devices
from v1/v2 to A1/B1, but board setup files were overlooked.

Fixes: d205878ede ("rtl838x: rename GS1900 series v1/v2 to A1/B1")
Fixes: 46cf10771a ("rtl839x: rename GS1900 series v1/v2 to A1/B1")
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20590
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-31 10:33:43 +01:00
Stijn Segers
c361c1e1b1 realtek: fix Zyxel relabel
Commits d205878ede and 46cf10771a relabeled the supported Zyxel devices
from v1/v2 to A1/B1, but board setup files were overlooked.

Fixes: d205878ede ("rtl838x: rename GS1900 series v1/v2 to A1/B1")
Fixes: 46cf10771a ("rtl839x: rename GS1900 series v1/v2 to A1/B1")
Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20590
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-31 10:33:42 +01:00
Kenneth Kasilag
130306fab9 airoha: support openwrt,netdev-name for renaming interfaces
Add support to the airoha target for the OpenWrt-specific DT property
`openwrt,netdev-name`. In particular, this is for interfaces under
non-DSA `airoha_eth` interfaces.

This will avoid conflicts with upstream code[1]; and maintain forward
compatibility with OpenWrt configurations if/when `airoha_eth` becomes
a full DSA driver.

[1] https://lore.kernel.org/netdev/20240709124503.pubki5nwjfbedhhy@skbuf/

Borrowed from d4d6c48 (mediatek: filogic: support openwrt,netdev-name for renaming interfaces)

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/20475
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-29 22:01:23 +01:00
Christoph Krapp
120b70a6e2 ipq40xx: add support for ASUS Lyra Mini (MAP-AC1300)
The device is the little brother of the already supported ASUS Lyra but
with the flash configuration/layout of the RT-AC58U.

Hardware
--------
SOC:    Qualcomm IPQ4019
FLASH:  2MB (Macronix MX25L1606E)
        128MB (GigaDevice GD5F1GQ4UCYIG)
RAM:    256MB (Nanya NT5CC128M16IP-DI)
WIFI:   Qualcomm IPQ4019
BT:     Atheros AR3012-BL3D
ETH:    1x WAN, 1x LAN
LED:    1 RBG LED
BTN:    WPS, Reset
UART:   115200 8N1 (square pin = VCC) VCC-TX-RX-GND

MAC addresses
-------------
LAN     2.4G + 1
WAN     2.4G + 3
2.4G    Label MAC (stored in factory offset 0x1006)
5G      2.4G + 2 (stored in factory offset 0x5006)

Installation
------------
SSH
---
1. Reset the device, setup and enable SSH.
2. Transfer initramfs.itb to /tmp on the device.
3. SSH into the router, credentials are the same as in the web ui.
4. Write initramfs to linux partition:
   mtd-write -d linux -i initramfs.itb
5. Reboot and wait for OpenWrt to boot.
6. Transfer sysupgrade.bin to /tmp on the device.
7. SSH into the router, user root, no pw.
8. Delete jffs2 ubi partition:
   ubirmvol /dev/ubi0 --name=jffs2
9. Flash OpenWrt:
   sysupgrade -n sysupgrade.bin

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20573
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-29 21:57:11 +01:00
Christian Marangi
b915eba9a9 Revert "sdk: use git-src-full to allow Git versioning"
This reverts commit f795ecc0dd.

Now that AUTORELEASE has been dropped from main, we can go back on
shallow clone it for faster SDK usage.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:57 +01:00
Christian Marangi
a0b82434ab rules.mk: add DEPRECATION NOTICE for AUTORELEASE
Add DEPRECATION NOTICE for AUTORELEASE to signal that any usage of this
should be dropped and fixed.

The macro is still defined for legacy reason but we at least dropped any
usage of it in both main and feeds.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:57 +01:00
Christian Marangi
af22235b79 uboot-bcm53xx: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:57 +01:00
Christian Marangi
b9c755c838 uboot-bmips: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:56 +01:00
Christian Marangi
afb83c8197 unetmsg: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:56 +01:00
Christian Marangi
6a88ab5685 provision: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:55 +01:00
Christian Marangi
736494deec cli: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:55 +01:00
Christian Marangi
be3722d86b ucode-mod-uline: drop usage of AUTORELEASE
AUTORELEASE has been deprecated from a long time. Drop it and hardcode
the release following the current one present in the downloads
repository.

Link: https://github.com/openwrt/openwrt/pull/20586
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 21:09:55 +01:00
Richard Huynh
2b773bddeb kernel: rtl8261n: Add support for Serdes RX swap
Datasheet claims this register bit is supposed to be set by default,
however it was found in practice to not be, and OEM drivers would set
this bit at the same time.

Signed-off-by: Richard Huynh <voxlympha@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20465
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 19:37:18 +01:00
Richard Huynh
bd180e8905 kernel: rtl8261n: Correct serdes global config register
Fix typo in register for the serdes global config.

Fixes: ddb0cd276c ("kernel: rtl8261n: add support for Serdes TX swap")
Signed-off-by: Richard Huynh <voxlympha@gmail.com>
[ add commit description ]
Link: https://github.com/openwrt/openwrt/pull/20465
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 19:37:17 +01:00
Christian Marangi
83eacb6ab0 airoha: backport minor fixes for NPU handling
Backport upstream minor fixed for NPU handling that might result in
kernel panic or handle leak.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 15:15:53 +01:00
Lorenzo Bianconi
738eacb9a0 airoha: Add missing board files for EN7581
Add missing leds and network board files for EN7581 SoC.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ drop reference to downstream 10g RFB board ]
Link: https://github.com/openwrt/openwrt/pull/20556
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 14:53:19 +01:00
Ziyang Huang
fed2d31343 airoha: adjust and default the loadaddr
Similar to e92b153e99 ("mediatek: introduce KERNEL_LOADADDR to Device/Default template"),
let's move the default loadaddr to Device/Default.

What's more, use 0x80200000 instead of the SDK default value 0x80088000
to avoid the following error which may overwrite TZ memory and cause crash:

    [    0.000000] [Firmware Bug]: Kernel image misaligned at boot, please fix your bootloader!
    [    0.000000] OF: reserved mem: Reserved memory: failed to reserve memory for node 'atf@80000000': base 0x0000000080000000, size 2 MiB

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
[ fix spelling mistake ]
Link: https://github.com/openwrt/openwrt/pull/20470
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-29 14:48:00 +01:00
Hauke Mehrtens
677c5c3b0d Revert "elfutils: add compatibility with new fortify-headers"
This reverts commit 096739a93d.

The new fortify-headers version needs some more work to be usable in
OpenWrt. Revert this to fix the builds again.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-28 21:59:46 +01:00
Hauke Mehrtens
fbe2ad6c60 Revert "toolchain: fortify-headers: Update to version 2.3.3"
This reverts commit 6268692bd2.

The new fortify-headers version needs some more work to be usable in
OpenWrt. Revert this to fix the builds again.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-28 21:59:42 +01:00
Hauke Mehrtens
ab221cfcd9 Revert "toolchain: fortify-headers: Fix build of some packages"
This reverts commit 61f16a6960.

The new fortify-headers version needs some more work to be usable in
OpenWrt. Revert this to fix the builds again.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-28 21:59:39 +01:00
Christian Marangi
6d51c80424 airoha: an7581: enable USB node on eMMC RFB board
Enable USB node on eMMC RFB board and disable USB2 3.0 port to make the
3rd PCIe line correctly work.

This is needed to prevent the xHCI driver to mess with PCIe by
configuring the USB2 3.0 port. Port will still be detected but won't be
configureed by the driver and won't have PHY to configure for.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-28 13:19:24 +01:00
Christian Marangi
3ba92e0e32 airoha: an7581: correctly attach the USB2 PHY for 3rd PCIe line
The 3rd PCIe line use the USB2 serdes for PCIe operation. Correctly set
it to the DT node so that the mode can be correctly set in the PHY
driver.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-28 13:17:38 +01:00
Christian Marangi
3db72b71d1 airoha: an7581: add USB nodes
Add USB nodes to AN7581 DTSI, disabled by default.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-28 13:16:18 +01:00
Christian Marangi
7afc2da3fc airoha: add pending patch for USB support on AN7581
Add pending patch for USB support on AN7581 SoC. This is also required
to make operational the 3rd PCIe line that use the USB2 Serdes for PCIe
operations.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-28 13:14:56 +01:00
Felix Baumann
93ba35fa7d realtek: rtl838x: fix regression in enable_phy_polling
Fix regression from back when support for RTL930x was added.
While at it replace 0x8000 by BIT(15).

Fixes: 27029277f9

Tested-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20549
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-28 10:11:32 +01:00
Leon M. Busch-George
66e5e9671f wifi-scripts: ucode: fix check for empty crypto object while scanning
it can be empty

Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
Link: https://github.com/openwrt/openwrt/pull/20526
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 14:22:58 +01:00
Jonas Jelonek
017fc35b52 realtek: dsa,pcs: rtl930x: let PCS driver setup SerDes
Remove SerDes initialization/configuration calls from the DSA driver in
'rtl93xx_phylink_mac_config' and let our PCS driver setup the SerDes now
that the driver is able to do that.

Adjust some details in rtl93xx_phylink_mac_config to ensure the MAC is
properly disabled MAC before configuring the SerDes. This was done
within the SerDes code before.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20539
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 13:03:46 +01:00
Jonas Jelonek
d877600aef realtek: pcs: rtl930x: use regmap for register access
Use regmap to access registers in the global register space so we don't
have to use the old macros sw_r32/sw_w32 anymore.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20539
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 13:03:46 +01:00
Jonas Jelonek
9e0cba597a realtek: pcs: rtl930x: import SerDes setup code from PHY driver
Import SerDes configuration code from PHY driver into the PCS driver.
Only do mandatory adjustments, rename the function to adhere to the
naming scheme, adjust all SerDes access calls.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20539
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 13:03:46 +01:00
Christoph Krapp
89f3c51e88 ipq40xx: fix sysupgrade image for Netgear LBR20
This fixes the sysupgrade image generation for the LBR20 as before
updating resulted in a brick which needed to be recovered using
nmrpflash.

UART log of a bricked unit:
Loading DNI firmware for checking...
Loading firmware 1 ...

NAND read: device 0 offset 0xa600000, size 0x20000
 131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x380000
 3670016 bytes read: OK
rootfs imge header corrupted !
Loading firmware 2 ...

NAND read: device 0 offset 0xa600000, size 0x20000
 131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x380000
 3670016 bytes read: OK
rootfs imge header corrupted !

Comparing the partition contents of a bricked and a working unit showed
that on the bricked one the fake uImage header was missing. The UBI
partition also showed significant changes. Both are fixed when the
base DniImage receipt is used.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20558
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 12:42:01 +01:00
Christoph Krapp
aa0c78f898 ipq40xx: improve Netgear LBR20 LED config
This aligns the LED behaviour with other Orbi devices. Orbi devices have
multiple RBG LEDs at the top of the device and two status LEDs at the
back next to the barrel jack.
The current behaviour of other Orbi devices is to use the multi-color
LEDs at the top for status indication and the green/red LEDs at the back
for running/panic-indication. This matches the vendor behaviour except
the color choice.
Other devices use green as running, blue on upgrade, red on failsafe and
white on bootup, so this aligns the LBR20 behaviour to the rest.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20558
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 12:42:00 +01:00
Christoph Krapp
66169b19c7 ipq40xx: remove ethernet0 alias for Netgear LBR20
This will remove the ethernet0 alias and TODO as setting the LAN MAC via
nvmem to gmac0 will set the correct mac to the switch.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20558
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-27 12:42:00 +01:00
Christian Marangi
2fae199953 airoha: add nodes for 3rd PCIe line for AN7581
Some SoC might use the Serdes for the second USB port as a 3rd PCIe
line (with the SSTR register correctly setup).

Add the node for the 3rd PCIe card and enable for the eMMC RFB board.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-27 11:08:46 +01:00
Álvaro Fernández Rojas
3696241d3a odhcpd: update to Git HEAD (2025-10-26)
fc27940fe993 dhcpv6: support a configurable DUID
ae16476bcad2 dhcpv6-ia: split reconf_msg struct into partial structs
a3bf57a39958 dhcpv6: split clientid to a separate struct
14da3727ac0c dhcpv6-ia: simplify/fix IID calculations
f49574e42e78 odhcpd: change "-c" cmd line arg to take a dir
0900202c2754 dhcpv4: dhcpv4_lease() - clarify which variables are requests
2c1e6e7c3ebf dhcpv4: dhcpv4_lease() - simplification
48487aedead8 dhcpv4: dhcpv4_lease() - convert to switch statement
3ad54baa4adc dhcpv4: dhcpv4_assign() - explain address assignment
fab8f67818e6 dhcpv6: send timezone only when client requests

0d0fac3007...fc27940fe9

Fixes: 28bb40caaf ("odhcpd: update to Git HEAD (2025-10-22)")
Link: https://github.com/openwrt/openwrt/pull/20559
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-27 08:04:53 +01:00
Hannu Nyman
096739a93d elfutils: add compatibility with new fortify-headers
Add compatibility with the new fortify-headers 2.3.3 by
disabling two warnings.

Fixes: 6268692bd2 ("toolchain: fortify-headers: Update to version 2.3.3")
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/20552
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-27 00:49:39 +01:00
Hauke Mehrtens
61f16a6960 toolchain: fortify-headers: Fix build of some packages
Fix some warnings and compile errors generated by the new
fortify-headers when compiling some applications like strace.

Fixes: 6268692bd2 ("toolchain: fortify-headers: Update to version 2.3.3")
Link: https://github.com/openwrt/openwrt/pull/20561
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-27 00:47:43 +01:00
Hang Zhou
6de96914e5 bmips: fix leds on f@st3864op
gpio-leds were not working on F@ST3864OP before  was merged.

This pull request adds definitions for all LEDs, including the previously
non-working WAN LEDs.

Signed-off-by: Hang Zhou <929513338@qq.com>
Link: https://github.com/openwrt/openwrt/pull/20533
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-26 22:53:11 +01:00
Damien Dejean
ddd82c8b3d realtek: add 10G_QXGMII serdes mode support for RTL930x
In Realtek implementation USXGMII is divided in submodes:
 - USXGMII_SX: 10G single link, equivalent of PHY_INTERFACE_MODE_USXGMII
 - USXGMII_DX: 10G two links (2*5G ?),
 - USXGMII_QX: 10G four links, presumably 4*2.5G, used with the RTL8224,
   equivalent of PHY_INTERFACE_MODE_10G_QXGMII.

This CL adds the 10_GQXGMII modes to the RTL930x implementation. In
particular the "mode set" function is extended to support both simple
mode set, and force mode set depending on the mode according to
dal_longan_sds_mode_set [1].

[1] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_sds.c#L1746

Signed-off-by: Damien Dejean <dam.dejean@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20472
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-26 11:24:51 +01:00
Damien Dejean
dca20f91ea realtek: add serdes patch for 10G_QXGMII
Adds the serdes patch sequence [1] and configuration [2] for the
PHY_INTERFACE_MODE_10G_QXGMII mode (aka USXGMII_QX in Realtek sources).
It is required by devices with light bootloaders (ie not u-boot) that
does not initialize the hardware before booting the kernel.

[1] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_construct.c#L1075
[2] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_construct.c#L1315

Signed-off-by: Damien Dejean <dam.dejean@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20472
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-26 11:24:51 +01:00
Damien Dejean
d76b97bd71 realtek: add serdes mapping for rtl930x
On the RTL930x series the serdes #3 is backed by serdes #10 when pages
0, 1, 2 or 3 are accessed [1]. This changeset modifies the sds mapping
function from a single implementation for the 3 families to one
implementation per chip family. In particular it implements the mapping
required for the rtl930x one.

[1] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_sds.c#L624

Signed-off-by: Damien Dejean <dam.dejean@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20472
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-26 11:24:51 +01:00
Hauke Mehrtens
93f86627c4 build: Add _FORTIFY_SOURCE=3 support
Add support for _FORTIFY_SOURCE level 3.

This is supported with glibc and with musl libc.

Link: https://github.com/openwrt/openwrt/pull/20313
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-26 01:43:01 +02:00
Hauke Mehrtens
6268692bd2 toolchain: fortify-headers: Update to version 2.3.3
Update to recent fortify-headers version. This version also supports
_FORTIFY_SOURCE=3.

Changes: https://github.com/jvoisin/fortify-headers/compare/1.1...2.3.3

A patch similar to the removed one was applied upstream:
b40f6d8748

The root file system is getting a bit bigger.
Without this commit:
5250380 bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-rootfs.tar.gz
4919997 bin/targets/malta/be/openwrt-malta-be-default-rootfs.tar.gz
With this commit:
5263407 bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-rootfs.tar.gz
4930011 bin/targets/malta/be/openwrt-malta-be-default-rootfs.tar.gz

Link: https://github.com/openwrt/openwrt/pull/20313
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-26 01:41:06 +02:00
Hauke Mehrtens
3e6c3bf5a3 tools: b43-tools: Update to latest HEAD
Add the following changes:
```
12524df b43-asm: fix undefined behavior by using unsigned shift
fa9cb86 Merge pull request #9 from PolynomialDivision/unsinged-fix
5d592cb fwcutter: Fix compiler warning
b96318b dasm: Fix compiler warning
2270cee ssb_sprom: Fix _DEFAULT_SOURCE warning
4781cde ssb_sprom: Fix compiler warning
cce45e3 ssb_sprom: Update .gitignore
5ca416f disassembler: Update .gitignore
44673b6 Update .gitignore
0c8f8b6 assembler: Update .gitignore
1f5b63d fwcutter: Update .gitignore
35fe438 Add README.md
```

Link: https://github.com/openwrt/openwrt/pull/20542
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 22:35:37 +02:00
Hauke Mehrtens
363e07dfa2 uboot-sifiveu: fix build with swig 4.3.0
Fixes the following error by backporting upstream update:
```
scripts/dtc/pylibfdt/libfdt_wrap.c: In function ‘_wrap_fdt_next_node’:
scripts/dtc/pylibfdt/libfdt_wrap.c:5581:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’
 5581 |     resultobj = SWIG_Python_AppendOutput(resultobj, val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
```

This is the same fix as applied in 4e68103c4e ("uboot-rockchip: fix build with swig 4.3.0")

Link: https://github.com/openwrt/openwrt/pull/20538
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 22:33:53 +02:00
Hauke Mehrtens
cc410a18eb valgrind: Update to version 3.26.0
The following patches were removed:
 * 010-486180-Valgrind-MIPS-VexGuestArchState-has-no-member.patch [1]
 * 020-mips-skip-using-shared-syscall-numbers-for-mips32.patch [2]
 * 021-mips-skip-using-shared-syscall-numbers-for-mips64.patch [3]

The License changed from GPLv2 to GPLv3. [4]

RISCV64/Linux is supporterd since version 3.25.0.

[1]: https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=7214886886bce9029f325214156c02dcfff760d5
[2]: https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=54d6ad3348fb50f5b972fe9c05d0d8757bfe73ba
[3]: https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=efaa17e53a750d5f0f4c138b507b1b104729ed67
[4]: https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=3392155359822c0d4e8bb371862e92425054d02a

Link: https://github.com/openwrt/openwrt/pull/20537
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 22:32:15 +02:00
Jonas Jelonek
8026644020 realtek: fix SFP GPIOs for XikeStor SKS8310-8X
Fix the GPIO assignment of RX-LOS and TX-DISABLE for all SFP ports. Both
were actually swapped when adding support for the device. Apparently,
this didn't cause any issues.

Fixes: 62d50fb196
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20532
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-25 11:39:25 +02:00
Zxl hhyccc
8103b79776 kernel: bump 6.6 to 6.6.114
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.114

Removed upstreamed:
/target/linux/generic/backport-6.6/540-v6.12-ksmbd-browse-interfaces-list-on-FSCTL_QUERY_INTERFACE_INFO.patch

merged upstream with commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.114&id=499089376206f3f7f09d6852b3ec92f2674d24bb

All other patches automatically rebased.

Build system: bcm4908
Build system: bcm53xx

Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20434
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 01:14:51 +02:00
Zxl hhyccc
d1d8febc42 kernel: bump 6.6 to 6.6.113
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.113

Manually rebased:

/target/linux/generic/backport-6.6/540-v6.12-ksmbd-browse-interfaces-list-on-FSCTL_QUERY_INTERFACE_INFO.patch

Dropped patch

/target/linux/generic/backport-6.6/541-v6.18-ksmbd-add-max-ip-connections-parameter.patch

merged upstream with commit:  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=bc718d0bd87e372f7786c0239e340f3577ac94fa

All other patches automatically rebased.

Build system: bcm4908
Build system: bcm53xx

Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20434
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 01:14:11 +02:00
Zxl hhyccc
32062152a8 kernel: bump 6.6 to 6.6.112
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.112

All patches automatically rebased.

Build system: bcm4908
Build system: bcm53xx

Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20434
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 01:14:05 +02:00
Zxl hhyccc
70df331a8e kernel: bump 6.6 to 6.6.111
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.111

All patches automatically rebased.

Build system: bcm4908
Build system: bcm53xx

Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20434
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 01:11:37 +02:00
John Audia
48df382797 kernel: bump 6.12 to 6.12.55
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.55

Removed upstreamed:
	generic/backport-6.12/510-v6.18-ksmbd-fix-recursive-locking-in-RPC-handle-list-access.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.55&id=4602b8cee1481dbb896182e5cb1e8cf12910e9e7

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/20515
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-25 01:08:12 +02:00
Brian Norris
24d2ac6d3a ipq806x: chromium: Pull OnHub caldata directly from VPD
The OnHub bootloader tries to patch the calibration directly into the
device tree, but it uses constant paths that look like this:

  static const char *dt_path = "soc/pci@%8.8x/pcie@0/ath10k@0,0";

  https://chromium.googlesource.com/chromiumos/platform/depthcharge/+/refs/heads/firmware-storm-6315.B/src/board/storm/wifi_calibration.c#69

These paths have changed in recent kernels, so we need to adapte.

The CONFIG_GOOGLE_VPD kernel module (provided by kmod-google-firmware)
is present on OnHub, and provides alternative means to locate this
information, in /sys/firmware/vpd/ro/wifi_base64_calibration{0,1,2}. Use
that instead.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20477
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 20:57:25 +02:00
Christian Marangi
c3c75d0e68 airoha: backport fix for Airoha offload support with airoha_hw_init fail
Backport a patch fixing a kernel panic on airoha_hw_init fail. This
should better handle scenario with NPU load Probe deferring.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-24 12:17:46 +02:00
Christian Marangi
2f3ea18f91 airoha: backport cleanup patch for Airoha Ethernet driver
Backport cleanup patch for Airoha Ethernet patch to permit easier
backport in the future.

Automatically refresh all affected patch.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-24 12:17:46 +02:00
Christian Marangi
927fe598db airoha: add pending patch to fix Aeonsemi AS21xxx PHY
Add pending patch to make address some workaround needed to make the
Aeonsemi AS21xxx PHY working on the Airoha AN7581/AN7583 board.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-24 12:17:45 +02:00
Christian Marangi
26da4bf552 airoha: an7581: add Aeonsemi AS21xxx PHY to RFB eMMC board
Airoha AN7581 eMMC RFB board mount 2 Aeonsemi AS21xxx PHY. One is
usually connected to GDM4 and the other is optionally connected to GDM2.
Add the relevant nodes to support the one connected to GDM4.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-24 12:17:45 +02:00
Peter Meiser
87fa17a91e odhcp6c: change dhcpv6.sh config option "ifaceid" to "ip6ifaceid"
With this change, the interface identifier can be configured via LuCI.

Signed-off-by: Peter Meiser <peter.meiser@gmx.com>
Link: https://github.com/openwrt/openwrt/pull/19318
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 12:04:25 +02:00
Rosen Penev
d6d90566d1 ath79: engenius,eXXX: use nvmem
Userspace handling is deprecated.

Move calibration for pcie node out of dtsi. calibration size for ath10k
and ath9k differs.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16231
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 11:53:44 +02:00
Christoph Krapp
5983bc3136 ipq40xx: fix sorting in base-files
Align the sorting of cases with other targets.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20518
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 11:47:12 +02:00
Christoph Krapp
26d2485f54 ipq40xx: merge duplicated cases in base-files
Merge some identical cases in base-files.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20518
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 11:47:12 +02:00
Christoph Krapp
f53bbd54f8 ipq40xx: use tabs instead of spaces in base-files
This changes the use of spaces to tabs in all base-files to be in line
with other targets.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20518
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 11:47:12 +02:00
Christoph Krapp
324c5026d0 ipq40xx: remove trailing whitespaces in base-files
This removes the obsolete trailing whitespaces from all base-files cases
to be in line with other targets.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20518
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-24 11:47:12 +02:00
Christian Marangi
17cb69fe7f airoha: an7581: add BL2 and BL31+U-Boot Artifacts for RFB board
Pack the BL2 and BL31+U-Boot artifacts as Airoha AN7581 is currently
supported in upstream U-Boot and bootloader files can be used for
unfused boards.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-24 09:51:33 +02:00
John Audia
0211ecf682 linux-firmware: update to 20251021
% git log --no-merges --pretty=oneline --abbrev-commit 20251011...20251021
b0b775e5ad10 Revert "linux-firmware: update firmware for MT7922 WiFi device"
d06442f2b6f5 QCA: Update Bluetooth WCN6856 firmware 2.1.0-00653 to 2.1.0-00659
9440754a997a iwlwifi: add Bz/Fm and gl FW for core98-161 release
f2fbfd22d9d1 iwlwifi: update Bz/Hr and Bz/Gf firmwares for core98-161 release
dda8b9b09a1c iwlwifi: update ty/So/Ma firmwares for core98-161 release
822db3708dbc iwlwifi: update cc/Qu/QuZ firmwares for core98-161 release
edc9bbecf0fe intel: qat: Fix missing link
80bca4b3d75e amdgpu: DMCUB updates for various ASICs
7a1a266e22f1 nvidia: add generic bootloader for GSP-enabled systems
2121082a8884 linux-firmware: qcom: sync audioreach firmwares from v1.0.0 build
4ba7ff78711b qcom: vpu: rename firmware binaries
15cb201918e5 Intel IPU7: Update product signed firmware binary
10de40e2bb55 i915: Xe2LPD DMC v2.29
4bda88bd3a9f i915: Xe3LPD DMC v2.32
afae3516d1d8 i915: Xe3LPD_3002 DMC v2.27
bcce0efb5c4a WHENCE: nvidia: rearrange GSP-RM firmware lines
a96c15581a53 linux-firmware: Add ISH firmware file for Intel Pather Lake platform
55d8d2fa006b linux-firmware: Update firmware file for Intel Magnetar core
890cad9f8387 linux-firmware: Update firmware file for Intel BlazarU core
7bbab634ede0 linux-firmware: Update firmware file for Intel BlazarI core

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/20504
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-23 22:03:31 +02:00
Jonas Jelonek
c6f84b4377 realtek: phy: rtl931x: remove SerDes code from PHY driver
Since ddf94f7489 and 4a5de35dba, a SerDes is configured by the PCS
driver. All code from PHY and DSA related to this has been imported and
adjusted into the PCS driver. Thus, remove the unused code from the PHY
driver now.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20494
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-23 20:53:36 +02:00
Christian Marangi
5a42ed1138 image: move mkits.sh outside lock section
As mkits.sh only generates the relevant DTS for mkimage and is
specific for the building image, we can move it outside the locked
section as it doesn't do any operation that can be used concurrently by
others.

This won't have any real impact but clean the code making it clear what
needs to be protected and what can be executed concurrently.

Link: https://github.com/openwrt/openwrt/pull/20492
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 18:14:01 +02:00
Christian Marangi
c70894c855 scripts/mkits.sh: move out .pagesync generation for RootFS blob
It's expected the mkits.sh script to generate only the relevant DTS
entry and have all the blob already prepared to use for mkimage.

This is not the case for the RootFS case where the script generates a
.pagesync with the dd command.

To better handle this, drop the dd command and instead error out if the
.pagesync blob is not found if RootFS is used.

Adapt the generic fit build in image-commands.mk to call the dd for
.pagesync right before mkits.sh.

Link: https://github.com/openwrt/openwrt/pull/20492
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 18:14:01 +02:00
Christian Marangi
3de1bbd5ae image: fix race between mkits.sh and mkimage in .itb squashfs generation
With further investigation it was found a race in generating .itb images
that include a RootFS caused by the mkits.sh and the mkimage.

Due to the fact that mkits.sh generates a .pagesync image of the passed
rootfs, it can happen that, concurrently, mkimage can be called at the
same time mkits.sh is creating another .pagesync for the same rootfs.

This cause mkimage to use an half made rootfs.pagesync creating a
corrupted image.

To address this, also protect the mkimage with the same lock used for
mkits.sh preventing any kind of concurrent usage/generation of the
rootfs.pagesync blob

Fixes: 52cc9d82f1 ("kernel: rework Initramfs locking logic")
Link: https://github.com/openwrt/openwrt/pull/20492
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 18:14:00 +02:00
Christian Marangi
cdf891052d e2fsprogs: add pending patch that improve reproducibility
Add pending patch that disable libmagic support as this cause
reproducibility issue due to timing of presence of libmagic library at
times e2fsprogs gets compiled.

The new patch adds control on libmagic inclusion and we add the
--without-libmagic to the configure args by default.

Reported-by: Paul Spooren <mail@aparcar.org>
Link: https://github.com/openwrt/openwrt/pull/20499
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 17:02:46 +02:00
Christian Marangi
c700f8fd8a e2fsprogs: drop redundant patch for host build
Drop redundant patch for host build as this has been fixed in 1.44.1
but for some reason it wasn't notice with the patch directly refreshed
(with the fix right up)

Fixes: 198172c048 ("package/utils/e2fsprogs: update to 1.44.1")
Link: https://github.com/openwrt/openwrt/pull/20499
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 17:02:45 +02:00
Christian Marangi
8b4adfbb87 airoha: backport additional upstream patch for NPU support for AN7583
Backport additional patch required for NPU support of Airoha AN7583.
These are specific for the NPU module with some minor fixes and to adds
upport for loading the specific Airoha AN7583 NPU firmware.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 16:54:45 +02:00
Paul Donald
5a949cb5f9 odhcpd: set procd expected variable for odhcpd update script
Otherwise odhcpd logs:

```
odhcpd[14970]: Sent 113 bytes to xxx%lan@br-lan
BusyBox v1.37.0 (2025-10-10 09:07:48 UTC) multi-call binary.

Usage: basename FILE [SUFFIX] | -a FILE... | -s SUFFIX FILE...

Strip directory path and SUFFIX from FILE

        -a              All arguments are FILEs
        -s SUFFIX       Remove SUFFIX (implies -a)
odhcpd[14970]: Netlink newneigh xxx on lan
```

Apparently procd scripts expect initscript set.

h/t @Alphix for finding this.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20485
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-23 16:35:44 +02:00
Christian Marangi
8758b58f25 airoha: an7583: add NPU nodes and enable kernel config
Add relevant nodes for NPU support for Airoha AN7583 and enable the
kernel config to enable support in the Airoha Ethernet driver.

NPU firmware is scheduled to be upstreamed to linux-firmware and will be
added once present upstream.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 16:23:42 +02:00
Christian Marangi
a7964f0893 airoha: an7583: drop bootloader artifacts entry and add default pkg
Fix the current image Makefile for Airoha AN7583 by dropping the
artifacts entry for bootloader and add default PKG for the PHY mounted
on the RFB boards.

The artifacts for the bootloader will be readded later once ATF-A
support will be pushed mainline.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 15:42:21 +02:00
Christian Marangi
6fe65d404b airoha: an7583: Add missing DTS for EMMC RFB board
While adding support for Airoha AN7583, it was forget to push the EMMC
DTS while defining the variant in the image Makefile.

Add the missing DTS to fix image creation error.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 15:38:36 +02:00
Christian Marangi
ea850b5a18 airoha: an7583: add additional comments on EVB board
On the Airoha AN7583 EVB there are 2 Aeonsemi AS21xxx PHY but only the
one connected to Serdes Ethernet is usable as the other connected to
Serdes PON is not actually HW connected (as the serdes is connected to
the BOSA port)

Add comments and disable the relevant PHY.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-23 15:37:00 +02:00
Hal Martin
9089b716be ipq40xx: meraki: convert to nvmem for calibration
This commit changes the Meraki MR33 and MR74 device trees to use nvmem
for ART calibration.

The WiFi BDF was moved from insect-common.dtsi to the respective
device files in preparation for additional insect-family devices being added.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20474
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-23 13:14:15 +02:00
Álvaro Fernández Rojas
28bb40caaf odhcpd: update to Git HEAD (2025-10-22)
0d0fac30075f dhcpv4: bump problem scenario up to warn
bf6137092346 config: properly set log level from uci
7956f4271b4e dhcpv6: RFC4833 timezones
7000557cd8f6 dhcpv6-ia: respect prefix assigned to interface (>= /64)
e1e60601ffeb odhcpd: improve odhcpd_urandom()
c2eb4b59f107 config: fix erroneous clamp message if clamp value == max
54b9e729b00d dhcpv4: bail earlier on release/decline
417f4b11d352 dhcpv4: don't hardcode options array length
d63fa3c3612c dhcpv4: shrink struct dhcpv4_message
9653b43617e3 dhcpv4: use iovec for forcereconf messages, fix hash
bf41f4edfbe3 dhcpv4: fix padding of iovec message in dhcpv4_handle_msg()
be68f423c528 dhcpv4: some minor cleanups post-iovec
e24a371ef714 dhcpv4: use iovec for forcerenew opts
bd353e891ae6 dhcpv4: use iovec for router and DNS server
b81cfaa7859e dhcpv4: use iovec for DNS search and MTU
578a9289440b dhcpv4: use iovec for netmask/hostname/broadcast
5bafc17b79d8 dhcpv4: use iovec for leasetime/renew/rebind
b63448ffe447 dhcpv4: introduce a reply_opts array
0533eaea0a94 dhcpv4: use iovec for DNR
6329e37d595d dhcpv4: use iovec for NTP
87fee619205d dhcpv4: use iovec for message and serverid
2f97bf0b56de dhcpv4: reorder some more variables in dhcpv4_handle_msg()
18c1b02bdc20 dhcpv4: remove one more variable from dhcpv4_handle_msg()
6fd691ff29cd dhcpv4: move dest handling from dhcpv4_handle_msg()
1f803caf9a1f dhcpv4: don't copy reqopts around
b1be3984ebf8 dhcpv4: more refactoring of dhcpv4_handle_msg()
85717bedf8ce dhcpv4: clarify variable names in dhcpv4_handle_msg()
be864ccf9919 dhcpv4: some more cleanups to dhcpv4_handle_msg()
f87464520564 dhcpv4: preparations for iovec usage
f48e1c205af3 odhcdp: use a more suitable clock
7e78caac4eae dhcpv6: change dhcpv6 message type check in relay
288abd9c4046 dhcpv6: move dhcpv6 message type check for early exit
d504458ef515 odhcpd: add a simple build script
4ee309a54011 github: improve CI
ff3a241ccc98 odhcpd: shrink binary size by creating a logging function
e2ecf7ba6d72 odhcpd: support stderr logging
5de3b0d5b509 odhcpd: add log helpers
398d03a1a236 config: cap dhcpv6_pd_min_len to max instead of only logging error
4f54738d3ae7 config: clamp dhcpv6_hostid_len instead of only logging an error
465f19c9c2e3 config: clamp ra_mtu into 1280-65535 range
434b06133997 config: cap ra_retranstime and warn instead of only logging an error
e5f58a90a147 config: cap ra_hoplimit to maximum and warn instead of logging an error
208eb10307c1 config: cap ra_reachabletime to RFC maximum instead of logging error
93449f1513b4 config: drop double size lease times; they are all UINT32_MAX;
439c0ceab131 router: redefine ra_mininterval and ra_maxinterval as uint32_t
84b4dfe81363 config: clamp ra_mininterval, ra_maxinterval, ra_lifetime at load time
aa4f26232e05 router: refactor calc_ra_lifetime; redefine ra_lifetime as uint32_t
6ece28ffd475 config: do MaxRtrAdvInterval init at (ra_maxinterval) init time
dc03e02d973e router: Apply updated values from RFC9096 (updates RFC4861) to RA/ND
cc7766c12abe router: Apply updated values from RFC8319 (updates RFC4861) to RA/ND
964da13e758c config: refactor parse_leasetime() - branch amount remains same
9646c749467b github: fix CMAKE_SYSTEM_PROCESSOR copy&paste
288206c9a2ed github: add CI build
30780debd691 odhcpd: fix a compilation error
e0b2c3cf9476 odhcpd: allow assignments to be reassigned
01e5e311b0db odhcpd: support multiple per-client DUIDs
aebc647a6b7b odhcpd: support assignments on the basis of IAID
cc3ec9c20c61 odhcpd: support IAIDs for static DHCPv6 leases
e42c62725942 odhcpd: break up complex matching logic
e1123906a4bc odhcpd: document the ubus interface
c69200195263 dhcpv4: generate dbus events on lease expiry
dd7a2d474d0d dhcpv4: fix ubus events
22481d848e0d odhcpd: remove mac_len argument to ubus_bcast_dhcp_event()
d31d64efd56c odhcpd: fix ubus support flag in help msg
9bc1b4e26e10 odhcpd: reduce use of WITH_UBUS defines in code
d402cdae4316 ndp: fix macOS IPv6 compatibility by using link-local source addresses

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-23 08:03:37 +02:00
Álvaro Fernández Rojas
86c876d5b4 odhcp6c: update to Git HEAD (2025-10-21)
77e1ae21e67f odhcp6c: set server address from Information-request reply
e24ac1cf8c27 dhcpv6: use a per-interface IAID for IA_NA requests
053e6c4b3863 github: improve CI
b65ff293a969 dhcpv6: Check status code for IA_ADDR operations
3c7e425169e1 dhcpv6: Add error checking to handle renew failure for IA_PD operations
8de25373a860 dhcpv6: dhcpv6_parse_ia refactor to switch case
ca3cd525f447 odhcp6c: fix deamon raw buffer inc
d7afeea2b965 dhcpv6c: fix illegal DHCPV6_OPT_FQDN
70f7467db301 script: don't ignore RA with zero router lifetime
6ca1552cb3fe odhcp6c: sync and accumulate RA & DHCPv6 events as fast as possible
29b58cfb4711 odhcp6c: update cmake file
ee6d4a82bbeb github: add CI build

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-23 08:00:00 +02:00
Rosen Penev
3faa3a04bb ath79: enterasys,ws-ap3805i: use nvmem
Userspace handling is deprecated.

Use ath9k LED instead of specifying a generic one.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16286
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-23 00:04:47 +02:00
Rosen Penev
a10e957c56 ath79: enterasys,ws-ap3705i: use nvmem
Userspace handling is deprecated.

Use ath9k LED binding to avoid generic LED usage.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16286
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-23 00:04:47 +02:00
Tianling Shen
8a7de107d8 mediatek: add Konka KOMI A31 support
This board is also as known as E-Life ETR631-T/ETR635-U.

Hardware specification:
  SoC: MediaTek MT7981B 2x A53
  Flash: 128 MB SPI-NAND
  RAM: 256MB DDR3
  Ethernet: 4x 10/100/1000 Mbps
  Switch: MediaTek MT7531AE
  WiFi: MediaTek MT7976C
  Button: Reset, Mesh
  Power: DC 12V 1A

Gain telnet access:
1. Login into web interface, and download the configuration.
2. Uncompress the configuration:
     * Enter fakeroot if you are not login as root.
   tar -zxf <filename>.tar.gz
3. Edit 'etc/passwd', remove root password: 'root::1:0:99999:7:::'.
4. Edit 'etc/rc.local', insert telnetd command before 'exit 0':
   ( sleep 3s; telnetd; ) &
5. Repack the configuration:
   tar -zcf backup.tar.gz etc/
6. Upload new configuration via web interface, now you can connect to
   KOMI A31 via telnet.

Flash instructions:
1. Connect to KOMI A31, backup everything, especially 'Factory' part.
2. Write new BL2:
   mtd write openwrt-mediatek-filogic-konka_komi-a31-preloader.bin BL2
3. Write new FIP:
   mtd write openwrt-mediatek-filogic-konka_komi-a31-bl31-uboot.fip FIP
4. Set static IP on your PC:
   IP 192.168.1.254/24, GW 192.168.1.1
5. Serve OpenWrt initramfs image using TFTP server.
6. Cut off the power and re-engage, wait for TFTP recovery to complete.
7. After OpenWrt has booted, perform sysupgrade.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20357
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-23 00:00:04 +02:00
Stijn Segers
aa01ca3ec8 realtek: switch XGS1250-12 to rt-loader
Allows us a bit more headroom flash wise and access to more recent
compression algorithms.

Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20445
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-22 23:51:59 +02:00
John Audia
855f65d6d0 kernel: bump 6.12 to 6.12.54
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.54

Manually rebased:
	bcm27xx/patches-6.12/950-0018-arm64-setup-Fix-build-warning.patch

All other patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

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

Signed-off-by: John Audia <therealgraysky@proton.me>

Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic

Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20408
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-22 23:37:13 +02:00
Edoardo Pinci
d0e3320040 kernel: bump 6.12 to 6.12.53
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.53

Dropped patch
- /target/linux/generic/backport-6.12/541-v6.18-ksmbd-add-max-ip-connections-parameter.patch
merged upstream with commit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=8173dcfafe116adb08f8daf21c09c71ac5882d8f

Added backport
- target/linux/generic/backport-6.12/510-v6.18-ksmbd-fix-recursive-locking-in-RPC-handle-list-access.patch
cherry picked from 88f170814f

All other patches automatically rebased.

Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic

Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20408
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-22 23:35:45 +02:00
Edoardo Pinci
eee5035a52 kernel: bump 6.12 to 6.12.52
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.52

All patches automatically rebased.

Build system: x86/64
Build-tested: mediatek/filogic
Run-tested: mediatek/filogic

Signed-off-by: Edoardo Pinci <epinci@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20408
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-22 23:35:45 +02:00
Leo Barsky
c586558b55 qualcommbe: drop duplicated patches
Drop duplicaded patches:
0010-v6.14-net-phy-add-phy_inband_caps.patch
0011-v6.14-net-phylink-add-pcs_inband_caps-method.patch
in: generic/backport-6.12/
601-04-v6.14-net-phy-add-phy_inband_caps.patch
601-09-v6.14-net-phylink-add-pcs_inband_caps-method.patch
Fixes: 813ecda1f3

Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20503
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-22 20:16:59 +02:00
Thomas Richard
01e1c86f68 stm32: drop kernel 6.6 support
Drop config and patches for Linux 6.6.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/20468
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-22 14:56:15 +02:00
Thomas Richard
6529ac4a31 stm32: use kernel 6.12 by default
Switch to Linux kernel 6.12.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/20468
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-22 14:56:15 +02:00
Felix Fietkau
7e7977afb5 bridger: fix mirror download hash
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-22 13:42:58 +02:00
Christian Marangi
46a454fb9b airoha: backport upstream patch for AN7583 Ethernet support
Backport upstream patch for AN7583 Ethernet support. While at it also
backport some additional fixes required to apply the AN7583 patches
cleanly.

Refresh all affected patch automatically (aside from the XSI patch that
changed the implementation)

Link: https://github.com/openwrt/openwrt/pull/20489
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-22 12:31:21 +02:00
Christian Marangi
813ecda1f3 generic: backport phylink patches for PCS/PHY caps OPs
Backport phylink patches for PCS/PHY caps OPs. This makes it easier to
align future generic PCS patch and permit supporting special PHY that
needs specific tune if "in-band" mode is enabled (for example Aeonsemi
PHYs)

This is also mainly using the upstream version of the Mediatek patch
739-net-add-negotiation-of-in-band-capabilities.

All affected patch automatically refreshed.

Link: https://github.com/openwrt/openwrt/pull/20461
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-22 12:29:41 +02:00
Christoph Krapp
0636e89e10 ath79: add calibration variant for TP-Link Archer C60 v2
Now that we have a board file, add calibration variant for TP-Link
Archer C60 v2 and add ipq-wifi package for it.

Tested-by: Semih Baskan <strstgs@gmail.com>
Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20496
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-22 11:37:14 +02:00
Christoph Krapp
943c39d172 ipq-wifi: Add entry for TP-Link Archer C60 v2
Add IPQ Wifi entry for ath79 TP-Link Archer C60 v2.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20496
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-22 11:37:14 +02:00
Robert Marko
b2de62b4ed ipq-wifi: update to Git HEAD (2025-10-22)
c585e435c611 ipq6018: add jdcloud_re-cs-02 BDF
14aef623f3e5 qcn9074: add jdcloud_re-cs-02 BDF
ec6831a43ff0 qca9888: replace TP-Link Archer C60 v2 BDF

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-22 11:36:29 +02:00
Felix Fietkau
daf811064b bridger: update to Git HEAD (2025-10-21)
2d74a362c9c3 nl: always return NL_SKIP in bridge_nl_error_cb
c3ed437a72cf Revert "nl: add missing dump flag for RTM_GETTFILTER"
f67fc970b4e3 bridger: add VLAN state verification
e5b44387e0c5 bridger: add port state verification
f994af459375 bridger: reject tagged packets on non-member VLANs
e8d350f6ebe8 bridger: clear PVID when rebuilding VLAN list
50f43ce637a1 flow: add VLAN 0 fallback for local FDB entries
76fb17f2c6c7 device: verify PVID membership for untagged packets
d862c053fef1 flow: add egress VLAN membership verification
4dc5182c95a2 flow: reject flows on VLANs with tunnel information
a3b08aa510e1 flow: only refresh the input fdb entry of active flows
bf2c9636b51f nl: increase netlink socket buffer size
95125f0b0be5 flow: reject pending flows with mismatched fdb device

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-22 10:20:53 +02:00
Harshal Gohel
843e8a47e2 realtek: rtl930x: Disable L3 offloading
L3 Offloading caused DHCP packets to be dropped at hardware level
And potentially buggy route implementation can cause a crash

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20208
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-21 21:59:28 +02:00
Harshal Gohel
5faf91ab8d realtek: rtl931x: Disable callbacks for l3 hw routing
The RTL931x is not supporting L3 offloading at the moment. To avoid crashes
when using this switch, simply disable L3 offloading completely.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20208
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-21 21:59:28 +02:00
Eric Fahlgren
f5fd7ef888 targetwide: imagebuilder: add explicit guards around initramfs rules
Additional work building upon f6e0f57be0

Add more explict guards around the unsupported generation of the initramfs
images and suppress requirement for certain others.

Fixes: https://github.com/openwrt/openwrt/issues/20151
Fixes: https://github.com/openwrt/asu/issues/1499
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20460
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-21 11:38:18 +02:00
Felix Fietkau
d924a0cff8 hostapd: fix a use-after-free bug when interfaces are removed during a scan
Whenever the first bss is removed, any pending scan still keeps a reference
to it. Cancel it in order to prevent use-after-free bugs.

Reported-by: Chad Monroe <chad.monroe@adtran.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-21 10:24:16 +02:00
Felix Fietkau
4c50648f72 netifd: update to Git HEAD (2025-10-20)
df2f5c9a30f8 veth: delete device before creation to handle stale state
b6d371f30770 system-linux: handle RTM_DELLINK events for device state tracking
777f5942fa7d system-linux: only parse device status for AF_UNSPEC link messages

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-21 07:24:46 +02:00
Felix Fietkau
0408c5dfe6 kernel: port page pool release fix to 6.12
Port missing fix from 610dd871aa

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 21:12:55 +02:00
Felix Fietkau
13c30c2e58 mt76: update to Git HEAD (2025-10-20)
9050597c4cd6 wifi: mt76: fix license/copyright of util.h
33f29d2345cc wifi: mt76: relicense to BSD-3-Clause-Clear
fc25ba82192e add LICENSE file
c1349a686cd1 wifi: mt76: mt7921: fix a potential clc buffer length underflow
4e7077f77400 wifi: mt76: mt7996: fix FCS error flag check in RX descriptor
754e3357045d wifi: mt76: mt7996: Remove unnecessary link_id checks in mt7996_tx
2e63c495f59b wifi: mt76: connac: Replace memcpy + hard-coded size with strscpy
95c4df3233ed wifi: mt76: Fix DTS power-limits on little endian systems
6f27d647c0ce wifi: mt76: mt7915: add bf backoff limit table support
1e91eadc9d46 wifi: mt76: wed: use proper wed reference in mt76 wed driver callabacks
2fe5bdbe7e13 wifi: mt76: use GFP_DMA32 for page_pool buffer allocation
c63db0fcadb8 wifi: mt76: mt7915: add WDS support when WED is enabled

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 17:04:27 +02:00
Christian Marangi
330d17f52d build: handle --root feeds script feature
Rework the package SOURCE entry handling to account for the --root feeds
script feature.

Move the SOURCE entry string manipulation logic outside package-defaults.mk
in package.mk and limit only to non DUMP scenario to not pollute the .mk
too much.

Restructure the previous logic and add a new additional condition.
If we detect the package comes from a feed, replace any feed path that
have the _root prefix to the feed name with the non-root variant (the
feeds script create a symbolic link to it) and point the package SOURCE
entry to what the symbolic link points to.

Example:
Feed link: feeds/base_root/package -> feeds/base
Package: feeds/base_root/package/system/uci -> feeds/base/system/uci

Link: https://github.com/openwrt/openwrt/pull/20459
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-20 13:50:15 +02:00
Felix Fietkau
b91b99ec18 kernel: mtk_eth_soc: do use skb_gso_segment to handle tunnel GSO skbs
Fixes issues with routing/bridging packets to a VXLAN tunnel and other kinds
of encapsulation.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 12:51:43 +02:00
Felix Fietkau
a1f42ab3c7 wifi-scripts: ucode: add missing bssid for adhoc interfaces
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 10:50:01 +02:00
Felix Fietkau
6797cabb79 wifi-scripts: ucode: prefer basic rates from iface over device
Sync with the behavior from the legacy scripts

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 10:50:01 +02:00
Felix Fietkau
94fb40941b wifi-scripts: ucode: fix issues in mesh setup without supplicant
- Add missing frequency
- Call the correct function for htmode

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-20 10:50:01 +02:00
Mark Mentovai
fb366956c8 ipq806x: restore recent changes made to 6.6 dts files
a33d59f7af (2025-10-14) restored dts files for kernel 6.6 to files-6.6
after the preceding 15fa59c41f moved files-6.6 to files-6.12 to be
used by the new testing kernel, 6.12. This restoration omitted
1a3f05eb2b (2025-10-08), which fixed important aspects of the wifi
device definitions in qcom-ipq8064-eax500.dtsi and
qcom-ipq8064-unifi-ac-hd.dts.

The 1a3f05eb2b fix persisted into the 6.12 dts files. This change now
restores it for 6.6. Note that ipq806x is currently using kernel 6.6 for
most purposes, as 6.12 is only in testing status for this target.

This change was prepared with `git diff
a33d59f7af8f:target/linux/ipq806x/files-6.6
15fa59c41f0d^:target/linux/ipq806x/files-6.6`. This identified
c186d17fa5 (2025-10-08) as another change that was not present in the
restored files-6.6, but it has since been superseded by 2a709d108e
(2025-10-20), so no action is necessary to restore it. There were no
diffs present between these revisions in config-6.6 or patches-6.6,
which were also moved and restored in the 6.12 bring-up.

Signed-off-by: Mark Mentovai <mark@mentovai.com>
Cc: Shiji Yang <yangshiji66@outlook.com>
Cc: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20464
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-20 10:33:06 +02:00
Rosen Penev
df950f4cfd prereq: use staging_dir's compiler
Fixes compilation with missing OS GCC.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20350
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:55:06 +02:00
Chukun Pan
ab805ec316 generic: add missing squashfs config
SQUASHFS_DECOMP_MULTI_PERCPU is selected by
SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU, so add it.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Chukun Pan
001981ce1d sunxi: cortexa53: refresh kernel config
Refresh kernel configs with `make kernel_oldconfig CONFIG_TARGET=subtarget`.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Chukun Pan
920fa6f061 sunxi: enable pinctrl driver in subtarget
The pinctrl driver should be enabled based on the SoC supported
by the subtarget, rather than enabling all by default.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Chukun Pan
a54c511140 sunxi: 6.12: refresh common kernel config
Add the common kernel config found when 'make kernel_oldconfig'.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Chukun Pan
b6d59d21fd uboot-sunxi: remove earlyprintk for arm64
Remove earlyprintk from bootargs for arm64 boards.
This option is only valid for arm:

```
Unknown kernel command line parameters "earlyprintk",
will be passed to user space.
```

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Chukun Pan
f889f0de6d sunxi: use correct CPU erratum for Cortex-A53
The cortexa53 target currently uses cpu erratums for Cortex-A510,
Cortex-A710, and Neoverse-N2. Remove them and enable cpu erratums
for Cortex-A53.

Fixes: f01982e ("sunxi: add testing kernel 6.1")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20140
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:48:11 +02:00
Luis Mita
65215e6d46 ramips: mt76x8: add support for Cudy RE1200 Outdoor v1
Hardware:
 - SoC: MediaTek MT7628DAN
 - Flash: 8 MiB XMC 25QH64CHIQ
 - RAM: 64 MiB (integrated on SoC)
 - WLAN: 2.4 GHz (MT7603E, 11n), 5 GHz (MediaTek MT7613BEN, 11ac)
 - Ethernet: 1x10/100 Mbps LAN
 - Buttons: 1 Reset button, 1 WPS button
 - LEDs: 5x Green
 - Serial Console: unpopulated header 115200 8n1
 - Power: 24v Passive POE

MAC addresses:
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| LAN     | 80:af:ca:xx:xx:x0 | label     |
| WLAN 2g | 80:af:ca:xx:xx:x0 | label     |
| WLAN 5g | 80:af:ca:xx:xx:x2 | +2        |
+---------+-------------------+-----------+

Installation:
Please check the Wiki for this device for a more convenient solution than the one below.

1. Disassemble the device, desolder and dump the flash chip with a SPI programmer.
2. Separate the partitions with dd:

dd if=spi_dump.bin of=u-boot.bin     bs=1  skip=0        count=196608  status=progress
dd if=spi_dump.bin of=u-boot-env.bin bs=1  skip=196608   count=65536   status=progress
dd if=spi_dump.bin of=factory.bin    bs=1  skip=262144   count=65536   status=progress
dd if=spi_dump.bin of=firmware.bin   bs=1  skip=327680   count=7995392 status=progress
dd if=spi_dump.bin of=bdinfo.bin     bs=1  skip=8323072   count=65536   status=progress

3. Download the sysupgrade firmware at openwrt.bin.
4. The firmware size should be 7995392 bytes. Fix the size of your firmware putting zeros to the end, with:

truncate -s 7995392 firmware.bin

5. Combine all the parititions:

cat u-boot.bin u-boot-env.bin factory.bin openwrt.bin bdinfo.bin > spi_new.bin

6. Erase and flash the SPI chip with the new file. Solder the chip and boot the router.

Signed-off-by: Luis Mita <luis@luismita.com>
Link: https://github.com/openwrt/openwrt/pull/20381
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:42:28 +02:00
Aleksander Jan Bajkowski
1035615731 wifi-scripts: ucode: export HE and EHT operation in scan results
Export WiFi 6E (HE) and WiFi 7 (EHT) operation data in scan results.
These additional data can be useful to check wifi channel utilization
by nearby stations.

Example:
Cell 32 - Address: xx:xx:xx:xx:xx:xx
          Mode: Master  Frequency: 6.115 GHz  Band: 6 GHz  Channel: 33
          Signal: -14 dBm  Quality: 70/70
          Encryption: SAE (CCMP)
          HE Operation:
                Center Frequency 1: 39
                Center Frequency 2: 47
                Channel Width: 160 MHz
          EHT Operation:
                Center Frequency 1: 47
                Center Frequency 2: 63
                Channel Width: 320 MHz

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/19208
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:38:50 +02:00
Shiji Yang
c2e5bded8d treewide: dts: fix spi-gpio chip select GPIO polarity
The SPI chip select GPIO polarity is active low by default. We must
use "spi-cs-high" dts property to toggle the polarity. The polarity
on "cs-gpios" won't take effect at all[1]. Fix these incorrect GPIO
polarities to silence the kernel warnings.

[1] Refer to Linux/Documentation/devicetree/bindings/spi/spi-controller.yaml
```
      device node     | cs-gpio       | CS pin state active | Note
      ================+===============+=====================+=====
      spi-cs-high     | -             | H                   |
      -               | -             | L                   |
      spi-cs-high     | ACTIVE_HIGH   | H                   |
      -               | ACTIVE_HIGH   | L                   | 1
      spi-cs-high     | ACTIVE_LOW    | H                   | 2
      -               | ACTIVE_LOW    | L                   |

      Notes:
      1) Should print a warning about polarity inversion.
         Here it would be wise to avoid and define the gpio as
         ACTIVE_LOW.
      2) Should print a warning about polarity inversion
         because ACTIVE_LOW is overridden by spi-cs-high.
         Should be generally avoided and be replaced by
         spi-cs-high + ACTIVE_HIGH.
```

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Shiji Yang
b291e0ded4 qualcommax: dts: remove useless SPI cs-gpios property
There is no need to add a "cs-gpios" property if chip select pin is
directly controlled by the SPI host hardware.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Shiji Yang
2196089867 mediatek: dts: remove useless SPI cs-gpios property
These devices only have one SPI peripheral. And the chip select pin is
directly controlled by the SPI host hardware. Hence we don't need to
assign empty GPIO phandle for them. This patch also adjust the reg
address of the SPI peripheral node to follow the cs-gpios changes.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Shiji Yang
2a709d108e ipq806x: dts: fix SPI chip select GPIO polarity
The SPI chip select GPIO polarity is active low by default. We must
use "spi-cs-high" dts property to toggle the polarity. The polarity
on "cs-gpios" won't take effect at all[1]. Fix these incorrect GPIO
polarities to silence the kernel warnings.

[1] Refer to Linux/Documentation/devicetree/bindings/spi/spi-controller.yaml
```
      device node     | cs-gpio       | CS pin state active | Note
      ================+===============+=====================+=====
      spi-cs-high     | -             | H                   |
      -               | -             | L                   |
      spi-cs-high     | ACTIVE_HIGH   | H                   |
      -               | ACTIVE_HIGH   | L                   | 1
      spi-cs-high     | ACTIVE_LOW    | H                   | 2
      -               | ACTIVE_LOW    | L                   |

      Notes:
      1) Should print a warning about polarity inversion.
         Here it would be wise to avoid and define the gpio as
         ACTIVE_LOW.
      2) Should print a warning about polarity inversion
         because ACTIVE_LOW is overridden by spi-cs-high.
         Should be generally avoided and be replaced by
         spi-cs-high + ACTIVE_HIGH.
```

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Shiji Yang
dd7087aa17 ipq40xx: dts: fix SPI chip select GPIO polarity
The SPI chip select GPIO polarity is active low by default. We must
use "spi-cs-high" dts property to toggle the polarity. The polarity
on "cs-gpios" won't take effect at all[1]. Fix these incorrect GPIO
polarities to silence the kernel warnings.

[1] Refer to Linux/Documentation/devicetree/bindings/spi/spi-controller.yaml
```
      device node     | cs-gpio       | CS pin state active | Note
      ================+===============+=====================+=====
      spi-cs-high     | -             | H                   |
      -               | -             | L                   |
      spi-cs-high     | ACTIVE_HIGH   | H                   |
      -               | ACTIVE_HIGH   | L                   | 1
      spi-cs-high     | ACTIVE_LOW    | H                   | 2
      -               | ACTIVE_LOW    | L                   |

      Notes:
      1) Should print a warning about polarity inversion.
         Here it would be wise to avoid and define the gpio as
         ACTIVE_LOW.
      2) Should print a warning about polarity inversion
         because ACTIVE_LOW is overridden by spi-cs-high.
         Should be generally avoided and be replaced by
         spi-cs-high + ACTIVE_HIGH.
```

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Shiji Yang
160a3a2fd7 ath79: dts: remove SPI num-cs property
This is a useless property on ath79 target. Both spi-ar934x and
spi-ath79 drivers don't check num-cs property. They always set
chip select number to 3.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19845
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:28:15 +02:00
Agustin Lorenzo
ea2c2ca2ae mac80211: ath11k: backport of the latest changes applied for ath11k in 6.16.12
This includes the following commits from upstream Linux between 6.16 and 6.16.12:

wifi: ath11k: clear initialized flag for deinit-ed srng lists
wifi: ath11k: fix sleeping-in-atomic in ath11k_mac_op_set_bitrate_mask()
wifi: ath11k: fix dest ring-buffer corruption
wifi: ath11k: fix source ring-buffer corruption
wifi: ath11k: fix dest ring-buffer corruption when ring is full
wifi: ath11k: fix group data packet drops during rekey [1]
wifi: ath11k: fix NULL dereference in ath11k_qmi_m3_load()

[1] The patch "940-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch" has been removed, as it has been fixed upstream in "wifi: ath11k: fix group data packet drops during rekey" and is added in 945 patch.
Related: https://github.com/openwrt/openwrt/pull/18705
Related: https://github.com/openwrt/openwrt/issues/9555
Related: https://github.com/openwrt/openwrt/issues/14117

Signed-off-by: Agustin Lorenzo <agustin.lorenzo@thinco.es>
Link: https://github.com/openwrt/openwrt/pull/20395
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:23:43 +02:00
Agustin Lorenzo
9295b5a436 mac80211: ath11k: reordered the patches 906 and 907 and refreshed, no functional changes
Remove leading 0 from filename.

Signed-off-by: Agustin Lorenzo <agustin.lorenzo@thinco.es>
Link: https://github.com/openwrt/openwrt/pull/20395
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:23:15 +02:00
Hauke Mehrtens
f596ae7b85 tools: firmware-utils: update to Git HEAD (2025-10-20)
313f344 dlink-sge-image: add support for D-Link DIR-X1860 B1/DIR-X1550 A1

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-20 00:17:46 +02:00
Christoph Krapp
13dc286814 ramips: mt7621: add support for D-Link DIR-X1860 B1 / DIR-X1550 A1
Both devices seem to be completely identical and D-Link doesnt even
mention the DIR-X1550 A1 in the GPL source. Furthermore the supported
devices header also just contains DIR-X1860 B1. The cherry on top is the
FCC filing, which features the manual for DIR-X1550 A1 but the label
info for DIR-X1860 B1. I guess someone at D-Link was just as confused as
me.

Hardware
--------
SOC:    MediaTek MT7621AT
FLASH:	128MB (Spansion S34ML01G200TF100)
RAM:  	256MB (Winbond W632GU6NB-12)
WIFI:   MediaTek MT7915DAN + MT7975DN DBDC 2x2 802.11ax
ETH:	1x WAN, 3x LAN
LED:	6 (4 GPIO controllable, 2 WIFI hardwired)
BTN:	WPS, Reset
UART:	115200 8N1 (Pinout silkscreened) - ignore VCC

MAC addresses
-------------
LAN	Label MAC (stored in config2 partition as ASCII (entry
	factory_mac=xx:xx:xx:xx:xx:xx))
WAN	LAN + 3
2.4G	LAN + 1
5G	LAN + 2

Installation
------------
Vendor UI
---------
1. Browse to http://192.168.0.1 and login.
2. Navigate to "Management" -> "Upgrade".
3. Press the "Select File" button and upload
   openwrt-ramips-mt7621-dlink_dir-x1860-b1-squashfs-factory.bin
4. Confirm the security questions, wait for a reboot and enjoy OpenWrt.

Recovery UI
-----------
1. Set your IP address to 192.168.0.101, subnet 255.255.255.0.
2. Power on the device while holding reset.
3. Release reset once the status led starts to blink orange.
4. Open a chrome- or firefox based browser and browse to
   https://192.168.0.1
5. Upload openwrt-ramips-mt7621-dlink_dir-x1860-b1-squashfs-recovery.bin
   wait for a reboot and enjoy OpenWrt.

Back to stock
-------------
1. Set your IP address to 192.168.0.101, subnet 255.255.255.0.
2. Power on the device while holding reset.
3. Release reset once the status led starts to blink orange.
4. Open a chrome- or firefox based browser and browse to
   https://192.168.0.1
5. Upload a decrypted vendor image, wait for a reboot and regret your
   decision.

Decrypt vendor image
--------------------
1. Download dlink-sge-image.c and dlink-sge-image.h from the
   firmware-utils openwrt repository.
2. Compile a binary from the downloaded file
   e.g. gcc dlink-sge-image.c -lcrypto -o dlink-sge-image
3. Run
   ./dlink-sge-image DIR-X1860-B1 <vendor_image> <decrypted_image> -d

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20410
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:54:56 +02:00
Jonas Jelonek
29cc0b6ccf realtek: dsa: rtl931x: remove enabling MAC from phylink_mac_config
Originally, phylink_mac_config first disabled the MAC, then triggered
the SerDes setup and then re-enabled MAC. SerDes setup has been moved to
the PCS driver now but pcs_config is called AFTER phylink_mac_config by
phylink subsystem.

Thus, just disable the MAC in phylink_mac_config. After PCS has setup
the SerDes, the MAC should be properly brought up in a mac_link_up call
coming from the phylink subsystem.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Jonas Jelonek
4a5de35dba realtek: dsa,pcs: rtl931x: let PCS driver setup SerDes
Remove SerDes initialization/configuration calls from the DSA driver in
'rtl931x_phylink_mac_config' and let our PCS driver setup the SerDes now
that the driver is able to do that.

pcs_config of the PCS driver is automatically called by phylink, thus
there's no need to call it on our own.

Note that in rtl931x_phylink_mac_config the MAC is enabled before
pcs_config is called. While this seems to work, it isn't good and needs
to be fixed.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Jonas Jelonek
8bdc3d1b56 realtek: pcs: rtl931x: quit setup_serdes early on USXGMII mode
In rtpcs_931x_setup_serdes, quit early on USXGMII mode. This restores
the behaviour introduced in c18476d0c5 to prevent the current buggy
procedure to destroy a working configuration established by U-Boot
before.

Also include the valuable comment from the code to keep the information.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Jonas Jelonek
a89d8acb5b realtek: pcs: rtl931x: adjust SerDes page numbers
Adjust the SerDes page numbers to account for the different mapping used
by 'mdio-realtek-otto' and 'mdio-realtek-otto-serdes' drivers.

While importing the SerDes configuration code from PHY driver to PCS
driver, all helper calls to access the SerDes registers had to be
adjusted to use the proper helpers within the PCS driver. However, there
is one important implication of this: 'mdio-realtek-otto' and
'mdio-realtek-otto-serdes' use a slightly different page mapping.

While the old helpers in 'mdio-realtek-otto' used a page mapping of
0x00/0x100/0x200, 'mdio-realtek-otto-serdes' uses a mapping of
0x00/0x40/0x80 to provide consumers with the ability to only operate on
frontend SerDes. Thus, all page numbers > 63/0x3f have to be adjusted
like the following:

before: rtsds_931x_write_field(sds, 0x101, ...	// old helper calls
after: rtpcs_sds_write(ctrl, sds, 0x41, ...

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Jonas Jelonek
1089e3c696 realtek: pcs: rtl931x: use regmap for register access calls
Replaces the "old" way of accessing registers using the macros
sw_r32/sw_w32 from mach-rtl83xx.h. The "new" way to access register is
through the regmap API.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Jonas Jelonek
ddf94f7489 realtek: pcs: rtl931x: import SerDes setup code from PHY driver
Let's start this transition with RTL931X.

Import all functions starting with 'rtl931x_' or 'rtsds_931x' from PHY
driver into the PCS driver, rename all functions to match a common
naming scheme and adjust signature, helper calls and function calls
accordingly to make it work within the PCS driver.

This is just copy&paste and tries to do only mandatory adjustments. The
code will be refactored in succeeding commits.

Also remove 'unused' attribute from helpers as they are used now.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:49:56 +02:00
Aleksander Jan Bajkowski
61d50c2e49 airoha: disable RTL8261N PHY driver
RTL8261N is not used by any device in this target. If necessary, newly added
devices should add the kmod-phy-rtl8261n package.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20444
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:16:06 +02:00
Shiji Yang
a926c5518e ramips: drop unsupported fit image option with-initrd
This option will only take effect when the "separate_ramdisk"
feature was enabled. However, this target does not support
this feature. It is an obvious copy and paste issue.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/17832
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:09:57 +02:00
Shiji Yang
79c84867fb airoha: drop unsupported fit image option with-initrd
This option will only take effect when the "separate_ramdisk"
feature was enabled. However, this target does not support
this feature. It is an obvious copy and paste issue.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/17832
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:09:57 +02:00
Christian Weiske
4193422377 ramips: add support for Zyxel NWA90AX access point
The NWA90AX is hardware-wise identical to the NWA50AX which is
already supported.

The NWA90AX magic model code bytes are `77 E1`,
and they are added to the DTS to mark the NWA50AX firmware
as being compatible with the 90 model.

Without the compat-models change, uploading the OpenWrt NWA50AX
firmware with the official Zyxel web interface yields an error:
> errno: -25007
> errmsg: Firmware content error!

As described on the NWA50AX firmware page[1] on the wiki, the
"current image" slot for firmware updates has to be "1".
If it is 0, flashing will fail.

[1] https://openwrt.org/toh/zyxel/nwa50ax

Vendor product page:
https://www.zyxel.com/global/en/products/wireless/ax1800-4-stream-wifi-6-dual-radio-nebulaflex-access-point-nwa90ax

Vendor support page stating that the hardware is identical:
https://support.zyxel.eu/hc/en-us/articles/4416989548178-Access-Point-NWA50-55AXEE-90AX-110AX-210AX-Differences-in-Hardware-and-Features
> NWA90AX: Identical hardware as in NWA50AX, but with added features
> like Captive portal for Guest access and WPA Enterprise for
> AD/Radius (Credential) authentication.

Signed-off-by: Christian Weiske <cweiske@cweiske.de>
Link: https://github.com/openwrt/openwrt/pull/20308
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 23:02:17 +02:00
Caleb James DeLisle
1cd3660bee econet: Add Nokia G-240G-E and EN751221 recovery image
The Nokia G-240G-E is an xPON device with an EN7526G, 256M of
memory and 128M of flash. It has 1 USB2 port as well as phone and
ethernet but no wifi. Flashing instructions are per the typical
process using xmodem in the bootloader. This and other things
are described here: https://openwrt.org/inbox/toh/bt/g-240g-e_1

In addition, a generic image is offered, this image can be loaded
into memory from within the bootloader and launched directly. It
is recommended on the wiki of G-240G-E and other EcoNet devices
to be used for backing up the flash before flashing OpenWRT.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20338
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 22:21:41 +02:00
Rosen Penev
c91b536676 ath79: buffalo: use nvmem for calibration
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20301
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 22:00:47 +02:00
Shiji Yang
b372aeea0e ramips: dts: explicitly set the partition reg size for Ruijie RG-EW1200G
Correct the mtd partition reg property size to address the following
dtc warnings:

../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:60.5-30: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:66.5-29: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@50000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:72.5-29: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@60000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:88.5-29: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@70000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:94.5-29: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@80000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7621_ruijie_rg-ew1200g-pro-v1.1.dts:101.5-30: Warning (reg_format): /palmbus@1e000000/spi@b00/flash@0/partitions/partition@90000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
286a5678f9 ramips: dts: correct WiFi band node reg size for Gemtek WVRTM-130ACN
The #address-cells should be 1 according to the dt-binding document.
This patch fixes the following dtc warnings:

../dts/mt7621_gemtek_wvrtm-130acn.dts:46.4-14: Warning (reg_format): /pcie@1e140000/pcie@0,0/wifi@0,0/band@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 0)
../dts/mt7621_gemtek_wvrtm-130acn.dts:54.4-14: Warning (reg_format): /pcie@1e140000/pcie@0,0/wifi@0,0/band@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 0)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
3ecef3d965 qualcommax: fix switch node dtc warnings for Asus RT-AX89X
Add the missing #address-cells and #size-cells to fix the following
dtc warnings:

ipq8074-rt-ax89x.dts:558.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:566.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:572.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@2:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:578.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@3:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:584.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@4:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:590.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@5:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
ipq8074-rt-ax89x.dts:596.5-15: Warning (reg_format): /soc@0/mdio@90000/switch@10/ports/port@6:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
a6c093fb0d qoriq: dts: add missing reg property for WatchGuard Firebox M300
Set the reg property value based on node name "pca9547@77". This
patch fixes the following dtc warning:

watchguard-firebox-m300.dts:364.14-366.5: Warning (i2c_bus_reg): /soc@ffe000000/i2c@118000/pca9547@77: missing or empty reg property

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
b5fb6be45a mvebu: dts: fix unit name leading 0s warnings
Trim unnecessary 0s from the node name to fix the dtc warnings:

cn9131-puzzle-m901.dts:43.18-46.4: Warning (unit_address_format): /memory@00000000: unit name should not have leading 0s
cn9130-clearfog-pro.dts:33.18-36.4: Warning (unit_address_format): /memory@00000000: unit name should not have leading 0s
cn9132-puzzle-m902.dts:50.18-53.4: Warning (unit_address_format): /memory@00000000: unit name should not have leading 0s
armada-385-wd_cloud-mirror-gen2.dts:148.26-152.9: Warning (unit_address_format): /soc/internal-regs/nand-controller@d0000/nand@0/partitions/partition@00000000: unit name should not have leading 0s
armada-385-wd_cloud-mirror-gen2.dts:154.26-157.9: Warning (unit_address_format): /soc/internal-regs/nand-controller@d0000/nand@0/partitions/partition@00500000: unit name should not have leading 0s
armada-385-wd_cloud-mirror-gen2.dts:159.26-163.9: Warning (unit_address_format): /soc/internal-regs/nand-controller@d0000/nand@0/partitions/partition@00a00000: unit name should not have leading 0s
armada-385-wd_cloud-mirror-gen2.dts:165.26-168.9: Warning (unit_address_format): /soc/internal-regs/nand-controller@d0000/nand@0/partitions/partition@00f00000: unit name should not have leading 0s

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
9025072317 mvebu: fix partition node dtc warnings for Synology DS213j
Add missing #address-cells and #size-cells to fix the
following dtc warnings:

armada-370-synology-ds213j.dts:288.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
armada-370-synology-ds213j.dts:294.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@c0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
armada-370-synology-ds213j.dts:299.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@100000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
armada-370-synology-ds213j.dts:304.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@110000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
armada-370-synology-ds213j.dts:308.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@7d0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
armada-370-synology-ds213j.dts:327.5-35: Warning (reg_format): /soc/spi@10600/flash@0/partitions/partition@7e0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
a06c79212a mvebu: fix usb node dtc warnings for Ctera C200 V2
Correct #address-cells and #size-cells based on child node reg
property structure to fix the following dtc warnings:

armada-370-c200-v2.dts:342.6-16: Warning (reg_format): /soc/pcie@82000000/pcie@1,0/bridge@0,1/usb@1,0/port@1:reg: property has invalid length (4 bytes) (#address-cells == 3, #size-cells == 2)
armada-370-c200-v2.dts:347.6-16: Warning (reg_format): /soc/pcie@82000000/pcie@1,0/bridge@0,1/usb@1,0/port@2:reg: property has invalid length (4 bytes) (#address-cells == 3, #size-cells == 2)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:34 +02:00
Shiji Yang
9fa076aa33 kirkwood: dts: explicitly set the partition reg size for Blackarmor NAS220
Correct the mtd partition reg property size to address the following
dtc warnings:

kirkwood-blackarmor-nas220.dts:185.4-24: Warning (reg_format): /mbus@f1000000/nand@12f/partitions/partition@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
kirkwood-blackarmor-nas220.dts:191.4-28: Warning (reg_format): /mbus@f1000000/nand@12f/partitions/partition@a0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
kirkwood-blackarmor-nas220.dts:197.4-28: Warning (reg_format): /mbus@f1000000/nand@12f/partitions/partition@b0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
kirkwood-blackarmor-nas220.dts:203.4-30: Warning (reg_format): /mbus@f1000000/nand@12f/partitions/partition@c0000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:33 +02:00
Shiji Yang
9741af31f1 bmips: fix dtc warnings for D-Link DSL-2750B
- Add the missing ranges property for PCIe bridge node.
- Correct the PCIe device node name.

This patch fix the following dtc warning:

../dts/bcm6328-dlink-dsl-2750b-b1.dts:203.9-220.4: Warning (pci_bridge): /ubus/pcie@10e40000/pcie@0: missing ranges for PCI bridge (or not a bridge)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:33 +02:00
Shiji Yang
6ad145d13b ath79: dts: fix wifi node name for Fortinet FAP-221-C
The DTC recommends using wifi@0,0 as the node name to match the reg
property structure. Fix warning:

../dts/qca9557_fortinet_fap-221-c.dts:208.13-213.4: Warning (pci_device_reg): /ahb/pcie@180c0000/wifi@0,0,0: PCI unit address format error, expected "0,0"

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:33 +02:00
Shiji Yang
73b198869a apm821xx: dts: explicitly set the partition reg size for Netgear WNDR4700
Correct the mtd partition reg property size to address the following
dtc warnings:

../dts/netgear-wndr4700.dts:191.6-33: Warning (reg_format): /plb/opb/ebc/ndfc@1,0/nand/partitions/partition@0/partition@40000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 21:55:33 +02:00
David Härdeman
7dee632bee odhcp6c: use the global DHCP DUID for DHCPv6
odhcp6c already supports custom DUIDS on a per-interface basis.  When no client
identifier has been set, odhcp6c will generate one on the basis of the MAC
address of the given interface.

This is contrary to how DUIDs are meant to be used, as the client identifier
will vary from interface to interface, while it is meant to remain stable for a
given host, no matter how the network hardware changes (see RFC8415, §11).

Fix this by letting odhcp6c use the global DHCP DUID, if configured.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20359
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:46:22 +02:00
David Härdeman
9151c7015e netifd: use the global DHCP DUID for DHCPv4
This makes the DHCPv4 client use the global DHCP DUID to generate a
RFC4361-style client identifier.

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20359
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:46:22 +02:00
David Härdeman
a660a076db base-files: generate a global DHCP DUID
odhcp6c and odhcpd currently generate custom DUIDS on a per-interface basis
using the MAC address of the given interface.

This is contrary to how DUIDs are meant to be used, as the client identifier
will vary from interface to interface, while it is meant to remain stable for a
given host, no matter how the network hardware changes (see RFC8415, §11).

The same problem exists in odhcpd, which also generates server-side DUIDs on a
per-interface basis.

In order to support a stable per-device DUID, generate one on first boot and
store it via uci.

Currently, a DUID-UUID style clientid is generated. This is mostly meant as an
RFC, and we might consider using a different kind of DUID instead (DUID-LLT,
DUID-EN).

One drawback is that this will typically change the DUID used on existing
OpenWrt devices when upgrading to a new release. However, that seems
unavoidable and is a one-time pain in order to have stable DUIDs (and in many
cases, it shouldn't cause any issues).

v2: move the uci cfg generation outside of an IPv6-only block since this
is relevant to the DHCPv4 client as well

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20359
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:46:22 +02:00
Shiji Yang
86b6b31247 ipq806x: add missing semicolons for 10_fix_wifi_mac
Fix the syntax issue.

Fixes: 148f82ad45 ("ipq806x: use nvmem for wifi mac")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20446
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 19:44:54 +02:00
Josh Bendavid
70dd565590 realtek: add xgs1210-12 b1 and switch to rt-loader
rev B1 is identical to rev A1 except for different PHYs on the 2.5gbps ports (lan9 and lan10)
Both revisions of xgs1210-12 are also switched to use rt-loader to avoid
problems due to overwriting the compressed image in memory when flashing
with the oem firmware (and also to save flash space with respect to gzip
compression)

Signed-off-by: Josh Bendavid <joshbendavid@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20161
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 19:41:46 +02:00
Christoph Krapp
b442ca0d4e ipq40xx: add device alias for Linksys VLP01
Both devices, the Linksys WHW01 and the VLP01, are essentially the same
device. Even Linksys provides only one image for both devices which uses
the WHW01 identifier in the image header.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20455
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:40:44 +02:00
Andrii Kuiukoff
b926ae0856 leds.mk: fix leds-group-multicolor name
Fix package name and AUTOLOAD parameter to match the
actual kernel module name (leds-group-multicolor), enabling proper
auto-loading at boot.

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20447
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:39:39 +02:00
Paul Donald
217e3320f2 lldpd: bump to 1.0.20
Also implemented the med fast-start -> lldp fast-start change.
lldpd includes a backwards compat handler for the older med command,
but it's better to make these changes so they align with documentation.

Changes:
https://github.com/lldpd/lldpd/releases/tag/1.0.20

Changes:
    Enable fast start unconditionally (and move its configuration in "configure lldp")
    Make VLAN advertisements configurable
Fix:
    Do not break zero-copy traffic on Linux
    Fix crash on rapid addition/removal of interfaces
    Fix management address selection when pattern is a negative IP address

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20438
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:35:44 +02:00
Hal Martin
03045951ee ipq40xx: add support for Cisco Meraki MR30H
This commit adds support for the Cisco Meraki MR30H. The MR30H is a POE
powered 802.11ac access point with an integrated 5 port Gigabit switch.

MR30H hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 256MB DDR3
* Storage: 128 MB (S34ML01G200TFV00)
* Networking: QCA8075 internal switch (5x 1GbE ports)
* WiFi: QCA4019 802.11b/g/n/ac, QCA9889 802.11/b/g/n/ac scanning radio
* Serial: Internal header (J8, 2.54mm, populated)

LAN5 (rear) is for POE input. LAN4 has POE output (802.3af) when powered
by an 802.3at source.

The LAN4 port is used for tftp booting in U-Boot.

This device does not have secure boot, but cannot be flashed without
external programmers (TSOP48 NAND) as Meraki disabled interrupting U-Boot
for any device that updated after ~2017.

Disassembly:

* Remove the two T10 screws on the rear of the AP.

* Using a guitar pick or similar plastic tool, insert it on the side between
the grey metal plate and the white plastic body and pry up gently.
    * The rubberised border on the metal plate does not need to be removed.

* The metal back plate has several latches around the perimeter (but none on
the bottom by the Ethernet ports).

* Once you have removed the metal back plate, push up gently on the bottom
Ethernet ports while pulling gently on the rear-mounted Ethernet port to remove
the PCB.

* The PCB should come free from the plastic housing, pull the bottom
(4 Ethernet ports) up as if you are opening a book.
    * If done carefully, there is no need to remove the WiFi antenna connectors
    to access the NAND flash.

* The TSOP48 NAND flash (U30, Spansion S34ML01G200TFV00) is located on the
opposite side of the PCB.

* To flash, you need to desolder the TSOP48 or use a 360 clip.

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/mr30h

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Resolder the NAND after overwriting the `u-boot` regions.

OpenWrt Installation:

* After flashing NAND with the external programmer. Plug an Ethernet
cable into port 4. Power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_mr30h-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_mr30h-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_mr30h-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Alternative installation steps if your device has U-Boot older than:
`U-Boot 2017.07-RELEASE-g78ed34f31579 (Sep 29 2017 - 07:43:44 -0700)`

**BIG FAT WARNING BEGIN**

Attmping to interrupt boot on a newer U-Boot release may permanently
brick your device! See: riptidewave93/LEDE-MR33#13

**BIG FAT WARNING END**

* Use `ubootwrite.py` from the above GitHub repository to transfer the
`u-boot.itb`
image to the router.
```
./ubootwrite.py --serial=/dev/ttyUSB0 --write u-boot.itb
```

* To avoid bricking your router, it is highly recommended at this point that
you flash the unlocked U-Boot to the `part.safe` ubi volume.
```
run set_ubi && ubi write $loadaddr part.safe 0x2fd48
```

* Power cycle the router. The stock Meraki U-Boot will boot `part.safe` which
is now the unlocked U-Boot.

* Use the new U-Boot build (`" "` to interrupt boot) to
`tftpboot` the OpenWrt initramfs image:
```
dhcp
setenv serverip <tftp_server_addr>
tftpboot openwrt-ipq40xx-generic-meraki_mr30h-initramfs-uImage.itb
bootm
```

* It is only recommended to flash U-Boot to the `u-boot` NAND region from
Linux:
```
insmod mtd-rw i_want_a_brick=1
```

* Copy `u-boot.elf` to the router:
```
scp -O u-boot.elf root@192.168.1.1:/tmp/
```

Note: If any of the below commands fails, YOU WILL HAVE A BRICK IF YOU
REBOOT OR LOSE POWER. Only a hardware programmer can recover the device.
```
flash_erase /dev/mtd8 0 0
nandwrite -p /dev/mtd8 /tmp/u-boot.elf
```

Note: ONLY use `u-boot.elf` when flashing the `u-boot` region (`/dev/mtd8`);
`u-boot.bin` or `u-boot.itb` will BRICK YOUR DEVICE

* `scp` the `sysupgrade` image to the device and run the normal `sysupgrade`
procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_mr30h-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_mr30h-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17026
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:33:18 +02:00
Hal Martin
11f7aa122a ipq40xx: add support for Cisco Meraki Go GX20
This commit adds support for the Cisco Meraki Go GX20. The Go GX20 is a wired
router with 5 port Gigabit switch. It shares the same PCB as the Meraki Z3,
but without the WiFi radios.

GX20 hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 512MB DDR3
* Storage: 128 MB (S34ML01G200TFV00)
* Networking: QCA8075 internal switch (5x 1GbE ports)
* USB: 1x USB3.0
* Serial: Internal header (J8, 2.54mm, populated)

Port 5 has POE output (802.3af). The Internet/WAN port is used for tftp booting
in U-Boot.

This device ships with secure boot, and cannot be flashed without
external programmers (TSOP48 NAND and I2C EEEPROM)!

Disassembly:

* Remove the four T8 screws on the bottom of the device under the rubber feet.

* Using a guitar pick or similar plastic tool, insert it on the side between
the bottom case and the side, pry up gently. The plastic bottom has several
latches around the perimeter (but none on the rear by the Ethernet ports).

* The TSOP48 NAND flash (U30, Spansion S34ML01G200TFV00) is located on the
bottom side of the PCB (facing you as you remove the bottom plastic).
To flash, you will need to desolder the TSOP48. Attempts to flash in-circuit
using a 360 clip were unsuccessful.

* The SOIC8 I2C EEPROM (U32, Atmel 24C64) is located on the bottom side of
the PCB (facing you as you remove the bottom plastic). It can be flashed in
circuit using a SOIC8 chip clip.

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/z3_gx20

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Decompress `ubi.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `ubi` portion of NAND from
`0xc60000`-`0x8400000` (length `0x77a0000`). Offsets here include OOB data.

* Dump your original EEPROM. Change the byte at offset `0x49` to `0x1e`
(originally `0x2b`). Remember to re-write the EEPROM with the modified data.
    * This can be done on Linux via the following command:
    `printf "\x1e" | dd of=/tmp/eeprom.bin bs=1 seek=$((0x49)) conv=notrunc`

**Note**: the device will not boot if you modify the board major number and
have not yet overwritten the `ubi` and `u-boot` regions of NAND.

* Resolder the NAND after overwriting the `u-boot` and `ubi` regions.

OpenWrt Installation:

* After flashing NAND and EEPROM with external programmers. Plug an Ethernet
cable into the Internet/WAN port. Power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_gx20-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_gx20-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_gx20-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17026
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:33:18 +02:00
Hal Martin
60bbf46930 ipq40xx: add support for Cisco Meraki Z3
This commit adds support for the Cisco Meraki Z3. The Z3 is a "teleworker"
device with 802.11ac and an integrated 5 port Gigabit switch.

Z3 hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 512MB DDR3
* Storage: 128 MB (S34ML01G200TFV00)
* Networking: QCA8075 internal switch (5x 1GbE ports)
* WiFi: QCA4019 802.11b/g/n/ac
* USB: 1x USB3.0
* Serial: Internal header (J8, 2.54mm, populated)

Port 5 has POE output (802.3af). The Internet/WAN port is used for tftp booting
in U-Boot.

This device ships with secure boot, and cannot be flashed without
external programmers (TSOP48 NAND and I2C EEEPROM)!

Disassembly:

* Remove the four T8 screws on the bottom of the device under the rubber feet.

* Using a guitar pick or similar plastic tool, insert it on the side between
the bottom case and the side, pry up gently. The plastic bottom has several
latches around the perimeter (but none on the rear by the Ethernet ports).

* The TSOP48 NAND flash (U30, Spansion S34ML01G200TFV00) is located on the
bottom side of the PCB (facing you as you remove the bottom plastic).
To flash, you will need to desolder the TSOP48. Attempts to flash in-circuit
using a 360 clip were unsuccessful.

* The SOIC8 I2C EEPROM (U32, Atmel 24C64) is located on the bottom side of
the PCB (facing you as you remove the bottom plastic). It can be flashed in
circuit using a SOIC8 chip clip.

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/z3_gx20

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Decompress `ubi.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `ubi` portion of NAND from
`0xc60000`-`0x8400000` (length `0x77a0000`). Offsets here include OOB data.

* Dump your original EEPROM. Change the byte at offset `0x49` to `0x1e`
(originally `0x24`). Remember to re-write the EEPROM with the modified data.
    * This can be done on Linux via the following command:
    `printf "\x1e" | dd of=/tmp/eeprom.bin bs=1 seek=$((0x49)) conv=notrunc`

**Note**: the device will not boot if you modify the board major number and
have not yet overwritten the `ubi` and `u-boot` regions of NAND.

* Resolder the NAND after overwriting the `u-boot` and `ubi` regions.

OpenWrt Installation:

* After flashing NAND and EEPROM with external programmers. Plug an Ethernet
cable into the Internet/WAN port. Power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_z3-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, created the `ART` ubivol with
the WiFi radio calibration from the mtd partition:
```
cat /dev/mtd10 > /tmp/ART.bin
ubimkvol /dev/ubi0 -N ART -s 524288
ubiupdatevol /dev/ubi0_1 /tmp/ART.bin
```

* `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_z3-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_z3-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17026
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 19:33:18 +02:00
Goetz Goerisch
84b2a987fc bcm53xx: modify 180-usb-xhci-add-support-for-performing-fake-doorbell.patch
upstream changes to the xhci_free_virt_device()

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/usb/host?h=v6.6.103&id=e600de541c37f97482fea2a7a26f186141e7ddea

The xhci_fake_doorbell() function should only free the device and not
deactivate it too. It just has to revert the call to
xhci_alloc_virt_device()

Fixes: #20153
Fixes: 1c92e468d5 ("kernel: bump 6.6 to 6.6.103")
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20362
[Update description and removed some unnecessary changes]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-19 16:25:15 +02:00
Christian Marangi
5d1d68a7db libiwinfo: update to Git HEAD (2025-10-19)
904f114548ba winfo: account noise for multiple radio from same wiphy

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-19 13:54:32 +02:00
Christoph Krapp
1fecbaf3d8 ipq40xx: fix Linksys WHW0x sorting
whw01 was incorrectly placed below whw03 definitions.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20441
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 11:55:23 +02:00
Christoph Krapp
1afe4ba623 ipq40xx: add led aliases for Linksys WHW01
This adds led aliases for failsafe and upgrade. Before this change the
leds stayed dark in both situations.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20441
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 11:55:22 +02:00
Christoph Krapp
deca8fd24b ipq40xx: add label-mac-device alias for Linksys WHW01
Set the label-mac-device to be able to easily fetch the mac-address of
the device, which is printed on the bottom of the case.
While at it, remove the TODO - the ethernet0 alias is needed to get the
mac from bootloader.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20441
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-19 11:55:22 +02:00
Felix Fietkau
0535d615f6 hostapd: increase netlink buffer size
When lots of events are waiting to be received, the default buffer size
is not enough, and hostapd can run into "No buffer space available" on
recvmsg. This will cause the netdev state tracking to go out of sync.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-18 21:59:36 +02:00
John Thomson
9d531c0c5b ipq40xx: mikrotik: kernel: pet watchdog during kernel uncompress
kernel 6.9 removed the KConfig entry our RouterBOOT watchdog pet hack was relying on:
Linux df59427a1122 ("ARM: qcom: merge remaining subplatforms into sensible Kconfig entry")

Introduce a new specific KConfig entry for this hack,
and enable it for Mikrotik ipq40xx kernel.
CONFIG_ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY

With appropriate DEBUG_LL and DEBUG_UNCOMPRESS, this watchdog reset
can be typically seen on console as a reset before "Uncompressing Linux..."
reaches " done, booting the kernel."

RouterBOOT

loading kernel... OK
setting up elf image... OK
jumping to kernel code
Jumping to kernel
DTB:0x80381A60 (0x000048C4)
C:0x800000E0-0x80386420->0x80FAB500-0x81331840
DTB:0x8132CE80 (0x000049B8)
Uncompressing Linux...
Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.1.1-00096

versus:

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0

On Mikrotik RouterBOOT devices, this is complicated by some RouterBOOT
versions successfully loading the same kernel that other RouterBOOT versions fail. Example:
RouterBOOT backup booter 6.45.9 fine, RouterBOOT booter 7.16 fail

Fixes: openwrt#19841

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
Link: https://github.com/openwrt/openwrt/pull/20305
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-18 16:41:53 +02:00
Kenneth Kasilag
010c08ceb5 kernel: rtl8261n: allow selection as package
Previously, devices would have to select `CONFIG_RTL8261N_PHY=Y` in the
whole target's kernel config. Now that this driver is becoming usable
for devices other than Realtek switches, allow packaging this driver
separately.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/20429
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-18 01:31:02 +02:00
Kenneth Kasilag
478fcd8fe6 kernel: rtl8261n: fix kernel module name
Replace rtl8621n -> rtl8261n.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/20429
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-18 01:30:13 +02:00
Magnus Kroken
eb370a7d02 mbedtls: update to 3.6.5
This release includes fixes for security issues.

Mbed TLS 3.6 is a long-term support (LTS) branch. It will be supported
with bug-fixes and security fixes until at least March 2027.

The two issues fixed were timing side channels:
* Padding oracle through timing of cipher error reporting
  (CVE-2025-59438) [1]
* Side channel in RSA key generation and operations (SSBleed, M-Step)
  (CVE-2025-54764) [2]

Bug fixes:
* Fix potential CMake parallel build failure when building both the static and shared libraries.
* Fix a build error or incorrect TLS session lifetime on platforms where mbedtls_time_t is not time_t.

[1]: https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-invalid-padding-error/
[2]: https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-ssbleed-mstep/

Full release announcement:
https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.5

Tested-by: Edoardo Pinci <epinci@outlook.com>
Signed-off-by: Magnus Kroken <mkroken@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20425
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-18 01:27:52 +02:00
Hauke Mehrtens
2a76abc544 ltq-ptm: Fix unprivileged local user memory read and write
Use the copy_from_user() and copy_to_user() functions for accessing
memory provided by the user in the ptm netdev iotls.
In addition also check for root permission before executing ioctl.

Suggested-by: Stanislav Fort from Aisle Research
Reported-by: Stanislav Fort from Aisle Research
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-18 00:47:29 +02:00
Felix Fietkau
4b907e69ea ubus: update to Git HEAD (2025-10-17)
b462895d3157 lua: CMakeLists: drop redundant cmake_minimum_required
f247c18f8a55 examples: CMakeLists: drop redundant cmake_minimum_required
83a70399030d github: add CI build
d31effb4277b ubusd: Fix out of bounds access in event register message
d95837b1b143 ubusd: acl: compare uid/gid instead of user/group strings
b81257bb20dd ubusd: load extra group IDs for a client process
7d7b45fea05b add debian/ directory
aa4a7ee1d341 ubusd: fix more instances of missing length checks for patterns
60e04048a0e2 ubusd: fix ACL check for receiving events

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-17 13:28:52 +02:00
Robert Marko
231fe4cd0f ipq-wifi: update to Git HEAD (2025-10-17)
d818fb10428f qca4019: Add Meraki MR30H
a1529e183333 qca4019: Add Meraki Z3

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-17 12:17:28 +02:00
Eric Fahlgren
f6e0f57be0 targetwide: imagebuilder: add explicit guards around initramfs rules
The imagebuilder is not intended to build initramfs images.  Some
profiles attempt to do this and succeed, due to buildroot leaking
the initramfs-kernel into staging_dir; others attempt it, but fail
due to not having initramfs binaries present in the imagebuilder.

Fix this by adding an explict guard around the unsupported generation
of the initramfs images.  This saves space and time during imagebuilder
runs, fixes those that are currently broken and protects against future
breakage for profiles that inadvertently work now.

Fixes: https://github.com/openwrt/openwrt/issues/20151
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20347
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-17 10:51:37 +02:00
Pawel Dembicki
f21e8158fb mpc85xx: p1010: kernel: add missing symbol
CONFIG_MTD_CFI was disabled in p1010 subtarget.
It causes problem with Aerohive BR200-WP router.

This patch enables CONFIG_MTD_CFI in p1010 config-default file.

Fixes: e9dd6da916 ("mpc85xx: p1010: add missing symbols")

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20419
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-16 22:23:44 +02:00
John Audia
1817e0751f linux-firmware: update to 20251011
% git log --no-merges --pretty=oneline --abbrev-commit 20250917...20251011

25c3a14ddccc qcom: add CDSP firmware for kaanapali platform
0a5f7ace0a17 qcom: add version for A650 GMU firmware
ff1f6b9a25d3 qca: Update Bluetooth WCN6750 1.1.3-00091 firmware to 1.1.3-00100
d387533db74f qcom: Add firmwares for Kaanapali GPU
fe05c74066fc qcom: Update A623 GMU fw
6f2733131a80 qcom: Fix QCS615 chipset's GPU secure fw
80e2ccb38d41 qcom: Update DSP firmware for sa8775p platform
8d5c190abbc6 amdgpu: DMCUB updates for various ASICs
5905c27e13dc WHENCE: remove link for Kaanapali video firmware
d2404284b6ce intel_vpu: Update NPU firmware
96ed5b3686d0 linux-firmware: Add Dell ISH firmware for Intel Lunar Lake systems
b350d59cf4bc Update VCN for Navi1x, Green Sardine and Renoir
f2bfc867f82d WHENCE: extract multitech license text
e9fa2f97c9c0 WHENCE: extract ueagle license
6fae1670baa1 WHENCE: use LICENCE.sensoray for s2255drv
bf9792cd07ec WHENCE: rename LICENCE.go7007-s2250 to LICENCE.sensoray
6d9abf208161 WHENCE: clean up emi62 and yam license statements
3baa8edc3517 qcom: vpu: update video firmware binary for SM8550
c77beb9847cc rtl_bt: Update RTL8852BT/RTL8852BE-VT BT USB FW to 0x3BAC_ADBA
7c2d4d41e96f qcom: vpu: add video firmware for Kaanapali
456617792f73 qcom: Update DSP firmware for qcs8300 platform.
d5541743af93 qcom: Add Audio topology for HAMOA-EVK
cefc001f7e0b intel/ish:Add ISH firmware file for Intel Lunar Lake platform
63335c21f5c3 mediatek: update firmware version info for MT7986/81/16
04a9bd578e9c linux-firmware: ql2500_fw: update ISP25xx Firmware
4d83de8a0909 qcom: Update aic100 firmware files
1378dc00cc60 qcom: Add audio topology and ADSP firmware for qcs6490-radxa-dragon-q6a
e1514909489e amdgpu: DMCUB updates for various ASICs
dba7fce5655a mediatek: mtk_wed: drop links for mt7988
d5eedab92c67 Revert "amdgpu: update gc 10.3.6 firmware"
ad211e0ef885 qcom: Update DSP firmware for qcs8300 platform.
b2d8bda61e46 powervr: update firmware for Imagination Technologies BXS-4-64 GPU
35d89f17d9f1 qcom: Update DSP firmware for sa8775p platform.
149fa16eb357 amdgpu: DMCUB updates for various ASICs
1d588f106cee ath12k: WCN7850 hw2.0: update board-2.bin
6625e563d600 qcom: move LEMANS EVK firmware to correct location

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/20415
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-16 21:40:44 +02:00
Tianling Shen
c19ad8db1b rockchip: add FriendlyElec NanoPi R76S support
Hardware
--------
RockChip RK3576 ARM64 (8 cores)
2/4GB LPDDR4X RAM
2x 2500 Base-T (PCIe, rtl8125b)
3x LEDs (POWER / LAN / WAN)
3x Buttons (MaskROM, Power, Reset)
32GB eMMC on board
Micro-SD Slot
HDMI OUT
M.2 E-key *SDIO* slot
1x USB 3.0 Port
USB Type-C 5V Power

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
internal eMMC using dd.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20423
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-16 21:39:16 +02:00
Tianling Shen
d1f281a534 mac80211: realtek: rtw88: add RTL8822CS support
Add Realtek RTL8822CS support to the rtw88 package.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20423
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-16 21:39:16 +02:00
Felix Fietkau
2d067b0dd5 ucode: fix EOF detection in the non-blocking read patch
size = 0 means EOF - do not return an empty string in this case
(which implies no data available).

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-16 20:58:55 +02:00
Sven Eckelmann
84b7057fe3 realtek: dsa: rtl931x: Fix port L2 table flushing
The DSA driver must flush the HW FDB when a port changes from
learning/forwarding to disabled/blocking/listening.

But the implementation for RTL931x was writing the port information
starting at bit 11 (bit 11 of the second 32-bit L2_TBL_FLUSH_CTRL
register). But this offset is the AGG_VID and not the port. The actual
position is 43 (bit 11 of the first register).

As result, the FDB was always only flushed for the port 0 and not for the
selected port.

Fixes: 9ed6097054 ("realtek: Add HW support for RTL931X for PIE, L2 and STP aging")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20422
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-16 16:35:20 +02:00
Andrew Sim
9b48cf6d94 mediatek: filogic: rename eth1 to wan in led setup for zyxel-ex5601-t0
the eth1 interface was renamed to wan so also reflect that change in
the leds setup script

Fixes: f26260c7e7 ("mediatek: filogic: Add label wan and cpu for Zyxel EX5601-T0")

Signed-off-by: Andrew Sim <andrewsimz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20120
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-16 15:19:23 +02:00
Harshal Gohel
2930c9dd2a realtek: rtl93xx: Trap BPDU management frames
BPDU frames like STP must be processed by each switch (bridge) which
supports STP. It must not be forwarded to avoid confusing the STP state of
other STP participants. It is essential to be an active participant of STP.
The software bridge automatically takes care of forwarding the BPDUs to
other ports when STP is disabled and the hardware switch should not
interfere.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20414
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-16 11:46:07 +02:00
Andrea Pesaresi
e78f000869 kernel: ksmbd: add max ip connection parameter
With this patch is set the maximum number of connections per ip address instead of no control.
The default is 8.

Signed-off-by: Andrea Pesaresi <andreapesaresi82@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20377
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-15 23:39:37 +02:00
Andrea Pesaresi
711e14af79 kernel: ksmbd: browse-interfaces-list-on-FSCTL_QUERY_INTERFACE_INFO
backport from kernel 6.12

ksmbd.mount will give each interfaces list and bind_interfaces_only flags
to ksmbd server. Previously, the interfaces list was sent only
when bind_interfaces_only was enabled.
ksmbd server browse only interfaces list given from ksmbd.conf on
FSCTL_QUERY_INTERFACE_INFO IOCTL.

Signed-off-by: Andrea Pesaresi <andreapesaresi82@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20377
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-15 23:39:33 +02:00
Timothy Feierabend
7ef19bb9cd rockchip: backport pcie fix for rk3399
This patch resolves the LAN port not initializing on the
FriendlyElec NanoPI R4S, especially during warm reboots.

Upstream commit patch is based on:
c3fe7071e1

I've experienced the LAN port failing to initialize from a cold boot and
after a reboot. Other users have reported this issue on
https://forum.openwrt.org/t/nanopi-r4s-rk3399-is-a-great-new-openwrt-device/79143.
The NanoPI R4S has its LAN port connected to the RK3399 via PCIE. Since the
PCIE lanes don't initialize correctly after reboot, the LAN port
doesn't initialize.

Signed-off-by: Timothy Feierabend <tim.feierabend@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20406
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-15 13:54:09 +02:00
air jinkela
2bf409fd8b strace: update to 6.17
Release Notes:
- https://github.com/strace/strace/releases/tag/v6.17
- https://github.com/strace/strace/releases/tag/v6.16

Signed-off-by: air jinkela <air_jinkela@163.com>
Link: https://github.com/openwrt/openwrt/pull/20403
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-15 11:16:08 +02:00
Felix Fietkau
0fe9484fed wifi-scripts: ucode: add support for WPS client
Fixes unwanted fallback to unencrypted network.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-15 09:56:33 +02:00
Christoph Krapp
2a44808374 ath79: add calibtation variant for TP-Link Archer C59 v1
Now that we have a board file, add calibration variant for TP-Link
Archer C59 v1 and add ipq-wifi package for it.

Tested-by: Mateusz Jończyk <matjon@users.noreply.github.com>
Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20401
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-14 17:50:54 +02:00
Christoph Krapp
8ea1396fd2 ipq-wifi: Add entry for TP-Link Archer C59 v1
Add IPQ Wifi entry for ath79 TP-Link Archer C59 v1.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20401
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-14 17:50:54 +02:00
Christian Marangi
e408030cec apk-tools: fix compilation warning from downstream full print patch
Fix trivial compilation warning caused by downstream full print patch.

../src/app_list.c: In function 'print_full':
../src/app_list.c:85:35: warning: format '%zu' expects argument of type 'size_t', but argument 2 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
   85 |         printf("Installed-Size: %zu\n", pkg->installed_size);
      |                                 ~~^     ~~~~~~~~~~~~~~~~~~~
      |                                   |        |
      |                                   |        uint64_t {aka long long unsigned int}
      |                                   unsigned int
      |                                 %llu
../src/app_list.c:86:25: warning: format '%zu' expects argument of type 'size_t', but argument 2 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
   86 |         printf("Size: %zu\n", pkg->size);
      |                       ~~^     ~~~~~~~~~
      |                         |        |
      |                         |        uint64_t {aka long long unsigned int}
      |                         unsigned int
      |                       %llu
../src/app_list.c:58:31: warning: unused variable 'd' [-Wunused-variable]
   58 |         struct apk_dependency d;

Remove unused variable and use PRIu64 to handle uint64_t type.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 17:15:07 +02:00
Christian Marangi
0b116e9d73 tools/meson: add pending patch to improve binary reproducibility
Add 3 pending patch that improve binary reproducibility. The first
address a problem with RPATH string not getting cleared on removal of
RPATH entry from ELF section. The other 2 skip including external shared
library in RPATH in meson build phase.

This follows the logic that on cross-compiling we can't run the binary
anyway as it does target a different arch hence it doesn't make sense to
include those extra path in RPATH causing reproducibility problems (as
path for those external library will depend on the build system path)

Link: https://github.com/openwrt/openwrt/pull/20389
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 17:13:04 +02:00
Felix Fietkau
7dd62db9a9 ucode: revert a broken commit
It causes an infinite loop when polling nl80211 netlink sockets

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-14 14:54:26 +02:00
Felix Fietkau
3632c0d3ce kernel: backport mediatek WED DMA mask fixes
Fixes issues on devices with 4 GB RAM.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-14 14:54:26 +02:00
Robert Marko
bef0bf8efc ipq-wifi: update to Git HEAD (2025-10-14)
821d27b582c1 qca9888: add BDF for TP-Link Archer C59 v1

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-14 13:17:59 +02:00
George Moussalem
c035447afd qualcommax: ipq50xx: fix XO board clock rate for Yuncore AX850
Commit 468975a985 changed the XO board clock definition from a fixed
clock to a fixed rate clock in the dtsi.

As such, boards must use clock dividers and multipliers to calculate
the clock rate based on the referenced parent clock.

Fixes: 5d2994a73e ("qualcommax: ipq50xx: Add support for Yuncore AX850")
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20405
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-14 12:45:15 +02:00
air jinkela
296f1cfe88 mediatek: flogic: platform.sh fix typo
Fixes:
726bb8e0e2
("mediatek: filogic: add support for SNR-CPE-AX2")

Signed-off-by: air jinkela <air_jinkela@163.com>
Link: https://github.com/openwrt/openwrt/pull/20404
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-14 12:44:42 +02:00
Koen Vandeputte
b1299c2fcf ath79: fix broken MikroTik upgrade
Fix a regression introduced by a recent commit.
It looks like a copy/paste error.

Add the missing line which defines the 'board' val
as it does not exist otherwise in the case check.

This fixes sysupgrade on ath79 MikroTik non-NOR boards.

Fixes: 318f07c231 ("ath79: mikrotik: check RouterBOOT version matching sysupgrade image")
Signed-off-by: Koen Vandeputte <koen.vandeputte@citymesh.com>
2025-10-14 12:25:56 +02:00
Christian Marangi
902f739817 generic: 6.12: add pending patch to address PCI sysfs creation entry race
Add pending patch to address PCI sysfs creation entry race observed on
ipq806x. This is to handle a kernel warning on creating the same sysfs
entry multiple times.

All affected patch automatically refreshed.

Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:30 +02:00
Christian Marangi
0344477547 ipq806x: 6.12: adapt OPP patch with upstream changes
Adapt OPP patch with upstream changes to cpufreq driver. Use the krait
compatible and the new opp-supported-hw way instead of deleting nodes.

Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:29 +02:00
Shiji Yang
1f4681f82a ipq806x: enable 6.12 testing kernel
The 6.12 testing kernel for ipq806x target is ready now.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:29 +02:00
Shiji Yang
ae70dbc267 ipq806x: migrate wifi configuration device paths for 6.12 kernel
The device tree PCIe host node names have been changed in the new
6.12 kernel[1]. Hence we have to update the wifi device path to
make sure it can work properly.

This script is based on:
target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=07299ba2e7d98045e6b522f7c5b97f402b15bc82
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:29 +02:00
Shiji Yang
41fe3aabad ipq806x: dts: correct PCIe device node name
According to the dtc source code, the PCIe device node unitname
needs to follow the following naming rules:

```
reg = fdt32_to_cpu(cells[0]);
dev = (reg & 0xf800) >> 11;
func = (reg & 0x700) >> 8;
snprintf(unitname, sizeof(unitname), "%x,%x", dev, func);
```

These devices' reg cell[0] is equal to 0x10000, hence the correct
node unitname should be "0,0". This patch fixes the following dtc
warnings on 6.12 kernel:

qcom-ipq8065-tr4400-v2.dts:482.11-487.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-tr4400-v2.dts:499.11-504.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-rt4230w-rev6.dts:584.11-589.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-rt4230w-rev6.dts:601.11-606.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-g10.dts:291.11-295.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-g10.dts:303.11-307.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-wxr-2533dhp.dts:525.11-530.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-wxr-2533dhp.dts:539.11-544.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-ecw5410.dts:235.11-239.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-ecw5410.dts:251.11-255.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-ap3935.dts:261.11-264.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-ap3935.dts:275.11-278.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-fap-421e.dts:347.11-352.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-fap-421e.dts:362.11-367.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-cryptid-common.dtsi:78.18-81.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-cryptid-common.dtsi:89.18-92.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8068-cryptid-common.dtsi:100.18-103.4: Warning (pci_device_reg): /soc/pcie@1b900000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-wg2600hp.dts:464.11-469.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-wg2600hp.dts:478.11-483.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8062-wg2600hp3.dts:404.11-410.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8062-wg2600hp3.dts:419.11-426.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-d7800.dts:210.11-215.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-d7800.dts:227.11-232.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-r7500v2.dts:213.11-218.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-r7500v2.dts:230.11-235.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-nighthawk.dtsi:546.18-549.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-nighthawk.dtsi:559.18-562.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-ac400i.dts:202.11-206.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8065-ac400i.dts:218.11-222.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-ad7200-c2600.dtsi:319.11-324.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-ad7200-c2600.dtsi:333.11-338.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-vr2600v.dts:347.11-352.4: Warning (pci_device_reg): /soc/pcie@1b500000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"
qcom-ipq8064-vr2600v.dts:361.11-366.4: Warning (pci_device_reg): /soc/pcie@1b700000/pcie@0/wifi@1,0: PCI unit address format error, expected "0,0"

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:28 +02:00
Shiji Yang
a4c654b27c ipq806x: dts: rework PCIe nodes for Chromium OnHub
- Reuse the bridges node defined on "qcom-ipq8064.dtsi".
- Rename PCIe device nodes to unified "wifi@0,0".
- Add the missing "qcom,ath10k" compatibles.
- Remove unseless property "interrupt-controller". There are no
  consumers use these PCIe devices as interrupt controllers.
- Change bus number from 0 to 1, just like other ipq806x devices.
  The valid PCIe bus range on this platform is 1 - 255.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:28 +02:00
Shiji Yang
b56c773176 ipq806x: dts: reuse default PCIe bridge nodes
The default PCIe bridge nodes have been added upstream[1]. Remove
duplicate PCIe bridge definitions to simplify the device dts.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=0c4d19b125401957123989a25094972cf0e77670

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:27 +02:00
Shiji Yang
6bc9ebc31d ipq806x: dts: fix 6.12 kernel pinmux conflicts
Some pinmux nodes in the qcom-ipq8064.dtsi have been changed[1].
Adjust our local devices dts to solve the conflicts.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=de52c020e1a9c3313d88405a4545020b1f5ab24d

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:27 +02:00
Shiji Yang
7d2fd7d590 ipq806x: add PCIe bridge node reference labels for ipq8064.dtsi
Add bridge node labels so that we can insert PCIe peripheral nodes.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:27 +02:00
Shiji Yang
1125d07cf4 ipq806x: fix build errors on 6.12 kernel
- Replace "strlcpy()" with "strscpy()".
- Convert platform driver .remove() to .remove_new().

This patch fixes the following compile errors:

drivers/of/fdt.c:1064:17: error: implicit declaration of function 'strlcpy'; did you mean 'strncpy'? [-Wimplicit-function-declaration]
 1064 |                 strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE));
      |                 ^~~~~~~
      |                 strncpy

drivers/devfreq/krait-cache-devfreq.c:171:27: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
  171 |         .remove         = krait_cache_remove,
      |                           ^~~~~~~~~~~~~~~~~~

drivers/devfreq/ipq806x-fab-devfreq.c:145:27: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
  145 |         .remove         = ipq806x_fab_remove,
      |                           ^~~~~~~~~~~~~~~~~~

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:26 +02:00
Shiji Yang
1a76ae3269 ipq806x: refresh 6.12 kernel config files
Manually selected symbols:

- Enable ARCH_QCOM_RESERVE_SMEM
  Reserve SMEM at the beginning of RAM

- Enable QCOM_TZMEM_MODE_GENERIC
  TrustZone interface memory allocator mode

- Disable QCOM_QSEECOM
  Qualcomm QSEECOM interface driver

- Disable IPQ_NSSCC_QCA8K
  QCA8K(QCA8386 or QCA8084) NSS Clock Controller

- Disable INTERCONNECT_QCOM
  Qualcomm Network-on-Chip interconnect drivers

All other symbols are automatically refreshed by
`make kernel_oldconfig`.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:26 +02:00
Shiji Yang
621d480e0e ipq806x: refresh 6.12 kernel patches
Remove upstreamed:
901-mtd-spi-nor-n25q064a-wp.patch [1]

Manually rebased:
107-10-ARM-dts-qcom-add-saw-for-l2-cache-and-kraitcc-for.patch
108-01-ARM-dts-qcom-fix-wrong-nad_pins-definition-for-ipq80.patch
122-01-clk-qcom-krait-cc-handle-qsb-clock-defined-in-DTS.patch
122-04-clk-qcom-krait-cc-rework-mux-reset-logic-and-reset-h.patch
902-ARM-decompressor-support-for-ATAGs-rootblock-parsing.patch

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=86fd0e6410b453fed93cf8085de1e5b0cfdbb6b9

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:26 +02:00
Shiji Yang
a33d59f7af ipq806x: restore kernel 6.6 config files and patches
Copy patches and kernel configs from 6.12 kernel to restore the
default 6.6 kernel support files.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:25 +02:00
Shiji Yang
15fa59c41f ipq806x: rename patchset and kernel configs to 6.12
This is a preparation for 6.12 kernel support. It can help us
track the patches and Kconfig history by using the Git tool.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:25 +02:00
Shiji Yang
da57f9b6a4 ipq806x: refresh kernel symbol configs
This is a preparation for introducing the 6.12 kernel support.
All configs are automatically refreshed. In theory, they will
generate the same .config files in the kernel build directory
as before.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:25 +02:00
Shiji Yang
e82d113c39 ipq806x: fix dtc warnings for Linksys E8350 V1
- Add missing #address-cells and #size-cells to the partitions node
- Remove redundant #address-cells and #size-cells for the nand node

This patch fixes the following dtc warnings:

qcom-ipq8064-e8350-v1.dts:85.3-13: Warning (reg_format): /soc/nand-controller@1ac00000/nand@0:reg: property has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1)
qcom-ipq8064-e8350-v1.dts:95.5-25: Warning (reg_format): /soc/nand-controller@1ac00000/nand@0/partitions/partition@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
qcom-ipq8064-e8350-v1.dts:99.5-33: Warning (reg_format): /soc/nand-controller@1ac00000/nand@0/partitions/partition@4000000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18989
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-14 10:27:24 +02:00
Christian Marangi
297057f0f2 sdk: set package as the root directory for base feed
To produce consistent source entry for package compiled from non-SDK and
SDK build, set the "--root=package" flag for the base feed.

This will set the root directory for the base feed to the OpenWrt
core repository "package" directory.

This fix the reproducible problem of package build from SDK that have
the source entry set to "feeds/base/package/..." for every package
coming from the base feed.

Link: https://github.com/openwrt/openwrt/pull/20396
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-13 11:47:08 +02:00
Christian Marangi
e112fd8e59 scripts/feeds: implement support for --root option
Some feeds might need to set the source for their packages in a
different directory than the cloned one.

For example a feed "test" might be an entire repository and the relevant
packages that wants to be included are in the directory "foo".

In such scenario the source info in the package will result in something
like "feeds/test/foo/network/dnsmasq" instead of an expected entry like
"feeds/test/network/dnsmasq".

To give a more real-world example, this problem is currently present
with OpenWrt SDK where the SDK clone the entire OpenWrt core repository
as "base" feeds but the package are present in the "package" directory.

This cause every package to have the source entry set to
"feeds/base/package/..." conflicting with what a non-SDK build do with
setting the source entry to "feeds/base/..."

To solve this, actually enable support for "flags" in the feeds script
and implement a new option "--root" to set the root directory for the
defined feed to an inner directory.

The "flags" in the feed script are no more than argument option that can
be defined right after the "src-" type in the feed.conf file.

This feature was partially implemented but never actually used for
anything keeping it dormant with all the core piece there (the pattern
regex always accounted for these extra option but they were never passed
to the relevant functions)

An example of the "--root" flag is the following:

src-git --root=package base https://git.openwrt.org/openwrt/openwrt.git;main

With "--root" defined, the script will append "_root" to the feed name
clone directory and will create a symbolic link named with the feed name
and pointing to the feed name clone directory + the value in root.

From the previous example:

feed name: base -> clone directory: base_root
symbolic link: base -> base_root/package

The script internally reference the "_root" directory for every update
operation and OpenWrt build system transparently use the feed name
directory to reference feed packages producing consistent source info
entry.

Link: https://github.com/openwrt/openwrt/pull/20396
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-13 11:47:07 +02:00
Zhi-Jun You
6a68c2fef0 wifi-scripts: ucode: fix airtime_mode with hostapd-mini
Currently wifi-scripts ucode appends airtime_mode to hostapd config file
unconditionally.
However this breaks bringing up interface with hostapd-mini
because the mini variant doesn't support airtime policy.

Fix this by changing the script to append airtime_mode only when
airtime_mode is set to greater than zero value in /etc/config/wireless.

Fixes: #20136
Fixes: #20314

Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
2025-10-13 10:56:39 +02:00
Felix Fietkau
255d999783 ucode: add fs.mkdtemp function
Useful for creating temporary directories

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-13 10:56:39 +02:00
INAGAKI Hiroshi
f4d7eee8e0 uboot-ath79: update to v2025.10
Update the version of uboot-ath79 package to U-Boot v2025.10 release.

Tested on:

- NEC Aterm WG600HP (AR9344)
- NEC Aterm WG1400HP (QCA9558)

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20358
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-13 00:43:11 +02:00
Lorenz Brun
0e8231c887 realtek: fix SFP ports on RTL83xx
Right now the phylink capability function enables 2.5G and 10G modes on
Maple and Cypress, which they mostly (other than two SERDES on Cypress)
don't support. This causes these modes to be selected and break the link
as they are not supported by hardware.

I looked into doing this properly, but it cannot just be done based on
SoC, but needs to take the whole topology into account as a given MAC
might have very different capabilities depending on what SERDES are
assigned to it. So for now just use 1G and QSGMII for RTL83xx and 10G
for RTL93xx. This mostly works, except it will downgrade some 10G links
on RTL839x, but since there are also 1G SFPs on these this cannot be
solved without fully accounting for the global MAC and SERDES
configuration.

So this makes all of the 1G SFP slots work again, while keeping most of
the 10G SFP+ slots working at 10G with minimal changes.

Signed-off-by: Lorenz Brun <lorenz@brun.one>
Link: https://github.com/openwrt/openwrt/pull/20374
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-12 16:12:54 +02:00
Sven Eckelmann
3f7776a260 realtek: Skip auto-MAC assignment for devices with MACs in DT
If the devicetree contains the appropriate nodes to configure the MAC
addresses for each physical DSA port, then these MAC addresses must be used
in OpenWrt and not some automatically generated ones. Otherwise the device
often ends up with addresses which are locally administered and not
matching any expected port-to-MAC scheme.

Devices which only get the MAC address for eth0 must still auto-generate
these MAC addresses until the devicetree was updated to also include the
correct ones.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-12 15:52:13 +02:00
Sven Eckelmann
18e1929401 realtek: Avoid empty lan mac in initial network setup
If the lan_mac cannot be found, it is still used (as empty string) in
various operations. This is not valid and other 02_network scripts checking
for a non-empty string before using it. This should also be adopted for the
realtek 02_network.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-12 15:52:12 +02:00
Sven Eckelmann
f0648fd576 realtek: Split initial network setup in functions
Having everything in a big script without any structure makes it
unnecessary hard to get an overview or modify it without triggering
unexpected side effects.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-12 15:52:12 +02:00
Sven Eckelmann
1e0a4f11b3 realtek: dsa: Adjust prefix for bridge member functions
The preferred prefix for the Realtek DSA driver code is "rtldsa" and no
longer "rtl83xx". This makes sure that the different drivers have
non-conflicting prefixes and because of this non-conflicting function
names.

Suggested-by: Felix Baumann <felix.bau@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
6c6a003c7d realtek: dsa: Fix name of RTL93xx switch_ops
The RTL930x and the RTL931x SoC families share the same struct
dsa_switch_ops. This should be represented in the name of the object.

Suggested-by: Felix Baumann <felix.bau@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
0eeb8b7da6 realtek: dsa: Add support for port isolation
If two ports are in isolation mode then these ports are not supposed to be
able to communicate between each other. This can be achieved in the realtek
switch by removing the other isolated port(s) from the port list of an
isolated port.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
9b4e1a412e realtek: dsa: Drop unused traffic_get helpers
The realtek driver is now in full control of the port matrix. It doesn't
need to rely on the current state of the HW to adjust it. The new port
matrix is calculated automatically using rtldsa_update_port_member() and
then written to the registers/tables.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
77ce3f1a72 realtek: dsa: Simplify port member handling
It is not necessary to read the back the current port members for a
specific port for enabling/disabling a port. All these members which are
expected to be in the HW port matrix of an active port are already stored
in the port specific member "pm".

And when a port is disabled, the port must no longer forwarding traffic to
any other port. Just writing 0 to the members is therefore good enough and
no read-back of the old HW state is necessary.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
622e2d0971 realtek: dsa: Share port member configuration code
The leave and join callbacks for DSA were using their own implementation of
the port member handling code. This makes the implementation of additional
functionality based on the port member matrix complicated because it needs
to be implemented in both places and also in the new code path for the
introduced feature.

By sharing this code, it is much easier to guarantee that all code paths
behave the same. This approach is already implemented by other DSA drivers
like qca8k, mt7530 or ksz.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Sven Eckelmann
e696f39da8 realtek: Switch booleans in rtl838x_port to single bits
In upstream kernel, it is not well received to use a lot of simple booleans
in structs. It is preferred to use 1-bit bitfields [1] and consolidate the
booleans together.

[1] https://www.kernel.org/doc/html/v6.16/process/coding-style.html#using-bool

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:49:49 +02:00
Robert Marko
5e001d7ac3 ipq-wifi: add Yuncore AX850
It seems that adding Yuncore AX850 was missed during the board support,
and this breaks buildbots for ipq50xx with:
ERROR: unable to select packages:
  ipq-wifi-yuncore_ax850 (no such package):
    required by: world[ipq-wifi-yuncore_ax850]
make[4]: *** [/builder/shared-workdir/build/include/image.mk:396: target-dir-90b51871] Error 1
make[4]: *** Waiting for unfinished jobs....

So, add the required meta package.

Fixes: 5d2994a73e ("qualcommax: ipq50xx: Add support for Yuncore AX850")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 12:01:00 +02:00
Robert Marko
8ef2c4e881 ipq-wifi: update to Git HEAD (2025-10-09)
20e5a5a32656 qca4019: add Linksys MR6350 BDF

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-12 11:49:39 +02:00
Florian Eckert
112f594042 kernel: add missing cpe id for linux
No 'PKG_CPE_ID' is stored for the kernel package Makefile. This commit
adds this.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-10-11 22:12:46 +02:00
Tianling Shen
875e0bf791 uboot-rockchip: add u-boot device tree back for Radxa ROCK 4D
This was removed by mistake.

Fixes: 292cca0e5c ("uboot-rockchip: Update to 2025.10")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20376
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-11 21:56:15 +02:00
Stefan Kalscheuer
8c952afd91 uboot-mvebu: update to version 2025.10
Update package to the latest stable version.
All patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20380
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-11 21:52:21 +02:00
Stefan Kalscheuer
50e4d4f4ba tools/mkimage: update to version 2025.10
Update package to the latest stable version.
All patches need to be updated.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20379
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-11 21:50:41 +02:00
Stefan Kalscheuer
cf498325f1 uboot-tools: update to version 2025.10
Update package to the latest stable version.
All patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20379
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-11 21:50:41 +02:00
Daniel Golle
011ba05fd3 uboot-mediatek: update to U-Boot v2025.10
The most relevant change is the removal of the empty board_init()
functions by u-boot/u-boot@70a4d1fa1d, which makes many patches not
apply anymore and also requires most board defconfigs to be updated
by adding "# CONFIG_BOARD_INIT is not set" to them.

Also some config symbols have been renamed and downstream boards
had to be adapted accordingly:

u-boot/u-boot@0fd9a3480a ("env: Rename OVERWRITE_ETHADDR_ONCE to
                            ENV_OVERWRITE_ETHADDR_ONCE")

u-boot/u-boot@5fb88fa725 ("env: Rename SYS_REDUNDAND_ENVIRONMENT to
                            ENV_REDUNDANT")

u-boot/u-boot@123682c765 ("env: Rename SYS_RELOC_GD_ENV_ADDR to
                            ENV_RELOC_GD_ENV_ADDR")

u-boot/u-boot@0f44d5549e ("env: Rename SYS_MMC_ENV_DEV to
                            ENV_MMC_DEVICE_INDEX")

u-boot/u-boot@31617b880a ("env: Rename SYS_MMC_ENV_PART to
                            ENV_MMC_EMMC_HW_PARTITION")

u-boot/u-boot@ffc4914703 ("env: Rename ENV_MMC_PARTITION to
                            ENV_MMC_SW_PARTITION")

u-boot/u-boot@fb5235239a ("env: Rename DEFAULT_ENV_FILE to
                            ENV_DEFAULT_ENV_TEXT_FILE")

(also renamed USE_DEFAULT_ENV_FILE to USE_ENV_DEFAULT_ENV_TEXT_FILE)

Remove upstreamed patches:
 * 001-mtd-spinand-winbond-add-Winbond-W25N04KV-flash-suppo.patch
   u-boot/u-boot@fe37fb8214

 * 002-mtd-spinand-gigadevice-sync-supported-chips-with-lin.patch
   u-boot/u-boot@506ceddffd

 * 003-net-mediatek-correct-the-AN8855-TPID-value-in-port-i.patch
   u-boot/u-boot@70db2be9fb

 * 004-01-serial-mediatek-fix-register-names-and-offsets.patch
   u-boot/u-boot@6e15d3f91a

 * 004-02-serial-mediatek-enable-baudrate-accuracy-compensatio.patch
   u-boot/u-boot@6952209ef2

 * 005-clk-mediatek-add-dummy-clk-enable-disable-ops-for-ap.patch
   u-boot/u-boot@1bf2121297

 * 006-env-Fix-possible-out-of-bound-access-in-env_do_env_s.patch
   u-boot/u-boot@0ffd456516

 * 130-01-env-mtd-add-the-missing-put_mtd_device.patch
   u-boot/u-boot@39ae954b04

 * 130-02-env-mtd-initialize-saved_buf-pointer.patch
   u-boot/u-boot@7e842bd331

 * 170-cmd-bootmenu-permit-to-select-bootmenu-entry-with.patch
   u-boot/u-boot@8c986521c3

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-10-10 16:35:58 +01:00
Tianling Shen
292cca0e5c uboot-rockchip: Update to 2025.10
Removed upstreamed patches, rebased local patches.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20331
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-10-10 11:07:48 +02:00
Jonas Jelonek
5b527704b1 realtek: pcs: add setup_serdes callback to rtpcs_cfg
Add a callback for a serdes setup function to rtpcs_cfg to allow each
SoC variant to define its own SerDes setup routine.

Call the setup_serdes operation in pcs_config if it is defined.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20352
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 11:00:15 +02:00
Jonas Jelonek
3cf04d2e0b realtek: pcs: add more SerDes access helpers
Add more SerDes access helpers for the upcoming code import from PHY
driver. There, similar helpers are used to read and write full SerDes
registers or only parts of them (aka bitfields).

The helpers are expected to replace the following used in PHY SerDes
code:
  - rtl9300_sds_field_r
  - rtl9300_sds_field_w
  - rtsds_931x_read
  - rtsds_931x_read_field
  - rtsds_931x_write
  - rtsds_931x_write_field

Mark the helpers as unused for now to make the compiler happy. This will
be removed as soon as they are used.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20352
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 11:00:15 +02:00
Patrick Oppenlander
74f74edfe1 x86/64: enable 8250_DW
This driver is required for the serial port on headless embedded AMD Ryzen
Embedded V3000 devices such as the SolidRun BEDROCK V3000.

Signed-off-by: Patrick Oppenlander <patrick.oppenlander@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20353
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 10:32:20 +02:00
Mikhail Kshevetskiy
a626b7e74d airoha: spi: use airoha snfi driver for EN7523
There are two spi drivers for en7523/an7581/an7583:
 * en7581-snand (spi-airoha-snfi.c)
 * en7523-spi (spi-en7523.c)
The first one supports DMA, but until recently it has several nasty
issues. The second do things properly but does not support DMA.
Recently the first driver was greatly improved, so there is no sence
keep both drivers anymore.

This patch removes en7523-spi driver and use DMA capable driver instead.
Unfortunately there is a nasty en7523 specific issue.

We found that some serial console may pull TX line to GROUND during board
boot time. Airoha uses TX line as one of it's BOOT pins. This will lead
to booting in RESERVED boot mode. It was found that some flashes operates
incorrectly in RESERVED mode if DMA used.

This patch also adds a hack that turns off DMA and prints big fat warning
if booting in reserved mode was detected. This slow down flash operations
but does not kill your data.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 10:30:10 +02:00
Mikhail Kshevetskiy
25c48519cd airoha: clk: add support of reset controller
This allows us use more easily port en7581 drivers to en7523.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 10:30:09 +02:00
Mikhail Kshevetskiy
fe31e5c82a airoha: net: fix building for en7523
Latest an7581/an7583 improvements breaks en7523. This patch just fixes
en7523 building.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-10 10:30:09 +02:00
John Audia
17badf6099 kernel: bump 6.12 to 6.12.51
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.51

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20315
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-09 23:13:45 +02:00
Mikhail Kshevetskiy
1949fb996a boot: airoha: apply network driver fixes
This series improve network reliability.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Mikhail Kshevetskiy
e06725222e boot: airoha: snfi: remove dirty hack required for both u-boot & linux
This patch removes dirty hack used to:
 * operate with flash
 * pass flash page settings to linux driver via SNFI registers

It has been proven that spinand flash page size is actually unnecessary.
We can get all required data from dirmap requests. Thus this patch
series drops the hack and do things properly.

After this fix (and corresponding linux fix) the hack is not needed
anymore.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Mikhail Kshevetskiy
e67ba973d2 boot: airoha: speed up spinand flash operations using dma
This patch series greatly improve flash operation speed in u-boot.
The measurement shows:

With DMA:
  => mtd read.benchmark spi-nand0 $loadaddr 0 0x8000000
  Reading 134217728 byte(s) (65536 page(s)) at offset 0x00000000
  Read speed: 8131kiB/s

Without DMA:
  mtd read.benchmark spi-nand0 $loadaddr 0 0x8000000
  Reading 134217728 byte(s) (65536 page(s)) at offset 0x00000000
  Read speed: 2062kiB/s

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Mikhail Kshevetskiy
a406e38077 airoha: spi: remove snfi driver dirty hack
This patch series removes dirty hack that reads flash page settings from
SNFI registers during driver startup.

Before these patches the airoha spi snfi driver needs to know spinand
flash page size. The driver can't get it from spinand subsystem, so the
following approach was implemented:
 * bootloader know the flash page size (and some other parameters)
 * to operate properly the bootloader writes flash page size (and some
   other parameters) to SNFI registers
 * bootloader starts linux
 * after linux start SNFI registers keeps the values stored by bootloader
 * linux snfi driver reads flash parameters from SNFI registers.

This works, but we can do better. It has been proven that flash page size
is actually unnecessary. We can get all required data from dirmap requests.

This patch series drops the hack and do things properly.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Mikhail Kshevetskiy
5ff0e70930 airoha: spi: snfi driver fixes & improvements
This patch series greatly improve airoha snfi driver and fix a
number of serious bugs.

Fixed bugs:
 * Fix reading/writing of flashes with more than one plane per lun
 * Fill the buffer with 0xff before writing
 * Fix reading of flashes supporting continuous reading mode
 * Fix error paths

Improvements:
 * Add support of dual/quad wires spi modes in exec_op(). This also
   fix flash reading/writing if dirmap can't be created.
 * Support of dualio/quadio flash reading commands

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Mikhail Kshevetskiy
32229a4bb7 kernel: mtd: spinand: continuous mode fixes
Continuous reading mode is broken for some spi controllers. There are two
possible bug scenarios:

1) "continuous mode" flash and spi controller without dirmap support,
   but with restriction on transfer length in adjust_op_size()

2) "continuous mode" flash and spi controller with dirmap support for a
   single flash page

In the first case, any read that exceeds the limit specified in adjust_op_size()
will result in an EIO error. The limit may even be less than a size of a single
flash page. In this case, any read will result in an error.

In the second case, any read larger than flash page size will result in an EIO
error or spinand driver spoofing (because the spi controller driver returns
more bytes than were actually read).

This patch series tries to fix continuous reading (spinand driver side).
Unfortunately these fixes can't resolve "spinand driver spoofing" case.
Spi controller drivers might need fixes as well.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 16:37:25 +02:00
Petr Štetiar
8a8bfcc7fe ppp: fix PKG_MIRROR_HASH
Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. Can be
reproduced with:

 make package/ppp/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 13:37:58 +02:00
Petr Štetiar
7d4edb21b6 ebtables: fix PKG_MIRROR_HASH
Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. Can be
reproduced with:

 make package/ebtables/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 13:37:58 +02:00
Petr Štetiar
8c030a3b13 tools: xxhash: fix PKG_MIRROR_HASH
Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. After
042996b46b revert the correct hash can be reproduced with:

 make tools/xxhash/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 13:37:58 +02:00
Shubham Vishwakarma
5d2994a73e qualcommax: ipq50xx: Add support for Yuncore AX850
Specifications:
SOC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
Flash: SPI NOR 8MB (Winbond W25Q64DW) + NAND 128MB (Winbond W25N01GWZEIG)
Memory: 512MB DDR3L
Standard: 802.11ax/ac/b/g/n
2.4G Frequency: 2.4GHz - 2.484GHz
2.4G Wi-Fi standard: 802.11b/g/n/ax
5G Frequency: 5.150GHz~5.850GHz
5G Wi-Fi Standard: 802.11 a/n/ac/ax
Buttons: 1 * Reset button, press 10 seconds to revert to default setting
2.4G Antenna: 2*2.4GHz/5.8GHz dual band antenna: 4dBi
5G Antenna: 2*5.8G antenna: 4dBi
Data Rate: 2.4GHz: 574Mbps, 5GHz:4800Mbps
Power: PoE 802.3at,DC2.0 12V/2A
Max Power Consumption: < 22W
LED Light: WAN, LAN, tricolor LED(sys-red, 2.4G-green, 5.8G-blue)

BACKUP YOUR STOCK FIRMWARE:
- Put openwrt-*-initramfs-uImage.itb to your
  TFTP server and rename it to initramfs.bin
- Enable serial console and enter to u-boot cli
  and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:initramfs.bin
    bootm
    ```
- Once boot completed and you get the openwrt shell
  execute below commands:
    ```
    device=ax850
    mkdir -p /tmp/fw_backup; cd /tmp/fw_backup
    rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1)
    rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1)
    dd if=/dev/${rootfs} of=rootfs_${rootfs} bs=1M
    dd if=/dev/${rootfs_1} of=rootfs_1_${rootfs_1} bs=1M
    cp /sys/firmware/fdt fdt.dtb
    md5sum * > md5sum
    tar -cvzf /tmp/${device}.tar.gz .
    sum=$(md5sum /tmp/${device}.tar.gz | cut -d' ' -f1)
    mv /tmp/${device}.tar.gz /tmp/${device}_${sum}.tar.gz
    echo "stock fw backup saved to: /tmp/${device}_${sum}.tar.gz"
    ```
- Upload/save your backup to a safe place.

STOCK FIRMWARE RECOVERY:
- Boot initramfs image
- Upload your backed-up stock fw tarball to the device
  using scp or download it from the device using wget.
- Enter device ssh cli or tty and exec:
    ```
    cd /tmp && wget <your_web_server_ip>/${stock_fw_backup}.tar.gz`
    tar -xpzf ${stock_fw_backup}.tar.gz
    rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1)
    rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1)
    ubiformat /dev/${rootfs} -y -f /tmp/rootfs_${rootfs}
    ubiformat /dev/${rootfs_1} -y -f /tmp/rootfs_1_${rootfs_1}
    reboot
    ```

INSTALLATION:
1. initramfs method
- Put openwrt-*-initramfs-uImage.itb to your
  TFTP server and rename it to initramfs.bin
- Enable serial console and enter to u-boot cli
  and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:initramfs.bin
    bootm
    ```
- Once boot completed and you get the openwrt shell
  execute below commands:
    ```
    cd /tmp && wget <your_web_server_ip>/factory.ubi`
    export rootfs=$(cat /proc/mtd | grep rootfs | cut -d: -f1)
    export rootfs_1=$(cat /proc/mtd | grep rootfs_1 | cut -d: -f1)
    ubiformat /dev/${rootfs} -y -f factory.ubi
    ubiformat /dev/${rootfs_1} -y -f factory.ubi
    reboot
    ```

2. u-boot factory.ubi image method
- Put factory.ubi to your TFTP server and
  enter u-boot cli and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:factory.ubi
    #After downloading is finished:
    flash rootfs
    flash rootfs_1
    reset
    ```

Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in>
Link: https://github.com/openwrt/openwrt/pull/19712
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-09 13:36:37 +02:00
Paul Spooren
084697eb62 package: do not sign individual APK packages
APK, unlike OPKG, can sign individual packages and not just indexes.
Since OpenWrt uses a distributed build infrastructure and only the build
master owns the private keys, signing of individual buildworkers doesn't
work. Right now, each buildworker creates a temporary build key to sign
packages, then transmits the package index to the buildmaster for a
signature.

As a result, all individual packages contain a nonsensical signature,
making them harder to reproduce. This commit removes the individual
package signing.

Since APK requires signatures per default, explicitly allow installation
of unsigned packages during the build process.

The config option here is for historical reasons misleading,
SIGNED_PACKAGES refers to the package index, not the individual
packages.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-10-09 12:52:43 +02:00
Felix Fietkau
ad6df8a3c8 ucode: add patches that make it easier to deal with non-blocking fds
This allows creating pipes for subprocesses to use as stdin/out/err
and polling them from a uloop process.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-09 09:57:30 +02:00
Felix Fietkau
7418c2d89b ucode: fix reusing the current environment in uloop.process()
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-08 19:50:29 +02:00
Rosen Penev
987b1484a6 mediatek: fix wrong reset_gpio
Should be reset-gpio. Also added GPIO_ACTIVE_HIGH for clarity.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:25 +02:00
Rosen Penev
a4ace63b7c ipq40xx: clkreq-gpio to clkreg-gpios
The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
c09211d7cf ipq40xx: wake-gpio to wake-gpios
The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
c72a6fa339 treewide: perst-gpio to perst-gpios
The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
1ab12d5d8c treewide: enable-gpio to enable-gpios
The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
c186d17fa5 treewide: replace numbers with GPIO_ACTIVE
The latter is more descriptive in terms of what's going on.

Mostly found with

git grep gpios\  | grep 0\>
git grep gpios\  | grep 1\>

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
3a79019664 treewide: reset-gpio to reset-gpios
The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Rosen Penev
5572d35f77 treewide: gpio to gpios
The former is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 14:26:24 +02:00
Paul Spooren
4bef775c70 packages: bump APK to improve reproducibility
The package bump to version rc6 incorporates two recent changes, first, the
stored `mtime` honors SOURCE_DATE_EPOCH, making a prior "touch" obsolete.
Secondly the order of files added to created packages is now sorted, improving
reproducibility, too.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-10-08 11:13:33 +02:00
Goetz Goerisch
5b1cb76a01 odhcpd: update to Git HEAD (2025-10-07)
f0d855358b86 ndp: Allow NS loopback for master iface
f770588f5ed6 dhcpv4: move dhcpv4_init() to end of dhcpv4.c
2bb556ed0dd6 dhcpv4: rename valid_until_cb()
65986596a60d dhcpv4: reorder more functions
13e6c7271228 dhcpv4: rename setup_dhcpv4_addresses()
14a480dc9d26 dhcpv4: rename handle_addrlist_change()
0cf95c471d77 dhcpv4: move and rename handle_dhcpv4()
869e2942f3f1 dhcpv4: replace ip4toa() with inet_ntop()
2a8dd31261b6 dhcpv4: move dhcpv4_free_assignment()
d514cb558ef3 dhcpv4: move dhcpv4_fr_stop() up
2649ee838c05 dhcpv4: move struct dhcpv4_dnr to header
057e238b0934 dhcpv4: reorder some more functions
bdaffc2e7683 dhcpv4: move find_assignment_by_hwaddr()
354ed627425c dhcpv4: move the remaining forward declaration
0b0ddaa9a1a4 dhcpv4: rename a variable in dhcpv4_assign()
63617a2d2df0 odhcpd: print compiled-in features in help message
01f571dcf9fd ubus: don't expose ipv4leases if not supported
57495fc4c3d3 ubus: minor correctness fix
3b3a3336470f ubus: improve correspondence between DHCPv[46]
031e1c799f59 dhcpv4: dhcpv4_fr_rand_delay() fixups
11c8ef57da64 dhcpv4: update dhcpv4_msg_to_string()
efafcbdbb0ab dhcpv4: remove some magic numbers
aa04946ac65a dhcpv4: rename cookie variable
99c35f35971c dhcpv4: simplify dhcpv4_fr_send() a bit
f26abfdd27c0 dhcpv4: make the cookie explicit in struct dhcpv4_message
80b881e860e0 dhcpv4: simplify dhcpv4_setup_interface()
5eac9c56ff3b router: fix SLAAC on subnets > 64

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20332
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-08 10:16:12 +02:00
Rosen Penev
1a3f05eb2b ipq806x: fix wifi node
In the conversion to nvmem of eax500 and unifi-ac-hd, the address was
set to 0 as is the case with most platforms, but not this one.

The wifi node also needs to be wrapped in a bridge node.

Matches every other device in ipq806x.

Fixes: 148f82ad45 ("ipq806x: use nvmem for wifi mac")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20325
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-08 10:04:14 +02:00
Aleksander Jan Bajkowski
b64fdedeac iw: bump to 6.17
Changelog:
  a52bda0 (HEAD, tag: v6.17) bump version to 6.17
  c5bfa2a iw: add support to print link level information in station dump
  efaf786 iw: Add support to set per-radio RTS threshold in multi-radio wiphy
  009ad3b update nl80211.h
  aef3798 iw: don't set stupid socket buffer size
  8d52fb4 iw: scan: Add partial Multi-Link element printing
  cfc0695 iw: print HE mcs correctly when mcs_len
  8e4808f iw: Add command to enable/disable EPCS
  85b79b3 update nl80211.h
  612f9f5 iw: Prevent segfault in ftm get stats
  1558e60 iw: print NO-EHT flags for reg get command
  59660a3 iw: fix EHT capabilities on Big Endian platforms
  8ea80d3 iw: scan: Add printing of EHT Operation Element
  7c0511b util: rename hz to Hz vol 2
  c2a12a5 util: rename hz to Hz
  0cc98ae iw: scan: Decode additional WPA3 group ciphers
  f04e5c5 iw: scan: Decode additional WPA3 AKM suite types
  41a07a8 iw: fix HE operation on Big Endian platforms
  c41971e iw: fix HE capabilities on Big Endian platforms
  a6ad3f1 iw: scan: add eht capability parsing
  4c85991 iw: util: update and clean up eht capa printing
  a0a7dde iw: scan: replace passed ie buffer with ie context
  7bc2a84 iw: print tx power per link for MLD
  478ddd4 iw: add output for wiphy interface combinations
  93e2309 update nl80211.h
  966c590 iw: scan: add enum for element IDs
  422419e scan: Add printing of HE Operation Element
  d088c8a update nl80211.h
  73231dd iw: fix formats under MIPS64/PPC
  8609336 iw: remove sizer section and related code
  c8b9e77 util: clarify comment about 'parsed' pointer
  b29da20 iw: add puncturing support
  cce9897 iw: refactor frequency help

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20321
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-08 01:06:27 +02:00
Goetz Goerisch
7a793724b1 kernel: bump 6.6 to 6.6.110
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.110
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20320
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-08 01:03:34 +02:00
Marcin Leksmark
2b7fffa963 ramips: add support for Cudy C200P
This patch adds support for Cudy C200P.

Specifications:

    SoC: MediaTek MT7621AT
    RAM: 256 MB (DDR3)
    Flash: 16 MB (NOR)
    POE Chip: IP804AR

Interfaces:

    Switch: 1 WAN, 4 LAN (Gigabit)
    Gigabit RJ45 PoE Ports on 2~5
    Max Power on a Single PoE Ports 	30W
    PoE Ports : The PoE ports comply with IEEE 802.3at/af standards.
    Ports: 1 USB-A 3.0 Ports

LED:

    System
    PoE Max Status
    Link/ACT/PoE Status of Each PoE Port

Physical Buttons:

 	Reset Button

Power Input:

 	DC Jack

Power Methods:

    DC: 54V 1.11A
    802.3at/af PoE
    Passive PoE: 24/48V

Max Power Consumption (W):

 	Total: 60W
    PoE: 55W
    PoE (when USB Device is plugged in): 50W
    No PoE: 5W

Installation:

To install OpenWRT, you need the intermediate firmware from Cudy. (U-boot is locked). After installing the intermediate firmware, you can install OpenWRT via sysupgrade.

Recovery:

TFTP available.
1. Place the recovery.bin in the serving directory of your TFTP server.
2. Set your IP to 192.168.1.88/24.
3. Press the “Reset” button of Cudy router and hold it. Before the Cudy router is powered on and before TFTP start to download the firmware, don't release the “Reset” button.
4. Power on the Cudy router.
5. You can release the reset button only when TFTP starts downloading firmware.
6. When the SYSTEM LED turns solid green, the upgrade is complete.

Serial:

1. Serial connection parameters: 115200 / 8N1
2. Serial connection voltage: 3.3V

PoE is not supported at the time of PR. The IP804R chip is not yet supported by OpenWRT.

Signed-off-by: Marcin Leksmark <lexmark3200@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20165
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-08 00:59:35 +02:00
Erik Karlsson
11820ef801 rules.mk: do not set CCACHE_NOHASHDIR
Not hashing CWD is potentially unsafe since it involves deliberately
poisoning the cache in certain situations in exchange for performance
gain. It can lead to debug information pointing out either no longer
existing or much worse incorrect source files, possibly leading
developers onto a false track and wasting a lot of time.

If one wishes to save build time by sharing the cache between multiple
source trees, this can be achieved safely by enabling reproducible
debug information, like this:

CONFIG_CCACHE_DIR="$(HOME)/.ccache"
CONFIG_REPRODUCIBLE_DEBUG_INFO=y

Note that CWD hashing gets disabled implicitly when reproducible debug
information is enabled. The CCACHE_NOHASHDIR option is only for
disabling CWD hashing in cases where it is not safe to do so.

Signed-off-by: Erik Karlsson <erik.karlsson@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20317
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-07 11:40:58 +02:00
Thomas Martitz
133c91823c realtek: rtl930x: add XGS1250-12 B1 device
The A1 and B1 devices are largely the same. The differences
seem to be:
- RTL8218D (A1) vs RTL8218E (B1) PHY for the eight 1 Gbps TP ports
- Aquantia (A1) vs RTL8261N (B1) PHY for the three 10 Gbps TP ports

RTL8218D/E share the same driver and support was added already by
commit c8c187f0f0 ("realtek: add support for RTL8218E").

The RTL8261N is also already supported but it's located at
different addresses compared to the A1 device. This requires
the device tree to be split. As a result, the devices are require
different images.

I found the smi addresses on the forum:
https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875/3622
And I can conform on my B1 device that this is working.

Co-developed-by: Mathias Kresin <dev@kresin.me>
Signed-off-by: Thomas Martitz <thomas.martitz@mailbox.org>
Link: https://github.com/openwrt/openwrt/pull/20150
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:25:02 +02:00
Harshal Gohel
9f5e43b8da realtek: rtl931x: Allow to overwrite LED portmask
There are switches which share the same overall hardware design but remove
just a couple of components for the low cost variant. For example, a 8+2
(ethernet+SFP) switch might have a low cost variant which only has 8
ethernet ports. In this case, the PCB will be shared but components for SFP
will just be dropped.

The LED shift registers will be the same between the two switches but the
ports are different. But since the rtl930x_led_init code is trying to
calculate the number of LEDs using the LED ports, the ethernet status ports
will then suddenly be shifted by two ports.

It is therefore necessary to have a mechanism to overwrite the detection of
the ethernet ports in the LED initialization and force some ports to
"virtually there" for the LED controller.

This functionality was already implemented for Plasma Cloud PSX8 (RTL930x)
but some devices using RTL931x might also benefit from a similar feature.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Harshal Gohel
254c9ac40b realtek: rtl931x: Cleanup LED set initialization
The LED sets must be configured before per-port LEDs are actually assigned.
At the same time, the LED set configuration was basically unreadable and
the RTL930x from commit 2cfb1ecf10 ("rtl930x: Rework per port LED
configuration") does a better job. Instead of moving the old implementation
around, just adopt the one from RTL930x.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Sven Eckelmann
38d35f413d realtek: rtl931x: Add support for active-low LEDs
RTL930x received support for specifying active low/high LEDs in commit
bec9e79a99 ("realtek: dsa: support active-high LEDs"). But this was
completely forgotten on RTL931x.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Sven Eckelmann
546722f95e realtek: rtl931x: Switch LED init to dev_* message helper
The usage of pr_* helper inside a device driver should be avoided. The
dev_* helper provide more context about which device the message actually
is.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Sven Eckelmann
21d56eeefa realtek: rtl930x: Clean up LED set initialization
The integration of the LED set initialization for RTL931x added also minor
improvements in the coding style. Just adopt them also for RTL9301x.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Sven Eckelmann
fb01b901e7 realtek: rtl930x: Fix out-of-bounds check in LED set configuration
of_property_count_u32_elems returns the number of u32 and not the number of
bytes. It must therefore be checked against the number of u32 in set_config
and not the bytes in set_config.

Fixes: 2cfb1ecf10 ("rtl930x: Rework per port LED configuration")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Harshal Gohel
ebb79d0f84 realtek: rtl930x: Allow to overwrite LED portmask
There are switches which share the same overall hardware design but remove
just a couple of components for the low cost variant. For example, a 8+2
(ethernet+SFP) switch might have a low cost variant which only has 8
ethernet ports. In this case, the PCB will be shared but components for SFP
will just be dropped.

The LED shift registers will be the same between the two switches but the
ports are different. But since the rtl930x_led_init code is trying to
calculate the number of LEDs using the LED ports, the ethernet status ports
will then suddenly be shifted by two ports.

It is therefore necessary to have a mechanism to overwrite the detection of
the ethernet ports in the LED initialization and force some ports to
"virtually there" for the LED controller.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-07 00:13:43 +02:00
Zoltan HERPAI
78df0493d3 pistachio: enable hash offload engine
The cTX200 CPU has an integrated hash offload
engine. Enable the support for that.

[    2.212384] img-hash-accelerator 18149600.hash: Img MD5/SHA1/SHA224/SHA256 Hardware accelerator initialized

driver       : img-sha256
driver       : img-sha224
driver       : img-sha1
driver       : img-md5

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2025-10-06 22:45:40 +02:00
George Tsiamasiotis
2730d1186a iproute2: enable automatic color output by default
Support for color output has existed in iproute2 since forever and we
never compile it out, even in tiny variants. As such, not requiring
people to constantly add -c to their ip commands is a nice QoL feature.

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:08:56 +02:00
George Tsiamasiotis
4153205022 iproute2: split iproute2 configure and compile logic
Previously we relied on the iproute2 makefile automatically running the
configure script on first run. This does not allow control of some
configure options, or of when the configure script is re-run.

The motivating usecase here is ./configure --color=auto, though that is
not implemented in this commit.

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:08:56 +02:00
George Tsiamasiotis
2069b83ec6 iproute2: stop writing unused snapshot information
iproute2 already generates and uses a proper version string based off
of git since 2020 [1]. Since the aforementioned commit has already
removed the include for SNAPSHOT.h, this bit of code has had no effect
since then other than disabling the built-in configure script invocation.

[1]: https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=fbef655568ee931a82ad463a6f46f01ce3fb27aa

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:08:56 +02:00
Til Kaiser
badf145f11 x86: rename and configure Mellanox Spectrum interfaces
This commit renames all management network ports of the
SN2100, SN2700, SN3420, and SN3700 switches based
on their PCI address during boot.

For the default network config, the management and
QSFP port(s) are put into the br-lan bridge.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:06:26 +02:00
Til Kaiser
055d877a20 base-files: add ucidef_set_interface_netdev_range function
The ucidef_set_interface* functions can be used to
add network interfaces to a default network configuration.
Such network interfaces often have the same base interface
name (e.g., eth* or lan*). On devices with many network ports,
adding all ports to the default config can become inconvenient.

This commit adds a new uci function ucidef_set_interface_netdev_range,
which adds network interfaces for a specific port range to a given
OpenWrt interface. The first parameter is the OpenWrt interface, the
second is the base interface name, the third is the port start, and
the fourth is the port end range.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:06:26 +02:00
Til Kaiser
8edcd772db kernel: modules: add Mellanox Spectrum hotplug renaming script
Currently, the interfaces of the Mellanox Spectrum Switch QSFP ports
are all labeled eth*. Their order doesn't match the faceplate and is
different for each model.

They could be named during boot, but this isn't sufficient because they
support port splitting. After such ports are split, their port naming
begins again with eth*, and the same is true after they are unsplit again.

A hotplug script is used here that reads from the sysfs file
phys_port_name, which contains p1, p2, p3, ... for unsplit ports
and p1s0, p1s1, p1s2 for split ports.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:06:26 +02:00
Til Kaiser
f22f533ebc kernel: modules: load e1000e driver during pre-init stage
Set the pre-init boot flag for the e1000e network device
driver so that it is loaded during the early pre-init
stage of the boot process instead of later.

Then, it is possible to rename its network ports via the
ucidef_set_network_device_path function from the
02_network script while booting.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 19:06:26 +02:00
Daniel Tang
515a86b895 realtek: dts: rearrange mdio-bus for tplink_sg2xxx
This appears to have been missed in #19986.

Signed-off-by: Daniel Tang <tangrs@google.com>
Link: https://github.com/openwrt/openwrt/pull/20306
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-06 12:51:36 +02:00
Zoltan HERPAI
3ec468ff4f sunxi: add F1C100 (arm926ej-s) support
This is Allwinner's ARM926EJ-S core, which is one of its early
products, reappearing in recent compact designs. The SoC includes
32/64Mb memory in the same physical package, and has display and USB
interfaces, allowing for very small footprint boards.

The target consists of basic 6.12 support, with u-boot. Instead of creating
a separate suniv target, as both the kernel and u-boot supports enough of
this SoC by now with minimal patching, add it into sunxi as a subtarget.

Link: https://github.com/openwrt/openwrt/pull/15022
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2025-10-06 10:26:56 +02:00
Felix Fietkau
09ae2daa7c netifd: update to Git HEAD (2025-10-06)
649028013a3c config: fix overriding bridge-vlan sections via procd data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-06 09:56:27 +02:00
Álvaro Fernández Rojas
ea79b5875a odhcpd: update to Git HEAD (2025-10-02)
b14cf98 router: log “Sending a RA on lan” at LOG_DEBUG
c2810fe odhcpd: update cmake file
8c2c065 odhcpd: convert README to markdown
3b96480 odhcpd: allow the use of an alternative cfg file
7328bfe odhcpd: remove confusing #defines
cdb9e5b odhcpd: improve RFC9096 § 3.5 SLAAC compliance

RFC9096 § 3.5 SLAAC compliance introduces a new config option (odhcpd
piofolder), which may wear out the flash under certain conditions (for
example: ISPs with dynamic IPv6 prefixes which disconnect the clients
every X hours).
Therefore, setting "dhcp.odhcpd.piofolder" to persistent storage in the
router flash is not advisable and should be set to other kinds of
persistent storage such as USBs, SDs, NVMEs...
In order to prevent wearing out the router flash it's set to ephemeral
storage by default (tmp):
  uci set dhcp.odhcpd.piofolder="/tmp/odhcpd-piofolder"

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-10-05 22:10:17 +02:00
Christian Marangi
11a7c77fcb uci: update to Git HEAD (2025-10-05)
272fc1348ea9 lua: CMakeLists: drop redundant cmake_minimum_required
5e69edac2ec4 CMakeLists: fix CMake warning for INCLUDE macro

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-05 14:34:57 +02:00
Markus Stockhausen
c18476d0c5 realtek: RTL931x: disable USXGMII SerDes setup
The first RTL931x devices make their way into OpenWrt. Their copper
ports are driven by different interfaces modes like 10G_QXGMII or
Realtek proprietary XSGMII. The DSA driver has no proper handling
for theses modes implemented yet. So a lot is auto-mapped to USXGMII
internally. As soon as the SerDes setup activates this (wrong) mode
the PHY connectivity breaks.

Disable this mode for now and rely on the proper U-Boot setup.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20292
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-05 12:15:03 +02:00
Markus Stockhausen
8916b26a66 realtek: drop source-only from NAND targets
Now the NAND targets have real devices that need to be built.
Remove the source-only flag to make the images available.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-05 12:14:05 +02:00
Markus Stockhausen
f88135b7cd realtek: add support for Linksys LGS352C
Hardware specification
----------------------

* RTL9311 SoC, 2 MIPS Interaptiv cores @ 1000MHz
* 512MB DRAM
* 2MB NOR Flash
* 128MB NAND Flash
* 48 x 10/100/1000BASE-T ports
* 4 x 10G SFP+ ports
* LM63 controlled fan
* Power LED, Fault LED
* Reset button on front panel
* UART (115200 8N1) via RJ45

Installation using serial interface
-----------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Start network "rtk network on"
3. Load image "tftpboot <TFTP IP>:openwrt-realtek-rtl931x_nand-linksys_lgs352c-initramfs-kernel.bin"
4. Boot image "bootm"
5. Switch to first bootpartition "fw_setsys bootpartition 0"
5. Download sysupgrade "scp <IP>:openwrt-realtek-rtl931x_nand-linksys_lgs352c-squashfs-sysupgrade.bin /tmp/."
6. Install sysupgrade "sysupgrade /tmp/openwrt-realtek-rtl931x_nand-linksys_lgs352c-squashfs-sysupgrade.bin"

Installation using OEM webinterface
-----------------------------------

This is not possible because the OpenWrt NAND Flash layout is different
from the vendor layout. To be precise. Vendor uses:

- 64 MB vendor UBI root_data
- 32 MB vendor kernel+root 1 (~19 MB used)
- 32 MB vendor kernel+root 2 (~19 MB used)

OpenWrt uses:

- 64 MB vendor UBI (not touched)
- 10 MB OpenWrt kernel
- 22 MB Openwrt mtd-concat UBI
- 23 MB vendor kernel 2 (space reduced, vendor data unchanged)
- 09 MB OpenWrt mtd-concat UBI

Dual-boot with stock firmware using writable u-boot-env
-------------------------------------------------------

From stock to OpenWrt / primary image 1 (CLI as admin):
   - > boot system image1
   - > reboot

From OpenWrt to stock / boot image 2: (shell as root)
   - # fw_setsys bootpartition 1
   - # reboot

Debrick using serial interface
------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Load vendor image with "upgrade runtime <TFTP IP>:LGS352xxxxx.imag"
3. switch to primary partition "setsys bootpartition 0"
4. safe config "savesys"

Further documentation
---------------------
See https://openwrt.org/toh/linksys/lgs352c

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-05 12:14:05 +02:00
Markus Stockhausen
853d73f9d1 realtek: add support for Linksys LGS328C
Hardware specification
----------------------

* RTL9301 SoC, 1 MIPS 34KEc core @ 800MHz
* 512MB DRAM
* 2MB NOR Flash
* 128MB NAND Flash
* 24 x 10/100/1000BASE-T ports
* 4 x 10G SFP+ ports
* Power LED, Fault LED
* Reset button on front panel
* UART (115200 8N1) via RJ45

Installation using serial interface
-----------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Start network "rtk network on"
3. Load image "tftpboot <TFTP IP>:openwrt-realtek-rtl930x_nand-linksys_lgs328c-initramfs-kernel.bin"
4. Boot image "bootm"
5. Switch to first bootpartition "fw_setsys bootpartition 0"
5. Download sysupgrade "scp <IP>:openwrt-realtek-rtl930x_nand-linksys_lgs328c-squashfs-sysupgrade.bin /tmp/."
6. Install sysupgrade "sysupgrade /tmp/openwrt-realtek-rtl930x_nand-linksys_lgs328c-squashfs-sysupgrade.bin"

Installation using OEM webinterface
-----------------------------------

This is not possible because the OpenWrt NAND Flash layout is different
from the vendor layout. To be precise. Vendor uses:

- 64 MB vendor UBI root_data
- 32 MB vendor kernel+root 1 (~19 MB used)
- 32 MB vendor kernel+root 2 (~19 MB used)

OpenWrt uses:

- 64 MB vendor UBI (not touched)
- 10 MB OpenWrt kernel
- 22 MB Openwrt mtd-concat UBI
- 23 MB vendor kernel 2 (space reduced, vendor data unchanged)
- 09 MB OpenWrt mtd-concat UBI

Dual-boot with stock firmware using writable u-boot-env
-------------------------------------------------------

From stock to OpenWrt / primary image 1 (CLI as admin):
   - > boot system image1
   - > reboot

From OpenWrt to stock / boot image 2: (shell as root)
   - # fw_setsys bootpartition 1
   - # reboot

Debrick using serial interface
------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Load vendor image with "upgrade runtime <TFTP IP>:LGS328xxxxx.imag"
3. switch to primary partition "setsys bootpartition 0"
4. safe config "savesys"

Further documentation
---------------------
See https://openwrt.org/toh/linksys/lgs352c

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-05 12:14:05 +02:00
Markus Stockhausen
af7a74bad1 realtek: Enhance MTD/ECC kernel configuration for NAND targets
The Realtek NAND kernel configuration has some shortcomings.
Fix this as follows:

- MTD_NAND_ECC_REALTEK selects MTD_NAND_ECC and this selects
  MTD_NAND_CORE. For consistency add both config options.

- The partition layout of the Linksys switches requires some tricky
  concatenation to keep dual boot active. Add CONFIG_MTD_VIRT_CONCAT

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-05 12:14:05 +02:00
Felix Fietkau
a64db95a23 ucode: fix parsing \xHH and \0OOO escape sequences
Both need to add add bytes, not UTF-8 sequences.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-05 11:31:31 +02:00
Felix Fietkau
7b2c9f6799 hostapd: skip dynamic reconfiguration while not in enabled state
Interface might be down or scanning. Better do a full restart in order to avoid
messing up the runtime state.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-05 10:49:58 +02:00
Andrea Pesaresi
18bdeda011 kernel: ksmbd: revert upstream limit repeated connection
The upstream commit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/smb?h=linux-6.6.y&id=fa1c47af4ff641cf9197ecdb1f8240cbb30389c1
and the extended for ipv6 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/smb?h=linux-6.6.y&id=d9e157fcfebc126cd19b2333a6417a840c24e529
cause a regression if you try to get a connection on nautilus by a double click on share name.
When you do a double click on share name Nautilus try to connect two times, and ksmbd refusing it.
An issue is opened here https://github.com/namjaejeon/ksmbd/issues/512, at the moment, until we don't have a fix upstream I suggest to revert these two commits.

Signed-off-by: Andrea Pesaresi <andreapesaresi82@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20192
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-05 00:17:02 +02:00
Andrii Kuiukoff
ebd45615d9 mediatek: CreatLentem clt-r30b1: Add Livinet Li228 as alt vendor model
Add Livinet Li228 as ALT2.
Fix typo in ALT1_MODEL: DXG21 -> DGX21

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20262
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:51:35 +02:00
Markus Gothe
1e6ee26691 base-files: commit and sync before removing defaults script.
Improve the resilence against power failures during
boot-up by trying to sync the file system before
removing the script. The order of the operations
are important.

Signed-off-by: Markus Gothe <markus.gothe@genexis.eu>
Link: https://github.com/openwrt/openwrt/pull/20248
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:49:21 +02:00
Rosen Penev
5263c4b993 ath79: asus: convert to nvmem for calibration
Userspace handling is deprecated.

Also handle 2.4ghz LED in ath9k instead of generic.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20269
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:46:19 +02:00
Rosen Penev
2dae098d69 tools/ninja: update to 1.13.1
Jobserver support was merged upstream.

Switch to local tarball archives. Smaller and more standard.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20267
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:34:38 +02:00
Sven Eckelmann (Plasma Cloud)
c7c54f3134 ramips: add support for Plasma Cloud PAX1800-Lite
Plasma Cloud PAX1800-Lite is a dual-band Wi-Fi 6 router, based on MediaTek
MT7621A + MT79x5D platform.

Specifications:

- SOC:      MT7621AT (880 MHz)
- DRAM:     DDR3 448 MiB (Nanya NT5CC256M16DP-DI)
- Flash:    2 MiB SPI NOR (S25FL016K) + 128 MB SPI NAND (W25N02KVZEIR)
- Ethernet: 1x 10/100/1000 Mbps (SOC's built-in switch, with PoE+)
- Wi-Fi:    2x2:2 2.4/5 GHz (MT7905DAN + MT7975DN)
            (MT7905DAN doesn't support background DFS scan/BT)
- LED:      tri-color LED for status (red, blue, green)
- Buttons:  1x (reset)
- Antenna:  4x internal, non-detachable omnidirectional
- UART:     1x 4-pin (2.54 mm pitch, marked as "3V3 G/RX GND W/TX")
- Power:    12 V DC/2 A (DC jack)

MAC addresses:

WAN:     54:9C:27:xx:xx:00 (factory 0x3fff4, device label)
2.4 GHz: 54:9C:27:xx:xx:02 (factory 0x4, device label +2)
5 GHz:   54:9C:27:xx:xx:08 (factory 0xa, device label +8)

Flashing instructions:
======================

Various methods can be used to install the actual image on the flash.
Two easy ones are:

ap51-flash
----------

The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
used to transfer the image to the u-boot when the device boots up.

initramfs from TFTP
-------------------

The serial console (115200 8N1) must be used to access the u-boot shell
during bootup. It can then be used to first boot up the initramfs image
from a TFTP server (here with the IP 192.168.1.21):

    setenv serverip 192.168.1.21
    setenv ipaddr 192.168.1.1
    tftpboot 0x83001000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr

The actual sysupgrade image can then be transferred (on the LAN port) to the
device via

    scp <filename-of-squashfs-sysupgrade>.bin root@192.168.1.1:/tmp/

On the device, the sysupgrade must then be started using

    sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:30:36 +02:00
Sven Eckelmann (Plasma Cloud)
6733b9ab7c mt76: mt7915: add bf backoff limit table support
mt76 as support for generic rates power limits in the devicetree. But the
mt7915 supports beamforming and has another table for configuring the
backoff limits. These can be configured in the DT with the paths-*
properties. The path-*-bf are the ones relevant for beamforming and the
ones without -bf suffix for "traditional" path backoff.

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:30:36 +02:00
Sven Eckelmann (Plasma Cloud)
7dc498dc9f mt76: Fix DTS power-limits on little endian systems
The power-limits for ru and mcs and stored in the devicetree as bytewise
array (often with sizes which are not a multiple of 4). These arrays have a
prefix which defines for how many modes a line is applied. This prefix is
also only a byte - but the code still tried to fix the endianness of this
byte with a be32 operation. As result, loading was mostly failing or was
sending completely unexpected values to the firmware.

Since the other rates are also stored in the devicetree as bytewise arrays,
just drop the u32 access + be32_to_cpu conversion and directly access them
as bytes arrays.

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 20:30:36 +02:00
Pavlo Samko
5cb0ccfc8b nilfs-utils: update to 2.2.12
Changelog: https://nilfs.sourceforge.io/download/ChangeLog-utils-v2

Signed-off-by: Pavlo Samko <bulldozerbsg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20261
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 19:39:40 +02:00
Coia Prant
c907c7c9b3 ramips: Fix Hongdian H7920 v40 mac address
After extracting the EEPROMs of different devices, only the 0x4 address is unique.

Use the 0x4 address as the LAN address, and the LAN+1 address as the WAN address.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20256
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 19:36:44 +02:00
Coia Prant
44c79d094f ramips: Fix Hongdian H7920 v40 pinctrl default state
According to the MT7628 hardware datasheet:
- GPIO/4 was originally used for I2C, but is now used as the Modem Power.
- GPIO/5 was originally used for I2C, but is now used as the SIM card select. (n/a for this device)
- GPIO/6 was originally used for SPI CS1, but is now used as the Serial mode switch.
- GPIO/36 was originally used for PERST, but is now used as the GPS OE. (n/a for this device)
- GPIO/38 was originally used for WDT, but is now used as the Modem2 Power. (n/a for this device)
- GPIO/44 was used for WLED_AN, but is now controlled by `gpio-leds`.

Corrected pinctrl to ensure it works properly in the future.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20256
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 19:36:44 +02:00
John Audia
e99ee3ad9c openssl: update to 3.5.4
release is Moderate.

This release incorporates the following bug fixes and mitigations:

Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap.
(CVE-2025-9230)

Fix Timing side-channel in SM2 algorithm on 64 bit ARM.
(CVE-2025-9231)

Fix Out-of-bounds read in HTTP client no_proxy handling.
(CVE-2025-9232)

Reverted the synthesised OPENSSL_VERSION_NUMBER change for the release
builds, as it broke some exiting applications that relied on the previous
3.x semantics, as documented in OpenSSL_version(3).

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/20275
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:22:43 +02:00
Goetz Goerisch
bb1779cdc5 kernel: bump 6.6 to 6.6.109
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.109

All patches autorefreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20277
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:20:12 +02:00
John Audia
dbd3cffa67 kernel: bump 6.12 to 6.12.50
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.50

Dropped upstreamed:
	backport-6.12/787-v6.17-net-sfp-add-quirk-for-FLYPRO-copper-SFP-module.patch[1]

All patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.50&id=d2be6c429d8cc952ff42fdf31b6a7cffb5e233b0

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20280
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:18:49 +02:00
Sven Eckelmann
4231a731dd realtek: drop source-only from rtl931x target
Now the rtl931x target has real devices that need to be built. Remove the
source-only flag to make the images available.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:16:22 +02:00
Harshal Gohel
ce8ea739eb realtek: rtl931x: Add support for Plasma Cloud ESX28 Switch
The Plasma Cloud ESX28 Switch is a 24 + 4 port multi-GBit switch with
24x 10/100/1000/2500BaseT Ethernet ports and 4x SFP+ module slot.

Hardware:

- RTL9312C SoC
- Macronix MX25L25645G (32MB flash)
- 512MB DDR3 SDRAM
- RTL8231 GPIO extender to control the port LEDs
- 6x RTL8224 4x 10m/100m/1/2.5 Gigabit PHY
- SFP+ 4x 10GBit slot

The switch is powered directly via AC.

The external RS232 serial connector (RJ45, Cisco pinout) can be used to
access the terminal. Serial connection is via 115200 baud, 8N1.

A reset button is accessible through a hole in the front panel.

Installation
------------

* The device can be flashed by using sysupgrade command. Either from the
  original vendor firmware or using an initramfs (see "Debug")
* Connect serial on front panel. Connection parameters: 115200 8N1
* The image must be copied using scp to /tmp of the device

      scp openwrt-realtek-rtl931x-plasmacloud_esx28-squashfs-sysupgrade.bin root@[IP address of the device]:/tmp/

* start sysupgrade without saving the original vendor configuration

      sysupgrade -n /tmp/openwrt-realtek-rtl931x-plasmacloud_esx28-squashfs-sysupgrade.bin

Installation via u-boot
-----------------------

If you have an TFTP server connected to the switch, it is possible to
directly install the device using the factory image from u-boot

    # setup networking and IP of TFP server
    rtk network on
    setenv ipaddr 10.100.100.99
    setenv serverip 10.100.100.20

    # get factory image
    tftp 0x84000000 factory.bin

    # erase firmware partitions
    sf probe 0
    sf erase 0x5e0000 0x1a20000

    # write firmware to both partitions
    sf write ${fileaddr} 0x5e0000 ${filesize}
    sf write ${fileaddr} 0x12f0000 ${filesize}

    # adjust the boot commands
    setenv bootargs "mtdparts=spi0.0:768k(u-boot),64k(u-boot-env),64k(u-boot-env2),5120k(reserved),13376k(inactive),13376k(firmware2)"
    setenv bootcmd "rtk init; bootm 0xb52f0000"

    # restart
    reset

Debug
-----

* Connect serial on front panel. Connection parameters: 115200 8N1.
* A tftp server is required, tftpd-hpa works well.
* Power the device, at U-Boot start rapidly hit Esc key to stop autoboot
* Enter passwords: "1234" or "plasmapsx"
* Enable network:

      rtk network on

* Change ip address of device:

      setenv ipaddr 192.168.1.6

* Download initramfs from TFTP server:

      tftpboot 0x84000000 192.168.1.111:openwrt-realtek-rtl931x-plasmacloud_esx28-initramfs-kernel.bin

* Boot loaded file:

      bootm 0x84000000

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:16:22 +02:00
Harshal Gohel
2b5555c195 realtek: rtl931x: Add support for Plasma Cloud PSX28 Switch
The Plasma Cloud PSX28 Switch is a 24 + 4 port multi-GBit switch with
24x 10/100/1000/2500BaseT Ethernet ports and 4x SFP+ module slot.

Hardware:

- RTL9312C SoC
- Macronix MX25L25645G (32MB flash)
- 512MB DDR3 SDRAM
- RTL8231 GPIO extender to control the port LEDs
- 6x RTL8224 4x 10m/100m/1/2.5 Gigabit PHY
- SFP+ 4x 10GBit slot
- RTL8239 POE++ PSE controller with frontend MCU

The switch is powered directly via AC.

The external RS232 serial connector (RJ45, Cisco pinout) can be used to
access the terminal. Serial connection is via 115200 baud, 8N1.

A reset button is accessible through a hole in the front panel.

Installation
------------

* The device can be flashed by using sysupgrade command. Either from the
  original vendor firmware or using an initramfs (see "Debug")
* Connect serial on front panel. Connection parameters: 115200 8N1
* The image must be copied using scp to /tmp of the device

      scp openwrt-realtek-rtl931x-plasmacloud_psx28-squashfs-sysupgrade.bin root@[IP address of the device]:/tmp/

* start sysupgrade without saving the original vendor configuration

      sysupgrade -n /tmp/openwrt-realtek-rtl931x-plasmacloud_psx28-squashfs-sysupgrade.bin

Installation via u-boot
-----------------------

If you have an TFTP server connected to the switch, it is possible to
directly install the device using the factory image from u-boot

    # setup networking and IP of TFP server
    rtk network on
    setenv ipaddr 10.100.100.99
    setenv serverip 10.100.100.20

    # get factory image
    tftp 0x84000000 factory.bin

    # erase firmware partitions
    sf probe 0
    sf erase 0x5e0000 0x1a20000

    # write firmware to both partitions
    sf write ${fileaddr} 0x5e0000 ${filesize}
    sf write ${fileaddr} 0x12f0000 ${filesize}

    # adjust the boot commands
    setenv bootargs "mtdparts=spi0.0:768k(u-boot),64k(u-boot-env),64k(u-boot-env2),5120k(reserved),13376k(inactive),13376k(firmware2)"
    setenv bootcmd "rtk init; bootm 0xb52f0000"

    # restart
    reset

Debug
-----

* Connect serial on front panel. Connection parameters: 115200 8N1.
* A tftp server is required, tftpd-hpa works well.
* Power the device, at U-Boot start rapidly hit Esc key to stop autoboot
* Enter passwords: "1234" or "plasmapsx"
* Enable network:

      rtk network on

* Change ip address of device:

      setenv ipaddr 192.168.1.6

* Download initramfs from TFTP server:

      tftpboot 0x84000000 192.168.1.111:openwrt-realtek-rtl931x-plasmacloud_psx28-initramfs-kernel.bin

* Boot loaded file:

      bootm 0x84000000

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:16:22 +02:00
Sven Eckelmann
746ccc5be6 realtek: rtl931x: Enable parsing of u-boot nvmem layouts
To be able to read out the ethaddr from the u-boot environment for MAC
address configuration, it is required to also enable the NVMEM layout
parsing code for the U-Boot env layout.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 16:16:22 +02:00
Tianling Shen
b81b576556 rockchip: make use of OpenWrt compiled dtbs
OpenWrt buildroot will compile all dtbs defined in target to
$(KDIR)/image-$(DEVICE_DTS).dtb, so make use of it to allow us
debug and use external dtbs easier without patching kernel Makefile.

This also fixes commit 5c724939c3 which forgot to update DTS_DIR
in KERNEL variable.

Fixes: 5c724939c3 ("rockchip: add DEVICE_DTS_DIR definition")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20286
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 15:01:50 +02:00
Hauke Mehrtens
eea52f3a82 omcproxy: update to Git HEAD (2025-10-04)
fc2eac19ea03 build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 13:40:56 +02:00
Hauke Mehrtens
c89ac7503e relayd: update to Git HEAD (2025-10-04)
708a76faa7a1 build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 13:38:44 +02:00
Hauke Mehrtens
709b61adae umbim: update to Git HEAD (2025-10-04)
2939b7d019ab build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 13:35:29 +02:00
Hauke Mehrtens
22d36e452e usbmode: update to Git HEAD (2025-10-04)
86fa49d32853 add GPL v2+ SPDX header
9b4d0a6e25d5 build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 13:33:28 +02:00
Hauke Mehrtens
db54dc67e1 umdns: update to Git HEAD (2025-10-04)
2f75344fd0cc build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 13:31:37 +02:00
Hauke Mehrtens
d39f313918 firmware-utils: update to Git HEAD (2025-10-01)
4b7638925d3e iptime-crc32: add support for ipTIME AX3000M
12c0b42231be nosimg-enc: add new tool for XikeStor SKS8300 series
2051fe5bc2a1 mktplinkfw2: Add 16MLmtk layout
5d1446bf57d6 tplink-safeloader: Add more special_id's for MR70X
075cdc0c4dd4 iptime-crc32: add support for ipTIME AX3000Q
48ababab6b08 iptime-crc32: add support for ipTIME AX3000SM
f29de74ecd7d iptime-crc32: Add device support for ipTIME AX6000M
3346d7711c9a build: add mkqdimg
950f83405a93 iptime-crc32: add support for ipTIME AX7800M-6E
0725c3d4aa1b build: require CMake >= 3.5 due to dropped legacy support
996dc482a7e8 ptgen: fix misprint and simplify calculation a bit
febfef7a09b1 ptgen: use long long instead of long for sizes
6ea8b6dd44d0 ptgen: fix protective MBR partition size
f1f98b0b8456 ptgen: do not create stub partition to fill a gap if gap caused by alignment
3f2d14829150 ptgen: allow non-default placement of gpt entry table
78d8084c7376 ptgen: allow image generation for a specified disk size
9fa340db640e ptgen: create separate images for gpt data structure
d3f8b6ed940a zynsig: add new tool for creating images for the ZyXEL GS1920 series
7e6f69b444c3 npk_pack_kernel: add tool for creating MikroTik NPK kernel packages
0782d243d23e Revert "ptgen: do not create stub partition to fill a gap if gap caused by alignment"

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 12:22:52 +02:00
Hauke Mehrtens
b00fcf3614 ubus: update to Git HEAD (2025-10-04)
ad2768bbc166 lua: build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 12:12:52 +02:00
Hauke Mehrtens
32a6168dc4 libubox: update to Git HEAD (2025-10-04)
c163d7ab8cdc lua: build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 12:09:32 +02:00
Hauke Mehrtens
eadb0df58d firewall: update to Git HEAD (2025-10-03)
3a65fde5a3e6 build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 12:04:17 +02:00
Hauke Mehrtens
c2e6e6785c jsonfilter: update to Git HEAD (2025-10-04)
f4fe702d0e8d build: require CMake >= 3.10 due to dropped legacy support

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-04 12:02:55 +02:00
Andy Chiang
2f2b9c2f1b iptables: fix breaking packing
after change include/package-pack.mk in 16416782f1, must use ALTERNATIVES to create soft link, otherwise the packing will be messed up.

Fixes: openwrt#20270
Fixes: openwrt#20291
Fixes: 16416782f1 (include: make APK packing mtime reproducible)

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20283
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-04 11:25:06 +02:00
Andreas Gnau
6f32c657db tools/ccache: same behaviour for local and CI builds
If the environment variable `CI` is set, ccache will enable the CMake
option CCACHE_DEV_MODE by default. This leads to differing behaviour
between local and CI builds which takes quite some time to debug. 🤯

Achieve consistent behaviour between local builds and CI builds by
setting CCACHE_DEV_MODE. Set it to OFF, because CCACHE_DEV_MODE amongst
other settings like linker choice, enables -Werror, which will lead to
potential compilation failures when the host compiler is updated. Using
-Werror for host utils is not desirable, because the compiler version
used is not controlled by the OpenWrt build system and host utils should
compile successfully on an as wide range of host OSes as possible.

Reported-by: Roman Azarenko <roman.azarenko@iopsys.eu>
Signed-off-by: Andreas Gnau <andreas.gnau@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20290
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:33:53 +02:00
Christian Marangi
88fe81bb0c ubus: update to Git HEAD (2025-10-04)
2b69c9859946 examples: CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:08:56 +02:00
Christian Marangi
b2d2d94137 procd: update to Git HEAD (2025-10-04)
3b3501abb63d upgraded: CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:08:50 +02:00
Christian Marangi
bc7a6d1c36 libubox: update to Git HEAD (2025-10-04)
eeb6fcf91413 examples: CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:08:44 +02:00
Christian Marangi
46ea169578 uci: update to Git HEAD (2025-10-04)
a07209538959 lua: CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:04:06 +02:00
Christian Marangi
3531322a4a mt76: update to Git HEAD (2025-10-03)
9ee788a38251 wifi: mt76: mt7996: fix null pointer deref in mt7996_conf_tx()
ec3f05480e5b tools: CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:53 +02:00
Christian Marangi
a6e4dc84fd libnl-tiny: update to Git HEAD (2025-10-03)
feca1d341d4b CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:53 +02:00
Christian Marangi
f979cab5ce uclient: update to Git HEAD (2025-10-03)
dc909ca71bc8 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:52 +02:00
Christian Marangi
f3d8bea3d7 udebug: update to Git HEAD (2025-09-28)
d3be5474f6e6 udebug-cli: ignore zero-length messages in logstream
c79f02d899df ucode: fix skipping lines where the timestamp cannot be parsed
5327524e7153 cmake: bump minimum required version to 3.13

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:52 +02:00
Christian Marangi
5bfb5ee68f ustream-ssl: update to Git HEAD (2025-10-03)
5a81c108d20e CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:52 +02:00
Christian Marangi
f2cf1c0f35 odhcp6c: update to Git HEAD (2025-10-03)
96d9e0b6e813 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-04 00:00:51 +02:00
Christian Marangi
d439e391e3 uhttpd: update to Git HEAD (2025-10-03)
ebb92e6b339b CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:57:30 +02:00
Christian Marangi
def473853c unetd: update to Git HEAD (2025-10-03)
2f67f6faa08a CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:57:23 +02:00
Christian Marangi
cc0e9d0877 fstools: update to Git HEAD (2025-10-03)
12858e2878ef CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:56:46 +02:00
Christian Marangi
67a7e9a9c4 fwtool: update to Git HEAD (2025-10-03)
04cd252e4e93 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:56:29 +02:00
Christian Marangi
5e1c63d6d4 procd: update to Git HEAD (2025-10-03)
ebfe7d0f2844 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:56:14 +02:00
Christian Marangi
40116d8766 rpcd: update to Git HEAD (2025-10-03)
cfb93f105ca2 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:55:57 +02:00
Christian Marangi
146d74a260 ubox: update to Git HEAD (2025-10-03)
c75525a58a7e CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:55:41 +02:00
Christian Marangi
360e8bc1a1 ucert: update to Git HEAD (2025-10-03)
57270b247c91 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:55:09 +02:00
Christian Marangi
21d0803655 urngd: update to Git HEAD (2025-10-03)
f17e33d99427 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:54:41 +02:00
Christian Marangi
285d20cf07 usign: update to Git HEAD (2025-10-03)
c4c72b1b0794 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:54:34 +02:00
Christian Marangi
4522a1d914 ugps: update to Git HEAD (2025-10-03)
9a351d411113 CMakeLists: update cmake minimum required version to 3.10

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-10-03 23:54:26 +02:00
Issam Hamdi
0d6b7fb56e realtek: rtl93xx: Ignore STP for per port TX
If transmissions are done outside of the DSA switch (directly from the CPU
port), the STP state must not block the transmission. Otherwise, STP frames
are not correctly submitted and the STP frames cannot correctly detect
loops before switching a port in the forwarding state.

The same applies for the LLDP frames. These must be submitted independent
of the STP state to identify neighbors or configure POE limits.

It is not necessary to filter specific destination mac addresses because
the transmission was done outside the bridge/switch in the first place. The
transmission is therefore forced.

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/20184
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-03 19:26:18 +02:00
Sharadanand Karanjkar
be84bb3a78 realtek: rtl93xx: dsa: Add support for port based mirroring
The RTL930X and RTL931X SoCs support port-based, flow-based, and
RSPAN-based mirroring. Like for other SoCs from the realtek target, only
the port based port mirroring can be exposed using Linux's tc subsystem.

The port_mirror_add() implementation was updated with the following
considerations for RTL93xx SoCs:

* mirrored packets must pass through the TX pipeline of the mirroring
  port, so they are subject to configuration such as VLAN tagging,
  remarking, and EVC
* when a packet hits both source ports (SPM) and destination port (DPM) of
  a mirror group, the egress port traffic will be mirrored

The port_mirror_del() function doesn't require any modifications.

Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20264
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-03 19:25:26 +02:00
Sven Eckelmann
8e2284857d realtek: dsa: Keep HW specific mirror code in SoC helper
Instead of using a lot of if-else blocks in the port mirror code, provide
SoC specific function which calculates the SoC specific portions. The
generic part of the port mirroring code can then simply operate on the
calculated register addresses and values.

Suggested-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20264
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-03 19:25:26 +02:00
Hauke Mehrtens
0160ae8635 realtek: Refresh kernel patches
I just ran: make target/{clean,refresh} V=99

Fixes: 272a392fe1 ("realtek: rtl93xx: replace pending I2C patches with upstreamed patches")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-03 14:17:14 +02:00
Paul Spooren
06be7f5928 package: generate sha256sums by default
Right now the sha256sums are only created for the targets/ folder (i.e.
firmware images) and only the buildbot generates those sha256sums. Instead, let
the build system create the sha256sums directly.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-10-03 11:00:23 +02:00
Til Kaiser
71e057bac0 kernel: modules: fix mlxreg dependency to avoid deferred probe
The mlxreg-hotplug platform driver was failing to probe due to a missing
I²C multiplexer dependency. Previously, only kmod-i2c-mux-mlxcpld was
declared, but mlxreg also requires kmod-i2c-mux-reg to initialize its
I²C mux functionality.

Without this dependency, the driver probe was deferred:

  [   24.902331] platform mlxreg-hotplug: deferred probe pending: (reason unknown)

With kmod-i2c-mux-reg added, the probe succeeds and the expected
multiplexed I²C buses are registered:

  [   15.793884] i2c i2c-1: Added multiplexed i2c bus 2
  [   15.799391] i2c i2c-1: Added multiplexed i2c bus 3
  [   15.804830] i2c i2c-1: Added multiplexed i2c bus 4
  ...

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/20274
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-03 10:50:02 +02:00
Tianling Shen
17b7af8cba rockchip: add Radxa ROCK 4D support
Hardware
--------
RockChip RK3576 ARM64 (8 cores)
2/4/8/16GB LPDDR5 RAM
1x 1000 Base-T (with optional PoE support)
2x LEDs (POWER / USER)
eMMC/UFS connector
Micro-SD Slot
HDMI OUT
PCIe FPC connector
2x USB 2.0 Port
2x USB 3.0 Port
USB Type-C PD Power

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
internal eMMC using dd.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
24eb59779a uboot-rockchip: add Radxa ROCK 4D support
Add support for the Radxa ROCK 4D board.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
355528e427 uboot-rockchip: backport RK3576 support
Backport core support for RK3576 SoCs.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
3c8f6e33df rkbin: pack rk3576 tpl blob
Currently there's no usable open source TPL implementation for
rk3576 SoCs, so pack the prebuilt firmware from the vendor.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
f3ce00558e arm-trusted-firmware-rockchip: Update to 2.13
Add RK3576 ATF build.

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

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
3a35a2cff1 rockchip: backport dts updates for rk3576
Backport core dts updates for rk3576.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:35 +02:00
Tianling Shen
0a6ed6db26 rockchip: backport driver updates for rk3576
Backport clk/phy/rng/ufs/usb driver updates for rk3576.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:34 +02:00
Tianling Shen
cf4365e767 rockchip: use per-SoC defined kernel loadaddr
The FIT loadaddr on RK3308/RK3566/RK3568/RK358x is 0x02000000
instead of 0x02080000, while on RK3576 it's 0x42000000, which is
quite different from the former SoCs and incompatible with current
kernel loadaddr value.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:34 +02:00
Tianling Shen
5c724939c3 rockchip: add DEVICE_DTS_DIR definition
Avoid duplicating `rockchip/` prefix when specifying dts path.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20041
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-02 22:42:34 +02:00
Jonas Jelonek
272a392fe1 realtek: rtl93xx: replace pending I2C patches with upstreamed patches
Replace the pending I2C backport patches for RTL93XX added in
44655c97bb with the upstreamed variants. The patches have been accepted
upstream in the meantime and are included in v6.17 or v6.18.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20273
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-02 13:52:24 +02:00
Felix Fietkau
727d8b27ab wifi-scripts: retry setup of wireless devices that show up late
When a phy appears after setup has already been attempted, tell netifd
to retry setup for all failed wireless devices.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 13:30:31 +02:00
Felix Fietkau
915a57ccd9 netifd: send event after running wireless handler
This can be used by other services to trigger reconfiguration, or detect when
PHY renaming has been performed.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 11:04:38 +02:00
Felix Fietkau
42b5cf24a8 procd: update to Git HEAD (2025-10-02)
ace5f272e139 service: fix use-after-free on service data update
94bfb9cf4238 service: implement set_data ubus method
cb40d082b126 service: send ubus notifications for event triggers

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 11:04:10 +02:00
Felix Fietkau
8c399b4905 wifi-scripts: ucode: only set a hostapd config if it has interfaces
Do not pass invalid configs to hostapd.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 10:47:34 +02:00
Felix Fietkau
4b7323e3bf netifd: always call setup for disabled radios
Ensures that renaming is handled properly. For disabled radios, setup is
performed with an empty list of interfaces.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 10:47:34 +02:00
Sven Eckelmann
3adb820779 realtek: rtl931x: Add SPI_CTRL0 as pinmux
The RTL931x has next to its SPI flash controller a SPI master interface. It
is connected to

* SPI_CS#[1,0]: AH22 , AK22 (aka: GPIO 12, 11)
* SPI_CLK:      AL23 (aka: GPIO 8)
* SPI_MISO:     AM23 (aka: GPIO 9)
* SPI_MOSI:     AL22 (aka: GPIO 10)

It is not the same as the SPI flash controller which uses pins:

* SPI_CS#[1,0]: B24, A24
* SPI_SCLK:     A23
* SPI_SDI/SIO0: B21
* SPO_SDO_SIO1: B21
* SPI_SIO2:     A22
* SPI_SIO3:     B22
* SPI_RSTN:     B23

As shown above, the SPI master controller shares its pin with GPIO 8, 9,
10, 11, 12. In some upcoming devices (like the Plasma Cloud PSX28/ESX28),
they will be used for SFP cage signaling. These pins must therefore be
switched manually to the GPIO mode.

The SPI_CTRL0 register provides all necessary configuration to enforce the
GPIO mode of the pins. And until more requirements (and a correct driver)
for the SPI master controller arise, it is therefore possible to use
pinctrl-single to configure it using the devicetree.

Previously the ethernet driver did configure the SPI master controller for
31.25 MHz. It is unknown for which kind of device this was originally made
and what was actually connected there. But this manual write to the
register conflicts potentially with the write of the pinctrl driver to the
same register. Luckily, we don't need this SPI speed configuration in the
ethernet driver. Still, to allow this device an easy migration, the
`spi0-31mhz` configuration was already prepared.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20263
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-10-02 10:30:16 +02:00
Felix Fietkau
50c51504fd mediatek: fix polarity of user button on openwrt-one
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-02 09:54:32 +02:00
Florian Maurer
ab50b9a561 mac80211: ath: improve ath10k "failed to flush transmit queue" errors
Currently, in busy environments, ath10k logs "failed to flush transmit
queue" errors and have a spiking CPU usage, making the wireless barely
usable.
With this patch, taken from https://patchwork.kernel.org/project/linux-wireless/patch/20250806070005.1429-1-hujy652@gmail.com/
this does not occur in normal operation and the wifi is much more stable

Supersedes #19427
Ref: https://github.com/openwrt/openwrt/issues/15929#issuecomment-2227391307
Ref: https://github.com/openwrt/openwrt/issues/14965

Signed-off-by: Florian Maurer <f.maurer@outlook.de>
Link: https://github.com/openwrt/openwrt/pull/19529
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-01 22:15:13 +02:00
Josef Schlehofer
fca63d04b5 libunwind: enable it to all targets
This commit will enable building for riscv64
and maybe for other platforms such as mipsel64.

Suggested-by: Rosen Penev <rosenp@gmail.com>
in https://github.com/openwrt/openwrt/pull/3871#issuecomment-778987028

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20193
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-01 20:23:42 +02:00
Josef Schlehofer
1e00160a8f libunwind: avoid using $(PKG_NAME) in PKG_SOURCE_URL
If there is used $(PKG_NAME) in PKG_SOURCE_URL,
then it can not be copy&pasted to the browser's address bar.

Let's remove $(PKG_NAME) and use hardcoded project name
in the PKG_SOURCE_URL

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20193
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-01 20:23:42 +02:00
Josef Schlehofer
be6567276c libunwind: update to version 1.8.3
Release notes:
https://github.com/libunwind/libunwind/releases/tag/v1.8.2
https://github.com/libunwind/libunwind/releases/tag/v1.8.3

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20193
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-01 20:23:42 +02:00
Daniel Golle
8f4f7cce76 firmware-utils: revert commit breaking x86 MBR images
0782d24 Revert "ptgen: do not create stub partition to fill a gap if gap caused by alignment"

Fixes: #20254
Fixes: c5ece837a3 ("firmware-utils: update to git HEAD")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-10-01 16:44:43 +01:00
Felix Fietkau
a60bc69acd netifd: update to Git HEAD (2025-09-30)
c3bf8fd913a4 interface: fix reload for devices that point to vlan aliases
22216cac7c94 bridge: fix reload when ports refer to aliased vlans on another bridge
ecca21ca07dd system: add logging wrappers for basic system functions

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
3d8d525b21 wifi-scripts: ucode: add support for setting Multi-AP profile/vlanid
Required for Profile-2 support.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
d32e051b69 wpa_supplicant: report interface events and support querying interface status
Makes information like Multi-AP status (including VLAN ID) accessible

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
f6fd18eb60 wpa_supplicant: include multi-ap status in interface state
This can be used to read the Multi-AP profile and default VLAN ID

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
5e7113b3db wpa_supplicant: do not wait for notify completion
There is no callback, so no use tracking the request status.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Sven Eckelmann
263721dd0a realtek: rtl930x: Fix Plasma Cloud PSX8/PSX10 copper phy-mode
The RTL8224 used by Plasma Cloud PSX8/PSX10 is not using USXGMII but
USXGMII 10G-QXGMII mode. The correct phy-mode string for this is
"10g-qxgmii".

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20239
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 20:12:27 +02:00
Sven Eckelmann
4481e0c91d realtek: Work around missing 10g-qxgmii PHY mode
The current SerDes implementation for RTL931x handles 10G-QXGMII via the
"usxgmii" PHY mode. This is not 100% correct because it is not a single
port with 10G (max) but 4 ports with 2.5G each.

To allow setting of the "10g-qxgmii" phy mode, just change the code for now
to use the same codepaths as USXGMII. This has to be cleaned up further
during the SerDes driver rewrites.

Suggested-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20239
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 20:12:27 +02:00
Sven Eckelmann
657b61be2e realtek: rtl931x: Enable REALTEK_PHY for RTL8224 support
The Plasma Cloud PSX28 and ESX28 are using RTL8224 as ethernet PHY. This
phy works perfectly fine on PSX8/PSX10 (RTL930x) but failed to establish a link
on rtl931x because the upstream realtek phy driver was not enabled.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20239
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 20:12:27 +02:00
Felix Fietkau
1a79345b5d hostapd: skip add call on already present MLD interfaces
Avoid tearing down running interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-30 16:44:20 +02:00
Chuanhong Guo
996e4cb506 uboot-mediatek: rax3000m: use ddr3-1866mhz built in the dependency
The u-boot of cmcc_rax3000m_*-ddr3 declares a dependency on
trusted-firmware-a-mt7981-*-ddr3-1866mhz, while actually packages
the normal BL2. This causes build failure if the the non-1866m
variant isn't built.
According to the previous commit, it's intended to use the lower
frequency variant to fix device stability issues. Correct
BL2_DDRTYPE as intended.

Fixes: 028050da69 ("mediatek: CMCC RAX3000Me: fix stability issues")
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
2025-09-30 21:12:06 +08:00
Paul Spooren
16416782f1 include: make APK packing mtime reproducible
APK kindly stores the mtime of each containing file in created packages,
breaking reproducibility. As a fix, touch all files of the package with the
timestamp of PKGSOURCE_DATE_EPOCH, which contains the timestamp based on the
last package modification.

Over at OPKG, something similar is done by setting mtime in the tar command,
see the `ipkg-build` script.

To tackle this in APK directly, some changes are suggested. However until this
is merged, we should fix it downstream.
https://gitlab.alpinelinux.org/alpine/apk-tools/-/merge_requests/348

Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-09-30 14:48:13 +02:00
Daniel Golle
c68a41818e rpcd: update to git HEAD
d4fa147 rpc-sys: packagelist: handle ABI versions in apk world properly

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-30 12:41:58 +01:00
Rosen Penev
6157a2aeb9 ath79: replace various mtd_get_mac_text
Deprecated. Replaced with nvmem.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20176
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 11:21:18 +02:00
Rosen Penev
cbdc2b851e ath79: dir-8x5: use nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20176
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 11:21:18 +02:00
Rosen Penev
bd2e17c180 ath79: dir-505: use nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20176
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 11:21:18 +02:00
Rosen Penev
6c20daed13 ath79: tew-673gru: use nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20176
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 11:21:18 +02:00
Markus Stockhausen
b49f9d9804 realtek: backport ECC driver
Upstream will get support for the Realtek ECC engine with 6.18.
To make use of this in Openwrt

- backport upstream patches
- change config so that ECC will be built for nand subtargets
- define ECC engine in RTL93xx DTS.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19746
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-30 11:15:26 +02:00
Issam Hamdi
36d8d19993 realtek: rtl931x: set hash_msb based on VLAN ID when adding a new L2 entry
During testing, we discovered that when adding a new offload FDB rule
on certain VLANs and then delete it, does not work as expected.

Steps to Reproduce:

* Create VLAN 4094 on the port lan1:

      bridge vlan add vid 4094 dev lan1 pvid

* Add a new FDB entry on port lan1 for VLAN 4094:

      bridge fdb add 00:01:02:22:33:44 dev lan1 vlan 4094 master permanent

* Delete the new FDB entry on port lan1 for VLAN4094

      bridge fdb del 00:01:02:22:33:44 dev lan1 vlan 4094 master permanent

Root Cause:

The failure occurs because the hash_msb flag is not set correctly
based on the VLAN ID when adding a new L2 entry.

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20183
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-29 20:55:22 +02:00
Sven Eckelmann
8c82e2dc93 realtek: Switch booleans in rtl838x_l2_entry to single bits
In upstream kernel, it is not well received to use a lot of simple booleans
in structs. It is preferred to use 1-bit bitfields [1] and consolidate the
booleans together.

[1] https://www.kernel.org/doc/html/v6.16/process/coding-style.html#using-bool

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20183
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-29 20:55:22 +02:00
Bjørn Mork
d22b57e1e4 realtek: add phy-handle for Zyxel GS1900-10HP SFP slots
Align GS1900-10HP dts with other realtek devices to reduce the risk of device
specific regressions with the upcoming driver cleanup/rewrite.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20228
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-29 20:54:19 +02:00
Bjørn Mork
e2dad927a8 realtek: fix Zyxel GS1900-10HP SFP slots
Parse the pcs-handle property regardless of phy-handle

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20228
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-29 20:54:19 +02:00
Daniel Golle
318f07c231 ath79: mikrotik: check RouterBOOT version matching sysupgrade image
Check if the uploaded image matches the version of RouterBOOT before
proceeding with sysupgrade on MikroTik devices with NOR flash.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-29 17:34:51 +01:00
John Thomson
502e6253a1 ath79: mikrotik: generate a RouterBOOT v7 NOR compatible sysupgrade
RouterBOOT v7 for NOR devices does not support the historic yaffs
"kernel" ELF boot method.
Generate a compatible kernel

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
2025-09-29 17:34:51 +01:00
John Thomson
7276e28e47 ramips: mikrotik: generate a RouterBOOT v7 NOR compatible sysupgrade
RouterBOOT v7 for NOR devices does not support the historic yaffs
"kernel" ELF boot method.
Generate a compatible kernel

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
2025-09-29 17:34:51 +01:00
John Thomson
99cfba0721 ipq40xx: mikrotik: generate a RouterBOOT v7 NOR compatible sysupgrade
RouterBOOT v7 for NOR devices does not support the historic yaffs
"kernel" ELF boot method.
Generate a compatible kernel

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
2025-09-29 17:34:51 +01:00
John Thomson
097049552a image: adapt mikrotik yafut to allow switch to bootimage YAFFS path
Adjust the YAFFS file path written depending on the sysupgrade
filename.
Default to kernel (for ELF), switch to bootimage (for NPK) if image name
has v7.

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
2025-09-29 17:34:51 +01:00
John Thomson
f473d15816 build: add Mikrotik NOR RouterBOOT v7 image build
Add build step 'kernel-pack-npk' which uses 'npk_pack_kernel' which is now
part of firmware-utils to enable wrapping the kernel inside a MikroTik NPK
package.

Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-29 17:34:51 +01:00
Daniel Golle
c5ece837a3 firmware-utils: update to git HEAD
7e6f69b npk_pack_kernel: add tool for creating MikroTik NPK kernel packages
 d3f8b6e zynsig: add new tool for creating images for the ZyXEL GS1920 series
 9fa340d ptgen: create separate images for gpt data structure
 78d8084 ptgen: allow image generation for a specified disk size
 3f2d148 ptgen: allow non-default placement of gpt entry table
 f1f98b0 ptgen: do not create stub partition to fill a gap if gap caused by alignment
 6ea8b6d ptgen: fix protective MBR partition size
 febfef7 ptgen: use long long instead of long for sizes
 996dc48 ptgen: fix misprint and simplify calculation a bit
 0725c3d build: require CMake >= 3.5 due to dropped legacy support

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-29 17:34:51 +01:00
Felix Fietkau
2f6a467f6c ucode: update to Git HEAD (2025-09-29)
f642f65c3d00 rtnl: optimize string attribute encoding
1946c571eb25 nl80211: rework string attribute encoding
6b16cd37373a nl80211: properly handle decoding numeric struct members
5a342b86c010 nl80211: support sending requests on listener socket
cd2850eec8ca lib: fix `rindex()` return value when needle at the start of the haystack
23b21eb2e8cb ubus: add connection functions to global scope
a5b206f60f5d struct: align `X` and `Z` length & truncation semantics with `*`
387880348c89 nl80211: read all pending event messages
470bc3ebffe0 uloop: fix potential use-after-free when destroying uloop entities

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 14:09:10 +02:00
Christian Marangi
1545173ec1 kernel: netdevices: fix typo for Aeonsemi AS21xxx description
Fix a typo on defining the PHY package kmod description that reference
phy-aeonsemi-as21x1x package instead of phy-aeonsemi-as21xxx.

Fixes: 08a616b216 ("generic: backport support for Aeonsemi AS21xxx PHY")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 13:56:33 +02:00
Felix Fietkau
0f56141c6c hostapd: add new ubus method for performig channel switch
This is a replacement for the bss based function, which cannot be used for MLO.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 13:41:06 +02:00
George Tsiamasiotis
75ca6bafd6 scripts/patch-kernel.sh: do not try to check files after patch
Since we are not using patch -b, *.orig files are only created when
there are conflicts, or never according to posix patch.

As such, it doesn't really make sense to always delete *.orig files
presuming they are patch backups, even if they are patch backups.
Doing so is both deleting potentially useful information for failed
patch applications and creating hard to diagnose bugs [1].

In a similar vein, checking for *.rej files does not add any value
since we're already checking the patch command's return code.

[1]: https://github.com/openwrt/packages/issues/27485

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20141
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-29 13:33:07 +02:00
Felix Fietkau
973cfbadf5 hostapd: fix condition for re-creating MLD interfaces
Check the correct interface in order to avoid tearing down an existing
itnerface.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
e0a0d69a63 wpa_supplicant: MLO bringup order
Do not allow hostapd phy state update to bring up links as long between mld_set
and mld_start calls. Configuration on other PHYs could still be pending.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
d761f6a5a5 wifi-scripts: ucode: add start_disabled for AP mode
Enable it, whenever the AP needs to wait for a supplicant instance.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
80d73707b0 hostapd: fix an AP+STA corner case on MLO APs
Bring up AP interfaces, even if no frequency update was provided.
Fixes bringup when a MLO STA on the same radios connects to fewer links
than available, or to a non-MLD AP.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Aleksander Jan Bajkowski
a30daf8a0b airoha: fix scuclk node for an7581
Add missing syscon compatible for scuclk node.
Fix the unit-address of the scuclk node.
This fixes the pcs driver error:

airoha-pcs 1fa08000.pcs: probe with driver airoha-pcs failed with error -22
airoha-pcs 1fa09000.pcs: probe with driver airoha-pcs failed with error -22

Fixes: c3d70b1 ("airoha: en7581: Add support for external PHY")
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20190
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:05:10 +02:00
Chukun Pan
dae30d83ea airoha: an7581: refresh kernel config
Enable MEDIATEK_GE_SOC_PHY driver and disable NET_DSA_MT7530_MDIO.
Refresh kernel configs with 'make kernel_oldconfig CONFIG_TARGET=subtarget'.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20190
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:05:10 +02:00
Chukun Pan
646ccf6076 airoha: fix pinctrl driver function bug
The pinctrl driver for airoha was expecting a function name that was
not a string, but was passed one. Removing #string fixed this issue.

Fixes: c5b12fc ("airoha: Introduce support for Airoha AN7583 SoC")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20190
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:05:09 +02:00
Chukun Pan
b125cf42dc airoha: remove duplicate AN7581 PHY patch
This patch already exists in generic/backport-6.12.

Fixes: 122135b ("airoha: an7581: add support for kernel 6.12")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20190
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:05:09 +02:00
Chukun Pan
866c4e5cdf airoha: set default DEVICE_DTS/DEVICE_DTS_DIR
All devices under airoha use dts directory under the target,
so update the default DEVICE_DTS_DIR. Also set the default
DEVICE_DTS based on the SoC name for non-dev boards.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20190
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:05:09 +02:00
Christian Marangi
ddb0cd276c kernel: rtl8261n: add support for Serdes TX swap
Add support for swapping the Serdes TX line on RTL8261N PHYs.
This is used on an Arcadyan Mozart board where the Serdes TX is swapped
on the PHY (instead of on the Soc) to permit support of SFP module by
using toggling the integrated MUX.

Link: https://github.com/openwrt/openwrt/pull/20227
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-29 12:00:22 +02:00
Simonas Tamošaitis
0147d213ff ramips: mt76x8: fix 02_network typo
Remove unnecessary tab which breaks 02_network script with syntax error.

Fixes: f29bc8736a ("ramips: CREALITY BOX WB01")
Signed-off-by: Simonas Tamošaitis <simsasss@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20195
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-28 23:55:16 +02:00
Goetz Goerisch
7114446523 kernel: bump 6.6 to 6.6.108
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.108

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20214
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-28 23:52:59 +02:00
Felix Fietkau
30b35ff5ae iwinfo: drop @!WIFI_SCRIPTS_UCODE dependency
Make the package empty if ucode wifi scripts are being used (since iwinfo is
provided by wifi-scripts in that case). This fixes packages that explicitly
select iwinfo

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-28 18:17:35 +02:00
Felix Fietkau
37770c503b wifi-scripts: force wmm_enabled to 1 in AP mode, remove option
There are no supported drivers where it even makes sense to disable WMM
anymore, since so much depends on it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-28 18:17:35 +02:00
Ted Hess
9b7d0c0d16 odhcpd: update to Git HEAD (2025-09-27)
bc9f9d93d4d6 dhcpv4: allow lease takeover (bugfix)
b1547922257e odhcpd: bump minimum cmake version
86c0200f8067 odhcpd: apply RFC9096 recommended lifetimes

Signed-off-by: Ted Hess <thess@kitschensync.net>
2025-09-27 22:00:25 -04:00
Rosen Penev
6f18b30b02 ath79: wd,mynet-nxxx: use nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16285
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-28 00:41:20 +02:00
Ted Hess
842623a4f8 expat: Update to 2.7.3
Fixes:
    CVE-2025-59375
    Regression from: CVE-2024-8176

Changelog: https://github.com/libexpat/libexpat/blob/R_2_7_3/expat/Changes

Signed-off-by: Ted Hess <thess@kitschensync.net>
2025-09-27 17:49:44 -04:00
Hauke Mehrtens
878f31c210 build: remove iwinfo dependency
Do not always try to include iwinfo in the images when wpa supplicant or
Broadcom nas is also included. iwinfo is incompatible with current
default configuration.

iwinfo is only build when CONFIG_WIFI_SCRIPTS_UCODE is not set. If
CONFIG_WIFI_SCRIPTS_UCODE is not set kmod-cfg80211 depends on iwinfo,
so it should be included in all images with wifi drivers.

The CONFIG_WIFI_SCRIPTS_UCODE option was recently changed to be active
by default.

This should fix the current buildbot build failures.

This reverts commit 6435b8bb27 ("build: include iwinfo by default
if nas or wpad(-mini) is selected")

Fixes: 04e9929c47 ("wifi-scripts: enable ucode scripts by default")
Link: https://github.com/openwrt/openwrt/pull/20211
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 22:04:57 +02:00
Rui Salvaterra
a6ea2aa2b9 octeon: set kernel 6.12 as default and remove support for 6.6
Get the Octeon target ready for the next OpenWrt release.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
16740f623e octeon: update Linux 6.12 kconfig
Update with make kernel_oldconfig CONFIG_TARGET=target. Also disable
CONFIG_POSIX_MQUEUE, as it's available in the OpenWrt configuration.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
673b48a674 octeon: fix octeon build with CONFIG_KERNEL_WERROR
Add a patch fixing a bunch of missing prototype errors, scattered all over the
tree.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
b3eac6dca5 octeon: fix command line hack for Linux 6.12
Since strlcpy has been removed in Linux 6.8, replace it with strscpy.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
2ecee2f31b octeon: refresh 6.12 patches
All but one needs (automatic) rebasing.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
0b7d3f4a33 kernel/octeon: Restore kernel files for v6.6
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: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
Rui Salvaterra
bc9941a0d3 kernel/octeon: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2025-09-27 20:45:50 +01:00
John Audia
ba6a07fb63 kernel: bump 6.12 to 6.12.49
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.49

All patches automatically rebased.

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/20162
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 12:37:38 +02:00
Rosen Penev
605543bc7b ath79: wnr200-v3: handle eeprom with nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20112
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:43:16 +02:00
Rosen Penev
374f065ecb ath79: tiny: use nvmem for engenius devices
Userspace handling is deprecated.

Also convert custom LED to one handled by ath9k.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20112
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:43:16 +02:00
Stefan Kalscheuer
761808f648 mvebu: use upstream DTS for Ctera C200-V2
Upstream DTS in 6.12 contains many changes from our copy.

Move the remaining diff, which is LED aliases, USB ports and partition
labels into a patch and drop the full copy.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Stefan Kalscheuer
63e9506047 mvebu: use upstream DTS for Globalscale MOCHAbin
Upstream DTS in 6.12 is almost identical to our copy.

Move the partition label change into a patch and drop the full copy.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Stefan Kalscheuer
94918e7c10 mvebu: use upstream DTS for GL.iNet GL-MV1000
Upstream DTS in 6.12 is almost identical to our copy.

Move LED and partition tweaks into a patch and drop the full copy.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Stefan Kalscheuer
9852dda410 mvebu: move DTS diff into a patch for Methode uDPU
Upstream DTS is almost identical to our copy. Move network aliases and
phy-mode into a patch and drop the full copy.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Stefan Kalscheuer
6a471c9d5c mvebu: use upstream DTS for Globalscale ESPRESSObin Ultra
Upstream DTS in 6.12 is almost identical to our copy.

The only non-trivial difference is ethernet aliases. Move this change
into a patch and drop the full copy.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Stefan Kalscheuer
88ae631c0a mvebu: use upstream DTS for Methode eDPU
All changes to the DTS have been applied upstream, remove our DTS copy.

This change effectively drops the workaround for the 2500Base-x
interface which was broken until kernel 5.15 and removes redundant
address-/size-cells.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/19786
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:39:32 +02:00
Bjørn Mork
90f0d87632 mediatek: filogic: load precal data for Unifi 6 Plus
Point the driver to the precal section of the emmc "factory" partition.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20154
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:32:40 +02:00
Bjørn Mork
88bf53f5af mediatek: filogic: use nvmem for Unifi 6 Plus caldata
Replace the hotplug script with nvmem now that loading data from emmc
partitions is supported.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20154
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:32:40 +02:00
Bjørn Mork
78257d8fe8 mediatek: filogic: use nvmem for Unifi 6 Plus WiFi mac
Avoids the occacial lost race, where VAPs are created before the hotplug
script has updated the phy mac address.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20154
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-27 00:32:40 +02:00
Linus Walleij
f4cc539f0c ixp4xx: Add back Actiontec MI424WR A/C/D
Prior to the deletion of the old IXP4xx codebase we supported
Actiontec MI424WR A, C and D.

This brings back the support using the upstream device trees
from Linux.

Link: https://github.com/openwrt/openwrt/pull/20066
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-09-26 23:40:40 +02:00
Linus Walleij
cfb371a796 ixp4xx: Add some upstream patches
This corrects the WRV54G device tree and adds patches for
MI424WR alongh with GPIO MMIO support for the same.

Link: https://github.com/openwrt/openwrt/pull/20066
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-09-26 23:40:08 +02:00
Tianling Shen
86618df095 kernel: fix dependencies for kmod-gpio-pwm
gpio pwm driver is only available on kernel 6.11+.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20187
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-26 19:11:32 +02:00
Elwin Huang
b4a528ecba mediatek: ap7622-wh1: Enable bluetooth interface
Add missing bluetooth support btif in dts.

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20181
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-26 11:57:33 +02:00
Wei-Ting Yang
cced09132a libunwind: fix typo in patch file suffix
Fix typo in patch file suffix.

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20178
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-26 11:55:55 +02:00
Felix Fietkau
84ea336097 wpa_supplicant: fix ap+sta regression for non-MLD interfaces
Fix a copy&paste issue.

Reported-by: Chad Monroe <chad.monroe@adtran.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-26 09:30:21 +02:00
Christian Marangi
04f6769a4a boot: Introduce support for U-Boot support for Airoha EN7581/AN7583
Introduce support for U-Boot for Airoha EN7581/AN7583. For EN7581
initial patch are already in U-Boot mainline and doesn't require
backport, for AN7583 some patch are still pending but already posted
upstream.

Also add for now, precompiled binary for ATF BL2 and BL31. Support for
ATF is planned and will come later.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-26 09:05:21 +02:00
Christian Marangi
c5b12fc02a airoha: Introduce support for Airoha AN7583 SoC
Introduce initial support for Airoha AN7583 SoC and add all the required
patch for basic functionality of the SoC.

Airoha AN7583 is based on Airoha EN7581 SoC with some major changes on
the PHY handling and Serdes. It can be see as a lower spec of EN7581
with modern and simplified implementations.

All the patch are sent upstream and are pending revision. Support for
PCIe and USB will come later as soon as DT structure is accepted
upstream.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-26 05:00:07 +02:00
Christian Marangi
2470ee42ae airoha: en7581: enable CPUFREQ_DT and CPU HOTPLUG kconfig
To correctly init the CPUFreq driver, CPUFREQ_DT is needed. While at it
also enable CPU HOTPLUG kconfig to support hotplug of secondary CPU.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-26 04:53:43 +02:00
Christian Marangi
14bc87cf76 airoha: en7581: Add pending ASOC driver
Add pending ASOC driver for I2S sound support on Airoha EN7581 SoC.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-26 04:52:36 +02:00
Christian Marangi
c3d70b1ae5 airoha: en7581: Add support for external PHY
This add a pending version of the Airoha PCS driver to add support for
External PHY. The Airoha PCS driver will receive some minor modification
once we the PCS subsystem will be defined upstream.

Add all the required node for GDM2 and GDM4 and enable the PCS config.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-26 04:16:06 +02:00
John Audia
f4fbf3e794 openssl: update to 3.5.3
Removed upstreamed patch: 0001-Don-t-keep-the-store-open-in-by_store_ctrl_ex.patch

Release notes:
This is a bug fix release.

This release incorporates the following bug fixes and mitigations:

Added FIPS 140-3 PCT on DH key generation.
Fixed the synthesised OPENSSL_VERSION_NUMBER.

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/20133
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-25 22:47:31 +02:00
Robert Marko
7f08a9c1db kernel: modules: add PWM GPIO module
Package the generic kernel PWM GPIO driver as module to avoid the need
to build it into the kernel.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Link: https://github.com/openwrt/openwrt/pull/20160
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-25 21:53:54 +02:00
Felix Fietkau
0da0a6c449 wifi-scripts: ucode: fix r0kh/r1kh parsing
The option is an array, and for each entry there should be one generated
line in hostapd.conf. Commas also need to be replaced with whitespace

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 13:03:41 +02:00
Felix Fietkau
adb1ce158a hostapd: fix setting up MLD AP interfaces after config change
Removing the last remaining link from an MLD AP interface removes the
interface as well. Re-create the interface if necessary on config changes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 12:08:52 +02:00
Felix Fietkau
8c37f5f2f2 wpa_supplicant: fix getting phy status and setting state for MLD
Fixes some AP+STA related issues

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 12:08:52 +02:00
Jan Hoffmann
6790e1a564 realtek: support configuring SerDes auto-negotiation on RTL93xx
There are SFP modules which only work if auto-negotiation is disabled,
like some "OEM SFP-2.5G-T" modules. This also seems to be necessary for
RTL8226/RTL8221B PHYs when using 2500Base-X.

However, currently, it is always enabled, so add support for configuring
it to make these SFP modules and PHYs work.

This also adds locking which should be useful for future extension of
the PCS driver.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/19518
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-25 11:27:45 +02:00
Markus Stockhausen
c332aed2aa realtek: drop sds property
Now that MDIO and DSA driver only look for pcs-handle drop all
usages of the sds property.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20148
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-25 11:01:11 +02:00
Markus Stockhausen
7d67b1022a realtek: evaluate pcs-handle instead of sds property
In the Realtek dts the pcs-handle property at the switch port is the
successor of the sds property at the phy. Rearrange the MDIO and DSA
driver so they always look at the new attribute.

Remark! This code can be dropped completely if the new PCS driver
is fully featured. But this will take some time.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20148
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-25 11:01:10 +02:00
Andrew LaMarche
10f3f6d6d8 airoha: switch to 6.12 and drop 6.6
Switch Airoha targets to 6.12 and drop 6.6 support.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20137
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-25 11:00:36 +02:00
Felix Fietkau
ce3ab2646b wifi-scripts: ucode: add support for the legacy hwmode option
Some configs that are many years old still have it set instead of band

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 09:41:25 +02:00
Andrew LaMarche
3db08ebaa7 airoha: en7523: fix SPI patch no prototype error
en7523 compilation on 6.12 fails with a no prototype warning. Fix this
by declaring max_transfer_size and transfer_one_message static.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20138
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-25 00:12:27 +02:00
Andrew LaMarche
46d83193e8 airoha: en7523: add missing Kconfig entry on 6.12
Add missing Kconfig symbols for en7523 on 6.12.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20138
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-25 00:12:27 +02:00
Felix Fietkau
9aca8a97d7 wpa_supplicant: add MLO client support
Can also be used for a client mode interface that is able to connect on
multiple bands individually, while handling hostapd state for the correct
band.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:59 +02:00
Felix Fietkau
5170a2448c wpa_supplicant: initialize interface list on startup
Avoid errors on deref if adding an interface fails

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
b11a6a1c5a wifi-scripts: ucode: fix client mode scan list support
- fix the variable name in the configuration file
- provide a default scan list in case the user did not configure it (MLO preparation)

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
009a9e0478 wifi-scripts: simplify MLO handling
Move mlo specific hostapd ubus call from wireless handler to netifd core
ucode script. This avoids unnecessary queueing and the fake MLO wireless
device.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
04e9929c47 wifi-scripts: enable ucode scripts by default
They are required for MLO support

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
bd80c05c11 netifd/wifi-scripts: use shared global connection for ubus
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
6834c19e41 hostapd: add wpa_supplicant ubus function guard exception handler
Improves logging when something goes wrong

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
7aa6ea9cc1 hostapd: ubus: replace ex_wrap exception handler function with global guard
Simplifies the code

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Stijn Segers
24b68023c0 realtek: rtl930x: rename XGS1250-12 to A1
Zyxel labels their switch revisions A1, B1, ... and not v1, v2, ...
Rename the supported device to A1 to make it clear this is the only
known compatible hardware revision.

Also add a compatible for seamless upgrade.

Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20118
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-24 13:41:04 +02:00
Stijn Segers
46cf10771a realtek: rtl839x: rename GS1900 series v1/v2 to A1/B1
Zyxel labels their switch revisions A1, B1, ... and not v1, v2, ...
Rename the devices as such in OpenWrt to match the labels. Of note:
the first (A1) revision is never labeled as such on the label, just
in the web UI. Provide compatibles for seamless sysupgrade.

For a recent overview of Zyxel GS1900 series revisions, see the
table linked in https://forum.openwrt.org/t//57875/3874.

Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20118
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-24 13:41:04 +02:00
Stijn Segers
d205878ede realtek: rtl838x: rename GS1900 series v1/v2 to A1/B1
Zyxel labels their switch revisions A1, B1, ... and not v1, v2, ...
Rename the devices as such in OpenWrt to match the labels. Of note:
the first (A1) revision is never labeled as such on the label, just
in the web UI. Provide compatibles for seamless sysupgrade.

For a recent overview of Zyxel GS1900 series revisions, see the
table linked in https://forum.openwrt.org/t//57875/3874.

Signed-off-by: Stijn Segers <foss@volatilesystems.org>
Link: https://github.com/openwrt/openwrt/pull/20118
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-24 13:41:04 +02:00
Rosen Penev
dafc49b233 ath79: dir-842: use nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17344
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-24 13:36:38 +02:00
Rosen Penev
2767baebed ath79: dlink,dir-615-e4: use nvmem
Userspace handling is deprecated.

Move the mac address patch to 10_fix_wifi_mac.

This uses an AR9287, which uses a smaller size for its calibration.

The PCI ID is also wrong.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19864
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-24 13:33:00 +02:00
Rosen Penev
4eae48d9dc lantiq: use new ADSL nvmem support
Can now set through DTS.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19910
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:24:33 +02:00
Rosen Penev
fa442c5010 ltq-ptm: add NVMEM MAC support for ADSL
fcc48204d2 added support for VDSL. This is the same commit but for ADSL.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19910
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:24:33 +02:00
Mikhail Zhilkin
028050da69 mediatek: CMCC RAX3000Me: fix stability issues
This commit fixes stability issues on certain RAX3000Me devices. Some
devices has DDR3 RAM which don't able to work reliably at 2133 MHz
and require special BL2 (1866 MHz RAM freq).

Fixes: https://github.com/openwrt/openwrt/issues/20046
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20059
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:11:53 +02:00
Mikhail Zhilkin
93b208434d arm-trusted-firmware-mediatek: add mt7981 DDR3 1866 MHz builds
The new profiles are intended for devices with DDR3 RAM which
don't able to work reliably at 2133 MHz.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20059
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:11:53 +02:00
Mikhail Zhilkin
b8c427f486 arm-trusted-firmware-mediatek: mt7981-ram-ddr3: reduce ddr3 freq to 1866MHz
This fixes stability issues on certain devices.

Fixes: https://github.com/openwrt/openwrt/issues/20046
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20059
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:11:53 +02:00
John Audia
2fae509a8f linux-firmware: update to 20250917
Update to 20250917 in which the firmware for iwlwifi moved to
intel/iwlwifi[1] so adjust Makefile accordingly.

% git log --no-merges --pretty=oneline --abbrev-commit 20250808...20250917
a9f26799247a amdgpu: update PSP 14.0.3 kicker firmware
7c3980a26d68 amdgpu: update vega20 firmware
c12707ae2dfa amdgpu: update vega12 firmware
c8048421f579 amdgpu: update vega10 firmware
93abdb308d30 amdgpu: update vangogh firmware
be73284e2f7f amdgpu: update VCN 4.0.6 firmware
eb56f5ae9199 amdgpu: update PSP 14.0.1 firmware
9643cbf2c94e amdgpu: update GC 11.5.1 firmware
b73c1b2f238a amdgpu: update VCN 4.0.5 firmware
421085982a64 amdgpu: update VPE 6.1.0 firmware
5e8da647d8a5 amdgpu: update PSP 14.0.0 firmware
ca201f8407b6 amdgpu: update GC 11.5.0 firmware
09dcf0ed7b45 amdgpu: update renoir firmware
b27822eae04a amdgpu: update yellow carp firmware
8d34604f6f2d amdgpu: update VCN 3.1.2 firmware
2f4eba1172db amdgpu: update PSP 13.0.5 firmware
5eb854bde3d1 amdgpu: update GC 10.3.6 firmware
5c34be1058b0 amdgpu: update PSP 13.0.11 firmware
8a8100c5da80 amdgpu: update GC 11.0.4 firmware
fab8ed8fcf6c amdgpu: update VCN 4.0.2 firmware
42eb6ad1e135 amdgpu: update PSP 13.0.4 firmware
6c47866dee63 amdgpu: update GC 11.0.1 firmware
7d9022b56d9f amdgpu: update VCN 5.0.0 firmware
5cb539e8178d amdgpu: update PSP 14.0.3 firmware
ab4867765f16 amdgpu: update GC 12.0.1 firmware
70337b2fe2e4 amdgpu: update SMU 14.0.2 firmware
365e86fe8eac amdgpu: update PSP 14.0.2 firmware
98306ae95355 amdgpu: update GC 12.0.0 firmware
618e92a7582f amdgpu: update VCN 4.0.4 firmware
377cde4784d3 amdgpu: update PSP 13.0.7 firmware
90ef164e2a20 amdgpu: update GC 11.0.2 firmware
068b1b886ad7 amdgpu: update SMU 13.0.10 firmware
ef230a82c77a amdgpu: update PSP 13.0.10 firmware
981df0011104 amdgpu: update GC 11.0.3 firmware
c5bd5d23d026 amdgpu: update SMU 13.0.0 kicker firmware
49b6d2db05a7 amdgpu: update PSP 13.0.0 kicker firmware
85014781be88 amdgpu: update VCN 4.0.0 firmware
c7beb200e2f8 amdgpu: update SDMA 6.0.0 firmware
dfa8be4ec1bb amdgpu: update SMU 13.0.0 firmware
154e8d1559f6 amdgpu: update PSP 13.0.0 firmware
7dea59d23b92 amdgpu: update GC 11.0.0 firmware
d54c5a4464d7 amdgpu: update beige goby firmware
ba313d87e661 amdgpu: update dimgrey cavefish firmware
1dac1ae8da5a amdgpu: update navy flounder firmware
edb255ec5799 amdgpu: update sienna cichlid firmware
05bf27466308 amdgpu: update navi14 firmware
f33198f1d3c6 amdgpu: update navi12 firmware
6b9312de248b amdgpu: update navi10 firmware
0eb298e1924a amdgpu: update VCN 5.0.1 firmware
263fa1962fb3 amdgpu: update PSP 13.0.12 firmware
45c28bd13927 amdgpu: update GC 9.5.0 firmware
eeb986988f69 amdgpu: update PSP 13.0.14 firmware
38b7298d5671 amdgpu: update GC 9.4.4 firmware
8de2474118bf amdgpu: update SDMA 6.1.3 firmware
bdacedf28cb7 amdgpu: update PSP 14.0.5 firmware
c3407118c53c amdgpu: update GC 11.5.3 firmware
59cac4434cb7 amdgpu: update VPE 6.1.3 firmware
06d251853d09 amdgpu: update PSP 14.0.4 firmware
6e5828de499d amdgpu: update GC 11.5.2 firmware
16e06e599952 amdgpu: update green sardine firmware
5697f5139f6c amdgpu: update VCN 4.0.3 firmware
5ce8c510e174 amdgpu: update PSP 13.0.6 firmware
8caace3229c5 amdgpu: update GC 9.4.3 firmware
149f9b8e3422 linux-firmware: update firmware for en8811h 2.5G ethernet phy
ba7d706f9cf6 amdgpu: DMCUB updates for various ASICs
96fa6d9157ea intel/ish: Add firmware for LENOVO THINKPAD X1 2-in-1 Gen 10
ac27fb925034 mediatek MT7922: update bluetooth firmware to 20250903123504
ba41835c21eb linux-firmware: update firmware for MT7922 WiFi device
0732a4c4958a qcom: move Monaco EVK topology from qcs8275 to qcs8300 subdir
1135eb435b7b qcom: Add Audio topology for MONACO-EVK
abf91414e840 qcom: add CDSP firmware for qcs615 platform
22990e4c616e qcom: Add Audio topology for LEMANS-EVK
1c44d84a08bf ath12k: WCN7850 hw2.0@ncm865: add to WLAN.IOE_HMT.1.1-00018-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
f4bff0fc25cb linux-firmware: update firmware for MT7925 WiFi device
7278ab0e55cf mediatek MT7925:update bluetooth firmware to 20250825220109 Update binary firmware for MT7925 BT devices.
d9e126112daa qcom: vpu: update firmware binaries to fix encoder drain handling
6400e0ed82a6 intel_vpu: Update NPU firmware
739c7638b982 Revert "cs35l56: Rename firmware for Thinkbook 16P Gen6 (17AA3921) without multiple speakers"
bd28704ab16e cs35l56: Rename firmware for Thinkbook 16P Gen6 (17AA3921) without multiple speakers
d2f41cc246ba xe: Update GUC to v70.49.4 for BMG, LNL, PTL
20cf22e50252 i915: Update GUC to v70.49.4 for ADL-P, DG1, DG2, MTL, TGL
4897d80cce5f qcom: add ADSP firmware for qcs615 platform
ed1c122b2a42 rtl_bt: Update RTL8822C BT USB firmware to 0x2B66_D962
91fd5ffa1510 iwlwifi: add Bz-HR FW for core90-93 release
dbe75f7ca712 Fix link entry for qat_895xcc.bin
06205c0eb81a Move QAT firmware to intel/ subdirectory
078946281c84 Move all iwlwifi top level files to intel/ directory
ef42281a3aaf Revert "intel/ish: Add firmware for LENOVO THINKPAD X1 2-in-1 Gen 10"
0cfc1632ef7b ath11k: Support WCN6855 hw2.1 with NFA firmware variant
a89515d3ff79 amdgpu: Update ISP FW for isp v4.1.1
3b7a8ca912ab Update README.md to clarify S-o-b requirements
5ca18e346401 firmware: qcom: Reorder VPU firmware entries in WHENCE
409b3cea3097 intel_vpu: Update NPU firmware
a4a827849a58 amdgpu: DMCUB updates for various ASICs
82045de5e845 intel/ish: Add firmware for LENOVO THINKPAD X1 2-in-1 Gen 10
fa855bd9ece7 cirrus: cs35l41: Move entries to correct driver section in WHENCE
be22069598e3 cirrus: cs35l56: Update firmware for Cirrus Amps for some Lenovo laptops
71b945d2190c ath11k: WCN6855 hw2.0@nfa765: add to WLAN.HSP.1.1-04685-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1
c6a9ced69823 cirrus: cs35l56: Add firmware for Cirrus Amps for some Lenovo laptops
ece445af91bb qcom: Add firmware binary for SM8650.
5b0934ba6192 Link rtl8723b_config.bin to rtl8723bs
feb33add04d9 rtw89: 8922a: update fw to v0.35.80.3
ba3e128340cf rtw89: 8852c: update fw to v0.27.129.4
ee5228bfe181 rtw89: 8852c: update fw to v0.27.129.3
2907133be681 qcom: add CDSP firmware for x1e80100 platform
b5b78dda06f9 iwlwifi: add Bz/gl FW for core97-84 release
70fce2e71a3c iwlwifi: update ty/So/Ma firmwares for core97-84 release
b19b3cf8e414 iwlwifi: update cc/Qu/QuZ firmwares for core97-84 release
2bf6ab128f0b amdgpu: DMCUB updates for various ASICs
3a12b0fec4be realtek: rt1321: Add patch firmware of MCU
5260f2873636 mediatek: Add MT8189 SCP firmware
d0fb4a8f2da4 amdgpu: DMCUB updates for various ASICs
930ef9046e38 panthor: Add firmware for more Mali GPUs
d986d065ae7b amdgpu: update renoir firmware
9897853cea76 amdgpu: add SMU 14.0.3 kicker firmware
bd5906138f51 amdgpu: add PSP 14.0.3 firmware
29a5e75e5ddd amdgpu: add GC 12.0.1 kicker firmware
a0278b8ba301 amdgpu: update navy flounder firmware
001f18e5b9b2 amdgpu: update SDMA 6.1.2 firmware
4d2ae0f5205b amdgpu: update PSP 14.0.4 firmware
674f8b1dafa9 amdgpu: update GC 11.5.2 firmware
fd7de77c5998 amdgpu: update yellow carp firmware
baff98c457a0 amdgpu: update VCN 5.0.0 firmware
0a5ac406dbb7 amdgpu: update SDMA 7.0.1 firmware
06f096fc40b5 amdgpu: update PSP 14.0.3 firmware
66a604e1406b amdgpu: update GC 12.0.1 firmware
b2d4246e1547 amdgpu: update sienna cichlid firmware
a48f75acdb3d amdgpu: update vega20 firmware
c3b4c3880492 amdgpu: update SDMA 7.0.0 firmware
f87d250299da amdgpu: update PSP 14.0.2 firmware
b53bcd8ac757 amdgpu: update GC 12.0.0 firmware
5bcadbbec2a5 amdgpu: update vega12 firmware
db8456fde4ec amdgpu: update vega10 firmware
e3998061416e amdgpu: update VCN 3.1.2 firmware
f98da641b72d amdgpu: update PSP 13.0.5 firmware
8614f13eca99 amdgpu: update GC 10.3.6 firmware
740f17080a5c amdgpu: update VCN 4.0.4 firmware
b1534c2e2fa5 amdgpu: update SDMA 6.0.2 firmware
a911fa376d7a amdgpu: update PSP 13.0.7 firmware
5a33df773db8 amdgpu: update GC 11.0.2 firmware
df03c98de76d amdgpu: update navi14 firmware
fe2338805ef5 amdgpu: update SDMA 6.0.3 firmware
516b41a37410 amdgpu: update PSP 13.0.10 firmware
b863bcee224e amdgpu: update GC 11.0.3 firmware
1b0815132267 amdgpu: update navi12 firmware
41c111e7e5b7 amdgpu: update vangogh firmware
d626db731b04 amdgpu: update navi10 firmware
c48f3cf6d95a amdgpu: update PSP 13.0.0 kicker firmware
f3d5f44b2a07 amdgpu: update VCN 5.0.1 firmware
86eb91a2f97f amdgpu: update PSP 13.0.12 firmware
4baea1265aaa amdgpu: update GC 9.5.0 firmware
9a71965f82b6 amdgpu: update VCN 4.0.0 firmware
6a33949aace4 amdgpu: update SDMA 6.0.0 firmware
839eaca8a5d7 amdgpu: update GC 11.0.0 firmware
6b4062a2e25c amdgpu: update PSP 13.0.14 firmware
9c0e99a54789 amdgpu: update PSP 13.0.6 firmware
09c3e7a1ca34 amdgpu: update GC 9.4.3 firmware
6893d17b30d7 amdgpu: update vpe 6.1.1 firmware
85c7640cc83c amdgpu: update VCN 4.0.6 firmware
61c473cf6829 amdgpu: update SDMA 6.1.1 firmware
2cef366f6aba amdgpu: update PSP 14.0.1 firmware
5e35839d7b4c amdgpu: update GC 11.5.1 firmware
448a3efa17f9 amdgpu: update PSP 13.0.11 firmware
3c7c3487dbd3 amdgpu: update GC 11.0.4 firmware
ff54f49cd41e amdgpu: update beige goby firmware
442449670be7 amdgpu: update PSP 13.0.8 firmware
fd27c247e5bf amdgpu: update GC 10.3.7 firmware
397a1b97fc36 amdgpu: update VCN 4.0.5 firmware
f70084acf5f1 amdgpu: update PSP 14.0.0 firmware
dfa4987b55b9 amdgpu: update GC 11.5.0 firmware
6e59320c3bf3 amdgpu: update VCN 4.0.2 firmware
2e1460fdad15 amdgpu: update SDMA 6.0.1 firmware
426a9d94e6cc amdgpu: update PSP 13.0.4 firmware
5271eb7f6674 amdgpu: update GC 11.0.1 firmware
0d8518ea7368 amdgpu: update dimgrey_cavefish firmware
11c4ebf4c4a2 amdgpu: update aldebaran firmware
0239fb7f728a qca: Update Bluetooth WCN6750 1.1.3-00069 firmware to 1.1.3-00091

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150 PC)

1. https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=078946281c84e8477222e51f29416439a037d83d

Co-authored-by: Leo Barsky <leobrsky@proton.me>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20072
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 23:09:49 +02:00
Coia Prant
d0383bb175 ramips: Add factory image for Qding QC202
Added factory image using mkqdimg.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20102
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 22:51:21 +02:00
Andreas Gnau
8e6df323af rockchip: add missing config symbols
Run make kernel_oldconfig add unanswered config symbols.

Signed-off-by: Andreas Gnau <rondom@rondom.de>
Link: https://github.com/openwrt/openwrt/pull/20121
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 22:15:52 +02:00
Andreas Gnau
089827f304 generic: 6.12: add missing symbol NET_DSA_KS8995
Add missing KConfig symbol CONFIG_NET_DSA_KS8995.

Fixes: 73504d0b27 ("kernel: kmod-dsa-ks8995: Backport DSA patches")
Signed-off-by: Andreas Gnau <rondom@rondom.de>
Link: https://github.com/openwrt/openwrt/pull/20121
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 22:15:52 +02:00
Aleksander Jan Bajkowski
13a22b0030 kernel: move accepted patch to backport directory
This patch has already been accepted and landed in 6.17.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20132
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 22:12:34 +02:00
Aleksander Jan Bajkowski
51e6166061 qualcomax: dts: fix typo "disbled"
No functional changes intended.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20131
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-23 21:52:06 +02:00
Aleksander Jan Bajkowski
3872e9d317 airoha: en7581: dts: fix typo "disable"
No functional changes intended.

Fixes warning:
/linux/arch/arm64/boot/dts/airoha/en7581-gemtek-w1700k.dtb: i2c1@1fbf8100 (mediatek,mt7621-i2c): status: 'oneOf' conditional failed, one must be fixed:
	['disable'] is not of type 'object'
	'disable' is not one of ['okay', 'disabled', 'reserved', 'fail', 'fail-needs-probe']
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20131
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-23 21:52:06 +02:00
Bjørn Mork
ae9c9d0f8e build: parsing "git log" breaks with gpg signature verification
Parsing "git log" is fragile.  The actual output depends on both global and
local configuration files. Enabling "log.showSignature" makes "git log" prefix
signed commits with multiple lines of gpg verify output, regardless of the
configured log format.

Add "--no-show-signature" to "git log" commands to work around this particular
issue.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20127
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-23 21:49:54 +02:00
Markus Stockhausen
347d546386 realtek: remove DSA internal PCS functions
Now that there is a dedicated PCS driver remove the old functions
from the DSA driver and make use of the new ones.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20129
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-23 21:21:43 +02:00
Markus Stockhausen
6b681fd285 realtek: dts: add pcs-handle to switch ports
For all switch ports where the assigned SerDes is known, add the new
pcs-handle to the dts. Leave the existing <sds> assignments to the
PHYs as is because the driver has not yet been updated.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20111
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-22 14:22:01 +02:00
Thomas Martitz
c8c187f0f0 realtek: add support for RTL8218E
ZyXEL XGS1250-12 Rev.B1 has RTL8218E compared to RTL8218D in Rev.A1
but both of them seem very similar and pin compatible. Therefore
they can share the same phy_driver callbacks.

PHY identifier is set based on the datasheet from
  https://github.com/plappermaul/realtek-doc/blob/main/RTL8218E-CG_Datasheet.pdf

Before:

[    2.120161] rtl83xx-switch switch@1b000000 lan1 (uninitialized): PHY [mdio-bus:00] driver [Generic PHY] (irq=POLL)
[    2.134581] rtl83xx-switch switch@1b000000 lan2 (uninitialized): PHY [mdio-bus:01] driver [Generic PHY] (irq=POLL)
[    2.149043] rtl83xx-switch switch@1b000000 lan3 (uninitialized): PHY [mdio-bus:02] driver [Generic PHY] (irq=POLL)
[    2.163498] rtl83xx-switch switch@1b000000 lan4 (uninitialized): PHY [mdio-bus:03] driver [Generic PHY] (irq=POLL)
[    2.177963] rtl83xx-switch switch@1b000000 lan5 (uninitialized): PHY [mdio-bus:04] driver [Generic PHY] (irq=POLL)
[    2.192435] rtl83xx-switch switch@1b000000 lan6 (uninitialized): PHY [mdio-bus:05] driver [Generic PHY] (irq=POLL)
[    2.207009] rtl83xx-switch switch@1b000000 lan7 (uninitialized): PHY [mdio-bus:06] driver [Generic PHY] (irq=POLL)
[    2.221474] rtl83xx-switch switch@1b000000 lan8 (uninitialized): PHY [mdio-bus:07] driver [Generic PHY] (irq=POLL)

After:

[    2.119165] rtl83xx-switch switch@1b000000 lan1 (uninitialized): PHY [mdio-bus:00] driver [REALTEK RTL8218E] (irq=POLL)
[    2.132880] rtl83xx-switch switch@1b000000 lan2 (uninitialized): PHY [mdio-bus:01] driver [REALTEK RTL8218E] (irq=POLL)
[    2.146727] rtl83xx-switch switch@1b000000 lan3 (uninitialized): PHY [mdio-bus:02] driver [REALTEK RTL8218E] (irq=POLL)
[    2.160580] rtl83xx-switch switch@1b000000 lan4 (uninitialized): PHY [mdio-bus:03] driver [REALTEK RTL8218E] (irq=POLL)
[    2.174367] rtl83xx-switch switch@1b000000 lan5 (uninitialized): PHY [mdio-bus:04] driver [REALTEK RTL8218E] (irq=POLL)
[    2.188270] rtl83xx-switch switch@1b000000 lan6 (uninitialized): PHY [mdio-bus:05] driver [REALTEK RTL8218E] (irq=POLL)
[    2.202140] rtl83xx-switch switch@1b000000 lan7 (uninitialized): PHY [mdio-bus:06] driver [REALTEK RTL8218E] (irq=POLL)
[    2.216047] rtl83xx-switch switch@1b000000 lan8 (uninitialized): PHY [mdio-bus:07] driver [REALTEK RTL8218E] (irq=POLL)

Based-on-patch-by: Antanas Bruzas <antanas.bruzas@protonmail.com>
Signed-off-by: Thomas Martitz <thomas.martitz@mailbox.org>
Link: https://github.com/openwrt/openwrt/pull/20068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-22 01:15:12 +02:00
Shin Sato
49b9b93b19 mediatek: add support for Buffalo WSR-6000AX8 and AX8P
This commit adds support for Buffalo WSR-6000AX8 and AX8P models.

Hardware
--------
SOC:       MediaTek MT7986B
RAM:       512MB
FLASH:     128MB SPI-NAND (Winbond)
WIFI 2.4G: (Embedded in SOC) b/g/n/ax, MIMO 4x4
WIFI 5G:   (Embedded in SOC) a/n/ac/ax, MIMO 4x4
ETHERNET:  2.5GbE MaxLinear GPY211C (eth1: WAN)
ETHERNET:  MediaTek MT7531AE 3xGbE (eth0: LAN1, LAN2, LAN3)
UART:      3.3V 115200 8N1

Serial(UART) Pin Layout
-----------------------

   +-------+-------+-------+-------+
J4 |  RX   |  TX   |  GND  |(3.3V) |
   +-------+-------+-------+-------+
           (Bottom Side)

MAC Address Table
-----------------
lan1-3:    board_data 0x4(text)
eth1/WAN:  board_data 0x4(text)
WIFI 2.4G: lan1 + 2
WIFI 5G:   lan1 + 9

Installation
------------

1. Set up a TFTP server with the IP address "192.168.11.2".

2. Rename the OpenWrt initramfs image to "linux.ubi-recovery" and place it
   in the TFTP server's root directory.
3. While holding down the AOSS button, power on the WSR-6000AX8 (or AX8P).

4. The device will automatically download the initramfs image
   from the TFTP server and boot into it.
5. Once booted, run "sysupgrade -n" using the OpenWrt sysupgrade image
   to complete the installation.

Recovery
--------

1. Decrypt the official firmware image using "buffalo-enc".

   example:
   $ buffalo-enc -d -i wsr_6000ax8_jp_100 -o wsr_6000ax8_jp_100.dec \
     -l -O 0xc8

2. Run "sysupgrade -F -n" with the decrypted image.

Signed-off-by: Shin Sato <shin.sugar.ssyysy2021@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/13107
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-22 00:57:51 +02:00
Ari Kurniawan
7cd10add2d mediatek: filogic: add support for Totolink X6000R
Specification :
- SOC : Mediatek MT7981B (1.3GHz)
- RAM : 256MB
- Flash : 16MB SPI NOR
- Ports : 4 LAN (1G) & 1 WAN (1G)
- WIFI : MediaTek dual-band WiFi 6
  - 2.4 GHz : b/g/n/ax, MIMO 2x2
  - 5 GHz   : a/n/ac/ax, MIMO 2x2
- Buttons : Reset & WPS/Mesh
- LEDS : WAN (Green), Status (Red & Blue)
- Power : 12V1A

Install via OEM web ui:
Upload the sysupgrade image to firmware upgrade page on OEM web ui

Install via recovery / revert to stock firmware:
1. Unplug from power
2. Download the Sysupgrade (for openwrt installation) or OEM Factory image (for revert to stock firmware)
3. Set your computer ethernet IP to 192.168.1.X, subnet 255.255.255.0 (X=your chosen ip number ranging from 2-254)
4. Press and hold reset button while turn on / plug power adapter to the router. Wait untill ALL LAN green LED turn on, then release the reset button.
5. Plug the LAN cable from your computer into LAN 1 port then open web browser, and type in the address column : 192.168.1.1
6. Upload the sysupgrade / oem factory image
7. Wait until the router finished flashing (the router will reboot)
8. Set ethernet ip to dhcp
9. Open 192.168.1.1 (for openwrt install) / 192.168.0.1 (for OEM firmware)

Signed-off-by: Ari Kurniawan <noobhek@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20035
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 15:49:15 +02:00
Christoph Krapp
9401b8b86d ath79: add calibtation variant for TP-Link Archer C60 v1
Now that we have a board file, add calibration variant for TP-Link
Archer C60 v1 and add ipq-wifi package for it.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19993
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 15:27:53 +02:00
Christoph Krapp
a7ca19962b ipq-wifi: Add entry for TP-Link Archer C60 v1
Add IPQ Wifi entry for ath79 TP-Link Archer C60 v1.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19993
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 15:27:53 +02:00
Elwin Huang
c98b96bca0 kernel: iio: Add dps310.ko I2C driver
This commit add kernel module support for Infineon DPS310/DPS368/DPS422
digital barometric air pressure and temperature sensor.
Test on custom board based on Mediatek MT7988a.

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20101
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 14:45:19 +02:00
Goetz Goerisch
2f61f77fb0 kernel: bump 6.6 to 6.6.107
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.107

All patches auto-refreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20095
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 12:16:24 +02:00
Goetz Goerisch
f86229f33b kernel: bump 6.12 to 6.12.48
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.48

Remove upstreamed patches:
generic/backport-6.12/630-v6.17-bpf-Allow-fall-back-to-interpreter-for-programs-with.patch [1]

All other patches auto-refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.48&id=82967254a92e3c5a832f178ef7e7fad4c9ac3d34

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Tested-by: John Audia <therealgraysky@proton.me>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20096
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-21 12:14:36 +02:00
David Andreoletti
47155fe5ed libnftnl: update to 1.3.0
Changelog: https://git.netfilter.org/libnftnl/log/?h=libnftnl-1.3.0

Signed-off-by: David Andreoletti <david.andreoletti.dev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20055
Signed-off-by: Ted Hess <thess@kitschensync.net>
2025-09-20 18:58:14 -04:00
David Andreoletti
94fea8ea48 nftables: update to 1.1.5
v1.1.3 introduced a regression now fixed in v1.1.4:
https://github.com/openwrt/firewall4/pull/68

v1.1.5 fixed a memory leak

Changelog:
https://netfilter.org/projects/nftables/files/changes-nftables-1.1.4.txt
https://netfilter.org/projects/nftables/files/changes-nftables-1.1.5.txt

Signed-off-by: David Andreoletti <david.andreoletti.dev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20055
Signed-off-by: Ted Hess <thess@kitschensync.net>
2025-09-20 18:58:14 -04:00
Hauke Mehrtens
e49a2192e5 mediatek: Fix setting MAC address for some devices
This fixes a previous commit breaking setting the MAC address for the
wifi devices.

Fixes: 9ed4d27fbf ("mediatek: filogic: fix 5G MAC address for Zyxel EX5601")
Link: https://github.com/openwrt/openwrt/pull/20100
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 19:26:16 +02:00
Elwin Huang
8b891001f6 mediatek: filogic: add support for AsiaRF AP7986-003
- SoC           : MediaTek MT7986AV, Quad-core 2.0 GHz ARM Cortex-A53 CPU
- RAM           : DDR3 512 MiB (Micron MT41K256M16TW-107)
- Flash         : SPI-NAND 128 MiB (Winbound W25N01GVZEIG)
- Ethernet      : 6 ports
  - LAN :
      5x 10/100/1000 Mbps RJ-45 Port
  - WAN :
      1x 10/100/1000/2500 Mbps RJ-45 Port (MaxLinear GPY211B1VC-LN8A)
- LED           : 19x LEDs (Green)
    1x  Power
    1x  Status (PWM-LED)
    1x  Debug (PWM-LED)
    2x  WiFi activity
    10x Ethernet LAN activity
    4x  Ethernet WAN activity
- UART          : 1x4 pin header on PCB [J1]
  - arrangement : 3.3V, RX, TX, GND
  - settings    : 115200, 8n1
- Button        : 3x (Reset, WPS, Power)
- WiFi          : 2x
    WiFi 6 2.4 Ghz + 5 Ghz (Mediatek MT7975N+MT7975PN)
- Socket        :
    1x Raspberry header 13x2
    1x JTAG 10x2
    1x USB-A (USB 3.0)
- Power         : 12V DC, 3A

MAC addresses :
    WLAN:       00:0A:52:xx:xx:xx   (Factory, 0x6)
    LAN:        00:0A:52:xx:xx:xx   (Factory, 0x24)
    WAN:        00:0A:52:xx:xx:xx   (Factory, 0x2a)

Flash instruction through LuCI:

This device is flashed OpenWRT base firmware with this target.
The LuCI webpage is integrated in default for upgrading.

Flash instruction through u-boot:

1. Prepare the TFTP server on PC.
2. Connect uart to PC, select "2. Upgrade firmware" in u-boot menu.
3. Select "0 - TFTP client (Default)", input client IP, server IP, IP netmask, flashed bin file path
4. Wait about 20 seconds to complete flashing

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20071
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 19:13:47 +02:00
Markus Stockhausen
fe27cce1ec realtek: add SerDes PCS driver
Until now the the SerDes configuration is realized with helper functions
scattered around the DSA and PHY driver. Give them a new home as a PCS
driver.

The target design is as follows:

- dsa driver manages switch
- pcs driver manages SerDes on high level (this commit)
- mdio driver manages SerDes on low level

This driver adds the high level SerDes access via PCS. It makes use of
the low level mdio SerDes driver to access the registers.

Remark: This initial version provides exactly all phylink_pcs_ops that
are currently part of the DSA driver. So this can be swapped in one of
the next commits as a drop in replacement. To make use of it something
like this is needed:

...
ports = of_get_child_by_name(node, "ethernet-ports");
if (!ports)
	return -EINVAL;

for_each_available_child_of_node(ports, port) {
	pcs_node = of_parse_phandle(port, "pcs-handle", 0);
	of_property_read_u32(port, "reg", &port_nr)) {

	priv->pcs[port_nr] = rtpcs_create(dev, pcs_node, port_nr);
}
...

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20075
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-20 12:51:23 +02:00
Markus Stockhausen
06c895f5d3 realtek: DTS: add macro for switch port with SerDes
In the future the PCS & DSA drivers will lookup the SerDes of a
switch port via pcs-handle (like upstream does). Provide a macro
that allows to expand the existing port definitions. To link a
SerDes to port simply do

Either in short form:

replace SWITCH_PORT(0, 1, qsgmii)
with    SWITCH_PORT_SDS(0, 1, 3, qsgmii) (Link to SerDes 3)

Or in long form:

port@24 {
	reg = <24>;
	label = "lan25";
	pcs-handle = <&serdes4>; (Link to SerDes 4)
	phy-handle = <&phy24>;
	phy-mode = "1000base-x";
	managed = "in-band-status";
	sfp = <&sfp0>;
};

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20075
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-20 12:51:23 +02:00
Markus Stockhausen
e31127497c realtek: timer: replace downstream with upstream patches
The fixes for the dying timers were finally accepted upstream.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20097
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-20 12:49:51 +02:00
Rosen Penev
95e04234c1 ath79: tl-wdr4900-v2: set ath9k led-pin
Instead of having two LED entries that supposedly control the same
thing, set the pin properly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18905
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-20 12:49:09 +02:00
Rosen Penev
6555321eb2 treewide: remove of_gpio.h
of_gpio.h is deprecated in upstream Linux and may be removed soon. Get
ahead of things and remove it. Most of these drivers already use the
gpiod API.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20076
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-20 12:47:23 +02:00
Coia Prant
b2f814fed4 ramips: add support for Qding QC202
This is a smart door lock device equipped with OpenWrt 14.07 OEM
modified version Qdwrt

The OEM has closed down, This commit is intended to maximize the
remaining value of these devices. It can flash OpenWrt to become
an AP

Specification:
- SoC: MediaTek MT7628NN
- Flash: 8 MB
- RAM: 64 MB
- Power: DC 5V - 25V
- Ethernet: 1 x RJ45 (10/100 Mbps)
- Wireless radio: 802.11n 2.4g-only
- On-Board LED:
  Status 1: GPIO/43 active-low
  Status 2: GPIO/44 active-low
  Power: AlwaysOn
- Button:
  WPS / RESET: GPIO/14  active-low
- Bluetooth: CC2541 via UART1 (ttyS1) and GPIO/26-29
- RFID: MF RC522 on I2C@28
- RTC: DS1339 on I2C@68
- Shell (via CON1 cable)
  - LED (Swipe card area):
     -  Green  GPIO/3  active-high
     -  Red    GPIO/11 active-high
  - Matrix keypad: (active-low)
                 GPIO/20 GPIO/21 GPIO/19 (Rows)
        GPIO/24        1       2       3
        GPIO/25        4       5       6
        GPIO/22        7       8       9
        GPIO/23     BACK       0   ENTER
        (Cols)
- UART: 1 x UART on PCB - 57600 8N1
- GPIO Relay: GPIO/42 active-high
- GPIO Buzzer: GPIO/15 active-high

Warning:
The original firmware does not use the device tree.
This device tree is written based on the content of /sys/devices/platform
and has been tested

Note:
- On the device, matrix keypad rows actually are columns, and the columns actually are rows
- The key code of the CLEAR key of the matrix keypad is BACK in the original firmware.

Issue:
- No drivers in mainline kernel for RFID and Bluetooth.

Flash Instruction:
Using SSH/Telnet:
1. Connect the board to the computer via RJ45 Ethernet
2. Login 10.10.10.1 with root password "szqdingnet123" (SSH Port 22, Telnet Port 9900)
3. Download openwrt firmware on the computer.
4. Setup a http server on computer. And use wget download openwrt firmware from computer
5. Use command "mtd -r write openwrt-ramips-mt76x8-qding_qc202-squashfs-sysupgrade.bin firmware"
   to flash

Using U-Boot WebUI:
1. Configure PC with a static IP address 10.10.10.2/24.
2. Open http://10.10.10.1
3. Use "mkqdimg -B qc202 -f openwrt-ramips-mt76x8-qding_qc202-squashfs-sysupgrade.bin" to
   make image.
4. Upload factory.bin via U-Boot WebUI.

Original Firmware Dump / More details:
https://blog.gov.cooking/archives/research-qianding-smart-locker-and-flash.html

Original U-Boot firmware image tools:
https://gitlab.com/CoiaPrant/mkqdimg

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Tested-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17471
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 00:54:41 +02:00
Coia Prant
f38abc0248 kernel: add kmod-input-matrix-keypad package
This module contains driver for GPIO driven matrix keypad.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17471
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 00:54:41 +02:00
Elwin Huang
ae7fc18cf2 ramips: add support for AsiaRF AP7621-004 Rev. 3
Specification:

- SoC           : MediaTek MT7621AT, dual-core 880 MHz MIPS CPU
- RAM           : DDR3 512 MB (Micron MT41K256M16TW-107)
- Flash         : SPI-NOR 16 MB (MACRONIX MX25L12835FM2I-10G)
- Ethernet      : 5 port GbE Switch
    - LAN :
        3x RJ-45 Port
        1x PHD Connector (2x5 pin, pitch 2.0 mm)
    - WAN :
        1x RJ-45 Port
- LED           : 8x LEDs
    1x Power (Blue)
    2x MiniPCIe (Orange)
    1x M.2 B Key (Red)
    4x Ethernet activity (White)
- UART          : 1x4 pin header on PCB [J1]
    - arrangement : 3.3V, TX, RX, GND
    - settings    : 57600, 8n1
- Button        : 2x (Reset, WPS)
- USB           : 1x USB 2.0
- Socket       :
    2x MiniPCIe (PCIe Gen2)
    1x M.2 B key (PCIe Gen2 + USB 3.0)
    1x MicroSD
    1x SIM Card
- Power         : 12V DC, 1A

MAC addresses :
    LAN:        00:0A:52:xx:xx:xx   (Factory, 0xe000)
    WAN:        00:0A:52:xx:xx:xx   (Factory, 0xe006)

Flash instruction through LuCI:

This device is flashed OpenWRT base firmware with this target.
The LuCI webpage is integrated in default for upgrading.

Flash instruction through u-boot:

1. Prepare the TFTP server on PC.
2. Connect uart to PC, select "2. Upgrade firmware" in u-boot menu.
3. Select "0 - TFTP client (Default)", input client IP, server IP, flashed bin file path
4. Wait about 60 seconds to complete flashing

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19944
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-20 00:46:36 +02:00
Markus Stockhausen
fc9cf208c5 realtek: fix dts warnings.
Currently following warnings are given

dts/rtl930x.dtsi:166.4-23: Warning (reg_format):
/switchcore@1b000000/i2c@36c:reg: property has invalid length
(8 bytes) (#address-cells == 2, #size-cells == 1)

Obviously default address-cells size is fixed to 64 bit. Align
with upstream and override address size to 32 bit.

Suggested-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20091
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-19 13:51:50 +02:00
George Moussalem
41aaebad98 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 UART2 node
Add node to support the second UART node controller in IPQ5018.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20090
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-19 10:56:49 +02:00
Hauke Mehrtens
0203ef3fc9 uqmi: Increase PKG_RELEASE
Make sure that the package gets updated after the last fix.

Fixes: cd20ae44f2 ("uqmi: fix data-format parsing")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-19 01:55:07 +02:00
Elwin Huang
73e04e2464 mediatek: add support for AsiaRF AP7622-WH1
- SoC           : MediaTek MT7622A, dual-core 1.35 Ghz ARM Cortex-A53 CPU
- RAM           : DDR3 512 MiB (Nanya NT5CC256M16ER-EKI)
- Flash         : SPI-NAND 128 MiB (Winbond W25N01GVZEIG)
- Ethernet      : 5 port Switch
    - LAN :
        4x 10/100/1000 Mbps RJ-45 Port
    - WAN :
        1x 10/100/1000 Mbps RJ-45 Port
- LED           : 10x LEDs
    1x Power (Blue, GPIO)
    1x WiFi (Green, GPIO)
    2x MiniPCIe (Orange)
    1x M.2 B Key (Red)
    5x Ethernet activity (White)
- UART          : 1x4 pin header on PCB [J19]
    - arrangement : 3.3V, TX, RX, GND
    - settings    : 115200, 8n1
- Button        : 2x (Reset, WPS)
- GPS           : 1x (Quectel L76-L)
- WiFi          : 2x
    WiFi 4 (MediaTek MT7622A)
    WiFI HaLow (AsiaRF MM610X-001)
- BT            : BT 4.2/BLE 5.0 (MediaTek MT7622A)
- Socket        :
    2x MiniPCIe (PCIe Gen2 + USB 2.0) with extra SPI interface (NI)
    1x M.2 B key (USB 3.0)
    1x SIM Card
    1x USB-A (USB 2.0)
- Power         : 12V DC, 1A

MAC addresses :
    WLAN:       00:0A:52:xx:xx:xx   (Factory, 0x6)
    LAN:        00:0A:52:xx:xx:xx   (Factory, 0x7fff4)
    WAN:        00:0A:52:xx:xx:xx   (Factory, 0x7fffa)

Note: To use SPI interface on mPCIe slot, weld 4x 0402 0R resistors on [R832-835] or [R960-963]
mPCIe mapping:
    45# - SPI_CLK
    47# - SPI_MISO
    49# - SPI_MOSI
    51# - SPI_CSN

Flash instruction through LuCI:

This device is flashed OpenWRT base firmware with this target.
The LuCI webpage is integrated in default for upgrading.

Flash instruction through u-boot:

1. Prepare the TFTP server on PC.
2. Connect uart to PC, select "2. System Load Linux Kernel then write to Flash via TFTP." in u-boot menu.
3. input flashed bin file path, server IP, client IP
4. Wait about 20 seconds to complete flashing

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19962
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 23:28:59 +02:00
David Bauer
cd20ae44f2 uqmi: fix data-format parsing
wda-get-data-format now returns an object instead of a single string.
Account for this change when reading the packet data format.

Suggested-by: Sebastian Ertz (https://github.com/sebastianertz)
Signed-off-by: David Bauer <mail@david-bauer.net>
2025-09-18 23:27:58 +02:00
Vladimir Epifantsev
9241f29c0e mediatek: filogic: add Keenetic Sprinter (KN-3711) support
Specification:
    SoC: Mediatek MT7981BA
    RAM: 512 MB DDR4 RAM
    Flash: Winbond W25N01GV 128 MB SPI-NAND (dual boot on OEM)
    WiFi: MT7976CN DBDC AX
    Switch: MediaTek MT7531AE (3x LAN Gigabit ports) + Internal Gbe Phy (1x WAN Gigabit port)
    GPIO: 4x LED (power, internet, fn, wifi), 2x buttons (wps, reset), 1x switch (mesh)

UART Interface:
    Pins: VCC, TX, RX, NC, GND
    Settings: 115200, 8N1

Flashing via TFTP:
    1. Connect your PC and router to the first LAN port, configure PC interface using IP 192.168.1.2, mask 255.255.255.0
    2. Save the factory image of the OpenWRT firmware, renamed to KN-3711_recovery.bin, on the TFTP server
    3. Hold the reset button and power up the device
    4. Keep the button pressed until the status LED starts blinking

Signed-off-by: Vladimir Epifantsev <volatilefield@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19633
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 23:16:48 +02:00
Caleb James DeLisle
c43925313e econet: Add basic USB support with Mass Storage
The EN751221 has an XHCI that is compatible with MT7621.
While there is setup logic in the vendor code for both
EN751221 and MT7621, but MT7621 does not use it in mainline
or OpenWRT, and it appears to work correctly with EN751221.

Include SCSI / Mass Storage because many EcoNet devices
contain a builtin USB SD-Card reader.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20050
[Remove usb storage kmod from smartfiber_xp8421-b]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 22:36:28 +02:00
Nickolay Goppen
8dd3ee205a ramips: add support for Zbtlink ZBT-WG108
Specification:

CPU: MediaTek MT7621 (880 MHz)
Flash size: 16 MB NOR SPI
RAM size: 128 MB
Bootloader: Breed
Wireless: MT7612EN 2x2 802.11an+ac(5 GHz)
Wireless: MT7603EN 2x2 bgn(2.4 GHz)
Ethernet: 1 x WAN (10/100/1000Mbps) and 4 x LAN (10/100/1000 Mbps)
USB: 1x 2.0 Type-A port
External storage: 1x microSD (SDXC) slot
UART: console (115200 baud)
LEDs: Power, Wan, Lan 1-4, WiFi 2.4G, WiFi 5G
Buttons: Reset

How to install:
The original firmware is OpenWrt, so sysupgrade can be used.

Signed-off-by: Nickolay Goppen <setotau@mainlining.org>
Link: https://github.com/openwrt/openwrt/pull/19966
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 22:17:41 +02:00
Aleksander Jan Bajkowski
16075e1be7 airoha: add missing Kconfig entry on 6.12
This commit adds the missing Kconfig entry. It was accidentally
omitted previously.

Fixes: 440b85f5b1 ("airoha: an7581: enable uart baudrate control")
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20087
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 21:52:10 +02:00
Hauke Mehrtens
aa3c98f821 openssl: Backport fix for OpenSSL 3.5.2 and 3.0.17 regression
Fixes segmentation faults in openssl. This problem was introduced in
version 3.5.2 and 3.0.17. Backport a fix from the OpenSSL 3.5 branch.

Link: https://forum.openwrt.org/t/openssl-3-0-17-libcrypto-segmentation-faults-regression/240650/9
Link: https://github.com/openssl/openssl/issues/28171
Link: c4c92f3e8a
Fixes: 223c1de963 ("openssl: update to 3.5.2")
Link: https://github.com/openwrt/openwrt/pull/20074
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-18 20:25:44 +02:00
Ted Hess
9939ebc7fc odhcpd: update to Git HEAD (2025-09-16)
c9816de148cc odhcpd: support multiple per-client MAC addresses

Signed-off-by: Ted Hess <thess@kitschensync.net>
2025-09-18 13:03:08 -04:00
Aleksander Jan Bajkowski
440b85f5b1 airoha: an7581: enable uart baudrate control
The baud rate control on Airoha does not function properly. This
patch enables the inactive code responsible for this. The UART2
baud rate is correct. HSUART3 operates at twice the requested
baud rate. The same problem exists in the current code, so this
doesn't introduce any regression. Support for baud rates higher
than 460800 is still required. This will be added in the future.

Tested on Gemtek W1700k. UART2 and HSUART3 are working fine.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20049
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 15:28:44 +02:00
John Audia
055fa9b61e kernel: bump 6.12 to 6.12.47
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.47

No patches needed to be rebased.

Build system: x86/64
Build-tested: Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20003
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 14:01:11 +02:00
John Audia
221eaf1339 x86: config: add CONFIG_MITIGATION_VMSCAPE=y
Introduced in the 6.12.47 update, set this new mitigation option to
be enabled. See: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/arch/x86/Kconfig?id=v6.12.47&id2=v6.12.46

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20003
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 14:01:11 +02:00
John Audia
2c12942e5e kernel: bump 6.12 to 6.12.46
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.46

Removed upstreamed:
	backport-6.12/600-01-v6.14-net-dsa-add-hook-to-determine-whether-EEE-is-support.patch[1]
	generic-backport/600-02-v6.14-net-dsa-provide-implementation-of-.support_eee.patch[2]
	generic/backport-6.12/610-02-v6.14-net-dsa-b53-bcm_sf2-implement-.support_eee-method.patch[3]
	generic/backport-6.12/610-05-v6.16-net-dsa-b53-do-not-enable-EEE-on-bcm63xx.patch[4]
	generic/backport-6.12/621-proc-fix-missing-pde_set_flags.patch[5]
	generic/pending-6.12/742-net-ethernet-mtk_eth_soc-fix-tx-vlan-tag-for-llc-pac.patch[6]

Manually rebased:
	bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=f7976772b16a7da725f9156c5ab6472ba22e3bc0
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=cda6c5c095e1997e63ed805ed3191f3d2af806a0
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=b765b9ee4e5a82e9d0e5d0649bf031e8a8b90b3d
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=3fbe3f4c57fda09f32e13fa05f53a0cc6f500619
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=3eebe856d09b6bdd8df99eb67203c831f23e21d7
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.46&id=f8b4b6f7c2bbfa33e50b8cc946c161172cdefbd5

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20003
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 14:01:11 +02:00
Rosen Penev
5edf6a4c25 ath79: whr-g301n: remove custon wifi LED
The driver makes its own ath9k LED which handles everything.

Simplifies DTS slightly.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20023
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 11:11:02 +02:00
Rosen Penev
beb11add8b ath79: whr-g301n: use nvmem for eeprom
Userspace handling for this is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20023
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 11:11:02 +02:00
Markus Stockhausen
e2271a1dab realtek: mdio: register SerDes bus so it can be looked up
The upcoming PCS driver will lookup the SerDes mdio bus via
of_mdio_find_bus() and the devicetree. This is only possible
with proper registration via devm_of_mdiobus_register().

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20078
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 10:44:36 +02:00
Markus Stockhausen
bb783e8548 realtek: mdio: Simplify backing SerDes calculation
No need two write a dedicated 1:1 mapping function and link that
for all the targets except RTL931x. Combine everything into a generic
helper and reduce the configuration structure.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20078
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 10:44:35 +02:00
Markus Stockhausen
ab49297334 realtek: mdio: fix non-debug SerDes builds
The new SerDes mdio driver produces the following compilation
error in non-debug builds.

drivers/net/mdio/mdio-realtek-otto-serdes.c:72:12:
error: 'rtsds_sds_to_mmd' defined but not used [-Werror=unused-function]
   72 | static int rtsds_sds_to_mmd(int sds_page, int sds_regnum)
      |            ^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

Move the function into the debug section.

Fixes: 7a7ee72c4d ("realtek: mdio: add SerDes driver")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20078
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-18 10:44:35 +02:00
John Audia
af3ae2ae84 intel-microcode: update to 20250812
New upstream release. Debian changelog:
* New upstream microcode datafile 20250812 (closes: #1110983, #1112168)
- Mitgations for INTEL-SA-01249 (processor Stream Cache):
  CVE-2025-20109: Improper Isolation or Compartmentalization in the
  stream cache mechanism for some Intel Processors may allow an
  authenticated user to potentially enable escalation of privilege via
  local access.  Intel also disclosed that several processors models
  had already received this mitigation on the previous microcode
  release, 20250512.
- Mitigations for INTEL-SA-01308:
  CVE-2025-22840: Sequence of processor instructions leads to
  unexpected behavior for some Intel Xeon 6 Scalable processors may
  allow an authenticated user to potentially enable escalation of
  privilege via local access.
- Mitigations for INTEL-SA-01310 (OOBM services module):
  CVE-2025-22839: Insufficient granularity of access control in the
  OOB-MSM for some Intel Xeon 6 Scalable processors may allow a
  privileged user to potentially enable escalation of privilege via
  adjacent access.
- Mitigations for INTEL-SA-01311 (Intel TDX):
  CVE-2025-22889: Improper handling of overlap between protected
  memory ranges for some Intel Xeon 6 processors with Intel TDX may
  allow a privileged user to potentially enable escalation of
  privilege via local access.
- Mitigations for INTEL-SA-01313:
  CVE-2025-20053: Improper buffer restrictions for some Intel Xeon
  Processor firmware with SGX enabled may allow a privileged user to
  potentially enable escalation of privilege via local access.
  CVE-2025-21090: Missing reference to active allocated resource for
  some Intel Xeon processors may allow an authenticated user to
  potentially enable denial of service via local access.
  CVE-2025-24305: Insufficient control flow management in the Alias
  Checking Trusted Module (ACTM) firmware for some Intel Xeon
  processors may allow a privileged user to potentially enable
  escalation of privilege via local access.
- Mitigations for INTEL-SA-01367 (Intel SGX, TDX):
  CVE-2025-26403: Out-of-bounds write in the memory subsystem for some
  Intel Xeon 6 processors when using Intel SGX or Intel TDX may allow
  a privileged user to potentially enable escalation of privilege via
  local access.
  CVE-2025-32086: Improperly implemented security check for standard
  in the DDRIO configuration for some Intel Xeon 6 Processors when
  using Intel SGX or Intel TDX may allow a privileged user to
  potentially enable escalation of privilege via local access.
- Fixes for unspecified functional issues on several Intel Core and
  Intel Xeon processor models.
* Updated microcodes:
  sig 0x000606a6, pf_mask 0x87, 2025-03-11, rev 0xd000410, size 309248
  sig 0x000606c1, pf_mask 0x10, 2025-03-06, rev 0x10002e0, size 301056
  sig 0x000806f8, pf_mask 0x87, 2025-04-04, rev 0x2b000643, size 592896
  sig 0x000806f7, pf_mask 0x87, 2025-04-04, rev 0x2b000643
  sig 0x000806f6, pf_mask 0x87, 2025-04-04, rev 0x2b000643
  sig 0x000806f5, pf_mask 0x87, 2025-04-04, rev 0x2b000643
  sig 0x000806f4, pf_mask 0x87, 2025-04-04, rev 0x2b000643
  sig 0x000806f8, pf_mask 0x10, 2025-04-08, rev 0x2c000401, size 625664
  sig 0x000806f6, pf_mask 0x10, 2025-04-08, rev 0x2c000401
  sig 0x000806f5, pf_mask 0x10, 2025-04-08, rev 0x2c000401
  sig 0x000806f4, pf_mask 0x10, 2025-04-08, rev 0x2c000401
  sig 0x000a06a4, pf_mask 0xe6, 2025-03-19, rev 0x0025, size 140288
  sig 0x000a06d1, pf_mask 0x95, 2025-05-15, rev 0x10003d0, size 1667072
  sig 0x000a06d1, pf_mask 0x20, 2025-05-15, rev 0xa000100, size 1638400
  sig 0x000a06f3, pf_mask 0x01, 2025-05-03, rev 0x3000362, size 1530880
  sig 0x000b06a2, pf_mask 0xe0, 2025-02-24, rev 0x4129, size 224256
  sig 0x000b06a3, pf_mask 0xe0, 2025-02-24, rev 0x4129
  sig 0x000b06a8, pf_mask 0xe0, 2025-02-24, rev 0x4129
  sig 0x000b06d1, pf_mask 0x80, 2025-05-21, rev 0x0123, size 80896
  sig 0x000c0662, pf_mask 0x82, 2025-05-14, rev 0x0119, size 90112
  sig 0x000c06a2, pf_mask 0x82, 2025-05-14, rev 0x0119
  sig 0x000c0652, pf_mask 0x82, 2025-05-14, rev 0x0119
  sig 0x000c0664, pf_mask 0x82, 2025-05-14, rev 0x0119
  sig 0x000c06f2, pf_mask 0x87, 2025-04-15, rev 0x210002b3, size 564224
  sig 0x000c06f1, pf_mask 0x87, 2025-04-15, rev 0x210002b3

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150 PC)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20045
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-17 23:04:09 +02:00
Roy H
b9339a27f9 ath79: fix longdata-aps256 wan port to work in factory bootloader
In first commit I successfully bring WAN port into ethernet switch,
without realizing that I was using custom bootloader. But if using
original bootloader it do not works. WAN port in original bootloader
is tied to using its own GMAC.

This fix is made so this firmware will be compatible with orignal
bootloader, so the user can directly flash from stock firmware without
changing anything.

Signed-off-by: Roy H <roy@altbytes.com>
Link: https://github.com/openwrt/openwrt/pull/20039
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-17 22:41:20 +02:00
Rosen Penev
d1fed22faf ath79: tiny: tplink: add nvmem and fix
Despite having the same tplink.dtsi file, there are differences in wifi

Move wifi nodes out of dtsi to make it clear what the chipset is and
what calibration size should be used.

While at it, change to use led-sources to simplify LED setup.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20024
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:24:56 +02:00
Markus Stockhausen
7a7ee72c4d realtek: mdio: add SerDes driver
Until now the SerDes access is realized with some helper functions
in the mdio bus. These were moved around a lot and had no real home.
End that temporary solution to move them where they belong.

The target design for the different Realtek drivers is as follows:

- dsa driver manages switch
- pcs driver manages SerDes on high level (to be developed)
- mdio driver manages SerDes on low level (this commit)

This driver adds the low level SerDes access via mdio. For debugging
purposes the user can interact with the SerDes in different ways.

First, there is a debug interface in
/sys/kernel/debug/realtek_otto_serdes/serdes.X/registers.
With that a dump of all registers can be shown.

> cat /sys/kernel/debug/realtek_otto_serdes/serdes.4/registers
Back SDS  4:   00   01   02   03   04   05   06   07   08
SDS        : 0C03 0F00 7060 7106 074D 0EBF 0F0F 0359 5248
SDS_EXT    : 0000 0000 85FA 8C6D 5CCC 0000 20D8 0003 79AA
...

Second, one can read/write registers via the mmd functions of the
mdio command line tool. Important to know: The registers are accessed
on the vendor specific MDIO_MMD_VEND1 device address (=30). Additionally
the SerDes page and register are concatenated into the the mmd register.
Top 8 bits are SerDes page and bottom 8 bits are SerDEs register.
E.g.

- mmd 0x0206 : SerDes page 0x02, SerDes register 0x06
- mmd 0x041f : SerDes page 0x04, SerDes register 0x1f

Read register 0x02 on page 0x03 of SerDes 0
> mdio realtek-serdes-mdio mmd 0:30 raw 0x0302

Write register 0x12 on page 0x02 of SerDes 1
> mdio realtek-serdes-mdio mmd 1:30 raw 0x0212 0x2222

For now this driver is only defined in the devicetree and activated
in the kernel build. There is no current consumer but at least
the debugging interface is available. Cleanup of the currently used
SerDes functions will come later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20062
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:23:15 +02:00
Markus Stockhausen
60bdae3ab3 realtek: ethernet: drop open coding
There is some open coding in the ethernet driver. Drop
that and use kernel helpers instead.

- Use napi_gro_receive() instead of local skb list
- Use skb_put_data() instead of skb_put() plus memcpy()
- Use netdev_alloc_skb_ip_align() instead of manual alignment

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20030
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:22:37 +02:00
Markus Stockhausen
532c51c15a realtek: Increase verbosity in rtldsa_fib4_add()/rtldsa_fib4_del()
L3 routing in Realtek switches is some magic voodoo. Especially
the syslog messages are not helpful at all for error diagnosis. As
a first step refactor rtldsa_fib4_add() and rtldsa_fib4_del() to
get some idea what is going on. For this add a helper function
rtldsa_fib4_check() for basic sanity checks and logging.

Do not only increase verbosity but fix some coding as well.

- Drop leftover checks for subnet 192.168.100.x
- Better detection of broadcast routes
- clearer MAC/VLAN formatting
- sort variables descending
- rename 1 char variable "r" to "route"
- change log helpers from pr...() to dev_...()

Before:

[    5.640463] rtl83xx_fib_event_work_do: FIB4 default rule failed
[    5.647164] rtl83xx_fib_event_work_do: FIB4 default rule failed
[   13.975386] rtl83xx_fib_event_work_do: FIB4 failed
[   13.981456] rtl83xx_fib_event_work_do: FIB4 failed
[   13.986906] rtl83xx_fib_event_work_do: FIB4 failed
[   18.455777] rtl83xx_fib4_del: no such gateway: 0.0.0.0
[   18.470993] rtl83xx_fib4_del: no such gateway: 0.0.0.0
[   18.476839] rtl83xx_fib4_del: no such gateway: 0.0.0.0

After:

[   13.812501] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.1.1/32 (VLAN 0, MAC 80:00:37:74:80:00)
[   13.823501] rtl83xx-switch switch@1b000000: lower interface lan1 not found
[   13.831371] rtl83xx-switch switch@1b000000: fib_add() failed
[   13.848157] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.1.255/32 (VLAN 0, MAC 80:00:37:74:80:00)
[   13.859264] rtl83xx-switch switch@1b000000: skip loopback/broadcast address
[   13.883086] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.1.0/24 (VLAN 0, MAC 80:00:37:74:80:00)
[   13.894051] rtl83xx-switch switch@1b000000: lower interface lan1 not found
[   13.902009] rtl83xx-switch switch@1b000000: fib_add() failed
[   18.342938] rtl83xx-switch switch@1b000000: delete IPv4 route 192.168.1.0/24 (VLAN 0, MAC 80:00:37:74:80:00)
[   18.354162] rtl83xx-switch switch@1b000000: no such gateway: 0.0.0.0
[   18.361483] rtl83xx-switch switch@1b000000: fib_del() failed
[   18.378327] rtl83xx-switch switch@1b000000: delete IPv4 route 192.168.1.255/32 (VLAN 0, MAC 80:00:37:74:80:00)
[   18.389736] rtl83xx-switch switch@1b000000: skip loopback/broadcast address
[   18.419856] rtl83xx-switch switch@1b000000: delete IPv4 route 192.168.1.1/32 (VLAN 0, MAC 80:00:37:74:80:00)
[   18.431160] rtl83xx-switch switch@1b000000: no such gateway: 0.0.0.0
[   18.438452] rtl83xx-switch switch@1b000000: fib_del() failed
[   54.570217] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.2.71/32 (VLAN 1, MAC d8:ec:5e:5b:7d:a1)
[   54.581329] rtl83xx-switch switch@1b000000: route hashtable extended for gw 0.0.0.0
[   54.638792] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.2.255/32 (VLAN 1, MAC d8:ec:5e:5b:7d:a1)
[   54.649913] rtl83xx-switch switch@1b000000: skip loopback/broadcast address
[   54.780897] rtl83xx-switch switch@1b000000: add IPv4 route 192.168.2.0/24 (VLAN 1, MAC d8:ec:5e:5b:7d:a1)
[   54.791883] rtl83xx-switch switch@1b000000: route hashtable extended for gw 0.0.0.0

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20029
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:21:58 +02:00
Leo Barsky
d62ecd6c07 kernel: 6.12: refresh patches for airoha/econet on 6.12.45
Refresh patches 6.12 for airoha and econet

Fixes: 122135b964 ("airoha: an7581: add support for kernel 6.12")
Fixes: 73d0f92460 ("kernel: Add new platform EcoNet MIPS")

Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20073
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:21:20 +02:00
George Moussalem
e31b69d6e8 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 I2C node
Use upstreamed patch for adding the QUP3 I2C node.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20070
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 14:18:10 +02:00
Felix Fietkau
5b8f185e27 ucode: ubus: add shared global connection to uloop
Fixes issues with registering objects

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-17 12:27:55 +02:00
Kenneth Kasilag
122135b964 airoha: an7581: add support for kernel 6.12
Enable kernel 6.12 as the testing kernel for airoha.

This first commit will largely maintain feature-parity with kernel 6.6.

DTS changes are backwards-compatible with kernel 6.6.

Tested to flash and boot on Gemtek W1700K (#17869).

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/19038
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 17:29:09 +02:00
Kenneth Kasilag
87f3bf704c kernel/airoha: Restore kernel files for v6.6
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: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/19038
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 17:29:09 +02:00
Kenneth Kasilag
39ae0f972d kernel/airoha: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/19038
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 17:29:09 +02:00
Robert Marko
86f58731ef ipq-wifi: update to Git HEAD (2025-09-16)
c40198780e44 qca9888: add BDF for TP-Link Archer C60 v1
65d951610e0c QCA9888: added TP-Link Archer C60 v2 (US) BDF Link: https://github.com/openwrt/firmware_qca-wireless/pull/67

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 17:20:16 +02:00
Paweł Owoc
415a0d54c9 qualcommax: ipq807x: use label MAC to set addresses for wireless interfaces
Use label MAC to set addresses for wireless interfaces
for Linksys MX4200v2 and MX4300.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18759
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 15:19:54 +02:00
Paweł Owoc
35a4607008 qualcommax: ipq807x: use ascii-env driver for Linksys MX devices
ascii-env driver allows reading mac addresses directly from devinfo partition from dts level.

Additionally label mac address have been set.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18759
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-16 15:19:54 +02:00
Linus Walleij
57fcb37401 gemini: Add module for VSC73xx switches
This adds the Vitesse VSC73xx DSA switch modules to the two
Gemini devices that have them.

Link: https://github.com/openwrt/openwrt/pull/20057
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-09-15 23:12:56 +02:00
Linus Walleij
b7f1f8ed3b kernel: netdevices: Create Vitesse DSA switch packages
This adds kernel packages for the Vitesse VSC73XX switches.

I have split the switch into explicit SPI and platform integrated
variants as it's quite a bit of code.

Link: https://github.com/openwrt/openwrt/pull/20057
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-09-15 23:12:33 +02:00
Daniel Golle
93ac1d7d87 mediatek: refresh patches
Refresh patch which was accidentally without non-confrming style and
not matching line numbers.
Also add patch description by copying the description of the commit
in OpenWrt, so the patch can be applied using `git am` and is ready
for upstream submission.

Fixes: afcec128c5 ("mediatek: add support for trng on mt7988a")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-15 21:38:29 +01:00
Marcos Alano
afcec128c5 mediatek: add support for trng on mt7988a
Add support for trng on mt7988a.

Tested on Banana Pi BPI-R4.

Signed-off-by: Marcos Alano <marcoshalano@gmail.com>
2025-09-15 10:18:03 -03:00
George Moussalem
468975a985 qualcommax: ipq50xx: backport upstreamed patches for adding ipq5018 CMN PLL support
Use upstreamed patches for adding IPQ CMN PLL driver support and its
node and clocks to the DTS accordingly.

In addition, set clock-div and clock-mult properties instead of the
frequency itself for the XO board clock in all board files as it's
converted to a fixed factor clock.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
George Moussalem
d393c55425 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 crypto node
Use upstreamed patch for adding the crypto nodes.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
George Moussalem
d88ef7b012 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 PRNG node
Use upstreamed patch for adding the PRNG node.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
George Moussalem
c618d9f7c9 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 SPI nand support
Use upstreamed patch for adding the SPI nand node.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
George Moussalem
0465daed5d qualcommax: ipq50xx: backport upstreamed patches for adding ipq5018 GE PHY support
Use upstreamed patch for adding driver support and the the mdio and phy
nodes.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
George Moussalem
f11f4a35c9 qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 tsens node
Use upstreamed patch for adding the tsens node.

Temperature sensors are enabled by default, therefore remove explicit
enablement in board files.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19890
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-15 10:29:41 +02:00
Felix Fietkau
b4d6b6c986 mt76: update to Git HEAD (2025-09-15)
904abc93b7d7 wifi: mt76: mt7996: fix setting beacon protection keys
75cd7c365b26 wifi: mt76: mt7996: fix memory leak on mt7996_mcu_sta_key_tlv error
587012a43306 wifi: mt76: mt7996: delete vif keys when requested
e995f6198d8b wifi: mt76: mt7996: fix key add/remove imbalance
5b0cbb058089 wifi: mt76: mt7996: fix updating beacon protection with beacons enabled
bba7ae0b1a68 wifi: mt76: mt7996: drop connac mcu wtbl clear
1383b5548fd7 wifi: mt76: use altx queue for offchannel tx on connac+
fd4c0858e58d wifi: mt76: mt7996: disable promiscuous mode by default
a9d21b7ece99 wifi: mt76: mt7996: remove the mem_total field of STA_REC_BF command
e88deeb14596 wifi: mt76: mt7996: set VTA in txwi
a06461861f4a wifi: mt76: mt7996: fill User Priority in skb->priority for rx packets
d17519baab77 wifi: mt76: improve phy reset on hw restart
ddbe1f6eb25f wifi: mt76: abort scan/roc on hw restart
6745cece7a07 wifi: mt76: mt7996: reset station links on hardware restart
d4a79d50ffc6 wifi: mt76: mt7996: reset interface links on hardware restart
9b770cb3dacd wifi: mt76: mt76_eeprom_override to int
6467af3bcf11 wifi: mt76: mt7921u: Add VID/PID for Netgear A7500

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-15 09:59:35 +02:00
Felix Fietkau
6f2738df55 ucode: ubus: simplify sharing a global connection state
Add connection methods as global functions

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-15 09:59:35 +02:00
Felix Fietkau
90b01086db ucode: update to Git HEAD (2025-08-26)
2ae08749a87e ucode: add padding to uc_resource_ext_t
7931bd901222 socket: add socket.pair()
4cd07cd66ab3 socket: add socket.open()
6350e6383ff3 struct: implement X and Z formats for hex and base64 coding
e632e6da1fbc vm: fix potential eyond end of array accesses
a7ead3169ebf resolv: properly handle multiple TXT strings
9d782ea4af63 math: Add an optional range to rand()

Fixes: https://github.com/jow-/ucode/issues/315
Fixes: https://github.com/jow-/ucode/issues/321
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-15 09:59:35 +02:00
Linus Walleij
73504d0b27 kernel: kmod-dsa-ks8995: Backport DSA patches
Converts the KS8995 "phy" driver to a proper DSA switch.
Currently the upstream only supports the "none" tag
but this is a good improvement already.

Make the old module depend on kernel 6.6 and the new
one depend on !6.6.

The Realtek RTL8261n patch needs to be refreshed
because of textual dependencies.

Realtek RTL838x DSA and phy patches also have textual
dependencies and need to be refreshed.

The Mediatek in-flight DSA patch and related patches
also need to be rebased and refreshed.

Link: https://github.com/openwrt/openwrt/pull/19970
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-09-15 08:34:55 +02:00
Chukun Pan
e74cd41744 generic: fix typo in swconfig driver patch
Fix typo in CONFIG_RTL8367B_PHY description.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/20040
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-14 13:13:39 +02:00
Rhnn Hur
3a0581adc8 mediatek: add missing eeprom for ipTIME AX3000M
This change fixes the eeprom load failure while on boot

Signed-off-by: Rhnn Hur <hurrhnn@icmp.kr>
Link: https://github.com/openwrt/openwrt/pull/20044
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-14 12:52:24 +02:00
Orne Brocaar
20aeef1ef8 bcm27xx: Add padding after writing rootfs to image.
This addresses #9113 by adding up to 1MB padding after writing the
rootfs image. On boot mount_root will probe for existing filesystems
after the rootfs image data. Without overwriting the initial free
space left on the rootfs partition, OpenWrt might incorrectly detect
an exising filesystem and fails to mount it, resulting in a bricked
device as the overlayfs will not be mountend and settings will not be
available.

Fixes #9113.

Signed-off-by: Orne Brocaar <info@brocaar.com>
Link: https://github.com/openwrt/openwrt/pull/19997
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-14 11:46:19 +02:00
Tianling Shen
b63a48b012 uboot-mediatek: update Airoha EN8811H driver
Use the version sent to upstream U-Boot[1], which has much better
code quality and also works better (without packet loss).

The `en8811h_read_fw` func is adapted to use current read logic.

1. https://lore.kernel.org/u-boot/20250720122852.22563-1-lucienzx159@gmail.com/

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20000
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-14 11:12:10 +02:00
David Härdeman
a6da0e0d37 odhcpd: update to Git HEAD (2025-08-26)
2859741d971e dhcpv4: store reqopts as uint8_t
6d342cc03bf7 odhcpd: add DNR (RFC 9463) support
c89b8b3f2ff3 odhcpd: make the IPv6 RA DNR lifetime configurable
066b3dc6ec1a netlink: fix a memory leak
171140e90b6a odhcpd: add a helper function for addr6/prefix parsing
5585b969c18f router: move pref64 calculations to the config stage
4308384748be dhcpv6: add ipv6 pxe support
6e1ad492cef5 router: replace ssize_t with size_t

Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/openwrt/pull/20022
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-14 11:11:25 +02:00
Markus Stockhausen
d4893b816c realtek: rtl931x: rename SerDes read/write helpers
During SerDes rework the helper functions were temporarily
renamed to ..._new(). Fix the leftovers by

- giving the functions a new rtsds_ prefix nad
- dropping the _new appendix.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20034
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-14 11:10:07 +02:00
Donghyun Ko
2503e5bc37 mediatek: add support for ipTIME AX7800M-6E
Specification
-------------
- SoC       : MediaTek MT7986AV quad-core ARM Cortex-A53 2GHz
- RAM       : DDR4 512Mbytes, Nanya Technology NT5AD256M16E4
- Flash     : 128Mbytes NAND Flash, ESMT F50L1G41LB
- WLAN      : MediaTek MT7976DAN, MediaTek MT7916AN, MediaTek MT7976AN
  - 2.4GHz  : b/g/n/ax, Multi User MIMO
  - 5GHz    : a/n/ac/ax, Multi User MIMO
  - 6GHz    : ax, Multi User MIMO
- Ethernet  : 10/100/1000 Mbps x4, LAN (MediaTek MT7531AE)
              10/100/1000/2500 Mbps x1, WAN (MaxLinear GPY211C0VC)
- UART      : 1x4 pin header on PCB
  - [J1] 3.3V, TX, RX, GND (115200, 8N1)
- Buttons   : WPS, Reset
- Switches  : Rfkill Slide Switch
- USB       : 1x USB 3.0 (MediaTek MT7986AV peripheral)
- FAN       : 1x Fan (off - slow - fast)
- LEDs      : 1x Power (Blue)
              1x CPU (Blue)
              1x Wi-Fi 6GHz (Blue)
              1x Wi-Fi 5GHz (Blue)
              1x Wi-Fi 2.4GHz (Blue)
              4x LAN activity (Blue)
              1x WAN activity (Blue)
              1x USB 3.0 (Blue)
- Power     : 12VDC, 3.5A (Center positive polarity)

MAC address
-----------
+-----------+-------------------+------------------------+
| Interface | MAC               | Algorithm              |
+-----------+-------------------+------------------------+
| WLAN 2.4G | 58:86:94:xx:xx:xx | label1                 |
| WLAN 5G   | 5A:86:94:xx:xx:xx | label2 with LA Bit set |
| WLAN 6G   | 5A:86:94:xx:xx:xx | label1 with LA Bit set |
| WAN       | 58:86:94:xx:xx:xx | label1 + 1             |
| LAN       | 58:86:94:xx:xx:xx | label1 + 3             |
+-----------+-------------------+------------------------+
The WLAN 2.4G MAC address (label1) was found in 'Factory' partition, 0xA0004
The WLAN 5G MAC address (label2) was found in 'Factory' partition, 0x4

Installation
------------
1. Download the OEM recovery software (ipTIME Firmware Wizard (11ac))
   from the manufacturer's website
2. Download the *squashfs-factory.bin file from the OpenWrt website
3. Press a reset button, and power up the router (keep pressing the reset button)
4. Wait more than 10 seconds until the CPU LED stop blinking
5. Connect the router (LAN port) to the PC
6. Run the OEM recovery software and follow the instructions
7. Select the *squashfs-factory.bin file during the router recovery process
8. Wait for the router to boot from *squashfs-factory.bin

Note: The router will automatically reboot if no file is uploaded within
55 seconds.

Fan Control
------------
The fan speed is controlled by writing a value from 0 to 2 to the
`fan1_target` file.

```
cd /sys/devices/platform/gpio-fan/hwmon/hwmon2

echo '0' > fan1_target // off
echo '1' > fan1_target // slow
echo '2' > fan1_target // fast
```

Limitation: Enabling Wi-Fi 6E
----------
Wi-Fi 6E (6GHz) does not work out of the box on LuCI.
After installation, you need to configure a few settings in the `radio1`
and `default_radio1` sections of the `/etc/config/wireless`.
Once you have made these changes, you can enable and use Wi-Fi 6E.

In the `radio1` section, you need to add three common options:
- band: must be set to `6g`
- country: a valid country code for the 6GHz band
- channel: a preferrend scanning channel (PSC) for 6GHz

In the `default_radio1` section, you need to add the SSID and key:
- ssid: The public name of your Wi-Fi network
- key: The Wi-Fi password
- encryption: must be set to either `sae` for WPA3 or `owe` for OWE
  (open network)

Example:

```
config wifi-device 'radio1'
        ...
        option band '6g'
        option country 'KR'
        option channel '37'
        ...

config wifi-iface 'default_radio1'
        ...
        option ssid 'my_wifi_6e_name'
        option key 'my_strong_password1234'
        option encryption 'sae'
        ...
```

Note: A list of all the 6GHz PSC channels:

```
5, 21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, and 229
```

Limitation: Maximum Transmit Power
----------
The maximum transmit power is currently broken. In the drop-down menu,
you can only choose between "driver default" and "255 dBm (2147493647
mW)". There is currently no workaround for the issue. Please leave the
maximum transmit power set to "driver default".

Signed-off-by: Donghyun Ko <nyankosoftware@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19763
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-13 18:41:50 +02:00
Daniel Golle
9cfbd691e9 mediatek: add driver for HW-RNG v2
Add driver for hardware random number generator found in MT7981, MT7988
and MT7987. This gives us a fast source of high-quality random numbers
on those platforms.

root@OpenWrt:~# cat /dev/hwrng | rngtest -c 10000
rngtest 6.17
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

rngtest: starting FIPS tests...
rngtest: bits received from input: 200000032
rngtest: FIPS 140-2 successes: 9988
rngtest: FIPS 140-2 failures: 12
rngtest: FIPS 140-2(2001-10-10) Monobit: 2
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 4
rngtest: FIPS 140-2(2001-10-10) Long run: 6
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=616.108; avg=11979.007; max=19531250.000)Kibits/s
rngtest: FIPS tests speed: (min=1.859; avg=82.116; max=83.656)Mibits/s
rngtest: Program run time: 18629928 microseconds

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-09-13 12:54:03 +01:00
Goetz Goerisch
8cbbcda1d9 kernel: bump 6.6 to 6.6.106
All patches autorefreshed.

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20013
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:08:04 +02:00
Goetz Goerisch
67c5ec7092 kernel: bump 6.6 to 6.6.105
removed upstreamed patches:
generic/backport-6.6/621-proc-fix-missing-pde_set_flags.patch [1]
generic/pending-6.6/742-net-ethernet-mtk_eth_soc-fix-tx-vlan-tag-for-llc-pac.patch [2]

all other patches autorefreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.105&id=698abcf08818cb7bafb978f4c9f6674d6a825d10
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.105&id=61b80fbdc0726317f72f9074e10126e0eb0e49c5

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20013
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:08:04 +02:00
Caleb James DeLisle
7d37cb0986 econet: Clean up kernel config and move subtarget devices into own file
The kernel config accidentally contains CONFIG_UBIFS_FS_AUTHENTICATION
which select a number of other unnecessary components, remove them.

The target has at least two subtargets, only one is currently
implemented. Move the Device builds into a file for this subtarget.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/20027
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:06:05 +02:00
Hauke Mehrtens
7a81397fbe CI: labeler: Add econet
Add new econet target to github labeler.

Link: https://github.com/openwrt/openwrt/pull/20033
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:04:15 +02:00
Markus Stockhausen
ecab29d875 realtek: drop HSGMII patch
Now that HSGMII is not used any longer drop the patch
the invents this mode.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20002
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:00:08 +02:00
Markus Stockhausen
61b72cb736 realtek: drop usage of proprietary HSGMII mode
The only consumers of the Realtek HSGMII (2.5G SGMII) mode were
the RTL8226/RTL8221B PHYs. These have been converted to dynamic
SGMII/2500base-x mode switching. Drop the leftovers of the mode
implementation.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20002
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 21:00:08 +02:00
Markus Stockhausen
57b2706845 realtek: dts: rearrange mdio-bus below mdio-controller
The mdio controller got its own dts node with a dedicated bus node.
Until now it still searches the phy nodes in the ethernet node.

Change the driver so it searches the nodes at the right location.
For this to work move the phy nodes in all dts/dtsi over to the new
bus node. Use the following replacement rule:

Replace old full declaration

&ethernet0 {
  mdio-bus {
    ...
  };
};

and old abbreviated declaration

&mdio {
  ...
};

simply with the new declaration

&mdio_bus0 {
  ...
};

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19986
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 20:58:17 +02:00
Markus Stockhausen
616559b6d3 realtek: mdio: convert mdio bus to new device nodes and compatibles
The mdio controller has now its own target specific device nodes. This
is much closer to upstream notation. Adapt the driver to make use of it.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19986
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 20:58:17 +02:00
Markus Stockhausen
13b6c62b75 realtek: dts: add mdio controller device nodes
Until now the mdio bus is a subnode of the ethernet device. This
coupling is different from upstream and wrong. Ethernet and mdio
are different devices. Additionally differentiate between mdio
controller and mdio bus. To make it clear:

- There is one mdio controller
- With up to 4 busses (on RTL93xx)

Prepare new mdio controller and bus nodes with SoC specific compatibles.
These will be used later when refactoring the mdio driver probing.

Remark! For now only define the first bus for the RTL93xx targets.
So the driver still relies on "rtl9300,smi-address = <x y>;". It will
need much more refactoring to get totally aligned with upstream.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19986
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 20:58:17 +02:00
Markus Stockhausen
69ce2eeb97 realtek: rtl931x: align SerDes access with other targets
While converting the RTL931x SerDes code to the new frontend
access methods, the target specific workarounds where left in
place. The old functions were kept and the phy/sds mapping
was unchanged too. It is time to clean this up

- drop the old functions
- reuse the existing read/write logic
- harden the new functions

For now keep the function naming rtmdio_...__new() as is. This
will be changed in a future commit.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19973
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 20:52:37 +02:00
Felix Fietkau
36d0690993 kernel: mtk_eth_soc: zero-initialize PPE flow tables
Prevents invalid flow table data from leaking across reboots

Fixes: https://github.com/openwrt/openwrt/issues/19895
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-12 14:39:49 +02:00
Felix Fietkau
125c974bf7 netifd: update to Git HEAD (2025-09-12)
2a85440bcd82 netifd: fix misplaced ")"

Fixes: https://github.com/openwrt/netifd/issues/54
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-12 11:29:07 +02:00
John Audia
4e7914f96a ethtool: update to 6.15
Version 6.15 - 29-Aug-2025

* netlink: fix missing headers in text output
* netlink: fix print_string when the value is NULL

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/20021
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-09-12 08:43:12 +02:00
Álvaro Fernández Rojas
1cffb44b3c kernel: r8127: update to v11.015.00
Changelog: https://github.com/openwrt/rtl8125/compare/11.014.00...11.015.00

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-09-12 07:28:34 +02:00
Álvaro Fernández Rojas
27a3e5c7b7 kernel: r8126: update to v10.016.00
Changelog: https://github.com/openwrt/rtl8126/compare/10.015.00...10.016.00

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-09-12 07:27:52 +02:00
Álvaro Fernández Rojas
2dfad04a82 kernel: r8125: update to v9.016.01
Changelog: https://github.com/openwrt/rtl8125/compare/9.016.00...9.016.01

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-09-12 07:27:10 +02:00
Rosen Penev
3ca84b840c ath79: add nvmem handling for AR9285 devices
They have the same 0x200 calibration size.

Added various compatible lines in various places to make it clear what
device we're talking about.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19863
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 01:20:49 +02:00
Rosen Penev
d13c3200ea ath79: fix calibration size for AR9285
These devices use AR9285, which uses 1f8 as the calibration size, not
440 like newer chips do. Actually the driver mandates a minimum of 200.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19863
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 01:20:49 +02:00
Caleb James DeLisle
442f91c117 econet: Add new target TP-Link Archer VR1200v (v2)
The TP-Link Archer VR1200v (v2) is a low end DSL modem based on the
EcoNet EN751221 processor platform.

While it does have an unlocked bootloader, the factory upgrade feature
requires a cryptographic signature so flashing from the web UI is not
feasible.

The Archer VR1200v (v2) uses a dual-image layout. I have chosen to reuse
this to support dual-boot between OpenWRT and the factory firmware.

Flashing instructions (from bootloader):

Build and then locate the squashfs-sysupgrade.bin image file
Get the length of that file in hex: printf '%X\n' "$(stat -c%s the-file-squashfs-sysupgrade.bin)"
Connect to device with xmodem capability, e.g. picocom --send-cmd lsx -vv -b 115200 /dev/ttyUSB0
Switch device on and press a key within 3 seconds, you should get to a `bldr>` prompt
Type: xmdm 80020000 <file length hex>
Quickly start xmodem and send the file, in picocom that is ctrl+a ctrl+s <paste-the-file-name> enter If the transfer fails to start, wait 30 seconds to a minute for the bootloader prompt to return and then try the command again.
Once the transfer has completed successfully, type the following flash 80000 80020000 <file length hex>
Type `re` or simply restart the device to boot into OpenWRT

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/19021
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 00:51:58 +02:00
Caleb James DeLisle
ef2785a2d0 econet: Add new target SmartFiber XP8421-B
The SmartFiber XP8421-B is a fiber modem which is available for $20 online
and has 512MB of memory, 256MB of SPI NAND flash and 2 USB 2.0 ports in
addition to ethernet, wifi and XPON.

Because EcoNet is not currently producing evaluation boards, the XP8421-B
stands in as a convenient, low cost, off-the-shelf, representitive example
of the capabilities of the EN751221 econet processor. This is also the
example board that is included in the upstream Linux patchset.

The XP8421-B, and apparently many other devices of this platform, use a
dual-image layout. I have chosen to reuse this to support dual-boot between
OpenWRT and the factory firmware. Certain design decisions were made with
the goal of not overwriting data that is used by the factory OS.

This commit also introduces a utility for switching between OS_A and OS_B
which are used for OpenWRT and Factory OS respectively.

Flashing instructions (from bootloader):

Build and then locate the squashfs-tclinux.trx image file
Get the length of that file in hex: printf '%X\n' "$(stat -c%s the-file-squashfs-tclinux.trx)"
Connect to device with xmodem capability, e.g. picocom --send-cmd lsx -vv -b 115200 /dev/ttyUSB0
Switch device on and press a key within 3 seconds
Enter bootloader username and password: telecomadmin nE7jA%5m
Type: xmdm 80020000 <file length hex>
Quickly start xmodem and send the file, in picocom that is ctrl+a ctrl+s <paste-the-file-name> enter If the transfer fails to start, wait 30 seconds to a
minute for the bootloader prompt to return and then try the command again.
Once the transfer has completed successfully, type the following flash 80000 80020000 <file length hex>
Type go or simply restart the device to boot into OpenWRT

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/19021
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 00:51:58 +02:00
Caleb James DeLisle
73d0f92460 kernel: Add new platform EcoNet MIPS
EcoNet EN75xx is a big endian MIPS platform used in XPON (fiber),
DSL, and SIM (3g/4g) applications. Complete GPL vender SDKs exist
for this platform, but are based on Linux 2.6.

The bulk of this submission has already been accepted upstream:
https://patchwork.kernel.org/project/linux-mips/list/?series=960479&state=*

This platform uses a bootloader that is derived from old TrendChip
code. This bootloader implements a frustratingly complex Bad Block
Table which is implemented here in en75_bmt.c

This BMT is not upstreamed because it depends on mtk_bmt framework
which likewise is not upstreamed.

This BMT system rewrites block indexes in flash and if the bootloader
considers it to be corrupted, it will attempt to automatically rebuild
on boot. So without implementing the algorithm, you can't safely use
the disk at all.

Signed-off-by: Caleb James DeLisle <cjd@cjdns.fr>
Link: https://github.com/openwrt/openwrt/pull/19021
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-12 00:51:58 +02:00
Paweł Owoc
0575c3a181 uboot-envtools: use ubootenv_add_mtd function
Use ubootenv_add_mtd function for:
- Teltonika RUTC50
- Yuncore AX830

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19967
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 23:02:12 +02:00
Tianling Shen
d76a774270 rockchip: add Lunzn FastRhino R66S support
Hardware
--------
RockChip RK3568 ARM64 (4 cores)
1/2GB LPDDR4 RAM
2x 2500 Base-T (PCIe, r8125b)
1 LED (Power)
1 Button (Reset)
Micro-SD Slot
2x USB 3.0 Port
12V DC Jack

Installation
------------
Uncompress the OpenWrt sysupgrade and write it to a micro SD card using
dd.

Tested-by: Francisco G Luna <frangonlun@gmail.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19990
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 22:17:43 +02:00
Tianling Shen
678536740e uboot-rockchip: add Fastrhino R66S support
Add support for the Lunzn FastRhino R66S board.

Tested-by: Francisco G Luna <frangonlun@gmail.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19990
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 22:17:43 +02:00
Linus Kardell
bcfc3f01a4 openssl: correct PKG_LICENSE_FILES
Point to correct file name.

Signed-off-by: Linus Kardell <linus.kardell@infobric.com>
Link: https://github.com/openwrt/openwrt/pull/19999
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 22:06:26 +02:00
Linus Kardell
24ee23a8a5 libxml2: correct PKG_LICENSE_FILES
Point to correct file name.

Signed-off-by: Linus Kardell <linus.kardell@infobric.com>
Link: https://github.com/openwrt/openwrt/pull/19999
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 22:06:26 +02:00
Tianling Shen
689eebd8d2 rkbin: rename tpl-only target
No need to copy ATF blob again.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19998
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 21:35:05 +02:00
Tianling Shen
798fcd8742 rkbin: bump to latest git HEAD
Improved memory detection and stability.

Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19998
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 21:35:04 +02:00
Paweł Owoc
f26260c7e7 mediatek: filogic: Add label wan and cpu for Zyxel EX5601-T0
Add labels wan and cpu for ethernet ports.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19968
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 00:11:30 +02:00
Paweł Owoc
9ed4d27fbf mediatek: filogic: fix 5G MAC address for Zyxel EX5601
Currently 5G wireless interface MAC address is incorrect.
Fix by setting MAC address using Factory data.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19968
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 00:11:30 +02:00
Paweł Owoc
5c57477358 mediatek: filogic: Zyxel EX5601-T0 dts cleanup
Dts cleanup for Zyxel EX5601:
- duplicated code
- trailing zeros and whitespaces

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19968
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 00:11:30 +02:00
Paweł Owoc
6cf5ba9a7d mediatek: filogic: fix fip partition size for Zyxel EX5601-T0
Fix incorrect "fip" partition size.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19968
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-11 00:11:30 +02:00
Zhi-Jun You
97fca42507 mediatek: filogic: use NVMEM for wifi macaddr on NWA50AX Pro
Convert NWA50AX Pro to use NVMEM framework for wifi macaddr.

Also remove the unused macaddr@a.

Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/19982
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 22:57:49 +02:00
Zhi-Jun You
1f59ef64fa mediatek: filogic: use NVMEM for EEPROM/precal on NWA50AX Pro
Convert NWA50AX Pro to use NVMEM framework for EEPROM/precal.

Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/19982
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 22:57:49 +02:00
Rosen Penev
f5655704a7 ramips: e390ax: remove redundant 02_network MACs
These are already specified in DTS. Only thing missing is
label-mac-device.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19806
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 22:50:08 +02:00
Rosen Penev
75c4d43975 ramips: mt7621: set mac address in dts for DBDC
Support in mt76 has existed for quite a while. Use it.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19806
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-10 22:50:08 +02:00
Steffen Förster
ebd5e5fb53 ramips: switched TP-Link RE305 v1 to new partition layout
After trying to implement the gluon support for this device I ended up in a boot loop due to the usable amount of flash left. With this patch layout it uses the unused and empty flash space in the original partiton layout.
The version 3 of this device the RE365 share the same approach to have more usable space.

Signed-off-by: Steffen Förster <nemesis@chemnitz.freifunk.net>
Link: https://github.com/openwrt/openwrt/pull/18639
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2025-09-10 19:25:17 +02:00
Andy Chiang
5719d65064 kernel: r8168: add missing flags
PKG_MAKE_FLAGS is required when compiling r8168-rss

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20001
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-10 13:51:16 +02:00
Markus Stockhausen
76cfd5b8b7 realtek: cleanup mach include
A lot of definitions in the global mach include have been taken over
to the individual drivers. Only a few of the definitions are really
used nowadays. Remove all the unneeded lines.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19995
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-10 13:49:44 +02:00
Felix Fietkau
20d761cf19 kernel: backport patch to allow bpf fallback to interpreter
Deal with JIT failure more gracefully

Fixes: https://github.com/openwrt/openwrt/issues/19405
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-10 06:34:58 +02:00
Felix Fietkau
e401229918 mt76: update to Git HEAD (2025-09-09)
27ad37728c3f wifi: mt76: mt7996: Check phy before init msta_link in mt7996_mac_sta_add_links()
95c9b8099ede wifi: mt76: mt7996: Set EML capabilities for AP interface
08df8dd7b00b wifi: mt76: mt7996: Use proper link_id in link_sta_rc_update callback
15fa4e33ee8f wifi: mt76: mt7996: Enable MLO support for client interfaces
3400b1ba33be wifi: mt76: mt7925: add pci restore for hibernate
51a1c0a086c8 wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device
435e596914fa wifi: mt76: mt7996: Use proper link info in mt7996_mcu_add_group
d30faac3b645 firmware: update mt7996 and mt7992 firmware to 20250606
304226bc4552 wifi: mt76: mt7996: Fix mt7996_reverse_frag0_hdr_trans for MLO
7cf18f8ebbb8 wifi: mt76: mt7996: Add all active links to poll list in mt7996_mac_tx_free()
16090cb27d9f wifi: mt76: mt7996: Implement MLD address translation for EAPOL
a1c319500a53 wifi: mt76: mt7996: Temporarily disable EPCS
5f3ea4562fbf wifi: mt76: mt7921: Place upper limit on station AID
ef2468830f6d wifi: mt76: un-embedd netdev from mt76_dev
29bca0ca462b net: mediatek: wed: Introduce MT7992 WED support to MT7988 SoC
245f6ff460c8 wifi: mt76: Add reset_idx to reset_q mt76_queue_ops signature.
4a3a5a7d71a8 wifi: mt76: Remove q->ndesc check in mt76_dma_rx_fill()
d540538299f7 wifi: mt76: Differentiate between RRO data and RRO MSDU queues
d0217732f96e wifi: mt76: Do not always enable NAPIs for WED RRO queues
1df790839241 wifi: mt76: mt7996: Initial DMA configuration for MT7992 WED support
fca511f401e9 wifi: mt76: mt7996: Enable HW RRO for MT7992 chipset
8134055d3459 wifi: mt76: mt7996: Introduce the capability to reset MT7992 WED device
4f81d751b5de wifi: mt76: mt7996: Fix tx-queues initialization for second phy on mt7996
f559eef156fd wifi: mt76: mt7996: Fix RX packets configuration for primary WED device
6b518355fec6 wifi: mt76: mt7996: Enable WED for MT7992 chipset
13eb05fa4a43 wifi: mt76: mt7996: Introduce RRO MSDU callbacks
ac1bca49973b wifi: mt76: Add rx_queue_init callback
d82330a9d019 wifi: mt76: mt7996: Decouple RRO logic from WED support
0a32ae3cc23d wifi: mt76: Add mt76_dma_get_rxdmad_c_buf utility routione
6c902ccba889 wifi: mt76: mt7996: Add SW path for HW-RRO v3.1
f271ce48d73b mt76: mt7996: fix unsigned comparison
d48b221e39f1 wifi: mt76: mt7925: prevent NULL vif dereference in mt7925_mac_write_txwi
719cda7c9f18 wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_tx_check_aggr()
03b0c871630a wifi: mt76: mt7996: add missing NULL pointer check
91dcccebfe19 firmware: update mt7996/mt7992 firmware to 20250905
76401f5e2e05 mt76: update RRO patches to the latest version
7b4b6c844554 wifi: mt76: Convert mt76_wed_rro_ind to LE
0d6eaa417441 wifi: mt76: mt7915: fix mt7981 pre-calibration
015349622b0c wifi: mt76: mt7925: fix incorrect length field in txpower command
5776b3292908 wifi: mt76: mt7925: refine the txpower initialization flow
b50c633f9158 wifi: mt76: mt7996: support writing MAC TXD for AddBA Request
ea9998693579 wifi: mt76: mt7996: Add missing DMA sync for EAPOL frames
a4d6f193be22 wifi: mt76: mt7996: remove redundant per-phy mac80211 calls during restart
ffda4432654d wifi: mt76: mt7996: improve hardware restart reliability
a6559a003d1b wifi: mt76: mt7996: decrease timeout for commonly issued MCU commands

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-09 18:31:23 +02:00
Felix Fietkau
19e9772935 kernel: improve mtk_eth_soc performance
- shrink data structures
- avoid unnecessary divisions
- support GSO fraglist on tx

Reapply with fixed patch

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-09 06:33:56 +02:00
Andy Chiang
9a02069365 mac80211: use https instead of http
Use CDN first, if fails, it will use https://mirror2.openwrt.org/sources

Signed-off-by: Andy Chiang <AndyChiang_git@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19979
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-09 00:12:55 +02:00
Weijie Gao
c21d4916ae loongarch64: switch to Linux 6.12 by default
Use Linux kernel version 6.12 by default for loongarch64 target.

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19980
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-09 00:10:31 +02:00
Elbert Mai
a61ab43fe7 bcm2712: add kmod-r8169 and kmod-usb-net-rtl8152
Boards such as [1] and [2] add an extra Ethernet port to Raspberry Pi (CM)5.
These typically use Realtek PCIe or USB Ethernet NICs. Include kmod-r8169 and
kmod-usb-net-rtl8152 by default to make it easy to configure LAN/WAN ports
with these parts on Raspberry Pi 5.

Because CM5 can fit in the same carrier boards as CM4, also ensure that both
devices have the same Ethernet NIC kmods.

[1]: https://www.waveshare.com/wiki/CM5-DUAL-ETH-MINI
[2]: https://www.waveshare.com/wiki/PCIe_TO_Gigabit_ETH_Board_(C)

Signed-off-by: Elbert Mai <code@elbertmai.com>
Link: https://github.com/openwrt/openwrt/pull/19384
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-09 00:07:18 +02:00
Zoltan HERPAI
cd394b420a sunxi: enable at24 support
Certain boards have an at24(-compatible) EEPROM for storing various
parameters like MAC addresses. Enable support for this hardware across
the whole target.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2025-09-08 22:35:39 +02:00
Zoltan HERPAI
9fae84ecc9 uboot-sunxi: randomize ethaddr on Olimex A20 boards
While these boards have an at24 EEPROM for storing the MAC address,
early revisions (up until about 2017) did not contain actual addresses.
Create a random address to have ethernet function properly in u-boot.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2025-09-08 22:35:39 +02:00
Christian Marangi
35ff70e807 airoha: backport upstream fixes for pinctrl PHY LED and MDIO
Backport fixes for Airoha pinctrl driver for PHY LED and MDIO bus. This
fix a copy-paste error for PHY LED and a misconfiguration for MT7530
embedded Switch MDIO bus GPIO pin to permit usage of external PHYs.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-08 20:24:14 +02:00
Tianling Shen
672e45e69f rockchip: increase the number of serial ports for rk35xx
The RK356x/RK3588 SoCs support up to 10 serial ports.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19917
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 15:04:23 +02:00
Jan Kardell
420be05d90 libxml2: Add abi version
The version of libxml2 was bumped from 2.13.6 to 2.14.5. Since version
2.14, libxml2 is not binary compatible with older versions. Therefore
add an abi version.

From the NEWS file:
Binary compatibility is restricted to versions 2.14 or newer. On ELF
systems, the soname was bumped from libxml2.so.2 to libxml2.so.16.

Signed-off-by: Jan Kardell <jan.kardell@telliq.com>
Link: https://github.com/openwrt/openwrt/pull/19983
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:53:20 +02:00
Fabrice Fontaine
13e10bb8d3 package/libs/gettext-full: fix license
gettext-full only provides libintl which is not licensed under
GPL-3.0.-or-later but under LGPL-2.1-or-later as stated in
gettext-runtime/intl/COPYING.LIB

Fixes: c10d97484a (Add more license tags with SPDX identifiers)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19943
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:51:35 +02:00
Fabrice Fontaine
9a157b5d83 package/libs/elfutils: fix license
elfutils libraries are not licensed under GPL-3.0-or-later, they are dual
licensed: GPL-2.0-or-later OR LGPL-3.0-or-later as clearly stated in
source files as well as on https://sourceware.org/elfutils:

The libraries and backends are dual GPLv2+/LGPLv3+. The utilities are GPLv3+.

Fixes: b98fb76646 (elfutils: import package from packages.git)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19941
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:46:48 +02:00
Marcos Alano
67345ead6c build: Add compatibility with uutils' coreutils
Add support so openwrt can be compiled using
coreutils from GNU or uutils.

Signed-off-by: Marcos Alano <marcoshalano@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19883
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:41:38 +02:00
Tianling Shen
13db7a0708 rockchip: backport GATE_LINK support for RK3588
Apart from improved power consumption, this fixes the runtime errors
from the pmdomain driver (failed to set idle on domain '%s')

Backport four clk fixes while at it.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19925
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:28:49 +02:00
Tianling Shen
3735317acc rockchip: refresh and reorder patches
- Replace NanoPi R3S patch with upstreamed version
- Merge NanoPC T6 mmc fixes patches
- Reorder patches to start from 001

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19925
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:28:49 +02:00
Rhnn Hur
cefb814fca mediatek: filogic: add support for ipTIME AX3000M
ipTIME AX3000M is an 802.11ax (Wi-Fi 6) router, based on MediaTek
MT7981B. (Filogic 820)

Specifications:
* SoC: MetiaTek MT7981B
* RAM: 256MiB
* Flash: ESMT SPI-NAND F50L1G41LB 128MiB
* Wi-Fi:
  * MediaTek MT7915E: 2.4GHz and 5GHz
* Ethernet: 5x 1GbE
  * Switch: MediaTek MT7531
* USB: 1x 3.0
* UART: J4 (115200 baud)
* LED:
  * PWR: VCC
  * CPU, 2.4G, 5G: GPIO
  * LAN 1-4, WAN: Controlled by Switch

MAC Addresses:
* 2.4G, 5G: B0:XX:XX:04:2A:60 (factory 0x4)
* WAN: B0:XX:XX:04:2A:61 (factory 0x4, +1)
* LAN: B0:XX:XX:04:2A:63 (factory 0x4, +3)

MTD Partitions:
* 0x000000000000-0x000000100000 : "BL2"
* 0x000000100000-0x000000180000 : "u-boot-env"
* 0x000000180000-0x000000380000 : "Factory"
* 0x000000380000-0x000000580000 : "FIP"
* 0x000000580000-0x000007380000 : "ubi"

UBI Partitions (Dynamic):
* id: 0, kernel2
* id: 1, kernel
* id: 2, rootfs
* id: 3, rootfs_data
* id: 4, rootfs2

Installation:
* Upload factory image through the tftp recovery mode.

Notes:
* This device has a dual-boot partition scheme, if installing with the
stock web interface method will flash only on the inactive ubi partitions
which are kernel and rootfs, newly flashed kernel didn't know the proper
rootfs partition so the booted kernel will panic.

Tested-by: Rhnn Hur <hurrhnn@icmp.kr>
Signed-off-by: Rhnn Hur <hurrhnn@icmp.kr>
Link: https://github.com/openwrt/openwrt/pull/16643
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:23:37 +02:00
Aleksander Jan Bajkowski
ea002c077d zynq: disable unused Vitesse PHY
All devices supported by the Zynq target have either a Realtek or Marvell
PHY. The Vitesse PHY was enabled when the target was created (2d45ad07fc).
It's not used here, so it's safe to disable it.

Ethernet PHYs used by individual devices are listed below.

Device			PHY
AVNET ZedBoard		Marvell 88E1518
Digilent Zybo		Realtek RTL8211E
Digilent Zybo Z7	Realtek	RTL8211E or RTL8211F
Xilinx ZC702		Marvell 88E1116R

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/19969
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:21:50 +02:00
Aleksander Jan Bajkowski
6be2c7f651 zynq: refresh config
This was done by executing these command:
$ make kernel_oldconfig CONFIG_TARGET=platform

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/19969
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:21:50 +02:00
Mikhail Zhilkin
23f016cf1e mediatek: CMCC RAX3000M: add RAX3000Me as alt model
The devices are basically identical. The RAX3000Me can be with
ddr3 RAM.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Tianling Shen
a140bcbc7c kernel: add support for FudanMicro FM25S01A SPI-NAND
Add support for FudanMicro FM25S01A SPI NAND.
Datasheet: http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
[add lore.kernel.org link to the patch files]
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Mikhail Zhilkin
ee2fae27bc uboot-mediatek: add support for FudanMicro FM25S01A
This patch adds support for FudanMicro FM25S01A SPI NAND. It's required
for some CMCC RAX3000Me hardware revisions.

The patch was partially taken from ImmortalWrt.
Link:
https://raw.githubusercontent.com/immortalwrt/immortalwrt/refs/heads/master/package/boot/uboot-mediatek/patches/342-mtd-spinand-Support-fmsh.patch

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Mikhail Zhilkin
863a594d18 arm-trusted-firmware-mediatek: add FudanMicro manufacturer
Add FudanMicro manufacturer.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Mikhail Zhilkin
bf55d2fbec uboot-mediatek: CMCC RAX3000M: add ddr3 build
This commit adds ddr3 build for the ddr3 variant of the CMCC RAX3000Me
router.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Mikhail Zhilkin
fa5e55153c uboot-mediatek: CMCC RAX3000M: add Airoha AN8855 switch support
This commit adds support for Airoha AN8855 switch. Some CMCC RAX3000Me hw
revisions are shipped with Airoha switch.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19760
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-08 14:02:52 +02:00
Michal Halva
04e9d154f2 mediatek: filogic: add support for Cudy WR3000P v1
Hardware
--------
MediaTek MT7981 WiSoC
512MB DDR4 RAM
128MB SPI-NAND
MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
4 LAN MediaTek MT7531 PHY
1 WAN RTL8221B-VB-CG 2.5Gbps PHY
UART: 115200 8N1 3.3V
USB2 Port
PoE on WAN Port

MAC:
LAN MAC: label mac
WAN MAC: label mac + 1
2.4G MAC: label mac
5G MAC: label mac + 1 with LA bit set

Gotchas:
WAN LED does not light up (might require further DTS tweaks)
PoE on WAN port was not tested

This commit is heavily based on WR3000H one, I've just ported DTS differences
from the official image to get USB support and proper LED mapping.

Installation
------------
[Untested as I've received and used a transitional image from Cudy]

1. Connect to the serial port as described in the "Hardware" section.

2. Power on the device + press reset pin. Keep pressing reset pin to enter the U-Boot  shell.

3. Download the OpenWrt initramfs image. Place it on an TFTP server
   connected to the Cudy LAN ports. Make sure the server is reachable at
   192.168.1.88. Rename the image to "cudy3000p.bin"

4. Download and boot the OpenWrt initramfs image.

   $ tftpboot 0x46000000 cudy3000s.bin; bootm 0x46000000

5. Transfer the OpenWrt sysupgrade image to the device using scp.
   Install with sysupgrade.

Signed-off-by: Michal Halva <hedik01@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19636
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:44:35 +02:00
FUKAUMI Naoki
d16d2765bd rockchip: add support for Radxa E52C
The Radxa E52C is a compact network computer using the Rockchip RK3582
SoC.

- https://radxa.com/products/network-computer/e52c

Hardware
--------

- Dual Cortex-A76 and Quad Cortex-A55 CPU
- 5 TOPS NPU
- 2/4/8GB LPDDR4 RAM
- 16/32/64GB on-board eMMC
- microSD card slot
- 2x 2.5 Gigabit Ethernet ports
- USB 3.1 Gen1 Type-A HOST/OTG port
- USB Type-C debug port
- USB Type-C power port

Installation
------------

Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
071aa994cd rockchip: add support for Radxa ROCK 5C/5C Lite
The Radxa ROCK 5C (Lite) is a single board computer using the Rockchip
RK3588S2 (RK3582) SoC.

- https://radxa.com/products/rock5/5c

Hardware
--------

- Quad (Dual) Cortex-A76 and Quad Cortex-A55 CPU
- Mali-G610 MP4 GPU (5C only)
- 6 (5) TOPS NPU
- 1/2/4/8/16/32GB LPDDR4X RAM
- eMMC/SPI NOR flash connector
- microSD card slot
- Wi-Fi 6 (AIC8800D80, not yet supported)
- Gigabit Ethernet port with PoE (additional PoE HAT required)
- USB 3.1 Gen1 Type-A HOST/OTG port
- USB 3.1 Gen1 Type-A HOST port
- 2x USB 2.0 Type-A HOST ports
- FPC connector with PCIe 2.1 x1
- PWM fan connector
- 20x2 pin header
- USB Type-C power port

Installation
------------

Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
0839345211 rockchip: add support for Radxa ROCK 5 ITX/ITX+
The Radxa ROCK 5 ITX(+) is a Mini-ITX form factor computer using the
Rockchip RK3588 SoC.

- https://radxa.com/products/rock5/5itx
- https://radxa.com/products/rock5/5itxp

Hardware
--------

- Quad Cortex-A76 and Quad Cortex-A55 CPU
- Mali-G610 MP4 GPU
- 6 TOPS NPU
- 4/8/16/24/32GB LPDDR5 RAM
- on-board eMMC
- 16MB SPI NOR flash
- microSD card slot
- 2x 2.5 Gigabit Ethernet ports with PoE (additional PoE module required)
- USB 3.1 Gen1 Type-C HOST/OTG port
- 4x USB 3.1 Gen1 Type-A HOST ports
- 2x USB 2.0 Type-A HOST ports
- M.2 M Key connector with PCIe 3.0 x2
- 4x SATA connectors (ITX only)
- 2nd M.2 M Key connector with PCIe 3.0 x2 (ITX+ only)
- M.2 E Key connector with PCIe 2.1 x1 and USB 2.0
- RTC battery socket for CR1220
- 4pin PWM fan connector
- Serial console pin header
- Front panel pin headers
- 24pin ATX power connector
- 5525 12V DC jack

Installation
------------

Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
4a78af9876 rockchip: add support for Radxa ROCK 5T
The Radxa ROCK 5T is a single board computer using the Rockchip
RK3588(J) SoC.

- https://radxa.com/products/rock5/5t

Hardware
--------

- Quad Cortex-A76 and Quad Cortex-A55 CPU
- Mali-G610 MP4 GPU
- 6 TOPS NPU
- 4/8/16/24/32GB LPDDR5 RAM
- 16/32/64/128/256GB on-board eMMC (optional)
- 16MB SPI NOR flash
- microSD card slot
- Wi-Fi 6E (Intel AX210, limited support)
- 2x 2.5 Gigabit Ethernet ports with PoE (additional PoE module required)
- USB 3.1 Gen1 Type-C HOST/OTG port
- 2x USB 3.1 Gen1 Type-A HOST ports
- 2x USB 2.0 Type-A HOST ports
- 2x M.2 M Key connectors with PCIe 3.0 x2
- M.2 B Key connector
- SIM card slot
- RTC battery connector
- PWM fan connector
- 20x2 pin header
- 5525 12V DC jack

Installation
------------

Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
d35c641ced rockchip: add support for Radxa ROCK 5B+
The Radxa ROCK 5B+ is a single board computer using the Rockchip
RK3588 SoC.

- https://radxa.com/products/rock5/5bp

Hardware
--------

- Quad Cortex-A76 and Quad Cortex-A55 CPU
- Mali-G610 MP4 GPU
- 6 TOPS NPU
- 4/8/16/24/32GB LPDDR5 RAM
- 16/32/64/128/256GB on-board eMMC (optional)
- 16MB SPI NOR flash
- microSD card slot
- Wi-Fi 6 (Realtek RTW8852BE)
- 2.5 Gigabit Ethernet port with PoE (additional PoE HAT required)
- USB 3.1 Gen1 Type-C HOST/OTG port
- 2x USB 3.1 Gen1 Type-A HOST ports
- 2x USB 2.0 Type-A HOST ports
- 2x M.2 M Key connectors with PCIe 3.0 x2
- M.2 B Key connector
- SIM card slot
- RTC battery connector
- PWM fan connector
- 20x2 pin header
- USB Type-C power port

Installation
------------

Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
eMMC using dd.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
8aa83efe57 rockchip: add M.2 M/E key modules support for Radxa ROCK 5B
Add support for M.2 M/E key modules.

- NVMe
- Radxa Wireless Module A8 (Realtek RTL8852BE)

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
3c23e9a327 rockchip: add HATs/M.2 E key module support for Radxa ROCK 5A
Add support for Radxa HATs/M.2 E key module.

- Radxa Dual 2.5G Router HAT (Realtek RTL8125BG/NVMe)
- Radxa Penta SATA HAT (JMicron JMB585)
- Radxa Wireless Module A8 (Realtek RTL8852BE)

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
547626764b uboot-rockchip: add support for Rockchip RK3582
Import patches from
 https://patchwork.ozlabs.org/project/uboot/list/?series=468562

Apply patch 3/3 partially due to conflicts.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
9fa2a472af uboot-rockchip: prepare for Rockchip RK3582
Use "rk358x" for RK3588, RK3588S, and upcoming RK3582.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
6e361c76ee rockchip: backport dts changes for Radxa E52C
Backport dts changes up to Linux v6.17 for Radxa E52C.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
73d50b420e rockchip: backport dts changes for Radxa ROCK 5C/5C Lite
Backport dts changes up to Linux v6.17 for Radxa ROCK 5C and 5C Lite.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
61acc92a71 rockchip: backport dts changes for Radxa ROCK 5 ITX/ITX+
Backport dts changes up to Linux v6.17 for Radxa ROCK 5 ITX and ITX+.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
c14178a71e rockchip: backport dts changes for Radxa ROCK 5B/5B+/5T
Backport dts changes up to Linux v6.17 for Radxa ROCK 5B, 5B+, and 5T.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
31a4923c4f rockchip: backport dts changes for Radxa ROCK 5A
Backport dts changes up to Linux v6.17 for Radxa ROCK 5A.

Use power(green) LED instead of heartbeat(blue) LED.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
3adb68ef75 rockchip: backport dts changes for Rockchip RK358x
Backport dts changes up to Linux v6.17 for Rockchip RK358x.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
FUKAUMI Naoki
9538c7fac0 generic: 6.12: backport gated-fixed-clk driver
Backport gated-fixed-clk driver from Linux v6.13.

This is needed to fix a PCIe controller probe hang on the Radxa ROCK 5
ITX.

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/19867
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:29:39 +02:00
Fil Dunsky
194466d52a mediatek: Huasifei WH3000 Pro wifi fix
typo forgot to add `kmod-mt7915e`

Fixes: db1de8d21f ("mediatek: add Huasifei WH3000 Pro support")
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19825
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 14:01:05 +02:00
Goetz Goerisch
0ee0846be1 kernel: bump 6.6 to 6.6.104
remove upstreamed patches:
generic/backport-6.6/626-v6.17-net-ipv4-fix-regression-in-local-broadcast-routes.patch [1]

All other patches auto-refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.104&id=a208d67cb44ba441bd38e04e270e9f1e230234ee

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19955
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 11:45:08 +02:00
John Audia
44f70be996 kernel: bump 6.12 to 6.12.45
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.45

Removed upstreamed:
  generic/backport-6.12/626-v6.17-net-ipv4-fix-regression-in-local-broadcast-routes.patch[1]
  mediatek/patches-6.12/051-v6.17-thermal-drivers-mediatek-lvts_thermal-Change-lvts-co.patch[2]
  mediatek/patches-6.12/052-v6.17-thermal-drivers-mediatek-lvts_thermal-Add-lvts-comma.patch[3]
  mediatek/patches-6.12/053-v6.17-thermal-drivers-mediatek-lvts_thermal-Add-mt7988-lvt.patch[4]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.45&id=81ff76c1b08827bc81779400a3640f102a9a9ade
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.45&id=d1f4b09d9bb991c0fe039511520c6e59f1b42ec1
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.45&id=739229eb4d5cd009d81ad8946fdd4bb5ec790c2e
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.45&id=9a7141d4808dcb833f87154af88560c785306cd2

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19956
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 11:42:46 +02:00
John Audia
c55a411af2 lantiq: adapt upstream commit to some dts files
Some lantiq dts files still use etop but 6.12.45[1] changed to ethernet
so bring them into parity with this change.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=8c431ea8f3f795c4b9cfa57a85bc4166b9cce0ac

Co-Authored-by: Hauke Mehrtens <hauke@hauke-m.de>
Co-Authored-by: Aleksander Bajkowski <olek2@wp.pl>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19956
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-07 11:42:46 +02:00
Markus Stockhausen
fcd3ce6954 realtek: carve out mdio bus from ethernet driver
So much code was distributed between phy/ethernet/dsa drivers. A lot
was already cleand up before. With this step the mdio bus gets its
own space and is no longer hidden inside the ethernet driver.

This commit is mostly a copy/paste that includes only minor changes.

- define prefixes are renamed to RTMDIO
- The driver is totally self contained (does not rely on SoC include)
- The DTS structure (mdio node below ethernet node) was kept
- The driver is added to the kernel config of all subtargets.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19942
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:37:59 +02:00
Markus Stockhausen
3fae46d5cc realtek: early ethernet probe in dsa setup
The ethernet and mdio code will be splitted. The dsa driver depends
on proper loading of both, before switch setup can start. Sadly there
are severe cleanup issues in the probe() function if one of the
required devices is not available.

As a temporary workaround provide a dedicated check function that
verifies if the ethernet platform device driver is loaded and can
be used.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19942
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:37:59 +02:00
Shiji Yang
98b160acd2 ramips: fix wrong CRLF line-ending
Use Unix LF style instead of Windows CRLF style.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19963
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:36:55 +02:00
Markus Stockhausen
2420a77556 realtek: make NAPI polling thread safe
At the end of RX NAPI polling the counter and mask registers are
cleaned up. Although this might run in parallel there is no
synchronization and the register modifications are some wild mix.
RTL83xx enables only the interrupt of a single ring while RTL93xx
just reactivates all interrupts (even for other NAPI threads).
Make use of the driver lock and only modify the interrupt bits that
the current thread owns.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19960
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:36:01 +02:00
Markus Stockhausen
e3ccd1a287 realtek: RTL93xx: do not drop packets in software
Now that the counter registers work fine there is no need to
free buffers in software. Hardware will automatically block
input processing when software processing is too slow.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19960
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:36:00 +02:00
Markus Stockhausen
a93e725140 realtek: RTL93xx: Make use of correct ring size counters
The receive path of the RTL93xx SoCs is currently discarding packets
in software. Analysis gives the following explanation:

- RX ring size registers are setup with the full software ring size
- When packets are received the packet counter registers are increased
- After RX processing the counter registers are changed the wrong way
- From then SOC is allowed to receive more packets than software allows
- Overflow interrupts are fired
- As a reaction to that the software drops packets

Change the processing as follows:

- Setup ring size registers with a headroom of 2 buffers
- Decrease the counter registers with the real work done

With this change no more overflow interrupts occur because the SoC
disables the queues before they can overflow or hit a buffer that is
still owned by the CPU.

Benchmark from single stream iperf3 run, with server process running
on ZyXEL XGS1210 (RTL930x).

iperf3 run before

-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.86, port 54412
[  5] local 192.168.2.71 port 5201 connected to 192.168.2.86 port 54418
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
[  5]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   3.00-4.01   sec  5.12 MBytes  42.8 Mbits/sec
[  5]   4.01-5.00   sec  11.4 MBytes  95.8 Mbits/sec
[  5]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec

iperf3 run after

-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.2.86, port 55228
[  5] local 192.168.2.71 port 5201 connected to 192.168.2.86 port 55232
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  22.8 MBytes   191 Mbits/sec
[  5]   1.00-2.01   sec  25.4 MBytes   211 Mbits/sec
[  5]   2.01-3.00   sec  25.4 MBytes   215 Mbits/sec
[  5]   3.00-4.01   sec  26.5 MBytes   220 Mbits/sec
[  5]   4.01-5.00   sec  26.2 MBytes   222 Mbits/sec
[  5]   5.00-6.00   sec  26.9 MBytes   225 Mbits/sec
[  5]   6.00-7.00   sec  27.0 MBytes   226 Mbits/sec
[  5]   7.00-8.01   sec  26.9 MBytes   224 Mbits/sec
[  5]   8.01-9.00   sec  26.5 MBytes   223 Mbits/sec
[  5]   9.00-10.00  sec  26.8 MBytes   225 Mbits/sec
[  5]  10.00-10.02  sec   640 KBytes   224 Mbits/sec

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19960
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-07 11:36:00 +02:00
Felix Fietkau
79d3db7447 Revert "kernel: improve mtk_eth_soc performance"
This reverts commit 3e6d5be3d9, until
stability issues have been figured out.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-05 18:19:24 +02:00
Aleksander Jan Bajkowski
5e231cc2f0 kernel: add quirk for two SFP+ transceivers
Backport quirks for two SFP+ modules. Both support the RollBall protocol.
The fix for the FLYPRO module is queued in net-next tree.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/19949
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-05 13:51:48 +02:00
Markus Stockhausen
f151951a0f realtek: drop obsolete kernel patches
These patches hacked the set_eee() and get_eee() functions into
the phy_driver. Drop them with no consumer left.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-05 13:35:39 +02:00
Markus Stockhausen
3d7b0bc5c1 realtek: drop RTL8226/RTL8221B downstream PHY driver
Since we are using upstream PHY drivers there is no more need
for the downstream version. Side effect is that the SoC dependent
polling functions are no longer needed. This was always wrong
in this driver.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19906
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-05 13:35:39 +02:00
Mieczyslaw Nalewaj
b4294bc980 kernel: update and move net bridge patch to backport folder
Update patch 642-net-bridge-locally-receive-all-multicast-packets-if-.patch to upstream version
and move to backport folder as 625-v6.16-net-bridge-locally-receive-all-multicast-packets-if-.patch
because kernel 6.16 already includes it.

Link: https://lore.kernel.org/all/OSZPR01MB8434308370ACAFA90A22980798B32@OSZPR01MB8434.jpnprd01.prod.outlook.com/
Link: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a496d2f0fd612ab9e10700afe00dc9267bad788b

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/19875
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 23:50:17 +02:00
Felix Fietkau
d8904254bc Revert "mt76: update to Git HEAD (2025-09-04)"
This reverts commit 2eb42969a7, due to reported
regression

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-04 23:24:06 +02:00
Felix Fietkau
2eb42969a7 mt76: update to Git HEAD (2025-09-04)
27ad37728c3f wifi: mt76: mt7996: Check phy before init msta_link in mt7996_mac_sta_add_links()
95c9b8099ede wifi: mt76: mt7996: Set EML capabilities for AP interface
08df8dd7b00b wifi: mt76: mt7996: Use proper link_id in link_sta_rc_update callback
15fa4e33ee8f wifi: mt76: mt7996: Enable MLO support for client interfaces
3400b1ba33be wifi: mt76: mt7925: add pci restore for hibernate
51a1c0a086c8 wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device
435e596914fa wifi: mt76: mt7996: Use proper link info in mt7996_mcu_add_group
d30faac3b645 firmware: update mt7996 and mt7992 firmware to 20250606
304226bc4552 wifi: mt76: mt7996: Fix mt7996_reverse_frag0_hdr_trans for MLO
7cf18f8ebbb8 wifi: mt76: mt7996: Add all active links to poll list in mt7996_mac_tx_free()
16090cb27d9f wifi: mt76: mt7996: Implement MLD address translation for EAPOL
a1c319500a53 wifi: mt76: mt7996: Temporarily disable EPCS
5f3ea4562fbf wifi: mt76: mt7921: Place upper limit on station AID
ef2468830f6d wifi: mt76: un-embedd netdev from mt76_dev
29bca0ca462b net: mediatek: wed: Introduce MT7992 WED support to MT7988 SoC
245f6ff460c8 wifi: mt76: Add reset_idx to reset_q mt76_queue_ops signature.
4a3a5a7d71a8 wifi: mt76: Remove q->ndesc check in mt76_dma_rx_fill()
d540538299f7 wifi: mt76: Differentiate between RRO data and RRO MSDU queues
d0217732f96e wifi: mt76: Do not always enable NAPIs for WED RRO queues
1df790839241 wifi: mt76: mt7996: Initial DMA configuration for MT7992 WED support
fca511f401e9 wifi: mt76: mt7996: Enable HW RRO for MT7992 chipset
8134055d3459 wifi: mt76: mt7996: Introduce the capability to reset MT7992 WED device
4f81d751b5de wifi: mt76: mt7996: Fix tx-queues initialization for second phy on mt7996
f559eef156fd wifi: mt76: mt7996: Fix RX packets configuration for primary WED device
6b518355fec6 wifi: mt76: mt7996: Enable WED for MT7992 chipset
13eb05fa4a43 wifi: mt76: mt7996: Introduce RRO MSDU callbacks
ac1bca49973b wifi: mt76: Add rx_queue_init callback
d82330a9d019 wifi: mt76: mt7996: Decouple RRO logic from WED support
0a32ae3cc23d wifi: mt76: Add mt76_dma_get_rxdmad_c_buf utility routione
6c902ccba889 wifi: mt76: mt7996: Add SW path for HW-RRO v3.1

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-04 19:30:42 +02:00
Felix Fietkau
3e6d5be3d9 kernel: improve mtk_eth_soc performance
- shrink data structures
- avoid unnecessary divisions
- support GSO fraglist on tx

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-04 19:30:42 +02:00
Hauke Mehrtens
d751f1e57e mac80211: Fix compilation of iwlwifi driver
The Intel iwlwifi mld driver uses some updated thermal functions. Adapt
the driver to compile again kernel 6.6 again.

Fixes: 9c82d49999 ("mac80211: iwlwifi fix BE200 probe")
Link: https://github.com/openwrt/openwrt/pull/19948
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 12:10:06 +02:00
Hauke Mehrtens
350d8a0711 mac80211: iwlwifi: Add DRIVER_11BE_SUPPORT
The driver support Wifi 7, add dependency to DRIVER_11BE_SUPPORT.

Link: https://github.com/openwrt/openwrt/pull/19948
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 12:09:35 +02:00
Hauke Mehrtens
a51d246e85 mac80211: Refresh patches
Automatically Refresh the patches.

Fixes: 4d3a35f368 ("mac80211: remove rt2x00_platform_data")
Link: https://github.com/openwrt/openwrt/pull/19948
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-04 12:09:35 +02:00
Markus Stockhausen
6fdff789cd realtek: Rename ZyXEL XGS1210-12 to XGS1210-12 a1
A new version of the ZyXEL XGS1210-12 has been discovered in
the wild. It includes at least two known hardware changes

- lan9/lan10 use RTL8221B instead of RTL8226
- lan9/lan10 use different SMI busses

Pave the new device the way by splitting the existing DTS.
According to the vendor website the models are named

- A1 (first version): not explicetly labeled
- B1 (second version): Label Rev. B1 on device

Rename the current OpenWrt device definition to A1 as it was
made for the first version. To stay compatible with older
installations, add the old device name to the list of
supported devices.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19908
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 21:40:36 +02:00
Markus Stockhausen
1a200ead4f realtek: rt-loader: add ROM uImage lookup (aka standalone)
The rt-loader currently only supports booting piggy backed lzma
compressed kernels. This requires a data layout where the kernel
directly follows the loader. That might not be sufficient for
more complex flash layouts.

Especially bootbase devices (like ZyXEL GS1920) will need some
kind of chain loading that needs to be explored yet.

Enhance the rt-loader as follows:

- Allow to build as standalone version
- In this case a flash start address is given
- During boot loader will search the ROM starting from that address
- If it finds a uImage this will be loaded into RAM
- Afterwards it will be decompressed to its load address
- While we are here add uncompressed uImage support

As always the implementation tries to be as simple as possible.

- uImage detection works without magics
- uImage will be loaded to highest possible memory address
- Documentation in Makefile has been adapted accordingly

Funny side fact: A standalone rt-loader can chain load a piggy
backed rt-loader from flash.

During bootup loader will show

rt-loader
Running on RTL8380M (chip id 6275C) with 256MB
Relocate 15760 bytes from 0x82000000 to 0x8ffa0000
Searching for uImage starting at 0xb45a0000 ...
uImage 'MIPS OpenWrt Linux-6.12.40' found at 0xb45a0000 with load address 0x80100000
Copy 2923034 bytes of image data to 0x8fcd61e6 ...
Extract image with 2923034 bytes from 0x8fcd61e6 to 0x80100000 ...
Final kernel size is 2923034 bytes
Booting kernel from 0x80100000 ...

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19832
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 21:36:34 +02:00
Markus Stockhausen
908cda6943 realtek: rt-loader: memory library enhancements
Provide a crc32 function (will be needed later). Do some
minor naming and coding cleanups

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19832
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 21:36:34 +02:00
Tianling Shen
8056b13965 uboot-rockchip: Update to 2025.07
Update to 2025.07.

Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19923
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 21:13:52 +02:00
Tianling Shen
b21702805f arm-trusted-firmware-rockchip: Update to 2.12.6
Bump GCC toolchain while at it.

Changelog: https://trustedfirmware-a.readthedocs.io/en/lts-v2.12.6/change-log.html#lts-2-12-6-2025-08-29

Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/19923
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 21:13:52 +02:00
David Bauer
1df3d0c4b8 uqmi: update to latest HEAD
7914da4 uqmi: extend wda-get-data-format
7aef645 wda: add option for enabling flow-control
f74ddb3 wds: implement retrieval of profile list
6be8b6e wds: implement selection of LTE attach PDNs
21c4aaa wds: implement selection of default profile
5c844c0 wds: implement profile deletion
0756755 wds: reduce code duplication
283fbe0 data: add downlink padding option
4b90804 wda: allow agggregation parameter configuration
c20c017 uqmi: enable binding WDS sessions to QMAP multiplex
a1b37fe uqmi: fix whitespace errors

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-09-03 12:13:30 +02:00
Sven Eckelmann
d2beb6bdc4 realtek: rtl931x: Fix unsafe MAC_L2_GLOBAL_CTRL2 access
Registers must not be accessed in parallel by multiple drivers.
Read-modify-write operations are not atomic, and the result of parallel
access is undefined.

The MAC_L2_GLOBAL_CTRL2 register is essentially a pin configuration
register and is represented by a pinmux node in the devicetree.  Operations
on this register by the realtek,rtl838x-eth driver must therefore also be
reflected in the devicetree.

Since the MDIO sets used are board-specific, the pins must be enabled in
the board’s devicetree.  This can be achieved using the pinctrl properties
for the realtek,rtl83xx-switch.

    &switch0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinmux_enable_mdc_mdio_0>,
    		    <&pinmux_enable_mdc_mdio_1>;
    	....
    };

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/19815
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-03 09:54:51 +02:00
Sven Eckelmann
ea5a749311 realtek: rtl931x: Add LED Sync configuration
The pinmux-related registers on the RTL931X SoC family are spread across
various non-consecutive registers. It might be tempting to modify them
directly in a specific driver (SPI, LED, etc.), but this would cause issues
with parallel, non-locked read-modify-write operations, which are required
to update individual portions of these registers.

Instead, it is better to use the devicetree pinctrl properties to define
the correct configurations for the various operation modes.

One important setting here is the LED Sync bit. This allows the LED
controller to generate an additional positive edge on the `STCP`
("STore Clock Pin", also known as `RCLK`) of the LED shift register after
the actual content has already been shifted in using the normal shift
clock. The LED shift register is then expected to copy the content from the
shift register section into the storage registers, which act as the actual
LED output control. This functionality is available in, and commonly used
with, the SNx4HC595 family of shift registers.

To activate it, simply register it in the default state of the
"realtek,rtl83xx-switch" node:

    &switch0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinmux_enable_led_sync>;
        ....
    };

It would be nicer when this can be directly added to the led subnode. But
for this to work, `realtek,rtl9300-leds` must first be an actual driver
(known to the driver core).

[1] https://www.ti.com/lit/ds/symlink/sn74hc595.pdf

Suggested-by: Bevan Weiss <bevan.weiss@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/19815
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-03 09:54:51 +02:00
Sven Eckelmann
93113a745a realtek: rtl931x: Readd MAC_L2_GLOBAL_CTRL2 pinmux
The MAC_L2_GLOBAL_CTRL2 register is primarily used for pin configuration.
It is necessary to select specific modes for pins or to free them for use
as GPIOs.

Fixes: 9dbc04785c ("realtek: add rtl8231-aux to rtl931x.dtsi")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/19815
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-03 09:54:51 +02:00
Sven Eckelmann
9c8d634646 realtek: rtl930x: Define GPIO_SEL_CTRL pinmux node
The pinmux-related registers on the RTL930X SoC family are spread across
various non-consecutive registers. It might be tempting to modify them
directly in a specific driver (SPI, LED, etc.), but this would cause issues
with parallel, non-locked read-modify-write operations, which are required
to update individual portions of these registers.

Instead, it is better to use the devicetree pinctrl properties to define
the correct configurations for the various operation modes.

One important setting here is the LED Sync bit. This allows the LED
controller to generate an additional positive edge on the `STCP`
("STore Clock Pin", also known as `RCLK`) of the LED shift register after
the actual content has already been shifted in using the normal shift
clock. The LED shift register is then expected to copy the content from the
shift register section into the storage registers, which act as the actual
LED output control. This functionality is available in, and commonly used
with, the SNx4HC595 family of shift registers.

To activate it, simply register it in the default state of the
"realtek,rtl83xx-switch" node:

    &switch0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinmux_enable_led_sync>;
    	....
    };

It would be nicer when this can be directly added to the led subnode. But
for this to work, `realtek,rtl9300-leds` must first be an actual driver
(known to the driver core).

[1] https://www.ti.com/lit/ds/symlink/sn74hc595.pdf

Suggested-by: Bevan Weiss <bevan.weiss@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/19815
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-03 09:54:51 +02:00
Janusz Dziedzic
bd831560cf linux-firmware: intel: kick BE200 wifi firmware
Latest backports require newer firmware.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19927
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 00:59:58 +02:00
Janusz Dziedzic
9c82d49999 mac80211: iwlwifi fix BE200 probe
Fix probing and load correct drivers
when using last backports.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19927
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 00:59:58 +02:00
Christian Marangi
3dca527e6d airoha: add NPU and reserved memory node for AN7581
Add the NPU and reserved memory node for AN7581 dtsi since it's not
supported.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:51 +02:00
Christian Marangi
9d3009f426 airoha: major backport of Airoha Ethernet driver feature support
Major backport of upstream patch for support of multiple feature of the
Airoha Ethernet driver.

Feature backported are TSO, Jumbo packet, Offload and initial Wlan
Offload support.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:51 +02:00
Christian Marangi
354d7472d5 airoha: backport trivial fixes for pinctrl and ethernet driver
Backport trivial fixes from upstream related to pinctrl and ethernet
driver.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:50 +02:00
Christian Marangi
0adaeff5ee airoha: backport patch adding support for AN7581 Ethernet PHY
Backport patch adding support for AN7581 Ethernet PHY based on the same
Mediatek embedded Switch PHY.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:50 +02:00
Christian Marangi
081cfb3a24 generic: reintroduce Mediatek PHY patch to backport directory
Mediatek PHY patch has been merged upstream. Reintroduce them to
backport directory as the same PHY is also needed for Airoha target.

All the affected patch automatically refreshed.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:49 +02:00
Christian Marangi
e00f77b3e7 firmware: Add support for Airoha EN7581 NPU firmware
Add support for Airoha EN7581 NPU firmware present in linux-firmware.
Support for it is fully upstream with the Ethernet part fully pushed and
the Wireless Offload currently in progress for various WiFi chip.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:48 +02:00
Christian Marangi
08a616b216 generic: backport support for Aeonsemi AS21xxx PHY
Backport support for Aeonsemi AS121xxx PHY. The PHY require dedicated
firmware to be loaded to correctly work and support a big family of
Aeonsemi PHY that provide from 1G to 10G speed.

Automatically refresh all affected patch and file (rtl PHY).

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:48 +02:00
Christian Marangi
4f34c4c453 firmware: Add support for Aeonsemi AS21xxx firmware
Add support for Aeonsemi AS21xxx firmware blob. Firmware has been
submitted and accepted to linux-firmware. Current version is 1.8.2.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:47 +02:00
Christian Marangi
a713260966 airoha: replace thermal patch with upstream version
Replace thermal patch with upstream version. The thermal maintainer
reported that the sysfs entry are considered deprecated and that slope
and offset should be handled internally to the driver.

Link: https://github.com/openwrt/openwrt/pull/19816
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-09-03 00:58:47 +02:00
Jonas Jelonek
b082f9f60e realtek: fix model for TP-Link TL-ST1008F v2.0
Fix the model name in DTS compatible, Makefiles and board scripts by
using dash instead of comma or underscore. This aligns it with other
examples in OpenWrt and makes in consistent in all places where the
board model is used.

'tplink,tl-st1008f,v2' --> 'tplink,tl-st1008f-v2'
'tplink,tl-st1008f_v2' --> 'tplink,tl-st1008f-v2'

Fixes: 39b9b491bb ("realtek: add support for TP-Link TL-ST1008F v2.0")
Fixes: #19930
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19934
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-03 00:51:49 +02:00
Hauke Mehrtens
c589fb7baf kernel: Fix kernel regression in local-broadcast routes
Backport a patch from upstream kernel 6.17-rc4 which fixes a regression
introduced in the latest stable kernel versions.

This is already in the Linus stable queues for the next minor kernel
updates.

Fixes: 1c92e468d5 ("kernel: bump 6.6 to 6.6.103")
Fixes: f39c7e103f ("kernel: bump 6.12 to 6.12.43")
Reported-by: Goetz Goerisch <ggoerisch@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 09:59:39 +02:00
Oldřich Jedlička
41aceb2de8 wifi-scripts: ucode: print unknown ssid as unknown
Currently it is printed as "null" (including quotes). Display it the same
as old iwinfo as unknown (no quotes).

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
2025-09-02 09:48:35 +02:00
Oldřich Jedlička
1756dddb9f wifi-scripts: ucode: fix dynamic_vlan value handling
The dynamic_vlan has values 0 (disabled), 1 (optional) and 2 (required).

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
2025-09-02 09:33:19 +02:00
Oldřich Jedlička
2146f5c31f wifi-scripts: ucode: set default wildcard mac for wifi-station
When creating the PSK file, the old script sets `mac` to
`00:00:00:00:00:00` when `mac` is not specified (see [here][1]),
creating hostapd configuration lines like:

  vlanid=10 00:00:00:00:00:00 MyStrongPassword

That matches any MAC address (a wildcard). The `ucode` script alternative
misses the default, so set it.

[1]: 9c26d14489/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh (L428)

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-02 09:31:56 +02:00
Markus Stockhausen
a8e3bff523 realtek: convert access to RTL931x "even CMU" serdes pages
Currently the calculation for the CMU (even) SerDes works similar
to this pseudo code.

analog_backend_serdes = get_analog_serdes(frontend_serdes);
even_backend_serdes = analog_backend_serdes & ~1;
write_to(even_backend_serdes);

Because of the SerDes layout and frontend/backend mapping this can
be swapped to the following order with the same resulting Serdes.

even_frontend_serdes = frontend_serdes ~1;
analog_backend_serdes = get_analog_serdes(even_frontend_serdes);
write_to(analog_backed_serdes);

In the later example the frontend/backend mapping code is already
in our new functions. So swap the calculation logic and use the
new access functions. This allows to finally drop the old access
functions without mapping.

From now on all RTL931x SerDes functions will use a consistent
frontend view.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19873
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 00:51:43 +02:00
Markus Stockhausen
207ab9c36a realtek: convert access to RTL931x "digital 2" serdes pages
The RTL931x has 14 frontend and at least 26 backend serdes. Currently
the programming functions always need to determine the right backend
serdes from the given frontend serdes on their own. We plan to provide
a consistent serdes mapping to all callers.

As the third step make use of these new functions whenever we want to
access the "digital 2" pages. The pages are mapped starting at 0x200.
So the function conversion is as simple as this:

Old:
dsds = (sds - 1) * 2;
rtmdio_931x_read_sds_phy(dsds + 1, page, ...)

New:
rtmdio_931x_read_sds_phy_new(sds, page + 0x200, ...)

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19873
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 00:51:43 +02:00
Markus Stockhausen
6802cd7f15 realtek: adapt RTl931x "digital 2" serdes page calculation
The more we step down into the SerDes deeps the more confusing it
gets. Nevertheless it is not to late to fix a wrong assumption.
Until now it seemed as if the frontend/backend SerDes mapping is
totally without intersection. This is not true.

The backend SerDes mapping is also dependent on the mode. Especially
the proprietary Realtek XSGMII mode stands out from all other
mappings. So fix the descriptions and the calculation of the third
page package (digital 2 aka XSGMII 2).

As it was not yet used it had no impact.

Fixes: a4cbb44c1b ("realtek: convert access to RTL931x analog serdes pages")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19873
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 00:51:43 +02:00
Markus Stockhausen
4063d90400 realtek: convert access to RTL931x "digital 1" serdes pages
The RTL931x has 14 frontend and at least 26 backend serdes. Currently
the programming functions always need to determine the right backend
serdes from the given frontend serdes on their own. We plan to provide
a consistent serdes mapping to all callers.

As the second step make use of these new functions whenever we
want to access the digital 1 pages. The pages are mapped starting
at 0x100. So the function conversion is as simple as this:

Old:
dsds = (sds - 1) * 2;
rtmdio_931x_read_sds_phy(dsds, page, ...)

New:
rtmdio_931x_read_sds_phy_new(sds, page + 0x100, ...)

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19873
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-02 00:51:43 +02:00
Felix Fietkau
8b2cff96fe bridger: update to Git HEAD (2025-09-01)
7a86ef53075a fix running bridger with stderr debug output
f6afcb04f2ef nl: add missing dump flag for RTM_GETTFILTER

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-01 19:40:24 +02:00
Markus Stockhausen
0008b4ed07 realtek: RTL838x: remove artifical mdio delays
For some reason 3 of the 4 mdio access functions contain an
artifical delay of 10ms. While it might have been part of
older Realtek SDKs it can no longer be found in current ones.
Remove the delays.

While we are here remove the pre-access bus ready checks.
It is sufficient to run them after the command start. If
anything fails the caller will get an error. This is the
same behaviour as for the other targets.

Finally cleanup the error handling. Something like this makes
no sense at all.

  err = rtmdio_838x_smi_wait_op(100000);
  if (err)
    goto errout;
  err = 0;
errout:

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19901
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-01 10:48:09 +02:00
Goetz Goerisch
1c92e468d5 kernel: bump 6.6 to 6.6.103
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.103

removed upstream patches:
generic-backport/220-v6.16-powerpc-boot-fix-build-with-gcc-15.patch [1]
generic-backport/847-v6.17-Revert-leds-trigger-netdev-Configure-LED-blink-inter.patch [2]

update patch to upstream function change
bcm53x/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
changed function xhci_disable_and_free_slot() upstream [3]

All other patches auto-refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.103&id=93879b3ba967a33834727abf34ea08764339fe0b
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.103&id=c66caf21b1d0a0847adc34d368e3f6753a2cbd53
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/usb/host?h=v6.6.103&id=e600de541c37f97482fea2a7a26f186141e7ddea

Suggested-by: Leo Barsky <leobrsky@proton.me>
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19898
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-09-01 02:05:24 +02:00
Felix Fietkau
cbfbac761a perf: fix disabling BUILD_BPF_SKEL
The makefile uses ifdef to check, so the variable needs to be empty

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-31 23:49:13 +02:00
Felix Fietkau
58a29752b1 perf: set NO_JEVENTS=1 to fix build
Needed for disabling the python requirement

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-31 23:49:12 +02:00
Felix Fietkau
f7d4036555 kernel: mtk_eth_soc: fix tx vlan tag for llc packets
When sending llc packets with vlan tx offload, the hardware fails to
actually add the tag. Deal with this by fixing it up in software.

Fixes: https://github.com/openwrt/openwrt/issues/19916
Reported-by: Thibaut VARENE <hacks@slashdirt.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-31 20:29:45 +02:00
Rosen Penev
e1564c4fab treewide: add const to struct of_device_id
Most drivers have this as const. Especially upstream in the kernel.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19911
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 19:21:36 +02:00
Daniel Golle
e181fee6a5 mediatek: backport patches fixing thermal on MT7988
Import upstream patches fixing issues with unreliable temperature
reading on some batches of the MediaTek MT7988 SoCs.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-08-31 13:23:31 +01:00
Felix Baumann
cee13fc0a5 realtek: correct whitespace in hp dts files
Make whitespace consistent, replace 8 spaces by tab

Fixes: 502b2f4ee5 ("realtek: switch HP-1920-48G to new shared gpio driver")
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19887
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 13:19:50 +02:00
John Audia
b92bab633f kernel: bump 6.12 to 6.12.44
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.44

Removed upstreamed:
  generic-backport/220-v6.16-powerpc-boot-fix-build-with-gcc-15.patch[1]
  imx/patches-6.12/506-pending-PCI-imx6-Remove-apps_reset-toggle-in-_core_reset-function.patch[2]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.44&id=e42ac65e257b875614dd8f435b026a3e379e92e6
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.44&id=90fa5884bc8f52cbf493492e32978c723c85e6ab

Build system: x86/64 (Intel N150 based)
Build-tested: flogic/gl.inet-gl-mt6000, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/gl.inet-gl-mt6000, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19892
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-31 13:07:49 +02:00
John Audia
be88c224fa pcre2: bump to 10.46
Update to latest version.

Changelog: https://github.com/PCRE2Project/pcre2/blob/pcre2-10.46/ChangeLog

Tested with snort3, no regressions.

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc (Intel N150 based box)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19904
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-08-31 12:23:24 +02:00
Felix Fietkau
16ba3fc379 wifi-scripts: ucode: fix starting without wpa_supplicant or hostapd
Fixes: 79f8a83eb9 ("wifi-scripts: ucode: unconditionally call hostapd/supplicant setup")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-30 18:45:01 +02:00
Damien Dejean
886382ba25 realtek: add 2500base-x patch sequence.
Adds the SerDes patch sequence for 2500base-x to improve the support of
devices with minimal bootloaders (like BootBase). The sequences were
imported from [1] for even lanes and [2] for odd lanes.

[1] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_construct.c#L641
[2] https://github.com/ddejean/dms-1250-oss-release/blob/main/sdk/sdk_rtk_switch/rtk-sdk/src/dal/longan/dal_longan_construct.c#L664

Signed-off-by: Damien Dejean <dam.dejean@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19834
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 01:12:05 +02:00
Damien Dejean
6bb1b7cbbf realtek: allow different serdes patch sequences
Prepare the SerDes patch function to allow different patch sequences
depending on the phy mode. Patches are required to allow devices with a
lightweight bootloader (one that doesn't have a "rtk network init"
command) to use the serdes. Some modes required a different patch
sequence than the one currently used.

Signed-off-by: Damien Dejean <dam.dejean@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19834
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 01:12:05 +02:00
Markus Stockhausen
a43330799b generic: fix c45 soft reset for RTL8221B
The addition of the soft_reset() function to the RTL8221B PHYs
missed to take care of C22/C45 standalone PHY versions. Especially
on RTL930x switch devices with these PHY the reset fails for the
C45 operation mode. This comes from the fact that the mdio bus
disables C22 read/writes when being set to C45.

Upstream has gained a proper C45 reset function. Use it for the
C45 PHY models.

Fixes: 7e3284eef7 ("generic: use genphy_soft_reset for RealTek 2.5G PHYs")

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:50:29 +02:00
Markus Stockhausen
a3d681d7f5 realtek: XGS1210-12: convert RTL8226 PHYs to 2500base-x
We reached the point of no return. Upstream has gained the final
bits for the RTL8226 PHYs. That means.

- RTL8226 MAC side behaves like RTL8221(B)
- It's serdes no longer uses proprietary HSGMII (2.5G SGMII)
- Instead it dynamically switches between SGMII and 2500base-x

This (partly) solves one of the central henn/egg problems of the
Realtek target. To change the MAC/PHY interface mode both sides
need to have all bits in place to do so. But where to start if
so much needs to be done?

Now the PHY side has created facts and it mitigates a lot of
problems. All downstream HSGMII patches and coding can be dropped
in the future.

For now only adapt the only DTS that still maps PHYs to HSGMII.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:50:29 +02:00
Markus Stockhausen
1673390905 generic: backport upstream v6.18 Realtek PHY patch
3a752e678 net: phy: realtek: enable serdes option mode for RTL8226-CG

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:50:29 +02:00
Markus Stockhausen
92a3dd9a96 generic: backport upstream v6.18 Realtek PHY patch
34167f1a0 net: phy: realtek: convert RTL8226-CG to c45 only

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:50:29 +02:00
Markus Stockhausen
d5ad59ffb1 realtek: phy: add RTL8214x/RTL8218x patch helper
The patching sequence of the RTL8214x/8218x is very similar.
Especially the preparation for readiness is always the same.
Provide a common helper to improve readability.

While we are here clean up the changed functions

- Sort variable definitions according to upstream
- simplify some messages

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19810
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:18:18 +02:00
Markus Stockhausen
6e416149d7 realtek: phy: drop use of mdio package functions
Our phy driver can handle some multiport phys (e.g. RTL8218B
or RTL8214FC). To access arbitrary ports some package access
functions have been defined. These were implemented in the
mdio bus with poor knowledge about the phy/mdio dependencies.
So they add unneeded complexity to the bus and the phy driver
must access these external functions directly.

Provide a new helper get_package_phy() that can derive any
phy device in a package from a given phy of that package.
Make use of this local helper and cut the mdio dependency.

While we refactor several firmware patching functions rename
the loop variables to "port" to better indicate what we are
working on.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19810
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:18:18 +02:00
Markus Stockhausen
fa1b362ae9 realtek: simplify RTL8214FC handling
Now that we have a get_base_phy() function a lot code of the RTL8214FC
handling can be cleaned up. To name a few:

- use phy_read/phy_write instead of mdiobus functions or the even worse
  phy_package_..._paged() helpers
- replace messages with phydev_info()
- remove if/else statements around copper/fibre handling

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19810
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:18:18 +02:00
Markus Stockhausen
a1043fda8b realtek: phy: late phy package patching
Currently phy packages (like RTL8214x/RTL8218x) are patched and
initialized as soon as the first phy of the package is found.
In this situation the shared structure is not finalized because
devm_phy_package_join() has only been called for the first phy.
This is no issue as the patching directly hammers the bus addresses
for the follow-up phys.

In the future we want to simplify the package handling and allow
to access all phy_device structures from only one phy_device of
the package. With this we can use normal phy_read/phy_write.

Switch the probing logic to "late patching". With this we will
initialize the firmware of the package when the last phy of the
package has been found and thus the shared structure is complete.

Provide get_base_phy() as the first package helper that allows
to determine the first phy of the package from any other phy.

While we are here drop the shared structure that only repeats the
phy name and has no other use.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19810
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-30 00:18:18 +02:00
Felix Fietkau
dcf6e9b0ed wifi-scripts: ucode: add missing fields to spec
Silence warnings

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-29 19:26:19 +02:00
Felix Fietkau
79f8a83eb9 wifi-scripts: ucode: unconditionally call hostapd/supplicant setup
Ensure that interfaces can be deleted properly

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-29 16:54:37 +02:00
Felix Fietkau
e116b423b8 wifi-scripts: default to sae_pwe=2 in client mode
Improves compatibility

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-29 15:10:37 +02:00
Felix Fietkau
a04b5fdcb6 mac80211: add support for MLD AP client probing
Select a link for outgoing probe packets

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-28 22:09:23 +02:00
Hauke Mehrtens
34e1092e88 kernel: bump 6.6 to 6.6.102
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.102

Added backport to fix ipv6 breakage with the 6.12.42 release:
generic/backport-6.6/621-proc-fix-missing-pde_set_flags.patch[1]

All patches auto-refreshed.

1. https://lore.kernel.org/all/20250821105806.1453833-1-wangzijie1@honor.com

Link: https://github.com/openwrt/openwrt/pull/19876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:12:10 +02:00
Hauke Mehrtens
9fbbcd16f7 kernel: bump 6.6 to 6.6.101
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.101
All patches auto-refreshed.

Manually modified:
   backport-6.6/413-01-v6.14-mtd-rawnand-qcom-cleanup-qcom_nandc-driver.patch

Link: https://github.com/openwrt/openwrt/pull/19876
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:12:10 +02:00
Harshal Gohel
cb4603688b realtek: rtl930x: Add support for Plasma Cloud PSX10 Switch
The Plasma Cloud PSX10 Switch is a 8 + 2 port multi-GBit switch with
8x 10/100/1000/2500BaseT Ethernet ports and 2x SFP+ module slot.

Hardware:

- RTL9302C SoC
- Macronix MX25L25645G (32MB flash)
- Winbond W632GU6NB-12 (256MB DDR3 SDRAM - only 128 MB configured*)
- 2x RTL8224 4x 10m/100m/1/2.5 Gigabit PHY
- SFP+ 2x 10GBit slot
- IC+ IP8008 POE+ PSE controller

The switch is powered by 54 Volts 2.77A barrel connector. The internal TTL
serial connector can be used to access the terminal. Pins from 1: TX RX
(unused) GND.  Serial connection is via 115200 baud, 8N1.

A reset button is accessible through a hole in the front panel.

*) Only 128 MB of RAM are currently configured because there were
infrequent random memory corruptions detected when using memtester with a
256 MB DT configuration. This could also be reproduced with RTLSDK.

Installation
------------

* The device can be flashed by using sysupgrade command. Either from the
  original vendor firmware or using an initramfs (see "Debug")
* Connect serial as per the layout above. Connection parameters: 115200 8N1
* The image must be copied using scp to /tmp of the device

      scp openwrt-realtek-rtl930x-plasmacloud_psx10-squashfs-sysupgrade.bin root@[IP address of the device]:/tmp/

* start sysupgrade without saving the original vendor configuration

      sysupgrade -n /tmp/openwrt-realtek-rtl930x-plasmacloud_psx10-squashfs-sysupgrade.bin

Installation via u-boot
-----------------------

If you have an TFTP server connected to the switch, it is possible to
directly install the device using the factory image from u-boot

    # setup networking and IP of TFP server
    rtk network on
    setenv ipaddr 10.100.100.99
    setenv serverip 10.100.100.20

    # get factory image
    tftp 0x84000000 factory.bin

    # erase firmware partitions
    sf probe 0
    sf erase 0x100000 0x01f00000

    # write firmware to both partitions
    sf write ${fileaddr} 0x100000 ${filesize}
    sf write ${fileaddr} 0x1080000 ${filesize}

    # adjust the boot commands
    setenv bootargs "mtdparts=spi0.0:896k(u-boot),64k(u-boot-env),64k(u-boot-env2),15872k(inactive),15872k(firmware2)"
    setenv bootcmd "rtk init; bootm 0xb5080000"

    # restart
    reset

Debug
-----

* Connect serial as per the layout above. Connection parameters: 115200 8N1.
* A tftp server is required, tftpd-hpa works well.
* Power the device, at U-Boot start rapidly hit Esc key to stop autoboot
* Enable network:

      rtk network on

* Change ip address of device:

      setenv ipaddr 192.168.1.6

* Download initramfs from TFTP server:

      tftpboot 0x84000000 192.168.1.111:openwrt-realtek-rtl930x-plasmacloud_psx10-initramfs-kernel.bin

* Boot loaded file:

      bootm 0x84000000

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:07:57 +02:00
Harshal Gohel
e677da90d1 realtek: rtl930x: Add support for Plasma Cloud PSX8 Switch
The Plasma Cloud PSX8 Switch is a 8 port multi-GBit switch with
8x 10/100/1000/2500BaseT Ethernet ports.

Hardware:

- RTL9302C SoC
- Macronix MX25L25645G (32MB flash)
- Winbond W632GU6NB-12 (256MB DDR3 SDRAM - only 128 MB configured*)
- 2x RTL8224 4x 10m/100m/1/2.5 Gigabit PHY
- IC+ IP8008 POE+ PSE controller

The switch is powered by 54 Volts 2.77A barrel connector. The internal TTL
serial connector can be used to access the terminal. Pins from 1: TX RX
(unused) GND.  Serial connection is via 115200 baud, 8N1.

A reset button is accessible through a hole in the front panel.

*) Only 128 MB of RAM are currently configured because there were
infrequent random memory corruptions detected when using memtester with a
256 MB DT configuration. This could also be reproduced with RTLSDK.

Installation
------------

* The device can be flashed by using sysupgrade command. Either from the
  original vendor firmware or using an initramfs (see "Debug")
* Connect serial as per the layout above. Connection parameters: 115200 8N1
* The image must be copied using scp to /tmp of the device

      scp openwrt-realtek-rtl930x-plasmacloud_psx8-squashfs-sysupgrade.bin root@[IP address of the device]:/tmp/

* start sysupgrade without saving the original vendor configuration

      sysupgrade -n /tmp/openwrt-realtek-rtl930x-plasmacloud_psx8-squashfs-sysupgrade.bin

Installation via u-boot
-----------------------

If you have an TFTP server connected to the switch, it is possible to
directly install the device using the factory image from u-boot

    # setup networking and IP of TFP server
    rtk network on
    setenv ipaddr 10.100.100.99
    setenv serverip 10.100.100.20

    # get factory image
    tftp 0x84000000 factory.bin

    # erase firmware partitions
    sf probe 0
    sf erase 0x100000 0x01f00000

    # write firmware to both partitions
    sf write ${fileaddr} 0x100000 ${filesize}
    sf write ${fileaddr} 0x1080000 ${filesize}

    # adjust the boot commands
    setenv bootargs "mtdparts=spi0.0:896k(u-boot),64k(u-boot-env),64k(u-boot-env2),15872k(inactive),15872k(firmware2)"
    setenv bootcmd "rtk init; bootm 0xb5080000"

    # restart
    reset

Debug
-----

* Connect serial as per the layout above. Connection parameters: 115200 8N1.
* A tftp server is required, tftpd-hpa works well.
* Power the device, at U-Boot start rapidly hit Esc key to stop autoboot
* Enable network:

      rtk network on

* Change ip address of device:

      setenv ipaddr 192.168.1.6

* Download initramfs from TFTP server:

      tftpboot 0x84000000 192.168.1.111:openwrt-realtek-rtl930x-plasmacloud_psx8-initramfs-kernel.bin

* Boot loaded file:

      bootm 0x84000000

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:07:57 +02:00
Harshal Gohel
7812d867b4 realtek: Introduce Plasma Cloud sysupgrade helper
Plasma Cloud devices use a dual-firmware regions/slots boot mechanism. On
APs, the u-boot is "intelligent" and checks the NOR/NAND partitions (kernel
+ rootfs) for corruption via "datachk". If validation fails, the bootloader
automatically switches to the fallback partition.

On Realtek-based switches, this "datachk" helper is not available.
However, the bootloader still supports two firmware regions/slots.

When flashing a new image, the "inactive" partition is written instead of
overwriting the active one. If no "inactive" partition exists but
"firmware1" is present, the bootloader always treats "firmware1" as
fallback. Only after a successful flash is the `u-boot-env` updated to
select the newly written partition.

On reboot, the bootloader loads the kernel from the new partition and
passes `mtdparts` information as the kernel cmdline. The Plasma Cloud
switch device tree does not override this with a `bootargs` property, so
the active partition layout is honored from cmdline.

Since offsets, sizes, and names of partitions match between the device tree
and cmdline (except the inactive slot), properties and nodes such as
`nvmem-cells` or `compatible` remain fully usable.

This mechanism also allows switching back to the old firmware slot.  For
example, if `firmware1` is currently active (`/proc/mtd` shows it), it can
be switched to slot 2 using:

    . /lib/upgrade/upgrade_dualboot.sh
    set_boot_part 2
    reboot

Firmware upgrades use standard `sysupgrade` tarballs, chosen for
compatibility with vendor images. In theory, one can switch between vendor
and OpenWrt with:

    sysupgrade -n /tmp/*-squashfs-sysupgrade.bin

Note: configuration files must not be preserved, as they are not compatible
with vanilla OpenWrt.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:07:57 +02:00
Harshal Gohel
ebb342af44 realtek: rtl930x: Enable parsing of u-boot nvmem layouts
To be able to read out the ethaddr from the u-boot environment for MAC
address configuration, it is required to also enable the NVMEM layout
parsing code for the U-Boot env layout.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:07:57 +02:00
Harshal Gohel
5880f345ba realtek: Fix nvmem support for ethernet device
The function of_get_mac_address is not taking care of evaluation the nvmem
address before trying to read out the mac-address properties. The driver
must check whether the return code is -EPROBE_DEFER and stop the probing
process in that case. If the nvmem-cell related driver code finished, the
probe can be redone ad the correct mac-address will appear for the device.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-28 21:07:57 +02:00
Igor Dyatlov
664424aaeb ath79: add calibtation variant for Xiaomi AIoT AC2350
Add calibration variant and ipq-wifi package for Xiaomi AIoT AC2350

Signed-off-by: Igor Dyatlov <dyatlov.igor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19707
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-28 13:35:07 +02:00
Igor Dyatlov
c42f05bf36 ipq-wifi: add entry for Xiaomi AIoT AC2350
Add IPQ WiFi support for Xiaomi AIoT AC2350

Add board file suffixes .QCA9988/.qca9988.
These suffixes are mapped to QCA9984/hw1.0 path

Reference:
https://openwrt.org/toh/xiaomi/aiot_router_ac2350

Signed-off-by: Igor Dyatlov <dyatlov.igor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19707
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-28 13:35:07 +02:00
Felix Fietkau
f43bf55b41 wifi-scripts: allow configuring per-radio macaddr in shared/mlo wifi-iface
When a wifi-iface section is used either for multiple vifs or MLD links,
make it possible to configure the per-radio/link macaddr.
When MLO is enabled, the main macaddr is used for the MLD interface.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-28 10:42:44 +02:00
Felix Fietkau
6fbf6d0cfd mac80211: extend connection monitoring for MLO
Required for latest mt76

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-27 15:24:30 +02:00
Felix Fietkau
2760a08b40 mt76: update to Git HEAD (2025-08-27)
d729307b5e8b mt76: mt7996: add missing null pointer check
fb22489fd738 wifi: mt76: do not add non-sta wcid entries to the poll list
fb7e0501b8f9 wifi: mt76: mt7996: add missing check for rx wcid entries
4cd64ad1283b wifi: mt76: mt7915: fix list corruption after hardware restart
ee538efba542 wifi: mt76: free pending offchannel tx frames on wcid cleanup
415b5a68878b wifi: mt76: fix list corruption
3ed2c4030d42 wifi: mt76: mt7925u: use connac3 tx aggr check in tx complete
a35af277873f wifi: mt76: mt7925: skip EHT MLD TLV on non-MLD and pass conn_state for sta_cmd
384d3a9bff2d wifi: mt76: mt7996: Use deflink for AMPDU rx reordering
9bae5f956e65 wifi: mt76: Remove dead code in mt76_scan_work
de1df8b888bd wifi: mt76: mt7996: Export MLO AP capabilities to mac80211

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-27 13:30:00 +02:00
Rosen Penev
c1a6c85c98 ath79: qcn5502: use led-sources for WMAC
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

It's also a bit funny matching against phy0 and phy1 when both differ
between ath9k and ath10k.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19862
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-27 12:48:44 +02:00
Felix Fietkau
9c895bacfb hostapd: fix wds ap on single-wiphy devices
Ensure events are passed to the right interface

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-27 10:29:21 +02:00
Felix Fietkau
95c8b385e5 hostapd: update to Git HEAD (2025-08-26)
33fb6c738bc4 P2P2: Enable some testing parameters without CONFIG_TESTING_OPTIONS
56616c4183a6 P2P2: Update device name with USD device found
1d791939dcdf Cancel pending connect radio work when network is removed
8235e21d7fe3 P2P: Fix preferred frequency list size handling in p2p_check_pref_chan()
4bc754d9c727 Add QCA vendor interface to enable/disable TX power limit
d65f5705df98 Add QCA vendor attribute to disable A-MSDU address check validation
74881765b7fb nl80211: Use i802_bss in qca_set_allowed_ap_freqs() to use correct ifindex
ca8303135cbb P2P2: Set P2P mode to the driver on P2P GO device
063ae7af68dc ACS: Fix incorrect index calculation for primary channel
4aa3a58377c1 ACS: Validate all channels in a segment before selection
02c9d3376224 ACS: Extend support to exclude 6 GHz non-PSC in non-offloaded ACS
307365eb57bb tests: Add test for ACS exclude 6 GHz non-PSC
0721e4886316 Add QCA vendor attribute to configure EHT RTWT support
76b39db44c77 QCA vendor attribute to configure BTM MLD Recommendation For Multiple APs support
2faeffdeca22 AP MLD: Properly deinit sm of non-ML STA connected to ML AP
e4f4e5a872a5 AP MLD: Fix STA's flag wrongly updated in SME-in-driver cases
ec6cade42c0f Increase buffer size to handle long freq_list entries in config
0522585da7b0 Write freq_list as per-network item in wpa_supplicant.conf
5e527704b912 Use SCS reconfiguration logic under CONFIG_NO_ROBUST_AV
5d6214a724c1 PASN: Clear driver/firwmare ranging context if PASN Auth 1 fails
14dc782d50db DPP: Avoid generating DPP shared secret(z) for non-association links
40326b60b17a RSNO: Allow OWE to be configured in RSN overrides in AP processing
acadef1b04d5 hostapd_cli: Open a new hostapd connection on ping failure when using -a
ac0d9bd80ec5 Add QCA vendor attributes to configure global TX chain mask
f5b8ef6c966a Add QCA vendor attributes for MSDU TX statistics
6c11fcefe4fc hostapd: Prevent blocking sends on control interface monitor socket
0bbb8a66f64c AP MLD: Remove redundant outer loop in hostapd_notif_disassoc_mld()
52fb5ccd91f3 AP MLD: Avoid using mld_id to identify partners
7bb930d50b5f wpa_supplicant: Add option to disable 80+80 MHz opclass advertisement
9001059bd6ad tests: Make dbus_connect_oom more robust
663fb1940231 AP MLD: Fix hostapd_is_mld_ap() check
590f3bdb4c61 AP MLD: Rename hostapd_is_mld_ap() to hostapd_is_multiple_link_mld()
b13b69a235f7 Add VLANID in the AP-STA-CONNECTED events
c1e8b1c6462b SAE: Assign VLAN when using PMKSA caching
9bc29dcdfdee SAE: Default password binding through control interface
9de127c31c40 tests: More testing coverage for SAE with multiple passwords
5ce1d4180386 nl80211: Fix crash by cancelling scan timeout before a BSS is removed
ca266cc24d87 nl80211: Fix crash by setting the drv->ctx properly

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-27 10:29:21 +02:00
Agustin Lorenzo
21059cb83b qualcommax: migrate wifi configuration (ath10k) device paths for 6.12 kernel
The device tree PCIe host node name has been changed in the new
6.12 kernel[1]. Hence we have to update the wifi device path to
make sure it can work properly.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=07299ba2e7d98045e6b522f7c5b97f402b15bc82

Signed-off-by: Agustin Lorenzo <agustin.lorenzo@thinco.es>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/19479
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-27 09:50:02 +02:00
Paul Spooren
44f76177d5 include: make APK .list files even more reproducible
This commit fixes "aff2f096235 include: make APK .list files reproducible"
since it would create the .list file while `find` still runs. This causes the
.list file to be part of itself. As an alternative, write the file to a
temporary folder first and then move it.

Fix: aff2f09623 include: make APK .list files reproducible
Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-08-27 03:27:55 +02:00
Harshal Gohel
18077d22e9 realtek: rtl93xx: Trap LLDP management frames
LLDP packets must be transmitted on a single port and trapped on a port of
a device which understands LLDP. It must not forward it to other ports to
avoid confusing neighbor information on connected devices.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19571
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-26 23:44:08 +02:00
Harshal Gohel
43dbc6d4d6 realtek: rtl931x: Register support for trapping management frames
Driver needs to configure management frame actions
To support LLDP, EAPOL or MSTP, which needs to be trapped to the CPU
instead of being forwarded.

The function to implement the various management frame actions was already
present but not yet registered correctly.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19571
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-26 23:44:08 +02:00
Harshal Gohel
75fe6b2d0b realtek: rtl930x: Add support for trapping management frames
Driver needs to configure management frame actions
To support LLDP, EAPOL or MSTP, which needs to be trapped to the CPU
instead of being forwarded

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19571
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-26 23:44:08 +02:00
Harshal Gohel
1b436585a2 realtek: dsa: Fix prefix for trapping functions
The functions to enable trapping of management frames are not RTL83xx
specific. It is more appropriate to use the more generic "rtldsa" prefix
for them.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19571
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-26 23:44:08 +02:00
John Audia
f39c7e103f kernel: bump 6.12 to 6.12.43
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.43

Removed upstreamed:
    generic/backport-6.12/612-07-v6.17-net-dsa-b53-prevent-SWITCH_CTRL-access-on-BCM5325.patch[1]
    generic-backport/612-08-v6.17-net-dsa-b53-fix-IP_MULTICAST_CTRL-on-BCM5325.patch[2]
    generic-backport/612-09-v6.17-net-dsa-b53-prevent-DIS_LEARNING-access-on-BCM5325.patch[3]
    generic-backport/612-11-v6.17-net-dsa-b53-prevent-GMII_PORT_OVERRIDE_CTRL-access-on-BCM5325.patch[4]
    generic-backport/612-14-v6.17-net-dsa-b53-ensure-BCM5325-PHYs-are-enabled.patch[5]
    generic-backport/830-v6.17-Revert-leds-trigger-netdev-Configure-LED-blink-inter.patch[6]
    bcm27xx/patches-6.12/950-0100-media-tc358743-Increase-FIFO-level-to-374.patch[7]
    bcm27xx/patches-6.12/950-0102-media-tc358743-Check-I2C-succeeded-during-probe.patch[8]
    bcm27xx/patches-6.12/950-0107-media-tc358743-Return-an-appropriate-colorspace-from.patch[9]
    bcm27xx/patches-6.12/950-0341-Allow-RESET_BRCMSTB-on-ARCH_BCM2835.patch[10]
    lantiq/patches-6.12/102-11-v6.17-MIPS-lantiq-falcon-sysctrl-fix-request-memory-check-.patch[11]
    lantiq/patches-6.12/102-12-v6.17-MIPS-vpe-mt-add-missing-prototypes-for-vpe_-alloc-st.patch[12]
    qualcommax/patches-6.12/0170-clk-qcom-gcc-ipq8074-fix-broken-freq-table-for-nss_port6_tx_clk_src.patch[13]
    generic/backport-6.12/612-13-v6.17-net-dsa-b53-fix-b53_imp_vlan_setup-for-BCM5325.patch[14]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f16f96ccfe56ef2d627c20ba47f6d9d7dea40f5b
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=394bd12d1f93ed2fa0fa1d8f31ffd3c344681e85
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=9f45e4858f8096bb27f9a2c75fc24a538dffad67
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=15cf46cc6ecc7a54b397294675d11c379ddf69ef
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=0d250ad617a035904744cef74a5d5dc43d0199b9
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=cb9bb872366e10fa42e1e0200a0c2e5d05a27bec
7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f25d566c5674decd0051a3e624805fc1524729bf
8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=3e03ee3b65baeac4c253b30650492ffffad9b608
9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=b42b107293b52ac8d46238815b1071138a47a7e4
10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=e285cdb9d2e4ba2e4515ae898f92e9f38be64eb3
11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=1e9079ff83eac962bc3b1e2fbad73b2f7d5256f4
12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=8520c843d9a2770012f23da08e4e2ccf1bb05ba6
13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f1c5c55fb6cda312f5ed15505588caaf05a69043
14. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=757955c80663ac3df7053abaf6fcc75051ef7a7c

Build system: x86/64 (Intel N150 based)
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19618
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-26 21:35:36 +02:00
John Audia
c6d8f2267c generic/config-6.12: add new option
Add new option required to build with VHOST_MENU=y

This option enables two IOCTLs: VHOST_SET_FORK_FROM_OWNER and
VHOST_GET_FORK_FROM_OWNER. These allow userspace applications
to modify the vhost worker mode for vhost devices.

Also expose module parameter 'fork_from_owner_default' to allow users
to configure the default mode for vhost workers.

By default, `VHOST_ENABLE_FORK_OWNER_CONTROL` is set to `y`,
users can change the worker thread mode as needed.
If this config is disabled (n),the related IOCTLs and parameters will
be unavailable.

If unsure, say "Y".

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19618
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-26 21:35:36 +02:00
John Audia
ae49895cd2 kernel: bump 6.12 to 6.12.42
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.42

Added backport to fix ipv6 breakage with the 6.12.42 release:
generic/backport-6.12/621-proc-fix-missing-pde_set_flags.patch[1]

All other patches automatically rebased.

1. https://lore.kernel.org/all/20250821105806.1453833-1-wangzijie1@honor.com

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc (Intel N150)

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19618
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-26 21:35:36 +02:00
John Audia
23b8205fe2 kernel: bump 6.12 to 6.12.41
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.41

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/19618
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-26 21:35:35 +02:00
Felix Fietkau
5bdb7a5990 wifi-scripts: fix reload handling with random macaddr
Allow initially generated MAC address to be preserved across reload

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Felix Fietkau
5781922f33 wifi-scripts: ucode: fix random mac address
Fix exception by using fs.open instead of open

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Felix Fietkau
d5fa130113 hostapd: fix link address of secondary MLO interfaces
Ensure that hapd->own_addr is set based on the configured bssid

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Rosen Penev
c22db9698e ath79: araknis_an-300-ap-i-n: use led-sources
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18904
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-26 10:34:55 +02:00
Shiji Yang
43ae8e17e1 mediatek: dts: use dt-bindings documented bias type for UniFi 6 Plus
Use macro defined bias types instead of some magic numbers. This can
help reviewers better understand bias types.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19855
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 19:52:43 +02:00
Shiji Yang
c33df09169 uboot-mediatek: remove wmcpu_emi dts node leftovers
wmcpu_emi node was removed in commit:
b286fd8a39 ("uboot-mediatek: adjust the reserved memory regions")

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19855
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 19:52:43 +02:00
Markus Stockhausen
a4cbb44c1b realtek: convert access to RTL931x analog serdes pages
The RTL931x has 14 frontend and at least 26 backend serdes. Currently
the programming functions always need to determine the right backend
serdes from the given frontend serdes on their own.

We plan to provide a consistent serdes mapping to all callers as follows

Frontend SerDes  |  0  1  2  3  4  5  6  7  8  9 10 11 12 13
-----------------+------------------------------------------
Backend SerDes 1 |  0  1  2  3  6  7 10 11 14 15 18 19 22 23
Backend SerDes 2 |  0  1  2  4  6  8 10 12 14 16 18 20 22 24
Backend SerDes 3 |  0  1  2  5  6  9 10 13 14 17 18 21 22 25

frontend page               "even" frontend SerDes     "odd" frontend SerDes
page 0x000-0x03f (analog):  page 0x000-0x03f back SDS  page 0x000-0x03f back SDS
page 0x100-0x13f (XSGMII1): page 0x000-0x03f back SDS  page 0x000-0x03f back SDS+1
page 0x200-0x23f (XSGMII2): page 0x000-0x03f back SDS  page 0x000-0x03f back SDS+2

As a first micro step provide some helpers that simply operate on
frontend serdes and will determine the backend serdes on their own.

So rtmdio_931x_read_sds_phy() and rtmdio_931x_write_sds_phy() operate
on backend serdes. While rtmdio_931x_read_sds_phy_**new**() and
rtmdio_931x_write_sds_phy_**new**() operate on frontend serdes.

This is only an intermediate naming convention and will be cleanup
afterwards.

In a first step make use of these new functions whenever we
want to access the analog page. As the pages stay unchanged
in the new functions conversion is as simple as this:

Old:
asds = rtl931x_get_analog_sds(...)
rtmdio_931x_read_sds_phy(asds, ...)

New:
rtmdio_931x_read_sds_phy_new(sds, ...)

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19818
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 13:44:43 +02:00
Robert Marko
30e20d8cb2 ipq-wifi: update to Git HEAD (2025-08-25)
a510502e7922 qca9988: add BDFs for Xiaomi AIoT Router AC2350

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:51:19 +02:00
Rosen Penev
369525b950 treewide: fix compatible string for ath10k
The ath9k documentation says to use pci168c strings for the compatible
string, probably because the OWL loader uses it to overide bogus pci IDs
like abcd. This is not the case with ath10k and the documentation
explicitly states to use qcom,ath10k.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18920
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:35:39 +02:00
Rosen Penev
26a371303f ath79: compex_wpj531: remove wrong wifi device
This device does not come with a pci card. It has a slot where one can
get supplied. What's more, nvmem or ieee80211 frequency limits are not
applied here. It can just get removed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18920
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:35:39 +02:00
Rosen Penev
f5930cb6b5 ath79: wb2000: use led-sources for ath9k
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18906
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:32:45 +02:00
Rosen Penev
acc49770c2 ath79: dir-825-c1: set LED pin properly
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18908
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:31:49 +02:00
Carsten Schuette
b2277e9bab mold: Update to 2.40.4
Update mold to 2.40.4

Release notes:
https://github.com/rui314/mold/releases/tag/v2.40.4
https://github.com/rui314/mold/releases/tag/v2.40.3
https://github.com/rui314/mold/releases/tag/v2.40.2

Signed-off-by: Carsten Schuette <schuettecarsten@googlemail.com>
Link: https://github.com/openwrt/openwrt/pull/19846
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:30:14 +02:00
Rosen Penev
48c7a40745 ath79: iodata: set ath9k LED pin
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Set the pcie device to qcom,ath10k as the Documentation says, The pci
line implies it's ath9k when it's actually ath10k.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18873
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:21:33 +02:00
Rosen Penev
5eef79a249 ath79: iodata: extract calibration with nvmem
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18873
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-25 10:21:33 +02:00
Paul Donald
57a127c9e7 mediatek: remove the aquantia kmod from filogic mediatek platforms
The kmod is installed on all filogic mediatek images, even for devices
that do not have any aquantia hardware. Remove it.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19488
[Do not explicitly remove kmod-phy-aquantia from gatonetworks_gdsp]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 19:52:34 +02:00
Pavlo Samko
73a7466e41 nilfs-utils: add userspace utilities for NILFS2
NILFS is a log-structured file system developed for Linux.
NILFS provides versioning capability of an entire file system
and continuous snapshotting that allows users to restore files
mistakenly overwritten or destroyed a while ago.

Signed-off-by: Pavlo Samko <bulldozerbsg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18247
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 19:45:27 +02:00
Pavlo Samko
2b5119e355 kernel: add NILFS2 fs module
NILFS is a log-structured file system developed for Linux.
NILFS provides versioning capability of an entire file system
and continuous snapshotting that allows users to restore files
mistakenly overwritten or destroyed a while ago.

Signed-off-by: Pavlo Samko <bulldozerbsg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18247
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 19:45:27 +02:00
Simonas Tamošaitis
69a8c7f71a mediatek: filogic: add Teltonika RUTC50 support
Specification:
- MediaTek MT7981A SoC
- 512 MB RAM
- 16MB SPI NOR Flash
- 512MB NAND (split in half for firmware fallback)
- 5x 10/100/1000 Mbps Ethernet, with passive PoE support on LAN1
- WLAN      : MediaTek dual-band WiFi 6
  - 2.4 GHz : b/g/n/ax, MIMO 2x2
  - 5 GHz   : a/n/ac/ax, MIMO 2x2
- Quectel RG520N-EB 5G R16 modem
- 2.0 USB Type-A HOST port
- 1x Digital input
- 1x Digital output
- 2x SIM slot (can be swapped via AT commands)

GPIO:
- 1 button (Reset)
- 13 LEDs (power, 4x WAN status, Wifi 2G, Wifi 5G, 3G, 4G, 5G, RSSI 1,2,3)
- 3 Modem control (power button, reset, status)
- 1 USB reset
- 1 Digital input
- 1 Digital output

Flashing via OEM WebUI:
1. Download the firmware image *-squashfs-factory.bin
2. Upload firmware image via OEM WebUI firmware update, do not keep settings

To revert back to OEM firmware:
https://wiki.teltonika-networks.com/view/Bootloader_menu

Use "ModemManager" to establish mobile data connection.

Signed-off-by: Simonas Tamošaitis <simsasss@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19401
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 17:54:04 +02:00
Simonas Tamošaitis
53d8303a79 images: move append-teltonika-metadata to image-commands.mk
Move append-teltonika-metadata to image-commands.mk and unify over different targets.
This method can be used to create valid "factory" images for most of Teltonika devices.

Signed-off-by: Simonas Tamošaitis <simsasss@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19401
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 17:52:25 +02:00
Rosen Penev
715f9541e8 ath79: db120: use led-sources for ath9k
The ath9k driver creates an ath9k LED by default. Instead of having a
non functional LED, configure it properly and remove the extra as it's
not needed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Tested-by: Zoltan HERPAI wigyori@uid0.hu
Link: https://github.com/openwrt/openwrt/pull/18907
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 16:54:29 +02:00
Rosen Penev
132b6862a0 ath79: trendnet,tew-823dru: use nvmem
Removes deprecated userspace handling.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16287
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 16:41:37 +02:00
Rosen Penev
749fa79e01 ramips: zyxel wsm20: set mac address in dts
Support in mt76 has existed for quite a while. Use it.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19799
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 16:35:17 +02:00
Zhenfu Shi
41106141b8 mediatek: filogic: support WAVLINK WL-WN586X3 Rev B
This commit adds support for the WAVLINK WL-WN586X3 Rev B, which swaps
the 16MB NOR flash for an 128MB NAND flash chip, and uses UBI for
data partition. This commit utilizes the previous submitted dtsi that
includes common hardware for a few Wavlink routers.

Hardware
--------
- SOC: MediaTek MT7981B
- RAM: 256MB DDR3
- Flash: 128MB SPI-NAND (ESMT F50L1G41LB)
- Ethernet: 2x1Gb Lan 1x1Gb Wan
- WiFi: MediaTek MT7981B 2x2 DBDC 802.11ax 2T2R (2.4/5) with 4 external and 1 internal antennae
- LEDs: 2xLan 1x Wan 1x WIFI 1xSTATUS

Installation
------------
Flashing over the vendor WebUI has been tested and unsuccessful (YMMV).
The image need to be flashed via TFTP which can be activated over the onboard UART serial console:
1. Connect UART:  TX->board RX, RX->board TX, GND->board GND.
2. Connect PC to router lan port.
3. Setup the tftp server on PC, set IP to 192.168.10.100.
4. Power on the device. Interrupt boot countdown at uboot boot menu and select 2. Upgrade firmware option.
5. Input the image name and start flashing.

Sample uboot menu:
```
  *** U-Boot Boot Menu ***

      1. Startup system (Default)
      2. Upgrade firmware
      3. Upgrade ATF BL2
      4. Upgrade ATF FIP
      5. Upgrade single image
      6. Load image
      0. U-Boot console
```

NOTE: Do not use the intermediate image here which is for Rev A only:
https://github.com/themaverickdm/firmware-misc/tree/main/wavlink/wl-wn586x3

MAC Addresses
-------------
LAN: 80:3F:5D:xx:xx:x1 (hw, 0x44e, ASCII encoded)
WAN: 80:3F:5D:xx:xx:x2 (hw, 0x460, ASCII encoded)
 2G: 80:3F:5D:xx:xx:x3 (factory, 0x4, raw binary, also on label)
 5G: 80:3F:5D:xx:xx:x3 (Same as 2G)

Signed-off-by: Zhenfu Shi <i0ntempest@i0ntempest.com>
Link: https://github.com/openwrt/openwrt/pull/19785
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 15:50:46 +02:00
Axel Sepulveda
f29bc8736a ramips: CREALITY BOX WB01
CREALITY BOX WB01 is small footprint router based on MediaTek MT7688,
is a device intended to interface Creality brand 3D printers to a cloud service.

Specifications:
- SoC: MediaTek MT7688AN @ 580MHz
- RAM: DDR2 128M (Winbond W971GG6SB-25)
- Flash: BoyaMicro  BY25Q128AS (16 MiB, SPI NOR) handled by BoHong bh25q128as driver
- WiFi: 2.4GHz 1T1R internal panel antenna
- Ethernet: 1x LAN (10/100)
- USB: 2x USB2.0 port (Genesys Logic GL850G 2 port USB 2.0 hub)
- UART: 3.3V, TX, RX, GND / 56700 8N1 / only pads on PCB
- microSD SD-XC Class 10 slot
- micro USB input (for power only)
- reset button
- FCC ID: 2AXH6CREALITY-BOX

MAC addresses as verified by OEM firmware:
vendor   OpenWrt    source
LAN      eth0       factory 0x2e
2.4GHz   phy0-ap0   factory 0x04 (label)

LEDs
color    vendor                OpenWRT     configurable
red      SD card activity        -             yes
green    Cloud connectivity    status          yes
blue     LAN activity          eth0            yes
yellow   WIFI activity         phy0tpt         yes

Return to OEM & debrick
- download "cxsw_update.tar.bz2" from manufacturer site
- extract archive to FAT32 USB stick root
- put USB stick in USB2 port
- press & hold reset button
- power on device while holding reset
- wait approx 10 sec
- release reset button

Installation with SD Card
- power on device
- wait for device to finish starting
- copy "openwrt-ramips-mt76x8-creality_wb-01-squashfs-cxsw_update.tar.bz2"
  to root of FAT32 SD card
- rename openwrt-ramips-mt76x8-creality_wb-01-squashfs-cxsw_update.tar.bz2
  to "cxsw_update.tar.bz2"
- put SD card in device
- device will install OpenWRT on internal flash

Installation via telnet:
- extract the "factory.bin" and "install.sh" from newly created
  openwrt-ramips-mt76x8-creality_wb-01-squashfs-cxsw_update.tar.bz2
  to FAT32 USB stick root
- telnet to 10.10.10.254, user: root, password: cxswprin
- plug the USB in USB1 port
- cd /media/usbdisk/
- sh install.sh
- device will write "factory.bin" to internal flash

Co-authored-by: George Brooke <figgyc@figgyc.uk>
Co-authored-by: Peca Nesovanovic <peca.nesovanovic@sattrakt.com>
Co-authored-by: shivajiva101 <github.com/shivajiva101>
Co-authored-by: Axel Sepulveda <ansepulveda@uc.cl>

Signed-off-by: Axel Sepulveda <ansepulveda@uc.cl>
Link: https://github.com/openwrt/openwrt/pull/19686
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 14:38:36 +02:00
Shiji Yang
26c6fb671e mediatek: dts: remove mt7531 switch reset delay time properties
mt7531 switch reset delay time is hard coded in the driver. The
"reset-assert-us" and "reset-deassert-us" won't take effect.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
b286fd8a39 uboot-mediatek: adjust the reserved memory regions
* Increase mt7986 ATF reserved memory to 256 kiB to follow the linux
  kernel and Trusted Firmware-A changes.

* Remove unnecessary reserved memory region for the WiFi hardware. The
  u-boot can not drive the WiFi hardware. Hence we don't need to keep
  this memory region.

* Remove useless node labels and update comments.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
2958eeea3b mediatek: dts: increase mt7986 ATF reserved memory to 256 kiB
The latest Mediatek open-source Trusted Firmware-A project has
reserved 256 KiB for BL2 and BL31.

Link: https://lore.kernel.org/all/OSBPR01MB16701BDF64C43EF07390C830BC29A@OSBPR01MB1670.jpnprd01.prod.outlook.com/
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
5fc5b0c18e mediatek: dts: remove some useless spaces
Use tabs to align and remove some unnecessary spaces.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
bb94280942 mediatek: dts: fix some minor dtc warnings
This patch fixes the following dtc warnings for the recently added
boards:

../dts/mt7981b-zbtlink-zbt-z8102ax-v2.dts:329.35-331.4: Warning (unit_address_format): /soc/spi@1100a000/spi_nand@0/partitions/partition@180000/macaddr@004: unit name should not have leading 0s
../dts/mt7981b-zbtlink-zbt-z8102ax-v2.dts:332.35-334.4: Warning (unit_address_format): /soc/spi@1100a000/spi_nand@0/partitions/partition@180000/macaddr@02a: unit name should not have leading 0s
../dts/mt7981b-iptime-ax3000q.dts:267.3-13: Warning (reg_format): /soc/wifi@18000000/band@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-iptime-ax3000q.dts:273.3-13: Warning (reg_format): /soc/wifi@18000000/band@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-iptime-ax3000sm.dts:269.3-13: Warning (reg_format): /soc/wifi@18000000/band@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-iptime-ax3000sm.dts:275.3-13: Warning (reg_format): /soc/wifi@18000000/band@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-snr-snr-cpe-ax2.dts:330.3-13: Warning (reg_format): /soc/wifi@18000000/band@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-snr-snr-cpe-ax2.dts:336.3-13: Warning (reg_format): /soc/wifi@18000000/band@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
../dts/mt7981b-gatonetworks-gdsp-sd-boot.dtso:14.5-15: Warning (reg_format): /fragment@1/__overlay__/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
mt7988a-rfb-emmc.dtso:34.5-15: Warning (reg_format): /fragment@0/__overlay__/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
mt7988a-rfb-snfi-nand.dtso:29.7-33: Warning (reg_format): /fragment@0/__overlay__/flash@0/partitions/partition@0:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
mt7988a-rfb-snfi-nand.dtso:35.7-35: Warning (reg_format): /fragment@0/__overlay__/flash@0/partitions/partition@200000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
mt7988a-rfb-sd.dtso:32.5-15: Warning (reg_format): /fragment@0/__overlay__/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
9688f035b0 mediatek: dts: mt7981: add back #address-cells and #size-cells to eth node
They were lost when ported to the 6.12 kernel.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
f3ce0c29ea mediatek: dts: use dt-bindings enumerated drive strength values
The Mediatek pinctrl driver can only accepts drive-strength values
enumerated in "dt-bindings/pinctrl/mt65xx.h".

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:09 +02:00
Shiji Yang
c089ad8f68 mediatek: dts: convert pinctrl bias to the Linux generic style
There are two types properties here that can control the pin bias
resistors. "mediatek,pull-{up,down}-adv" and "bias-pull-{up,down}"
actually do the same thing[1]. The first type is customized by the
Mediatek and the second type is widely used in the Linux pinctrl
framework. To avoid confusing developers, unify pinctrl bias to the
new Linux generic style.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cafe19db7751269bf6b4dd2148cbfa9fbe91d651
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:08 +02:00
Shiji Yang
6f33529a12 mediatek: dts: fix the broken memory node
Add the missing "device_type" property to fix the memory node. The
Linux kernel can not get the memory size without it. Though u-boot
can automatically fixup the memory node by adding the "device_type"
and "reg" properties if the CONFIG_ARCH_FIXUP_FDT_MEMORY symbol is
enabled, it's better not to rely on this optional feature. This
patch also adds the reg address for the memory node name to follow
the naming rules.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19741
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 13:22:08 +02:00
Felix Fietkau
78188ee2bc udebug: update to Git HEAD (2025-08-24)
6e4ffe2c6657 ucode: add function for getting the number of entries in a snapshot
a62edd89255b ucode: add support for fetching kernel tracepoint events
edeb4d6dc690 udebug-cli: add support for streaming tracing data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-24 07:18:49 +02:00
Shiji Yang
8c314acc33 ath10k-ct-firmware: update wave2 chip firmware to latest beta version
Release Notes:

* Support enabling/disabling rts/cts. Not sure if this really works as
  hoped though.

* Improved compiler options to build smaller sized binaries.

* Sept 15, 2022:  Fix per-peer txpower to not over-ride tpc when value
  is 0 (ie, not set yet). This in turn fixes TPC over-ride through the
  txo path.

* April 4, 2023:  Fix uninitialized minccapwr threshold variables,
  reported by Sebastian.

Candela Technologies has already used this beta firmware in their
commercial product "LANforge". And the -ct firmware homepage states
that "This is code is not being changed much, and should be considered
for stable use now." On QCA9888 and IPQ4019, I didn't catch any speed
or stability issues compared to the previous version. Therefore, I
think it is worth updating this beta version.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 00:21:26 +02:00
Shiji Yang
cb24806ff1 ath10k-ct-firmware: update qca988X firmware to latest beta version
Release Notes:

* Attempt to fix crash in scanning logic by making probe_timer
  ignore re-arm.

Candela Technologies has already used this beta firmware in their
commercial product "LANforge". On QCA9882, I didn't catch any speed
or stability issues compared to the previous version. Therefore, I
think it is worth updating this beta version.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 00:21:26 +02:00
Shiji Yang
3850d60f38 ath10k-ct-firmware: update to latest stable firmware 2021.11.08
Release Notes:

* Fall 2021: Optimize compiler options for memory usage and performance.

* Jan 17 2021: Enable peer fixed rate feature (S.G)

Run-tested: QCA9882, QCA9887, QCA9888 and IPQ4019.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 00:21:26 +02:00
Issam Hamdi
8c42e63a69 realtek: rtl93xx: fix incorrect destination port selection
When testing LLDP and STP, we observed that locally generated multicast
packets (e.g. LLDP, STP) were not restricted to the designated output
port(s). For example, when transmitting on `lan1`, the same packet was also
forwarded to other ports such as `lan2`.

Steps to reproduce:

1. Configure lldpd to use `lan1` in UCI and restart the service
2. Connect devices to `lan1` and `lan2`
3. Observe that the device on `lan2` still receives LLDP packets

The issue was caused by an incorrect `FWD_TYPE` setting in the TX CPU TAG,
which failed to enforce the selected egress port(s).

Fix this by updating the TX CPU TAG to set `FWD_TYPE` correctly, ensuring
that locally generated packets are transmitted only on the intended
port(s).

Signed-off-by: Issam Hamdi <ih@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/19802
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-24 00:01:18 +02:00
Qing W
6e04dccb7a mediatek: Add support for Acer Predator Connect W6x
Product name: Acer Predator Connect W6x
Product link: https://www.acer.com/us-en/predator/networking/wi-fi/predator-connect-w6x/pdp/FF.G2TTA.001

* Specifications:

SOC: MT7986AV
RAM: 1024MB
Flash: 256 MB SPI NAND
Ports: 4 LAN (1G) & 1 WAN (2.5G)
WIFI: MT7976GN + MT7976AN
LED: 1, ws2812b controller

* Installation via UART:

1. Configure TFTP server with IP 192.168.1.66. Copy `openwrt-mediatek-filogic-acer_predator-w6x-initramfs-kernel.bin` to TFTP root and rename to `predator.bin`
2. Interrupt boot by pressing 0 on startup or select `U-Boot Console` in U-Boot Boot Menu.
3. Run setenv `serverip 192.168.1.66; setenv ipaddr 192.168.1.1; tftpboot 0x46000000 predator.bin; fdt addr $(fdtcontroladdr); fdt rm /signature; bootm` in uboot console.
4. Wait for boot complete on Openwrt initramfs env.

** You can back up the MTD partitions at this point. Refer to Backup Instructions section.

5. On client PC, transfer `openwrt-mediatek-filogic-acer_predator-w6x-squashfs-sysupgrade.bin` to /tmp/ - `scp -O openwrt-mediatek-filogic-acer_predator-w6x-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/sysupgrade.bin`
6. On router, run sysupgrade - `sysupgrade -n /tmp/sysupgrade.bin`
Should now boot to Openwrt. Ensure it boots automatically to Openwrt by replugging the power.

* Backup Instructions:

Layout from stock firmware:
```
[    0.968731] Creating 10 MTD partitions on "nmbm_spim_nand":
[    0.974297] 0x000000000000-0x000000100000 : "BL2"
[    0.979424] 0x000000100000-0x000000180000 : "u-boot-env"
[    0.985032] 0x000000180000-0x000000380000 : "Factory"
[    0.990379] 0x000000380000-0x000000580000 : "FIP"
[    0.995378] 0x000000580000-0x000000600000 : "prod"
[    1.000461] 0x000000600000-0x000000700000 : "dual"
[    1.005527] 0x000000700000-0x000000800000 : "pot"
[    1.010516] 0x000000800000-0x000006c00000 : "ubi"
[    1.015626] 0x000006c00000-0x00000d000000 : "ubi1"
[    1.020801] 0x00000d000000-0x00000d800000 : "storage"
```

Mapping in initramfs env:
```
dev:    size   erasesize  name
mtd0: 00100000 00020000 "bl2"
mtd1: 00080000 00020000 "u-boot-env"
mtd2: 00200000 00020000 "factory"
mtd3: 00200000 00020000 "fip"
mtd4: 00020000 00020000 "prod"
mtd5: 00100000 00020000 "dual"
mtd6: 00100000 00020000 "pot"
mtd7: 06400000 00020000 "ubi"
mtd8: 06400000 00020000 "ubi1"
mtd9: 00800000 00020000 "storage"
```
1. While in openwrt initramfs environment, back up all the partitions by running the following:
```
cat /dev/mtd0 > /tmp/bl2.bin
cat /dev/mtd1 > /tmp/u-boot-env.bin
cat /dev/mtd2 > /tmp/factgory.bin
cat /dev/mtd3 > /tmp/fip.bin
cat /dev/mtd4 > /tmp/prod.bin
cat /dev/mtd5 > /tmp/dual.bin
cat /dev/mtd6 > /tmp/pot.bin
cat /dev/mtd7 > /tmp/ubi.bin
cat /dev/mtd8 > /tmp/ubi1.bin
cat /dev/mtd9 > /tmp/storage.bin
```
2. Transfer files to client PC for safekeeping. On client PC, run `scp -O root@192.168.1.1:/tmp/*.bin ./`

* Restore to Stock Firmware:

1. Boot to openwrt initramfs env.
2. Confirm layout matches as follows by running `cat /proc/mtd`. Ensure dev `mtd7` is named `ubi`:
```
dev:    size   erasesize  name
mtd0: 00100000 00020000 "bl2"
mtd1: 00080000 00020000 "u-boot-env"
mtd2: 00200000 00020000 "factory"
mtd3: 00200000 00020000 "fip"
mtd4: 00020000 00020000 "prod"
mtd5: 00100000 00020000 "dual"
mtd6: 00100000 00020000 "pot"
mtd7: 06400000 00020000 "ubi"
mtd8: 06400000 00020000 "ubi1"
mtd9: 00800000 00020000 "storage"
```
3. Detach `ubi` partition - `ubidetach -p /dev/mtd7`
4. Transfer stock firmware's `ubi.bin` to router from client PC: `scp -O ubi.bin root@192.168.1.1/tmp/`
5. Format and replace with backup `ubiformat /dev/mtd7 -y -f /tmp/ubi.bin`
6. Reboot and you should now be back on stock firmware.

* LEDS:
LED color can be controlled by specifying values in GRB format in `/sys/class/leds/rgb:status/multi_intensity`. Default is `255 255 255` (white).
Example: `echo '75 0 130' > /sys/class/leds/rgb:status/multi_intensity`

LED brightness can be changed by specifying the value from 0-255 in /sys/class/leds/rgb:status/brightness. Default is `255` (full brightness).
Example: `echo 100 > /sys/class/leds/rgb:status/brightness`

For persistence across reboots, put the relevant command(s) in /etc/rc.local.

* Notes:

root access on stock firmware:
Before flashing openwrt, and while in openwrt initramfs env:
1. Mount /dev/ubi0_2: `mkdir /tmp/ubi0_2; mount -t ubifs /dev/ubi0_2 /tmp/ubi0_2`
2. Modify `/tmp/ubi0_2/upper/etc/passwd` and change line with `root:x:0:0...` to `root::0:0...`, remove the `x`.
3. Save and reboot.
4. You should now be able to log in with root and empty password while booted in stock firmware.

While on Openwrt, subsequent upgrades can be made by sysupgrade, or via Luci. UART should not be necessary unless you want to revert to stock firmeware.

Signed-off-by: Qing W <ses1er@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19754
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 23:42:12 +02:00
Hauke Mehrtens
4cd256c72a kernel: Remove patch for fixed bug
The problem was fixed in upstream kernel in a different way and the
change was backported to kernel 6.6 in the following change:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=48e8791843206baf76827df1b6ee3cb88a2a17d8

The removed patch changes the endianness again and breaks the
functionality, use only the upstream code and remove our unneeded patch.

The 823-v6.12-0003-nvmem-layouts-add-U-Boot-env-layout.patch patch was
adapted in the kernel bump too. It moves the code with the fix now.

Fixes: 05d344cb2c ("kernel: bump 6.6 to 6.6.100")
Reported-by: Michael Pratt <mcpratt@pm.me>
Link: https://github.com/openwrt/openwrt/pull/19830
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 20:35:49 +02:00
Alexandra Alth
62d50fb196 realtek: add support for XikeStor SKS8310-8X
XikeStor (Seeker) SKS8310-8X is a 8 ports Multi-Gig switch, based on
RTL9303.

Specifications:

- SoC              : Realtek RTL9303
- RAM              : DDR3 512 MiB
- Flash            : SPI-NOR 32 MiB (Macronix)
- Ethernet         : 8x 1/2.5/10 Gbps (SFP+)
- LEDs/Keys (GPIO) : 1x/1x
- UART             : "Console" port on the front panel
  - type           : RS-232C
  - connector      : RJ-45
  - settings       : 115200 8N1
- Power            : 12 VDC, 2 A

Flash instruction using initramfs image:

 1. Prepare TFTP server & connect to serial port.
 2. Connect your computer to one of the ports on SKS8310-8X with a
    suitable SFP module (some work, some don't).
 3. Power on SKS8310-8X and interrupt autoboot with Shift + A.
 4. Use Shift + Q to drop from vendor CLI to U-Boot CLI.
 5. Enable networking within U-Boot.
	> rtk network on
 6. Set switch IP and TFTP server IP (optional, adjust to your setup).
	> setenv ipaddr <ip>
	> setenv serverip <ip>
 7. Download initramfs image from TFTP server.
	> tftpboot 0x82000000 <image name>
 8. Boot with the downloaded image.
	> bootm 0x82000000
 9. With rambooted OpenWrt, backup the stock firmware if needed.
10. Copy sysupgrade image to the device.
11. Perform sysupgrade with the sysupgrade image.
12. After reboot, you should have functional OpenWrt.

Reverting to stock firmware:

 1. Download latest firmware from XikeStor and upload to your device.
 1. Write firmware with 'sysupgrade -F'.
 2. After reboot, stock firmware should boot automatically.

Co-authored-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Signed-off-by: Alexandra Alth <alexandra@alth.de>
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19782
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 19:22:53 +02:00
Konstantin Demin
e021b8a746 dropbear: disable login recording with musl libc
disallow lastlog/login()/utmp/wtmp with musl libc in order to avoid runtime errors due to musl implementation details.

ref: https://github.com/openwrt/openwrt/issues/19566#issuecomment-3167897095

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19715
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 18:25:11 +02:00
Konstantin Demin
fb6c22caec dropbear: don't limit channel window to 500MB
cherry-pick commit from https://github.com/mkj/dropbear/pull/377

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19715
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 18:25:11 +02:00
Konstantin Demin
3e5f8a0364 dropbear: fix missing depends for sntrup761x25519-sha512
resolves FTBFS where internal option DROPBEAR_SHA512 wasn't enabled by any of options

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19715
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 18:25:11 +02:00
Stefan Dösinger
e7ed87b83b ramips: fix TP-Link mr600 radio partition offset
This makes 5ghz WiFi work out of the box on these devices, eliminating
the need to flash a magic blob to the radio partition.

This was found by user BulldozerBSG on the OpenWRT Forums:
https://forum.openwrt.org/t/tp-link-archer-mr600-exploration/65489/20
All credit belongs to them. I can confirm the correctness of the
findings. At least one other user (Iggy87100) confirmed them too.

Signed-off-by: Stefan Dösinger <stefandoesinger@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19790
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-08-23 18:11:24 +02:00
Shiji Yang
65ed5f8d6d ipq40xx: do not build EnGenius EAP1300 and ENS620EXT by default
The 6.12 kernel has exceeded the kernel size limit. the buildbot
can no longer build images for them. Developers can try switching
the kernel type to zImage to enable them again.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19826
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-23 11:41:22 +02:00
Andre Heider
db0b0e14be omap: enable 6.12 testing kernel
The omap target now supports 6.12 kernel as testing.

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:18:16 +02:00
Andre Heider
9273904ac7 omap: update kernel 6.12 config
Plain `make kernel_oldconfig`

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Andre Heider
cb26a6c0e1 generic: 6.12: add new config symbols
Add new config symbols to 6.12 kernel config.

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Andre Heider
1b16dffeb6 omap: refresh kernel 6.12 patches
Plain `make target/linux/refresh`

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Andre Heider
2baec9856b kernel/omap: Restore kernel files for v6.6
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: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Andre Heider
72626f8b6a kernel/omap: Create kernel files for v6.12 (from v6.6)
This is an automatically generated commit.

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

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Andre Heider
c4eb2425ed omap: update kernel 6.6 config
Plain `make kernel_oldconfig`

Signed-off-by: Andre Heider <a.heider@gmail.com>
2025-08-22 20:14:25 +02:00
Mark Mentovai
3b54f821d0 toolchain/binutils: export ZSTD_CFLAGS/LIBS to fix non-Linux build
This is what 66dfbca262 (updated by
2872ff7be1) did for toolchain/gdb, but for
toolchain/binutils, following the switch to binutils-2.44 by default in
854d88be8a.

Signed-off-by: Mark Mentovai <mark@mentovai.com>
Link: https://github.com/openwrt/openwrt/pull/19833
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-22 12:34:49 +02:00
Shiji Yang
5b3c823589 uboot-layerscape: do not build efimkcapsule tool
OpenWrt layerscape target does not use this command. If the host is
missing gnutls, this tool will fail to build. Fix build error:

tools/mkeficapsule.c:20:10: fatal error: gnutls/gnutls.h: No such file or directory
   20 | #include <gnutls/gnutls.h>
      |          ^~~~~~~~~~~~~~~~~

Fixes: c773c3f4d3 ("uboot-layerscape: bump to lf-6.12.20-2.0.0")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19836
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-22 11:24:43 +02:00
4184 changed files with 236451 additions and 215096 deletions

2
.gitattributes vendored
View File

@@ -1,2 +1,4 @@
* -text
*.patch whitespace=-indent-with-non-tab,-space-before-tab,-tab-in-indent,-trailing-space
*.dts text eol=lf
*.dts[io] text eol=lf

10
.github/labeler.yml vendored
View File

@@ -54,6 +54,10 @@
- "target/linux/d1/**"
- "package/boot/uboot-d1/**"
- "package/boot/opensbi/**"
"target/econet":
- changed-files:
- any-glob-to-any-file:
- "target/linux/econet/**"
"target/gemini":
- changed-files:
- any-glob-to-any-file:
@@ -122,6 +126,12 @@
- "target/linux/mediatek/**"
- "package/boot/arm-trusted-firmware-mediatek/**"
- "package/boot/uboot-mediatek/**"
"target/microchipsw":
- changed-files:
- any-glob-to-any-file:
- "target/linux/microchipsw/**"
- "package/boot/arm-trusted-firmware-microchipsw/**"
- "package/boot/uboot-microchipsw/**"
"target/mpc85xx":
- changed-files:
- any-glob-to-any-file:

View File

@@ -5,8 +5,14 @@ on:
permissions:
contents: read
pull-requests: write
jobs:
build:
name: Test Formalities
uses: openwrt/actions-shared-workflows/.github/workflows/formal.yml@main
# with:
# # Post formality check summaries to the PR.
# # Repo's permissions need to be updated for actions to modify PRs:
# # https://docs.github.com/en/rest/issues/comments?apiVersion=2022-11-28#create-an-issue-comment
# post_comment: true

View File

@@ -108,6 +108,7 @@ menu "Global build settings"
config CLEAN_IPKG
bool
prompt "Remove ipkg/opkg status data files in final images"
depends on !USE_APK
help
This removes all ipkg/opkg status data files from the target directory
before building the root filesystem.
@@ -250,6 +251,15 @@ menu "Global build settings"
comment "Hardening build options"
config PKG_FANALYZER
bool
prompt "Enable gcc fanalyzer"
default n
help
Add -fanalyzer to the CFLAGS. As a result of this option, a static analysis
of the program flow is conducted, allowing interprocedural paths to be
identified and warnings to be issued if problems are identified.
config PKG_CHECK_FORMAT_SECURITY
bool
prompt "Enable gcc format-security"
@@ -358,9 +368,11 @@ menu "Global build settings"
config PKG_FORTIFY_SOURCE_NONE
bool "None"
config PKG_FORTIFY_SOURCE_1
bool "Conservative"
bool "Conservative Level 1"
config PKG_FORTIFY_SOURCE_2
bool "Aggressive"
bool "Aggressive Level 2"
config PKG_FORTIFY_SOURCE_3
bool "Aggressive Level 3"
endchoice
choice
@@ -381,6 +393,15 @@ menu "Global build settings"
bool "Full"
endchoice
config PKG_DT_RELR
bool "Link with relative relocations (RELR)"
depends on (aarch64 || i386 || loongarch64 || x86_64)
default y
help
Link all applications with -Wl,-z,pack-relative-relocs.
This will reduce the size of many applications.
This is only supported on a limited number of architectures.
config TARGET_ROOTFS_SECURITY_LABELS
bool
select KERNEL_SQUASHFS_XATTR

View File

@@ -18,6 +18,7 @@ menu "Target Images"
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
default TARGET_INITRAMFS_COMPRESSION_ZSTD if TARGET_qualcommax
default TARGET_INITRAMFS_COMPRESSION_ZSTD if TARGET_microchipsw
default TARGET_INITRAMFS_COMPRESSION_XZ if USES_SEPARATE_INITRAMFS
default TARGET_INITRAMFS_COMPRESSION_NONE
depends on TARGET_ROOTFS_INITRAMFS
@@ -335,7 +336,7 @@ menu "Target Images"
int "Root filesystem partition size (in MiB)"
depends on USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS
default 232 if TARGET_loongarch64
default 448 if TARGET_mediatek
default 448 if TARGET_mediatek || TARGET_microchipsw
default 104
help
Select the root filesystem partition size.

View File

@@ -597,14 +597,12 @@ choice
config KERNEL_TRANSPARENT_HUGEPAGE_NEVER
bool "never"
depends on !LINUX_6_6
endchoice
config KERNEL_ARM64_CONTPTE
bool "Compile the kernel with Contiguous PTE mappings for user memory"
depends on KERNEL_ARM64
depends on aarch64
depends on KERNEL_TRANSPARENT_HUGEPAGE
depends on !LINUX_6_6
default y
config KERNEL_HUGETLBFS
@@ -862,7 +860,6 @@ if KERNEL_CGROUPS
config KERNEL_CPUSETS_V1
bool "Legacy cgroup v1 cpusets controller"
depends on KERNEL_CPUSETS
depends on !LINUX_6_6
default n
help
Legacy cgroup v1 cpusets controller which has been deprecated by
@@ -921,7 +918,6 @@ if KERNEL_CGROUPS
bool "Legacy cgroup v1 memory controller"
default n
depends on KERNEL_MEMCG
depends on !LINUX_6_6
help
Legacy cgroup v1 memory controller which has been deprecated by
cgroup v2 implementation. The v1 is there for legacy applications
@@ -1185,6 +1181,7 @@ config KERNEL_NET_L3_MASTER_DEV
config KERNEL_DCB
bool "Data Center Bridging support"
default y if TARGET_armsr_armv8
default y if TARGET_microchipsw
default y if TARGET_x86_64
help
This enables support for configuring Data Center Bridging (DCB)

View File

@@ -1,8 +1,5 @@
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
src-git packages https://git.openwrt.org/feed/packages.git;openwrt-25.12
src-git luci https://git.openwrt.org/project/luci.git;openwrt-25.12
src-git routing https://git.openwrt.org/feed/routing.git;openwrt-25.12
src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-25.12
src-git video https://github.com/openwrt/video.git;openwrt-25.12

View File

@@ -89,8 +89,8 @@ endif
define Build/Configure/Default
mkdir -p $(CMAKE_BINARY_DIR)
(cd $(CMAKE_BINARY_DIR); \
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
cmake \
--no-warn-unused-cli \
@@ -113,7 +113,7 @@ define Build/Configure/Default
-DCMAKE_NM="$(CMAKE_NM)" \
-DCMAKE_RANLIB="$(CMAKE_RANLIB)" \
-DCMAKE_FIND_ROOT_PATH="$(CMAKE_FIND_ROOT_PATH)" \
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
-DCMAKE_STRIP=: \

View File

@@ -159,7 +159,7 @@ $(if $(if $(MIRROR), \
( $(3) ) \
$(if $(filter-out x,$(MIRROR_HASH)), && ( \
file_hash="$$$$($(MKHASH) sha256 "$(DL_DIR)/$(FILE)")"; \
[ "$$$$file_hash" = "$(MIRROR_HASH)" ] || { \
[ "$$$$file_hash" = "$(MIRROR_HASH)" ] || [ "$(MIRROR_HASH)" = "skip" ] || { \
echo "Hash mismatch for file $(FILE): expected $(MIRROR_HASH), got $$$$file_hash"; \
false; \
}; \
@@ -238,7 +238,7 @@ define DownloadMethod/rawgit
[ \! -d $(SUBDIR) ] && \
git clone $(OPTS) $(URL) $(SUBDIR) && \
(cd $(SUBDIR) && git checkout $(SOURCE_VERSION)) && \
export TAR_TIMESTAMP=`cd $(SUBDIR) && git log -1 --format='@%ct'` && \
export TAR_TIMESTAMP=`cd $(SUBDIR) && git log -1 --no-show-signature --format='@%ct'` && \
echo "Generating formal git archive (apply .gitattributes rules)" && \
(cd $(SUBDIR) && git config core.abbrev 8 && \
git archive --format=tar HEAD --output=../$(SUBDIR).tar.git) && \

View File

@@ -8,6 +8,8 @@ PKG_ASLR_PIE_REGULAR ?= 0
PKG_SSP ?= 1
PKG_FORTIFY_SOURCE ?= 1
PKG_RELRO ?= 1
PKG_DT_RELR ?= 1
PKG_FANALYZER ?= 0
ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY
ifeq ($(strip $(PKG_CHECK_FORMAT_SECURITY)),1)
@@ -51,6 +53,11 @@ ifdef CONFIG_PKG_FORTIFY_SOURCE_2
TARGET_CFLAGS += -D_FORTIFY_SOURCE=2
endif
endif
ifdef CONFIG_PKG_FORTIFY_SOURCE_3
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
TARGET_CFLAGS += -D_FORTIFY_SOURCE=3
endif
endif
ifdef CONFIG_PKG_RELRO_PARTIAL
ifeq ($(strip $(PKG_RELRO)),1)
TARGET_CFLAGS += -Wl,-z,relro
@@ -64,3 +71,15 @@ ifdef CONFIG_PKG_RELRO_FULL
endif
endif
ifdef CONFIG_PKG_DT_RELR
ifeq ($(strip $(PKG_DT_RELR)),1)
TARGET_CFLAGS += -Wl,-z,pack-relative-relocs
TARGET_LDFLAGS += -zpack-relative-relocs
endif
endif
ifdef CONFIG_PKG_FANALYZER
ifeq ($(strip $(PKG_FANALYZER)),1)
TARGET_CFLAGS += -fanalyzer
endif
endif

View File

@@ -130,6 +130,33 @@ define Build/append-gl-metadata
}
endef
define Build/append-teltonika-metadata
echo \
'{$(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \
"metadata_version": "1.1", \
"compat_version": "$(call json_quote,$(compat_version))", \
"version":"$(call json_quote,$(VERSION_DIST))-$(call json_quote,$(VERSION_NUMBER))-$(call json_quote,$(REVISION))", \
"device_code": [".*"], \
"hwver": [".*"], \
"batch": [".*"], \
"serial": [".*"], \
$(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \
$(if $(filter-out 1.0,$(compat_version)),"new_supported_devices": \
[$(call metadata_devices,$(SUPPORTED_TELTONIKA_DEVICES))]$(comma) \
"supported_devices": ["$(call json_quote,$(legacy_supported_message))"]$(comma)) \
$(if $(filter 1.0,$(compat_version)),"supported_devices":[$(call metadata_devices,$(SUPPORTED_TELTONIKA_DEVICES))]$(comma)) \
"version_wrt": { \
"dist": "$(call json_quote,$(VERSION_DIST))", \
"version": "$(call json_quote,$(VERSION_NUMBER))", \
"revision": "$(call json_quote,$(REVISION))", \
"target": "$(call json_quote,$(TARGETID))", \
"board": "$(call json_quote,$(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)))" \
}, \
"hw_support": {}, \
"hw_mods": {$(shell i=1; for mod in $(SUPPORTED_TELTONIKA_HW_MODS); do [ $$i -gt 1 ] && echo -n ,; echo -n "\"mod$$i\": \"$$mod\""; i=$$((i+1)); done)} \
}' | fwtool -I - $@
endef
define Build/append-rootfs
dd if=$(IMAGE_ROOTFS) >> $@
endef
@@ -403,8 +430,11 @@ define Build/initrd_compression
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD),.zstd)
endef
define Build/fit
$(call locked,$(TOPDIR)/scripts/mkits.sh \
define Build/fit-its
$(if $(findstring with-rootfs,$(word 3,$(1))), \
$(call locked,dd if=$(IMAGE_ROOTFS) of=$(IMAGE_ROOTFS).pagesync bs=4096 conv=sync, \
gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME)))))
$(TOPDIR)/scripts/mkits.sh \
-D $(DEVICE_NAME) -o $@.its -k $@ \
-C $(word 1,$(1)) \
$(if $(word 2,$(1)),\
@@ -421,12 +451,21 @@ define Build/fit
$(if $(DEVICE_DTS_LOADADDR),-s $(DEVICE_DTS_LOADADDR)) \
$(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
-A $(LINUX_KARCH) -v $(LINUX_VERSION), gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
-A $(LINUX_KARCH) -v $(LINUX_VERSION)
endef
define Build/fit-image
$(call locked,PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
-E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new)
-E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new, \
gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
@mv $@.new $@
endef
define Build/fit
$(call Build/fit-its,$(1))
$(call Build/fit-image,$(1))
endef
define Build/libdeflate-gzip
$(STAGING_DIR_HOST)/bin/libdeflate-gzip -f -12 -c $@ $(1) > $@.new
@mv $@.new $@
@@ -492,7 +531,7 @@ define Build/yaffs-filesystem
filesystem_size="filesystem_blocks * 64 * 1024" \
filesystem_size_with_reserve="(filesystem_blocks + 2) * 64 * 1024"; \
head -c $$filesystem_size_with_reserve /dev/zero | tr "\000" "\377" > $@.img \
&& yafut -d $@.img -w -i $@ -o kernel -C 1040 -B 64k -E -P -S $(1) \
&& yafut -d $@.img -w -i $@ -o $(if $(findstring v7,$@),bootimage,kernel) -C 1040 -B 64k -E -P -S $(1) \
&& truncate -s $$filesystem_size $@.img \
&& mv $@.img $@
endef
@@ -530,6 +569,11 @@ define Build/gl-qsdk-factory
$(KDIR_TMP)/$(notdir $(BOOT_SCRIPT))
endef
define Build/kernel-pack-npk
$(STAGING_DIR_HOST)/bin/npk_pack_kernel $@ $@.npk
mv $@.npk $@
endef
define Build/linksys-image
let \
size="$$(stat -c%s $@)" \
@@ -608,6 +652,19 @@ define Build/openmesh-image
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
endef
define Build/dualboot-datachk-nand-image
$(TOPDIR)/scripts/nand-fwupgradecfg-gen.sh \
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \
"$@-fwupgrade.cfg" \
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \
"$(call param_get_default,rootfs,$(1),$@)"
$(TOPDIR)/scripts/combined-ext-image.sh \
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \
"$@-fwupgrade.cfg" "fwupgrade.cfg" \
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
endef
define Build/pad-extra
dd if=/dev/zero bs=$(1) count=1 >> $@
endef

View File

@@ -41,6 +41,9 @@ KDIR=$(KERNEL_BUILD_DIR)
KDIR_TMP=$(KDIR)/tmp
DTS_DIR:=$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts
ifeq ($(EXTRA_IMAGE_NAME),)
EXTRA_IMAGE_NAME:=$(call qstrip,$(CONFIG_EXTRA_IMAGE_NAME))
endif
IMG_PREFIX_EXTRA:=$(if $(EXTRA_IMAGE_NAME),$(call sanitize,$(EXTRA_IMAGE_NAME))-)
IMG_PREFIX_VERNUM:=$(if $(CONFIG_VERSION_FILENAMES),$(call sanitize,$(VERSION_NUMBER))-)
IMG_PREFIX_VERCODE:=$(if $(CONFIG_VERSION_CODE_FILENAMES),$(call sanitize,$(VERSION_CODE))-)
@@ -114,6 +117,7 @@ fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2_NAND) += $(addprefix jffs2-nand-,$(NAND_BL
fs-types-$(CONFIG_TARGET_ROOTFS_EXT4FS) += ext4
fs-types-$(CONFIG_TARGET_ROOTFS_UBIFS) += ubifs
fs-types-$(CONFIG_TARGET_ROOTFS_EROFS) += erofs
fs-types-$(CONFIG_TARGET_ROOTFS_TARGZ) += targz
fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2-,$(JFFS2_BLOCKSIZE)))
TARGET_FILESYSTEMS := $(fs-types-y)
@@ -326,6 +330,12 @@ define Image/mkfs/erofs
$@ $(call mkfs_target_dir,$(1))
endef
define Image/mkfs/targz
$(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \
$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
-C $(call mkfs_target_dir,$(1)) . | gzip -9n > $@
endef
define Image/Manifest
$(if $(CONFIG_USE_APK), \
$(call apk,$(TARGET_DIR_ORIG)) list --quiet --manifest --no-network \
@@ -595,7 +605,6 @@ define Device/Check/Common
_PROFILE_SET :=
endif
endif
DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES))
ifdef TARGET_PER_DEVICE_ROOTFS
$$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1))))
ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(_PACKAGES)))

View File

@@ -25,7 +25,6 @@ ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
define Kernel/Prepare/Default
$(LINUX_CAT) $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
$(Kernel/Patch)
$(if $(QUILT),touch $(LINUX_DIR)/.quilt_used)
endef
else
define Kernel/Prepare/Default

View File

@@ -306,4 +306,3 @@ kernel_patchver_ge=$(call kernel_version_cmp,-ge,$(KERNEL_PATCHVER),$(1))
kernel_patchver_eq=$(call kernel_version_cmp,-eq,$(KERNEL_PATCHVER),$(1))
kernel_patchver_le=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1))
kernel_patchver_lt=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1))

View File

@@ -3,6 +3,7 @@
# Copyright (C) 2022-2023 Enéas Ulir de Queiroz
ENGINES_DIR=engines-3
MODULES_DIR=ossl-modules
define Package/openssl/module/Default
SECTION:=libs
@@ -74,6 +75,6 @@ endef
# 1 = provider name
# 2 = [ package name, defaults to libopenssl-$(1) ]
define Package/openssl/add-provider
$(call Package/openssl/add-module,provider,$(1),/usr/lib/ossl-modules,$(2))
$(call Package/openssl/add-module,provider,$(1),/usr/lib/$(MODULES_DIR),$(2))
endef

View File

@@ -20,7 +20,7 @@ define Package/Default
PROVIDES:=
EXTRA_DEPENDS:=
MAINTAINER:=$(PKG_MAINTAINER)
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(patsubst $(TOPDIR)/package/%,feeds/base/%,$(CURDIR)))
SOURCE:=$(patsubst $(TOPDIR)/%,%,$(if $(__pkg_source_makefile),$(__pkg_source_makefile),$(CURDIR)))
ifneq ($(PKG_VERSION),)
ifneq ($(PKG_RELEASE),)
VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE)

View File

@@ -78,6 +78,196 @@ define FixupDependencies
$(call AddDependency,$(1),$$(DEPS))
endef
# Format dependencies and extra dependencies
#
# ABI-version EXTRA_DEPENDS so dependencies can be correctly looked up using the
# existing semantics without the ABI specified. This is needed since ABI-
# versioned libraries don't provide `${package_name}=${package_version}`, so
# that same library but with different ABI versions can be installed side by
# side.
#
# Remove duplicate dependencies when EXTRA_DEPENDS specifies a versioned one
# that is already in DEPENDS.
#
# 1: list of dependencies
# 2: list of extra dependencies
define FormatDepends
$(strip
$(eval _COMMA_SEP := __COMMA_SEP__)
$(eval _SPACE_SEP := __SPACE_SEP__)
$(eval _DEPENDS := $(1))
$(eval _EXTRA_DEPENDS_ABI := )
$(eval _DEP_ITEMS := $(subst $(_COMMA_SEP),$(space),$(subst $(space),$(_SPACE_SEP),$(subst $(comma),$(_COMMA_SEP),$(2)))))
$(foreach dep,$(_DEP_ITEMS),
$(eval _EXTRA_DEP := )
$(eval _CUR_DEP := $(subst $(_SPACE_SEP),$(space),$(strip $(dep))))
$(eval _PKG_NAME := $(word 1,$(_CUR_DEP)))
$(if $(findstring $(paren_left), $(_PKG_NAME)),
$(error "Unsupported extra dependency format: no space before '(': $(_CUR_DEP)"))
)
$(eval _ABI_SUFFIX := $(call GetABISuffix,$(_PKG_NAME)))
$(eval _PKG_NAME_ABI := $(_PKG_NAME)$(_ABI_SUFFIX))
$(eval _VERSION_CONSTRAINT := $(word 2,$(_CUR_DEP)))
$(if $(_VERSION_CONSTRAINT),
$(eval _EXTRA_DEP := $(_PKG_NAME_ABI) $(_VERSION_CONSTRAINT)),
$(error "Extra dependencies must have version constraints. $(_PKG_NAME) seems to be unversioned.")
)
$(if $(and $(_EXTRA_DEPENDS_ABI),$(_EXTRA_DEP)),
$(eval _EXTRA_DEPENDS_ABI := $(_EXTRA_DEPENDS_ABI)$(comma)$(_EXTRA_DEP)),
$(eval _EXTRA_DEPENDS_ABI := $(_EXTRA_DEP))
)
$(if $(_DEPENDS),
$(eval _DEPENDS := $(filter-out $(_PKG_NAME_ABI),$(_DEPENDS)))
)
)
$(eval _DEPENDS := $(call mergelist,$(_DEPENDS)))
$(_EXTRA_DEPENDS_ABI)$(if $(_DEPENDS),$(comma) $(_DEPENDS))
)
endef
# Format provide and add ABI and version if it's not a virtual provide marked
# with an @.
#
# Same as for the base package name, if ABI version is set, provide both
# unversioned provide and one with ABI version and version.
#
# 1: provide name
# 2: provide version
# 3: (optional) ABI version
define AddProvide
$(strip
$(if $(filter @%,$(1)),
$(patsubst @%,%,$(1)),
$(if $(3),
$(1) $(1)$(call FormatABISuffix,$(1),$(3))=$(2),
$(1)=$(2)
)
)
)
endef
# Remove virtual provides prefix and self. apk doesn't like it when packages
# specify a redundant provide pointing to self.
#
# 1: package name
# 2: list of provides
define SanitizeProvides
$(filter-out $(1),$(patsubst @%,%,$(2)))
endef
# Format provides both for apk and control
#
# - If ABI version is defined:
# - package is named `${package_name}${ABI_version}`
# if a `package_name` ends in a number, the `ABI_version` will be prefixed
# with a - sign, e.g.: libsqlite3-0
# - package implicitly provides
# `${package_name}${ABI_version}=${package_version}`
# this implies that only one version of a package per ABI can be installed
# at the same time
# - additionally provide `${package_name}` so multiple packages can be looked
# up by its base name
# - for each `provides`:
# - provide `${provide}${ABI_version}=${package_version}`
# this implies that only one version of a provide can be installed at the
# same time
# - if a `provide` ends in a number, the `ABI_version` will be prefixed with
# a - sign, e.g.: provide1-0
# - additionally provide `${provide}` so multiple packages can be looked up
# by its base name
#
# - else if ABI version is _not_ defined
# - package is named `${package_name}`
# - package implicitly provides `${package_name}=${package_version}`
# this implies that only one version of a package can be installed at the
# same time
# - for each `provides`, provide `${provide}=${package_version}` this implies
# that only one version of a provide can be installed at the same time
#
# - Both with and without an ABI, if a provide starts with an @, treat it as a
# virtual provide, that doesn't own the name by not appending version.
# Multiple packages with the same virtual provides can be installed
# side-by-side.
#
# - apk doesn't like it when packages specify a redundant provide pointing to
# self. Filter it out, but keep virtual self provides, in the form of
# @(kmod-)?${package_name}-any.
#
# - Packages implicitly add a virtual @${package_name}-any provide in Package,
# which implies that kmods, which are also packages, will have a virtual
# @kmod-${package_name}-any provide.
#
# - Aside from the two aforementioned implicit provides, packages are expected
# to manage their provides themselves.
#
# - When multiple variants inside the same package have the same provide, a
# default variant must be set using DEFAULT_VARIANT:=1.
#
# - Cross-package provides must be virtual and a default variant must be set. If
# different packages provide the same versioned (i.e. non-virtual) provide the
# package with a higher version will be preferred, which results in unintended
# behavior, because the order might change with package updates.
#
# Example:
# - both uclient-fetch and wget provide wget
# - wget doesn't have a default variant called wget that would provide an
# implicit @wget-any
# - add wget to PROVIDES for both wget-ssl and wget-nossl variants so they
# can't be installed at the same time
# - add @wget-any to both packages so packages outside of wget can provide
# it
# - uclient-fetch has only one variant
# - add @wget-any to PROVIDES
# - mark uclient-fetch as the default variant using DEFAULT_VARIANT:=1
# - switch wget consumer that don't depend on a specific version like apk to
# depend on @wget-any
#
# - Alternatives don't affect the packaging.
#
# 1: package name
# 2: package version
# 3: ABI version
# 4: list of provides
define FormatProvides
$(strip \
$(if $(call FormatABISuffix,$(1),$(3)), \
$(1) $(foreach provide, \
$(filter-out $(1),$(4)), \
$(call AddProvide,$(provide),$(2),$(3)) \
), \
$(foreach provide, \
$(filter-out $(1),$(4)), \
$(call AddProvide,$(provide),$(2)) \
) \
) \
)
endef
# Get apk provider priority
#
# - if a package is marked as a default variant, set it to 100.
#
# - if a package has an ABI version defined, set it to 10.
# The enables packages with an ABI version to be installed by their base name
# instead of a name and an ABI version, e.g.:
# libfoo3, where 3 is the ABI version can be installed by just libfoo.
# This affects manual installation only, as the dependency resolution takes
# care of ABI versions.
#
# - otherwise return nothing, i.e. package will have the default priority 0.
#
# 1: Default variant
# 2: ABI version
define GetProviderPriority
$(strip
$(if $(1),100,
$(if $(2),10)
)
)
endef
ifneq ($(PKG_NAME),toolchain)
define CheckDependencies
@( \
@@ -191,17 +381,33 @@ endif
$(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
mkdir -p $(STAGING_DIR_ROOT)/stamp
$(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || { \
mkdir -p $(PKG_INFO_DIR); \
echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version; \
$(foreach pkg,$(filter-out $(1),$(PROVIDES)), \
$(foreach pkg,$(call SanitizeProvides,$(1),$(PROVIDES)), \
cp $(PKG_INFO_DIR)/$(1).version $(PKG_INFO_DIR)/$(pkg).version; \
) \
} )
$(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy)
touch $$@
Package/$(1)/DEPENDS := $$(call mergelist,$$(foreach dep,$$(filter-out @%,$$(IDEPEND_$(1))),$$(dep)$$(call GetABISuffix,$$(dep))))
Package/$(1)/DEPENDS := $$(foreach dep,$$(filter-out @%,$$(IDEPEND_$(1))),$$(dep)$$(call GetABISuffix,$$(dep)))
ifneq ($$(EXTRA_DEPENDS),)
Package/$(1)/DEPENDS := $$(EXTRA_DEPENDS)$$(if $$(Package/$(1)/DEPENDS),$$(comma) $$(Package/$(1)/DEPENDS))
ifeq ($(CONFIG_USE_APK),)
Package/$(1)/DEPENDS := $$(call mergelist,$$(Package/$(1)/DEPENDS))
Package/$(1)/DEPENDS := $$(EXTRA_DEPENDS)$$(if $$(Package/$(1)/DEPENDS),$$(comma) $$(Package/$(1)/DEPENDS))
else
Package/$(1)/DEPENDS := $$(call FormatDepends,$$(Package/$(1)/DEPENDS),$$(EXTRA_DEPENDS))
endif
else
Package/$(1)/DEPENDS := $$(call mergelist,$$(Package/$(1)/DEPENDS))
endif
ifeq ($(CONFIG_USE_APK),)
Package/$(1)/PROVIDES := $$(patsubst @%,%,$(PROVIDES))
Package/$(1)/PROVIDES := $$(filter-out $(1)$$(ABIV_$(1)),$$(Package/$(1)/PROVIDES)$$(if $$(ABIV_$(1)), $(1) $$(foreach provide,$$(Package/$(1)/PROVIDES),$$(provide)$$(ABIV_$(1)))))
else
Package/$(1)/PROVIDES := $$(call FormatProvides,$(1),$(VERSION),$(ABI_VERSION),$(PROVIDES))
Package/$(1)/PRIORITY := $$(call GetProviderPriority,$(DEFAULT_VARIANT),$(ABI_VERSION))
endif
$(_define) Package/$(1)/CONTROL
@@ -209,7 +415,7 @@ Package: $(1)$$(ABIV_$(1))
Version: $(VERSION)
$$(call addfield,Depends,$$(Package/$(1)/DEPENDS)
)$$(call addfield,Conflicts,$$(call mergelist,$(CONFLICTS))
)$$(call addfield,Provides,$$(call mergelist,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))))
)$$(call addfield,Provides,$$(call mergelist,$$(Package/$(1)/PROVIDES))
)$$(call addfield,Alternatives,$$(call mergelist,$(ALTERNATIVES))
)$$(call addfield,Source,$(SOURCE)
)$$(call addfield,SourceName,$(PKG_NAME)
@@ -232,6 +438,7 @@ $(_endef)
$$(PACK_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
$$(PACK_$(1)) : export PATH=$$(TARGET_PATH_PKG)
$$(PACK_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
$$(PACK_$(1)) : export SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
$(PKG_INFO_DIR)/$(1).provides $$(PACK_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-pack.mk
rm -rf $$(IDIR_$(1))
ifeq ($$(CONFIG_USE_APK),)
@@ -252,7 +459,7 @@ endif
fi; \
done; $(Package/$(1)/extra_provides) \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
$(if $(PROVIDES),@for pkg in $(call SanitizeProvides,$(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
$(CheckDependencies)
$(RSTRIP) $$(IDIR_$(1))
@@ -279,7 +486,7 @@ endif
)
endif
$(INSTALL_DIR) $$(PDIR_$(1))/tmp
$(INSTALL_DIR) $$(PDIR_$(1))
ifeq ($(CONFIG_USE_APK),)
mkdir -p $$(IDIR_$(1))/CONTROL
@@ -319,24 +526,24 @@ else
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
echo 'export root="$$$${IPKG_INSTROOT}"'; \
echo 'export pkgname="$(1)"'; \
echo 'export pkgname="$(1)$$(ABIV_$(1))"'; \
echo "add_group_and_user"; \
echo "default_postinst"; \
[ ! -f $$(ADIR_$(1))/postinst-pkg ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/postinst-pkg"; \
[ ! -f $$(ADIR_$(1))/postinst-pkg ] || sed '/^\s*#!/d' "$$(ADIR_$(1))/postinst-pkg"; \
) > $$(ADIR_$(1))/post-install;
ifdef Package/$(1)/preinst
( \
echo "#!/bin/sh"; \
echo 'export PKG_UPGRADE=1'; \
[ ! -f $$(ADIR_$(1))/preinst ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/preinst"; \
[ ! -f $$(ADIR_$(1))/preinst ] || sed '/^\s*#!/d' "$$(ADIR_$(1))/preinst"; \
) > $$(ADIR_$(1))/pre-upgrade;
endif
( \
echo "#!/bin/sh"; \
echo 'export PKG_UPGRADE=1'; \
[ ! -f $$(ADIR_$(1))/post-install ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/post-install"; \
[ ! -f $$(ADIR_$(1))/post-install ] || sed '/^\s*#!/d' "$$(ADIR_$(1))/post-install"; \
) > $$(ADIR_$(1))/post-upgrade;
( \
@@ -344,34 +551,34 @@ else
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
echo 'export root="$$$${IPKG_INSTROOT}"'; \
echo 'export pkgname="$(1)"'; \
echo 'export pkgname="$(1)$$(ABIV_$(1))"'; \
echo "default_prerm"; \
[ ! -f $$(ADIR_$(1))/prerm-pkg ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/prerm-pkg"; \
[ ! -f $$(ADIR_$(1))/prerm-pkg ] || sed '/^\s*#!/d' "$$(ADIR_$(1))/prerm-pkg"; \
) > $$(ADIR_$(1))/pre-deinstall;
[ ! -f $$(ADIR_$(1))/postrm ] || sed -zi 's/^\s*#!/#!/' "$$(ADIR_$(1))/postrm";
if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1).rusers; fi;
if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1).alternatives; fi;
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" | sort > $$(IDIR_$(1))/lib/apk/packages/$(1).list)
if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).rusers; fi;
if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).alternatives; fi;
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" | sort > $(TMP_DIR)/$(1).list && mv $(TMP_DIR)/$(1).list $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).list)
# Move conffiles to IDIR and build conffiles_static with csums
if [ -f $$(ADIR_$(1))/conffiles ]; then \
mv -f $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
for file in $$$$(cat $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles); do \
mv -f $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).conffiles; \
for file in $$$$(cat $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).conffiles); do \
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).conffiles_static; \
done; \
fi
# Some package (base-files) manually append stuff to conffiles
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
if [ -f $$(IDIR_$(1))/CONTROL/conffiles ]; then \
echo $$$$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
echo $$$$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).conffiles; \
for file in $$$$(cat $$(IDIR_$(1))/CONTROL/conffiles); do \
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1)$$(ABIV_$(1)).conffiles_static; \
done; \
rm -rf $$(IDIR_$(1))/CONTROL/conffiles; \
fi
@@ -393,22 +600,12 @@ else
--info "origin:$(SOURCE)" \
--info "url:$(URL)" \
--info "maintainer:$(MAINTAINER)" \
--info "provides:$$(foreach prov,\
$$(filter-out $(1)$$(ABIV_$(1)), \
$(PROVIDES)$$(if $$(ABIV_$(1)), \
$(1)=$(VERSION) $(foreach provide, \
$(PROVIDES), \
$(provide)$$(ABIV_$(1))=$(VERSION) \
) \
) \
), \
$$(prov) )" \
$(if $(DEFAULT_VARIANT),--info "provider-priority:100",$(if $(PROVIDES),--info "provider-priority:1")) \
$$(if $$(Package/$(1)/PROVIDES),--info "provides:$$(Package/$(1)/PROVIDES)") \
$$(if $$(Package/$(1)/PRIORITY),--info "provider-priority:$$(Package/$(1)/PRIORITY)") \
$$(APK_SCRIPTS_$(1)) \
--info "depends:$$(foreach depends,$$(subst $$(comma),$$(space),$$(subst $$(space),,$$(subst $$(paren_right),,$$(subst $$(paren_left),,$$(Package/$(1)/DEPENDS))))),$$(depends))" \
--files "$$(IDIR_$(1))" \
--output "$$(PACK_$(1))" \
--sign "$(BUILD_KEY_APK_SEC)"
--output "$$(PACK_$(1))"
endif
@[ -f $$(PACK_$(1)) ]

View File

@@ -134,6 +134,35 @@ endef
PKG_INSTALL_STAMP:=$(PKG_INFO_DIR)/$(PKG_DIR_NAME).$(if $(BUILD_VARIANT),$(BUILD_VARIANT),default).install
# Normalize package SOURCE entry to pack reproducible package
# If we are packing a package with OpenWrt buildroot:
# - Replace package/... with feeds/base/...
# If we are packing a package with SDK:
# - Replace feeds/.*_root/... with feeds/.*/... and remove
# the intermediate directory to reflect what the symbolic link
# points to.
# Example:
# Feed link: feeds/base_root/package -> feeds/base
# Package: feeds/base_root/package/system/uci -> feeds/base/system/uci
ifeq ($(DUMP),)
__pkg_base_path:=$(patsubst $(TOPDIR)/%,%,$(CURDIR))
__pkg_provider_path:=$(word 1,$(subst /, ,$(__pkg_base_path)))
ifeq ($(__pkg_provider_path), feeds)
__pkg_feed_path:=$(word 2,$(subst /, ,$(__pkg_base_path)))
__pkg_feed_name:=$(patsubst %_root,%,$(__pkg_feed_path))
ifneq (__pkg_feed_path, __pkg_feed_name)
__pkg_feed_realpath:=$(realpath $(TOPDIR)/feeds/$(__pkg_feed_name))
__pkg_feed_dir:=$(patsubst $(TOPDIR)/feeds/$(__pkg_feed_path)/%,%,$(__pkg_feed_realpath))
__pkg_path:=$(patsubst feeds/$(__pkg_feed_path)/$(__pkg_feed_dir)/%,%,$(__pkg_base_path))
else
__pkg_path:=$(patsubst feeds/$(__pkg_feed_path)/%,%,$(__pkg_base_path))
endif
__pkg_source_makefile:=$(TOPDIR)/feeds/$(__pkg_feed_name)/$(__pkg_path)
else ifeq ($(__pkg_provider_path), package)
__pkg_source_makefile:=$(TOPDIR)/feeds/base/$(patsubst package/%,%,$(__pkg_base_path))
endif
endif
include $(INCLUDE_DIR)/package-defaults.mk
include $(INCLUDE_DIR)/package-dumpinfo.mk
include $(INCLUDE_DIR)/package-pack.mk
@@ -303,6 +332,13 @@ define BuildPackage
$(eval $(Package/Default))
$(eval $(Package/$(1)))
# Add an implicit self-provide. apk can't handle self provides, be it
# versioned or virtual, so opt for a suffix instead. This allows several
# variants to provide the same virtual package without adding extra provides
# to the default one, e.g. wget implicitly provides wget-any and is marked as
# default, so wget-ssl can explicitly provide @wget-any as well.
$(eval PROVIDES:=$(strip @$(1)-any $(PROVIDES)))
ifdef DESCRIPTION
$$(error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description)
endif

View File

@@ -9,11 +9,11 @@ SHELL:=sh
PKG_NAME:=Build dependency
$(eval $(call TestHostCommand,true, \
Please install GNU 'coreutils', \
Please install 'coreutils', \
$(TRUE)))
$(eval $(call TestHostCommand,false, \
Please install GNU 'coreutils', \
Please install 'coreutils', \
$(FALSE); [ $$$$$$$$? = 1 ] && $(TRUE)))
# Required for the toolchain
@@ -178,15 +178,16 @@ $(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \
$(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \
wget --version | grep GNU))
$(eval $(call SetupHostCommand,install,Please install GNU 'install', \
$(eval $(call SetupHostCommand,install,Please install 'install', \
$(TOPDIR)/staging_dir/host/bin/ginstall --version | grep GNU, \
install --version | grep GNU, \
install --version | grep 'GNU\|uutils', \
ginstall --version | grep GNU))
$(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
perl --version | grep "perl.*v5"))
$(eval $(call SetupHostCommand,python,Please install Python >= 3.7, \
python3.13 -V 2>&1 | grep 'Python 3', \
python3.12 -V 2>&1 | grep 'Python 3', \
python3.11 -V 2>&1 | grep 'Python 3', \
python3.10 -V 2>&1 | grep 'Python 3', \
@@ -196,6 +197,7 @@ $(eval $(call SetupHostCommand,python,Please install Python >= 3.7, \
python3 -V 2>&1 | grep -E 'Python 3\.([7-9]|[0-9][0-9])\.?'))
$(eval $(call SetupHostCommand,python3,Please install Python >= 3.7, \
python3.13 -V 2>&1 | grep 'Python 3', \
python3.12 -V 2>&1 | grep 'Python 3', \
python3.11 -V 2>&1 | grep 'Python 3', \
python3.10 -V 2>&1 | grep 'Python 3', \
@@ -237,7 +239,7 @@ endif
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
mkdir -p $(dir $@)
$(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $<
$(STAGING_DIR_HOST)/bin/gcc -O2 -I$(TOPDIR)/tools/include -o $@ $<
$(STAGING_DIR_HOST)/bin/xxd: $(SCRIPT_DIR)/xxdi.pl
$(LN) $< $@

View File

@@ -71,7 +71,7 @@ endef
# 4: optional link library test (example -lncurses)
define RequireCHeader
define Require/$(1)
echo 'int main(int argc, char **argv) { $(3); return 0; }' | gcc -include $(1) -x c -o $(TMP_DIR)/a.out - $(4)
echo 'int main(int argc, char **argv) { $(3); return 0; }' | $(STAGING_DIR_HOST)/bin/gcc -include $(1) -x c -o $(TMP_DIR)/a.out - $(4)
endef
$$(eval $$(call Require,$(1),$(2)))

View File

@@ -103,6 +103,7 @@ define Kernel/Patch/Default
$(call PatchDir,$(LINUX_DIR),$(GENERIC_PATCH_DIR),generic/)
$(call PatchDir,$(LINUX_DIR),$(GENERIC_HACK_DIR),generic-hack/)
$(call PatchDir,$(LINUX_DIR),$(PATCH_DIR),platform/)
$(if $(QUILT),touch $(LINUX_DIR)/.quilt_used)
endef
define Quilt/RefreshDir

View File

@@ -78,6 +78,7 @@ define prepare_rootfs
cd $(1); \
if [ -n "$(CONFIG_USE_APK)" ]; then \
IPKG_POSTINST_PATH=./lib/apk/db/*.post-install; \
$(STAGING_DIR_HOST)/bin/gzip -d ./lib/apk/db/scripts.tar; \
$(STAGING_DIR_HOST)/bin/tar -C ./lib/apk/db/ -xf ./lib/apk/db/scripts.tar --wildcards "*.post-install"; \
else \
IPKG_POSTINST_PATH=./usr/lib/opkg/info/*.postinst; \
@@ -91,6 +92,7 @@ define prepare_rootfs
fi; \
[ -n "$(CONFIG_USE_APK)" ] && $(STAGING_DIR_HOST)/bin/tar --delete -f ./lib/apk/db/scripts.tar $$(basename $$script); \
done; \
[ -n "$(CONFIG_USE_APK)" ] && $(STAGING_DIR_HOST)/bin/gzip -f -9n -S ".gz" ./lib/apk/db/scripts.tar; \
if [ -z "$(CONFIG_USE_APK)" ]; then \
$(if $(IB),,awk -i inplace \
'/^Status:/ { \

View File

@@ -105,13 +105,6 @@ DEFAULT_PACKAGES += $(DEFAULT_PACKAGES.$(DEVICE_TYPE))
##
filter_packages = $(filter-out -% $(patsubst -%,%,$(filter -%,$(1))),$(1))
##@
# @brief Append extra package dependencies.
#
# @param 1: Package list.
##
extra_packages = $(if $(filter wpad wpad-% nas,$(1)),iwinfo)
define ProfileDefault
NAME:=
PRIORITY:=
@@ -128,7 +121,7 @@ define Profile
echo "Target-Profile: $(1)"; \
$(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \
echo "Target-Profile-Name: $(NAME)"; \
echo "Target-Profile-Packages: $(PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
echo "Target-Profile-Packages: $(PACKAGES)"; \
echo "Target-Profile-Description:"; \
echo "$$$$$$$$$(call shvar,Profile/$(1)/Description)"; \
echo "@@"; \
@@ -386,7 +379,7 @@ define BuildTargets/DumpCurrent
echo "$$$$DESCRIPTION"; \
echo '@@'; \
$(if $(DEFAULT_PROFILE),echo 'Target-Default-Profile: $(DEFAULT_PROFILE)';) \
echo 'Default-Packages: $(DEFAULT_PACKAGES) $(call extra_packages,$(DEFAULT_PACKAGES))'; \
echo 'Default-Packages: $(DEFAULT_PACKAGES)'; \
$(DUMPINFO)
$(if $(CUR_SUBTARGET),$(SUBMAKE) -r --no-print-directory -C image -s DUMP=1 SUBTARGET=$(CUR_SUBTARGET))
$(if $(SUBTARGET),,@$(foreach SUBTARGET,$(SUBTARGETS),$(SUBMAKE) --no-print-directory -s DUMP=1 SUBTARGET=$(SUBTARGET); ))

View File

@@ -78,7 +78,7 @@ _ignore = $(foreach p,$(IGNORE_PACKAGES),--ignore $(p))
prepare-tmpinfo: FORCE
@+$(MAKE) -r -s $(STAGING_DIR_HOST)/.prereq-build $(PREP_MK)
mkdir -p tmp/info feeds
[ -e $(TOPDIR)/feeds/base ] || ln -sf $(TOPDIR)/package $(TOPDIR)/feeds/base
[ -e $(TOPDIR)/feeds/base ] || ln -sf ../package $(TOPDIR)/feeds/base
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPTH=5 SCAN_EXTRA=""
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPTH=3 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"
for type in package target; do \
@@ -201,7 +201,7 @@ else
DOWNLOAD_DIRS = package/download
endif
download: .config FORCE $(if $(wildcard $(STAGING_DIR_HOST)/bin/flock),,tools/flock/compile)
download: .config FORCE $(if $(wildcard $(STAGING_DIR_HOST)/bin/flock),,tools/flock/compile) $(if $(wildcard $(STAGING_DIR_HOST)/bin/zstd),,tools/zstd/compile)
@+$(foreach dir,$(DOWNLOAD_DIRS),$(SUBMAKE) $(dir);)
clean dirclean: .config

View File

@@ -27,13 +27,13 @@ PKG_CONFIG_DEPENDS += \
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),SNAPSHOT)
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),25.12-SNAPSHOT)
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/snapshots)
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/25.12-SNAPSHOT)
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)

View File

@@ -70,7 +70,8 @@ ifneq ($(CONFIG_USE_APK),)
(cd $(PACKAGE_DIR_ALL) && $(STAGING_DIR_HOST)/bin/apk mkndx \
--root $(TOPDIR) \
--keys-dir $(TOPDIR) \
--sign $(BUILD_KEY_APK_SEC) \
--allow-untrusted \
$(if $(CONFIG_SIGNED_PACKAGES),--sign $(BUILD_KEY_APK_SEC),) \
--output packages.adb \
*.apk; \
)
@@ -100,6 +101,7 @@ ifneq ($(CONFIG_USE_APK),)
$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))
$(call apk,$(TARGET_DIR)) add --no-cache --initdb --no-scripts --arch $(ARCH_PACKAGES) \
--repositories-file /dev/null --repository file://$(PACKAGE_DIR_ALL)/packages.adb \
$(if $(CONFIG_SIGNED_PACKAGES),,--allow-untrusted) \
$$(cat $(TMP_DIR)/apk_install_list) \
"base-files=$(shell cat $(TMP_DIR)/base-files.version)" \
"libc=$(shell cat $(TMP_DIR)/libc.version)" \
@@ -127,13 +129,15 @@ $(curdir)/index: FORCE
@echo Generating package index...
ifneq ($(CONFIG_USE_APK),)
@for d in $(PACKAGE_SUBDIRS); do \
set -e; \
mkdir -p $$d; \
cd $$d || continue; \
ls *.apk >/dev/null 2>&1 || continue; \
$(STAGING_DIR_HOST)/bin/apk mkndx \
--root $(TOPDIR) \
--keys-dir $(TOPDIR) \
--sign $(BUILD_KEY_APK_SEC) \
--allow-untrusted \
$(if $(CONFIG_SIGNED_PACKAGES),--sign $(BUILD_KEY_APK_SEC),) \
--output packages.adb \
*.apk; \
$(STAGING_DIR_HOST)/bin/apk adbdump --format json packages.adb | \
@@ -169,6 +173,7 @@ ifdef CONFIG_JSON_CYCLONEDX_SBOM
); done
endif
endif
$(call sha256sums,$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES),1)
$(curdir)/flags-install:= -j1

View File

@@ -1,14 +1,22 @@
#!/bin/sh
CFG=$1
REAL_CFG=$1
[ -n "$CFG" ] || CFG=/etc/board.json
[ -n "$REAL_CFG" ] || REAL_CFG=/etc/board.json
[ -d "/etc/board.d/" -a ! -s "$CFG" ] && {
if [ -d "/etc/board.d/" ] && [ ! -s "$REAL_CFG" ]; then
# Use temp file to prevent incomplete file on power-cut, CFG is used by the sourced script to read/write the file
CFG="$(dirname "$REAL_CFG")/.$(basename "$REAL_CFG").tmp"
rm -f "$CFG" || exit
for a in $(ls /etc/board.d/*); do
[ -s $a ] || continue;
$(. $a)
[ -s "$a" ] || continue
(. "$a")
done
}
fi
[ -s "$CFG" ] || return 1
if [ -s "$CFG" ]; then
mv "$CFG" "$REAL_CFG" || exit
else
rm -f "$CFG"
exit 1
fi

View File

@@ -44,14 +44,15 @@ generate_static_network() {
set network.loopback.device='lo'
set network.loopback.proto='static'
add_list network.loopback.ipaddr='127.0.0.1/8'
delete network.globals
set network.globals='globals'
set network.globals.dhcp_default_duid='auto'
EOF
[ -e /proc/sys/net/ipv6 ] && {
uci -q batch <<-EOF
delete network.globals
set network.globals='globals'
set network.globals.ula_prefix='auto'
EOF
}
[ -e /proc/sys/net/ipv6 ] && {
uci -q batch <<-EOF
set network.globals.ula_prefix='auto'
EOF
}
if json_is_a dsl object; then
json_select dsl

View File

@@ -10,10 +10,13 @@ uci_apply_defaults() {
cd /etc/uci-defaults || return 0
files="$(ls)"
[ -z "$files" ] && return 0
applied=""
for file in $files; do
( . "./$(basename $file)" ) && rm -f "$file"
( . "./$(basename $file)" ) && applied="$applied $file"
done
uci commit
sync
rm -f $applied
}
boot() {

View File

@@ -1,61 +1,39 @@
unset FAILSAFE
[ -e /tmp/.failsafe ] && export FAILSAFE=1
[ -f /etc/banner ] && cat /etc/banner
[ -n "$FAILSAFE" ] && cat /etc/banner.failsafe
[ -n "$FAILSAFE" ] && [ -f /etc/banner.failsafe ] && cat /etc/banner.failsafe
grep -Fsq '/ overlay ro,' /proc/mounts && {
echo 'Your JFFS2-partition seems full and overlayfs is mounted read-only.'
echo 'Please try to remove files from /overlay/upper/... and reboot!'
}
if grep -Fsq '/ overlay ro,' /proc/mounts ; then
cat << EOF
=== WARNING! ======================================
Your JFFS2-partition seems full and overlayfs is
mounted as READ-ONLY!
Please try to remove files from /overlay/upper/...
and reboot!
---------------------------------------------------
EOF
fi
export PATH="%PATH%"
export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
export HOME=${HOME:-/root}
HOME=$(grep -E "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
HOME=${HOME:-/root}
export HOME
export PS1='\u@\h:\w\$ '
export ENV=/etc/shinit
case "$TERM" in
xterm*|rxvt*)
export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
;;
export PS1='\[\e]0;\u@\h: \w\a\]'"$PS1"
;;
esac
[ -n "$FAILSAFE" ] || {
for FILE in /etc/profile.d/*.sh; do
[ -e "$FILE" ] && . "$FILE"
if [ -z "$FAILSAFE" ] ; then
for FILE in /etc/profile.d/*.sh ; do
[ -f "${FILE%.sh}.hush" ] && continue
[ -f "$FILE" ] && . "$FILE"
done
unset FILE
}
if ( grep -qs '^root::' /etc/shadow && \
[ -z "$FAILSAFE" ] )
then
cat << EOF
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
EOF
fi
if [ -x /usr/bin/apk ]; then
cat << EOF
OpenWrt recently switched to the "apk" package manager!
OPKG Command APK Equivalent Description
------------------------------------------------------------------
opkg install <pkg> apk add <pkg> Install a package
opkg remove <pkg> apk del <pkg> Remove a package
opkg upgrade apk upgrade Upgrade all packages
opkg files <pkg> apk info -L <pkg> List package contents
opkg list-installed apk info List installed packages
opkg update apk update Update package lists
opkg search <pkg> apk search <pkg> Search for packages
------------------------------------------------------------------
For more https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet
EOF
fi

View File

@@ -0,0 +1,11 @@
if grep -Esq '^root::' /etc/shadow ; then
cat << EOF
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
EOF
fi

View File

@@ -0,0 +1,21 @@
if [ -x /usr/bin/apk ] ; then
cat << EOF
OpenWrt recently switched to the "apk" package manager!
OPKG Command APK Equivalent Description
------------------------------------------------------------------
opkg install <pkg> apk add <pkg> Install a package
opkg remove <pkg> apk del <pkg> Remove a package
opkg upgrade apk upgrade Upgrade all packages
opkg files <pkg> apk info -L <pkg> List package contents
opkg list-installed apk info List installed packages
opkg update apk update Update package lists
opkg search <pkg> apk search <pkg> Search for packages
------------------------------------------------------------------
For more information visit:
https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet
EOF
fi

View File

@@ -0,0 +1,9 @@
[ "$(uci -q get network.globals.dhcp_default_duid || echo "auto")" != "auto" ] && exit 0
uci -q batch <<-EOF >/dev/null
# DUID-UUID - RFC6355
set network.globals.dhcp_default_duid="$(printf '%s%s' '0004' $(cat /proc/sys/kernel/random/uuid | sed -e 's/-//g'))"
commit network
EOF
exit 0

View File

@@ -0,0 +1,6 @@
zonename="$(uci -q get system.@system[0].zonename)"
case "$zonename" in
*[[:space:]]*) uci set system.@system[0].zonename="${zonename// /_}" ;;
esac
exit 0

View File

@@ -382,7 +382,7 @@ default_postinst() {
uci commit
fi
rm -f /tmp/luci-indexcache
rm -f /tmp/luci-indexcache.*
fi
if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then

View File

@@ -24,6 +24,17 @@ __network_ifstatus() {
eval "$__tmp"
}
# determine the IAID of the given logical interface
# 1: destination variable
# 2: interface
network_generate_iface_iaid() {
local __iaid
__iaid=$(printf '%s' "$2" | md5sum | cut -c 1-8)
export "$1=$__iaid"
}
# determine first IPv4 address of given logical interface
# 1: destination variable
# 2: interface

View File

@@ -771,6 +771,27 @@ ucidef_add_wlan() {
ucidef_wlan_idx="$((ucidef_wlan_idx + 1))"
}
ucidef_set_interface_netdev_range() {
local interface="$1"
local base_netdev="$2"
local start="$3"
local stop="$4"
local netdevs
local i
if [ "$stop" -ge "$start" ]; then
i="$start"
netdevs="$base_netdev$i"
while [ "$i" -lt "$stop" ]; do
i=$((i + 1))
netdevs="$netdevs $base_netdev$i"
done
ucidef_set_interface "$interface" device "$netdevs"
fi
}
board_config_update() {
json_init
[ -f ${CFG} ] && json_load "$(cat ${CFG})"

View File

@@ -5,6 +5,14 @@
# See /LICENSE for more information.
#
config EXTRA_IMAGE_NAME
string
prompt "Extra image filename" if IMAGEOPT
default ""
help
Add this to the output image filenames, to distinguish between
different builds for the same hardware type.
config TARGET_DEFAULT_LAN_IP_FROM_PREINIT
bool "Use preinit IP configuration as default LAN IP" if IMAGEOPT
default n
@@ -190,7 +198,7 @@ if VERSIONOPT
config VERSION_REPO
string
prompt "Release repository"
default "https://downloads.openwrt.org/snapshots"
default "https://downloads.openwrt.org/releases/25.12-SNAPSHOT"
help
This is the repository address embedded in the image, it defaults
to the trunk snapshot repo; the url may contain the following placeholders:

View File

@@ -29,6 +29,8 @@ define Trusted-Firmware-A/Default
HIDDEN:=y
BOOT_DEVICE:=
DDR3_FLYBY:=
DDR3_FREQ_1866:=
DDR4_4BG_MODE:=
DDR_TYPE:=
NAND_TYPE:=
BOARD_QFN:=
@@ -37,6 +39,7 @@ define Trusted-Firmware-A/Default
USE_UBI:=
FIP_OFFSET:=
FIP_SIZE:=
SPIM_CTRL:=
endef
define Trusted-Firmware-A/mt7622-nor-1ddr
@@ -137,6 +140,14 @@ define Trusted-Firmware-A/mt7622-sdmmc-2ddr
DDR3_FLYBY:=1
endef
define Trusted-Firmware-A/mt7981-nor-ddr4
NAME:=MediaTek MT7981 (SPI-NOR, DDR4)
BOOT_DEVICE:=nor
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr4
endef
define Trusted-Firmware-A/mt7981-ram-ddr4
NAME:=MediaTek MT7981 (RAM, DDR4)
BOOT_DEVICE:=ram
@@ -156,6 +167,14 @@ define Trusted-Firmware-A/mt7981-emmc-ddr4
DDR_TYPE:=ddr4
endef
define Trusted-Firmware-A/mt7981-sdmmc-ddr4
NAME:=MediaTek MT7981 (SD card, DDR4)
BOOT_DEVICE:=sdmmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr4
endef
define Trusted-Firmware-A/mt7981-spim-nand-ddr4
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
BOOT_DEVICE:=spim-nand
@@ -178,19 +197,12 @@ define Trusted-Firmware-A/mt7981-ram-ddr3
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr3
DDR3_FREQ_1866:=1
RAM_BOOT_UART_DL:=1
HIDDEN:=
DEFAULT:=TARGET_mediatek_filogic
endef
define Trusted-Firmware-A/mt7981-nor-ddr4
NAME:=MediaTek MT7981 (SPI-NOR, DDR4)
BOOT_DEVICE:=nor
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr4
endef
define Trusted-Firmware-A/mt7981-emmc-ddr3
NAME:=MediaTek MT7981 (eMMC, DDR3)
BOOT_DEVICE:=emmc
@@ -199,6 +211,15 @@ define Trusted-Firmware-A/mt7981-emmc-ddr3
DDR_TYPE:=ddr3
endef
define Trusted-Firmware-A/mt7981-emmc-ddr3-1866mhz
NAME:=MediaTek MT7981 (eMMC, DDR3 1866 MHz)
BOOT_DEVICE:=emmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr3
DDR3_FREQ_1866:=1
endef
define Trusted-Firmware-A/mt7981-sdmmc-ddr3
NAME:=MediaTek MT7981 (SD card, DDR3)
BOOT_DEVICE:=sdmmc
@@ -223,8 +244,26 @@ define Trusted-Firmware-A/mt7981-spim-nand-ddr3
DDR_TYPE:=ddr3
endef
define Trusted-Firmware-A/mt7981-cudy-tr3000-v1
NAME:=Cudy TR3000 v1 (SPI-NAND via SPIM, DDR3)
define Trusted-Firmware-A/mt7981-spim-nand-ddr3-1866mhz
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR3 1866 MHz)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr3
DDR3_FREQ_1866:=1
endef
define Trusted-Firmware-A/mt7981-spim-nand-ubi-ddr4
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr4
USE_UBI:=1
endef
define Trusted-Firmware-A/mt7981-cudy-ddr3
NAME:=Cudy (SPI-NAND via SPIM, DDR3)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
@@ -244,15 +283,6 @@ define Trusted-Firmware-A/mt7986-ram-ddr4
DEFAULT:=TARGET_mediatek_filogic
endef
define Trusted-Firmware-A/mt7981-spim-nand-ubi-ddr4
NAME:=MediaTek MT7981 (SPI-NAND via SPIM, DDR4)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7981
DDR_TYPE:=ddr4
USE_UBI:=1
endef
define Trusted-Firmware-A/mt7986-nor-ddr4
NAME:=MediaTek MT7986 (SPI-NOR, DDR4)
BOOT_DEVICE:=nor
@@ -373,6 +403,79 @@ define Trusted-Firmware-A/mt7986-spim-nand-ubi-ddr3
USE_UBI:=1
endef
define Trusted-Firmware-A/mt7987-emmc-comb
NAME:=MediaTek MT7987 (eMMC)
BOOT_DEVICE:=emmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
endef
define Trusted-Firmware-A/mt7987-emmc-ddr4-4bg
NAME:=MediaTek MT7987 (eMMC, DDR4 4GB)
BOOT_DEVICE:=emmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
DDR4_4BG_MODE:=1
endef
define Trusted-Firmware-A/mt7987-nor-comb
NAME:=MediaTek MT7987 (NOR)
BOOT_DEVICE:=nor
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
endef
define Trusted-Firmware-A/mt7987-sdmmc-comb
NAME:=MediaTek MT7987 (SD card)
BOOT_DEVICE:=sdmmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
endef
define Trusted-Firmware-A/mt7987-sdmmc-ddr4-4bg
NAME:=MediaTek MT7987 (SD card, DDR4 4GB)
BOOT_DEVICE:=sdmmc
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
DDR4_4BG_MODE:=1
endef
define Trusted-Firmware-A/mt7987-spim-nand0
NAME:=MediaTek MT7987 (SPI-NAND via SPIM)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
SPIM_CTRL:=0
endef
define Trusted-Firmware-A/mt7987-spim-nand0-ubi-comb
NAME:=MediaTek MT7987 (SPI-NAND via SPIM, UBI)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
USE_UBI:=1
SPIM_CTRL:=0
endef
define Trusted-Firmware-A/mt7987-spim-nand2-ubi-comb
NAME:=MediaTek MT7987 (SPI-NAND via SPIM, UBI)
BOOT_DEVICE:=spim-nand
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
USE_UBI:=1
SPIM_CTRL:=2
endef
define Trusted-Firmware-A/mt7987-ram-comb
NAME:=MediaTek MT7987 (RAM)
BOOT_DEVICE:=ram
BUILD_SUBTARGET:=filogic
PLAT:=mt7987
RAM_BOOT_UART_DL:=1
HIDDEN:=
DEFAULT:=TARGET_mediatek_filogic
endef
define Trusted-Firmware-A/mt7988-nor-ddr3
NAME:=MediaTek MT7988 (SPI-NOR, DDR3)
BOOT_DEVICE:=nor
@@ -557,16 +660,19 @@ TFA_TARGETS:= \
mt7622-sdmmc-2ddr \
mt7981-ram-ddr3 \
mt7981-emmc-ddr3 \
mt7981-emmc-ddr3-1866mhz \
mt7981-nor-ddr3 \
mt7981-nor-ddr4 \
mt7981-sdmmc-ddr3 \
mt7981-snand-ddr3 \
mt7981-spim-nand-ddr3 \
mt7981-spim-nand-ddr3-1866mhz \
mt7981-spim-nand-ubi-ddr4 \
mt7981-ram-ddr4 \
mt7981-emmc-ddr4 \
mt7981-sdmmc-ddr4 \
mt7981-spim-nand-ddr4 \
mt7981-cudy-tr3000-v1 \
mt7981-cudy-ddr3 \
mt7986-ram-ddr3 \
mt7986-emmc-ddr3 \
mt7986-nor-ddr3 \
@@ -582,6 +688,15 @@ TFA_TARGETS:= \
mt7986-spim-nand-ddr4 \
mt7986-spim-nand-ubi-ddr4 \
mt7986-spim-nand-4k-ddr4 \
mt7987-emmc-comb \
mt7987-emmc-ddr4-4bg \
mt7987-nor-comb \
mt7987-sdmmc-comb \
mt7987-sdmmc-ddr4-4bg \
mt7987-spim-nand0 \
mt7987-spim-nand0-ubi-comb \
mt7987-spim-nand2-ubi-comb \
mt7987-ram-comb \
mt7988-emmc-ddr3 \
mt7988-nor-ddr3 \
mt7988-sdmmc-ddr3 \
@@ -611,6 +726,8 @@ TFA_MAKE_FLAGS += \
$(if $(NAND_TYPE),NAND_TYPE=$(NAND_TYPE)) \
HAVE_DRAM_OBJ_FILE=yes \
$(if $(DDR3_FLYBY),DDR3_FLYBY=1) \
$(if $(DDR3_FREQ_1866),DDR3_FREQ_1866=1) \
$(if $(DDR4_4BG_MODE),DDR4_4BG_MODE=1) \
$(if $(DRAM_USE_COMB),DRAM_USE_COMB=1) \
$(if $(RAM_BOOT_UART_DL),RAM_BOOT_UART_DL=1) \
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7622,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x80000)) \
@@ -618,6 +735,7 @@ TFA_MAKE_FLAGS += \
$(if $(USE_UBI),UBI=1 $(if $(findstring mt7986,$(PLAT)),OVERRIDE_UBI_START_ADDR=0x200000)) \
$(if $(FIP_OFFSET),OVERRIDE_FIP_BASE=$(FIP_OFFSET)) \
$(if $(FIP_SIZE),OVERRIDE_FIP_SIZE=$(FIP_SIZE)) \
$(if $(SPIM_CTRL),SPIM_CTRL=$(SPIM_CTRL)) \
$(if $(RAM_BOOT_UART_DL),bl2,all)
define Package/trusted-firmware-a-ram/install
@@ -630,6 +748,7 @@ Package/trusted-firmware-a-mt7981-ram-ddr3/install = $(Package/trusted-firmware-
Package/trusted-firmware-a-mt7981-ram-ddr4/install = $(Package/trusted-firmware-a-ram/install)
Package/trusted-firmware-a-mt7986-ram-ddr3/install = $(Package/trusted-firmware-a-ram/install)
Package/trusted-firmware-a-mt7986-ram-ddr4/install = $(Package/trusted-firmware-a-ram/install)
Package/trusted-firmware-a-mt7987-ram-comb/install = $(Package/trusted-firmware-a-ram/install)
Package/trusted-firmware-a-mt7988-ram-comb/install = $(Package/trusted-firmware-a-ram/install)
Package/trusted-firmware-a-mt7988-ram-ddr4/install = $(Package/trusted-firmware-a-ram/install)

View File

@@ -0,0 +1,41 @@
From fd057aba83aea8458986e11c81dbb75a69468b84 Mon Sep 17 00:00:00 2001
From: Mikhail Zhilkin <csharper2005@gmail.com>
Date: Wed, 13 Aug 2025 22:46:54 +0300
Subject: arm-trusted-firmware-mediatek: add FudanMicro manufacturer
Add FudanMicro manufacturer.
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
---
--- a/plat/mediatek/apsoc_common/drivers/spi_nand/mtk_spi_nand.c
+++ b/plat/mediatek/apsoc_common/drivers/spi_nand/mtk_spi_nand.c
@@ -21,6 +21,7 @@
#define SPI_NAND_MAX_ID_LEN 4U
#define DELAY_US_400MS 400000U
#define ETRON_ID 0xD5U
+#define FUDAN_ID 0xA1U
#define GIGADEVICE_ID 0xC8U
#define MACRONIX_ID 0xC2U
#define MICRON_ID 0x2CU
@@ -146,7 +147,8 @@ static int spi_nand_quad_enable(uint8_t
if (manufacturer_id != MACRONIX_ID &&
manufacturer_id != GIGADEVICE_ID &&
manufacturer_id != ETRON_ID &&
- manufacturer_id != FORESEE_ID) {
+ manufacturer_id != FORESEE_ID &&
+ manufacturer_id != FUDAN_ID) {
return 0;
}
@@ -543,6 +545,10 @@ static int spi_nand_check_pp(struct para
INFO("PP COPY %d CRC read: 0x%x, compute: 0x%x\n",
i, crc, crc_compute);
+ // FUDAN integrity CRC (bytes 254-255) is reversed
+ if (crc != crc_compute)
+ crc = htobe16(pp->integrity_crc);
+
if (crc != crc_compute) {
ret = -EBADMSG;
continue;

View File

@@ -0,0 +1,128 @@
From e2e43103c00b5f7ccedbdbdece0f622cb420b4a5 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Fri, 3 Oct 2025 12:53:10 +0100
Subject: [PATCH] mt7987: make SPI controller configurable
Allow selecting the SPI controller used for SPIM-NAND or SPI-NOR boot
devices (either SPI0 or SPI2).
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
plat/mediatek/apsoc_common/Config.in | 1 +
plat/mediatek/mt7987/Config.in | 29 +++++++++++++++++++++
plat/mediatek/mt7987/bl2/bl2.mk | 12 +++++++++
plat/mediatek/mt7987/bl2/bl2_dev_spi_nand.c | 10 ++++++-
plat/mediatek/mt7987/platform.mk | 4 +--
5 files changed, 53 insertions(+), 3 deletions(-)
create mode 100644 plat/mediatek/mt7987/Config.in
--- a/plat/mediatek/apsoc_common/Config.in
+++ b/plat/mediatek/apsoc_common/Config.in
@@ -783,6 +783,7 @@ config ENABLE_BL31_RUNTIME_LOG
default 1
depends on _ENABLE_BL31_RUNTIME_LOG
+source "plat/mediatek/mt7987/Config.in"
source "plat/mediatek/mt7988/Config.in"
endmenu # Platform configurations
--- /dev/null
+++ b/plat/mediatek/mt7987/Config.in
@@ -0,0 +1,29 @@
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Copyright (c) 2025 Daniel Golle <daniel@makrotopia.org>
+#
+# MT7987 platform-specific configurations
+#
+
+if _PLAT_MT7987
+
+choice
+ prompt "SPI controller"
+ depends on (_BOOT_DEVICE_SPIM_NAND || _BOOT_DEVICE_SPI_NOR)
+ default _SPIM_CTRL_0 if _BOOT_DEVICE_SPIM_NAND
+ default _SPIM_CTRL_2 if _BOOT_DEVICE_SPI_NOR
+
+ config _SPIM_CTRL_0
+ bool "0"
+
+ config _SPIM_CTRL_2
+ bool "2"
+
+endchoice
+
+config SPIM_CTRL
+ int
+ default 0 if _SPIM_CTRL_0
+ default 2 if _SPIM_CTRL_2
+
+endif # _PLAT_MT7987
--- a/plat/mediatek/mt7987/bl2/bl2.mk
+++ b/plat/mediatek/mt7987/bl2/bl2.mk
@@ -91,7 +91,11 @@ endif # END OF BOOT_DEVICE = ram
ifeq ($(BOOT_DEVICE),nor)
$(eval $(call BL2_BOOT_NOR))
BL2_SOURCES += $(MTK_PLAT_SOC)/bl2/bl2_dev_spi_nor.c
+ifeq ($(SPIM_CTRL),0)
+DTS_NAME := mt7987-spi0
+else
DTS_NAME := mt7987-spi2
+endif
endif # END OF BOOTDEVICE = nor
ifeq ($(BOOT_DEVICE),emmc)
@@ -112,10 +116,18 @@ ifeq ($(BOOT_DEVICE),spim-nand)
$(eval $(call BL2_BOOT_SPI_NAND,0,0))
BL2_SOURCES += $(MTK_PLAT_SOC)/bl2/bl2_dev_spi_nand.c
NAND_TYPE ?= spim:2k+64
+ifeq ($(SPIM_CTRL),2)
+DTS_NAME := mt7987-spi2
+else
DTS_NAME := mt7987-spi0
+endif
$(eval $(call BL2_BOOT_NAND_TYPE_CHECK,$(NAND_TYPE),spim:2k+64 spim:2k+128 spim:4k+256))
endif # END OF BOOTDEVICE = spim-nand
+ifneq ($(SPIM_CTRL),)
+BL2_CPPFLAGS += -DSPIM_CTRL=$(SPIM_CTRL)
+endif
+
ifeq ($(BROM_HEADER_TYPE),)
$(error BOOT_DEVICE has invalid value. Please re-check.)
endif
--- a/plat/mediatek/mt7987/bl2/bl2_dev_spi_nand.c
+++ b/plat/mediatek/mt7987/bl2/bl2_dev_spi_nand.c
@@ -12,10 +12,18 @@
#define MTK_QSPI_SRC_CLK CB_MPLL_D2
+#if SPIM_CTRL == 0
+#define SELECTED_SPIM SPIM0
+#elif SPIM_CTRL == 2
+#define SELECTED_SPIM SPIM2
+#else
+#error "Invalid SPI controller selection"
+#endif
+
uint32_t mtk_plat_get_qspi_src_clk(void)
{
/* config GPIO pinmux to spi mode */
- mtk_spi_gpio_init(SPIM0);
+ mtk_spi_gpio_init(SELECTED_SPIM);
/* select 208M clk */
mtk_spi_source_clock_select(MTK_QSPI_SRC_CLK);
--- a/plat/mediatek/mt7987/platform.mk
+++ b/plat/mediatek/mt7987/platform.mk
@@ -56,8 +56,8 @@ include make_helpers/dep.mk
$(call GEN_DEP_RULES,bl2,emicfg bl2_boot_ram bl2_boot_nand_nmbm bl2_dev_mmc bl2_plat_init bl2_plat_setup mt7987_gpio dtb)
$(call MAKE_DEP,bl2,emicfg,DDR4_4BG_MODE DRAM_DEBUG_LOG DDR3_FREQ_2133 DDR3_FREQ_1866 DDR4_FREQ_3200 DDR4_FREQ_2666)
-$(call MAKE_DEP,bl2,bl2_plat_init,BL2_COMPRESS)
-$(call MAKE_DEP,bl2,bl2_plat_setup,BOOT_DEVICE TRUSTED_BOARD_BOOT BL32_TZRAM_BASE BL32_TZRAM_SIZE BL32_LOAD_OFFSET)
+$(call MAKE_DEP,bl2,bl2_plat_init,BL2_COMPRESS SPIM_CTRL)
+$(call MAKE_DEP,bl2,bl2_plat_setup,BOOT_DEVICE TRUSTED_BOARD_BOOT BL32_TZRAM_BASE BL32_TZRAM_SIZE BL32_LOAD_OFFSET SPIM_CTRL)
$(call MAKE_DEP,bl2,bl2_dev_mmc,BOOT_DEVICE)
$(call MAKE_DEP,bl2,bl2_boot_ram,RAM_BOOT_DEBUGGER_HOOK RAM_BOOT_UART_DL)
$(call MAKE_DEP,bl2,bl2_boot_nand_nmbm,NMBM_MAX_RATIO NMBM_MAX_RESERVED_BLOCKS NMBM_DEFAULT_LOG_LEVEL)

View File

@@ -0,0 +1,24 @@
From 0a09912eb336bee788443b919ea5b99b195f5a91 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sat, 4 Oct 2025 22:13:49 +0100
Subject: [PATCH] hack: mt7987: mmc: use 4-bit bus-width for eMMC
The BananaPi R4 Lite has broken DAT5 signal of the MMC bus, which
results in 8-bit buswidth not working well for the eMMC.
Reduce to 4-bit buswidth fixes it (and makes all other boards with
eMMC a tiny bit slower to boot, but it's in the milliseconds).
---
plat/mediatek/mt7987/bl2/bl2_dev_mmc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/plat/mediatek/mt7987/bl2/bl2_dev_mmc.c
+++ b/plat/mediatek/mt7987/bl2/bl2_dev_mmc.c
@@ -74,7 +74,7 @@ static const struct mt7987_msdc_conf {
{
.base = MSDC0_BASE,
.top_base = MSDC0_TOP_BASE,
- .bus_width = MMC_BUS_WIDTH_8,
+ .bus_width = MMC_BUS_WIDTH_4,
.type = MMC_IS_EMMC,
.src_clk = 200000000,
.dev_comp = &mt7987_msdc_compat,

View File

@@ -0,0 +1,27 @@
From 6725bb3c2aa9330f37a591e1e539badf67021b47 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sat, 4 Oct 2025 23:59:54 +0100
Subject: [PATCH] hack: mt7987: bl2: move FIP offset to 0x100000
There is no use in allocating more than 2MB to the factory partition.
After all, even for WiFi 7 tri-band devices the calibration data is
still in the kilobytes range.
Move FIP offset to 0x100000 to not waste so much space on small NOR
flash.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
plat/mediatek/mt7987/bl2/bl2_dev_spi_nor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/plat/mediatek/mt7987/bl2/bl2_dev_spi_nor.c
+++ b/plat/mediatek/mt7987/bl2/bl2_dev_spi_nor.c
@@ -7,7 +7,7 @@
#include <stdint.h>
#include <boot_spi.h>
-#define FIP_BASE 0x250000
+#define FIP_BASE 0x100000
#define FIP_SIZE 0x80000
#define MTK_QSPI_SRC_CLK CB_MPLL_D2

View File

@@ -0,0 +1,78 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=arm-trusted-firmware-microchipsw
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/microchip-ung/arm-trusted-firmware.git
PKG_SOURCE_DATE:=2026-01-07
PKG_SOURCE_VERSION:=7696c9aaaae7c677f4c373a61a1289cba7f824aa
PKG_MIRROR_HASH:=331548d7c73896bd5e4438c0ec9c71bbe58d3bf9a29350496ad94c382e922b9c
PKG_BUILD_DEPENDS:=ruby/host
PKG_MAINTAINER:=Robert Marko <robert.marko@sartura.hr>
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/trusted-firmware-a.mk
include $(INCLUDE_DIR)/package.mk
define Trusted-Firmware-A/Default
BUILD_TARGET:=microchipsw
TFA_IMAGE:=fip.bin fwu_fip.bin fwu.html
endef
define Trusted-Firmware-A/ev23x71a
NAME:=Microchip EV23X71A
BUILD_SUBTARGET:=lan969x
BUILD_DEVICES:=microchip_ev23x71a
PLAT:=lan969x_a0
DEPENDS:=+u-boot-ev23x71a
endef
define Trusted-Firmware-A/tactical-1000
NAME:=Novarq Tactical 1000
BUILD_SUBTARGET:=lan969x
BUILD_DEVICES:=novarq_tactical-1000
PLAT:=novarq_tactical_1000_v3
DEPENDS:=+u-boot-tactical-1000
endef
TFA_TARGETS:= \
ev23x71a \
tactical-1000
MBEDTLS_NAME:=mbedtls
MBEDTLS_RELEASE:=2.28.10
MBEDTLS_SOURCE:=$(MBEDTLS_NAME)-$(MBEDTLS_RELEASE).tar.zst
define Download/mbedtls
FILE:=$(MBEDTLS_SOURCE)
PROTO:=git
URL:=https://github.com/Mbed-TLS/mbedtls.git
SOURCE_VERSION:=2fc8413bfcb51354c8e679141b17b3f1a5942561
MIRROR_HASH:=40b94a76572ad1ca89738929ab81d6024f678f22691eb3bd633c076ac18a334a
SUBDIR:=$(MBEDTLS_NAME)
endef
define Build/Prepare
# Download mbedtls
$(eval $(call Download,mbedtls))
$(call Build/Prepare/Default,)
$(TAR) -C $(PKG_BUILD_DIR) -xf $(DL_DIR)/$(MBEDTLS_SOURCE)
endef
TFA_MAKE_FLAGS += \
MBEDTLS_DIR=$(PKG_BUILD_DIR)/$(MBEDTLS_NAME) \
BL33=$(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-u-boot.bin \
KEY_ALG=ecdsa GENERATE_COT=1 TRUSTED_BOARD_BOOT=1 \
all fip fwu_fip
define Package/trusted-firmware-a/install
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/$(PLAT)/release/fip.bin $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-fip.bin
$(CP) $(patsubst %,$(PKG_BUILD_DIR)/build/$(PLAT)/release/%,$(TFA_IMAGE)) $(1)/
endef
$(eval $(call BuildPackage/Trusted-Firmware-A))

View File

@@ -0,0 +1,171 @@
From 190202583edb9dcab5ca49638169d08a332f0fdf Mon Sep 17 00:00:00 2001
From: Robert Marko <robert.marko@sartura.hr>
Date: Sun, 2 Nov 2025 16:57:45 +0100
Subject: [PATCH] microchip: lan969x: add Novarq Tactical 1000 v3
Add support for Novarq Tactical 1000 v3 board as a separate platform since
it uses 2GB of RAM and requires a different RAM configuration.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
.../fdts/lan969x-tactical-1000-v3-ddr.dtsi | 90 +++++++++++++++++++
.../novarq_tactical_1000_v3_tb_fw_config.dts | 30 +++++++
.../novarq_tactical_1000_v3/platform.mk | 12 +++
scripts/fwu/fwu.js | 2 +-
4 files changed, 133 insertions(+), 1 deletion(-)
create mode 100644 plat/microchip/lan969x/fdts/lan969x-tactical-1000-v3-ddr.dtsi
create mode 100644 plat/microchip/lan969x/novarq_tactical_1000_v3/fdts/novarq_tactical_1000_v3_tb_fw_config.dts
create mode 100644 plat/microchip/lan969x/novarq_tactical_1000_v3/platform.mk
--- /dev/null
+++ b/plat/microchip/lan969x/fdts/lan969x-tactical-1000-v3-ddr.dtsi
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2022 Microchip Technology Inc. and its subsidiaries.
+ *
+ */
+
+&ddr {
+ microchip,mem-name = "lan969x_tactical_1000_2gb 2025-11-02-13:03:23 7391dfb-dirty";
+ microchip,mem-speed = <2400>;
+ microchip,mem-size = <0x80000000>;
+ microchip,mem-bus-width = <16>;
+
+ microchip,main-reg = <
+ 0x00001091 /* crcparctl1 */
+ 0x00000001 /* dbictl */
+ 0x00000040 /* dfimisc */
+ 0x0391820f /* dfitmg0 */
+ 0x00040201 /* dfitmg1 */
+ 0x40400003 /* dfiupd0 */
+ 0x004000ff /* dfiupd1 */
+ 0x003f7f40 /* ecccfg0 */
+ 0x00020248 /* init0 */
+ 0x00e80000 /* init1 */
+ 0x0c340101 /* init3 */
+ 0x10180200 /* init4 */
+ 0x00110000 /* init5 */
+ 0x00000402 /* init6 */
+ 0x00000c19 /* init7 */
+ 0x81040010 /* mstr */
+ 0x00000000 /* pccfg */
+ 0x00000000 /* pwrctl */
+ 0x00210020 /* rfshctl0 */
+ 0x00000000 /* rfshctl3 */
+ >;
+
+ microchip,timing-reg = <
+ 0x17131413 /* dramtmg0 */
+ 0x0007051b /* dramtmg1 */
+ 0x1a000010 /* dramtmg12 */
+ 0x090b0512 /* dramtmg2 */
+ 0x0000400c /* dramtmg3 */
+ 0x08040409 /* dramtmg4 */
+ 0x07070404 /* dramtmg5 */
+ 0x07060c0b /* dramtmg8 */
+ 0x0003040d /* dramtmg9 */
+ 0x07000610 /* odtcfg */
+ 0x0049014b /* rfshtmg */
+ >;
+
+ microchip,mapping-reg = <
+ 0x0000001f /* addrmap0 */
+ 0x003f0909 /* addrmap1 */
+ 0x00000700 /* addrmap2 */
+ 0x00000000 /* addrmap3 */
+ 0x00001f1f /* addrmap4 */
+ 0x07070707 /* addrmap5 */
+ 0x07070707 /* addrmap6 */
+ 0x00000f07 /* addrmap7 */
+ 0x00003f01 /* addrmap8 */
+ >;
+
+ microchip,phy-reg = <
+ 0x0000040c /* dcr */
+ 0x0064401b /* dsgcr */
+ 0x8000b0cf /* dtcr0 */
+ 0x00010a37 /* dtcr1 */
+ 0x00c01884 /* dxccr */
+ 0x000010ba /* pgcr2 */
+ 0x00000000 /* schcr1 */
+ 0x00079900 /* zq0pr */
+ 0x10077900 /* zq1pr */
+ 0x00000000 /* zq2pr */
+ 0x00058f00 /* zqcr */
+ >;
+
+ microchip,phy_timing-reg = <
+ 0x0827100a /* dtpr0 */
+ 0x28250018 /* dtpr1 */
+ 0x000702a1 /* dtpr2 */
+ 0x03000101 /* dtpr3 */
+ 0x02950808 /* dtpr4 */
+ 0x00361009 /* dtpr5 */
+ 0x4ae25710 /* ptr0 */
+ 0x74f4950e /* ptr1 */
+ 0x00083def /* ptr2 */
+ 0x2a192000 /* ptr3 */
+ 0x1003a000 /* ptr4 */
+ >;
+
+};
--- /dev/null
+++ b/plat/microchip/lan969x/novarq_tactical_1000_v3/fdts/novarq_tactical_1000_v3_tb_fw_config.dts
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2022, Microchip Technology Inc. and its subsidiaries.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/dts-v1/;
+
+#include "lan969x.dtsi"
+#include "lan969x-tactical-1000-v3-ddr.dtsi"
+
+&emmc_clk {
+ clock-frequency = <100000000>;
+};
+
+&sdmmc0 {
+ status = "okay";
+ bus-width = <8>;
+};
+
+&qspi0 {
+ status = "okay";
+ spi-flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <100000000>;
+ spi-tx-bus-width = <4>;
+ spi-rx-bus-width = <4>;
+ };
+};
--- /dev/null
+++ b/plat/microchip/lan969x/novarq_tactical_1000_v3/platform.mk
@@ -0,0 +1,12 @@
+#
+# Copyright (c) 2021, Microchip Technology Inc. and its subsidiaries.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+include plat/microchip/lan969x/common/common.mk
+
+# This is used in lan969x code
+$(eval $(call add_define,LAN969X_ASIC))
+# This is used in common drivers
+$(eval $(call add_define,LAN966X_ASIC))
--- a/scripts/fwu/fwu.js
+++ b/scripts/fwu/fwu.js
@@ -91,7 +91,7 @@ const platforms = [
"ddr_diag": ddr_diag_regs_lan969x,
"ddr_regs": ddr_regs_lan969x,
"ddr_speed": lan969x_speeds,
- "bl2u_compat": ["lan969x_a0", "lan969x_svb"],
+ "bl2u_compat": ["lan969x_a0", "lan969x_svb", "novarq_tactical_1000_v3"],
},
];

View File

@@ -0,0 +1,95 @@
From 40166fd8d88f33c621d3cca0b936f31816f3fe2e Mon Sep 17 00:00:00 2001
From: Robert Marko <robert.marko@sartura.hr>
Date: Mon, 12 Jan 2026 14:40:23 +0100
Subject: [PATCH] cert_create: add LibreSSL 3.9+ compatibility
LibreSSL 3.9+ has dropped the whole support for X509V3 extensions.
Generated by Gemini 3 Pro.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
tools/cert_create/src/ext.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
--- a/tools/cert_create/src/ext.c
+++ b/tools/cert_create/src/ext.c
@@ -51,15 +51,18 @@ int ext_init(void)
{
cmd_opt_t cmd_opt;
ext_t *ext;
+#if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x40200000L
X509V3_EXT_METHOD *m;
- int nid, ret;
+ int ret, nid;
+#endif
unsigned int i;
extensions = malloc((num_def_extensions * sizeof(def_extensions[0]))
#ifdef PDEF_EXTS
+ (num_pdef_extensions * sizeof(pdef_extensions[0]))
#endif
- );
+ );
+
if (extensions == NULL) {
ERROR("%s:%d Failed to allocate memory.\n", __func__, __LINE__);
return 1;
@@ -69,7 +72,7 @@ int ext_init(void)
(num_def_extensions * sizeof(def_extensions[0])));
#ifdef PDEF_EXTS
memcpy(&extensions[num_def_extensions], &pdef_extensions[0],
- (num_pdef_extensions * sizeof(pdef_extensions[0])));
+ (num_pdef_extensions * sizeof(pdef_extensions[0])));
num_extensions = num_def_extensions + num_pdef_extensions;
#else
num_extensions = num_def_extensions;
@@ -86,11 +89,15 @@ int ext_init(void)
cmd_opt.help_msg = ext->help_msg;
cmd_opt_add(&cmd_opt);
}
+
/* Register the extension OID in OpenSSL */
if (ext->oid == NULL) {
continue;
}
+
+#if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x40200000L
nid = OBJ_create(ext->oid, ext->sn, ext->ln);
+
if (ext->alias) {
X509V3_EXT_add_alias(nid, ext->alias);
} else {
@@ -117,7 +124,16 @@ int ext_init(void)
return 1;
}
}
+#else
+ /*
+ * LibreSSL 4.2.0+ removed X509V3_EXT_add/alias.
+ * We still register the OID, but ignore the returned NID
+ * as we skip method registration.
+ */
+ OBJ_create(ext->oid, ext->sn, ext->ln);
+#endif
}
+
return 0;
}
@@ -323,12 +339,14 @@ void ext_cleanup(void)
for (i = 0; i < num_extensions; i++) {
if (extensions[i].arg != NULL) {
void *ptr = (void *)extensions[i].arg;
-
extensions[i].arg = NULL;
free(ptr);
}
}
free(extensions);
+
+#if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x40200000L
X509V3_EXT_cleanup();
+#endif
}

View File

@@ -0,0 +1,36 @@
From 11ff8b5e67830d5a09f39e8c1f000b0ddcf8e88f Mon Sep 17 00:00:00 2001
From: Robert Marko <robert.marko@sartura.hr>
Date: Mon, 12 Jan 2026 15:16:07 +0100
Subject: [PATCH] cert_create: pass pthread in LDFLAGS
OpenWrt-s LibreSSL is linked against pthread, so we have to make sure to
pass -lpthread in LDFLAGS to avoid:
/usr/bin/ld: /openwrt/staging_dir/host/lib/libcrypto.a(libcrypto_la-crypto_init.o): in function `OPENSSL_init_crypto':
crypto_init.c:(.text+0x67): undefined reference to `pthread_once'
/usr/bin/ld: /openwrt/staging_dir/host/lib/libcrypto.a(libcrypto_la-err.o): in function `ERR_load_ERR_strings':
err.c:(.text+0x812): undefined reference to `pthread_once'
/usr/bin/ld: /openwrt/staging_dir/host/lib/libcrypto.a(libcrypto_la-conf_sap.o): in function `OpenSSL_config':
conf_sap.c:(.text+0xc0): undefined reference to `pthread_once'
/usr/bin/ld: /openwrt/staging_dir/host/lib/libcrypto.a(libcrypto_la-conf_sap.o): in function `OpenSSL_no_config':
conf_sap.c:(.text+0x107): undefined reference to `pthread_once'
/usr/bin/ld: /openwrt/staging_dir/host/lib/libcrypto.a(libcrypto_la-err_all.o): in function `ERR_load_crypto_strings':
err_all.c:(.text+0xa3): undefined reference to `pthread_once'
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:93: cert_create] Error 1
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
tools/cert_create/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/tools/cert_create/Makefile
+++ b/tools/cert_create/Makefile
@@ -79,7 +79,7 @@ INC_DIR += -I ./include -I ${PLAT_INCLUD
# located under the main project directory (i.e.: ${OPENSSL_DIR}, not
# ${OPENSSL_DIR}/lib/).
LIB_DIR := -L ${OPENSSL_DIR}/lib -L ${OPENSSL_DIR}
-LIB := -lssl -lcrypto
+LIB := -lssl -lcrypto -pthread
HOSTCC ?= gcc

View File

@@ -0,0 +1,29 @@
From f78f934710394822a36bd74043ed93a812c1c690 Mon Sep 17 00:00:00 2001
From: Robert Marko <robert.marko@sartura.hr>
Date: Mon, 12 Jan 2026 15:36:35 +0100
Subject: [PATCH] microchip: lan969x: do not rely on Ruby shebang
Host Ruby build in the staging dir must be used, so we cannot rely on the
shebang as that will fail.
So, call the script via Ruby executable instead.
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
---
plat/microchip/lan969x/common/common.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/plat/microchip/lan969x/common/common.mk
+++ b/plat/microchip/lan969x/common/common.mk
@@ -218,9 +218,9 @@ FWU_HTML := ${BUILD_PLAT}/fwu.html
FWU_JS := ${BUILD_PLAT}/fwu_app.js
${FWU_JS}: ${BUILD_PLAT}/${FWU_FIP_NAME}
- ./plat/microchip/scripts/mkjs.rb -p ${PLAT} -o ${FWU_JS} $<
+ $(Q)ruby ./plat/microchip/scripts/mkjs.rb -p ${PLAT} -o ${FWU_JS} $<
${FWU_HTML}: ${FWU_JS}
- ./plat/microchip/scripts/html_inline.rb -i ${BUILD_PLAT} ./scripts/fwu/serial.html > ${FWU_HTML}
+ $(Q)ruby ./plat/microchip/scripts/html_inline.rb -i ${BUILD_PLAT} ./scripts/fwu/serial.html > ${FWU_HTML}
all: ${FWU_HTML}

View File

@@ -7,11 +7,10 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=2.12.1
PKG_VERSION:=2.13
PKG_RELEASE:=1
PKG_LTS:=1
PKG_HASH:=c0d432a851da452d927561feaf45f569c1cde57985782beadfe29e616e260440
PKG_HASH:=afb5c408392fcec840bd30de9b02a236b0108142024f9853b542b596b0d894e3
PKG_MAINTAINER:=Sarah Maedel <openwrt@tbspace.de>
@@ -34,6 +33,11 @@ define Trusted-Firmware-A/rk3399
PLAT:=rk3399
endef
define Trusted-Firmware-A/rk3576
BUILD_SUBTARGET:=armv8
PLAT:=rk3576
endef
define Trusted-Firmware-A/rk3588
BUILD_SUBTARGET:=armv8
PLAT:=rk3588
@@ -42,11 +46,12 @@ endef
TFA_TARGETS:= \
rk3328 \
rk3399 \
rk3576 \
rk3588
ifeq ($(BUILD_VARIANT),rk3399)
M0_GCC_NAME:=gcc-arm
M0_GCC_RELEASE:=11.2-2022.02
M0_GCC_NAME:=arm-gnu-toolchain
M0_GCC_RELEASE:=12.3.rel1
M0_GCC_VERSION:=$(HOST_ARCH)-arm-none-eabi
M0_GCC_SOURCE:=$(M0_GCC_NAME)-$(M0_GCC_RELEASE)-$(M0_GCC_VERSION).tar.xz
@@ -54,9 +59,9 @@ ifeq ($(BUILD_VARIANT),rk3399)
FILE:=$(M0_GCC_SOURCE)
URL:=https://developer.arm.com/-/media/Files/downloads/gnu/$(M0_GCC_RELEASE)/binrel
ifeq ($(HOST_ARCH),aarch64)
HASH:=ef1d82e5894e3908cb7ed49c5485b5b95deefa32872f79c2b5f6f5447cabf55f
HASH:=14c0487d5753f6071d24e568881f7c7e67f80dd83165dec5164b3731394af431
else
HASH:=8c5acd5ae567c0100245b0556941c237369f210bceb196edfe5a2e7532c60326
HASH:=12a2815644318ebcceaf84beabb665d0924b6e79e21048452c5331a56332b309
endif
endef

View File

@@ -7,10 +7,10 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=2.12
PKG_RELEASE:=2
PKG_VERSION:=2.13
PKG_RELEASE:=1
PKG_HASH:=b4c047493cac1152203e1ba121ae57267e4899b7bf56eb365e22a933342d31c9
PKG_HASH:=afb5c408392fcec840bd30de9b02a236b0108142024f9853b542b596b0d894e3
PKG_MAINTAINER:=Thomas Richard <thomas.richard@bootlin.com>
include $(INCLUDE_DIR)/kernel.mk

View File

@@ -1,51 +0,0 @@
From 33573ea6842198cfdb5b3fdd320db9e2045855e9 Mon Sep 17 00:00:00 2001
From: Valentin Caron <valentin.caron@foss.st.com>
Date: Wed, 11 Dec 2024 11:20:04 +0100
Subject: [PATCH] fix(stm32mp1-fdts): re-enable RTC clock
On STM32MP15 ST boards, RTC clock configuration by OPTEE is not ready
yet. Re-enable it temporary to get LSE as clock source of RTC.
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
Change-Id: Ib6071229552e456faffb4fdfc8db9808140d54a7
---
fdts/stm32mp157c-ed1.dts | 2 ++
fdts/stm32mp15xx-dkx.dtsi | 2 ++
2 files changed, 4 insertions(+)
--- a/fdts/stm32mp157c-ed1.dts
+++ b/fdts/stm32mp157c-ed1.dts
@@ -194,6 +194,7 @@
CLK_MPU_PLL1P
CLK_AXI_PLL2P
CLK_MCU_PLL3P
+ CLK_RTC_LSE
CLK_MCO1_DISABLED
CLK_MCO2_DISABLED
CLK_CKPER_HSE
@@ -242,6 +243,7 @@
DIV(DIV_APB3, 1)
DIV(DIV_APB4, 1)
DIV(DIV_APB5, 2)
+ DIV(DIV_RTC, 23)
DIV(DIV_MCO1, 0)
DIV(DIV_MCO2, 0)
>;
--- a/fdts/stm32mp15xx-dkx.dtsi
+++ b/fdts/stm32mp15xx-dkx.dtsi
@@ -198,6 +198,7 @@
CLK_MPU_PLL1P
CLK_AXI_PLL2P
CLK_MCU_PLL3P
+ CLK_RTC_LSE
CLK_MCO1_DISABLED
CLK_MCO2_DISABLED
CLK_CKPER_HSE
@@ -246,6 +247,7 @@
DIV(DIV_APB3, 1)
DIV(DIV_APB4, 1)
DIV(DIV_APB5, 2)
+ DIV(DIV_RTC, 23)
DIV(DIV_MCO1, 0)
DIV(DIV_MCO2, 0)
>;

View File

@@ -7,10 +7,10 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=4.7.0
PKG_VERSION:=4.8.0
PKG_RELEASE:=1
PKG_HASH:=976b9c184678516038d4e79766608e81d10bf136f76fd0db2dc48f90f994fbd9
PKG_HASH:=5222cd553f5edb69ae4ec7cb99b2bfec2c47a47c0be1865b49744701918e8b4d
PKG_MAINTAINER:=Thomas Richard <thomas.richard@bootlin.com>
OPTEE_USE_INTREE_DTC:=1

View File

@@ -9,9 +9,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/rockchip-linux/rkbin.git
PKG_SOURCE_DATE:=2024-02-22
PKG_SOURCE_VERSION:=a2a0b89b6c8c612dca5ed9ed8a68db8a07f68bc0
PKG_MIRROR_HASH:=39f15e5f8fac02026065b6747b355b93f4e06202783ae448c43607763211597c
PKG_SOURCE_DATE:=2025-06-13
PKG_SOURCE_VERSION:=74213af1e952c4683d2e35952507133b61394862
PKG_MIRROR_HASH:=4b801b1301ae297f660340617b5f398b23a3f0b43bc7f0ef42c21f0f43eb8990
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
@@ -27,78 +27,91 @@ endef
define Trusted-Firmware-A/rk3308
BUILD_SUBTARGET:=armv8
ATF:=rk33/rk3308_bl31_v2.26.elf
TPL:=rk33/rk3308_ddr_589MHz_uart2_m1_v2.07.bin
ATF:=rk33/rk3308_bl31_v2.27.elf
TPL:=rk33/rk3308_ddr_589MHz_uart2_m1_v2.10.bin
endef
define Trusted-Firmware-A/rk3308-rock-pi-s
NAME:=Radxa ROCK Pi S
define Trusted-Firmware-A/rk3308-tpl-rock-pi-s
NAME:=Radxa ROCK Pi S board
BUILD_SUBTARGET:=armv8
ATF:=rk33/rk3308_bl31_v2.26.elf
TPL:=rk33/rk3308_ddr_589MHz_uart0_m0_v2.07.bin
TPL:=rk33/rk3308_ddr_589MHz_uart0_m0_v2.10.bin
endef
define Trusted-Firmware-A/rk3528
BUILD_SUBTARGET:=armv8
ATF:=rk35/rk3528_bl31_v1.20.elf
TPL:=rk35/rk3528_ddr_1056MHz_v1.11.bin
endef
define Trusted-Firmware-A/rk3566
BUILD_SUBTARGET:=armv8
ATF:=rk35/rk3568_bl31_v1.44.elf
TPL:=rk35/rk3566_ddr_1056MHz_v1.21.bin
ATF:=rk35/rk3568_bl31_v1.45.elf
TPL:=rk35/rk3566_ddr_1056MHz_v1.23.bin
endef
define Trusted-Firmware-A/rk3568
BUILD_SUBTARGET:=armv8
ATF:=rk35/rk3568_bl31_v1.44.elf
TPL:=rk35/rk3568_ddr_1560MHz_v1.21.bin
ATF:=rk35/rk3568_bl31_v1.45.elf
TPL:=rk35/rk3568_ddr_1560MHz_v1.23.bin
endef
define Trusted-Firmware-A/rk3568-e25
define Trusted-Firmware-A/rk3568-tpl-e25
NAME:=Radxa E25 board
BUILD_SUBTARGET:=armv8
ATF:=rk35/rk3568_bl31_v1.44.elf
TPL:=rk35/rk3568_ddr_1560MHz_uart2_m0_115200_v1.21.bin
TPL:=rk35/rk3568_ddr_1560MHz_uart2_m0_115200_v1.23.bin
endef
define Trusted-Firmware-A/rk3576-tpl
NAME:=Rockchip RK3576 SoCs
BUILD_SUBTARGET:=armv8
TPL:=rk35/rk3576_ddr_lp4_2112MHz_lp5_2736MHz_v1.09.bin
endef
define Trusted-Firmware-A/rk3588-tpl
NAME:=Rockchip RK3588 SoCs
BUILD_SUBTARGET:=armv8
TPL:=rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin
TPL:=rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.19.bin
endef
TFA_TARGETS:= \
rk3308 \
rk3308-rock-pi-s \
rk3308-tpl-rock-pi-s \
rk3528 \
rk3566 \
rk3568 \
rk3568-e25 \
rk3568-tpl-e25 \
rk3576-tpl \
rk3588-tpl
ifeq ($(BUILD_VARIANT),rk3308-rock-pi-s)
TPL_FILE:=rk3308_ddr_589MHz_uart0_m0_v2.07.bin
ifeq ($(BUILD_VARIANT),rk3308-tpl-rock-pi-s)
define Download/rk3308-tpl-rock-pi-s
FILE:=$(TPL_FILE)
URL:=https://github.com/radxa/rkbin/raw/5696fab20dcac57c1458f72dc7604ba60e553adf/bin/rk33/
HASH:=8a1a42df23cccb86a2dabc14a5c0e9227d64a51b9b83e9968ef5af3b30787f7d
FILE:=$(notdir $(TPL))
URL_FILE:=$(TPL)
URL:=https://github.com/radxa/rkbin/raw/2b54df9d062ef91a9fffbc85472b070c9220c4cf/bin/
HASH:=45af030ed2cb322cc5a91c32350130fc1f1ea9508794fa4b5d309eadf70e3d04
endef
define Build/Prepare
$(eval $(call Download,rk3308-tpl-rock-pi-s))
$(call Build/Prepare/Default)
$(CP) $(DL_DIR)/$(TPL_FILE) $(PKG_BUILD_DIR)/bin/rk33/
$(CP) $(DL_DIR)/$(notdir $(TPL)) $(PKG_BUILD_DIR)/bin/$(TPL)
endef
endif
ifeq ($(BUILD_VARIANT),rk3568-e25)
TPL_FILE:=rk3568_ddr_1560MHz_uart2_m0_115200_v1.21.bin
ifeq ($(BUILD_VARIANT),rk3568-tpl-e25)
define Download/rk3568-tpl-e25
FILE:=$(TPL_FILE)
URL:=https://github.com/radxa/rkbin/raw/5696fab20dcac57c1458f72dc7604ba60e553adf/bin/rk35/
HASH:=1815f9649dc5661a3ef184b052da39286e51453a66f6ff53cc3e345d65dfabd4
FILE:=$(notdir $(TPL))
URL_FILE:=$(TPL)
URL:=https://github.com/radxa/rkbin/raw/2e77c53ab0279585b09ecdaa54fe3e2bf80f9475/bin/
HASH:=1bb9f92a6515a70b91c0f8bd3aa4dc31432afc4317b9408f82c43ca63cb10ab6
endef
define Build/Prepare
$(eval $(call Download,rk3568-tpl-e25))
$(call Build/Prepare/Default)
$(CP) $(DL_DIR)/$(TPL_FILE) $(PKG_BUILD_DIR)/bin/rk35/
$(CP) $(DL_DIR)/$(notdir $(TPL)) $(PKG_BUILD_DIR)/bin/$(TPL)
endef
endif

View File

@@ -0,0 +1,94 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_VERSION:=2025.10
PKG_HASH:=b4f032848e56cc8f213ad59f9132c084dbbb632bc29176d024e58220e0efdf4a
PKG_BUILD_DEPENDS:=arm-trusted-firmware-tools/host
UBOOT_USE_INTREE_DTC:=1
include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
define U-Boot/Default
BUILD_TARGET:=airoha
FIP_COMPRESS:=1
endef
define U-Boot/an7581_rfb
NAME:=AN7581 Reference Board
UBOOT_CONFIG:=an7581_evb
BUILD_DEVICES:=airoha_an7581-evb
BUILD_SUBTARGET:=an7581
UBOOT_IMAGE:=u-boot.fip
BL2_IMAGE:=an7581-bl2.bin
BL31_IMAGE:=an7581-bl31.bin
endef
define U-Boot/an7583_rfb
NAME:=AN7583 Reference Board
UBOOT_CONFIG:=an7583_evb
BUILD_DEVICES:=airoha_an7583-evb
BUILD_SUBTARGET:=an7583
UBOOT_IMAGE:=u-boot.fip
BL2_IMAGE:=an7583-bl2.bin
BL31_IMAGE:=an7583-bl31.bin
endef
UBOOT_TARGETS := \
an7581_rfb \
an7583_rfb
UBOOT_CUSTOMIZE_CONFIG := \
--disable TOOLS_KWBIMAGE \
--disable TOOLS_LIBCRYPTO \
--disable TOOLS_MKEFICAPSULE \
--enable SERIAL_RX_BUFFER \
--set-val SERIAL_RX_BUFFER_SIZE 256
define Build/fip-image-bl2
$(STAGING_DIR_HOST)/bin/fiptool create \
--tb-fw files/$(BL2_IMAGE) \
$(PKG_BUILD_DIR)/bl2.fip
endef
define Build/fip-image
$(if $(FIP_COMPRESS), $(STAGING_DIR_HOST)/bin/lzma e \
$(PKG_BUILD_DIR)/u-boot.bin \
$(PKG_BUILD_DIR)/u-boot.bin.lzma)
$(if $(FIP_COMPRESS), $(STAGING_DIR_HOST)/bin/lzma e \
files/$(BL31_IMAGE) \
$(PKG_BUILD_DIR)/bl31.bin.lzma)
$(STAGING_DIR_HOST)/bin/fiptool create \
--soc-fw $(PKG_BUILD_DIR)/bl31.bin$(if $(FIP_COMPRESS),.lzma) \
--nt-fw $(PKG_BUILD_DIR)/u-boot.bin$(if $(FIP_COMPRESS),.lzma) \
$(PKG_BUILD_DIR)/u-boot.fip
endef
define Build/Configure
$(call Build/Configure/U-Boot)
sed -i 's/CONFIG_TOOLS_LIBCRYPTO=y/# CONFIG_TOOLS_LIBCRYPTO is not set/' $(PKG_BUILD_DIR)/.config
endef
define Build/Compile
$(call Build/Compile/U-Boot)
ifeq ($(UBOOT_IMAGE),u-boot.fip)
$(call Build/fip-image-bl2)
$(call Build/fip-image)
endif
endef
# don't stage files to bindir, let target/linux/airoha/image/*.mk do that
define Package/u-boot/install
endef
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
ifeq ($(UBOOT_IMAGE),u-boot.fip)
$(INSTALL_DATA) $(PKG_BUILD_DIR)/bl2.fip $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl2.fip
$(INSTALL_DATA) $(PKG_BUILD_DIR)/u-boot.fip $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl31-u-boot.fip
endif
endef
$(eval $(call BuildPackage/U-Boot))

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,315 @@
From f45ae9019afb838979792e4237e344003151fbf7 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Sun, 12 Nov 2023 20:57:52 +0300
Subject: [PATCH 1/5] mtd: spinand: Use the spi-mem dirmap API
Make use of the spi-mem direct mapping API to let advanced controllers
optimize read/write operations when they support direct mapping.
Based on a linux commit 981d1aa0697c ("mtd: spinand: Use the spi-mem dirmap API")
created by Boris Brezillon <bbrezillon@kernel.org> with additional
fixes taken from Linux 6.10.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
---
drivers/mtd/nand/spi/core.c | 185 +++++++++++++++++-------------------
include/linux/mtd/spinand.h | 7 ++
2 files changed, 95 insertions(+), 97 deletions(-)
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
@@ -41,21 +41,6 @@ struct spinand_plat {
/* SPI NAND index visible in MTD names */
static int spi_nand_idx;
-static void spinand_cache_op_adjust_colum(struct spinand_device *spinand,
- const struct nand_page_io_req *req,
- u16 *column)
-{
- struct nand_device *nand = spinand_to_nand(spinand);
- unsigned int shift;
-
- if (nand->memorg.planes_per_lun < 2)
- return;
-
- /* The plane number is passed in MSB just above the column address */
- shift = fls(nand->memorg.pagesize);
- *column |= req->pos.plane << shift;
-}
-
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
struct spi_mem_op op = SPINAND_GET_FEATURE_OP(reg,
@@ -249,27 +234,21 @@ static int spinand_load_page_op(struct spinand_device *spinand,
static int spinand_read_from_cache_op(struct spinand_device *spinand,
const struct nand_page_io_req *req)
{
- struct spi_mem_op op = *spinand->op_templates.read_cache;
struct nand_device *nand = spinand_to_nand(spinand);
struct mtd_info *mtd = nanddev_to_mtd(nand);
- struct nand_page_io_req adjreq = *req;
+ struct spi_mem_dirmap_desc *rdesc;
unsigned int nbytes = 0;
void *buf = NULL;
u16 column = 0;
- int ret;
+ ssize_t ret;
if (req->datalen) {
- adjreq.datalen = nanddev_page_size(nand);
- adjreq.dataoffs = 0;
- adjreq.databuf.in = spinand->databuf;
buf = spinand->databuf;
- nbytes = adjreq.datalen;
+ nbytes = nanddev_page_size(nand);
+ column = 0;
}
if (req->ooblen) {
- adjreq.ooblen = nanddev_per_page_oobsize(nand);
- adjreq.ooboffs = 0;
- adjreq.oobbuf.in = spinand->oobbuf;
nbytes += nanddev_per_page_oobsize(nand);
if (!buf) {
buf = spinand->oobbuf;
@@ -277,28 +256,19 @@ static int spinand_read_from_cache_op(struct spinand_device *spinand,
}
}
- spinand_cache_op_adjust_colum(spinand, &adjreq, &column);
- op.addr.val = column;
+ rdesc = spinand->dirmaps[req->pos.plane].rdesc;
- /*
- * Some controllers are limited in term of max RX data size. In this
- * case, just repeat the READ_CACHE operation after updating the
- * column.
- */
while (nbytes) {
- op.data.buf.in = buf;
- op.data.nbytes = nbytes;
- ret = spi_mem_adjust_op_size(spinand->slave, &op);
- if (ret)
+ ret = spi_mem_dirmap_read(rdesc, column, nbytes, buf);
+ if (ret < 0)
return ret;
- ret = spi_mem_exec_op(spinand->slave, &op);
- if (ret)
- return ret;
+ if (!ret || ret > nbytes)
+ return -EIO;
- buf += op.data.nbytes;
- nbytes -= op.data.nbytes;
- op.addr.val += op.data.nbytes;
+ nbytes -= ret;
+ column += ret;
+ buf += ret;
}
if (req->datalen)
@@ -322,14 +292,12 @@ static int spinand_read_from_cache_op(struct spinand_device *spinand,
static int spinand_write_to_cache_op(struct spinand_device *spinand,
const struct nand_page_io_req *req)
{
- struct spi_mem_op op = *spinand->op_templates.write_cache;
struct nand_device *nand = spinand_to_nand(spinand);
struct mtd_info *mtd = nanddev_to_mtd(nand);
- struct nand_page_io_req adjreq = *req;
- unsigned int nbytes = 0;
- void *buf = NULL;
- u16 column = 0;
- int ret;
+ struct spi_mem_dirmap_desc *wdesc;
+ unsigned int nbytes, column = 0;
+ void *buf = spinand->databuf;
+ ssize_t ret;
/*
* Looks like PROGRAM LOAD (AKA write cache) does not necessarily reset
@@ -338,19 +306,12 @@ static int spinand_write_to_cache_op(struct spinand_device *spinand,
* the data portion of the page, otherwise we might corrupt the BBM or
* user data previously programmed in OOB area.
*/
- memset(spinand->databuf, 0xff,
- nanddev_page_size(nand) +
- nanddev_per_page_oobsize(nand));
+ nbytes = nanddev_page_size(nand) + nanddev_per_page_oobsize(nand);
+ memset(spinand->databuf, 0xff, nbytes);
- if (req->datalen) {
+ if (req->datalen)
memcpy(spinand->databuf + req->dataoffs, req->databuf.out,
req->datalen);
- adjreq.dataoffs = 0;
- adjreq.datalen = nanddev_page_size(nand);
- adjreq.databuf.out = spinand->databuf;
- nbytes = adjreq.datalen;
- buf = spinand->databuf;
- }
if (req->ooblen) {
if (req->mode == MTD_OPS_AUTO_OOB)
@@ -361,52 +322,21 @@ static int spinand_write_to_cache_op(struct spinand_device *spinand,
else
memcpy(spinand->oobbuf + req->ooboffs, req->oobbuf.out,
req->ooblen);
-
- adjreq.ooblen = nanddev_per_page_oobsize(nand);
- adjreq.ooboffs = 0;
- nbytes += nanddev_per_page_oobsize(nand);
- if (!buf) {
- buf = spinand->oobbuf;
- column = nanddev_page_size(nand);
- }
}
- spinand_cache_op_adjust_colum(spinand, &adjreq, &column);
-
- op = *spinand->op_templates.write_cache;
- op.addr.val = column;
+ wdesc = spinand->dirmaps[req->pos.plane].wdesc;
- /*
- * Some controllers are limited in term of max TX data size. In this
- * case, split the operation into one LOAD CACHE and one or more
- * LOAD RANDOM CACHE.
- */
while (nbytes) {
- op.data.buf.out = buf;
- op.data.nbytes = nbytes;
-
- ret = spi_mem_adjust_op_size(spinand->slave, &op);
- if (ret)
- return ret;
-
- ret = spi_mem_exec_op(spinand->slave, &op);
- if (ret)
+ ret = spi_mem_dirmap_write(wdesc, column, nbytes, buf);
+ if (ret < 0)
return ret;
- buf += op.data.nbytes;
- nbytes -= op.data.nbytes;
- op.addr.val += op.data.nbytes;
+ if (!ret || ret > nbytes)
+ return -EIO;
- /*
- * We need to use the RANDOM LOAD CACHE operation if there's
- * more than one iteration, because the LOAD operation resets
- * the cache to 0xff.
- */
- if (nbytes) {
- column = op.addr.val;
- op = *spinand->op_templates.update_cache;
- op.addr.val = column;
- }
+ nbytes -= ret;
+ column += ret;
+ buf += ret;
}
return 0;
@@ -819,6 +749,59 @@ static int spinand_mtd_block_isreserved(struct mtd_info *mtd, loff_t offs)
return ret;
}
+static int spinand_create_dirmap(struct spinand_device *spinand,
+ unsigned int plane)
+{
+ struct nand_device *nand = spinand_to_nand(spinand);
+ struct spi_mem_dirmap_info info = {
+ .length = nanddev_page_size(nand) +
+ nanddev_per_page_oobsize(nand),
+ };
+ struct spi_mem_dirmap_desc *desc;
+
+ /* The plane number is passed in MSB just above the column address */
+ info.offset = plane << fls(nand->memorg.pagesize);
+
+ info.op_tmpl = *spinand->op_templates.update_cache;
+ desc = spi_mem_dirmap_create(spinand->slave, &info);
+ if (IS_ERR(desc))
+ return PTR_ERR(desc);
+
+ spinand->dirmaps[plane].wdesc = desc;
+
+ info.op_tmpl = *spinand->op_templates.read_cache;
+ desc = spi_mem_dirmap_create(spinand->slave, &info);
+ if (IS_ERR(desc)) {
+ spi_mem_dirmap_destroy(spinand->dirmaps[plane].wdesc);
+ return PTR_ERR(desc);
+ }
+
+ spinand->dirmaps[plane].rdesc = desc;
+
+ return 0;
+}
+
+static int spinand_create_dirmaps(struct spinand_device *spinand)
+{
+ struct nand_device *nand = spinand_to_nand(spinand);
+ int i, ret;
+
+ spinand->dirmaps = devm_kzalloc(spinand->slave->dev,
+ sizeof(*spinand->dirmaps) *
+ nand->memorg.planes_per_lun,
+ GFP_KERNEL);
+ if (!spinand->dirmaps)
+ return -ENOMEM;
+
+ for (i = 0; i < nand->memorg.planes_per_lun; i++) {
+ ret = spinand_create_dirmap(spinand, i);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
static const struct nand_ops spinand_ops = {
.erase = spinand_erase,
.markbad = spinand_markbad,
@@ -1134,6 +1117,14 @@ static int spinand_init(struct spinand_device *spinand)
goto err_free_bufs;
}
+ ret = spinand_create_dirmaps(spinand);
+ if (ret) {
+ dev_err(spinand->slave->dev,
+ "Failed to create direct mappings for read/write operations (err = %d)\n",
+ ret);
+ goto err_manuf_cleanup;
+ }
+
/* After power up, all blocks are locked, so unlock them here. */
for (i = 0; i < nand->memorg.ntargets; i++) {
ret = spinand_select_target(spinand, i);
diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h
index 6fe6fd520a4..163269313f6 100644
--- a/include/linux/mtd/spinand.h
+++ b/include/linux/mtd/spinand.h
@@ -363,6 +363,11 @@ struct spinand_info {
__VA_ARGS__ \
}
+struct spinand_dirmap {
+ struct spi_mem_dirmap_desc *wdesc;
+ struct spi_mem_dirmap_desc *rdesc;
+};
+
/**
* struct spinand_device - SPI NAND device instance
* @base: NAND device instance
@@ -406,6 +411,8 @@ struct spinand_device {
const struct spi_mem_op *update_cache;
} op_templates;
+ struct spinand_dirmap *dirmaps;
+
int (*select_target)(struct spinand_device *spinand,
unsigned int target);
unsigned int cur_target;

View File

@@ -0,0 +1,46 @@
From 1e29cf13c183ee457ed70055f5cbff60ff56a726 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Sat, 7 Jun 2025 07:18:12 +0300
Subject: [PATCH 2/5] spi: airoha: remove unnecessary operation adjust_op_size
This operation is not needed because airoha_snand_write_data() and
airoha_snand_read_data() will properly handle data transfers above
SPI_MAX_TRANSFER_SIZE.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 16 ----------------
1 file changed, 16 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -525,21 +525,6 @@ static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
SPI_NFI_CUS_SEC_SIZE, val);
}
-static int airoha_snand_adjust_op_size(struct spi_slave *slave,
- struct spi_mem_op *op)
-{
- size_t max_len;
-
- max_len = 1 + op->addr.nbytes + op->dummy.nbytes;
- if (max_len >= 160)
- return -EOPNOTSUPP;
-
- if (op->data.nbytes > 160 - max_len)
- op->data.nbytes = 160 - max_len;
-
- return 0;
-}
-
static bool airoha_snand_supports_op(struct spi_slave *slave,
const struct spi_mem_op *op)
{
@@ -691,7 +676,6 @@ static int airoha_snand_nfi_setup(struct spi_slave *slave,
}
static const struct spi_controller_mem_ops airoha_snand_mem_ops = {
- .adjust_op_size = airoha_snand_adjust_op_size,
.supports_op = airoha_snand_supports_op,
.exec_op = airoha_snand_exec_op,
};

View File

@@ -0,0 +1,257 @@
From fe8c32af9d8c8ff8875efece82001680fc300ad5 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Sat, 7 Jun 2025 09:09:38 +0300
Subject: [PATCH 3/5] spi: airoha: add support of dual/quad wires spi modes
to exec_op() handler
Booting without this patch and disabled dirmap support results in
[ 2.980719] spi-nand spi0.0: Micron SPI NAND was found.
[ 2.986040] spi-nand spi0.0: 256 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
[ 2.994709] 2 fixed-partitions partitions found on MTD device spi0.0
[ 3.001075] Creating 2 MTD partitions on "spi0.0":
[ 3.005862] 0x000000000000-0x000000020000 : "bl2"
[ 3.011272] 0x000000020000-0x000010000000 : "ubi"
...
[ 6.195594] ubi0: attaching mtd1
[ 13.338398] ubi0: scanning is finished
[ 13.342188] ubi0 error: ubi_read_volume_table: the layout volume was not found
[ 13.349784] ubi0 error: ubi_attach_mtd_dev: failed to attach mtd1, error -22
[ 13.356897] UBI error: cannot attach mtd1
If dirmap is disabled or not supported in the spi driver, the dirmap requests
will be executed via exec_op() handler. Thus, if the hardware supports
dual/quad spi modes, then corresponding requests will be sent to exec_op()
handler. Current driver does not support such requests, so error is arrised.
As result the flash can't be read/write.
This patch adds support of dual and quad wires spi modes to exec_op() handler.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 143 +++++++++++++++++++++++++++-------
1 file changed, 117 insertions(+), 26 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -186,6 +186,14 @@
#define SPI_NAND_OP_RESET 0xff
#define SPI_NAND_OP_DIE_SELECT 0xc2
+/* SNAND FIFO commands */
+#define SNAND_FIFO_TX_BUSWIDTH_SINGLE 0x08
+#define SNAND_FIFO_TX_BUSWIDTH_DUAL 0x09
+#define SNAND_FIFO_TX_BUSWIDTH_QUAD 0x0a
+#define SNAND_FIFO_RX_BUSWIDTH_SINGLE 0x0c
+#define SNAND_FIFO_RX_BUSWIDTH_DUAL 0x0e
+#define SNAND_FIFO_RX_BUSWIDTH_QUAD 0x0f
+
#define SPI_NAND_CACHE_SIZE (SZ_4K + SZ_256)
#define SPI_MAX_TRANSFER_SIZE 511
@@ -380,10 +388,26 @@ static int airoha_snand_set_mode(struct airoha_snand_priv *priv,
return regmap_write(priv->regmap_ctrl, REG_SPI_CTRL_DUMMY, 0);
}
-static int airoha_snand_write_data(struct airoha_snand_priv *priv, u8 cmd,
- const u8 *data, int len)
+static int airoha_snand_write_data(struct airoha_snand_priv *priv,
+ const u8 *data, int len, int buswidth)
{
int i, data_len;
+ u8 cmd;
+
+ switch (buswidth) {
+ case 0:
+ case 1:
+ cmd = SNAND_FIFO_TX_BUSWIDTH_SINGLE;
+ break;
+ case 2:
+ cmd = SNAND_FIFO_TX_BUSWIDTH_DUAL;
+ break;
+ case 4:
+ cmd = SNAND_FIFO_TX_BUSWIDTH_QUAD;
+ break;
+ default:
+ return -EINVAL;
+ }
for (i = 0; i < len; i += data_len) {
int err;
@@ -402,16 +426,32 @@ static int airoha_snand_write_data(struct airoha_snand_priv *priv, u8 cmd,
return 0;
}
-static int airoha_snand_read_data(struct airoha_snand_priv *priv, u8 *data,
- int len)
+static int airoha_snand_read_data(struct airoha_snand_priv *priv,
+ u8 *data, int len, int buswidth)
{
int i, data_len;
+ u8 cmd;
+
+ switch (buswidth) {
+ case 0:
+ case 1:
+ cmd = SNAND_FIFO_RX_BUSWIDTH_SINGLE;
+ break;
+ case 2:
+ cmd = SNAND_FIFO_RX_BUSWIDTH_DUAL;
+ break;
+ case 4:
+ cmd = SNAND_FIFO_RX_BUSWIDTH_QUAD;
+ break;
+ default:
+ return -EINVAL;
+ }
for (i = 0; i < len; i += data_len) {
int err;
data_len = min(len - i, SPI_MAX_TRANSFER_SIZE);
- err = airoha_snand_set_fifo_op(priv, 0xc, data_len);
+ err = airoha_snand_set_fifo_op(priv, cmd, data_len);
if (err)
return err;
@@ -525,6 +565,38 @@ static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
SPI_NFI_CUS_SEC_SIZE, val);
}
+static bool airoha_snand_is_page_ops(const struct spi_mem_op *op)
+{
+ if (op->addr.nbytes != 2)
+ return false;
+
+ if (op->addr.buswidth != 1 && op->addr.buswidth != 2 &&
+ op->addr.buswidth != 4)
+ return false;
+
+ switch (op->data.dir) {
+ case SPI_MEM_DATA_IN:
+ if (op->dummy.nbytes * BITS_PER_BYTE / op->dummy.buswidth > 0xf)
+ return false;
+
+ /* quad in / quad out */
+ if (op->addr.buswidth == 4)
+ return op->data.buswidth == 4;
+
+ if (op->addr.buswidth == 2)
+ return op->data.buswidth == 2;
+
+ /* standard spi */
+ return op->data.buswidth == 4 || op->data.buswidth == 2 ||
+ op->data.buswidth == 1;
+ case SPI_MEM_DATA_OUT:
+ return !op->dummy.nbytes && op->addr.buswidth == 1 &&
+ (op->data.buswidth == 4 || op->data.buswidth == 1);
+ default:
+ return false;
+ }
+}
+
static bool airoha_snand_supports_op(struct spi_slave *slave,
const struct spi_mem_op *op)
{
@@ -534,6 +606,9 @@ static bool airoha_snand_supports_op(struct spi_slave *slave,
if (op->cmd.buswidth != 1)
return false;
+ if (airoha_snand_is_page_ops(op))
+ return true;
+
return (!op->addr.nbytes || op->addr.buswidth == 1) &&
(!op->dummy.nbytes || op->dummy.buswidth == 1) &&
(!op->data.nbytes || op->data.buswidth == 1);
@@ -542,13 +617,29 @@ static bool airoha_snand_supports_op(struct spi_slave *slave,
static int airoha_snand_exec_op(struct spi_slave *slave,
const struct spi_mem_op *op)
{
- u8 data[8], cmd, opcode = op->cmd.opcode;
struct udevice *bus = slave->dev->parent;
struct airoha_snand_priv *priv;
+ int op_len, addr_len, dummy_len;
+ u8 buf[20], *data;
int i, err;
priv = dev_get_priv(bus);
+ op_len = op->cmd.nbytes;
+ addr_len = op->addr.nbytes;
+ dummy_len = op->dummy.nbytes;
+
+ if (op_len + dummy_len + addr_len > sizeof(buf))
+ return -EIO;
+
+ data = buf;
+ for (i = 0; i < op_len; i++)
+ *data++ = op->cmd.opcode >> (8 * (op_len - i - 1));
+ for (i = 0; i < addr_len; i++)
+ *data++ = op->addr.val >> (8 * (addr_len - i - 1));
+ for (i = 0; i < dummy_len; i++)
+ *data++ = 0xff;
+
/* switch to manual mode */
err = airoha_snand_set_mode(priv, SPI_MODE_MANUAL);
if (err < 0)
@@ -559,40 +650,40 @@ static int airoha_snand_exec_op(struct spi_slave *slave,
return err;
/* opcode */
- err = airoha_snand_write_data(priv, 0x8, &opcode, sizeof(opcode));
+ data = buf;
+ err = airoha_snand_write_data(priv, data, op_len,
+ op->cmd.buswidth);
if (err)
return err;
/* addr part */
- cmd = opcode == SPI_NAND_OP_GET_FEATURE ? 0x11 : 0x8;
- put_unaligned_be64(op->addr.val, data);
-
- for (i = ARRAY_SIZE(data) - op->addr.nbytes;
- i < ARRAY_SIZE(data); i++) {
- err = airoha_snand_write_data(priv, cmd, &data[i],
- sizeof(data[0]));
+ data += op_len;
+ if (addr_len) {
+ err = airoha_snand_write_data(priv, data, addr_len,
+ op->addr.buswidth);
if (err)
return err;
}
/* dummy */
- data[0] = 0xff;
- for (i = 0; i < op->dummy.nbytes; i++) {
- err = airoha_snand_write_data(priv, 0x8, &data[0],
- sizeof(data[0]));
+ data += addr_len;
+ if (dummy_len) {
+ err = airoha_snand_write_data(priv, data, dummy_len,
+ op->dummy.buswidth);
if (err)
return err;
}
/* data */
- if (op->data.dir == SPI_MEM_DATA_IN) {
- err = airoha_snand_read_data(priv, op->data.buf.in,
- op->data.nbytes);
- if (err)
- return err;
- } else {
- err = airoha_snand_write_data(priv, 0x8, op->data.buf.out,
- op->data.nbytes);
+ if (op->data.nbytes) {
+ if (op->data.dir == SPI_MEM_DATA_IN)
+ err = airoha_snand_read_data(priv, op->data.buf.in,
+ op->data.nbytes,
+ op->data.buswidth);
+ else
+ err = airoha_snand_write_data(priv, op->data.buf.out,
+ op->data.nbytes,
+ op->data.buswidth);
if (err)
return err;
}

View File

@@ -0,0 +1,373 @@
From f1fe2f174f26eb98af35862caea083439e08a344 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Sun, 8 Jun 2025 05:30:22 +0300
Subject: [PATCH 4/5] spi: airoha: add dma support
This patch speed up cache reading/writing/updating opearions.
It was tested on en7523/an7581 and some other Airoha chips.
It will speed up
* page reading/writing without oob
* page reading/writing with oob
* oob reading/writing (significant for UBI scanning)
The only know issue appears in a very specific conditions for en7523 family
chips only.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 309 ++++++++++++++++++++++++++++++++++
1 file changed, 309 insertions(+)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -141,12 +141,14 @@
#define SPI_NFI_CUS_SEC_SIZE_EN BIT(16)
#define REG_SPI_NFI_RD_CTL2 0x0510
+
#define REG_SPI_NFI_RD_CTL3 0x0514
#define REG_SPI_NFI_PG_CTL1 0x0524
#define SPI_NFI_PG_LOAD_CMD GENMASK(15, 8)
#define REG_SPI_NFI_PG_CTL2 0x0528
+
#define REG_SPI_NFI_NOR_PROG_ADDR 0x052c
#define REG_SPI_NFI_NOR_RD_ADDR 0x0534
@@ -219,6 +221,8 @@ struct airoha_snand_priv {
u8 sec_num;
u8 spare_size;
} nfi_cfg;
+
+ u8 *txrx_buf;
};
static int airoha_snand_set_fifo_op(struct airoha_snand_priv *priv,
@@ -614,6 +618,302 @@ static bool airoha_snand_supports_op(struct spi_slave *slave,
(!op->data.nbytes || op->data.buswidth == 1);
}
+static int airoha_snand_dirmap_create(struct spi_mem_dirmap_desc *desc)
+{
+ struct spi_slave *slave = desc->slave;
+ struct udevice *bus = slave->dev->parent;
+ struct airoha_snand_priv *priv = dev_get_priv(bus);
+
+ if (!priv->txrx_buf)
+ return -EINVAL;
+
+ if (desc->info.offset + desc->info.length > U32_MAX)
+ return -EINVAL;
+
+ if (!airoha_snand_supports_op(desc->slave, &desc->info.op_tmpl))
+ return -EOPNOTSUPP;
+
+ return 0;
+}
+
+static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
+ u64 offs, size_t len, void *buf)
+{
+ struct spi_mem_op *op = &desc->info.op_tmpl;
+ struct spi_slave *slave = desc->slave;
+ struct udevice *bus = slave->dev->parent;
+ struct airoha_snand_priv *priv = dev_get_priv(bus);
+ u8 *txrx_buf = priv->txrx_buf;
+ dma_addr_t dma_addr;
+ u32 val, rd_mode;
+ int err;
+
+ switch (op->cmd.opcode) {
+ case SPI_NAND_OP_READ_FROM_CACHE_DUAL:
+ rd_mode = 1;
+ break;
+ case SPI_NAND_OP_READ_FROM_CACHE_QUAD:
+ rd_mode = 2;
+ break;
+ default:
+ rd_mode = 0;
+ break;
+ }
+
+ err = airoha_snand_set_mode(priv, SPI_MODE_DMA);
+ if (err < 0)
+ return err;
+
+ err = airoha_snand_nfi_config(priv);
+ if (err)
+ goto error_dma_mode_off;
+
+ dma_addr = dma_map_single(txrx_buf, SPI_NAND_CACHE_SIZE,
+ DMA_FROM_DEVICE);
+
+ /* set dma addr */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_STRADDR,
+ dma_addr);
+ if (err)
+ goto error_dma_unmap;
+
+ /* set cust sec size */
+ val = priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num;
+ val = FIELD_PREP(SPI_NFI_READ_DATA_BYTE_NUM, val);
+ err = regmap_update_bits(priv->regmap_nfi,
+ REG_SPI_NFI_SNF_MISC_CTL2,
+ SPI_NFI_READ_DATA_BYTE_NUM, val);
+ if (err)
+ goto error_dma_unmap;
+
+ /* set read command */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_RD_CTL2,
+ op->cmd.opcode);
+ if (err)
+ goto error_dma_unmap;
+
+ /* set read mode */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_SNF_MISC_CTL,
+ FIELD_PREP(SPI_NFI_DATA_READ_WR_MODE, rd_mode));
+ if (err)
+ goto error_dma_unmap;
+
+ /* set read addr: zero page offset + descriptor read offset */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_RD_CTL3,
+ desc->info.offset);
+ if (err)
+ goto error_dma_unmap;
+
+ /* set nfi read */
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_OPMODE,
+ FIELD_PREP(SPI_NFI_OPMODE, 6));
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_READ_MODE | SPI_NFI_DMA_MODE);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CMD, 0x0);
+ if (err)
+ goto error_dma_unmap;
+
+ /* trigger dma reading */
+ err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_RD_TRIG);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_RD_TRIG);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_read_poll_timeout(priv->regmap_nfi,
+ REG_SPI_NFI_SNF_STA_CTL1, val,
+ (val & SPI_NFI_READ_FROM_CACHE_DONE),
+ 0, 1 * MSEC_PER_SEC);
+ if (err)
+ goto error_dma_unmap;
+
+ /*
+ * SPI_NFI_READ_FROM_CACHE_DONE bit must be written at the end
+ * of dirmap_read operation even if it is already set.
+ */
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SNF_STA_CTL1,
+ SPI_NFI_READ_FROM_CACHE_DONE,
+ SPI_NFI_READ_FROM_CACHE_DONE);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_read_poll_timeout(priv->regmap_nfi, REG_SPI_NFI_INTR,
+ val, (val & SPI_NFI_AHB_DONE), 0,
+ 1 * MSEC_PER_SEC);
+ if (err)
+ goto error_dma_unmap;
+
+ /* DMA read need delay for data ready from controller to DRAM */
+ udelay(1);
+
+ dma_unmap_single(dma_addr, SPI_NAND_CACHE_SIZE, DMA_FROM_DEVICE);
+
+ err = airoha_snand_set_mode(priv, SPI_MODE_MANUAL);
+ if (err < 0)
+ return err;
+
+ memcpy(buf, txrx_buf + offs, len);
+
+ return len;
+
+error_dma_unmap:
+ dma_unmap_single(dma_addr, SPI_NAND_CACHE_SIZE, DMA_FROM_DEVICE);
+error_dma_mode_off:
+ airoha_snand_set_mode(priv, SPI_MODE_MANUAL);
+ return err;
+}
+
+static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
+ u64 offs, size_t len, const void *buf)
+{
+ struct spi_slave *slave = desc->slave;
+ struct udevice *bus = slave->dev->parent;
+ struct airoha_snand_priv *priv = dev_get_priv(bus);
+ u8 *txrx_buf = priv->txrx_buf;
+ dma_addr_t dma_addr;
+ u32 wr_mode, val, opcode;
+ int err;
+
+ opcode = desc->info.op_tmpl.cmd.opcode;
+ switch (opcode) {
+ case SPI_NAND_OP_PROGRAM_LOAD_SINGLE:
+ case SPI_NAND_OP_PROGRAM_LOAD_RAMDOM_SINGLE:
+ wr_mode = 0;
+ break;
+ case SPI_NAND_OP_PROGRAM_LOAD_QUAD:
+ case SPI_NAND_OP_PROGRAM_LOAD_RAMDON_QUAD:
+ wr_mode = 2;
+ break;
+ default:
+ /* unknown opcode */
+ return -EOPNOTSUPP;
+ }
+
+ memcpy(txrx_buf + offs, buf, len);
+
+ err = airoha_snand_set_mode(priv, SPI_MODE_DMA);
+ if (err < 0)
+ return err;
+
+ err = airoha_snand_nfi_config(priv);
+ if (err)
+ goto error_dma_mode_off;
+
+ dma_addr = dma_map_single(txrx_buf, SPI_NAND_CACHE_SIZE,
+ DMA_TO_DEVICE);
+
+ /* set dma addr */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_STRADDR,
+ dma_addr);
+ if (err)
+ goto error_dma_unmap;
+
+ val = FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM,
+ priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num);
+ err = regmap_update_bits(priv->regmap_nfi,
+ REG_SPI_NFI_SNF_MISC_CTL2,
+ SPI_NFI_PROG_LOAD_BYTE_NUM, val);
+ if (err)
+ goto error_dma_unmap;
+
+ /* set write command */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_PG_CTL1,
+ FIELD_PREP(SPI_NFI_PG_LOAD_CMD, opcode));
+ if (err)
+ goto error_dma_unmap;
+
+ /* set write mode */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_SNF_MISC_CTL,
+ FIELD_PREP(SPI_NFI_DATA_READ_WR_MODE, wr_mode));
+ if (err)
+ goto error_dma_unmap;
+
+ /* set write addr: zero page offset + descriptor write offset */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_PG_CTL2,
+ desc->info.offset);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_READ_MODE);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_OPMODE,
+ FIELD_PREP(SPI_NFI_OPMODE, 3));
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_DMA_MODE);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CMD, 0x80);
+ if (err)
+ goto error_dma_unmap;
+
+ /* trigger dma writing */
+ err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_WR_TRIG);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_WR_TRIG);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_read_poll_timeout(priv->regmap_nfi, REG_SPI_NFI_INTR,
+ val, (val & SPI_NFI_AHB_DONE), 0,
+ 1 * MSEC_PER_SEC);
+ if (err)
+ goto error_dma_unmap;
+
+ err = regmap_read_poll_timeout(priv->regmap_nfi,
+ REG_SPI_NFI_SNF_STA_CTL1, val,
+ (val & SPI_NFI_LOAD_TO_CACHE_DONE),
+ 0, 1 * MSEC_PER_SEC);
+ if (err)
+ goto error_dma_unmap;
+
+ /*
+ * SPI_NFI_LOAD_TO_CACHE_DONE bit must be written at the end
+ * of dirmap_write operation even if it is already set.
+ */
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SNF_STA_CTL1,
+ SPI_NFI_LOAD_TO_CACHE_DONE,
+ SPI_NFI_LOAD_TO_CACHE_DONE);
+ if (err)
+ goto error_dma_unmap;
+
+ dma_unmap_single(dma_addr, SPI_NAND_CACHE_SIZE, DMA_TO_DEVICE);
+
+ err = airoha_snand_set_mode(priv, SPI_MODE_MANUAL);
+ if (err < 0)
+ return err;
+
+ return len;
+
+error_dma_unmap:
+ dma_unmap_single(dma_addr, SPI_NAND_CACHE_SIZE, DMA_TO_DEVICE);
+error_dma_mode_off:
+ airoha_snand_set_mode(priv, SPI_MODE_MANUAL);
+ return err;
+}
+
static int airoha_snand_exec_op(struct spi_slave *slave,
const struct spi_mem_op *op)
{
@@ -696,6 +996,12 @@ static int airoha_snand_probe(struct udevice *dev)
struct airoha_snand_priv *priv = dev_get_priv(dev);
int ret;
+ priv->txrx_buf = memalign(ARCH_DMA_MINALIGN, SPI_NAND_CACHE_SIZE);
+ if (!priv->txrx_buf) {
+ dev_err(dev, "failed to alloacate memory for dirmap\n");
+ return -ENOMEM;
+ }
+
ret = regmap_init_mem_index(dev_ofnode(dev), &priv->regmap_ctrl, 0);
if (ret) {
dev_err(dev, "failed to init spi ctrl regmap\n");
@@ -769,6 +1075,9 @@ static int airoha_snand_nfi_setup(struct spi_slave *slave,
static const struct spi_controller_mem_ops airoha_snand_mem_ops = {
.supports_op = airoha_snand_supports_op,
.exec_op = airoha_snand_exec_op,
+ .dirmap_create = airoha_snand_dirmap_create,
+ .dirmap_read = airoha_snand_dirmap_read,
+ .dirmap_write = airoha_snand_dirmap_write,
};
static const struct dm_spi_ops airoha_snfi_spi_ops = {

View File

@@ -0,0 +1,89 @@
From 2ebbccfa053993d0fe90bee523020a8f796e8988 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Sun, 8 Jun 2025 05:30:22 +0300
Subject: [PATCH 5/5] spi: airoha: support of dualio/quadio flash reading
commands
Airoha snfi spi controller supports acceleration of DUAL/QUAD
operations, but does not supports DUAL_IO/QUAD_IO operations.
Luckily DUAL/QUAD operations do the same as DUAL_IO/QUAD_IO ones,
so we can issue corresponding DUAL/QUAD operation instead of
DUAL_IO/QUAD_IO one.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -141,6 +141,7 @@
#define SPI_NFI_CUS_SEC_SIZE_EN BIT(16)
#define REG_SPI_NFI_RD_CTL2 0x0510
+#define SPI_NFI_DATA_READ_CMD GENMASK(7, 0)
#define REG_SPI_NFI_RD_CTL3 0x0514
@@ -175,7 +176,9 @@
#define SPI_NAND_OP_READ_FROM_CACHE_SINGLE 0x03
#define SPI_NAND_OP_READ_FROM_CACHE_SINGLE_FAST 0x0b
#define SPI_NAND_OP_READ_FROM_CACHE_DUAL 0x3b
+#define SPI_NAND_OP_READ_FROM_CACHE_DUALIO 0xbb
#define SPI_NAND_OP_READ_FROM_CACHE_QUAD 0x6b
+#define SPI_NAND_OP_READ_FROM_CACHE_QUADIO 0xeb
#define SPI_NAND_OP_WRITE_ENABLE 0x06
#define SPI_NAND_OP_WRITE_DISABLE 0x04
#define SPI_NAND_OP_PROGRAM_LOAD_SINGLE 0x02
@@ -639,25 +642,37 @@ static int airoha_snand_dirmap_create(struct spi_mem_dirmap_desc *desc)
static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
u64 offs, size_t len, void *buf)
{
- struct spi_mem_op *op = &desc->info.op_tmpl;
struct spi_slave *slave = desc->slave;
struct udevice *bus = slave->dev->parent;
struct airoha_snand_priv *priv = dev_get_priv(bus);
u8 *txrx_buf = priv->txrx_buf;
dma_addr_t dma_addr;
- u32 val, rd_mode;
+ u32 val, rd_mode, opcode;
int err;
- switch (op->cmd.opcode) {
+ /*
+ * DUALIO and QUADIO opcodes are not supported by the spi controller,
+ * replace them with supported opcodes.
+ */
+ opcode = desc->info.op_tmpl.cmd.opcode;
+ switch (opcode) {
+ case SPI_NAND_OP_READ_FROM_CACHE_SINGLE:
+ case SPI_NAND_OP_READ_FROM_CACHE_SINGLE_FAST:
+ rd_mode = 0;
+ break;
case SPI_NAND_OP_READ_FROM_CACHE_DUAL:
+ case SPI_NAND_OP_READ_FROM_CACHE_DUALIO:
+ opcode = SPI_NAND_OP_READ_FROM_CACHE_DUAL;
rd_mode = 1;
break;
case SPI_NAND_OP_READ_FROM_CACHE_QUAD:
+ case SPI_NAND_OP_READ_FROM_CACHE_QUADIO:
+ opcode = SPI_NAND_OP_READ_FROM_CACHE_QUAD;
rd_mode = 2;
break;
default:
- rd_mode = 0;
- break;
+ /* unknown opcode */
+ return -EOPNOTSUPP;
}
err = airoha_snand_set_mode(priv, SPI_MODE_DMA);
@@ -688,7 +703,7 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
/* set read command */
err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_RD_CTL2,
- op->cmd.opcode);
+ FIELD_PREP(SPI_NFI_DATA_READ_CMD, opcode));
if (err)
goto error_dma_unmap;

View File

@@ -0,0 +1,62 @@
From 073de6579cf8c7599d925852bb0fc7fa50378dd3 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Thu, 14 Aug 2025 18:00:32 +0300
Subject: [PATCH 1/4] spi: airoha: avoid setting of page/oob sizes in
REG_SPI_NFI_PAGEFMT
spi-airoha-snfi uses custom sector size in REG_SPI_NFI_SECCUS_SIZE
register, so setting of page/oob sizes in REG_SPI_NFI_PAGEFMT is not
required.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 38 -----------------------------------
1 file changed, 38 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -514,44 +514,6 @@ static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
if (err)
return err;
- /* page format */
- switch (priv->nfi_cfg.spare_size) {
- case 26:
- val = FIELD_PREP(SPI_NFI_SPARE_SIZE, 0x1);
- break;
- case 27:
- val = FIELD_PREP(SPI_NFI_SPARE_SIZE, 0x2);
- break;
- case 28:
- val = FIELD_PREP(SPI_NFI_SPARE_SIZE, 0x3);
- break;
- default:
- val = FIELD_PREP(SPI_NFI_SPARE_SIZE, 0x0);
- break;
- }
-
- err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_PAGEFMT,
- SPI_NFI_SPARE_SIZE, val);
- if (err)
- return err;
-
- switch (priv->nfi_cfg.page_size) {
- case 2048:
- val = FIELD_PREP(SPI_NFI_PAGE_SIZE, 0x1);
- break;
- case 4096:
- val = FIELD_PREP(SPI_NFI_PAGE_SIZE, 0x2);
- break;
- default:
- val = FIELD_PREP(SPI_NFI_PAGE_SIZE, 0x0);
- break;
- }
-
- err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_PAGEFMT,
- SPI_NFI_PAGE_SIZE, val);
- if (err)
- return err;
-
/* sec num */
val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,

View File

@@ -0,0 +1,195 @@
From 3bd6ca4ddaae4f0a667a9359c8092d2271006687 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Thu, 14 Aug 2025 18:49:34 +0300
Subject: [PATCH 2/4] spi: airoha: reduce the number of modification of
REG_SPI_NFI_CNFG and REG_SPI_NFI_SECCUS_SIZE registers
This just reduce the number of modification of REG_SPI_NFI_CNFG and
REG_SPI_NFI_SECCUS_SIZE registers during dirmap operation.
This patch is a necessary step to avoid usage of flash specific
parameters.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 134 +++++++++++++++++++++++++---------
1 file changed, 101 insertions(+), 33 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -641,7 +641,47 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
if (err < 0)
return err;
- err = airoha_snand_nfi_config(priv);
+ /* NFI reset */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_FIFO_FLUSH | SPI_NFI_RST);
+ if (err)
+ goto error_dma_mode_off;
+
+ /* NFI configure:
+ * - No AutoFDM (custom sector size (SECCUS) register will be used)
+ * - No SoC's hardware ECC (flash internal ECC will be used)
+ * - Use burst mode (faster, but requires 16 byte alignment for addresses)
+ * - Setup for reading (SPI_NFI_READ_MODE)
+ * - Setup reading command: FIELD_PREP(SPI_NFI_OPMODE, 6)
+ * - Use DMA instead of PIO for data reading
+ * - Use AHB bus for DMA transfer
+ */
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_DMA_MODE |
+ SPI_NFI_READ_MODE |
+ SPI_NFI_DMA_BURST_EN |
+ SPI_NFI_HW_ECC_EN |
+ SPI_NFI_AUTO_FDM_EN |
+ SPI_NFI_OPMODE,
+ SPI_NFI_DMA_MODE |
+ SPI_NFI_READ_MODE |
+ SPI_NFI_DMA_BURST_EN |
+ FIELD_PREP(SPI_NFI_OPMODE, 6));
+
+ /* Set number of sector will be read */
+ val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_SEC_NUM, val);
+ if (err)
+ goto error_dma_mode_off;
+
+ /* Set custom sector size */
+ val = priv->nfi_cfg.sec_size;
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SECCUS_SIZE,
+ SPI_NFI_CUS_SEC_SIZE |
+ SPI_NFI_CUS_SEC_SIZE_EN,
+ FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, val) |
+ SPI_NFI_CUS_SEC_SIZE_EN);
if (err)
goto error_dma_mode_off;
@@ -654,7 +694,14 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
if (err)
goto error_dma_unmap;
- /* set cust sec size */
+ /*
+ * Setup transfer length
+ * ---------------------
+ * The following rule MUST be met:
+ * transfer_length =
+ * = NFI_SNF_MISC_CTL2.read_data_byte_number =
+ * = NFI_CON.sector_number * NFI_SECCUS.custom_sector_size
+ */
val = priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num;
val = FIELD_PREP(SPI_NFI_READ_DATA_BYTE_NUM, val);
err = regmap_update_bits(priv->regmap_nfi,
@@ -681,18 +728,6 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
if (err)
goto error_dma_unmap;
- /* set nfi read */
- err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_OPMODE,
- FIELD_PREP(SPI_NFI_OPMODE, 6));
- if (err)
- goto error_dma_unmap;
-
- err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_READ_MODE | SPI_NFI_DMA_MODE);
- if (err)
- goto error_dma_unmap;
-
err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CMD, 0x0);
if (err)
goto error_dma_unmap;
@@ -783,7 +818,48 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
if (err < 0)
return err;
- err = airoha_snand_nfi_config(priv);
+ /* NFI reset */
+ err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_FIFO_FLUSH | SPI_NFI_RST);
+ if (err)
+ goto error_dma_mode_off;
+
+ /*
+ * NFI configure:
+ * - No AutoFDM (custom sector size (SECCUS) register will be used)
+ * - No SoC's hardware ECC (flash internal ECC will be used)
+ * - Use burst mode (faster, but requires 16 byte alignment for addresses)
+ * - Setup for writing (SPI_NFI_READ_MODE bit is cleared)
+ * - Setup writing command: FIELD_PREP(SPI_NFI_OPMODE, 3)
+ * - Use DMA instead of PIO for data writing
+ */
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
+ SPI_NFI_DMA_MODE |
+ SPI_NFI_READ_MODE |
+ SPI_NFI_DMA_BURST_EN |
+ SPI_NFI_HW_ECC_EN |
+ SPI_NFI_AUTO_FDM_EN |
+ SPI_NFI_OPMODE,
+ SPI_NFI_DMA_MODE |
+ SPI_NFI_DMA_BURST_EN |
+ FIELD_PREP(SPI_NFI_OPMODE, 3));
+ if (err)
+ goto error_dma_mode_off;
+
+ /* Set number of sector will be written */
+ val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
+ SPI_NFI_SEC_NUM, val);
+ if (err)
+ goto error_dma_mode_off;
+
+ /* Set custom sector size */
+ val = priv->nfi_cfg.sec_size;
+ err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SECCUS_SIZE,
+ SPI_NFI_CUS_SEC_SIZE |
+ SPI_NFI_CUS_SEC_SIZE_EN,
+ FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, val) |
+ SPI_NFI_CUS_SEC_SIZE_EN);
if (err)
goto error_dma_mode_off;
@@ -796,8 +872,16 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
if (err)
goto error_dma_unmap;
- val = FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM,
- priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num);
+ /*
+ * Setup transfer length
+ * ---------------------
+ * The following rule MUST be met:
+ * transfer_length =
+ * = NFI_SNF_MISC_CTL2.write_data_byte_number =
+ * = NFI_CON.sector_number * NFI_SECCUS.custom_sector_size
+ */
+ val = priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num;
+ val = FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM, val);
err = regmap_update_bits(priv->regmap_nfi,
REG_SPI_NFI_SNF_MISC_CTL2,
SPI_NFI_PROG_LOAD_BYTE_NUM, val);
@@ -822,22 +906,6 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
if (err)
goto error_dma_unmap;
- err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_READ_MODE);
- if (err)
- goto error_dma_unmap;
-
- err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_OPMODE,
- FIELD_PREP(SPI_NFI_OPMODE, 3));
- if (err)
- goto error_dma_unmap;
-
- err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_DMA_MODE);
- if (err)
- goto error_dma_unmap;
-
err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CMD, 0x80);
if (err)
goto error_dma_unmap;

View File

@@ -0,0 +1,135 @@
From 8e6cba428ce48005b5b8be64c2a08c98d04865e9 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Thu, 14 Aug 2025 22:47:17 +0300
Subject: [PATCH 3/4] spi: airoha: set custom sector size equal to flash page
size
Set custom sector size equal to flash page size including oob. Thus we
will always read a single sector. The maximum custom sector size is
8187, so all possible flash sector sizes are supported.
This patch is a necessary step to avoid usage of flash specific
parameters.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 35 +++++++++++++++++++----------------
1 file changed, 19 insertions(+), 16 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -515,7 +515,7 @@ static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
return err;
/* sec num */
- val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
+ val = FIELD_PREP(SPI_NFI_SEC_NUM, 1);
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
SPI_NFI_SEC_NUM, val);
if (err)
@@ -528,7 +528,8 @@ static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
return err;
/* set cust sec size */
- val = FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, priv->nfi_cfg.sec_size);
+ val = FIELD_PREP(SPI_NFI_CUS_SEC_SIZE,
+ priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num);
return regmap_update_bits(priv->regmap_nfi,
REG_SPI_NFI_SECCUS_SIZE,
SPI_NFI_CUS_SEC_SIZE, val);
@@ -610,8 +611,11 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
u8 *txrx_buf = priv->txrx_buf;
dma_addr_t dma_addr;
u32 val, rd_mode, opcode;
+ size_t bytes;
int err;
+ bytes = priv->nfi_cfg.sec_num * priv->nfi_cfg.sec_size;
+
/*
* DUALIO and QUADIO opcodes are not supported by the spi controller,
* replace them with supported opcodes.
@@ -669,18 +673,17 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
FIELD_PREP(SPI_NFI_OPMODE, 6));
/* Set number of sector will be read */
- val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
- SPI_NFI_SEC_NUM, val);
+ SPI_NFI_SEC_NUM,
+ FIELD_PREP(SPI_NFI_SEC_NUM, 1));
if (err)
goto error_dma_mode_off;
/* Set custom sector size */
- val = priv->nfi_cfg.sec_size;
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SECCUS_SIZE,
SPI_NFI_CUS_SEC_SIZE |
SPI_NFI_CUS_SEC_SIZE_EN,
- FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, val) |
+ FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, bytes) |
SPI_NFI_CUS_SEC_SIZE_EN);
if (err)
goto error_dma_mode_off;
@@ -702,11 +705,10 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
* = NFI_SNF_MISC_CTL2.read_data_byte_number =
* = NFI_CON.sector_number * NFI_SECCUS.custom_sector_size
*/
- val = priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num;
- val = FIELD_PREP(SPI_NFI_READ_DATA_BYTE_NUM, val);
err = regmap_update_bits(priv->regmap_nfi,
REG_SPI_NFI_SNF_MISC_CTL2,
- SPI_NFI_READ_DATA_BYTE_NUM, val);
+ SPI_NFI_READ_DATA_BYTE_NUM,
+ FIELD_PREP(SPI_NFI_READ_DATA_BYTE_NUM, bytes));
if (err)
goto error_dma_unmap;
@@ -795,8 +797,11 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
u8 *txrx_buf = priv->txrx_buf;
dma_addr_t dma_addr;
u32 wr_mode, val, opcode;
+ size_t bytes;
int err;
+ bytes = priv->nfi_cfg.sec_num * priv->nfi_cfg.sec_size;
+
opcode = desc->info.op_tmpl.cmd.opcode;
switch (opcode) {
case SPI_NAND_OP_PROGRAM_LOAD_SINGLE:
@@ -847,18 +852,17 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
goto error_dma_mode_off;
/* Set number of sector will be written */
- val = FIELD_PREP(SPI_NFI_SEC_NUM, priv->nfi_cfg.sec_num);
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
- SPI_NFI_SEC_NUM, val);
+ SPI_NFI_SEC_NUM,
+ FIELD_PREP(SPI_NFI_SEC_NUM, 1));
if (err)
goto error_dma_mode_off;
/* Set custom sector size */
- val = priv->nfi_cfg.sec_size;
err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_SECCUS_SIZE,
SPI_NFI_CUS_SEC_SIZE |
SPI_NFI_CUS_SEC_SIZE_EN,
- FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, val) |
+ FIELD_PREP(SPI_NFI_CUS_SEC_SIZE, bytes) |
SPI_NFI_CUS_SEC_SIZE_EN);
if (err)
goto error_dma_mode_off;
@@ -880,11 +884,10 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
* = NFI_SNF_MISC_CTL2.write_data_byte_number =
* = NFI_CON.sector_number * NFI_SECCUS.custom_sector_size
*/
- val = priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num;
- val = FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM, val);
err = regmap_update_bits(priv->regmap_nfi,
REG_SPI_NFI_SNF_MISC_CTL2,
- SPI_NFI_PROG_LOAD_BYTE_NUM, val);
+ SPI_NFI_PROG_LOAD_BYTE_NUM,
+ FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM, bytes));
if (err)
goto error_dma_unmap;

View File

@@ -0,0 +1,170 @@
From f015b0211a36bf818023c82ab44644631987d23c Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Thu, 14 Aug 2025 23:56:24 +0300
Subject: [PATCH 4/4] spi: airoha: avoid usage of flash specific parameters
The spinand driver do 3 type of dirmap requests:
* read/write whole flash page without oob
(offs = 0, len = page_size)
* read/write whole flash page including oob
(offs = 0, len = page_size + oob_size)
* read/write oob area only
(offs = page_size, len = oob_size)
The trick is:
* read/write a single "sector"
* set a custom sector size equal to offs + len. It's a bit safer to
round up "sector size" value 64.
* set the transfer length equal to custom sector size
And it works!
Thus we can find all data directly from dirmap request, so flash specific
parameters is not needed anymore. Also
* airoha_snand_nfi_config(),
* airoha_snand_nfi_setup()
functions becomes unnecessary.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/spi/airoha_snfi_spi.c | 94 ++---------------------------------
1 file changed, 4 insertions(+), 90 deletions(-)
--- a/drivers/spi/airoha_snfi_spi.c
+++ b/drivers/spi/airoha_snfi_spi.c
@@ -218,13 +218,6 @@ struct airoha_snand_priv {
struct regmap *regmap_nfi;
struct clk *spi_clk;
- struct {
- size_t page_size;
- size_t sec_size;
- u8 sec_num;
- u8 spare_size;
- } nfi_cfg;
-
u8 *txrx_buf;
};
@@ -486,55 +479,6 @@ static int airoha_snand_nfi_init(struct airoha_snand_priv *priv)
SPI_NFI_ALL_IRQ_EN, SPI_NFI_AHB_DONE_EN);
}
-static int airoha_snand_nfi_config(struct airoha_snand_priv *priv)
-{
- int err;
- u32 val;
-
- err = regmap_write(priv->regmap_nfi, REG_SPI_NFI_CON,
- SPI_NFI_FIFO_FLUSH | SPI_NFI_RST);
- if (err)
- return err;
-
- /* auto FDM */
- err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_AUTO_FDM_EN);
- if (err)
- return err;
-
- /* HW ECC */
- err = regmap_clear_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_HW_ECC_EN);
- if (err)
- return err;
-
- /* DMA Burst */
- err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_CNFG,
- SPI_NFI_DMA_BURST_EN);
- if (err)
- return err;
-
- /* sec num */
- val = FIELD_PREP(SPI_NFI_SEC_NUM, 1);
- err = regmap_update_bits(priv->regmap_nfi, REG_SPI_NFI_CON,
- SPI_NFI_SEC_NUM, val);
- if (err)
- return err;
-
- /* enable cust sec size */
- err = regmap_set_bits(priv->regmap_nfi, REG_SPI_NFI_SECCUS_SIZE,
- SPI_NFI_CUS_SEC_SIZE_EN);
- if (err)
- return err;
-
- /* set cust sec size */
- val = FIELD_PREP(SPI_NFI_CUS_SEC_SIZE,
- priv->nfi_cfg.sec_size * priv->nfi_cfg.sec_num);
- return regmap_update_bits(priv->regmap_nfi,
- REG_SPI_NFI_SECCUS_SIZE,
- SPI_NFI_CUS_SEC_SIZE, val);
-}
-
static bool airoha_snand_is_page_ops(const struct spi_mem_op *op)
{
if (op->addr.nbytes != 2)
@@ -614,7 +558,8 @@ static ssize_t airoha_snand_dirmap_read(struct spi_mem_dirmap_desc *desc,
size_t bytes;
int err;
- bytes = priv->nfi_cfg.sec_num * priv->nfi_cfg.sec_size;
+ /* minimum oob size is 64 */
+ bytes = round_up(offs + len, 64);
/*
* DUALIO and QUADIO opcodes are not supported by the spi controller,
@@ -800,7 +745,8 @@ static ssize_t airoha_snand_dirmap_write(struct spi_mem_dirmap_desc *desc,
size_t bytes;
int err;
- bytes = priv->nfi_cfg.sec_num * priv->nfi_cfg.sec_size;
+ /* minimum oob size is 64 */
+ bytes = round_up(offs + len, 64);
opcode = desc->info.op_tmpl.cmd.opcode;
switch (opcode) {
@@ -1089,37 +1035,6 @@ static int airoha_snand_nfi_set_mode(struct udevice *bus, uint mode)
return 0;
}
-static int airoha_snand_nfi_setup(struct spi_slave *slave,
- const struct spinand_info *spinand_info)
-{
- struct udevice *bus = slave->dev->parent;
- struct airoha_snand_priv *priv;
- u32 sec_size, sec_num;
- int pagesize, oobsize;
-
- priv = dev_get_priv(bus);
-
- pagesize = spinand_info->memorg.pagesize;
- oobsize = spinand_info->memorg.oobsize;
-
- if (pagesize == 2 * 1024)
- sec_num = 4;
- else if (pagesize == 4 * 1024)
- sec_num = 8;
- else
- sec_num = 1;
-
- sec_size = (pagesize + oobsize) / sec_num;
-
- /* init default value */
- priv->nfi_cfg.sec_size = sec_size;
- priv->nfi_cfg.sec_num = sec_num;
- priv->nfi_cfg.page_size = round_down(sec_size * sec_num, 1024);
- priv->nfi_cfg.spare_size = 16;
-
- return airoha_snand_nfi_config(priv);
-}
-
static const struct spi_controller_mem_ops airoha_snand_mem_ops = {
.supports_op = airoha_snand_supports_op,
.exec_op = airoha_snand_exec_op,
@@ -1132,7 +1047,6 @@ static const struct dm_spi_ops airoha_snfi_spi_ops = {
.mem_ops = &airoha_snand_mem_ops,
.set_speed = airoha_snand_nfi_set_speed,
.set_mode = airoha_snand_nfi_set_mode,
- .setup_for_spinand = airoha_snand_nfi_setup,
};
static const struct udevice_id airoha_snand_ids[] = {

View File

@@ -0,0 +1,729 @@
From 0ee8053a17e6f4d6dbde0828e775309cba38c171 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Tue, 29 Apr 2025 13:06:59 +0200
Subject: [PATCH 1/3] airoha: add support for Airoha AN7583 SoC
Add support for Airoha AN7583 SoC. This adds the Kconfig and Makefile
entry for the SoC, DTSI and initial config for it. Also add the code for
CPU and RAM initialization. Everything is mostly based on AN7581 that
share lots of common piece.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
arch/arm/dts/an7583-evb.dts | 67 +++++
arch/arm/dts/an7583.dtsi | 387 +++++++++++++++++++++++++++
arch/arm/mach-airoha/Kconfig | 14 +
arch/arm/mach-airoha/Makefile | 1 +
arch/arm/mach-airoha/an7583/Makefile | 3 +
arch/arm/mach-airoha/an7583/init.c | 47 ++++
board/airoha/an7583/MAINTAINERS | 5 +
board/airoha/an7583/Makefile | 3 +
board/airoha/an7583/an7583_rfb.c | 16 ++
configs/an7583_evb_defconfig | 81 ++++++
include/configs/an7583.h | 19 ++
11 files changed, 643 insertions(+)
create mode 100644 arch/arm/dts/an7583-evb.dts
create mode 100644 arch/arm/dts/an7583.dtsi
create mode 100644 arch/arm/mach-airoha/an7583/Makefile
create mode 100644 arch/arm/mach-airoha/an7583/init.c
create mode 100644 board/airoha/an7583/MAINTAINERS
create mode 100644 board/airoha/an7583/Makefile
create mode 100644 board/airoha/an7583/an7583_rfb.c
create mode 100644 configs/an7583_evb_defconfig
create mode 100644 include/configs/an7583.h
--- /dev/null
+++ b/arch/arm/dts/an7583-evb.dts
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/dts-v1/;
+
+/* Bootloader installs ATF here */
+/memreserve/ 0x80000000 0x200000;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "an7583.dtsi"
+
+/ {
+ model = "Airoha AN7583 Evaluation Board";
+ compatible = "airoha,an7583-evb", "airoha,an7583", "airoha,en7583";
+
+ aliases {
+ serial0 = &uart1;
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200 earlycon";
+ stdout-path = "serial0:115200n8";
+ linux,usable-memory-range = <0x0 0x80200000 0x0 0x1fe00000>;
+ };
+
+ /* When running as a first-stage bootloader this isn't filled in automatically */
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x0 0x20000000>;
+ };
+};
+
+&an7583_pinctrl {
+ pcie0_rst_pins: pcie0-rst-pins {
+ conf {
+ pins = "pcie_reset0";
+ drive-open-drain = <1>;
+ };
+ };
+
+ pcie1_rst_pins: pcie1-rst-pins {
+ conf {
+ pins = "pcie_reset1";
+ drive-open-drain = <1>;
+ };
+ };
+};
+
+&pcie0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie0_rst_pins>;
+ status = "okay";
+};
+
+&pcie1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie1_rst_pins>;
+ status = "okay";
+};
+
+&i2c0 {
+ status = "okay";
+};
+
+&snfi {
+ status = "okay";
+};
--- /dev/null
+++ b/arch/arm/dts/an7583.dtsi
@@ -0,0 +1,387 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/en7523-clk.h>
+#include <dt-bindings/reset/airoha,an7583-reset.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ atf-reserved-memory@80000000 {
+ no-map;
+ reg = <0x0 0x80000000 0x0 0x40000>;
+ };
+
+ npu-binary@84000000 {
+ no-map;
+ reg = <0x0 0x84000000 0x0 0xa00000>;
+ };
+
+ npu-flag@84b0000 {
+ no-map;
+ reg = <0x0 0x84b00000 0x0 0x100000>;
+ };
+
+ npu-pkt@85000000 {
+ no-map;
+ reg = <0x0 0x85000000 0x0 0x1a00000>;
+ };
+
+ npu-phyaddr@86b00000 {
+ no-map;
+ reg = <0x0 0x86b00000 0x0 0x100000>;
+ };
+
+ npu-rxdesc@86d00000 {
+ no-map;
+ reg = <0x0 0x86d00000 0x0 0x100000>;
+ };
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+
+ core1 {
+ cpu = <&cpu1>;
+ };
+ };
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0>;
+ enable-method = "psci";
+ next-level-cache = <&l2>;
+ #cooling-cells = <2>;
+ };
+
+ cpu1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x1>;
+ enable-method = "psci";
+ next-level-cache = <&l2>;
+ #cooling-cells = <2>;
+ };
+
+ l2: l2-cache {
+ compatible = "cache";
+ cache-size = <0x80000>;
+ cache-line-size = <64>;
+ cache-level = <2>;
+ cache-unified;
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+ };
+
+ soc {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ gic: interrupt-controller@9000000 {
+ compatible = "arm,gic-v3";
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x0 0x09000000 0x0 0x20000>,
+ <0x0 0x09080000 0x0 0x80000>,
+ <0x0 0x09400000 0x0 0x2000>,
+ <0x0 0x09500000 0x0 0x2000>,
+ <0x0 0x09600000 0x0 0x20000>;
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
+ };
+
+ chip_scu: syscon@1fa20000 {
+ compatible = "airoha,en7581-chip-scu", "syscon";
+ reg = <0x0 0x1fa20000 0x0 0x388>;
+ };
+
+ syscon@1fbe3400 {
+ compatible = "airoha,en7581-pbus-csr", "syscon";
+ reg = <0x0 0x1fbe3400 0x0 0xff>;
+ };
+
+ system-controller@1fa20000 {
+ compatible = "syscon", "simple-mfd";
+ reg = <0x0 0x1fb00000 0x0 0x970>;
+
+ scuclk: scuclk {
+ compatible = "airoha,an7583-scu";
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
+
+ mdio_0: mdio-0 {
+ compatible = "airoha,an7583-mdio";
+ resets = <&scuclk AN7583_MDIO0>;
+
+ airoha,bus-id = <0>;
+ };
+
+ mdio_1: mdio-1 {
+ compatible = "airoha,an7583-mdio";
+ resets = <&scuclk AN7583_MDIO1>;
+
+ airoha,bus-id = <1>;
+ };
+ };
+
+ system-controller@1fbf0200 {
+ compatible = "syscon", "simple-mfd";
+ reg = <0x0 0x1fbf0200 0x0 0xc0>;
+
+ an7583_pinctrl: pinctrl {
+ compatible = "airoha,en7583-pinctrl";
+
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
+ i2cclock: i2cclock@0 {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+
+ /* 20 MHz */
+ clock-frequency = <20000000>;
+ };
+
+ i2c0: i2c0@1fbf8000 {
+ compatible = "mediatek,mt7621-i2c";
+ reg = <0x0 0x1fbf8000 0x0 0x100>;
+
+ clocks = <&i2cclock>;
+
+ /* 100 kHz */
+ clock-frequency = <100000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "disable";
+ };
+
+ i2c1: i2c1@1fbf8100 {
+ compatible = "mediatek,mt7621-i2c";
+ reg = <0x0 0x1fbf8100 0x0 0x100>;
+
+ clocks = <&i2cclock>;
+
+ /* 100 kHz */
+ clock-frequency = <100000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "disable";
+ };
+
+ snfi: spi@1fa10000 {
+ compatible = "airoha,en7581-snand";
+ reg = <0x0 0x1fa10000 0x0 0x140>,
+ <0x0 0x1fa11000 0x0 0x600>;
+
+ clocks = <&scuclk EN7523_CLK_SPI>;
+ clock-names = "spi";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "disabled";
+
+ spi_nand: nand@0 {
+ compatible = "spi-nand";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+ spi-tx-bus-width = <1>;
+ spi-rx-bus-width = <2>;
+ };
+ };
+
+ uart1: serial@1fbf0000 {
+ compatible = "ns16550";
+ reg = <0x0 0x1fbf0000 0x0 0x30>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+ clock-frequency = <1843200>;
+ bootph-all;
+ };
+
+ uart2: serial@1fbf0300 {
+ compatible = "airoha,en7523-uart";
+ reg = <0x0 0x1fbf0300 0x0 0x30>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+ clock-frequency = <7372800>;
+
+ status = "disabled";
+ };
+
+ hsuart3: serial@1fbe1000 {
+ compatible = "airoha,en7523-uart";
+ reg = <0x0 0x1fbe1000 0x0 0x40>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+ clock-frequency = <7372800>;
+
+ status = "disabled";
+ };
+
+ uart4: serial@1fbf0600 {
+ compatible = "airoha,en7523-uart";
+ reg = <0x0 0x1fbf0600 0x0 0x30>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+ clock-frequency = <7372800>;
+
+ status = "disabled";
+ };
+
+ uart5: serial@1fbf0700 {
+ compatible = "airoha,en7523-uart";
+ reg = <0x0 0x1fbf0700 0x0 0x30>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+ clock-frequency = <7372800>;
+
+ status = "disabled";
+ };
+
+ pciephy: phy@1fa5a000 {
+ compatible = "airoha,en7581-pcie-phy";
+ reg = <0x0 0x1fa5a000 0x0 0xfff>,
+ <0x0 0x1fa5b000 0x0 0xfff>,
+ <0x0 0x1fa5c000 0x0 0xfff>,
+ <0x0 0x1fc10044 0x0 0x4>,
+ <0x0 0x1fc30044 0x0 0x4>,
+ <0x0 0x1fc15030 0x0 0x104>;
+ reg-names = "csr-2l", "pma0", "pma1",
+ "p0-xr-dtime", "p1-xr-dtime",
+ "rx-aeq";
+ #phy-cells = <0>;
+ };
+
+ pcie0: pcie@1fc00000 {
+ compatible = "airoha,an7583-pcie";
+ device_type = "pci";
+ linux,pci-domain = <0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+
+ reg = <0x0 0x1fc20000 0x0 0x1670>;
+ reg-names = "pcie-mac";
+
+ clocks = <&scuclk EN7523_CLK_PCIE>;
+ clock-names = "sys-ck";
+
+ phys = <&pciephy>;
+ phy-names = "pcie-phy";
+
+ ranges = <0x02000000 0 0x20000000 0x0 0x20000000 0 0x4000000>;
+
+ resets = <&scuclk AN7583_PCIE0_RST>,
+ <&scuclk AN7583_PCIE1_RST>;
+ reset-names = "phy-lane0", "phy-lane1";
+
+ interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+ bus-range = <0x00 0xff>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+ <0 0 0 2 &pcie_intc0 1>,
+ <0 0 0 3 &pcie_intc0 2>,
+ <0 0 0 4 &pcie_intc0 3>;
+
+ status = "disabled";
+
+ pcie_intc0: interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ };
+ };
+
+ pcie1: pcie@1fc20000 {
+ compatible = "airoha,an7583-pcie";
+ device_type = "pci";
+ linux,pci-domain = <1>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+
+ reg = <0x0 0x1fa92000 0x0 0x1670>;
+ reg-names = "pcie-mac";
+
+ clocks = <&scuclk EN7523_CLK_PCIE>;
+ clock-names = "sys-ck";
+
+ phys = <&pciephy>;
+ phy-names = "pcie-phy";
+
+ ranges = <0x02000000 0 0x24000000 0x0 0x24000000 0 0x4000000>;
+
+ resets = <&scuclk AN7583_PCIE0_RST>,
+ <&scuclk AN7583_PCIE1_RST>;
+ reset-names = "phy-lane0", "phy-lane1";
+
+ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+ bus-range = <0x00 0xff>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+ <0 0 0 2 &pcie_intc1 1>,
+ <0 0 0 3 &pcie_intc1 2>,
+ <0 0 0 4 &pcie_intc1 3>;
+
+ status = "disabled";
+
+ pcie_intc1: interrupt-controller {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <1>;
+ };
+ };
+ };
+};
--- a/arch/arm/mach-airoha/Kconfig
+++ b/arch/arm/mach-airoha/Kconfig
@@ -17,16 +17,30 @@ config TARGET_AN7581
Peripherals include Gigabit Ethernet, switch, USB3.0 and OTG, PCIe,
I2S, PCM, S/PDIF, UART, SPI, I2C, IR TX/RX, and PWM.
+config TARGET_AN7583
+ bool "Airoha AN7583 SoC"
+ select ARM64
+ help
+ The Airoha AN7583 is a ARM-based SoC with a quad-core Cortex-A7
+ including NEON and GPU, Mali-450 graphics, several DDR3 options,
+ crypto engine, built-in Wi-Fi / Bluetooth combo chip, JPEG decoder,
+ video interfaces supporting HDMI and MIPI, and video codec support.
+ Peripherals include Gigabit Ethernet, switch, USB3.0 and OTG, PCIe,
+ I2S, PCM, S/PDIF, UART, SPI, I2C, IR TX/RX, and PWM.
+
endchoice
config SYS_SOC
default "an7581" if TARGET_AN7581
+ default "an7583" if TARGET_AN7583
config SYS_BOARD
default "an7581" if TARGET_AN7581
+ default "an7583" if TARGET_AN7583
config SYS_CONFIG_NAME
default "an7581" if TARGET_AN7581
+ default "an7583" if TARGET_AN7583
endif
--- a/arch/arm/mach-airoha/Makefile
+++ b/arch/arm/mach-airoha/Makefile
@@ -3,3 +3,4 @@
obj-y += cpu.o
obj-$(CONFIG_TARGET_AN7581) += an7581/
+obj-$(CONFIG_TARGET_AN7583) += an7583/
--- /dev/null
+++ b/arch/arm/mach-airoha/an7583/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-y += init.o
--- /dev/null
+++ b/arch/arm/mach-airoha/an7583/init.c
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <fdtdec.h>
+#include <init.h>
+#include <asm/armv8/mmu.h>
+#include <asm/system.h>
+
+int print_cpuinfo(void)
+{
+ printf("CPU: Airoha AN7583\n");
+ return 0;
+}
+
+int dram_init(void)
+{
+ return fdtdec_setup_mem_size_base();
+}
+
+int dram_init_banksize(void)
+{
+ return fdtdec_setup_memory_banksize();
+}
+
+void reset_cpu(ulong addr)
+{
+ psci_system_reset();
+}
+
+static struct mm_region an7583_mem_map[] = {
+ {
+ /* DDR */
+ .virt = 0x80000000UL,
+ .phys = 0x80000000UL,
+ .size = 0x80000000UL,
+ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | PTE_BLOCK_OUTER_SHARE,
+ }, {
+ .virt = 0x00000000UL,
+ .phys = 0x00000000UL,
+ .size = 0x20000000UL,
+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+ PTE_BLOCK_NON_SHARE |
+ PTE_BLOCK_PXN | PTE_BLOCK_UXN
+ }, {
+ 0,
+ }
+};
+struct mm_region *mem_map = an7583_mem_map;
--- /dev/null
+++ b/board/airoha/an7583/MAINTAINERS
@@ -0,0 +1,5 @@
+AN7581
+M: Christian Marangi <ansuelsmth@gmail.com>
+S: Maintained
+N: airoha
+N: an7583
--- /dev/null
+++ b/board/airoha/an7583/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-y += an7583_rfb.o
--- /dev/null
+++ b/board/airoha/an7583/an7583_rfb.c
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Author: Christian Marangi <ansuelsmth@gmail.com>
+ */
+
+#include <asm/global_data.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+ /* address of boot parameters */
+ gd->bd->bi_boot_params = CFG_SYS_SDRAM_BASE + 0x100;
+
+ return 0;
+}
--- /dev/null
+++ b/configs/an7583_evb_defconfig
@@ -0,0 +1,81 @@
+CONFIG_ARM=y
+CONFIG_ARCH_AIROHA=y
+CONFIG_TARGET_AN7583=y
+CONFIG_TEXT_BASE=0x81E00000
+CONFIG_SYS_MALLOC_F_LEN=0x4000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x4000
+CONFIG_ENV_OFFSET=0x7c000
+CONFIG_DM_GPIO=y
+CONFIG_DEFAULT_DEVICE_TREE="an7583-evb"
+CONFIG_DM_RESET=y
+CONFIG_SYS_LOAD_ADDR=0x81800000
+CONFIG_BUILD_TARGET="u-boot.bin"
+# CONFIG_EFI_LOADER is not set
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_BOOTDELAY=3
+CONFIG_DEFAULT_FDT_FILE="an7583-evb"
+CONFIG_SYS_PBSIZE=1049
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="U-Boot> "
+CONFIG_SYS_MAXARGS=8
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_BOOTMENU=y
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_XIMG is not set
+CONFIG_CMD_BIND=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_SPI=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_CMD_LOG=y
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_RELOC_GD_ENV_ADDR=y
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_CLK=y
+CONFIG_DMA=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MMC_HS200_SUPPORT=y
+CONFIG_MTD=y
+CONFIG_DM_MTD=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_ISSI=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_PHYLIB=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCONF=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_RAM=y
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_SHA512=y
+CONFIG_AIROHA_ETH=y
+CONFIG_MMC_MTK=y
+CONFIG_AIROHA_SNFI_SPI=y
--- /dev/null
+++ b/include/configs/an7583.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Configuration for Airoha AN7583
+ */
+
+#ifndef __AN7583_H
+#define __AN7583_H
+
+#include <linux/sizes.h>
+
+#define CFG_SYS_UBOOT_BASE CONFIG_TEXT_BASE
+
+#define CFG_SYS_INIT_RAM_ADDR CONFIG_TEXT_BASE
+#define CFG_SYS_INIT_RAM_SIZE SZ_2M
+
+/* DRAM */
+#define CFG_SYS_SDRAM_BASE 0x80000000
+
+#endif

View File

@@ -0,0 +1,171 @@
From 62ab067847b30d73d4f661bdc99e9f32ff03f338 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Tue, 29 Apr 2025 13:19:11 +0200
Subject: [PATCH] clk: airoha: add support for Airoha AN7583 SoC clock
Add support for Airoha AN7583 SoC clock that implement more base values
for clocks compared to AN7581.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/clk/airoha/clk-airoha.c | 131 ++++++++++++++++++++++++++++++++
1 file changed, 131 insertions(+)
--- a/drivers/clk/airoha/clk-airoha.c
+++ b/drivers/clk/airoha/clk-airoha.c
@@ -73,6 +73,14 @@ static const u32 bus7581_base[] = { 6000
static const u32 npu7581_base[] = { 800000000, 750000000, 720000000, 600000000 };
static const u32 crypto_base[] = { 540000000, 480000000 };
static const u32 emmc7581_base[] = { 200000000, 150000000 };
+/* AN7583 */
+static const u32 gsw7583_base[] = { 540672000, 270336000, 400000000, 200000000 };
+static const u32 emi7583_base[] = { 540672000, 480000000, 400000000, 300000000 };
+static const u32 bus7583_base[] = { 600000000, 540672000, 480000000, 400000000 };
+static const u32 spi7583_base[] = { 100000000, 12500000 };
+static const u32 npu7583_base[] = { 666000000, 800000000, 720000000, 600000000 };
+static const u32 crypto7583_base[] = { 540672000, 400000000 };
+static const u32 emmc7583_base[] = { 150000000, 200000000 };
static const struct airoha_clk_desc en7581_base_clks[EN7581_MAX_CLKS] = {
[EN7523_CLK_GSW] = {
@@ -186,6 +194,121 @@ static const struct airoha_clk_desc en75
}
};
+static const struct airoha_clk_desc an7583_base_clks[EN7581_MAX_CLKS] = {
+ [EN7523_CLK_GSW] = {
+ .id = EN7523_CLK_GSW,
+ .name = "gsw",
+
+ .base_reg = REG_GSW_CLK_DIV_SEL,
+ .base_bits = 2,
+ .base_shift = 8,
+ .base_values = gsw7583_base,
+ .n_base_values = ARRAY_SIZE(gsw7583_base),
+
+ .div_bits = 3,
+ .div_shift = 0,
+ .div_step = 1,
+ .div_offset = 1,
+ },
+ [EN7523_CLK_EMI] = {
+ .id = EN7523_CLK_EMI,
+ .name = "emi",
+
+ .base_reg = REG_EMI_CLK_DIV_SEL,
+ .base_bits = 2,
+ .base_shift = 8,
+ .base_values = emi7583_base,
+ .n_base_values = ARRAY_SIZE(emi7583_base),
+
+ .div_bits = 3,
+ .div_shift = 0,
+ .div_step = 1,
+ .div_offset = 1,
+ },
+ [EN7523_CLK_BUS] = {
+ .id = EN7523_CLK_BUS,
+ .name = "bus",
+
+ .base_reg = REG_BUS_CLK_DIV_SEL,
+ .base_bits = 2,
+ .base_shift = 8,
+ .base_values = bus7583_base,
+ .n_base_values = ARRAY_SIZE(bus7583_base),
+
+ .div_bits = 3,
+ .div_shift = 0,
+ .div_step = 1,
+ .div_offset = 1,
+ },
+ [EN7523_CLK_SLIC] = {
+ .id = EN7523_CLK_SLIC,
+ .name = "slic",
+
+ .base_reg = REG_SPI_CLK_FREQ_SEL,
+ .base_bits = 1,
+ .base_shift = 0,
+ .base_values = slic_base,
+ .n_base_values = ARRAY_SIZE(slic_base),
+
+ .div_reg = REG_SPI_CLK_DIV_SEL,
+ .div_bits = 5,
+ .div_shift = 24,
+ .div_val0 = 20,
+ .div_step = 2,
+ },
+ [EN7523_CLK_SPI] = {
+ .id = EN7523_CLK_SPI,
+ .name = "spi",
+
+ .base_reg = REG_SPI_CLK_FREQ_SEL,
+ .base_bits = 1,
+ .base_shift = 1,
+ .base_values = spi7583_base,
+ .n_base_values = ARRAY_SIZE(spi7583_base),
+
+ .div_reg = REG_SPI_CLK_DIV_SEL,
+ .div_bits = 5,
+ .div_shift = 8,
+ .div_val0 = 40,
+ .div_step = 2,
+ },
+ [EN7523_CLK_NPU] = {
+ .id = EN7523_CLK_NPU,
+ .name = "npu",
+
+ .base_reg = REG_NPU_CLK_DIV_SEL,
+ .base_bits = 2,
+ .base_shift = 9,
+ .base_values = npu7583_base,
+ .n_base_values = ARRAY_SIZE(npu7583_base),
+
+ .div_bits = 3,
+ .div_shift = 0,
+ .div_step = 1,
+ .div_offset = 1,
+ },
+ [EN7523_CLK_CRYPTO] = {
+ .id = EN7523_CLK_CRYPTO,
+ .name = "crypto",
+
+ .base_reg = REG_CRYPTO_CLKSRC2,
+ .base_bits = 1,
+ .base_shift = 0,
+ .base_values = crypto7583_base,
+ .n_base_values = ARRAY_SIZE(crypto7583_base),
+ },
+ [EN7581_CLK_EMMC] = {
+ .id = EN7581_CLK_EMMC,
+ .name = "emmc",
+
+ .base_reg = REG_CRYPTO_CLKSRC2,
+ .base_bits = 1,
+ .base_shift = 13,
+ .base_values = emmc7583_base,
+ .n_base_values = ARRAY_SIZE(emmc7583_base),
+ }
+};
+
static u32 airoha_clk_get_base_rate(const struct airoha_clk_desc *desc, u32 val)
{
if (!desc->base_bits)
@@ -436,10 +559,18 @@ static const struct airoha_clk_soc_data
.descs = en7581_base_clks,
};
+static const struct airoha_clk_soc_data an7583_data = {
+ .num_clocks = ARRAY_SIZE(an7583_base_clks),
+ .descs = an7583_base_clks,
+};
+
static const struct udevice_id airoha_clk_ids[] = {
{ .compatible = "airoha,en7581-scu",
.data = (ulong)&en7581_data,
},
+ { .compatible = "airoha,an7583-scu",
+ .data = (ulong)&an7583_data,
+ },
{ }
};

View File

@@ -0,0 +1,90 @@
From 7daf0565460e548eb766a0bcc171c34e02dd6eba Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Mon, 19 May 2025 14:22:55 +0200
Subject: [PATCH 3/6] reset: airoha: convert to regmap API
In preparation for support for Airoha AN7583, convert the driver to
regmap API. This is needed as Airoha AN7583 will use syscon to access
reset registers.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/reset/reset-airoha.c | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
--- a/drivers/reset/reset-airoha.c
+++ b/drivers/reset/reset-airoha.c
@@ -10,6 +10,7 @@
#include <dm.h>
#include <linux/io.h>
#include <reset-uclass.h>
+#include <regmap.h>
#include <dt-bindings/reset/airoha,en7581-reset.h>
@@ -21,7 +22,7 @@
struct airoha_reset_priv {
const u16 *bank_ofs;
const u16 *idx_map;
- void __iomem *base;
+ struct regmap *map;
};
static const u16 en7581_rst_ofs[] = {
@@ -90,17 +91,11 @@ static const u16 en7581_rst_map[] = {
static int airoha_reset_update(struct airoha_reset_priv *priv,
unsigned long id, bool assert)
{
- void __iomem *addr = priv->base + priv->bank_ofs[id / RST_NR_PER_BANK];
- u32 val;
-
- val = readl(addr);
- if (assert)
- val |= BIT(id % RST_NR_PER_BANK);
- else
- val &= ~BIT(id % RST_NR_PER_BANK);
- writel(val, addr);
+ u16 offset = priv->bank_ofs[id / RST_NR_PER_BANK];
- return 0;
+ return regmap_update_bits(priv->map, offset,
+ BIT(id % RST_NR_PER_BANK),
+ assert ? BIT(id % RST_NR_PER_BANK) : 0);
}
static int airoha_reset_assert(struct reset_ctl *reset_ctl)
@@ -123,11 +118,16 @@ static int airoha_reset_status(struct re
{
struct airoha_reset_priv *priv = dev_get_priv(reset_ctl->dev);
int id = reset_ctl->id;
- void __iomem *addr;
+ u16 offset;
+ u32 val;
+ int ret;
- addr = priv->base + priv->bank_ofs[id / RST_NR_PER_BANK];
+ offset = priv->bank_ofs[id / RST_NR_PER_BANK];
+ ret = regmap_read(priv->map, offset, &val);
+ if (ret)
+ return ret;
- return !!(readl(addr) & BIT(id % RST_NR_PER_BANK));
+ return !!(val & BIT(id % RST_NR_PER_BANK));
}
static int airoha_reset_xlate(struct reset_ctl *reset_ctl,
@@ -153,10 +153,11 @@ static struct reset_ops airoha_reset_ops
static int airoha_reset_probe(struct udevice *dev)
{
struct airoha_reset_priv *priv = dev_get_priv(dev);
+ int ret;
- priv->base = dev_remap_addr(dev);
- if (!priv->base)
- return -ENOMEM;
+ ret = regmap_init_mem(dev_ofnode(dev), &priv->map);
+ if (ret)
+ return ret;
priv->bank_ofs = en7581_rst_ofs;
priv->idx_map = en7581_rst_map;

View File

@@ -0,0 +1,226 @@
From 23031ad51d55361be507b83307f55995e0204188 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Tue, 29 Apr 2025 13:33:35 +0200
Subject: [PATCH 4/6] reset: airoha: Add support for Airoha AN7583 reset
Adapt the Airoha reset driver to support Airoha AN7583 node structure.
In AN7583 the register is exposed by the parent syscon hence a different
logic needs to be applied. Also the reset line differ from AN7581 hence
a dedicated table is needed.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/reset/reset-airoha.c | 94 ++++++++++++++++++-
.../dt-bindings/reset/airoha,an7583-reset.h | 61 ++++++++++++
2 files changed, 153 insertions(+), 2 deletions(-)
create mode 100644 include/dt-bindings/reset/airoha,an7583-reset.h
--- a/drivers/reset/reset-airoha.c
+++ b/drivers/reset/reset-airoha.c
@@ -11,8 +11,10 @@
#include <linux/io.h>
#include <reset-uclass.h>
#include <regmap.h>
+#include <syscon.h>
#include <dt-bindings/reset/airoha,en7581-reset.h>
+#include <dt-bindings/reset/airoha,an7583-reset.h>
#define RST_NR_PER_BANK 32
@@ -22,6 +24,7 @@
struct airoha_reset_priv {
const u16 *bank_ofs;
const u16 *idx_map;
+ int num_rsts;
struct regmap *map;
};
@@ -88,6 +91,59 @@ static const u16 en7581_rst_map[] = {
[EN7581_XPON_MAC_RST] = RST_NR_PER_BANK + 31,
};
+static const u16 an7583_rst_map[] = {
+ /* RST_CTRL2 */
+ [AN7583_XPON_PHY_RST] = 0,
+ [AN7583_GPON_OLT_RST] = 1,
+ [AN7583_CPU_TIMER2_RST] = 2,
+ [AN7583_HSUART_RST] = 3,
+ [AN7583_UART4_RST] = 4,
+ [AN7583_UART5_RST] = 5,
+ [AN7583_I2C2_RST] = 6,
+ [AN7583_XSI_MAC_RST] = 7,
+ [AN7583_XSI_PHY_RST] = 8,
+ [AN7583_NPU_RST] = 9,
+ [AN7583_TRNG_MSTART_RST] = 12,
+ [AN7583_DUAL_HSI0_RST] = 13,
+ [AN7583_DUAL_HSI1_RST] = 14,
+ [AN7583_DUAL_HSI0_MAC_RST] = 16,
+ [AN7583_DUAL_HSI1_MAC_RST] = 17,
+ [AN7583_WDMA_RST] = 19,
+ [AN7583_WOE0_RST] = 20,
+ [AN7583_HSDMA_RST] = 22,
+ [AN7583_TDMA_RST] = 24,
+ [AN7583_EMMC_RST] = 25,
+ [AN7583_SOE_RST] = 26,
+ [AN7583_XFP_MAC_RST] = 28,
+ [AN7583_MDIO0] = 30,
+ [AN7583_MDIO1] = 31,
+ /* RST_CTRL1 */
+ [AN7583_PCM1_ZSI_ISI_RST] = RST_NR_PER_BANK + 0,
+ [AN7583_FE_PDMA_RST] = RST_NR_PER_BANK + 1,
+ [AN7583_FE_QDMA_RST] = RST_NR_PER_BANK + 2,
+ [AN7583_PCM_SPIWP_RST] = RST_NR_PER_BANK + 4,
+ [AN7583_CRYPTO_RST] = RST_NR_PER_BANK + 6,
+ [AN7583_TIMER_RST] = RST_NR_PER_BANK + 8,
+ [AN7583_PCM1_RST] = RST_NR_PER_BANK + 11,
+ [AN7583_UART_RST] = RST_NR_PER_BANK + 12,
+ [AN7583_GPIO_RST] = RST_NR_PER_BANK + 13,
+ [AN7583_GDMA_RST] = RST_NR_PER_BANK + 14,
+ [AN7583_I2C_MASTER_RST] = RST_NR_PER_BANK + 16,
+ [AN7583_PCM2_ZSI_ISI_RST] = RST_NR_PER_BANK + 17,
+ [AN7583_SFC_RST] = RST_NR_PER_BANK + 18,
+ [AN7583_UART2_RST] = RST_NR_PER_BANK + 19,
+ [AN7583_GDMP_RST] = RST_NR_PER_BANK + 20,
+ [AN7583_FE_RST] = RST_NR_PER_BANK + 21,
+ [AN7583_USB_HOST_P0_RST] = RST_NR_PER_BANK + 22,
+ [AN7583_GSW_RST] = RST_NR_PER_BANK + 23,
+ [AN7583_SFC2_PCM_RST] = RST_NR_PER_BANK + 25,
+ [AN7583_PCIE0_RST] = RST_NR_PER_BANK + 26,
+ [AN7583_PCIE1_RST] = RST_NR_PER_BANK + 27,
+ [AN7583_CPU_TIMER_RST] = RST_NR_PER_BANK + 28,
+ [AN7583_PCIE_HB_RST] = RST_NR_PER_BANK + 29,
+ [AN7583_XPON_MAC_RST] = RST_NR_PER_BANK + 31,
+};
+
static int airoha_reset_update(struct airoha_reset_priv *priv,
unsigned long id, bool assert)
{
@@ -135,7 +191,7 @@ static int airoha_reset_xlate(struct reset_ctl *reset_ctl,
{
struct airoha_reset_priv *priv = dev_get_priv(reset_ctl->dev);
- if (args->args[0] >= ARRAY_SIZE(en7581_rst_map))
+ if (args->args[0] >= priv->num_rsts)
return -EINVAL;
reset_ctl->id = priv->idx_map[args->args[0]];
@@ -150,7 +206,7 @@ static struct reset_ops airoha_reset_ops = {
.rst_status = airoha_reset_status,
};
-static int airoha_reset_probe(struct udevice *dev)
+static int an7581_reset_probe(struct udevice *dev)
{
struct airoha_reset_priv *priv = dev_get_priv(dev);
int ret;
@@ -161,10 +217,44 @@ static int airoha_reset_probe(struct udevice *dev)
priv->bank_ofs = en7581_rst_ofs;
priv->idx_map = en7581_rst_map;
+ priv->num_rsts = ARRAY_SIZE(en7581_rst_map);
+
+ return 0;
+}
+
+static int an7583_reset_probe(struct udevice *dev)
+{
+ struct airoha_reset_priv *priv = dev_get_priv(dev);
+ ofnode pnode, scu_node = dev_ofnode(dev);
+
+ pnode = ofnode_get_parent(scu_node);
+ if (!ofnode_valid(pnode))
+ return -EINVAL;
+
+ priv->map = syscon_node_to_regmap(pnode);
+ if (IS_ERR(priv->map))
+ return PTR_ERR(priv->map);
+
+ priv->bank_ofs = en7581_rst_ofs;
+ priv->idx_map = an7583_rst_map;
+ priv->num_rsts = ARRAY_SIZE(an7583_rst_map);
return 0;
}
+static int airoha_reset_probe(struct udevice *dev)
+{
+ if (ofnode_device_is_compatible(dev_ofnode(dev),
+ "airoha,en7581-scu"))
+ return an7581_reset_probe(dev);
+
+ if (ofnode_device_is_compatible(dev_ofnode(dev),
+ "airoha,an7583-scu"))
+ return an7583_reset_probe(dev);
+
+ return -ENODEV;
+}
+
U_BOOT_DRIVER(airoha_reset) = {
.name = "airoha-reset",
.id = UCLASS_RESET,
--- /dev/null
+++ b/include/dt-bindings/reset/airoha,an7583-reset.h
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2024 AIROHA Inc
+ * Author: Christian Marangi <ansuelsmth@gmail.com>
+ */
+
+#ifndef __DT_BINDINGS_RESET_CONTROLLER_AIROHA_AN7583_H_
+#define __DT_BINDINGS_RESET_CONTROLLER_AIROHA_AN7583_H_
+
+/* RST_CTRL2 */
+#define AN7583_XPON_PHY_RST 0
+#define AN7583_GPON_OLT_RST 1
+#define AN7583_CPU_TIMER2_RST 2
+#define AN7583_HSUART_RST 3
+#define AN7583_UART4_RST 4
+#define AN7583_UART5_RST 5
+#define AN7583_I2C2_RST 6
+#define AN7583_XSI_MAC_RST 7
+#define AN7583_XSI_PHY_RST 8
+#define AN7583_NPU_RST 9
+#define AN7583_TRNG_MSTART_RST 10
+#define AN7583_DUAL_HSI0_RST 11
+#define AN7583_DUAL_HSI1_RST 12
+#define AN7583_DUAL_HSI0_MAC_RST 13
+#define AN7583_DUAL_HSI1_MAC_RST 14
+#define AN7583_WDMA_RST 15
+#define AN7583_WOE0_RST 16
+#define AN7583_HSDMA_RST 17
+#define AN7583_TDMA_RST 18
+#define AN7583_EMMC_RST 19
+#define AN7583_SOE_RST 20
+#define AN7583_XFP_MAC_RST 21
+#define AN7583_MDIO0 22
+#define AN7583_MDIO1 23
+/* RST_CTRL1 */
+#define AN7583_PCM1_ZSI_ISI_RST 24
+#define AN7583_FE_PDMA_RST 25
+#define AN7583_FE_QDMA_RST 26
+#define AN7583_PCM_SPIWP_RST 27
+#define AN7583_CRYPTO_RST 28
+#define AN7583_TIMER_RST 29
+#define AN7583_PCM1_RST 30
+#define AN7583_UART_RST 31
+#define AN7583_GPIO_RST 32
+#define AN7583_GDMA_RST 33
+#define AN7583_I2C_MASTER_RST 34
+#define AN7583_PCM2_ZSI_ISI_RST 35
+#define AN7583_SFC_RST 36
+#define AN7583_UART2_RST 37
+#define AN7583_GDMP_RST 38
+#define AN7583_FE_RST 39
+#define AN7583_USB_HOST_P0_RST 40
+#define AN7583_GSW_RST 41
+#define AN7583_SFC2_PCM_RST 42
+#define AN7583_PCIE0_RST 43
+#define AN7583_PCIE1_RST 44
+#define AN7583_CPU_TIMER_RST 45
+#define AN7583_PCIE_HB_RST 46
+#define AN7583_XPON_MAC_RST 47
+
+#endif /* __DT_BINDINGS_RESET_CONTROLLER_AIROHA_AN7583_H_ */

View File

@@ -0,0 +1,278 @@
From dfdc7309ba22f6a6b6c581acfe95a222108bd760 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Mon, 19 May 2025 14:29:53 +0200
Subject: [PATCH] net: airoha: add support for Airoha AN7583
Add support for Ethernet controller present in Airoha AN7583. This
follow the same implementation of Airoha AN7581 with the only difference
of having a different reset number and a different logic to reach the
SCU node.
Generalize the driver for these 2 part to account for these minor
difference.
The switch init part also required some care as the Switch Internal PHY
enable BMCR_PDOWN by default and tweak to GEPHY_CONN_CFG is also needed.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/net/airoha_eth.c | 168 ++++++++++++++++++++++++++++++++++-----
1 file changed, 147 insertions(+), 21 deletions(-)
--- a/drivers/net/airoha_eth.c
+++ b/drivers/net/airoha_eth.c
@@ -20,6 +20,7 @@
#include <linux/dma-mapping.h>
#include <linux/io.h>
#include <linux/iopoll.h>
+#include <linux/mii.h>
#include <linux/time.h>
#define AIROHA_MAX_NUM_GDM_PORTS 1
@@ -27,6 +28,11 @@
#define AIROHA_MAX_NUM_RSTS 3
#define AIROHA_MAX_NUM_XSI_RSTS 4
+#define AIROHA_MAX_NUM_SWITCH_PORT 4
+#define AIROHA_MAX_PBUS_TRY 10
+#define AIROHA_PBUS_SLEEP 100
+#define AIROHA_PBUS_C22_MASK 0x800000
+
#define AIROHA_MAX_PACKET_SIZE 2048
#define AIROHA_NUM_TX_RING 1
#define AIROHA_NUM_RX_RING 1
@@ -77,6 +83,19 @@
#define SWITCH_PHY_PRE_EN BIT(15)
#define SWITCH_PHY_END_ADDR GENMASK(12, 8)
#define SWITCH_PHY_ST_ADDR GENMASK(4, 0)
+#define SWITCH_GEPHY_CONN_CFG 0x7c14
+#define SWITCH_DPHY_CKIN_SEL BIT(31)
+#define SWITCH_PHY_CORE_REG_CLK_SEL BIT(30)
+#define SWITCH_ETHER_AFE_PWD GENMASK(28, 24)
+#define SWITCH_PBUS_PHY_IAC 0x7c20
+#define SWITCH_PBUS_PHY_START BIT(31)
+#define SWITCH_PBUS_PHY_CMD BIT(30)
+#define SWITCH_PBUS_PHY_CMD_READ FIELD_PREP(SWITCH_PBUS_PHY_CMD, 0x0)
+#define SWITCH_PBUS_PHY_CMD_WRITE FIELD_PREP(SWITCH_PBUS_PHY_CMD, 0x1)
+#define SWITCH_PBUS_PHY_PORTADDR GENMASK(28, 24)
+#define SWITCH_PBUS_PHY_REGADDR GENMASK(23, 0)
+#define SWITCH_PBUS_PHY_IAWD 0x7c24
+#define SWITCH_PBUS_PHY_IARD 0x7c28
/* FE */
#define PSE_BASE 0x0100
@@ -312,6 +331,26 @@ struct airoha_eth {
struct airoha_gdm_port *ports[AIROHA_MAX_NUM_GDM_PORTS];
};
+struct airoha_eth_soc_data {
+ int num_xsi_rsts;
+ const char * const *xsi_rsts_names;
+ ofnode (*get_scu_node)(struct udevice *dev);
+ const char *switch_compatible;
+};
+
+static const char * const en7581_xsi_rsts_names[] = {
+ "hsi0-mac",
+ "hsi1-mac",
+ "hsi-mac",
+ "xfp-mac",
+};
+
+static const char * const an7583_xsi_rsts_names[] = {
+ "hsi0-mac",
+ "hsi1-mac",
+ "xfp-mac",
+};
+
static u32 airoha_rr(void __iomem *base, u32 offset)
{
return readl(base + offset);
@@ -352,8 +391,12 @@ static u32 airoha_rmw(void __iomem *base, u32 offset, u32 mask, u32 val)
#define airoha_qdma_clear(qdma, offset, val) \
airoha_rmw((qdma)->regs, (offset), (val), 0)
+#define airoha_switch_rr(eth, offset) \
+ airoha_rr((eth)->switch_regs, (offset))
#define airoha_switch_wr(eth, offset, val) \
airoha_wr((eth)->switch_regs, (offset), (val))
+#define airoha_switch_rmw(eth, offset, mask, val) \
+ airoha_rmw((eth)->switch_regs, (offset), (mask), (val))
static inline dma_addr_t dma_map_unaligned(void *vaddr, size_t len,
enum dma_data_direction dir)
@@ -682,10 +725,12 @@ static int airoha_hw_init(struct udevice *dev,
static int airoha_switch_init(struct udevice *dev, struct airoha_eth *eth)
{
+ struct airoha_eth_soc_data *data = (void *)dev_get_driver_data(dev);
ofnode switch_node;
fdt_addr_t addr;
- switch_node = ofnode_by_compatible(ofnode_null(), "airoha,en7581-switch");
+ switch_node = ofnode_by_compatible(ofnode_null(),
+ data->switch_compatible);
if (!ofnode_valid(switch_node))
return -EINVAL;
@@ -717,17 +762,71 @@ static int airoha_switch_init(struct udevice *dev, struct airoha_eth *eth)
FIELD_PREP(SWITCH_PHY_END_ADDR, 0xc) |
FIELD_PREP(SWITCH_PHY_ST_ADDR, 0x8));
+ /* AN7583 require tweak to GEPHY_CONN_CFG and clear PHY BMCR_PDOWN */
+ if (!strcmp(data->switch_compatible, "airoha,an7583-switch")) {
+ int i;
+
+ airoha_switch_rmw(eth, SWITCH_GEPHY_CONN_CFG,
+ SWITCH_DPHY_CKIN_SEL |
+ SWITCH_PHY_CORE_REG_CLK_SEL |
+ SWITCH_ETHER_AFE_PWD,
+ SWITCH_DPHY_CKIN_SEL |
+ SWITCH_PHY_CORE_REG_CLK_SEL |
+ FIELD_PREP(SWITCH_ETHER_AFE_PWD, 0));
+
+ /* Disable BMCR_PDOWN for every PHY */
+ for (i = 0; i < AIROHA_MAX_NUM_SWITCH_PORT; i++) {
+ int try;
+ u32 val;
+
+ airoha_switch_wr(eth, SWITCH_PBUS_PHY_IAC,
+ SWITCH_PBUS_PHY_START |
+ SWITCH_PBUS_PHY_CMD_READ |
+ FIELD_PREP(SWITCH_PBUS_PHY_PORTADDR, i) |
+ FIELD_PREP(SWITCH_PBUS_PHY_REGADDR,
+ AIROHA_PBUS_C22_MASK | MII_BMCR));
+
+ for (try = 0; try < AIROHA_MAX_PBUS_TRY; try++) {
+ val = airoha_switch_rr(eth, SWITCH_PBUS_PHY_IAC);
+ if (!(val & SWITCH_PBUS_PHY_START))
+ break;
+
+ udelay(AIROHA_PBUS_SLEEP);
+ }
+
+ val = airoha_switch_rr(eth, SWITCH_PBUS_PHY_IARD);
+ val &= ~BMCR_PDOWN;
+
+ airoha_switch_wr(eth, SWITCH_PBUS_PHY_IAWD, val);
+ airoha_switch_wr(eth, SWITCH_PBUS_PHY_IAC,
+ SWITCH_PBUS_PHY_START |
+ SWITCH_PBUS_PHY_CMD_WRITE |
+ FIELD_PREP(SWITCH_PBUS_PHY_PORTADDR, i) |
+ FIELD_PREP(SWITCH_PBUS_PHY_REGADDR,
+ AIROHA_PBUS_C22_MASK | MII_BMCR));
+
+ for (try = 0; try < AIROHA_MAX_PBUS_TRY; try++) {
+ val = airoha_switch_rr(eth, SWITCH_PBUS_PHY_IAC);
+ if (!(val & SWITCH_PBUS_PHY_START))
+ break;
+
+ udelay(AIROHA_PBUS_SLEEP);
+ }
+ }
+ }
+
return 0;
}
static int airoha_eth_probe(struct udevice *dev)
{
+ struct airoha_eth_soc_data *data = (void *)dev_get_driver_data(dev);
struct airoha_eth *eth = dev_get_priv(dev);
struct regmap *scu_regmap;
ofnode scu_node;
- int ret;
+ int i, ret;
- scu_node = ofnode_by_compatible(ofnode_null(), "airoha,en7581-scu");
+ scu_node = data->get_scu_node(dev);
if (!ofnode_valid(scu_node))
return -EINVAL;
@@ -751,11 +850,11 @@ static int airoha_eth_probe(struct udevice *dev)
return -ENOMEM;
eth->rsts.count = AIROHA_MAX_NUM_RSTS;
- eth->xsi_rsts.resets = devm_kcalloc(dev, AIROHA_MAX_NUM_XSI_RSTS,
+ eth->xsi_rsts.resets = devm_kcalloc(dev, data->num_xsi_rsts,
sizeof(struct reset_ctl), GFP_KERNEL);
if (!eth->xsi_rsts.resets)
return -ENOMEM;
- eth->xsi_rsts.count = AIROHA_MAX_NUM_XSI_RSTS;
+ eth->xsi_rsts.count = data->num_xsi_rsts;
ret = reset_get_by_name(dev, "fe", &eth->rsts.resets[0]);
if (ret)
@@ -769,21 +868,12 @@ static int airoha_eth_probe(struct udevice *dev)
if (ret)
return ret;
- ret = reset_get_by_name(dev, "hsi0-mac", &eth->xsi_rsts.resets[0]);
- if (ret)
- return ret;
-
- ret = reset_get_by_name(dev, "hsi1-mac", &eth->xsi_rsts.resets[1]);
- if (ret)
- return ret;
-
- ret = reset_get_by_name(dev, "hsi-mac", &eth->xsi_rsts.resets[2]);
- if (ret)
- return ret;
-
- ret = reset_get_by_name(dev, "xfp-mac", &eth->xsi_rsts.resets[3]);
- if (ret)
- return ret;
+ for (i = 0; i < data->num_xsi_rsts; i++) {
+ ret = reset_get_by_name(dev, data->xsi_rsts_names[i],
+ &eth->xsi_rsts.resets[i]);
+ if (ret)
+ return ret;
+ }
ret = airoha_hw_init(dev, eth);
if (ret)
@@ -971,8 +1061,43 @@ static int arht_eth_write_hwaddr(struct udevice *dev)
return 0;
}
+static ofnode en7581_get_scu_node(struct udevice *dev)
+{
+ return ofnode_by_compatible(ofnode_null(), "airoha,en7581-scu");
+}
+
+static ofnode an7583_get_scu_node(struct udevice *dev)
+{
+ ofnode scu_node;
+
+ scu_node = ofnode_by_compatible(ofnode_null(), "airoha,an7583-scu");
+ if (!ofnode_valid(scu_node))
+ return scu_node;
+
+ return ofnode_get_parent(scu_node);
+}
+
+static const struct airoha_eth_soc_data en7581_data = {
+ .xsi_rsts_names = en7581_xsi_rsts_names,
+ .num_xsi_rsts = ARRAY_SIZE(en7581_xsi_rsts_names),
+ .get_scu_node = en7581_get_scu_node,
+ .switch_compatible = "airoha,en7581-switch",
+};
+
+static const struct airoha_eth_soc_data an7583_data = {
+ .xsi_rsts_names = an7583_xsi_rsts_names,
+ .num_xsi_rsts = ARRAY_SIZE(an7583_xsi_rsts_names),
+ .get_scu_node = an7583_get_scu_node,
+ .switch_compatible = "airoha,an7583-switch",
+};
+
static const struct udevice_id airoha_eth_ids[] = {
- { .compatible = "airoha,en7581-eth" },
+ { .compatible = "airoha,en7581-eth",
+ .data = (ulong)&en7581_data,
+ },
+ { .compatible = "airoha,an7583-eth",
+ .data = (ulong)&an7583_data,
+ },
{ }
};

View File

@@ -0,0 +1,45 @@
From 613d695d0939cbbe6b66933267e3a4be263e1c7b Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Mon, 19 May 2025 14:31:59 +0200
Subject: [PATCH 2/4] airoha: add Ethernet node in AN7583 dtsi
Add Ethernet node in AN7583 dtsi to add support for the integrated
Ethernet Controller.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
arch/arm/dts/an7583.dtsi | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
--- a/arch/arm/dts/an7583.dtsi
+++ b/arch/arm/dts/an7583.dtsi
@@ -130,6 +130,29 @@
reg = <0x0 0x1fa20000 0x0 0x388>;
};
+ eth: ethernet@1fb50000 {
+ compatible = "airoha,an7583-eth";
+ reg = <0 0x1fb50000 0 0x2600>,
+ <0 0x1fb54000 0 0x2000>,
+ <0 0x1fb56000 0 0x2000>;
+ reg-names = "fe", "qdma0", "qdma1";
+
+ resets = <&scuclk AN7583_FE_RST>,
+ <&scuclk AN7583_FE_PDMA_RST>,
+ <&scuclk AN7583_FE_QDMA_RST>,
+ <&scuclk AN7583_DUAL_HSI0_MAC_RST>,
+ <&scuclk AN7583_DUAL_HSI1_MAC_RST>,
+ <&scuclk AN7583_XFP_MAC_RST>;
+ reset-names = "fe", "pdma", "qdma",
+ "hsi0-mac", "hsi1-mac",
+ "xfp-mac";
+ };
+
+ switch: switch@1fb58000 {
+ compatible = "airoha,an7583-switch";
+ reg = <0 0x1fb58000 0 0x8000>;
+ };
+
syscon@1fbe3400 {
compatible = "airoha,en7581-pbus-csr", "syscon";
reg = <0x0 0x1fbe3400 0x0 0xff>;

View File

@@ -0,0 +1,65 @@
From 1a3039c1e3a194b3f1e72b4506f8bdcd5b10fbbf Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Mon, 19 May 2025 14:52:26 +0200
Subject: [PATCH] airoha: add MMC node for Airoha AN7583
Add MMC node for Airoha AN7583. These follow the same node of Airoha
AN7581.
Similar to Airoha AN7581, add the fixed regulator and fixed clock for
MMC.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
arch/arm/dts/an7583.dtsi | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
--- a/arch/arm/dts/an7583.dtsi
+++ b/arch/arm/dts/an7583.dtsi
@@ -105,6 +105,21 @@
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
};
+ clk25m: oscillator {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <25000000>;
+ clock-output-names = "clkxtal";
+ };
+
+ vmmc_3v3: regulator-vmmc-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "vmmc";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
soc {
compatible = "simple-bus";
#address-cells = <2>;
@@ -259,6 +274,24 @@
};
};
+ mmc0: mmc@1fa0e000 {
+ compatible = "mediatek,mt7622-mmc";
+ reg = <0x0 0x1fa0e000 0x0 0x1000>,
+ <0x0 0x1fa0c000 0x0 0x60>;
+ interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&scuclk EN7581_CLK_EMMC>, <&clk25m>;
+ clock-names = "source", "hclk";
+ bus-width = <4>;
+ max-frequency = <52000000>;
+ vmmc-supply = <&vmmc_3v3>;
+ disable-wp;
+ cap-mmc-highspeed;
+ non-removable;
+
+ assigned-clocks = <&scuclk EN7581_CLK_EMMC>;
+ assigned-clock-rates = <200000000>;
+ };
+
uart1: serial@1fbf0000 {
compatible = "ns16550";
reg = <0x0 0x1fbf0000 0x0 0x30>;

View File

@@ -0,0 +1,93 @@
From e7b7bd119b68fe9106a1c9a45a7eba811fc40ce0 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Fri, 3 Oct 2025 20:12:06 +0300
Subject: [PATCH v2 1/2] net: airoha: simplify rx/free packet logic a bit
The commit 997786bbf473 ("drivers/net/airoha_eth: fix stalling in package
receiving") can be improved. Instead of returning previous descriptor
it's possible:
* do nothing in even descriptor case
* return 2 descriptor to the queue (current and previous) in the odd
descriptor case.
This patch:
* implements above approach
* remove logic not required within new approach
* adds note that PKTBUFSRX must be even and larger than 7
for reliable driver operations
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/net/airoha_eth.c | 40 +++++++++++++++++++++-------------------
1 file changed, 21 insertions(+), 19 deletions(-)
--- a/drivers/net/airoha_eth.c
+++ b/drivers/net/airoha_eth.c
@@ -492,14 +492,10 @@ static int airoha_qdma_init_rx_queue(struct airoha_queue *q,
RX_RING_SIZE_MASK,
FIELD_PREP(RX_RING_SIZE_MASK, ndesc));
- /*
- * See arht_eth_free_pkt() for the reasons used to fill
- * REG_RX_CPU_IDX(qid) register.
- */
airoha_qdma_rmw(qdma, REG_RX_RING_SIZE(qid), RX_RING_THR_MASK,
FIELD_PREP(RX_RING_THR_MASK, 0));
airoha_qdma_rmw(qdma, REG_RX_CPU_IDX(qid), RX_RING_CPU_IDX_MASK,
- FIELD_PREP(RX_RING_CPU_IDX_MASK, q->ndesc - 3));
+ FIELD_PREP(RX_RING_CPU_IDX_MASK, q->ndesc - 1));
airoha_qdma_rmw(qdma, REG_RX_DMA_IDX(qid), RX_RING_DMA_IDX_MASK,
FIELD_PREP(RX_RING_DMA_IDX_MASK, q->head));
@@ -1010,7 +1006,6 @@ static int arht_eth_free_pkt(struct udevice *dev, uchar *packet, int length)
struct airoha_qdma *qdma = &eth->qdma[0];
struct airoha_queue *q;
int qid;
- u16 prev, pprev;
if (!packet)
return 0;
@@ -1020,22 +1015,29 @@ static int arht_eth_free_pkt(struct udevice *dev, uchar *packet, int length)
/*
* Due to cpu cache issue the airoha_qdma_reset_rx_desc() function
- * will always touch 2 descriptors:
- * - if current descriptor is even, then the previous and the one
- * before previous descriptors will be touched (previous cacheline)
- * - if current descriptor is odd, then only current and previous
- * descriptors will be touched (current cacheline)
+ * will always touch 2 descriptors placed on the same cacheline:
+ * - if current descriptor is even, then current and next
+ * descriptors will be touched
+ * - if current descriptor is odd, then current and previous
+ * descriptors will be touched
*
- * Thus, to prevent possible destroying of rx queue, only (q->ndesc - 2)
- * descriptors might be used for packet receiving.
+ * Thus, to prevent possible destroying of rx queue, we should:
+ * - do nothing in the even descriptor case,
+ * - utilize 2 descriptors (current and previous one) in the
+ * odd descriptor case.
+ *
+ * WARNING: Observations shows that PKTBUFSRX must be even and
+ * larger than 7 for reliable driver operations.
*/
- prev = (q->head + q->ndesc - 1) % q->ndesc;
- pprev = (q->head + q->ndesc - 2) % q->ndesc;
- q->head = (q->head + 1) % q->ndesc;
+ if (q->head & 0x01) {
+ airoha_qdma_reset_rx_desc(q, q->head - 1);
+ airoha_qdma_reset_rx_desc(q, q->head);
- airoha_qdma_reset_rx_desc(q, prev);
- airoha_qdma_rmw(qdma, REG_RX_CPU_IDX(qid), RX_RING_CPU_IDX_MASK,
- FIELD_PREP(RX_RING_CPU_IDX_MASK, pprev));
+ airoha_qdma_rmw(qdma, REG_RX_CPU_IDX(qid), RX_RING_CPU_IDX_MASK,
+ FIELD_PREP(RX_RING_CPU_IDX_MASK, q->head));
+ }
+
+ q->head = (q->head + 1) % q->ndesc;
return 0;
}

View File

@@ -0,0 +1,35 @@
From 75d82c8878b2ffff489fbc7a5c0381f8f6484ec2 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Fri, 3 Oct 2025 05:28:41 +0300
Subject: [PATCH 5/5] net: airoha: increase the number of rx network buffers
According to commit 997786bbf473 ("drivers/net/airoha_eth: fix stalling
in package receiving") the minimal possible value of SYS_RX_ETH_BUFFER
is 4. Unfortunately it's too small for reliable ping.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
configs/an7581_evb_defconfig | 1 +
configs/an7583_evb_defconfig | 1 +
2 files changed, 2 insertions(+)
--- a/configs/an7581_evb_defconfig
+++ b/configs/an7581_evb_defconfig
@@ -43,6 +43,7 @@ CONFIG_ENV_IS_IN_MMC=y
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SYS_RX_ETH_BUFFER=8
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CLK=y
--- a/configs/an7583_evb_defconfig
+++ b/configs/an7583_evb_defconfig
@@ -44,6 +44,7 @@ CONFIG_ENV_IS_IN_MMC=y
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SYS_RX_ETH_BUFFER=8
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CLK=y

View File

@@ -0,0 +1,109 @@
From 28a72d957b897e7f7212c11f99052a32b0f6abc4 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Wed, 28 May 2025 03:10:53 +0200
Subject: [PATCH 1/2] airoha: enable UBI support and define default partition
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
arch/arm/dts/an7581-u-boot.dtsi | 16 ++++++++++++++++
arch/arm/dts/an7583-evb.dts | 22 ++++++++++++++++++++++
configs/an7581_evb_defconfig | 16 ++++++++++++++++
configs/an7583_evb_defconfig | 16 ++++++++++++++++
4 files changed, 70 insertions(+)
--- a/arch/arm/dts/an7581-u-boot.dtsi
+++ b/arch/arm/dts/an7581-u-boot.dtsi
@@ -76,6 +76,22 @@
spi-max-frequency = <50000000>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <2>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ bl2@0 {
+ label = "bl2";
+ reg = <0x0 0x20000>;
+ };
+
+ ubi@20000 {
+ label = "ubi";
+ reg = <0x20000 0x0>;
+ };
+ };
};
};
--- a/arch/arm/dts/an7583-evb.dts
+++ b/arch/arm/dts/an7583-evb.dts
@@ -46,6 +46,24 @@
};
};
+&spi_nand {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ bl2@0 {
+ label = "bl2";
+ reg = <0x0 0x20000>;
+ };
+
+ ubi@20000 {
+ label = "ubi";
+ reg = <0x20000 0x0>;
+ };
+ };
+};
+
&pcie0 {
pinctrl-names = "default";
pinctrl-0 = <&pcie0_rst_pins>;
--- a/configs/an7581_evb_defconfig
+++ b/configs/an7581_evb_defconfig
@@ -78,3 +78,19 @@ CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_AIROHA_SNFI_SPI=y
CONFIG_SHA512=y
+CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBI_RENAME is not set
+CONFIG_CMD_UBIFS=y
+CONFIG_ENV_IS_IN_UBI=y
+CONFIG_ENV_UBI_PART="ubi"
+CONFIG_ENV_UBI_VOLUME="ubootenv"
+CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
+CONFIG_ENV_UBI_VID_OFFSET=0
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_MODULE=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+CONFIG_UBI_BLOCK=y
+# CONFIG_UBIFS_SILENCE_MSG is not set
+# CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set
--- a/configs/an7583_evb_defconfig
+++ b/configs/an7583_evb_defconfig
@@ -80,3 +80,19 @@ CONFIG_SHA512=y
CONFIG_AIROHA_ETH=y
CONFIG_MMC_MTK=y
CONFIG_AIROHA_SNFI_SPI=y
+CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBI_RENAME is not set
+CONFIG_CMD_UBIFS=y
+CONFIG_ENV_IS_IN_UBI=y
+CONFIG_ENV_UBI_PART="ubi"
+CONFIG_ENV_UBI_VOLUME="ubootenv"
+CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
+CONFIG_ENV_UBI_VID_OFFSET=0
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_MODULE=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+CONFIG_UBI_BLOCK=y
+# CONFIG_UBIFS_SILENCE_MSG is not set
+# CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set

View File

@@ -0,0 +1,45 @@
From f85e675d7be222d88246bfdb42a1faac92f1eb63 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Wed, 28 May 2025 03:18:32 +0200
Subject: [PATCH 2/2] airoha: add default configuration
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
configs/an7581_evb_defconfig | 2 ++
configs/an7583_evb_defconfig | 2 ++
defenvs/an7581_rfb_env | 4 ++++
defenvs/an7583_rfb_env | 4 ++++
4 files changed, 12 insertions(+)
create mode 100644 defenvs/an7581_rfb_env
create mode 100644 defenvs/an7583_rfb_env
--- a/configs/an7581_evb_defconfig
+++ b/configs/an7581_evb_defconfig
@@ -94,3 +94,5 @@ CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_UBI_BLOCK=y
# CONFIG_UBIFS_SILENCE_MSG is not set
# CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set
+CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y
+CONFIG_ENV_DEFAULT_ENV_TEXT_FILE="defenvs/an7581_rfb_env"
--- a/configs/an7583_evb_defconfig
+++ b/configs/an7583_evb_defconfig
@@ -96,3 +96,5 @@ CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_UBI_BLOCK=y
# CONFIG_UBIFS_SILENCE_MSG is not set
# CONFIG_UBIFS_SILENCE_DEBUG_DUMP is not set
+CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y
+CONFIG_ENV_DEFAULT_ENV_TEXT_FILE="defenvs/an7583_rfb_env"
--- /dev/null
+++ b/defenvs/an7581_rfb_env
@@ -0,0 +1,4 @@
+loadaddr=0x81800000
+ipaddr=192.168.1.1
+serverip=192.168.1.10
+bootargs=ubi.mtd=ubi root=/dev/ubiblock0_5 rootwait
--- /dev/null
+++ b/defenvs/an7583_rfb_env
@@ -0,0 +1,4 @@
+loadaddr=0x81800000
+ipaddr=192.168.1.1
+serverip=192.168.1.10
+bootargs=ubi.mtd=ubi root=/dev/ubiblock0_5 rootwait

View File

@@ -0,0 +1,40 @@
From 10bd131a6a365965ce868419933fd7936e91c635 Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Mon, 13 Oct 2025 20:48:00 +0300
Subject: [PATCH 2/3] arm: airoha: disable environment inside mtd partition
When booting on en7581_evb board equipped with spinand flash, a u-boot
panic occurs. The panic is caused by the absence any available mtd
partition.
Disable CONFIG_ENV_IS_IN_MTD to avoid an issue. The environment will
be stored in the EMMC or in UBI, so actually CONFIG_ENV_IS_IN_MTD is
not needed.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
configs/an7581_evb_defconfig | 1 +
configs/an7583_evb_defconfig | 1 +
2 files changed, 2 insertions(+)
--- a/configs/an7581_evb_defconfig
+++ b/configs/an7581_evb_defconfig
@@ -40,6 +40,7 @@ CONFIG_CMD_LOG=y
CONFIG_OF_UPSTREAM=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
+# CONFIG_ENV_IS_IN_MTD is not set
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
--- a/configs/an7583_evb_defconfig
+++ b/configs/an7583_evb_defconfig
@@ -41,6 +41,7 @@ CONFIG_CMD_MTDPARTS=y
CONFIG_CMD_LOG=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
+# CONFIG_ENV_IS_IN_MTD is not set
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y

View File

@@ -0,0 +1,23 @@
From 6c4a07ecf211b56eb28fe2dbd8e324b2fdecb84a Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Mon, 13 Oct 2025 20:44:24 +0300
Subject: [PATCH 1/3] arm: airoha: dts: enable spi support for en7581_evb board
spinand flashes are inaccessible without this patch
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
arch/arm/dts/en7581-evb-u-boot.dtsi | 4 ++++
1 file changed, 4 insertions(+)
--- a/arch/arm/dts/en7581-evb-u-boot.dtsi
+++ b/arch/arm/dts/en7581-evb-u-boot.dtsi
@@ -9,3 +9,7 @@
};
#include "an7581-u-boot.dtsi"
+
+&snfi {
+ status = "okay";
+};

View File

@@ -0,0 +1,32 @@
From bee36b6f42792556e123f331ece80f8d5a40e8cd Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Mon, 13 Oct 2025 20:56:31 +0300
Subject: [PATCH 3/3] arm: airoha: enable position independent code
This slightly increase the code, but makes debugging a bit easy
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
configs/an7581_evb_defconfig | 1 +
configs/an7583_evb_defconfig | 1 +
2 files changed, 2 insertions(+)
--- a/configs/an7581_evb_defconfig
+++ b/configs/an7581_evb_defconfig
@@ -1,5 +1,6 @@
CONFIG_ARM=y
CONFIG_ARCH_AIROHA=y
+CONFIG_POSITION_INDEPENDENT=y
CONFIG_TEXT_BASE=0x81E00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
--- a/configs/an7583_evb_defconfig
+++ b/configs/an7583_evb_defconfig
@@ -1,5 +1,6 @@
CONFIG_ARM=y
CONFIG_ARCH_AIROHA=y
+CONFIG_POSITION_INDEPENDENT=y
CONFIG_TARGET_AN7583=y
CONFIG_TEXT_BASE=0x81E00000
CONFIG_SYS_MALLOC_F_LEN=0x4000

View File

@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_VERSION:=2025.04
PKG_HASH:=439d3bef296effd54130be6a731c5b118be7fddd7fcc663ccbc5fb18294d8718
PKG_VERSION:=2025.10
PKG_HASH:=b4f032848e56cc8f213ad59f9132c084dbbb632bc29176d024e58220e0efdf4a
UBOOT_USE_INTREE_DTC:=1
@@ -19,12 +19,19 @@ define U-Boot/Default
endef
define U-Boot/ar9344_nec_aterm
NAME:=NEC Aterm series (AR9344)
NAME:=NEC Aterm series (AR9344, GbE)
BUILD_SUBTARGET:= tiny
BUILD_DEVICES:=nec_wg600hp nec_wr8750n nec_wr9500n
UBOOT_CONFIG:=nec_ar9344_aterm
endef
define U-Boot/ar9344_nec_aterm_fe
NAME:=NEC Aterm series (AR9344, FE)
BUILD_SUBTARGET:= tiny
BUILD_DEVICES:=nec_wf1200hp nec_wf1200hp2
UBOOT_CONFIG:=nec_ar9344_aterm_fe
endef
define U-Boot/qca9558_nec_aterm
NAME:=NEC Aterm series (QCA9558)
BUILD_SUBTARGET:= generic
@@ -32,7 +39,7 @@ define U-Boot/qca9558_nec_aterm
UBOOT_CONFIG:=nec_qca9558_aterm
endef
UBOOT_TARGETS := ar9344_nec_aterm qca9558_nec_aterm
UBOOT_TARGETS := ar9344_nec_aterm ar9344_nec_aterm_fe qca9558_nec_aterm
# don't stage files to bindir, let target/linux/ath79/image/*.mk do that
define Package/u-boot/install

View File

@@ -5,24 +5,26 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
---
arch/mips/dts/Makefile | 1 +
arch/mips/dts/nec,ar9344-aterm.dts | 35 +++++++++++++++
arch/mips/mach-ath79/Kconfig | 5 +++
board/nec/ar9344_aterm/Kconfig | 30 +++++++++++++
arch/mips/dts/nec,ar9344-aterm.dts | 35 ++++++++++++++
arch/mips/mach-ath79/Kconfig | 5 ++
board/nec/ar9344_aterm/Kconfig | 33 +++++++++++++
board/nec/ar9344_aterm/Makefile | 3 ++
board/nec/ar9344_aterm/ar9344_aterm.c | 59 ++++++++++++++++++++++++++
configs/nec_ar9344_aterm_defconfig | 61 +++++++++++++++++++++++++++
include/configs/nec_ar9344_aterm.h | 28 ++++++++++++
8 files changed, 222 insertions(+)
board/nec/ar9344_aterm/ar9344_aterm.c | 70 +++++++++++++++++++++++++++
configs/nec_ar9344_aterm_defconfig | 61 +++++++++++++++++++++++
configs/nec_ar9344_aterm_fe_defconfig | 62 ++++++++++++++++++++++++
include/configs/nec_ar9344_aterm.h | 28 +++++++++++
9 files changed, 298 insertions(+)
create mode 100644 arch/mips/dts/nec,ar9344-aterm.dts
create mode 100644 board/nec/ar9344_aterm/Kconfig
create mode 100644 board/nec/ar9344_aterm/Makefile
create mode 100644 board/nec/ar9344_aterm/ar9344_aterm.c
create mode 100644 configs/nec_ar9344_aterm_defconfig
create mode 100644 configs/nec_ar9344_aterm_fe_defconfig
create mode 100644 include/configs/nec_ar9344_aterm.h
--- a/arch/mips/dts/Makefile
+++ b/arch/mips/dts/Makefile
@@ -24,6 +24,7 @@ dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY
@@ -23,6 +23,7 @@ dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY
dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) += linkit-smart-7688.dtb
dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += mrvl,octeon-ebb7304.dtb
dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb
@@ -91,7 +93,7 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
endmenu
--- /dev/null
+++ b/board/nec/ar9344_aterm/Kconfig
@@ -0,0 +1,30 @@
@@ -0,0 +1,33 @@
+if BOARD_NEC_AR9344_ATERM
+
+config SYS_VENDOR
@@ -121,6 +123,9 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
+config SYS_ICACHE_LINE_SIZE
+ default 32
+
+config BOARD_NEC_AR9344_ATERM_FE
+ bool "Aterm devices based on AR9344 with FE ports"
+
+endif
--- /dev/null
+++ b/board/nec/ar9344_aterm/Makefile
@@ -130,7 +135,7 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
+obj-y = ar9344_aterm.o
--- /dev/null
+++ b/board/nec/ar9344_aterm/ar9344_aterm.c
@@ -0,0 +1,59 @@
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2024 INAGAKI Hiroshi <musashino.open@gmail.com>
@@ -156,16 +161,27 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
+ writel(0x2, regs + AR934X_GPIO_REG_FUNC);
+
+ /* Configure default GPIO OE/SET regs */
+#if defined(CONFIG_BOARD_NEC_AR9344_ATERM_FE)
+ writel(0x39b1f, regs + AR71XX_GPIO_REG_OE);
+ writel(0x040000, regs + AR71XX_GPIO_REG_SET);
+#else
+ writel(0x3db1f, regs + AR71XX_GPIO_REG_OE);
+ writel(0x142000, regs + AR71XX_GPIO_REG_SET);
+#endif
+
+ /* Configure pin multiplexing */
+ writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC0);
+ writel(0x0b0a0900, regs + AR934X_GPIO_REG_OUT_FUNC1);
+ writel(0x00180000, regs + AR934X_GPIO_REG_OUT_FUNC2);
+ writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3);
+ writel(0x2f2e0000, regs + AR934X_GPIO_REG_OUT_FUNC4);
+
+#if defined(CONFIG_BOARD_NEC_AR9344_ATERM_FE)
+ writel(0x002b2a00, regs + AR934X_GPIO_REG_OUT_FUNC3);
+ writel(0x002c2d00, regs + AR934X_GPIO_REG_OUT_FUNC5);
+#else
+ writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3);
+ writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC5);
+#endif
+}
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
@@ -255,6 +271,71 @@ Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series
+CONFIG_SYS_NS16550=y
+# CONFIG_GZIP is not set
--- /dev/null
+++ b/configs/nec_ar9344_aterm_fe_defconfig
@@ -0,0 +1,62 @@
+CONFIG_MIPS=y
+CONFIG_SYS_MALLOC_LEN=0x40000
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xbd007fff
+CONFIG_ENV_SIZE=0x1000
+CONFIG_DEFAULT_DEVICE_TREE="nec,ar9344-aterm"
+CONFIG_SYS_LOAD_ADDR=0x83000000
+CONFIG_ARCH_ATH79=y
+CONFIG_BOARD_NEC_AR9344_ATERM=y
+CONFIG_BOARD_NEC_AR9344_ATERM_FE=y
+CONFIG_SYS_MIPS_TIMER_FREQ=280000000
+CONFIG_MIPS_RELOCATION_TABLE_SIZE=0x4000
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_TIMESTAMP=y
+CONFIG_BOOTDELAY=3
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
+CONFIG_USE_BOOTARGS=y
+CONFIG_BOOTARGS="console=ttyS0,115200"
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="bootm 0x9f040000"
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_SYS_MALLOC_BOOTPARAMS=y
+# CONFIG_CMDLINE_EDITING is not set
+# CONFIG_AUTO_COMPLETE is not set
+# CONFIG_SYS_LONGHELP is not set
+CONFIG_SYS_MAXARGS=32
+# CONFIG_SYS_XTRACE is not set
+# CONFIG_CMD_BDI is not set
+# CONFIG_CMD_CONSOLE is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_FDT is not set
+# CONFIG_CMD_RUN is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
+# CONFIG_CMD_IMPORTENV is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
+# CONFIG_CMD_DM is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_ECHO is not set
+# CONFIG_CMD_ITEST is not set
+# CONFIG_CMD_SOURCE is not set
+# CONFIG_CMD_SETEXPR is not set
+# CONFIG_CMD_SLEEP is not set
+# CONFIG_ISO_PARTITION is not set
+# CONFIG_OF_TAG_MIGRATE is not set
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_NO_NET=y
+CONFIG_CLK=y
+# CONFIG_GPIO is not set
+# CONFIG_I2C is not set
+# CONFIG_INPUT is not set
+# CONFIG_POWER is not set
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+# CONFIG_GZIP is not set
--- /dev/null
+++ b/include/configs/nec_ar9344_aterm.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0+ */

View File

@@ -23,7 +23,7 @@ mips: ath79: cleanup defconfig for NEC QCA9558 Aterm series
--- a/arch/mips/dts/Makefile
+++ b/arch/mips/dts/Makefile
@@ -25,6 +25,7 @@ dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) +=
@@ -24,6 +24,7 @@ dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) +=
dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += mrvl,octeon-ebb7304.dtb
dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb
dtb-$(CONFIG_BOARD_NEC_AR9344_ATERM) += nec,ar9344-aterm.dtb

View File

@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_VERSION:=2024.01
PKG_HASH:=b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3
PKG_RELEASE:=$(AUTORELEASE)
PKG_RELEASE:=2
include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk

View File

@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_VERSION:=2024.04
PKG_HASH:=18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a
PKG_RELEASE:=$(AUTORELEASE)
PKG_RELEASE:=1
include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk

View File

@@ -0,0 +1,57 @@
From a63456b9191fae2fe49f4b121e025792022e3950 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Wed, 30 Oct 2024 06:07:16 +0100
Subject: [PATCH] scripts/dtc/pylibfdt/libfdt.i_shipped: Use SWIG_AppendOutput
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Swig has changed language specific AppendOutput functions. The helper
macro SWIG_AppendOutput remains unchanged. Use that instead
of SWIG_Python_AppendOutput, which would require an extra parameter
since swig 4.3.0.
/home/flk/poky/build-test/tmp/work/qemux86_64-poky-linux/u-boot/2024.10/git/arch/x86/cpu/u-boot-64.lds
| scripts/dtc/pylibfdt/libfdt_wrap.c: In function _wrap_fdt_next_node:
| scripts/dtc/pylibfdt/libfdt_wrap.c:5581:17: error: too few arguments to function SWIG_Python_AppendOutput
| 5581 | resultobj = SWIG_Python_AppendOutput(resultobj, val);
| | ^~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Reported-by: Rudi Heitbaum <rudi@heitbaum.com>
Link: https://github.com/dgibson/dtc/pull/154
---
scripts/dtc/pylibfdt/libfdt.i_shipped | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped
index 56cc5d48f4f9..e4659489a96a 100644
--- a/scripts/dtc/pylibfdt/libfdt.i_shipped
+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped
@@ -1037,7 +1037,7 @@ typedef uint32_t fdt32_t;
fdt_string(fdt1, fdt32_to_cpu($1->nameoff)));
buff = PyByteArray_FromStringAndSize(
(const char *)($1 + 1), fdt32_to_cpu($1->len));
- resultobj = SWIG_Python_AppendOutput(resultobj, buff);
+ resultobj = SWIG_AppendOutput(resultobj, buff);
}
}
@@ -1076,7 +1076,7 @@ typedef uint32_t fdt32_t;
%typemap(argout) int *depth {
PyObject *val = Py_BuildValue("i", *arg$argnum);
- resultobj = SWIG_Python_AppendOutput(resultobj, val);
+ resultobj = SWIG_AppendOutput(resultobj, val);
}
%apply int *depth { int *depth };
@@ -1092,7 +1092,7 @@ typedef uint32_t fdt32_t;
if (PyTuple_GET_SIZE(resultobj) == 0)
resultobj = val;
else
- resultobj = SWIG_Python_AppendOutput(resultobj, val);
+ resultobj = SWIG_AppendOutput(resultobj, val);
}
}

View File

@@ -25,6 +25,11 @@ define U-Boot/dns320l
BUILD_DEVICES:=dlink_dns320l
endef
define U-Boot/dns325
NAME:=D-Link DNS-325 A1
BUILD_DEVICES:=dlink_dns-325-a1
endef
define U-Boot/dockstar
NAME:=Seagate DockStar
BUILD_DEVICES:=seagate_dockstar
@@ -112,6 +117,7 @@ endef
UBOOT_TARGETS := \
dns320l \
dns325 \
dockstar dockstar_second_stage \
goflexhome \
ib62x0 ib62x0_second_stage \

View File

@@ -0,0 +1,27 @@
From e7e650e8bdb09ac46da017250394f8c589df10bb Mon Sep 17 00:00:00 2001
From: Tom Rini <trini@konsulko.com>
Date: Mon, 14 Sep 2020 15:48:47 -0400
Subject: [PATCH] arm: kirkwood: dns325: Correct CONFIG_NR_DRAM_BANKS parameter
Testing on a DNS-325 NAS has shown that in order for the device to work
we need to set CONFIG_NR_DRAM_BANKS to 1 and not 2.
Tested-by: Dmitry N. Kolesnikov <dk.diklab@gmail.com>
Reported-by: Dmitry N. Kolesnikov <dk.diklab@gmail.com>
Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
Signed-off-by: Tom Rini <trini@konsulko.com>
---
configs/dns325_defconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/configs/dns325_defconfig
+++ b/configs/dns325_defconfig
@@ -6,7 +6,7 @@ CONFIG_SYS_TEXT_BASE=0x600000
CONFIG_TARGET_DNS325=y
CONFIG_ENV_SIZE=0x20000
CONFIG_ENV_OFFSET=0xE0000
-CONFIG_NR_DRAM_BANKS=2
+CONFIG_NR_DRAM_BANKS=1
CONFIG_IDENT_STRING="\nD-Link DNS-325"
# CONFIG_SYS_MALLOC_F is not set
CONFIG_BOOTDELAY=3

View File

@@ -0,0 +1,65 @@
--- a/configs/dns325_defconfig
+++ b/configs/dns325_defconfig
@@ -27,7 +27,7 @@ CONFIG_CMD_FAT=y
CONFIG_CMD_JFFS2=y
CONFIG_CMD_MTDPARTS=y
CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
-CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:896k(u-boot),128k(u-boot-env),5m(kernel),-(rootfs)"
+CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:0xe0000@0x0(u-boot),0x20000@0xe0000(u-boot-env),-@0x100000(ubi)"
CONFIG_CMD_UBI=y
CONFIG_ISO_PARTITION=y
CONFIG_OF_CONTROL=y
--- a/include/configs/dns325.h
+++ b/include/configs/dns325.h
@@ -66,46 +66,12 @@
*/
#define CONFIG_EXTRA_ENV_SETTINGS \
- "stdin=serial\0" \
- "stdout=serial\0" \
- "stderr=serial\0" \
- "loadaddr=0x800000\0" \
- "autoload=no\0" \
- "console=ttyS0,115200\0" \
- "mtdparts="CONFIG_MTDPARTS_DEFAULT \
- "optargs=\0" \
- "bootenv=uEnv.txt\0" \
- "importbootenv=echo Importing environment ...; " \
- "env import -t ${loadaddr} ${filesize}\0" \
- "loadbootenv=fatload usb 0 ${loadaddr} ${bootenv}\0" \
- "setbootargs=setenv bootargs console=${console} " \
- "${optargs} " \
- "${mtdparts} " \
- "root=${bootenvroot} " \
- "rootfstype=${bootenvrootfstype}\0" \
- "subbootcmd=run setbootargs; " \
- "if run bootenvloadimage; then " \
- "bootm ${loadaddr};" \
- "fi;\0" \
- "nandroot=ubi0:rootfs ubi.mtd=rootfs\0" \
- "nandrootfstype=ubifs\0" \
- "nandloadimage=nand read ${loadaddr} kernel\0" \
- "setnandbootenv=echo Booting from nand ...; " \
- "setenv bootenvroot ${nandroot}; " \
- "setenv bootenvrootfstype ${nandrootfstype}; " \
- "setenv bootenvloadimage ${nandloadimage}\0"
+ "mtdids="CONFIG_MTDIDS_DEFAULT "\0" \
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0"
#define CONFIG_BOOTCOMMAND \
- "if test -n ${bootenv} && usb start; then " \
- "if run loadbootenv; then " \
- "echo Loaded environment ${bootenv} from usb;" \
- "run importbootenv;" \
- "fi;" \
- "if test -n ${bootenvcmd}; then " \
- "echo Running bootenvcmd ...;" \
- "run bootenvcmd;" \
- "fi;" \
- "fi;" \
- "run setnandbootenv subbootcmd;"
+ "ubi part ubi; " \
+ "ubi read 0x800000 kernel; " \
+ "bootm 0x800000"
#endif /* _CONFIG_DNS325_H */

View File

@@ -214,3 +214,23 @@
+CONFIG_FIT_VERBOSE=y
CONFIG_LZMA=y
+CONFIG_LZO=y
--- a/configs/dns325_defconfig
+++ b/configs/dns325_defconfig
@@ -48,3 +48,8 @@ CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_STORAGE=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_LZMA=y
+CONFIG_LZO=y
--- a/include/configs/dns325.h
+++ b/include/configs/dns325.h
@@ -74,4 +74,6 @@
"ubi read 0x800000 kernel; " \
"bootm 0x800000"
+#include "openwrt-kirkwood-common.h"
+
#endif /* _CONFIG_DNS325_H */

View File

@@ -151,6 +151,9 @@ UBOOT_TARGETS := \
fsl_ls1021a-twr-sdboot \
fsl_ls1021a-iot-sdboot
UBOOT_CUSTOMIZE_CONFIG := \
--disable TOOLS_MKEFICAPSULE
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
$(INSTALL_DATA) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) \

View File

@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_VERSION:=2025.07
PKG_HASH:=0f933f6c5a426895bf306e93e6ac53c60870e4b54cda56d95211bec99e63bec7
PKG_VERSION:=2025.10
PKG_HASH:=b4f032848e56cc8f213ad59f9132c084dbbb632bc29176d024e58220e0efdf4a
PKG_BUILD_DEPENDS:=!(TARGET_ramips||TARGET_mediatek_mt7623):arm-trusted-firmware-tools/host
UBOOT_USE_INTREE_DTC:=1
@@ -231,6 +231,18 @@ define U-Boot/mt7981_abt_asr3000
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_bazis-ax3000wm
NAME:=BAZIS AX3000WM
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=bazis_ax3000wm
UBOOT_CONFIG:=mt7981_bazis_ax3000wm
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_cmcc_a10
NAME:=CMCC A10
BUILD_SUBTARGET:=filogic
@@ -243,7 +255,19 @@ define U-Boot/mt7981_cmcc_a10
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_cmcc_rax3000m-emmc
define U-Boot/mt7981_cmcc_rax3000m-emmc-ddr3
NAME:=CMCC RAX3000M
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cmcc_rax3000m
UBOOT_CONFIG:=mt7981_cmcc_rax3000m-emmc
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=emmc
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3-1866mhz
DEPENDS:=+trusted-firmware-a-mt7981-emmc-ddr3-1866mhz
endef
define U-Boot/mt7981_cmcc_rax3000m-emmc-ddr4
NAME:=CMCC RAX3000M
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cmcc_rax3000m
@@ -255,7 +279,19 @@ define U-Boot/mt7981_cmcc_rax3000m-emmc
DEPENDS:=+trusted-firmware-a-mt7981-emmc-ddr4
endef
define U-Boot/mt7981_cmcc_rax3000m-nand
define U-Boot/mt7981_cmcc_rax3000m-nand-ddr3
NAME:=CMCC RAX3000M
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cmcc_rax3000m
UBOOT_CONFIG:=mt7981_cmcc_rax3000m-nand
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3-1866mhz
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3-1866mhz
endef
define U-Boot/mt7981_cmcc_rax3000m-nand-ddr4
NAME:=CMCC RAX3000M
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cmcc_rax3000m
@@ -267,15 +303,38 @@ define U-Boot/mt7981_cmcc_rax3000m-nand
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr4
endef
define U-Boot/mt7981_comfast_cf-wr632ax
NAME:=COMFAST CF-WR632AX
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=comfast_cf-wr632ax-ubootmod
UBOOT_CONFIG:=mt7981_comfast_cf-wr632ax
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_cudy_tr3000-v1
NAME:=Cudy TR3000 v1
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cudy_tr3000-v1-ubootmod
UBOOT_CONFIG:=mt7981_cudy_tr3000-v1
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=cudy-tr3000-v1
BL2_BOOTDEV:=cudy-ddr3
BL2_SOC:=mt7981
DEPENDS:=+trusted-firmware-a-mt7981-cudy-tr3000-v1
DEPENDS:=+trusted-firmware-a-mt7981-cudy-ddr3
endef
define U-Boot/mt7981_cudy_wbr3000uax-v1
NAME:=Cudy WBR3000UAX v1
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=cudy_wbr3000uax-v1-ubootmod
UBOOT_CONFIG:=mt7981_cudy_wbr3000uax-v1
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=cudy-ddr3
BL2_SOC:=mt7981
DEPENDS:=+trusted-firmware-a-mt7981-cudy-ddr3
endef
define U-Boot/mt7981_glinet_gl-mt2500
@@ -326,6 +385,18 @@ define U-Boot/mt7981_h3c_magic-nx30-pro
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_imou_hx21
NAME:=Imou HX21
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=imou_hx21
UBOOT_CONFIG:=mt7981_imou_hx21
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_jcg_q30-pro
NAME:=JCG Q30 PRO
BUILD_SUBTARGET:=filogic
@@ -338,6 +409,30 @@ define U-Boot/mt7981_jcg_q30-pro
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_konka_komi-a31
NAME:=Konka KOMI A31
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=konka_komi-a31
UBOOT_CONFIG:=mt7981_konka_komi-a31
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_netis_nx30v2
NAME:=Netis NX30V2
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=netis_nx30v2
UBOOT_CONFIG:=mt7981_netis_nx30v2
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_netis_nx31
NAME:=netis NX31
BUILD_SUBTARGET:=filogic
@@ -350,6 +445,18 @@ define U-Boot/mt7981_netis_nx31
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_netis_nx32u
NAME:=netis NX32U
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=netis_nx32u
UBOOT_CONFIG:=mt7981_netis_nx32u
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7981
BL2_DDRTYPE:=ddr3
DEPENDS:=+trusted-firmware-a-mt7981-spim-nand-ddr3
endef
define U-Boot/mt7981_nokia_ea0326gmp
NAME:=Nokia EA0326GMP
BUILD_SUBTARGET:=filogic
@@ -532,6 +639,18 @@ define U-Boot/mt7986_rfb
DEPENDS:=+trusted-firmware-a-mt7986-sdmmc-ddr4
endef
define U-Boot/mt7986_acer_predator-w6x
NAME:=Acer Predator Connect W6x
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=acer_predator-w6x-ubootmod
UBOOT_CONFIG:=mt7986_acer_predator-w6x
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand
BL2_SOC:=mt7986
BL2_DDRTYPE:=ddr4
DEPENDS:=+trusted-firmware-a-mt7986-spim-nand-ddr4
endef
define U-Boot/mt7986_bananapi_bpi-r3-emmc
NAME:=BananaPi BPi-R3
BUILD_SUBTARGET:=filogic
@@ -737,6 +856,66 @@ define U-Boot/mt7986_zyxel_ex5601-t0
DEPENDS:=+trusted-firmware-a-mt7986-spim-nand-4k-ddr4
endef
define U-Boot/mt7987_bananapi_bpi-r4-lite-emmc
NAME:=BananaPi BPi-R4 Lite
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=bananapi_bpi-r4-lite
UBOOT_CONFIG:=mt7987a_bpi-r4-lite-emmc
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=emmc
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-emmc-comb
endef
define U-Boot/mt7987_bananapi_bpi-r4-lite-sdmmc
NAME:=BananaPi BPi-R4 Lite
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=bananapi_bpi-r4-lite
UBOOT_CONFIG:=mt7987a_bpi-r4-lite-sd
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=sdmmc
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-sdmmc-comb
endef
define U-Boot/mt7987_bananapi_bpi-r4-lite-snand
NAME:=BananaPi BPi-R4 Lite
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=bananapi_bpi-r4-lite
UBOOT_CONFIG:=mt7987a_bpi-r4-lite-snand
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand2-ubi
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-spim-nand2-ubi-comb
endef
define U-Boot/mt7987_bananapi_bpi-r4-lite-nor
NAME:=BananaPi BPi-R4 Lite
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=bananapi_bpi-r4-lite
UBOOT_CONFIG:=mt7987a_bpi-r4-lite-nor
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=nor
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-nor-comb
FIP_COMPRESS:=1
endef
define U-Boot/mt7987_routerich_be7200
NAME:=Routerich BE7200
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=routerich_be7200
UBOOT_CONFIG:=mt7987a_routerich_be7200
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand0
BL2_SOC:=mt7987
DEPENDS:=+trusted-firmware-a-mt7987-spim-nand0
endef
define U-Boot/mt7988_arcadyan_mozart
NAME:=Arcadyan Mozart
BUILD_SUBTARGET:=filogic
@@ -833,6 +1012,42 @@ define U-Boot/mt7988_bananapi_bpi-r4-poe-snand
DEPENDS:=+trusted-firmware-a-mt7988-spim-nand-ubi-comb
endef
define U-Boot/mt7987_rfb-emmc
NAME:=MT7987 Reference Board
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=mediatek_mt7987a-rfb
UBOOT_CONFIG:=mt7987_emmc_rfb
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=sdmmc
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-emmc-comb
endef
define U-Boot/mt7987_rfb-spim-nand
NAME:=MT7987 Reference Board
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=mediatek_mt7987a-rfb
UBOOT_CONFIG:=mt7987_rfb
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=spim-nand0-ubi
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-spim-nand0-ubi-comb
endef
define U-Boot/mt7987_rfb-sd
NAME:=MT7987 Reference Board
BUILD_SUBTARGET:=filogic
BUILD_DEVICES:=mediatek_mt7987a-rfb
UBOOT_CONFIG:=mt7987_sd_rfb
UBOOT_IMAGE:=u-boot.fip
BL2_BOOTDEV:=sdmmc
BL2_SOC:=mt7987
BL2_DDRTYPE:=comb
DEPENDS:=+trusted-firmware-a-mt7987-sdmmc-comb
endef
define U-Boot/mt7988_rfb-spim-nand
NAME:=MT7988 Reference Board
BUILD_SUBTARGET:=filogic
@@ -915,17 +1130,26 @@ UBOOT_TARGETS := \
mt7628_ravpower_rp-wd009 \
mt7629_rfb \
mt7981_abt_asr3000 \
mt7981_bazis-ax3000wm \
mt7981_cmcc_a10 \
mt7981_cmcc_rax3000m-emmc \
mt7981_cmcc_rax3000m-nand \
mt7981_cmcc_rax3000m-emmc-ddr3 \
mt7981_cmcc_rax3000m-emmc-ddr4 \
mt7981_cmcc_rax3000m-nand-ddr3 \
mt7981_cmcc_rax3000m-nand-ddr4 \
mt7981_comfast_cf-wr632ax \
mt7981_cudy_tr3000-v1 \
mt7981_cudy_wbr3000uax-v1 \
mt7981_gatonetworks_gdsp \
mt7981_glinet_gl-mt2500 \
mt7981_glinet_gl-x3000 \
mt7981_glinet_gl-xe3000 \
mt7981_h3c_magic-nx30-pro \
mt7981_imou_hx21 \
mt7981_jcg_q30-pro \
mt7981_konka_komi-a31 \
mt7981_netis_nx30v2 \
mt7981_netis_nx31 \
mt7981_netis_nx32u \
mt7981_nokia_ea0326gmp \
mt7981_openwrt_one-snand \
mt7981_openwrt_one-nor \
@@ -939,6 +1163,7 @@ UBOOT_TARGETS := \
mt7981_snr_snr-cpe-ax2 \
mt7981_xiaomi_mi-router-ax3000t \
mt7981_xiaomi_mi-router-wr30u \
mt7986_acer_predator-w6x \
mt7986_bananapi_bpi-r3-emmc \
mt7986_bananapi_bpi-r3-sdmmc \
mt7986_bananapi_bpi-r3-snand \
@@ -957,6 +1182,14 @@ UBOOT_TARGETS := \
mt7986_xiaomi_redmi-router-ax6000 \
mt7986_zyxel_ex5601-t0 \
mt7986_rfb \
mt7987_bananapi_bpi-r4-lite-emmc \
mt7987_bananapi_bpi-r4-lite-sdmmc \
mt7987_bananapi_bpi-r4-lite-snand \
mt7987_bananapi_bpi-r4-lite-nor \
mt7987_rfb-emmc \
mt7987_rfb-sd \
mt7987_rfb-spim-nand \
mt7987_routerich_be7200 \
mt7988_arcadyan_mozart \
mt7988_asus_zenwifi-bt8 \
mt7988_bananapi_bpi-r4-emmc \

View File

@@ -1,56 +0,0 @@
From fe37fb8214e40ea64cf03453d112527b629fb08a Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Sat, 7 Jun 2025 23:11:21 +0200
Subject: [PATCH] mtd: spinand: winbond: add Winbond W25N04KV flash support
Add Winbond W25N04KV flash support that use a different value to detect
ECC bitflip.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/mtd/nand/spi/winbond.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -11,6 +11,7 @@
#include <linux/device.h>
#include <linux/kernel.h>
#endif
+#include <linux/bitfield.h>
#include <linux/bug.h>
#include <linux/mtd/spinand.h>
@@ -18,6 +19,8 @@
#define WINBOND_CFG_BUF_READ BIT(3)
+#define W25N04KV_STATUS_ECC_5_8_BITFLIPS GENMASK(5, 4)
+
static SPINAND_OP_VARIANTS(read_cache_variants,
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
@@ -121,6 +124,7 @@ static int w25n02kv_ecc_get_status(struc
return -EBADMSG;
case STATUS_ECC_HAS_BITFLIPS:
+ case W25N04KV_STATUS_ECC_5_8_BITFLIPS:
/*
* Let's try to retrieve the real maximum number of bitflips
* in order to avoid forcing the wear-leveling layer to move
@@ -169,6 +173,15 @@ static const struct spinand_info winbond
NAND_ECCREQ(8, 512),
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
&write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
+ SPINAND_INFO("W25N04KV",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23),
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),

View File

@@ -1,245 +0,0 @@
From 506ceddffdc40acf709822b678b986e2e22c5056 Mon Sep 17 00:00:00 2001
From: Chuanhong Guo <gch981213@gmail.com>
Date: Wed, 1 May 2024 15:45:23 +0800
Subject: [PATCH] mtd/spinand: gigadevice: sync supported chips with linux 6.9
Adding support for:
GD5F1GQ4RExxG
GD5F2GQ4UExxG
GD5F2GQ4RExxG
GD5F1GQ5RExxG
GD5F2GQ5UExxG
GD5F2GQ5RExxG
GD5F4GQ6UExxG
GD5F4GQ6RExxG
GD5F1GM7UExxG
GD5F1GM7RExxG
GD5F2GM7UExxG
GD5F2GM7RExxG
GD5F4GM8UExxG
GD5F4GM8RExxG
GD5F2GQ5xExxH
GD5F1GQ5RExxH
GD5F1GQ4RExxH
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
---
drivers/mtd/nand/spi/gigadevice.c | 188 +++++++++++++++++++++++++++++-
1 file changed, 187 insertions(+), 1 deletion(-)
--- a/drivers/mtd/nand/spi/gigadevice.c
+++ b/drivers/mtd/nand/spi/gigadevice.c
@@ -43,6 +43,22 @@ static SPINAND_OP_VARIANTS(read_cache_va
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
+static SPINAND_OP_VARIANTS(read_cache_variants_1gq5,
+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
+
+static SPINAND_OP_VARIANTS(read_cache_variants_2gq5,
+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 4, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 2, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
+
static SPINAND_OP_VARIANTS(write_cache_variants,
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
SPINAND_PROG_LOAD(true, 0, NULL, 0));
@@ -329,6 +345,36 @@ static const struct spinand_info gigadev
SPINAND_HAS_QE_BIT,
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GQ4RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xc1),
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GQ4UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xd2),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GQ4RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xc2),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
SPINAND_INFO("GD5F1GQ4UFxxG",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE, 0xb1, 0x48),
NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
@@ -343,12 +389,152 @@ static const struct spinand_info gigadev
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(4, 512),
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GQ5RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x41),
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GQ5UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x52),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GQ5RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x42),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F4GQ6UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x55),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 2, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F4GQ6RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x45),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 2, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq5xexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GM7UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x91),
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GM7RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x81),
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GM7UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x92),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GM7RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x82),
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F4GM8UExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x95),
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 80, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F4GM8RExxG",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x85),
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 80, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F2GQ5xExxH",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x22),
+ NAND_MEMORG(1, 2048, 64, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GQ5RExxH",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x21),
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
+ SPINAND_INFO("GD5F1GQ4RExxH",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xc9),
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
+ &write_cache_variants,
+ &update_cache_variants),
+ SPINAND_HAS_QE_BIT,
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
+ gd5fxgq4uexxg_ecc_get_status)),
};
static const struct spinand_manufacturer_ops gigadevice_spinand_manuf_ops = {

View File

@@ -1,26 +0,0 @@
From dc495442ba610b190775122a31f958ad74229262 Mon Sep 17 00:00:00 2001
From: Weijie Gao <weijie.gao@mediatek.com>
Date: Tue, 8 Jul 2025 17:53:48 +0800
Subject: [PATCH] net: mediatek: correct the AN8855 TPID value in port
isolation settings
The TPID value should be 0x9100 instead of 0x8100 according to the
datasheet.
Fixes: cedafee9ff3 (net: mediatek: add support for Airoha AN8855 ethernet switch)
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
drivers/net/mtk_eth/an8855.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/mtk_eth/an8855.c
+++ b/drivers/net/mtk_eth/an8855.c
@@ -909,7 +909,7 @@ static void an8855_port_isolation(struct
/* Set port mode to user port */
an8855_reg_write(priv, AN8855_PVC(i),
- (0x8100 << AN8855_STAG_VPID_S) |
+ (0x9100 << AN8855_STAG_VPID_S) |
(VLAN_ATTR_USER << AN8855_VLAN_ATTR_S));
}
}

View File

@@ -1,44 +0,0 @@
From 6e15d3f91aa698798578d39a6d9e292fcc5c577f Mon Sep 17 00:00:00 2001
From: Weijie Gao <weijie.gao@mediatek.com>
Date: Fri, 23 May 2025 17:25:55 +0800
Subject: [PATCH] serial: mediatek: fix register names and offsets
Fix UART register names and offsets according to the programming
guide to allow implementing some enhanced features.
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
drivers/serial/serial_mtk.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
--- a/drivers/serial/serial_mtk.c
+++ b/drivers/serial/serial_mtk.c
@@ -30,16 +30,23 @@ struct mtk_serial_regs {
u32 mcr;
u32 lsr;
u32 msr;
- u32 spr;
- u32 mdr1;
+ u32 scr;
+ u32 autobaud_en;
u32 highspeed;
u32 sample_count;
u32 sample_point;
+ u32 autobaud_reg;
+ u32 ratefix_ad;
+ u32 autobaud_sample;
+ u32 guard;
+ u32 escape_dat;
+ u32 escape_en;
+ u32 sleep_en;
+ u32 dma_en;
+ u32 rxtri_ad;
u32 fracdiv_l;
u32 fracdiv_m;
- u32 escape_en;
- u32 guard;
- u32 rx_sel;
+ u32 fcr_rd;
};
#define thr rbr

View File

@@ -1,81 +0,0 @@
From 6952209ef220138189dd261d06441e1b2d50e994 Mon Sep 17 00:00:00 2001
From: Weijie Gao <weijie.gao@mediatek.com>
Date: Fri, 23 May 2025 17:26:02 +0800
Subject: [PATCH] serial: mediatek: enable baudrate accuracy compensation
The high-speed UART from MediaTek supports baudrate accuracy
compensation when using high-speed mode 3.
This is done by calculating the first digit of the fraction part of
sample count value. The fraction value will be then used as the
reference to insert 0 to 10 sample cycle(s) to one frame (assume
that frame format is 8n1, i.e. 10 bits per frame).
The fracdiv_[l/m] registers are used to determine whether a bit in one frame
should be inserted with one sample cycle.
With typical 40MHz source clock, the actual baudrates with/without
accuracy compensation are:
Ideal w/o compensation w/ compensation
======== ================ ===============
9600 9603 9600
115200 114942 115207
921600 930232 921659
3000000 3076923 3007519
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
drivers/serial/serial_mtk.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
--- a/drivers/serial/serial_mtk.c
+++ b/drivers/serial/serial_mtk.c
@@ -99,10 +99,18 @@ struct mtk_serial_priv {
bool upstream_highspeed_logic;
};
+static const unsigned short fraction_l_mapping[] = {
+ 0, 1, 0x5, 0x15, 0x55, 0x57, 0x57, 0x77, 0x7F, 0xFF, 0xFF
+};
+
+static const unsigned short fraction_m_mapping[] = {
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3
+};
+
static void _mtk_serial_setbrg(struct mtk_serial_priv *priv, int baud,
uint clk_rate)
{
- u32 quot, realbaud, samplecount = 1;
+ u32 quot, realbaud, samplecount = 1, fraction, frac_l = 0, frac_m = 0;
/* Special case for low baud clock */
if (baud <= 115200 && clk_rate == 12000000) {
@@ -147,7 +155,13 @@ use_hs3:
writel(3, &priv->regs->highspeed);
quot = DIV_ROUND_UP(clk_rate, 256 * baud);
- samplecount = DIV_ROUND_CLOSEST(clk_rate, quot * baud);
+ samplecount = clk_rate / (quot * baud);
+
+ fraction = ((clk_rate * 100) / quot / baud) % 100;
+ fraction = DIV_ROUND_CLOSEST(fraction, 10);
+
+ frac_l = fraction_l_mapping[fraction];
+ frac_m = fraction_m_mapping[fraction];
}
set_baud:
@@ -159,7 +173,11 @@ set_baud:
/* set highspeed mode sample count & point */
writel(samplecount - 1, &priv->regs->sample_count);
- writel((samplecount - 2) >> 1, &priv->regs->sample_point);
+ writel((samplecount >> 1) - 1, &priv->regs->sample_point);
+
+ /* set baudrate fraction compensation */
+ writel(frac_l, &priv->regs->fracdiv_l);
+ writel(frac_m, &priv->regs->fracdiv_m);
}
static int _mtk_serial_putc(struct mtk_serial_priv *priv, const char ch)

View File

@@ -1,114 +0,0 @@
From 1bf212129768d65a47145209c65bf37b6082d718 Mon Sep 17 00:00:00 2001
From: Weijie Gao <weijie.gao@mediatek.com>
Date: Tue, 6 May 2025 16:12:20 +0800
Subject: [PATCH] clk: mediatek: add dummy clk enable/disable ops for
apmixedsys clocks
Starting from commit ac30d90f336 (clk: Ensure the parent clocks are enabled
while reparenting), MediaTek filogic platforms will crash on booting when
initializing mmc devices.
The root cause is that to simplify the code, we reused the topckgen ops for
apmixedsys clocks as they share the get_rate with topckgen clocks while the
clk enable/disable ops are not available for apmixedsys clocks.
Now that a clock will be enabled first before reparenting, we have to add
dummy enable/disable ops for apmixedsys to avoid unexpected behavior when
apmixedsys clocks are the parent clock of the to-be-reparenting clocks.
Fixes: 40746bf429d (clk: mediatek: add clock driver support for MediaTek MT7981 SoC)
Fixes: 37d5a9a29dc (clk: mediatek: add clock driver support for MediaTek MT7986 SoC)
Fixes: ece4e5804f5 (clk: mediatek: add clock driver support for MediaTek MT7987 SoC)
Fixes: 421436981a2 (clk: mediatek: add clock driver support for MediaTek MT7988 SoC)
Signed-off-by: Sam Shih <sam.shih@mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
drivers/clk/mediatek/clk-mt7981.c | 2 +-
drivers/clk/mediatek/clk-mt7986.c | 2 +-
drivers/clk/mediatek/clk-mt7987.c | 2 +-
drivers/clk/mediatek/clk-mt7988.c | 2 +-
drivers/clk/mediatek/clk-mtk.c | 11 +++++++++++
drivers/clk/mediatek/clk-mtk.h | 1 +
6 files changed, 16 insertions(+), 4 deletions(-)
--- a/drivers/clk/mediatek/clk-mt7981.c
+++ b/drivers/clk/mediatek/clk-mt7981.c
@@ -566,7 +566,7 @@ U_BOOT_DRIVER(mtk_clk_apmixedsys) = {
.of_match = mt7981_fixed_pll_compat,
.probe = mt7981_fixed_pll_probe,
.priv_auto = sizeof(struct mtk_clk_priv),
- .ops = &mtk_clk_topckgen_ops,
+ .ops = &mtk_clk_fixed_pll_ops,
.flags = DM_FLAG_PRE_RELOC,
};
--- a/drivers/clk/mediatek/clk-mt7986.c
+++ b/drivers/clk/mediatek/clk-mt7986.c
@@ -573,7 +573,7 @@ U_BOOT_DRIVER(mtk_clk_apmixedsys) = {
.of_match = mt7986_fixed_pll_compat,
.probe = mt7986_fixed_pll_probe,
.priv_auto = sizeof(struct mtk_clk_priv),
- .ops = &mtk_clk_topckgen_ops,
+ .ops = &mtk_clk_fixed_pll_ops,
.flags = DM_FLAG_PRE_RELOC,
};
--- a/drivers/clk/mediatek/clk-mt7987.c
+++ b/drivers/clk/mediatek/clk-mt7987.c
@@ -67,7 +67,7 @@ U_BOOT_DRIVER(mtk_clk_apmixedsys) = {
.of_match = mt7987_fixed_pll_compat,
.probe = mt7987_fixed_pll_probe,
.priv_auto = sizeof(struct mtk_clk_priv),
- .ops = &mtk_clk_topckgen_ops,
+ .ops = &mtk_clk_fixed_pll_ops,
.flags = DM_FLAG_PRE_RELOC,
};
--- a/drivers/clk/mediatek/clk-mt7988.c
+++ b/drivers/clk/mediatek/clk-mt7988.c
@@ -830,7 +830,7 @@ U_BOOT_DRIVER(mtk_clk_apmixedsys) = {
.of_match = mt7988_fixed_pll_compat,
.probe = mt7988_fixed_pll_probe,
.priv_auto = sizeof(struct mtk_clk_priv),
- .ops = &mtk_clk_topckgen_ops,
+ .ops = &mtk_clk_fixed_pll_ops,
.flags = DM_FLAG_PRE_RELOC,
};
--- a/drivers/clk/mediatek/clk-mtk.c
+++ b/drivers/clk/mediatek/clk-mtk.c
@@ -47,6 +47,11 @@ static int mtk_clk_get_id(struct clk *cl
return id;
}
+static int mtk_dummy_enable(struct clk *clk)
+{
+ return 0;
+}
+
static int mtk_gate_enable(void __iomem *base, const struct mtk_gate *gate)
{
u32 bit = BIT(gate->shift);
@@ -752,6 +757,12 @@ const struct clk_ops mtk_clk_apmixedsys_
.get_rate = mtk_apmixedsys_get_rate,
};
+const struct clk_ops mtk_clk_fixed_pll_ops = {
+ .enable = mtk_dummy_enable,
+ .disable = mtk_dummy_enable,
+ .get_rate = mtk_topckgen_get_rate,
+};
+
const struct clk_ops mtk_clk_topckgen_ops = {
.enable = mtk_clk_mux_enable,
.disable = mtk_clk_mux_disable,
--- a/drivers/clk/mediatek/clk-mtk.h
+++ b/drivers/clk/mediatek/clk-mtk.h
@@ -283,6 +283,7 @@ struct mtk_cg_priv {
};
extern const struct clk_ops mtk_clk_apmixedsys_ops;
+extern const struct clk_ops mtk_clk_fixed_pll_ops;
extern const struct clk_ops mtk_clk_topckgen_ops;
extern const struct clk_ops mtk_clk_infrasys_ops;
extern const struct clk_ops mtk_clk_gate_ops;

View File

@@ -1,55 +0,0 @@
From 0ffd456516b5f0c126c9705d6b2368a45ee2353f Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Sun, 29 Jun 2025 15:21:18 +0200
Subject: [PATCH] env: Fix possible out-of-bound access in env_do_env_set
It was discovered that env_do_env_set() currently suffer from a long
time of a possible out-of-bound access for the argv array handling.
The BUG is present in the function env_do_env_set() line:
name = argv[1];
where the function at this point assume the argv at index 1 is always
present and can't be NULL. Aside from the fact that it's always
better to validate argv entry with the argc variable, situation where
the argv[1] is NULL is actually possible and not an error condition.
A example of where an out-of-bound access is triggered is with the
command "askenv - Press ENTER to ...".
This is a common pattern for bootmenu entry to ask the user input after
a bootmenu command succeeded.
In the context of such command, the while loop before "name = argv[1];"
parse the "-" char as an option arg and increment the argv pointer by
one (to make the rest of the logic code ignore the option argv) and
decrement argc value.
The while loop logic is correct but at the "name = argv[1];" line, the
argv have only one element left (the "-" char) and accessing argv[1]
(aka the secong element from argv pointer) cause an out-of-bound access
(making the bootloader eventually crash with strchr searching in invalid
data)
To better handle this and prevent the out-of-bound access, actually
check the argv entry left (with the use of the argc variable) and exit
early before doing any kind of array access.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
env/common.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/env/common.c
+++ b/env/common.c
@@ -82,6 +82,10 @@ int env_do_env_set(int flag, int argc, c
}
}
debug("Final value for argc=%d\n", argc);
+ /* Exit early if we don't have an env to apply */
+ if (argc < 2)
+ return 0;
+
name = argv[1];
if (strchr(name, '=')) {

Some files were not shown because too many files have changed in this diff Show More