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>