github TheUnboundDeveloper/AM-Reaper v3.4.3-beta-BQ16_PRO
Reaper v3.4.3-beta — BQ16_PRO

pre-release5 hours ago

v3.4.3 — packets dropped at the Runner on IPv6 DNS-over-TLS, radios lost on a network restart

  • A packet with more than four fragments was dropped at the Runner (field, GT-BE98). The Runner's CPU
    transmit path takes at most four page fragments per non-GSO packet (RUNNER_MAX_SG_FRAGS); the closed
    bdmf refuses the rest and the prebuilt enet driver drops the packet, logging skb->nr_frags N exceed max_sg_array 4, and the retransmit carries the same fragments and is dropped again. stubby writes small TLS
    records to several upstreams from one thread, so once the upstream round trip is long - IPv6 DNS-over-TLS
    through a 6in4 tunnel, any broker - a packet collects 5-10 fragments. The kernel now linearizes a non-GSO
    packet with more than net.core.reaper_tx_sg_max (4; 0 = stock) fragments before the driver sees it;
    net.core.reaper_tx_sg_linearized counts how often. On an older image net.core.max_skb_frags=4 is a
    no-build workaround. Host test test_kernel_runner_sg_cap.py; reaper_verify section 28 checks the kernel
    that was built.
  • 5 GHz and 6 GHz radios dead after a network restart with Dynamic puncturing on.
    restart_net (an IPv6 or LAN change), allnet, net_and_phy and wps_enr tore the radios down without
    stopping the radio readers - rpunctd arms a 4 s measurement window on every Dynamic radio each tick,
    reaper_bwfloor and rchqd read every 15 s and 10 s - and never dropped wlready, so rpunctd's own guard was
    blind; the wl1 and wl2 dongle firmware trapped seven seconds in and stayed down until a power cycle while
    every client sat on 2.4 GHz. The readers now stop beside stop_acsd() in every teardown branch and in
    restart_wireless, an armed window is waited out, and each reader also pauses on its own while rc_service
    names a radio-stopping service. Confirmed on the owner box: two restart_net, radios up, no trap. A trapped
    dongle cannot be revived from userspace (dhd devreset re-downloads the firmware and it traps again), so
    prevention is the whole fix. Host test test_wl_readers_quiesce.py.
  • Diagnostics v1.3.38. Section 15 reports the Runner cap, max_skb_frags, the refused-packet lines (the
    syslog count anchored on the kernel's own line) and tx_dropped per port; section 5 counts DNS-over-TLS
    upstreams by family; section 7 names a radio that is on but whose driver has no adapter; 19b counts dongle
    traps, lists the crash dumps by name and prints the restart that preceded each; the dmesg summary no longer
    masks "exceed" as "N". Host test test_diag_sanitizer.py.

Images & checksums (BQ16_PRO)

Two flashable images: + AI Advisor (default) and Standard (noMCP, all AI components compiled out entirely). Flash the *_nand_squashfs.pkgtb via Administration > Firmware Upgrade.

This is a beta release. Its filename carries _BETA and the router reports the same string on the dashboard and the About page, so you can always tell which channel a flashed image came from. Stable releases carry no marker.

Variant File SHA-256
+ AI Advisor BQ16_PRO_3006_102.8_Reaper_v3.4.3_BETA_nand_squashfs.pkgtb 093c2dda01ed1dc5aee7db2b190532b1cec55b2e9b3f1e290dde479ddc9ab02e
Standard BQ16_PRO_3006_102.8_Reaper_v3.4.3_BETA_noMCP_nand_squashfs.pkgtb 0d6af0cd1c18b1cd5646d49dc0a5d14bc536fd541d47918c1708af18ea88f5c9

Verify a download against the attached SHA256SUMS-BQ16_PRO-Reaper_v3.4.3.txt.


Corresponding source & reproducibility

The BQ16_PRO image for v3.4.3-beta is built from this repository at tag v3.4.3-beta-BQ16_PRO: the pinned Asuswrt-Merlin base (3006.102.8-beta2, a7ebfa133a) plus the complete patch series. The tag freezes the exact source that produced it.

The auto-attached Source code (zip/tar.gz) asset below is this repository at tag v3.4.3-beta-BQ16_PRO (patches + docs).

Don't miss a new AM-Reaper release

NewReleases is sending notifications on new releases.