Commit graph

33820 commits

Author SHA1 Message Date
Linus Lüssing
d527fc3c1c realtek: remove currently unused VLAN profile_id 1
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
So far we are only associating and using a VLAN profile ID of 0 to any
VLAN ID, VLAN profile ID 1 is unused. Therefore we can safely remove its
initialization, just like we don't initialize any of VLAN profile IDs
2 to 7 on rtl83xx/rtl930x or 2 to 15 on rtl931x.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Link: https://github.com/openwrt/openwrt/pull/21872
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-28 12:11:31 +01:00
Linus Lüssing
a0e11f61a9 realtek: setup special portmasks only once
The special all-ports multicast portmasks table entry would be written
twice, redundantly as vlan_profile_setup() is called twice. Which is
unnecessary. Writing this reserved multicast portmask entry is
independent of a VLAN profile, therefore let's move this to a more
suitable position.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Link: https://github.com/openwrt/openwrt/pull/21872
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-28 12:11:31 +01:00
Linus Lüssing
19d849d900 realtek: add portmasks, vlan_profiles and vlans to debugfs
Prepare portmasks, vlan profiles and vlans for changes
in upcoming patches by exporting them to debugfs for easier
debugging and monitoring.

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Link: https://github.com/openwrt/openwrt/pull/21872
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-28 12:11:31 +01:00
Bevan Weiss
5435ed7acc kernel: lift CONFIG_REGULATOR_VEXPRESS 'not set' to generic
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
Advertise the default 'not set' of this CONFIG higher in the tree since
it's already referenced by several other targets, with a few more targets
missing this reference (which fails build to prompt for N/y/m).

Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
2026-02-28 10:12:15 +01:00
Rafał Miłecki
73bfb34284 bcm53xx: fix switch standalone ports (like "wan")
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Fixes: https://github.com/openwrt/openwrt/issues/21187
Fixes: https://github.com/openwrt/openwrt/issues/21349
Fixes: 499a59c234 ("kernel: bump 6.12 to 6.12.30")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2026-02-27 20:42:24 +01:00
Markus Stockhausen
d2f0542c51 realtek: dsa: convert RTL83xx to new fast_age()
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Make use of the new fast_age() helpers for the RTL83xx targets.
For this:

- split the existing rtldsa_83xx_fast_age() into two device
  specific functions. This removes a family_id check.
- change the callbacks in the config structures

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22145
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:25:19 +01:00
Markus Stockhausen
f3743850bf realtek: dsa: switch RTL93xx to new fast_age()
The driver has a generic fast_age() function. Use it in the
dsa specific callback port_fast_age() for RTL93xx.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22145
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:25:19 +01:00
Markus Stockhausen
b37c4dbb2a realtek: dsa: provide generic fast_age for RTL93xx
Fast ageing of L2 entries is supported by DSA with two callbacks.

- port_fast_age(): age out for one port
- port_vlan_fast_age(): age out for one vlan on one port

Independent from the SoC it always boils down to issue a command
to the L2_TBL_FLUSH_CTRL register. Nevertheless the current
implemententation is repeated multiple times and makes use of
the family_id.

As a first refactoring step provide generic fast_age() functions
for RTL930x and RTL931x by rearranging the existing definitions
of vlan_port_fast_age().

The logic is as follows:

- provide a SoC dependent function that works with or without VLAN.
  When VLAN/VID = -1 only flush the specific port otherwise only
  flush given VLAN on port.
- provide a port_fast_age() helper that calls the SoC specific
  functions with VLAN = -1.
- provide a port_vlan_fast_age() helper that calls the SOC specific
  functions and handing over the given VLAN.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22145
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:25:19 +01:00
Markus Stockhausen
0f878ab9dc realtek: dsa: temporary rename of RTL93xx fast age functions
This is a preparation for the dsa fast_age() logic refactoring.
Rename two functions that will get removed later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22145
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:25:19 +01:00
Markus Stockhausen
94b89029c2 realtek: eth: remove obsolete code
Remove defines and variables that are no longer used.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22156
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:24:25 +01:00
Markus Stockhausen
370c99b4ec realtek: eth: simplify napi handler
rteth_hw_receive() already has a loop that checks how much work
may be done. No need to repeat that in the caller too. While we
are here adapt the function prefix.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22156
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:24:25 +01:00
Markus Stockhausen
0eac896cc7 realtek: eth: be defensive in rteth_confirm_and_disable_irqs()
With latest refactoring irq activation and deactivation is side-by-side
in the code. This makes it easier to align these functions. Current
assumption is, that the ethernet irq is only called on one cpu and
napi handling does not interfere. So it should be totally fine to
run irq disabling (called from interrupt handler) without locks.
Nevertheless be defensive and add a lock(). So in the case the ethernet
irq is fired twice on two cpus (e.g. RTL931x) the code is on the
safe side.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22156
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:24:25 +01:00
Markus Stockhausen
46da6feabc realtek: eth: provide helper for irq reenabling
Once again there is a family_id check. This time around the irq
reactivation in the receive path. For cleanup and better readability
add a helper directly besides its already existing counterpart
rteth_confirm_and_disable_irqs(). With that drop unneeded defines.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22156
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:24:25 +01:00
John Audia
3bcbbb0ac7 kernel: bump 6.12 to 6.12.74
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
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.74

