VOID AsicAdjustTxPower( IN PRTMP_ADAPTER pAd) { CHAR Rssi = -127; CHAR DeltaPwr = 0; CHAR TxAgcCompensate = 0; CHAR DeltaPowerByBbpR1 = 0; CHAR TotalDeltaPower = 0; /* (non-positive number) including the transmit power controlled by the MAC and the BBP R1 */ CONFIGURATION_OF_TX_POWER_CONTROL_OVER_MAC CfgOfTxPwrCtrlOverMAC = {0}; #ifdef SINGLE_SKU CHAR TotalDeltaPowerOri = 0; UCHAR SingleSKUBbpR1Offset = 0; ULONG SingleSKUTotalDeltaPwr[MAX_TXPOWER_ARRAY_SIZE] = {0}; #endif /* SINGLE_SKU */ /* Get Tx rate offset table which from EEPROM 0xDEh ~ 0xEFh */ RTMP_CHIP_ASIC_TX_POWER_OFFSET_GET(pAd, (PULONG)&CfgOfTxPwrCtrlOverMAC); /* Get temperature compensation delta power value */ RTMP_CHIP_ASIC_AUTO_AGC_OFFSET_GET( pAd, &DeltaPwr, &TotalDeltaPower, &TxAgcCompensate, &DeltaPowerByBbpR1); DBGPRINT(RT_DEBUG_INFO, ("%s: DeltaPwr=%d, TotalDeltaPower=%d, TxAgcCompensate=%d, DeltaPowerByBbpR1=%d\n", __FUNCTION__, DeltaPwr, TotalDeltaPower, TxAgcCompensate, DeltaPowerByBbpR1)); /* Get delta power based on the percentage specified from UI */ AsicPercentageDeltaPower(pAd, Rssi, &DeltaPwr,&DeltaPowerByBbpR1); /* The transmit power controlled by the BBP */ TotalDeltaPower += DeltaPowerByBbpR1; /* The transmit power controlled by the MAC */ TotalDeltaPower += DeltaPwr; #ifdef SINGLE_SKU if (pAd->CommonCfg.bSKUMode == TRUE) { /* Re calculate delta power while enabling Single SKU */ GetSingleSkuDeltaPower(pAd, &TotalDeltaPower, (PULONG)&SingleSKUTotalDeltaPwr, &SingleSKUBbpR1Offset); TotalDeltaPowerOri = TotalDeltaPower; } else #endif /* SINGLE_SKU */ { AsicCompensatePowerViaBBP(pAd, &TotalDeltaPower); #ifdef MT7610 if (IS_MT76x0(pAd)) { MT76x0_AdjustTxPower(pAd, TotalDeltaPower); } #endif } }
VOID AsicAdjustTxPower( IN PRTMP_ADAPTER pAd) { CHAR Rssi = -127; CHAR DeltaPwr = 0; CHAR TxAgcCompensate = 0; CHAR DeltaPowerByBbpR1 = 0; CHAR TotalDeltaPower = 0; /* (non-positive number) including the transmit power controlled by the MAC and the BBP R1 */ CONFIGURATION_OF_TX_POWER_CONTROL_OVER_MAC CfgOfTxPwrCtrlOverMAC = {0}; #ifdef SINGLE_SKU CHAR TotalDeltaPowerOri = 0; UCHAR SingleSKUBbpR1Offset = 0; ULONG SingleSKUTotalDeltaPwr[MAX_TXPOWER_ARRAY_SIZE] = {0}; #endif /* SINGLE_SKU */ #ifdef CONFIG_STA_SUPPORT if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF)) return; if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) || RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) return; IF_DEV_CONFIG_OPMODE_ON_STA(pAd) { if(INFRA_ON(pAd)) { Rssi = RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.AvgRssi0, pAd->StaCfg.RssiSample.AvgRssi1, pAd->StaCfg.RssiSample.AvgRssi2); } } #endif /* CONFIG_STA_SUPPORT */ /* Get Tx rate offset table which from EEPROM 0xDEh ~ 0xEFh */ RTMP_CHIP_ASIC_TX_POWER_OFFSET_GET(pAd, (PULONG)&CfgOfTxPwrCtrlOverMAC); /* Get temperature compensation delta power value */ RTMP_CHIP_ASIC_AUTO_AGC_OFFSET_GET( pAd, &DeltaPwr, &TotalDeltaPower, &TxAgcCompensate, &DeltaPowerByBbpR1); DBGPRINT(RT_DEBUG_INFO, ("%s: DeltaPwr=%d, TotalDeltaPower=%d, TxAgcCompensate=%d, DeltaPowerByBbpR1=%d\n", __FUNCTION__, DeltaPwr, TotalDeltaPower, TxAgcCompensate, DeltaPowerByBbpR1)); /* Get delta power based on the percentage specified from UI */ AsicPercentageDeltaPower(pAd, Rssi, &DeltaPwr,&DeltaPowerByBbpR1); /* The transmit power controlled by the BBP */ TotalDeltaPower += DeltaPowerByBbpR1; /* The transmit power controlled by the MAC */ TotalDeltaPower += DeltaPwr; #ifdef SINGLE_SKU if (pAd->CommonCfg.bSKUMode == TRUE) { /* Re calculate delta power while enabling Single SKU */ GetSingleSkuDeltaPower(pAd, &TotalDeltaPower, (PULONG)&SingleSKUTotalDeltaPwr, &SingleSKUBbpR1Offset); TotalDeltaPowerOri = TotalDeltaPower; } else #endif /* SINGLE_SKU */ { AsicCompensatePowerViaBBP(pAd, &TotalDeltaPower); } }