Kestrel: carrier-sense disable + active/passive noise floor#305
Merged
Conversation
…, #202) Brings the SetCcaMode/dis_cca lever and the noise-floor sensing to the Wi-Fi 6 Kestrel HAL (RTL8852BU/8852CU), and drops the issue-number / "parity" boilerplate from the earlier #303/#304 comments (git already records provenance). - SetCcaMode (#199): RMW R_AX_CCA_CFG_0 all-CCA-EN (primary + sec20/40/80 + EDCCA). Injection is already CCA-off by default here (EnableTxScheduler clears the gates), so this is the runtime lever; DEVOURER_DIS_CCA wired at InitWrite. - Active absolute noise floor (#202): the halbb NHM env-monitor via a new glue call (kestrel_halbb_env_mntr_nhm) + a GetRxEnergy override. Frame-free, BB-driven, no clock-stop -> no wedge. Needed bb->cr_type = BB_CLIENT (the env-monitor CR-init switch was falling through, leaving the NHM ready-bit address 0) and a link stub for the BE-only halbb_get_prim_sb. On-air on the 8852B: -93 dBm, frame-free (idle channel, 0 frames), no wedge. - Passive rssi-snr floor + LinkHealth (#201): parse physts IE_01 SNR alongside the header RSSI, feed an RxQualityAccumulator, GetRxQuality override. On the 8852B it cross-matches the NHM floor within ~1 dB (HEALTHY verdict). - 8852C: both floors gated to null rather than emit wrong values -- its NHM reads ~25 dB high (idle ch149 -68 vs the 8852B's -93) and the physts IE layout differs (16-byte drv_info) so SNR is unparsed. Documented follow-ups. Build all + ctest 28/28 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
Brings the
SetCcaMode/dis_ccalever (#199) and the noise-floor sensing (#201/#202) to the Wi-Fi 6 Kestrel HAL (RTL8852BU/8852CU) — the generation both were left out of — and drops the issue-number/"parity" boilerplate from the earlier #303/#304 comments (git already records provenance).Kestrel features
SetCcaMode(dis_cca / EDCCA-disable: verify on a real (non-monitor) link — measured null in monitor RX #199) — RMWR_AX_CCA_CFG_0all-CCA-EN (primary + sec20/40/80 + EDCCA). Injection is already CCA-off by default on Kestrel (EnableTxSchedulerclears the gates, the ~103-stall fix), so this is the runtime toggle rather than the co-channel-deferral fix it is on Jaguar.DEVOURER_DIS_CCAwired atInitWrite.GetRxEnergyoverride. Frame-free, BB-driven, no clock-stop → no wedge (the cleanest of any generation). Two fixes were needed:bb->cr_type = BB_CLIENT(the env-monitor CR-init switch was falling through, leaving the NHM ready-bit address 0) and a link stub for the BE-onlyhalbb_get_prim_sb(dead 11BE branch).rssi−snrfloor + LinkHealth (GetRxQuality() — runtime RX link-quality feed + passive noise floor #201) — parse physts IE_01 SNR alongside the header RSSI, feed anRxQualityAccumulator,GetRxQualityoverride.On-air validation
8852C is gated to emit null rather than wrong values — its NHM reads ~25 dB high (idle ch149 −68 vs the 8852B's −93) and the physts IE layout differs (16-byte drv_info) so SNR is unparsed. Both are documented follow-ups (
docs/rx-spectrum-sensing.md).Build all +
ctest28/28 green.🤖 Generated with Claude Code