Commit Graph

69404 Commits

Author SHA1 Message Date
Lukas Stockner eef8c718b4 base-files: handle name collision between kernel UBI volume and MTD partition
On the AP-325 (and variants), the bootloader enforces a particular UBI volume
layout and naming, so unfortunately the kernel's UBI volume and MTD partition
end up with the name, which confuses the current logic.

Therefore, add an option to ignore the MTD partition.

Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Test Dev <dev@example.org>
2026-06-16 13:45:44 +02:00
Lukas Stockner 13fc688f03 base-files: support rootfs_data on its own partition
The current code assumes that the rootfs_data UBI volume is on the same MTD
partition as the rootfs.
Unfortunately, this does not work on the Aruba AP-325 (and variants), since
the bootloader enforces a particular UBI volume layout.

Therefore, this adds a separate variable to set the rootfs_data partition,
and updates all existing devices with a non-default rootfs partition to also
specify the new variable.

Signed-off-by: Lukas Stockner <lukas@lukasstockner.de>
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Test Dev <dev@example.org>
2026-06-16 13:45:44 +02:00
Etienne Champetier 0a9fcdf571 prereq-build/u-boot: add Python 3.14 support
Python 3.14 is the default version on Fedora 43/44.

Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23243
Signed-off-by: Test Dev <dev@example.org>
2026-06-16 12:51:01 +02:00
Rosen Penev faf8f3760d irq-ath79-intc: add missing \n
Needed to make the dmesg output normal.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:34 +02:00
Rosen Penev 00841615f1 irq-ath79-intc: avoid negative values
of_count_phandle_with_args can return negative. We don't want that.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:33 +02:00
Rosen Penev dbb4ac9342 irq-ath79-intc: add irq_dispose_mapping
Avoids a resource leak on failure.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:33 +02:00
Rosen Penev 4ae9c7bdc1 irq-ath79-intc: statically allocate irq_chip
No need for dynamic allocation. static is fine.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:33 +02:00
Rosen Penev 3c2e7b3eee irq-ath79-intc: add chained_irq_enter/exit
Original review said:

Missing chained_irq_enter/exit calls.

Also rework slightly to reduce indentation.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:32 +02:00
Rosen Penev 5ed10923f9 irq-ath79-intc: rename pending_mask to enable_mask
Original review said:

Isn't this "pending_mask" more of an "enabled"?

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:32 +02:00
Rosen Penev 10d7a164ad irq-ath79-intc: don't use hwirq_max
Original review said:

Don't. This is an implementation detail of the irq domain, and you're
not supposed to access that field.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:32 +02:00
Rosen Penev 20275da9cd irq-ath79-intc: use generic_handle_domain_irq
Combines irq_find_mapping and generic_handle_irq.

Matches upstream commit
046a6ee2343bb26d85a9973a39ccdb9764236fa4

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:32 +02:00
Rosen Penev e46cc54e9d irq-ath79-intc: add SPDX license
License boilerplate was deprecated by upstream in
d2912cb15bdda8ba4a5dd73396ad62641af2f520

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:31 +02:00
Rosen Penev 122ea336de irq-ath79-intc: switch from add to create
Upstream Linux wants to remove the add APIs.

