68671 Commits

Author SHA1 Message Date
Christian Marangi
1b9922d5e8
airoha: backport fixes merged in net upstream tree
Airoha reported some bug in the TX/RX descriptor handling and PPE. Backport
the fix for such bug merged in net staging tree.

It's expected that these patch will be dropped in future minor kernel
version when submitted to stable staging tree.

All affected patch automatically refreshed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-04-28 20:09:03 +02:00
Zoltan HERPAI
4ca22b16e8 sunxi: drop support for 6.12
Drop support for 6.12 by removing config and patches.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2026-04-28 11:27:46 +02:00
Zoltan HERPAI
3cff8f06bd sunxi: switch to 6.18
Make 6.18 the default kernel.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2026-04-28 11:27:45 +02:00
Sven Eckelmann
fcb2ff6ec6 realtek: rtl930x: mcx3: specify RTL8224 reset GPIO
The nRESET pins of the RTL8224 PHY on the MCX3 are wired to GPIO6 of the
SoC, but this was never described in the devicetree.

Commit c99a30668d5f ("realtek: add RTL8224 initialization to Realtek
driver") introduced support for reinitializing RTL8224 PHYs, and commit
084da38a2e74 ("realtek: mdio: activate multiple busses") allowed the MDIO
bus provider load the devicetree properties to the bus, including reset
descriptors. With both in place, a bus level PHY reset via the hardware pin
is now correctly triggered before reinitialization.

Add the missing reset-gpios property so the PHY can be reset via the
hardware pin.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/22966
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-28 11:24:28 +02:00
Mieczyslaw Nalewaj
54cb211d50 ramips: remove hack and use safexcel-eip93ies
Remove legacy hack patch, switch mt7621 crypto node to the intended
Safexcel insecure EIP93 compatible string and simplify crypto module
packaging to use the inside-secure eip93 driver.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/22871
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-04-28 09:44:04 +02:00
Mieczyslaw Nalewaj
47430172e7 ramips: drop 6.12 support
Drop patches and configs for Linux 6.12.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/22871
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-04-28 09:44:04 +02:00
Mieczyslaw Nalewaj
1bc1b98de9 ramips: use kernel 6.18 by default
Switch to Linux kernel version 6.18.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/22871
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-04-28 09:44:03 +02:00
Carsten Schuette
de41c05e1c mold: Update to 2.41.0
Update mold to 2.41.0

Release notes:
https://github.com/rui314/mold/releases/tag/v2.41.0

Signed-off-by: Carsten Schuette <schuettecarsten@googlemail.com>
Link: https://github.com/openwrt/openwrt/pull/23129
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-28 09:35:53 +02:00
Daniel Golle
da61d63638 netifd: update to Git HEAD (2026-04-23)
e45b890 ethtool: avoid unneeded ioctl
 8c31959 system-linux: gate ethtool reapply on apply_mask
 1375538 device: live-apply pure-sysctl config changes without teardown
 5bddddb device: centralise device-attr diff handling in device_set_config
 18ba5f3 device: realign DEV_OPT_* bits with DEV_ATTR_* enum positions

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-04-28 01:38:08 +01:00
Aleksander Jan Bajkowski
b6f2b5ea13 kernel: backport crypto selftests
FIPS 140-3 recommends that all crypto implementations should be tested
before first use. Testmanager performs initial tests based on existing
test vectors. Not all algorithms have defined test vectors, so to improve
this situation, this commit backports recently added test vectors for
some cipher suites.

These vectors were calculated using a software implementation and then
double-checked on Mediatek MT7981 (safexcel) and NXP P2020 (talitos).
Both platforms passed self-tests.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/23012
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-28 00:52:07 +02:00
Markus Stockhausen
0ba4e2c971 realtek: mdio: convert to regmap_assign_bits()
Use regmap_assign_bits() where it improves readability. With this
there is no need to calculate masks and values in separate lines.

Splitting the single update_bits() in rtmdio_931x_setup_polling()
into two separate assign_bits() is uncritical.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23099
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-28 00:41:18 +02:00
Rustam Adilov
596ce2845d realtek: arch: rtl-otto: add rtl9607 model info support
Add the registers, family id and cpu port defines to the mach header.
Since RTL96xx SoCs has additional "subtype" info, add the respective
property to soc_info struct to be used in prom file.

The same way as rtl838x, the chip_info register requires 0xa to be
written. Similarly, 0xb must be written to get the subtype info.
There doesn't seem any check for testchip in RTL96xx so, we ignore it.

Add subtype information to set_system_type function if it is present
using the added subtype variable.

There are some RTL9607 chips out there with 512MB so add the check
for RTL9607 in the prepare_highmem. The registers are the same as
in RTL9300 so nothing else need to be changed.

Signed-off-by: Rustam Adilov <adilov@tutamail.com>
Link: https://github.com/openwrt/openwrt/pull/23023
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-28 00:29:57 +02:00
Jonas Jelonek
0509464a93 realtek: refresh 'add-pcs-rtl-otto' patch
Refresh the patch to account for recent changes in the generic kernel
patches. Makes the CI kernel patch check happy again.

Fixes: c271123724fc ("generic: 6.18: fix MediaTek USXGMII driver")
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23127
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 15:23:43 +02:00
Daniel Golle
dbd8eab75d generic: 6.18: mtk_eth_soc: improve non-MTK tag_8021q DSA
Add patches to improve support for using 3rd-party DSA switches
like MaxLinear MxL862xx with MediaTek's mtk_eth_soc being the
conduit. This involves reorganizing hardware queues to avoid
overlap (currently dp->index is used -- if there is more than one
DSA switch this is problematic), and correctly programming flows
of the non-MTK DSA users ports in the PPE offloading engine.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-04-27 13:12:03 +01:00
Paweł Owoc
c9a87914a9 modules: video: Fix DRM client lib dependency
Fix dependency for kmod-drm-client-lib module:
error: recursive dependency detected!
	symbol LINUX_6_18 is selected by PACKAGE_kmod-drm-client-lib
	symbol PACKAGE_kmod-drm-client-lib is selected by LINUX_6_18

Fixes: e75ba35ed837 ("modules: video: introduce DRM client setup module")
Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23124
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 14:09:38 +02:00
Shiji Yang
9c99843659 bcm27xx: update irq-msi-lib.h header path
Fix build error:

drivers/irqchip/irq-bcm2712-mip.c:14:10: fatal error: irq-msi-lib.h: No such file or directory
   14 | #include "irq-msi-lib.h"
      |          ^~~~~~~~~~~~~~~

Fixes: ba7aa2a97153 ("generic: backport MSI affinity support for DW PCIe")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/23125
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 14:05:10 +02:00
Jonas Jelonek
b447bf5686 realtek: pcs: rtl931x: drop USXGMII gating in setup_serdes
The USXGMII_10GDXGMII and USXGMII_10GQXGMII early-return was added
when the submode register was not yet programmed, making those modes
effectively unconfigurable. With the submode now wired up at probe
time and written from the set_mode path, the gating is no longer
needed.

Keep the XSGMII gate - RTL8218D/E bring-up through the proprietary
10G SGMII path is still unimplemented - and rewrite the surrounding
comment accordingly.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23120
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 13:47:18 +02:00
Jonas Jelonek
9eb0edfe2b realtek: pcs: rtl93xx: add remaining USXGMII submodes
Complete the USXGMII submode table with the four values that were
missing so far:

  0x01  10GDX    (2 x 5G)
  0x03  5GSX     (1 x 5G)
  0x04  5GDX     (2 x 2.5G)
  0x05  2_5GSX   (1 x 2.5G)

Together with the existing 10GSX (0x00) and 10GQX (0x02) this covers
all six USXGMII modes the driver declares. Add a corresponding mapping
to the hw_mode table too to cover them properly there.

Replace the switch in rtpcs_93xx_sds_apply_usxgmii_submode() with a
sparse lookup table indexed by hw_mode, using -1 as the sentinel for
modes without a submode value. Non-USXGMII modes silently no-op as
before; a USXGMII mode hitting a SerDes without an allocated submode
register now returns -EOPNOTSUPP, catching configuration mismatches
that would previously have been silently dropped.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23120
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 13:47:18 +02:00
Jonas Jelonek
23f04f6af8 realtek: pcs: rtl931x: enable USXGMII submode selection
USXGMII submode (10GSX vs 10GQX) is selected through a dedicated
register at 0x13e8, independent of the MAC and IP mode registers.
Without programming it, USXGMII-QX ports initialise as single-lane
SX and fail to link up correctly; MAC and IP mode alone are
insufficient for a working USXGMII setup.

The register packs 12 x 5-bit entries for SerDes 2..13, six per
32-bit word, non-straddling (bits 0..29 used, 30..31 padded). This
matches the available register dumps and the SDK's
reg_array_field_write() non-CROSS_REGISTERS path, which derives the
bit position as ((index - larray) % (32 / width)) * width and
accesses only a single 32-bit word. The submode values are identical
to RTL930x, so the shared RTPCS_93XX_SDS_USXGMII_SUBMODE_* defines
are reused.

Allocate the regmap_field at probe time with coordinates computed
from the SerDes ID; the regular packing needs no lookup table. Call
rtpcs_93xx_sds_apply_usxgmii_submode() from the set_mode dispatcher
after set_ip_mode - the helper's null-guard and mode filter leave
non-USXGMII paths unchanged.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23120
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 13:47:18 +02:00
Rosen Penev
086fb1c067 ramips: wn575a3: fix eeprom size for 5ghz wifi
MT7613 uses 4da8 for eeprom size. eeprom + calibration.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22463
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 11:11:07 +02:00
Alexandru Ardelean
a6cd7ace35 refpolicy: update to 2.20260312
Changelog:
  This release consists mainly of small fixes in the policy.

  New Modules:
  - ofono
  - pd_mapper
  - tee_supplicant
  - xdsprpcd
  - wayland

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:54 +02:00
Alexandru Ardelean
bbae0e5c09 secilc: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:54 +02:00
Alexandru Ardelean
153a2cba71 policycoreutils: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:53 +02:00
Alexandru Ardelean
e14133919c checkpolicy: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:53 +02:00
Alexandru Ardelean
589ad78db1 libsemanage: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:53 +02:00
Alexandru Ardelean
50d79fdb3b libselinux: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:53 +02:00
Alexandru Ardelean
36870b804d libsepol: update to 3.10
Release Notes:
https://github.com/SELinuxProject/selinux/wiki/Releases#release-310

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://github.com/openwrt/openwrt/pull/23082
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:50:53 +02:00
Lars Gierth
a32a367259 toolchain: gcc: fix include memory against GCC 16
This patch backports a small but important part of the upstream commit:

b3f1b9e2aa07 build: Remove INCLUDE_MEMORY [PR117737]

Its original commit message fails to mention that the commit also moves
the `#include <memory>` to an earlier position within system.h,
which is the actual change that we're after in this patch.

Building our GCC 14.3 with host GCC 16, the inclusion order starts to matter,
which is an issue that was also touched upon by the upstream commits:

9970b576b7e4 Include safe-ctype.h after C++ standard headers, to avoid over-poisoning
f6e00226a4ca build: Move sstream include above safe-ctype.h {PR117771]

Signed-off-by: Lars Gierth <larsg@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/23095
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:47:10 +02:00
Sven Eckelmann
ea3d646a08 realtek: dsa: postpone probe due to deferred PHYs
PHY drivers might need access to NVMEM or the filesystem to load
calibration/initialization data. The driver will then return -EPROBE_DEFER
to signal to the device core that the probe should be retried multiple
times again in the 10s driver_deferred_probe_timeout.

But when the switch driver calls dsa_register_switch(), it needs to connect
the PHYs directly. As result, all PHYs without an driver will automatically
get the default driver (either `genphy_c45_driver` or `genphy_driver`)
assigned and initialized. But for PHYs with the additional initialization
data from NVMEM/fs, this will usually result in not working PHYs.

Since there are Realtek based boards with RTL826x PHYs and the new driver
loads the initialization/patch values from rootfs, it is necessary to check
in the beginning of the probe function whether the PHYs are ready and the
probing can continue.

If some driver is still without driver after the deferred probe period
ended, the loading will just continue and the generic PHY drivers will
still be used.

Closes: #22811
Co-authored-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Co-authored-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/23075
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:36:23 +02:00
Jonas Jelonek
6a23733437 realtek: pcs: rtl93xx: add shared MAC mode wrapper
RTL930x and RTL931x share a set of extras around MAC mode writes:

 - a post-write delay (kept for consistency with the original RTL930x
   behaviour; harmless on RTL931x)
 - the force-mode bit (RTL931x only, nullable field)

Add rtpcs_93xx_sds_set_mac_mode() as a shared wrapper around the
generic rtpcs_sds_set_mac_mode() that applies each of these extras
unconditionally; the nullable field makes the force-bit write a no-op
on RTL930x.

Route the three RTL93xx call sites (the 930x and 931x set_mode
dispatchers, and 931x set_ip_mode's OFF transition) through the
wrapper, removing the duplicated force-bit handling from each.

The USXGMII submode write stays out of the wrapper and is called
explicitly from the 930x dispatcher via rtpcs_93xx_sds_apply_usxgmii_submode().
Keeping submode as a separate step leaves room for RTL931x to apply it
from its IP-mode path once the submode register is wired up, without
retrofitting a MAC-mode wrapper with side effects.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Jonas Jelonek
1eeb9027d5 realtek: pcs: rtl931x: migrate MAC mode setting to regmap_field
RTL931x uses a regular 8-bit-per-SerDes layout in SERDES_MODE_CTRL, so
the reg_field can be computed in the probe hook with simple arithmetic.

The 8-bit-per-SerDes field is split into a 7-bit mac_mode (bits 0..6)
and a 1-bit mac_mode_force (bit 7), each written independently via its
own regmap_field. The mac_mode is widened to 7 bits (rather than the
5 bits strictly needed for the mode value) so MAC mode writes also
clear bit 5 (FEC enable) and bit 6 (10G speedup), matching the original
behaviour where the full 8-bit mask cleared these bits on every mode
change. FEC and speedup are mode-dependent and not yet programmed by
the driver; keeping them cleared leaves headroom for future support
without changing the effective register value.

rtpcs_931x_sds_reset() is updated to save and restore both fields
across the off/on cycle, preserving the original force-bit handling.
rtpcs_931x_sds_set_mode() uses the generic rtpcs_sds_set_mac_mode() and
sets the force bit explicitly; the same sequence also appears in
rtpcs_931x_sds_set_ip_mode()'s OFF transition. Both are folded into
the shared RTL93xx wrapper in a later commit.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Jonas Jelonek
df02f87cb9 realtek: pcs: rtl930x: migrate MAC mode setting to regmap_field
RTL930x packs 5-bit mode fields across four registers at irregular
positions. Express this as a static reg_field table indexed by SerDes
ID; the probe hook allocates the corresponding regmap_field. The
USXGMII submode register follows the same pattern with its own
reg_field table, allocated only for 10G-capable SerDes (id 2..9).

The generic rtpcs_sds_set_mac_mode() replaces the old
__rtpcs_930x_sds_set_mac_mode() helper. The previous behaviour of
writing OFF before the target mode is intentionally dropped — it was
RTL930x-specific and not required by the hardware.

The variant-level rtpcs_930x_sds_set_mode() is kept as a pure dispatch
between the IP mode path (set_ip_mode) and the MAC mode path. The
USXGMII submode write is factored into rtpcs_93xx_sds_apply_usxgmii_submode(),
which derives the submode value from hw_mode and no-ops on SerDes
without the submode register.

The __rtpcs_930x_sds_get_mac_mode() and __rtpcs_930x_sds_get_usxgmii_submode()
helpers are dropped. They were __always_unused and depended on the
removed parallel arrays. A future get_mode path will be added if a
caller needs it, likely mirroring the setter's wrapper shape.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Jonas Jelonek
a784d0ba36 realtek: pcs: rtl839x: migrate MAC mode setting to regmap_field
RTL839x packs the SerDes MAC mode in MAC_SERDES_IF_CTRL with a regular
per-SerDes layout, so the regmap_field can be computed directly in the
probe hook rather than declared as a static table.

Mode values (currently only OFF and QSGMII) move into a static
rtpcs_839x_sds_hw_mode_vals[] table. Values for 100BASEX, 1000BASEX
and SGMII from the vendor SDK are kept as comments for future
reference — they are not yet exercised here.

With no variant-specific extras (no force bit, no companion register,
no submode), rtpcs_839x_sds_set_mode() is removed; setup_serdes calls
the generic rtpcs_sds_set_mac_mode() directly.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Jonas Jelonek
bdf41ded29 realtek: pcs: rtl838x: migrate MAC mode setting to regmap_field
Replace rtpcs_838x_sds_set_mode()'s inline shift/mask arithmetic with
a regmap_field computed and allocated at probe time. The field layout
is regular (5-bit per SerDes, reverse-packed in SDS_MODE_SEL), so the
position can be derived arithmetically from the SerDes ID rather than
declared in a table.

The function keeps its wrapper role because SerDes 4 and 5 have a
second companion register (INT_MODE_CTRL) with its own per-mode value
encoding. Since RTL838x is the only variant with this quirk and the
register is written from only one call site, it is kept inline rather
than abstracted into its own config table.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Jonas Jelonek
ac916653b8 realtek: pcs: add regmap-based MAC mode infrastructure
All four Realtek PCS variants (RTL838x, RTL839x, RTL930x, RTL931x)
configure the SerDes MAC mode by writing a register field whose layout
varies per variant — different base registers, different bit positions,
and in some cases per-SerDes packing that isn't arithmetically regular.

Add the common infrastructure to express this uniformly:

 - per-SerDes regmap_field pointers in a new 'swcore_regs' anonymous
   struct on rtpcs_serdes: mac_mode, mac_mode_force (931x only, nullable)
   and usxgmii_submode (930x only, nullable).

 - a per-variant mode-value table pointer (sds_hw_mode_vals) on
   rtpcs_config, keyed by enum rtpcs_sds_mode. Values are s16 with -1 as
   the "unsupported" sentinel — u8 with 0 would collide with RTL839x's
   OFF value (0x0).

 - a generic rtpcs_sds_set_mac_mode() that looks up the value for the
   requested mode and writes it via the regmap_field.

Variant-specific extras (post-write delay, force bit, companion register
writes, USXGMII submode handling) will be added in per-variant wrappers
in the following commits.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23040
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-27 10:34:32 +02:00
Pawel Dembicki
f43fd80a45 kirkwood: switch to 6.18 kernel
This target is not popular among active developers.
If nobody is using the testing kernel, this phase is pointless.

Switch this niche target to kernel 6.18 for testing.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22680
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-04-27 09:39:21 +02:00
Pawel Dembicki
e22055551a kirkwood: kernel: 6.18: refresh config
Done by `kernel_oldconfig`.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22680
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-04-27 09:39:21 +02:00
Pawel Dembicki
df5da64a10 kernel/kirkwood: restore files for v6.12
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

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

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22680
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-04-27 09:39:21 +02:00
Pawel Dembicki
46e03cff98 kernel/kirkwood: create files for v6.18 (from v6.12)
This is an automatically generated commit.

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

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22680
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-04-27 09:39:21 +02:00
Daniel Golle
10ca4886c4 generic: 6.18: add and fix support for Aquantia PHYs
Add support for Aquantia CUX3410 and fix/sync support for the AQR112
variants.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-04-27 02:56:15 +01:00
Daniel Golle
be0a49cfe8 mediatek: filogic: arcadyan-mozart: fix polarity properties
Use the upstream properties to describe the USXGMII PCS polarity as
the downstream mediatek,pnswap{,-rx,tx} was dropped.
This board was the only user.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-04-27 02:56:15 +01:00
Daniel Golle
c271123724 generic: 6.18: fix MediaTek USXGMII driver
LINK_INBAND_ENABLE isn't valid for 5GBase-R/10GBase-R modes which
by definition don't support any in-band an. Correctly report
LINK_INBAND_DISABLE to fix 10G fiber SFP modules no longer working.
While at it also get rid of downstream pn-swap properties in favor
of using the upstream schema.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-04-27 02:56:15 +01:00
Philip Prindeville
793ceff149 modules: amazon-ena: fix ptp dependency
Going from 6.12 to 6.18 I see breakage with a missing dependency
that drivers/net/ethernet/amazon/ena/ena_netdev.c has on ptp.ko.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
Link: https://github.com/openwrt/openwrt/pull/23098
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:40:59 +02:00
Markus Stockhausen
eb4b4b3107 realtek: eth: convert eth_probe() to regmap
Remove the last sw() macros from the ethernet driver.
With this drop the required include line.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:17 +02:00
Markus Stockhausen
4e927d77b4 realtek: eth: convert set_features() to regmap
Use regmap_assign_bits() for conversion and much simpler code.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:17 +02:00
Markus Stockhausen
fb874fcef7 realtek: eth: convert mac functions to regmap
Besides converting some functions to regmap do some minor
refactoring for rteth_931x_init_mac().

- Use dev_err() instead of classic print functions
- Harmonize ALE_INIT error handling. ALE_INIT_2 has the same
  logic as the other registers. The reset is finished as soon
  as the register is completely zero.
- From testing 100ms poll timeout seems to be sufficient

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:17 +02:00
Markus Stockhausen
62e0f63aa3 realtek: eth: convert link up/down to regmap
Make use of regmap in rteth_mac_link_down and rteth_mac_link_up.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:17 +02:00
Markus Stockhausen
0102403696 realtek: eth: more regmap refactoring
Convert rteth_start_xmit() and rteth_hw_stop() to regmap.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:17 +02:00
Markus Stockhausen
80a3c35d9e realtek: eth: convert rteth_XXXX_hw_stop() to regmap
Use regmap in the following functions

- rteth_838x_hw_stop()
- rteth_839x_hw_stop()
- rteth_930x_hw_stop()
- rteth_931x_hw_stop()

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23067
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:38:16 +02:00
Jörg Seitz
771e06352f mediatek: filogic: Add new Router model ZBT-Z8106AX-S
Device support for zbt-z8106ax-s

Specifications:

SoC: MediaTek MT7981B
RAM: 256MiB
Flash: Winbond SPI-NAND 128 MiB
Switch: 1 WAN, 4 LAN (Gigabit) MediaTek MT7531
Buttons: Reset
Power: DC 12V 1A
WiFi: MT7981B 2.4Ghz & 5Ghz
USB 3
M2 slot to hold LTE modem
1 nano SIM slot (user controllable)
Hardware watchdog (confirmed to work)

Router comes in a plastic tower with all antennas internal.
 - 4 antennas for LTE 4G/5G communication
 - 2 antennas for Wifi 2.4 GHz
 - 2 antennas for Wifi 5 GHz

Led Layout:

Power (green, user controllable, default set to OpenWrt Status)
Mobile (green, user controllable)
WLAN 2.4G (green, user controllable)
WLAN 5G (green, user controllable)

WAN (amber, user controllable, set to show eth1)
LAN1 (amber, hardware controlled)
LAN2 (amber, hardware controlled)
LAN3 (amber, hardware controlled)
LAN4 (amber, hardware controlled)

SIM Slot:

Controlled via exported GPIO named SIM.

echo "0" > /sys/class/gpio/sim/value
 - turns off sim slot labelled SIM

echo "1" > /sys/class/gpio/sim/value
 - turns on sim slot labelled SIM

---

Installation:

A. Through U-Boot menu:

- Prepare your connecting computer to use a static IP in
  network 192.168.1.0/24 like
  a) 192.168.1.10 netmask 255.255.255.0 (legacy notation)
  b) 192.168.1.10/24 (CIDR notation)
