Skip to content

jaguar1(8814): match vendor TX-power parity (5G groups, PG default-map, BB-swing)#139

Merged
josephnef merged 1 commit into
masterfrom
fix-8814-txpwr-parity
Jul 2, 2026
Merged

jaguar1(8814): match vendor TX-power parity (5G groups, PG default-map, BB-swing)#139
josephnef merged 1 commit into
masterfrom
fix-8814-txpwr-parity

Conversation

@josephnef

Copy link
Copy Markdown
Collaborator

Three RTL88xxAU TX-power divergences from the vendor reference (reference/rtl8812au), found while auditing #110. All three bring devourer's Jaguar1 TX-power path to exact parity with the upstream driver.

Fixes

  1. 5G channel→group boundaries (classify_channel) now match upstream rtw_get_ch_group verbatim: gp3 = 60..98, gp4 = 100..106, gp0 from 16, gp13 to 253. Previously channels 84..98 resolved to the wrong group and read the wrong per-channel base index.
  2. EFUSE default-PG-map fallback in LoadTxPowerInfo — port of the kernel's hal_load_pg_txpwr_info source chain (PG_DATA → IC_DEF → DEF). A base cell whose EFUSE byte is invalid (> txgi_max = 63, e.g. an unprogrammed 0xFF) is now filled from the per-chip default map (rtl881{2,4,21}a_pg_txpwr_def_info) then the generic map, instead of used raw (which would clamp to 63). Programmed EFUSEs are byte-identical to before → 8812/8821 unaffected.
  3. BB-swing fixed-dB encoding (phy_get_tx_bb_swing_8812a): 0x05/0x0A → 0x55/0xAA so all four RF paths receive the requested −3/−6 dB swing (matches PHY_GetTxBBSwing_8814A); previously only path A did.

Scope / validation

  • Builds all per-chip configs; ctest green.
  • These are parity corrections; they do not change the ch36 index on a healthy chip. The 8814 ch36 under-drive reported in RTL8814AU: 5 GHz TX power drastically under-driven (~1.5 Mbps vs kernel ~58 Mbps) #110 was determined to be a USB Vbus-sag rail artifact, not a code defect: the working kernel driver programs the identical per-path index (path-A MCS7 @ ch36 = 14), and an on-air SDR measurement shows devourer radiates strongly at ch36. These fixes matter for channels 84..98 and for unprogrammed/partial EFUSEs.

Refs #110

🤖 Generated with Claude Code

…p, BB-swing)

Three RTL88xxAU TX-power divergences from the vendor reference
(reference/rtl8812au), found while auditing issue #110:

- classify_channel 5G channel->group boundaries now match upstream
  rtw_get_ch_group verbatim (gp3 60..98, gp4 100..106, gp0 from 16,
  gp13 to 253). Previously channels 84..98 read the wrong group's base.

- LoadTxPowerInfo gains the vendor default-PG-map fallback
  (hal_load_pg_txpwr_info PG_DATA -> IC_DEF -> DEF): an EFUSE base cell
  that is invalid (> txgi_max = 63, e.g. unprogrammed 0xFF) is filled
  from the per-chip IC map then the generic map instead of used raw.
  Programmed EFUSEs are byte-identical to before (8812/8821 unaffected).

- phy_get_tx_bb_swing_8812a fixed-dB encoding 0x05/0x0A -> 0x55/0xAA so
  all four RF paths get the requested swing (matches PHY_GetTxBBSwing_8814A);
  previously only path A did.

These do not change the ch36 index on a healthy chip: the 8814 ch36
under-drive in #110 was a USB Vbus-sag rail artifact (the working kernel
driver programs the identical index, and an on-air SDR read shows devourer
radiates strongly). These are parity corrections that matter for channels
84..98 and for unprogrammed/partial EFUSEs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@josephnef josephnef merged commit e926b47 into master Jul 2, 2026
12 checks passed
@josephnef josephnef deleted the fix-8814-txpwr-parity branch July 2, 2026 08:03
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