No patches touched with this release.

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/22191
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:17:49 +01:00
John Audia
3c1e45a39f kernel: bump 6.12 to 6.12.73
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.73

No patches rebased/checksum update only.

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/22191
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:17:49 +01:00
John Audia
129244d618 kernel: bump 6.12 to 6.12.72
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.72

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/22191
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 18:17:49 +01:00
Rosen Penev
d4845bf618 Revert "lantiq: arv7525pw: use nvmem for eeprom"
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
This reverts commit 9dbd45c187.

Compared to ralink,mtd-eeprom , the nvmewm binding ends up byteswapping
the data on big endian hosts. Meaning on big endian, the nvmwem binding
is equivalent to:

ralink,mtd-eeprom +
ralink,eeprom-wrap

Revert as a result since there's no eeprom-swap here.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22192
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 16:33:46 +01:00
Robert Marko
aa78fa72e1 generic: add CONFIG_REGULATOR_QCOM_LABIBB
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
CONFIG_REGULATOR_QCOM_LABIBB is being disabled by targets manually, so
instead lets disable it in generic config.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:16:55 +01:00
Robert Marko
255c1d3da0 generic: add CONFIG_REGULATOR_QCOM_SPMI
Instead of disabling CONFIG_REGULATOR_QCOM_SPMI manually per target,
lets simply disable it in generic config.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:15:06 +01:00
Robert Marko
fd76f6f08f generic: add CONFIG_REGULATOR_QCOM_USB_VBUS
CONFIG_REGULATOR_QCOM_USB_VBUS showed up on Layerscape recently, and it
looks like multiple targets disable it manually, so simply disable it in
generic configuration instead.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:13:03 +01:00
Tim Harvey
eef354ff34 imx: cortexa53: enable DMA contiguous memory allocator
Enable and configure DMA contiguous memory allocator. Without this
CMA itself will be disabled.

Fixes: ae8bf1a26e ("imx: add imx8m support")
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/21950
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:02:05 +01:00
Hauke Mehrtens
758c8a26e9 ramips: mt7621: fix network configuration
The configuration for the dlink,dir-1360-a1 also changed the settings
for the devices defined on top of it. "lan1 lan2 lan3 lan4" "wan" is
the default configuration, no need to add it here.

Fixes: 7a8e2efed5 ("ramips: add support for D-Link DIR-1360 A1")
Reported-by: schmars in IRC
Link: https://github.com/openwrt/openwrt/pull/22179
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-26 20:16:24 +01:00
Rosen Penev
f5637607a2 bcm53xx: meraki mx6x: use nvmem MAC assignment
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Userspace handling is deprecated. Once mac-base goes upstream, the patch
itself can go upstream as well.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22058
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-25 16:17:05 +01:00
Shiji Yang
73a41c38e7 ramips: dts: convert to dt-bindings clock index
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Use clock index macros defined in dt-bindings header to improve the
code readability.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22163
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-25 14:06:02 +01:00
Sander Vanheule
ba57225066 realtek: hog the GS1900-24E external IC reset line
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
The GPIO line connecting to the reset signals of the GS1900-24E(A1)'s
external ICs (RTL8218B phys and RTL8231 expander) cannot be asserted by
the MDIO subsystem, as the reset is shared between busses.

To prevent users from accidentally asserting the reset line, a GPIO hog
is created to permanently de-assert the signal, reliably keeping the
phys and GPIO expanders on.

Tested-by: Simon Fischer <simi.fischa@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2026-02-24 21:29:26 +01:00
Sander Vanheule
cdbd9eb448 realtek: rtl838x: drop GS1900 MDIO reset GPIO
The reset line wired to the RTL8231 on the GS1900 series may also
connect to other external ICs on the board. On the GS1900-24E, the
reset line is wired (via buffers) to the board's RTL8231 expanders and
the RTL8218 phys. As these external devices (phys) are on different
busses, the reset line shouldn't be specified on one bus or the other.

