Startup time: all-chip devourer-vs-kernel benchmark (host-kernel cells) + docs/startup-time.md#206
Merged
Merged
Conversation
…nel cells, startup-time doc Close the README "Startup time" gap: the claim was only substantiated for Jaguar1 vs aircrack-in-VM. Now every supported generation is measured on the host against the vendor drivers built from reference/ (88XXau for Jaguar1; rtl88x2bu / 8821cu / rtl88x2cu / rtl88x2eu for Jaguar2/3), from true cold (per-rep VBUS power-cycle) and warm — devourer is faster on every measured chip at first plug (1.2-2.9x). Numbers + methodology move out of README into docs/startup-time.md; README keeps one line + link. tests/bench_init.py grows the machinery this needed: - --kernel-host: kernel cells via insmod of the reference/ vendor .ko on the host (netdev -> monitor -> first frame, same stage names as the VM path; KMOD_FOR_VIDPID maps PIDs across all three generations). VM mode stays for driver-behaviour comparisons but is documented as unfit for startup timing (virtualized USB latency). - --traffic-from PID: dedicate a plugged non-DUT adapter to a devourer beacon flood on the bench channel — in an RF-quiet room there are zero ambient frames and every first-frame marker (devourer and kernel tcpdump alike) starves. - udev-rename-tolerant iface configuration in the kernel cell. tests/regress.py: SUPPORTED_DUTS learns the Jaguar2 PIDs (2357:012d, 0bda:b82c, 0bda:c811). The 8812AU has no rows: the bench unit doesn't come up RX-functional on first init from true cold under either driver — tracked in #205. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
012b763 to
b4e3724
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Closes the README "Startup time" gap: the "faster than the kernel driver" claim was only ever substantiated for Jaguar1 (vs aircrack in the VM). This PR measures every supported generation on the host against the vendor drivers built from
reference/, publishes the numbers + methodology in a newdocs/startup-time.md, and shrinks the README section to one line + link.Results (true cold plug, VBUS-cycled per rep, median of 2, ch 6)
TX-ready tracks RX-ready within ~1%. The doc also carries the warm (
authorized-toggle) table — the vendor drivers pay full calibration only from true cold, so warm-only benchmarks understate the first-plug gap (and the 8821AU kernel even edges ahead by ~60 ms warm; stated honestly in the doc).The 8812AU rows are absent: the bench unit doesn't come up RX-functional on first init from true cold under either driver — #205.
Harness (
tests/bench_init.py)--kernel-host— kernel cells viainsmodof thereference/vendor.koon the host (netdev → monitor → first frame, same stage names as the VM path;KMOD_FOR_VIDPIDmaps PIDs for all three generations). VM mode remains for driver-behaviour comparisons but is documented as unfit for startup timing (virtualized USB adds latency to every stage).--traffic-from PID— dedicates a plugged non-DUT adapter to a devourer beacon flood on the bench channel. In an RF-quiet room there are zero ambient frames and every first-frame marker (devourer and kernel tcpdump alike) starves; with a ~500 fps flood, first-frame latency measures RX-path readiness instead of beacon-interval luck.tests/regress.py:SUPPORTED_DUTSlearns the Jaguar2 PIDs (2357:012d,0bda:b82c,0bda:c811) so DUT discovery covers them.Notes
rtl8812au/88XXau,rtl88x2bu,rtl88x2cu,rtl88x2eu,8821cu) build against the host 6.18 kernel with local compat patches in the (gitignored)reference/trees — including aircrack-lineage 88XXau, so no VM is needed anywhere in the table..kodebug-strip verified irrelevant tokernel.probe(the T3U's 5.5 s probe is genuine vendor work, not insmod cost).🤖 Generated with Claude Code