Get ahead of this and make the switch as was done upstream in
affdc0d1bdfa544fed26ae07c4e136af86465507

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:31 +02:00
Rosen Penev 0354345493 irq-ath79-intc: remove panic and add kfree
Panic like this was recommended against in the original review of the
upstream submission. Remove it and add missing kfree calls.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:31 +02:00
Rosen Penev 86cc4d84bb ath79: move intc driver out of patch
This driver has been attempted to be upstreamed once and never again.
Keep it local to make modification easier.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22981
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:50:30 +02:00
Paul Spooren 4315c52a9f button-hotplug: bump package release
This commit fixes "286f377389a button-hotplug: add KEY_SETUP and KEY_VENDOR
handling" which changed the code without bumping the PKG_RELEASE, resulting in
different binaries under the same version.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Link: https://github.com/openwrt/openwrt/pull/23826
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-06-16 11:33:24 +02:00
Paul Spooren 45b8cb0ce4 mtd: bump package release
This commit fixes "a5107ad58c6 mtd: fix buffer leak and fd leak in mtd_dump()"
which changed the code but did not increase the release. This causes two
packages with the same version to have different content and thereby hashes.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Link: https://github.com/openwrt/openwrt/pull/23827
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-06-16 11:32:52 +02:00
Ahmed Naseef 7ed3c81248 econet: enable 6.18 testing kernel
Add building the 6.18 kernel for econet as testing.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:35 +02:00
Ahmed Naseef 16d10338cc econet: update config for 6.18
Regenerated with `make kernel_oldconfig` for all subtargets.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:35 +02:00
Ahmed Naseef 2dde2efd22 econet: update patches for 6.18
Fix patch compatibility for kernel 6.18 on econet and refresh with
`make target/linux/refresh V=s`. The shared airoha clk/spi/uart and the
econet-local timer, nand and phy patches are rebased onto the 6.18
upstream code.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:35 +02:00
Ahmed Naseef 3644ab9fea econet: remove upstreamed patches for 6.18
Remove all patches that have already been upstreamed for kernel 6.18.
The remaining v6.19/v6.19rc1 backports are kept, in sync with the airoha
target these patches are shared with.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:34 +02:00
Ahmed Naseef 0619a10834 kernel/econet: 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: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:34 +02:00
Ahmed Naseef d7c66d6241 kernel/econet: 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: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23755
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 11:19:34 +02:00
Ryan Leung baa020f6bf uboot-mediatek: enable true RNG driver for recently added devices
Enable the hardware true random number generator driver added in
2a9dce2d9e ("uboot-mediatek: port RNG drivers and enable them")
for recently added devices.

Fixes: d2fabb974c ("mediatek: add support for Wavlink WL-WNT100X3 ubootmod")
Fixes: eb6dd61a8d ("mediatek: add cudy wr3000h-v1 ubootmod")
Fixes: cfc17e81e1 ("mediatek: add cudy wr3000e-v1 ubootmod")
Fixes: b7b4938303 ("mediatek: add cudy wr3000s-v1 ubootmod")
Fixes: 6b3b7c7dc1 ("mediatek: add cudy wr3000p-v1 ubootmod")
Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23462
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 10:59:14 +02:00
Rosen Penev a62ffbf3ac prereq-build: add clang support
The Apple g++ check is really clang in disguise. Furthermore, testing on
Linux hosts reveals that clang can sufficiently replace gcc.

Minimum version of clang is 12 because of ccache.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17259
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 10:56:46 +02:00
Rosen Penev fa846e7e64 mediatek: predator-w6x: set MAC in NVMEM
Userspace handling is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23764
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 09:47:22 +02:00
Daniel Tang bd58777845 realtek: add support for V3 variant of SG2008P
Add basic support for the TP-Link SG2008P V3 variant. The switch appears
to be identical to the V1 variant, except that it uses the MP3924
instead of the TPS23861 PoE chip.

Specifications:
---------------
 * SoC:       Realtek RTL8380M
 * Flash:     32 MiB SPI flash (Vendor varies)
 * RAM:       256 MiB (Vendor varies)
 * Ethernet:  8x 10/100/1000 Mbps with PoE on 4 ports
 * Buttons:   1x "Reset" button on front panel
 * Power:     53.5V DC barrel jack
 * UART:      1x serial header, unpopulated
 * PoE:       1x MPS MP3924 I2C PoE controller

Works:
------
  - (8) RJ-45 ethernet ports
  - Switch functions
  - System LED
  - Basic PoE support (no driver, but a startup script puts the chip
    into AUTO mode)

Not yet enabled:
----------------
  - PoE, Link/Act, PoE max and System LEDs

Install via web interface:
-------------------------

Not supported at this time.

Install via serial console/tftp:
--------------------------------

The footprints R27 (0201) and R28 (0402) are not populated. To enable
serial console, 50 ohm resistors should be soldered -- any value from
0 ohm to 50 ohm will work. R27 can be replaced by a solder bridge.

The u-boot firmware drops to a TP-Link specific "BOOTUTIL" shell at
38400 baud. There is no known way to exit out of this shell, and no
way to do anything useful.

Ideally, one would trick the bootloader into flashing the sysupgrade
image first. However, if the image exceeds 6MiB in size, it will not
work. The sysupgrade image can also be flashed. To install OpenWRT:

Prepare a tftp server with:
 1. server address: 192.168.0.146
 2. the image as: "uImage.img"