Drop the reset specification from the generic GPIO description, so it
can be added back on a per-device basis after confirming the behavior.

Link: https://github.com/openwrt/openwrt/issues/18620
Fixes: fd978c2e80 ("realtek: Enable Zyxel GS1900's RTL8231 reset line")
Signed-off-by: Sander Vanheule <sander@svanheule.net>
2026-02-24 21:29:26 +01:00
Ahmed Naseef
7ee18e84dc econet: en7528: split DASAN H660GM-A into Airtel and Generic variants
The DASAN H660GM-A GPON ONT exists in two hardware variants, one
distributed by ISPs and one sold directly by the manufacturer [1].

Split the single DTS into a shared dtsi and per-variant DTS files
with the correct GPIO mappings, flash layout, and LED definitions.

Variant comparison:

  Feature        | Airtel                    | Generic
  ---------------+---------------------------+-------------------------
  Supplied by    | Airtel Xstream Fiber      | Retail
  Flash          | Micron MT29F2G01ABAGD     | Micron MT29F1G01ABAFD
                 | 256 MB                    | 128 MB
  Known P/N      | DPW-G-P-66GMAZ-A3         | DPW:G-P-660GMAY-G0
                 | (some units unlabelled)   | DPW:G-P-660GMAY-G3
  WPS LED        | Yes                       | No
  WLAN button    | No                        | Yes
  USB LED        | No                        | Yes
  LAN LEDs       | Green only                | Green + Amber

[1] https://dasanns.com/en/solution/detail.php?mode=view&cat_no=32&offset=&idx=122

Tested-by: Arif Rahman Hakim <arif2785id@gmail.com>
Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22095
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-24 20:17:24 +01:00
Mieczyslaw Nalewaj
22ccb445e6 mt7620: workaround jal imm26 and redundant PAGE_ALIGN
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
On MT7620-class platforms (CONFIG_NET_RALINK_MT7620) we observe sporadic
wrong-jump-targets, kernel oopses, hanging, corrupted backtraces or even
"half-written" instructions when the compiler emits a direct 'jal imm26'
call.
This is triggered in:
  - the small random helpers inside get_random_u32_below(), and
  - the blkcg_maybe_throttle_current() call in resume_user_mode_work().

This patch forces those two call sites to use an indirect call via
a volatile function pointer (load into register + jalr) when building
for MT7620, avoiding embedding a 26-bit immediate jump target.

Additionally, on MT7620 builds the exec path in fs/exec.c is modified:
  - skip arch_align_stack() + PAGE_ALIGN() in setup_arg_pages()
    because the micro-randomization (< PAGE_SIZE) implemented by many
    ports (including MT7620) is negated immediately by PAGE_ALIGN().
    Skipping the redundant PAGE_ALIGN() reduces exposure to the
    problematic code pattern.

These changes are targeted workarounds for MT7620; behavioral logic is unchanged.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/20553
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-24 14:40:39 +01:00
Robert Marko
dfbaf84650 ath79: mikrotik: fix DEVICE_PACKAGES
Instead of redifining the DEVICE_PACKAGES, make sure to expand the list
so yafut is included by default as well.

Fixes: 42cd486787 ("ath79: remove kmod-ath9k and wpad from Mikrotik RB750r2")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-24 14:37:33 +01:00
Robert Marko
7bbe8d560c mvebu: use libdeflate for FitImage
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
Use libdeflate for faster and better compression in FitImages.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-02-24 11:47:22 +01:00
Tim Harvey
231553b280 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>
2026-02-24 10:48:01 +01:00
Markus Stockhausen
cf4cd07777 realtek: dsa: allow building as a module
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
The makefile recipe is wrong and a module compilation tries
to build each object individually. Fix that. This allows to
build the dsa driver as a module.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 22:03:03 +01:00
Markus Stockhausen
f45cfd1f43 realtek: eth: remove fixed dsa coupling
The ethernet driver has a hard link to the dsa driver. Especially
the setup_tc() function must be available when the driver loads.
Decouple it by using a dsa callback recipe.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 22:03:02 +01:00
Markus Stockhausen
c6bbdb6489 realtek: mach: export soc_info
We do not want to rely on the soc_info structure. But at the moment
it is still referenced in several places. Add an EXPORT() to it.
So drivers that need access to this structure can be build as modules.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 22:03:02 +01:00
Eicke Herbertz
42cd486787 ath79: remove kmod-ath9k and wpad from Mikrotik RB750r2
The RB750r2 (HEXLite) does not have wifi and those packages bloat the image
by a significant amount. When building a custom image with WireGuard and
booting that from initramfs, there wasn't enough space left in tmpfs to
upload and flash the squashfs image. Investigating what packages I could
remove, I discovered these unneeded ones.