- 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 spot.
- Upload the **Factory** image file.

Note: U-Boot GUI it can be used to recover from an incorrect firmware flash.

B. Through OpenWrt Dashboard:

If your router comes with OpenWrt preinstalled (modified by vendor),
you can easily upgrade by going to the dashboard (192.168.1.1) and
then navigate to "System" -> "Backup/Flash firmware"
Flash OpenWRT firmware.
Important: Take care to deselect (untick) option
"keep settings". Settings done by vendor are incompatible with
versions 24.10 or 25.12.

MAC Addresses:

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

Hardware Watchdog:

Device features a GPIO controlled hardware watchdog.
Verfied by removing procd controlled watchdog and
seeing device rebooting.

---

Notes:
The zbt-z8106ax-s could be ordered from vendor with a variety of modems.
Mine came with a 4G LTE modem Quectel EC200A.
Quectel firmware was at EC200AEUHAR01A30M16.
Choices for ordering with 5G LTE were available.

Modem communication is set to ethernet control mode (ECM) by vendor.

Package modemmanager works fine with Quectel EC200A.
You may also decide to use FUjR/Qmodem github repository
to have it manage LTE modem.

Please take note that internal switch port named lan5 isn't
wired to LTE modem in model S as opposed to model T.
Just removing lan5 from DTS did cause unwanted reboots whenever
a cable is plugged into LAN ports 1-4. Disabling port lan5
in DTS however works fine. No unwanted reboots due to
plug/unplug cable into any lan or wan port.

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/22912
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-27 00:31:26 +02:00