Commit graph

32903 commits

Author SHA1 Message Date
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
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
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
Roland Reinl
00bb18b851 ipq40xx: Add support for Linksys MR6350
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
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
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
Daniel Golle
971c058cf5 mediatek: add mt7987-2p5g-phy-firmware to MT7987 devices
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
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
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
David Bauer
8d679ff5dd mpc85xx: make kernel 6.12 the default kernel
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
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
Some checks failed
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Has been cancelled
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
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
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
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
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
Christoph Krapp
6f99711b1b ipq40xx: fix unit-address of Netgear LBR20 ubi partition
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
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
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
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
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
Christian Marangi
3169ffa4c7
airoha: backport patch fixing out of order DMA for ethernet driver
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
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
eedc7b3b79
airona: an7583: fix typo for CONFIG_PHY_AIROHA_USB
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
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
Joe Holden
d97e529f1f realtek: RTL838x: make u-boot-env writeable ZyXEL GS1900
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
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