Skip to content

Kestrel: carrier-sense disable + active/passive noise floor#305

Merged
josephnef merged 1 commit into
masterfrom
kestrel-cca-noise-floor
Jul 19, 2026
Merged

Kestrel: carrier-sense disable + active/passive noise floor#305
josephnef merged 1 commit into
masterfrom
kestrel-cca-noise-floor

Conversation

@josephnef

Copy link
Copy Markdown
Collaborator

Summary

Brings the SetCcaMode/dis_cca lever (#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

On-air validation

8852BU (C8852B) 8832CU (C8852C)
SetCcaMode ✅ lever fires ✅ same code
Active NHM floor −93 dBm, frame-free (−93 on a 0-frame idle channel), no wedge gated null
Passive floor −94 dBm — cross-matches NHM within ~1 dB, HEALTHY null

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 + ctest 28/28 green.

🤖 Generated with Claude Code

…, #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>
@josephnef
josephnef merged commit c8a8a8e into master Jul 19, 2026
18 checks passed
@josephnef
josephnef deleted the kestrel-cca-noise-floor branch July 19, 2026 05:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant