Two additions to fleet/ohm.yaml's includes for the bes2600 driver scope: 1. driver/bes2600/tx-sdio-dma-oob-danctnix/ — already on disk from ka#17 but not previously included. The cumulative-c5x-danctnix shipped in pkgrel=3 did NOT have this fix; pkgrel=4 per-series regressed because the staging-prep series was excluded. KFENCE caught the OOB during pkgrel=4 soak; pkgrel=5 included it. 2. driver/bes2600/join-confirm-reset-danctnix/ — NEW scope. cw1200 ancestor port (sta.c:1339-1344) with bes2600-specific PASSIVE-gate compensation in bes2600_unjoin_work. Closes besser#25. Verified pkgrel=6 srcversion 0E16463F: cascade gone, periodic ~600ms latency jitter also gone (same root cause). Status note: per-series reconstruction is now converged. The cumulative-c5x-danctnix entry is left as historical fallback; ka#29's blocker (per-series mirrors not applying cleanly) was resolved by manually reconstructing the per-series in marfrit/bes2600-dkms bes2600/join-confirm-failure-reset (top commit 3d833f8). Build still hand-managed via boltzmann:~/src/besser/marfrit-besser/ danctnix-besser-pkgbuild/kernel/PKGBUILD; ka-promote / ka-build template rendering still pending per the original TODOs. Signed-off-by: Claude (noether) <claude@reauktion.de>
1.7 KiB
bes2600/join-confirm-reset-danctnix
Danctnix-flavor patch closing besser#25 (wsm_join_confirm failure cascade).
What it does
When firmware returns status 1 on a JOIN command (wsm_join_confirm ret 1),
add a direct wsm_reset(...) call so the firmware returns to a clean IDLE
state, plus queue_work(workqueue, &priv->unjoin_work) for serialisation of
the next association attempt.
Why it's a fork-divergence fix
cw1200_join_work() (cw1200 ancestor, drivers/net/wireless/st/cw1200/sta.c:1339-1344)
queues unjoin_work on join failure: cw1200_do_unjoin() calls wsm_reset
when join_status == STA.
bes2600's bes2600_unjoin_work() gates the same wsm_reset on
join_status != PASSIVE. After a failed JOIN, join_status stays PASSIVE
(only set to STA on success) — queuing unjoin_work alone is insufficient
on bes2600. The danctnix variant carries a direct wsm_reset in the
failure path and the queue_work serialisation.
Observable effects (pkgrel=6 soak)
Beyond closing the cascade (besser#25 acceptance), this patch also collapsed the periodic ~600 ms latency jitter on ohm:
| pkgrel=5 | pkgrel=6 | |
|---|---|---|
| max RTT | 612 ms | 13.9 ms |
| mdev | 103.5 ms | 1.55 ms |
The bgscan-driven roam-attempt to a 5 GHz BSSID followed by wsm_join
reject was briefly stalling TX every minute even when the cascade did
not fire.
Upstream
- besser issue: bes2600: wsm_join_confirm failure leaves firmware dirty — wsm_reset missing in join failure path (backlog) (marfrit/besser#25)
- bes2600-dkms branch (Mobian flavor): bes2600/wsm-join-confirm-reset
(PR #12 against
cleanups) - bes2600-dkms branch (danctnix flavor): bes2600/join-confirm-failure-reset
(top commit
3d833f8) - shipped as patch 0022 in danctnix-besser-pkgbuild kernel/ (pkgrel=6, srcversion 0E16463FA8D85F4704DE93F)