Signed-off-by: Eicke Herbertz <wolletd@posteo.de>
Link: https://github.com/openwrt/openwrt/pull/22134
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 22:00:21 +01:00
Shiji Yang
0bfcb0a36c 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>
2026-02-23 21:56:42 +01:00
Rosen Penev
ee5999cf78 treewide: linksys: use nvmem MAC for hw_mac_addr
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Given that Linksys is the same brand and probably use the same OEM, it
stands to reason all devinfo hw_mac_addr implementations are the same.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22092
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 10:56:00 +01:00
Rosen Penev
581d10ebfc ipq806x: nbg6817: use nvmem for MAC addresses
Userspace handling is deprecated. NVMEM allows more flexibility in terms
of exotic setups while keeping correct MAC addresses.

env-size taken from file in uboot-envtools.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22107
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 10:54:08 +01:00
Rosen Penev
aef4d9e677 ipq806x: ac400i: use nvmem for MAC addresses
Userspace handling is deprecated. NVMEM allows flexibility in terms of
exotic setups by avoiding random MAC addresses.

u-boot env-size taken from the entry in uboot-envtools

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22107
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 10:54:08 +01:00
Shiji Yang
eb3b8b3862 mediatek: backport various pinctrl fixes
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 patches from upstream linux and mtk-openwrt-feeds to fix
MT7981 register offset issue and correct MT798x IES register config.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21423
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-22 23:07:18 +01:00
Felix Baumann
85250b94f6 mediatek: add the aquantia kmod to bpi-r4
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
The banana pi r4 comes with 2 sfp+ ports running at 10gbps
Readd support for aquantia sfp+ modules that was removed by
57a127c9e7

Closes: #19878
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19884
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-22 01:31:27 +01:00
Markus Stockhausen
75c772899c realtek: dsa: derive dsa port count and irq mask from cpu port
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Avoid a family_id check and derive the values from the cpu port.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 20:33:28 +01:00
Markus Stockhausen
9a0bd2d1aa realtek: dsa: move n_pie_blocks into config structure
Place it where it belongs.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 20:33:28 +01:00
Markus Stockhausen
42a311bac9 realtek: dsa: move n_counters into config structure
Place it where it belongs.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 20:33:28 +01:00
Markus Stockhausen
b74e261d56 realtek: eth: merge & simplify irq handlers
Two different irq handlers exist for RTL83xx and RTL93xx. Basically
they do always the same.

- Check transmit interrupts (not needed anymore)
- Check rx overflow interrupts (not needed anymore)
- Determine rx interrupts and queues that must be processed.
- In case of RTL839x check for L2 interrupts

With all the recent refactoring their logic is more or less the
same. Merge them into one handler. For better readability add a
helper that determines the work (aka rings) that needs to be
processed.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22023
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 20:30:15 +01:00
Markus Stockhausen
8e33c40c7f realtek: fix LGS352C DTS
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
There is a wrong port assignment for the 4 SFP+ ports
on that device. Additionally the transmit polarity
change option was missed. Fix that.

Fixes: f88135b ("realtek: add support for Linksys LGS352C")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22119
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-21 18:58:38 +01:00
Jonas Jelonek
00ceb1ed17 realtek: pcs: rtl931x: configure SerDes-backing MAC groups
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
RTL931x organizes MACs into 12 groups (one per SerDes) that must be
explicitly enabled before link establishment. Without initialization,
link may fail or packets may be corrupted, especially in USXGMII/XSGMII
modes. This is the case for devices which lack initialization by the
bootloader.

Simply enable all MACs in all groups by writing 0xffffffff to the
registers. Unused MACs and reserved bits are harmless, avoiding complex
logic to always set only needed MACs.

This is placed in the PCS driver since the MAC groups are assigned per
SerDes and the DSA driver lacks SerDes awareness (on purpose)

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22088
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-21 14:04:48 +01:00
Jonas Jelonek
81b148fd38 realtek: add support for XikeStor SKS8300-12X V1
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Hardware:
  - SoC: RTL9313
  - Memory: 512MB
  - Flash: SPI-NOR 32MB (GigaDevice GD25Q256EFIR)
  - Ethernet: 12x 1/2.5/10 Gbps (SFP+)
  - LED/Keys (GPIO): 1x/1x
  - UART: "Console" port on the front panel
    - type: RS-232C
    - connector: RJ-45
    - settings: 9600n8 / 115200n8
  - Watchdog: Diodes PT7A7514WE
  - Monitoring: LM75A
  - Power: 100-240 VAC 50/60 Hz C13/C14

