DF-4687 / fixB.diff
--- a/sys/dev/netif/ath/ath_hal/ar5212/ar2425.c 2026-09-22 21:03:53.558340862 +0000 +++ b/sys/dev/netif/ath/ath_hal/ar5212/ar2425.c 2026-09-22 21:03:53.558340862 +0000 @@ -428,6 +428,8 @@ /* if this pdGain is used */ } + if (numPdGainsUsed == 0) /* EEPROM pd-gain data invalid */ + return; *pMinCalPower = Pmin_t2[0]; kk = 0; /* index for the final table */ for (ii = 0; ii < numPdGainsUsed; ii++) { @@ -529,6 +531,12 @@ ar2425getGainBoundariesAndPdadcsForPowers(ah, freq, pRawDataset, pdGainOverlap_t2,&minCalPower2413_t2,gainBoundaries, rfXpdGain, pdadcValues); + /* xpd_mask==0 leaves the pdadc table uncomputed (wild backfills) */ + if (pRawDataset->xpd_mask == 0) { + HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid pd gain data\n", + __func__); + return AH_FALSE; + } OS_REG_RMW_FIELD(ah, AR_PHY_TPCRG1, AR_PHY_TPCRG1_NUM_PD_GAIN, (pRawDataset->pDataPerChannel[0].numPdGains - 1)); |