Power on device, and stop boot by pressing any key.
Once the shell is active:
 1. Ground out the CLK (pin 16) of the ROM (U7)
 2. Select option "3. Start"
 3. Bootloader notes that "The kernel has been damaged!"
 4. Release CLK as sson as bootloader thinks image is corrupted.
 5. Bootloader enters automatic recovery -- details printed on console
 6. Watch as the bootloader flashes and boots OpenWRT.

Blind install via tftp:
-----------------------

This method works when it's not feasible to install a serial header.

Prepare a tftp server with:
 1. server address: 192.168.0.146
 2. the image as: "uImage.img"
 3. Watch network traffic (tcpdump or wireshark works)
 4. Power on the device.
 5. Wait 1-2 seconds then ground out the CLK (pin 16) of the ROM (U7)
 6. When 192.168.0.30 makes tftp requests, release pin 16
 7. Wait 2-3 minutes for device to auto-flash and boot OpenWRT

Signed-off-by: Daniel Tang <tangrs@google.com>
Link: https://github.com/openwrt/openwrt/pull/20616
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-16 09:42:19 +02:00
Hauke Mehrtens 5b2c8f4ff9 umdns: update to Git HEAD (2026-06-16)
1b5e7bf1cec7 cache: bound cache size and clamp hostile TTLs

Link: https://github.com/openwrt/mdnsd/security/advisories/GHSA-jg8f-fhfw-jg46
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-16 02:20:12 +02:00
Hauke Mehrtens ecbb5f6e9f uhttpd: update to Git HEAD (2026-06-16)
ae015e099986 client: reject unhandled Transfer-Encoding values
b78f51847879 client: close connection on invalid chunk length
7b1bec45826b ubus: close connection on POST body parse error

Link: https://github.com/openwrt/uhttpd/security/advisories/GHSA-mcfg-c4r7-pjpf
Link: https://github.com/openwrt/uhttpd/security/advisories/GHSA-p55c-rmhc-qfm5
Link: https://github.com/openwrt/uhttpd/security/advisories/GHSA-wgwp-64hh-f52p
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-16 01:39:53 +02:00
Hauke Mehrtens 63c0767f3d ead: fix integer underflow in handle_send_a()
handle_send_a() computed the SRP "A" parameter length as

    len = ntohl(msg->len) - sizeof(struct ead_msg_number);

sizeof(struct ead_msg_number) is 1, and the subtraction is evaluated in
unsigned arithmetic. A packet with msg->len == 0 therefore wraps the
result to a huge value which, assigned to the signed int len, becomes -1.
The following bounds check is signed:

    if (len > MAXPARAMLEN + 1)
        return false;

so -1 passes, and memcpy(A.data, number->data, len) runs with len cast to
size_t (~SIZE_MAX) against the 257-byte abuf, crashing the daemon.

Neither parse_message() nor handle_packet() validate msg->len (only the
captured packet length), so an unauthenticated attacker on the local
segment can reach this path and crash ead with a single crafted packet.

Validate the claimed length in unsigned arithmetic before the subtraction
and bound it on both sides. Doing the upper-bound check unsigned as well
also closes a 32-bit-only variant where sizeof(ead_packet) + msg->len
overflows in handle_packet(), letting a large msg->len reach the same
negative-len path.

Link: https://github.com/openwrt/openwrt/security/advisories/GHSA-9558-77jp-g3fw
Reported-by: @Vasco0x4
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-16 01:23:28 +02:00
Hauke Mehrtens 7e7bd602ea fritz-tools: fix out-of-bounds memset in TFFS segment expansion
When growing the segment array in find_entry(), the memset() that zeroes
the newly allocated slots computed the destination with redundant sizeof
scaling:

  memset(segments + (num_segments * sizeof(struct tffs_entry_segment)), ...)

segments is a typed pointer, so pointer arithmetic already scales by the
element size. Multiplying the offset by sizeof again advances the
destination by num_segments * sizeof^2 bytes, landing far outside the
realloc()'d buffer and zeroing unrelated heap memory whenever a TFFS
entry spans multiple segments that require array expansion.

Drop the redundant multiplication so the memset targets segments[num_segments].

This is a robustness fix for malformed/corrupt TFFS content; the parser
only reads the on-device nand-tffs MTD partition as root, so it is not
considered security relevant.

Reported-by: @Vasco0x4
Assisted-by: Claude:claude-opus-4-8
Link: https://github.com/openwrt/openwrt/pull/23763
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-16 00:51:53 +02:00
Rosen Penev e4c35c2eec mac80211: backport ath9k memset fixes from upstream
Backport two upstream commits that replace memset() on coherent DMA
descriptor rings with explicit WRITE_ONCE() status word stores.