Important notes:
---------------

* the device uses 9600 Baud by default but this extremely slows down the
  device when using the serial console. OpenWrt is configured to use
  115200 Baud. If you need to enter the bootloader, you need to use 9600
  Baud.

* PT7A7514WE watchdog is fed through hardware-assisted SYS_LED. However,
  the bootloader seems to deactivate that again during autoboot. There's
  a quirk in early arch setup for this.

* a kernel binary "nos.img" needs to be stored into JFFS2 filesystem
  using 4KiB erase block instead of 64KiB.

* V1 is the version with the 19"-sized case. As of 2026, there's a newer
  version with a narrow case.

Flash instructions using initramfs image:
-----------------------------------------

(mostly taken from 0dc0b98295)

 1. Prepare TFTP server with an IP address in 192.168.2.0/24.
 2. Connect your PC to Port 1 on SKS8300-12X.
 3. Power on SKS8300-12X and interrupt autoboot by Ctrl + B.
 4. Login to the vendor CLI by Ctrl + F and "diagshell_unipoe_env" as password.
 5. Switch baudrate to 115200 by running a command and then reconnect
    with different settings:

    baudrate 115200

 6. Switch to U-Boot CLI by "debug_unish_env".
 7. Enable Port 1 with the following commands:

    rtk 10g 0 fiber1g	# (or fiber10g if 10GBase-*R)
    rtk ext-devInit 0	# init RTL8231 that holds SFP GPIOs
    rtk ext-pinSet 2 0	# set tx-disable of port 1 to LOW

 8. Transfer initramfs image via TFTP and boot it:

    tftpboot 0x82000000 <serverip>:<image name>
    bootm 0x82000000

 9. On the initramfs image, backup the stock firmware if needed.
10. Upload (or download) sysupgrade image to the device.
11. Erase "firmware" partition to cleanup JFFS2 of stock FW:

    mtd erase firmware

12. Perform sysupgrade with the sysupgrade image.
13. Wait until the flash completes and the system reboots into OpenWrt.

Reverting to stock firmware:
----------------------------

(taken from 0dc0b98295)

1. Prepare OpenWrt SDK to use the mkfs.jffs2 tool contained in it

   Note: the official mkfs.jffs2 tool in mtd-utils doesn't support 4KiB
         erase size and not usable for SKS8300-8X

2. Create a directory for working
3. Download official firmware for SKS8300-8X from XikeStor's official
   website
4. Rename the downloaded firmware to "nos.img" and place it to the
   working directory
5. Create a JFFS2 filesystem binary with the working directory

   /path/to/mkfs.jffs2 -p -b -U -v -e 4KiB -x lzma \
       -o nos.img.jffs2 -d /path/to/working/dir/

6. Upload the created JFFS2 filesystem binary to the device
7. Erase the "firmware" partition

   mtd erase firmware

8. Write the JFFS2 filesystem binary to the "firmware" partition

   mtd write /path/to/nos.img.jffs2 firmware

9. After writing, reboot the device by power cycle

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 00:49:51 +01:00
Jonas Jelonek
659719d8ca realtek: image: make xikestor-nosimg a common recipe
Make xikestor-nosimg a common recipe in the Makefile to allow usage for
other subtargets too, not only rtl930x.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 00:49:51 +01:00
Jonas Jelonek
7f74364672 realtek: arch: add early watchdog quirk
On some XikeStor switches (SKS8300-8X, SKS8300-12X), the SYS_LED/GPIO0 is
used to feed an external PT7A7514WE watchdog. While this was no issue on
SKS8300-8X, the bootloader on the SKS8300-12X seems to deactivate the
automatic feeding on purpose by setting the pin function of to GPIO0
instead of SYS_LED. This kills the periodic signal generated on that pin.
This causes the kernel to just stop quite early and reset the system
entirely.

Because this happens very early, it doesn't work to define this as a
pinctrl entry or GPIO hog. The drivers aren't even loaded at that stage.
To work around the issue, we need to configure this in the arch-specific
early setup. An affected device needs to have a corresponding node in
the DTS that is picked up then.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-21 00:49:51 +01:00