- Rename 0002-bes2600-filter-5ghz-scan.patch -> 0023-bes2600-filter-5ghz-scan.patch
so the apply order matches the file ordering (was a confusing duplicate
0002 prefix because filter-5ghz predates the per-series reconstruction).
- Remove stale 0003-arm64-xor-neon-ffixed-x18-build-fix.patch. Already
dropped from PKGBUILD source array in commit f6448c4 (SCS=n + malformed
hunk), the file itself was leftover.
- Update PKGBUILD source reference.
No build effect: the apply order in source=() is unchanged and patch
content is bit-identical.
Signed-off-by: Claude (noether) <claude@reauktion.de>
Picks up the fix for besser#25 (cw1200-derived) from branch
bes2600/join-confirm-failure-reset in marfrit/bes2600-dkms.
After wsm_join_confirm returns status 1, the driver previously left
the firmware in a post-rejection intermediate state. A rapid second
JOIN attempt (e.g. wpa_supplicant retrying after the
PREV_AUTH_NOT_VALID deauth that mac80211 emits) then hit an
inconsistent firmware context, producing the
bes2600_sdio_read_rx_batch sdio read error -> wifi_force_close ->
WARN_ON at tx_loop_set_enable cascade observed in pkgrel=5 boot -1
(near wohnzimmer 5 GHz AP).
Patch 0022 adds direct wsm_reset in the failure path and queues
unjoin_work for serialisation matching cw1200 sta.c:1339-1344.
Build verification pending; soak test acceptance per besser#25
(8h near wohnzimmer 5 GHz, no cascade after observed JOIN reject).
Signed-off-by: Claude (noether) <claude@reauktion.de>
2f9b4c7 (bes2600: bounce SDIO TX buffers to avoid DMA OOB read) was
present in the cumulative single-patch but omitted from the per-series
reconstruction. Its absence caused KFENCE OOB hits in sdio_tx_work
(bes_sdio_memcpy_to_io_helper reads past tx_buffer->buf when align >
tx_buffer->len) leading to periodic TX workqueue stalls and latency
scatter under KFENCE_SAMPLE_INTERVAL=100ms.
Diagnosed during pkgrel=4 soak: 0 KFENCE hits in 6h on cumulative,
5-7/h on pkgrel=4 per-series. Root cause confirmed by diffing the
sdio_tx_work sg_set_buf call site in both patch sets.
Signed-off-by: Claude (noether) <claude@reauktion.de>
CONFIG_SHADOW_CALL_STACK is not set in the besser config, making the
arm64 xor-neon -ffixed-x18 workaround a no-op. The patch also has a
malformed hunk header (+9,10 vs actual +9,11) which causes patch(1) to
reject it. Drop it entirely.
Signed-off-by: Claude (noether) <claude@reauktion.de>
Replace the single squashed 0001-bes2600-besser-cumulative-series.patch
with 20 individual per-commit patches matching the bes2600/besser-danctnix-v3
branch in marfrit/bes2600-dkms. Also remove the duplicate 0003-arm64 entry
that was a bug in pkgrel=3.
Patch list:
0001 c5.1 defer scan and soften WARN on firmware reject
0002 c5.1.1 widen scan-defer backoff to 30s and decay reject_count
0003 c5.2 recover wedged firmware via mmc_hw_reset on link break
0004 c6.1 gate PM indication completion on pending request
0005 c6.2 short-circuit wake handshake when chip confirmed ACTIVE
0006 c7 self-detect when firmware does not honor PSM and skip
0007 c5.2.1 handle multi-function SDIO cards in mmc_hw_reset
0008 Patch A pre-empt AP-deauth-6 with reassoc on decrypt-fail storm
0009 Patch B bus_reset on connection-loss storm
0010 Patch F3 atomicize atomic_add() calls
0011 Patch F2 fix missing destroy_workqueue() on error in init_common
0012 Patch F1 fix concurrency UAF in bes2600_hw_scan / sched_scan
0013 Patch C v3 drop sdio_rx_work relay, IRQ→bh-direct
0014 Patch G restore SPDX identifiers + ST-Ericsson attribution
0015 Patch D atomicize ba_lock counters, drop the spinlock
0016 Patch E skip ps_state_lock when PSM-known-disabled
0017 Patch C2 replace ieee80211_rx_irqsafe with ieee80211_rx_ni
0018 Patch H bh.c hygiene cleanup (drop fossil blocks, dead stubs)
0019 besser#18 pending_record_lock SOFTIRQ-safe fix
0020 danctnix-flavor: export bus_reset helpers for bes2600_btuart
Build pending (pkgrel=4 makepkg in progress on boltzmann).
Signed-off-by: Claude (noether) <claude@reauktion.de>
Three things bundled because they were verified together in the same
deploy cycle on ohm (kernel built fresh on boltzmann 2026-05-18):
1. 0002 (Patch I) refined: refuse only multi-channel 5 GHz scans
(n_channels > 1). Original Patch I refused everything, which
blocked NM's per-frequency BSS discovery and made 5 GHz association
impossible. Tighter guard preserves the storm fix and unblocks
5 GHz attachment via NM 802-11-wireless.band=a profiles.
Verified on ohm with pkgrel=3: associated to BSSID
c0:25:06:e6:5b:33 on 5240 MHz (ch.48), TX 150 Mbit/s MCS 7
HT40 short-GI vs 72.2 Mbit/s on 2.4 GHz. Pattern A still 0.
Source-of-truth: marfrit/bes2600-dkms branch bes2600/scan-filter-5ghz
commits 093a503 + 8cd10f4 (squashed into this single 0002 file).
2. 0003 (new): arm64 xor-neon Makefile workaround for GCC 15.2.1
strict pragma validator vs arm_neon.h target() blocks losing
-ffixed-x18 under SCS=y. This is a defensive workaround;
currently dead-coded (SCS=n below) but in place for the day SCS
re-enable becomes possible (tracked in besser#20).
3. config: CONFIG_SHADOW_CALL_STACK=n override for the current GCC
15.2.1 toolchain issue. Restore to =y once GCC upstream fixes
the arm_neon.h pragma interaction (besser#20).
pkgrel bumped 2 -> 3.
Refs: besser#1 (closed), besser#20, kernel-agent#25 (PR mirroring
this into the kernel-agent patch tree — needs follow-up to pick
up the refinement).
Adds 0002-bes2600-filter-5ghz-scan.patch on top of the existing
cumulative series, addressing besser issue #1 (recurring
wsm_generic_confirm 0x0007 / [SCAN] Scan failed (-22) pattern).
The fix refuses 5 GHz hw_scan iterations in bes2600_hw_scan; the
firmware-reject cascade for the 5 GHz leg of mac80211's per-band
hw_scan loop is short-circuited. Source-of-truth commit lives on
marfrit/bes2600-dkms branch bes2600/scan-filter-5ghz (sha 093a503).
Predicted Phase 7 delta: Pattern A rate 14/h -> 0/h. See besser#1
comment 1171 for the full Phase 0-4 analysis and Phase 5 review.
pkgrel bumped to 2.
(1) Add `provides=("linux-pinetab2=$pkgver-$pkgrel")` and
`conflicts=(linux-pinetab2)` so pacman -U cleanly replaces the
upstream linux-pinetab2 package without needing --overwrite for the
shared rk3566-pinetab2-*.dtb files.
Verified end-to-end on ohm 2026-05-08: with these declarations
pacman would refuse coexistence (matching the actual filesystem
reality - both packages own the same DTB paths) and accept upgrade
when removing the old package.
Keeping `replaces=(wireguard-arch)` from upstream linux-pinetab2.
Not adding linux-pinetab2 to replaces= since the soft-upstream
intent is opt-in sidegrade, not auto-install on -Syu.
(2) Replace the bash for-loop DTB strip with find -delete.
The original loop silently no-op'd during the makepkg-fakeroot
package() phase: build verification of the published .pkg.tar.zst
showed 236 DTBs, 234 of them unrelated boards (px30-*, rk3308-*,
rk3328-*, rk3399-*, etc). Root cause not pinned down (suspected
nullglob or cwd interaction), but find -mindepth 1 -maxdepth 1
! -name 'rk3566-pinetab2-*' -delete is robust to that environment
and correctly identifies 2 to keep / 234 to remove on the existing
pkgdir.
Net pkg size impact: ~5 MB reduction (most non-pinetab2 DTBs are
20-40 KB).
No kernel rebuild required - PKGBUILD-only metadata + package() logic
change. Will take effect on the next makepkg run.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Build (PID 558898 on boltzmann) failed at bes2600_btuart.c:81:
error: implicit declaration of function 'bes2600_chrdev_switch_subsys_glb'
Root cause: the original danctnix-flavor adaptation overlaid Mobian's
heavily-trimmed bes_chardev.{c,h} on top of pristine danctnix. Mobian's
flavor (694 lines) had stripped out the BT/WiFi subsystem-switch
orchestration that pristine danctnix (1387 lines) carries and that
danctnix-only bes2600_btuart.c calls.
Fix: restore pristine danctnix bes_chardev.{c,h} as the baseline for
those two files in the danctnix flavor, then reapply Mobian's
campaign-relevant changes:
- Patch G: SPDX-License-Identifier header + corrected attribution
- Patch B: bes2600_chrdev_do_bus_reset + _trigger_bus_reset
(definitions in bes_chardev.c, declarations in bes_chardev.h,
EXPORT_SYMBOL_GPL on _trigger_bus_reset since it is called from
sta.c connection-loss-storm fast-recover path)
Phase 6 thread-safety contract: bus_reset functions read
bes2600_cdev.{sbus_ops,sbus_priv} without locking, identical to the
Mobian-flavor source-of-truth - acceptable given the bus_reset is
invoked from already-serialized higher-level error paths in sta.c.
48 files unchanged in count, +1412/-1243 (was +1426/-2003). The
delta vs the previous patch is concentrated in bes_chardev.{c,h}:
+776/-16 in .c (restoring the BT/WiFi switching infrastructure plus
appending Patch B), +2/-2 in .h (declarations + SPDX).
Patch verified to apply cleanly to v7.0-danctnix1 baseline.
b2sum updated in PKGBUILD.
Build retrigger pending on his.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>