3d15c5367d
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>
47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
# 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: 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)
|