notes: Patch C v3 Phase 7 N=3 — +73% throughput, race fix verified #12

Merged
marfrit merged 1 commits from claude-noether-10 into main 2026-05-07 21:51:28 +00:00
Collaborator

N=3 reps on v3 module (PR #5 merged) closed the Patch C campaign.

TL;DR

  • v3 N=3 mean throughput @ 4 MB/s sender: 2.352 MB/s
  • vs Patch B baseline: +73% (1.362 → 2.352)
  • vs original Bug #5 floor (75 KB/s rep3): 28× improvement
  • sdio_rx_work dispatch rate: 0/s (was 86.4/s; function deleted)
  • bes2600_bh_work redispatches: 0 (single long-lived; preserved)
  • sdio_tx_work dispatch rate: 0.8/s (was 276.1/s; -99.7%)
  • WARN/BUG/oops on stress: none (v2 race verified absent)

Per-rep table

rep elapsed (s) MB/s sdio_rx_work bh_work redispatches
1 180.72 2.363 0 0
2 180.67 2.590 0 0
3 180.69 2.102 0 0

Phase 8 lesson

The cw1200 mining was decisive — without it, v2's atomic_t prep would have shipped (correct fix, but kept the structural relay). v3 removed the relay entirely → race fixed by construction + 73% throughput win as side benefit. Saved as feedback_mine_upstream_ancestor memory.

What's next

  • Patch C campaign closed — Phase 7 receipts met.
  • Patch C2 (ieee80211_rx_list batch delivery) still gated on Task #19 kerneldoc verification.
  • Patches D + E independent.
  • Bug #5 RX-degradation after 13-min uptime is INDEPENDENT of v3 — separate campaign, scan-failure pattern + WSM 0x0007 generic-confirm-failure is the entry point.
N=3 reps on v3 module (PR #5 merged) closed the Patch C campaign. ## TL;DR - v3 N=3 mean throughput @ 4 MB/s sender: **2.352 MB/s** - vs Patch B baseline: **+73%** (1.362 → 2.352) - vs original Bug #5 floor (75 KB/s rep3): **28× improvement** - sdio_rx_work dispatch rate: 0/s (was 86.4/s; function deleted) - bes2600_bh_work redispatches: 0 (single long-lived; preserved) - sdio_tx_work dispatch rate: 0.8/s (was 276.1/s; -99.7%) - WARN/BUG/oops on stress: none (v2 race verified absent) ## Per-rep table | rep | elapsed (s) | MB/s | sdio_rx_work | bh_work redispatches | |---:|---:|---:|---:|---:| | 1 | 180.72 | **2.363** | 0 | 0 | | 2 | 180.67 | **2.590** | 0 | 0 | | 3 | 180.69 | **2.102** | 0 | 0 | ## Phase 8 lesson The cw1200 mining was decisive — without it, v2's atomic_t prep would have shipped (correct fix, but kept the structural relay). v3 removed the relay entirely → race fixed by construction + 73% throughput win as side benefit. Saved as `feedback_mine_upstream_ancestor` memory. ## What's next - Patch C campaign closed — Phase 7 receipts met. - Patch C2 (`ieee80211_rx_list` batch delivery) still gated on Task #19 kerneldoc verification. - Patches D + E independent. - Bug #5 RX-degradation after 13-min uptime is INDEPENDENT of v3 — separate campaign, scan-failure pattern + WSM 0x0007 generic-confirm-failure is the entry point.
claude-noether added 1 commit 2026-05-07 21:08:53 +00:00
N=3 stress reps on ohm with v3 module (srcversion 371C6606B73AF19299228CA),
3 min @ 4 MB/s each, all within fresh-chip uptime window (200/391/582 s).

| rep | MB/s | sdio_rx_work | bh_work redispatches |
|----:|----:|-:|-:|
|  1  | 2.363 | 0 | 0 |
|  2  | 2.590 | 0 | 0 |
|  3  | 2.102 | 0 | 0 |

N=3 mean: 2.352 MB/s · median 2.363 MB/s · min 2.102 MB/s.

vs Patch B baseline (1.362 MB/s, run-20260507-patchC-preflight): +73%.
vs original Bug #5 floor (75 KB/s rep 3 death): 28× improvement.

Plan §4.5 prediction verified:
  - sdio_rx_work dispatch rate: 86.4/s -> 0/s (function deleted)
  - bes2600_bh_work redispatches: 0 (preserved invariant)
  - observed receive @ 4 MB/s: floor lifts toward >= 1 MB/s (exceeded —
    floor is 2.10 MB/s)

Bonus finding: sdio_tx_work dispatch rate dropped from 276.1/s to
0.8/s.  The post-tx queue_work(rx_work) call I rewired to
self->irq_handler() was actually firing more often than predicted;
folding it into bh-wake-up cuts ~99.7% of the workqueue dispatches.

No WARN/BUG/oops on any rep — the v2 race that wedged Patch C v1
within 13 s under stress did NOT reproduce on v3.

Phase 8 lesson distilled as feedback_mine_upstream_ancestor memory:
when patching a fork-from-upstream driver, mine the ancestor's
fix history BEFORE writing fixes from scratch.  cw1200 mining
drove the structural pivot from v2's atomic_t wrapper to v3's
no-relay architecture.  Without the mine, we'd have shipped v2.

Phase 7 receipts checklist met (N=3, fresh-chip, identical
instrumentation, predicted delta verified, no-WARN under stress).
marfrit merged commit fde41fcdd4 into main 2026-05-07 21:51:28 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/besser#12