Skip to content

v4.0.0-rc3 — issue #99 switch-core self-recovery

Pre-release
Pre-release

Choose a tag to compare

@jnilo1 jnilo1 released this 25 Jun 10:33
· 5 commits to main since this release

v4.0.0-rc3 — issue #99 switch-core self-recovery

Release candidate, not GA. Supersedes v4.0.0-rc2.

Headline — issue #99 switch-core self-recovery

The Ethernet driver (rtl8196e-eth v2.18) now detects a wedged switch core and resets it
at runtime
instead of riding the soft-lockup to a watchdog reboot — restoring the deep
recovery the original Realtek SDK shipped and our from-scratch rewrite had dropped:

  • Deep switch-core reset. When the cheap in-poll ring resync repeatedly fails to clear a
    RUNOUT storm, a worker performs the vendor FullAndSemiReset (switch-core clock cycle +
    full reset) and re-brings-up the datapath — recovering a live unit with no reboot.
  • TX-done hang watchdog. A 1-second check catches a TX path the switch stops draining (a
    stall the RX detectors can't see) and triggers the same reset.
  • Clear-RUNOUT-on-progress. Transient runouts now self-clear, matching the stock receive
    path.

You'll see it in the log if it engages, e.g. eth0: switch core reset done (#1). The rc2
watchdog post-mortem record (v6) is kept, so a recurrence is either healed visibly
or fully captured in /userdata/panic/history. No throughput regression (TCP RX ~94, TX
~69 Mbit/s).

Also in rc3 (rolls up the rc2 development cycle)

  • Dual kernel × two boards — four images. BOARD (lidl / sengled-e39-g8c) ×
    KERNEL (6.18 / 7.1) selection; both kernel lines now carry identical drivers.
  • Bootloader V2.9 — closes the post-flash boot loop on a kernel flash and a 16 MiB
    full-flash.
  • Sengled G4 NCP radio firmware validated (#130); flash_efr32.sh gains a BOARD=
    selector + board-match guard.
  • Flash robustness — user-added files under /userdata survive a userdata reflash.
  • Quiet boot, harmonized init-script output, and a portable per-release iperf3 bench.

See 3-Main-SoC-Realtek-RTL8196E/CHANGELOG.md for the full per-component detail.

Install

rc3 uses the per-board image layout, so this is a full reflash (not kernel-only). Pull
the branch and flash:

git fetch origin && git checkout v4.0.0-rc3
# Lidl board, 6.18 kernel (defaults):
./3-Main-SoC-Realtek-RTL8196E/flash_remote.sh -y kernel <gw-ip>
# (or a full install / other BOARD/KERNEL — see 32-Kernel/CLAUDE-less docs)

Reporting

If you hit a lockup anyway, please attach the boot-after line from
dmesg | grep "previous boot ended in panic" (or /userdata/panic/history) and any
switch core reset done / TX-done descriptor … stuck / RX runout not clearing lines
from dmesg.