On 32-bit PowerPC platforms like apm821xx, coherent DMA memory may be
mapped uncached. The optimized memset() path can use dcbz there, which
triggers alignment warnings and spams the kernel log.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23776
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-15 10:00:38 +02:00
David Bauer ebbe3a08a7 odhcpd: update to latest HEAD
c6792ba odhcpd: fix integer underflow in dhcpv6_ia_handle_IAs
d329a15 odhcpd: fix out-of-bounds write in build_ia

Signed-off-by: David Bauer <mail@david-bauer.net>
2026-06-15 00:15:42 +02:00
Rosen Penev 0c9548a058 treewide: add linux,rootfs to rootfs labeled partitions
A step towards removing hack/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20951
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:58:17 +02:00
Rosen Penev 53fa04d261 mediatek: filogic: replace mtd-eeprom with nvmem
These use fairly standard sizes.

0x1000 for mt7916 and 0x1e00 for mt7992.

Added a mediatek,mt76 compatible line where missing as required by mt76
upstream Documentation.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23113
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:42:52 +02:00
Rosen Penev 17a0904384 mediatek: mt7622: replace mtd-eeprom with nvmem
These use fairly standard sizes.

0x4da8 for mt7615 + mt7622 and 0xe00 for mt7915.

Added a mediatek,mt76 compatible line where missing as required by mt76
upstream Documentation.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23113
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:42:52 +02:00
Rosen Penev 3d7d675888 mpc85xx: ws-ap3xxxi: use u-boot,env for MAC
Userspace handling is deprecated.

Fix bad copy/paste error with ws-ap3710i. enet2 is unused.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23761
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:35:48 +02:00
Rosen Penev 87592fa409 apm821xx: drop support for 6.12
Remove the 6.12 kernel configuration and patch stack after switching to 6.18.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23777
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:10:51 +02:00
Rosen Penev f7efd51a8c apm821xx: switch to 6.18
Move apm821xx to the 6.18 kernel after testing it as the testing kernel.

There are ethernet performance improvements in the 6.18 kernel for
whatever reason. There's also work on getting rid of dmesg slop at
runtime.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23777
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:10:50 +02:00
Carlo Szelinsky 6ecf15d63a realtek: add hasivo-mcu sensor driver
Add a temperature/fan sensor (hwmon) driver for the Hasivo / Horaco
management MCU as a second child of the hasivo MCU MFD (alongside the
watchdog). It exposes the CPU and system temperatures and a 3-state fan
control (auto / force-on / force-off), read/written through the parent's
shared syscon regmap.

The register protocol was reverse-engineered from the stock 'imi' firmware
and verified on hardware. The fan-status register (0xFB) reflects the MCU's
effective drive state, not actual rotation (a blocked fan still reads
force-on), so no fanN_alarm is exposed. pwm1 echoes the commanded state so
a write reads back consistently, and falls back to the live drive state in
automatic mode. The register map is shared across boards.

Signed-off-by: Carlo Szelinsky <github@szelinsky.de>
Link: https://github.com/openwrt/openwrt/pull/23762
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-06-14 15:44:24 +02:00
Carlo Szelinsky e36b8bf3ed realtek: convert hasivo-mcu-wdt to a hasivo-mcu-mfd child
The watchdog and the temperature/fan hwmon are the same management MCU at
a single I2C address (0x6f). Linux binds one driver per I2C client, so the
watchdog cannot keep owning the address directly if the hwmon is to live
on the same chip. Convert it from a standalone i2c_driver into a
platform_driver child of the hasivo MCU MFD that reaches the chip through
the parent's shared regmap (syscon), and depend on kmod-mfd-hasivo-stc8.

Signed-off-by: Carlo Szelinsky <github@szelinsky.de>
Link: https://github.com/openwrt/openwrt/pull/23762
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-06-14 15:44:24 +02:00
Jonas Jelonek 390276a846 realtek: pcs: improve lock and error handling in pcs_config
Make use of scoped_guard macro to ease lock and error handling in
pcs_config by having a dedicated scope and no need for gotos.

While being here, replace -ENOTSUPP with preferred -EOPNOTSUPP and drop
{ } brackets for single statement block.

Link: https://github.com/openwrt/openwrt/pull/23759
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 15:11:45 +02:00
Jonas Jelonek 77c750faad realtek: pcs: add activate/deactivate sds_ops hooks
Add the mandatory activate/deactivate bring-up hooks to rtpcs_sds_ops
and let rtpcs_pcs_config() drive the full sequence around the variant
configuration:

	deactivate -> setup_serdes -> activate -> post_config

The per-variant calls that were open-coded at the start and end of the
setup_serdes() functions are removed in favour of these indirections.
RTL839X never powered the SerDes down/up, so it gets no-op stubs to
satisfy the contract for now. Execution order is preserved for all
variants.

Link: https://github.com/openwrt/openwrt/pull/23759
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 15:11:45 +02:00
Jonas Jelonek 2e4d128ebf realtek: pcs: add post_config sds_ops hook
Some variants need finalization that must run only after the SerDes is
powered up: RTL838X performs a one-shot switch queue reset on first
start, RTL930X runs RX calibration and the TX config. So far this lived
at the tail of the variant setup_serdes() functions.

Add an optional post_config hook to rtpcs_sds_ops and call it from
rtpcs_pcs_config() right after setup_serdes(), then relocate the
RTL838X and RTL930X tail work into it. As activate() still runs at the
end of setup_serdes() here, the execution order is unchanged.

Link: https://github.com/openwrt/openwrt/pull/23759
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 15:11:45 +02:00
Jonas Jelonek 2d60ef16ad realtek: pcs: rtl930x: apply tx config before activation
In RTL930x setup, tx config was called at then end of the procedure
after configuration and calibration ran. This is still a leftover from
the old code located in DSA/PHY. However, applying TX configuration like
amplification factors, etc. doesn't make sense after calibration, it
should run before. Moreover the call was commented with "leave loopback
mode" which is just wrong and doesn't describe what the function does.
Fix this misery.

Testing on device with different interface modes shows no difference so
far, especially no negative effects.

Link: https://github.com/openwrt/openwrt/pull/23759
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 15:11:45 +02:00
Ryan Leung effea14e1f mediatek: wavlink wl-wn536ax6 rev a: remove old WLAN LED default
Remove old UCI default for WLAN LED trigger on `phy1` which is now instead triggered by either
wireless PHY by kmod-ledtrig-network

Fixes: adb7ff2792 ("mediatek: wavlink wl-wn536ax6 rev a: add "network" LED trigger")
Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23790
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 15:10:13 +02:00
Ryan Leung adb7ff2792 mediatek: wavlink wl-wn536ax6 rev a: add "network" LED trigger
Currently the "WiFi" LED indicator light is triggered only by activity on the 5 GHz PHY.

Change it to be triggered by WLAN activity on either Wi-Fi PHY, matching stock behaviour, by using
`kmod-ledtrig-network` added in 2aa1185fb0 ('leds: add "network" LED trigger (lan/wan/wlan)').

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23682
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 12:31:36 +02:00
Ryan Leung 1e3474ebbd uboot-envtools: mediatek_filogic: wavlink wl-wn536ax6 rev a: add config
Add config for WAVLINK WL-WN536AX6 Rev a to be able to read and write U-Boot environment variables.

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23682
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 12:31:36 +02:00
Ryan Leung 2fe7396cab mediatek: wavlink wl-wn536ax6 rev a: fix WLAN 5GHz MAC address
The second WLAN MAC address in the "Factory" partition at 0x0a is not the same as the
WLAN 5GHz BSSID observed when using the manufacturer's stock firmware, which is derived from
the 2.4GHz/label MAC address by setting bits 26 and 7 (Locally Administered).

While at it, also fix alphabetical ordering of some other device names.

Fixes: 1748ce8295 ("mediatek: add support for WAVLINK WL-WN536AX6 Rev a")
Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23682
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 12:31:36 +02:00
Ryan Leung 04f5823f83 mediatek: wavlink wl-wn536ax6 rev a: change nvmem layout for MAC addresses
Currently the WAN MAC address is read from the first (LAN) MAC address in the "HW" partition and
then incremented by 1 instead of being read directly from the second MAC address.

Change to reading the two MAC addresses (LAN/WAN) directly from "Factory" partition.

Fixes: 1748ce8295 ("mediatek: add support for WAVLINK WL-WN536AX6 Rev a")
Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23682
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 12:31:35 +02:00