Skip to content

Jaguar3 RX: parse the phy-status trailer — rssi/snr/evm arrive as zeros on 8812CU/8822EU #152

Description

@josephnef

Problem

On Jaguar3 the RX path fills only descriptor-level fields (src/jaguar3/RtlJaguar3Device.cpp — length, rate, crc/icv, shift) and never decodes the phy-status trailer the chip appends to each frame. Result: RxAtrib.rssi[4] / snr[4] / evm[4] are zero on every 8812CU/8822EU frame, while on Jaguar1 the same fields are fully populated (src/jaguar1/FrameParser.cpp). Anything downstream that reads them — <devourer-stream> quality fields, DEVOURER_RX_ALLPATHS, the decorrelation/MRC tooling — silently reports zeros on Jaguar3.

What the chip already provides

The jgr3 phy-status pages carry more than Jaguar1's format:

  • Type 0: PWDB summary + per-path gain/agc/lna.
  • Type 1 (the normal OFDM/HT/VHT page): per-path pwdb[4], rxevm[4], cfo_tail[4], rxsnr[4].
  • Type 2/3: per-path pwdb + avg_noise_pwr — a per-frame noise estimate Jaguar1 doesn't expose at all.

Reference layouts: reference/rtl88x2cu/hal/phydm/phydm_phystatus.h. A much cleaner parser to crib from is mainline rtw88's rtw8822c.c (query_phy_status_page0/page1) — same silicon, minimal code.

Scope

  • Decode page type from the phy-status header; parse type 0 and type 1 into RxAtrib.rssi/snr/evm with the same units/conventions as the Jaguar1 parser (so demo output and regex consumers behave identically across generations).
  • Applies to both generations behind the existing strategy split if the physts formats diverge between 8822C and 8822E (verify against reference/rtl88x2eu).
  • Optional follow-ups once the parse exists: surface cfo_tail and type-2/3 avg_noise_pwr (new fields, currently dropped on Jaguar1 too).

Validation

  • Bench: known-distance link, compare Jaguar3 reported RSSI against a Jaguar1 DUT and kernel-driver radiotap dBm on the same frames.
  • Regression: <devourer-stream> lines on 8812CU/8822EU must show plausible non-zero rssi/snr/evm; existing Jaguar1 output unchanged.

Relation to the frequency-resolved link-quality series

This is a prerequisite for the active-sounding milestone of the narrowband sweep (per-bin RSSI/EVM on RX), since Jaguar3 is the only generation with 5 MHz bins. Filed separately because it's a general RX gap, not sweep-specific.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions