mirror of https://github.com/aircrack-ng/rtl8812au
even more cleanup. brackets + more
parent
3ffd99abaf
commit
900fc8b5df
24
.travis.yml
24
.travis.yml
|
@ -19,6 +19,30 @@ env:
|
|||
|
||||
matrix:
|
||||
include:
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- gcc-5
|
||||
env: COMPILER=gcc-5 KVER=4.15
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- gcc-6
|
||||
env: COMPILER=gcc-6 KVER=4.15
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- gcc-7
|
||||
env: COMPILER=gcc-7 KVER=4.15
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
|||
EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
|
||||
EXTRA_CFLAGS += -O2
|
||||
EXTRA_CFLAGS += -O1
|
||||
#EXTRA_CFLAGS += -O3
|
||||
EXTRA_CFLAGS += -Wall
|
||||
EXTRA_CFLAGS += -Wextra
|
||||
|
|
|
@ -1420,9 +1420,9 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)
|
|||
#ifdef CONFIG_AP_MODE
|
||||
switch (GetFrameSubType(pframe)) {
|
||||
case WIFI_AUTH:
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) {
|
||||
ptable->func = &OnAuth;
|
||||
else
|
||||
} else
|
||||
ptable->func = &OnAuthClient;
|
||||
/* pass through */
|
||||
case WIFI_ASSOCREQ:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
PACKAGE_NAME="realtek-rtl88xxau"
|
||||
PACKAGE_VERSION="5.1.5~20180125"
|
||||
PACKAGE_VERSION="5.1.5~20180315"
|
||||
CLEAN="make clean"
|
||||
BUILT_MODULE_NAME[0]=8812au
|
||||
DEST_MODULE_LOCATION[0]="/updates"
|
||||
|
|
|
@ -46,7 +46,7 @@ void ConfigureTxpowerTrack(
|
|||
#if RTL8192E_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8192E)
|
||||
ConfigureTxpowerTrack_8192E(pConfig);
|
||||
#endif
|
||||
#endif
|
||||
#if RTL8821A_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8821)
|
||||
ConfigureTxpowerTrack_8821A(pConfig);
|
||||
|
@ -58,7 +58,7 @@ void ConfigureTxpowerTrack(
|
|||
#if RTL8188E_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8188E)
|
||||
ConfigureTxpowerTrack_8188E(pConfig);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if RTL8723B_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8723B)
|
||||
|
@ -78,24 +78,24 @@ void ConfigureTxpowerTrack(
|
|||
#if RTL8188F_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8188F)
|
||||
ConfigureTxpowerTrack_8188F(pConfig);
|
||||
#endif
|
||||
#endif
|
||||
#if RTL8723D_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8723D)
|
||||
ConfigureTxpowerTrack_8723D(pConfig);
|
||||
#endif
|
||||
#endif
|
||||
#if RTL8822B_SUPPORT
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8822B)
|
||||
ConfigureTxpowerTrack_8822B(pConfig);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
// <20121113, Kordan> This function should be called when TxAGC changed.
|
||||
// Otherwise the previous compensation is gone, because we record the
|
||||
// Otherwise the previous compensation is gone, because we record the
|
||||
// delta of temperature between two TxPowerTracking watch dogs.
|
||||
//
|
||||
// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still
|
||||
// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still
|
||||
// need to call this function.
|
||||
//======================================================================
|
||||
VOID
|
||||
|
@ -107,13 +107,12 @@ ODM_ClearTxPowerTrackingState(
|
|||
PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pDM_Odm->Adapter);
|
||||
u1Byte p = 0;
|
||||
PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo);
|
||||
|
||||
|
||||
pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->DefaultCckIndex;
|
||||
pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->DefaultCckIndex;
|
||||
pDM_Odm->RFCalibrateInfo.CCK_index = 0;
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p)
|
||||
{
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) {
|
||||
pRFCalibrateInfo->BbSwingIdxOfdmBase[p] = pRFCalibrateInfo->DefaultOfdmIndex;
|
||||
pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->DefaultOfdmIndex;
|
||||
pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->DefaultOfdmIndex;
|
||||
|
@ -123,10 +122,10 @@ ODM_ClearTxPowerTrackingState(
|
|||
pRFCalibrateInfo->DeltaPowerIndexLast[p] = 0;
|
||||
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = 0; /* Initial Mix mode power tracking*/
|
||||
pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0;
|
||||
pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0;
|
||||
pRFCalibrateInfo->KfreeOffset[p] = 0;
|
||||
}
|
||||
|
||||
|
||||
pRFCalibrateInfo->Modify_TxAGC_Flag_PathA = FALSE; /*Initial at Modify Tx Scaling Mode*/
|
||||
pRFCalibrateInfo->Modify_TxAGC_Flag_PathB = FALSE; /*Initial at Modify Tx Scaling Mode*/
|
||||
pRFCalibrateInfo->Modify_TxAGC_Flag_PathC = FALSE; /*Initial at Modify Tx Scaling Mode*/
|
||||
|
@ -163,7 +162,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
u1Byte ThermalValue = 0, delta, delta_LCK, delta_IQK, p = 0, i = 0;
|
||||
s1Byte diff_DPK[4] = {0};
|
||||
u1Byte ThermalValue_AVG_count = 0;
|
||||
u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4;
|
||||
u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4;
|
||||
|
||||
u1Byte OFDM_min_index = 0; // OFDM BB Swing should be less than +3.0dB, which is required by Arthur
|
||||
u1Byte Indexforchannel = 0; // GetRightChnlPlaceforIQK(pHalData->CurrentChannel)
|
||||
|
@ -196,10 +195,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
if (pDM_Odm->SupportICType & ODM_RTL8814A) /*for 8814 path C & D*/
|
||||
(*c.GetDeltaSwingTable8814only)(pDM_Odm, (pu1Byte *)&deltaSwingTableIdx_TUP_C, (pu1Byte *)&deltaSwingTableIdx_TDOWN_C,
|
||||
(pu1Byte *)&deltaSwingTableIdx_TUP_D, (pu1Byte *)&deltaSwingTableIdx_TDOWN_D);
|
||||
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) /*for Xtal Offset*/
|
||||
(*c.GetDeltaSwingXtalTable)(pDM_Odm, (ps1Byte *)&deltaSwingTableXtal_UP, (ps1Byte *)&deltaSwingTableXtal_DOWN);
|
||||
|
||||
|
||||
pRFCalibrateInfo->TXPowerTrackingCallbackCnt++; /*cosa add for debug*/
|
||||
pRFCalibrateInfo->bTXPowerTrackingInit = TRUE;
|
||||
|
||||
|
@ -216,15 +215,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
#endif
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n",
|
||||
("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n",
|
||||
pRFCalibrateInfo->BbSwingIdxCckBase, pRFCalibrateInfo->BbSwingIdxOfdmBase[ODM_RF_PATH_A], pRFCalibrateInfo->DefaultOfdmIndex));
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("pRFCalibrateInfo->TxPowerTrackControl=%d, pHalData->EEPROMThermalMeter %d\n", pRFCalibrateInfo->TxPowerTrackControl, pHalData->EEPROMThermalMeter));
|
||||
ThermalValue = (u1Byte)ODM_GetRFReg(pDM_Odm, ODM_RF_PATH_A, c.ThermalRegAddr, 0xfc00); //0x42: RF Reg[15:10] 88E
|
||||
|
||||
/*add log by zhao he, check c80/c94/c14/ca0 value*/
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8723D) {
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8723D) {
|
||||
RegC80 = ODM_GetBBReg(pDM_Odm, 0xc80, bMaskDWord);
|
||||
RegCd0 = ODM_GetBBReg(pDM_Odm, 0xcd0, bMaskDWord);
|
||||
RegCd4 = ODM_GetBBReg(pDM_Odm, 0xcd4, bMaskDWord);
|
||||
|
@ -238,31 +237,30 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
|
||||
/*4 3. Initialize ThermalValues of RFCalibrateInfo*/
|
||||
|
||||
if (pRFCalibrateInfo->bReloadtxpowerindex)
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n"));
|
||||
if (pRFCalibrateInfo->bReloadtxpowerindex) {
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n"));
|
||||
}
|
||||
|
||||
/*4 4. Calculate average thermal meter*/
|
||||
|
||||
|
||||
pRFCalibrateInfo->ThermalValue_AVG[pRFCalibrateInfo->ThermalValue_AVG_index] = ThermalValue;
|
||||
pRFCalibrateInfo->ThermalValue_AVG_index++;
|
||||
if (pRFCalibrateInfo->ThermalValue_AVG_index == c.AverageThermalNum) /*Average times = c.AverageThermalNum*/
|
||||
pRFCalibrateInfo->ThermalValue_AVG_index = 0;
|
||||
|
||||
for(i = 0; i < c.AverageThermalNum; i++)
|
||||
{
|
||||
for (i = 0; i < c.AverageThermalNum; i++) {
|
||||
if (pRFCalibrateInfo->ThermalValue_AVG[i]) {
|
||||
ThermalValue_AVG += pRFCalibrateInfo->ThermalValue_AVG[i];
|
||||
ThermalValue_AVG_count++;
|
||||
}
|
||||
}
|
||||
|
||||
if(ThermalValue_AVG_count) //Calculate Average ThermalValue after average enough times
|
||||
{
|
||||
if (ThermalValue_AVG_count) { //Calculate Average ThermalValue after average enough times
|
||||
ThermalValue = (u1Byte)(ThermalValue_AVG / ThermalValue_AVG_count);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
}
|
||||
|
||||
|
||||
//4 5. Calculate delta, delta_LCK, delta_IQK.
|
||||
|
||||
//"delta" here is used to determine whether thermal value changes or not.
|
||||
|
@ -275,7 +273,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
delta_IQK = (ThermalValue > pRFCalibrateInfo->ThermalValue_IQK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_IQK):(pRFCalibrateInfo->ThermalValue_IQK - ThermalValue);
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("no PG, use ThermalValue for IQK\n"));
|
||||
}
|
||||
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++)
|
||||
diff_DPK[p] = (s1Byte)ThermalValue - (s1Byte)pRFCalibrateInfo->DpkThermal[p];
|
||||
|
||||
|
@ -291,7 +289,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
if (c.PHY_LCCalibrate)
|
||||
(*c.PHY_LCCalibrate)(pDM_Odm);
|
||||
}
|
||||
|
||||
|
||||
delta_LCK = (ThermalValue > pRFCalibrateInfo->ThermalValue_LCK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_LCK):(pRFCalibrateInfo->ThermalValue_LCK - ThermalValue);
|
||||
}
|
||||
|
||||
|
@ -310,25 +308,24 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
}
|
||||
}
|
||||
|
||||
/*3 7. If necessary, move the index of swing table to adjust Tx power.*/
|
||||
|
||||
if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl)
|
||||
{
|
||||
/*3 7. If necessary, move the index of swing table to adjust Tx power.*/
|
||||
|
||||
if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl) {
|
||||
//"delta" here is used to record the absolute value of differrence.
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
|
||||
delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue);
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
|
||||
delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue);
|
||||
#else
|
||||
delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue);
|
||||
delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue);
|
||||
#endif
|
||||
if (delta >= TXPWR_TRACK_TABLE_SIZE)
|
||||
delta = TXPWR_TRACK_TABLE_SIZE - 1;
|
||||
|
||||
/*4 7.1 The Final Power Index = BaseIndex + PowerIndexOffset*/
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
|
||||
if(ThermalValue > pHalData->EEPROMThermalMeter) {
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
|
||||
if (ThermalValue > pHalData->EEPROMThermalMeter) {
|
||||
#else
|
||||
if(ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) {
|
||||
if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) {
|
||||
#endif
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
|
@ -336,12 +333,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
switch (p) {
|
||||
case ODM_RF_PATH_B:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta]));
|
||||
("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta]));
|
||||
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_B[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_B[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
case ODM_RF_PATH_C:
|
||||
|
@ -351,7 +348,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_C[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_C[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
case ODM_RF_PATH_D:
|
||||
|
@ -361,17 +358,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_D[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_D[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
default:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TUP_A[%d] = %d\n", delta, deltaSwingTableIdx_TUP_A[delta]));
|
||||
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_A[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_A[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -379,7 +376,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) {
|
||||
/*Save XtalOffset from Xtal table*/
|
||||
pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("[Xtal] deltaSwingTableXtal_UP[%d] = %d\n", delta, deltaSwingTableXtal_UP[delta]));
|
||||
pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_UP[delta];
|
||||
|
||||
|
@ -388,7 +385,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
else
|
||||
XtalOffsetEanble = 1;
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
pRFCalibrateInfo->DeltaPowerIndexLast[p] = pRFCalibrateInfo->DeltaPowerIndex[p]; /*recording poer index offset*/
|
||||
|
@ -396,46 +393,46 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
switch (p) {
|
||||
case ODM_RF_PATH_B:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta]));
|
||||
("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta]));
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
case ODM_RF_PATH_C:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta]));
|
||||
("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta]));
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
case ODM_RF_PATH_D:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta]));
|
||||
("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta]));
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
|
||||
default:
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta]));
|
||||
("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta]));
|
||||
pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta];
|
||||
pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta]; /*Record delta swing for mix mode power tracking*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) {
|
||||
/*Save XtalOffset from Xtal table*/
|
||||
pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("[Xtal] deltaSwingTableXtal_DOWN[%d] = %d\n", delta, deltaSwingTableXtal_DOWN[delta]));
|
||||
pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_DOWN[delta];
|
||||
|
||||
|
@ -446,10 +443,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p));
|
||||
("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p));
|
||||
|
||||
if (pRFCalibrateInfo->DeltaPowerIndex[p] == pRFCalibrateInfo->DeltaPowerIndexLast[p]) /*If Thermal value changes but lookup table value still the same*/
|
||||
pRFCalibrateInfo->PowerIndexOffset[p] = 0;
|
||||
|
@ -458,12 +455,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("[Path-%d] PowerIndexOffset(%d) = DeltaPowerIndex(%d) - DeltaPowerIndexLast(%d)\n", p, pRFCalibrateInfo->PowerIndexOffset[p], pRFCalibrateInfo->DeltaPowerIndex[p], pRFCalibrateInfo->DeltaPowerIndexLast[p]));
|
||||
|
||||
|
||||
pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->BbSwingIdxOfdmBase[p] + pRFCalibrateInfo->PowerIndexOffset[p];
|
||||
pRFCalibrateInfo->CCK_index = pRFCalibrateInfo->BbSwingIdxCckBase + pRFCalibrateInfo->PowerIndexOffset[p];
|
||||
|
||||
pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index;
|
||||
pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p];
|
||||
pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index;
|
||||
pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p];
|
||||
|
||||
/*************Print BB Swing Base and Index Offset*************/
|
||||
|
||||
|
@ -473,15 +470,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
("The 'OFDM' final index(%d) = BaseIndex[%d](%d) + PowerIndexOffset(%d)\n", pRFCalibrateInfo->BbSwingIdxOfdm[p], p, pRFCalibrateInfo->BbSwingIdxOfdmBase[p], pRFCalibrateInfo->PowerIndexOffset[p]));
|
||||
|
||||
/*4 7.1 Handle boundary conditions of index.*/
|
||||
|
||||
|
||||
if (pRFCalibrateInfo->OFDM_index[p] > c.SwingTableSize_OFDM-1)
|
||||
pRFCalibrateInfo->OFDM_index[p] = c.SwingTableSize_OFDM-1;
|
||||
else if (pRFCalibrateInfo->OFDM_index[p] <= OFDM_min_index)
|
||||
pRFCalibrateInfo->OFDM_index[p] = OFDM_min_index;
|
||||
}
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("\n\n========================================================================================================\n"));
|
||||
("\n\n========================================================================================================\n"));
|
||||
|
||||
if (pRFCalibrateInfo->CCK_index > c.SwingTableSize_CCK-1)
|
||||
pRFCalibrateInfo->CCK_index = c.SwingTableSize_CCK-1;
|
||||
|
@ -489,7 +486,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
pRFCalibrateInfo->CCK_index = 0;
|
||||
} else {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n",
|
||||
("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n",
|
||||
pRFCalibrateInfo->TxPowerTrackControl, ThermalValue, pRFCalibrateInfo->ThermalValue));
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++)
|
||||
|
@ -497,7 +494,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
}
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n",
|
||||
("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n",
|
||||
pRFCalibrateInfo->CCK_index, pRFCalibrateInfo->BbSwingIdxCckBase)); /*Print Swing base & current*/
|
||||
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
|
@ -508,7 +505,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
|
||||
if ((pDM_Odm->SupportICType & ODM_RTL8814A)) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("PowerTrackingType=%d\n", PowerTrackingType));
|
||||
|
||||
|
||||
if (PowerTrackingType == 0) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("**********Enter POWER Tracking MIX_MODE**********\n"));
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++)
|
||||
|
@ -527,15 +524,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
(*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, TSSI_MODE, p, 0);
|
||||
}
|
||||
pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/
|
||||
|
||||
|
||||
} else if ((pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_A] != 0 ||
|
||||
pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_B] != 0 ||
|
||||
pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_C] != 0 ||
|
||||
pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) &&
|
||||
pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) &&
|
||||
pRFCalibrateInfo->TxPowerTrackControl && (pHalData->EEPROMThermalMeter != 0xff)) {
|
||||
//4 7.2 Configure the Swing Table to adjust Tx Power.
|
||||
|
||||
pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/
|
||||
|
||||
pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/
|
||||
//
|
||||
// 2012/04/23 MH According to Luke's suggestion, we can not write BB digital
|
||||
// to increase TX power. Otherwise, EVM will be bad.
|
||||
|
@ -544,14 +541,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
if (ThermalValue > pRFCalibrateInfo->ThermalValue) {
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n",
|
||||
p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue));
|
||||
("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n",
|
||||
p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue));
|
||||
}
|
||||
} else if (ThermalValue < pRFCalibrateInfo->ThermalValue) { /*Low temperature*/
|
||||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature Decreasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n",
|
||||
p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue));
|
||||
p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -562,7 +559,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
#endif
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
|
||||
if (pDM_Odm->SupportICType == ODM_RTL8188E || pDM_Odm->SupportICType == ODM_RTL8192E || pDM_Odm->SupportICType == ODM_RTL8821 ||
|
||||
pDM_Odm->SupportICType == ODM_RTL8812 || pDM_Odm->SupportICType == ODM_RTL8723B || pDM_Odm->SupportICType == ODM_RTL8814A ||
|
||||
|
@ -576,9 +573,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++)
|
||||
(*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
|
||||
|
@ -594,7 +589,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++)
|
||||
(*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->BbSwingIdxCck; /*Record last time Power Tracking result as base.*/
|
||||
|
@ -603,7 +598,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("pRFCalibrateInfo->ThermalValue = %d ThermalValue= %d\n", pRFCalibrateInfo->ThermalValue, ThermalValue));
|
||||
|
||||
|
||||
pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/
|
||||
|
||||
}
|
||||
|
@ -621,11 +616,11 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) {
|
||||
#endif
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
(*c.ODM_TxXtalTrackSetXtal)(pDM_Odm);
|
||||
} else {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||
("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter));
|
||||
(*c.ODM_TxXtalTrackSetXtal)(pDM_Odm);
|
||||
}
|
||||
}
|
||||
|
@ -638,17 +633,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
/*Delta temperature is equal to or larger than 20 centigrade (When threshold is 8).*/
|
||||
if (delta_IQK >= c.Threshold_IQK) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("delta_IQK(%d) >= Threshold_IQK(%d)\n", delta_IQK, c.Threshold_IQK));
|
||||
if (!pRFCalibrateInfo->bIQKInProgress)
|
||||
if (!pRFCalibrateInfo->bIQKInProgress)
|
||||
(*c.DoIQK)(pDM_Odm, delta_IQK, ThermalValue, 8);
|
||||
}
|
||||
}
|
||||
if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_A] != 0) {
|
||||
if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) {
|
||||
if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) {
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK));
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
} else if ((diff_DPK[ODM_RF_PATH_A] <= -1 * c.Threshold_DPK)) {
|
||||
s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK);
|
||||
s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK);
|
||||
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, value);
|
||||
|
@ -656,16 +651,16 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
} else {
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, 0);
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
}
|
||||
}
|
||||
if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_B] != 0) {
|
||||
if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) {
|
||||
if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) {
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK));
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
} else if ((diff_DPK[ODM_RF_PATH_B] <= -1 * c.Threshold_DPK)) {
|
||||
s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK);
|
||||
s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK);
|
||||
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, value);
|
||||
|
@ -673,14 +668,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter(
|
|||
} else {
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1);
|
||||
ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, 0);
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("<===ODM_TXPowerTrackingCallback_ThermalMeter\n"));
|
||||
|
||||
|
||||
pRFCalibrateInfo->TXPowercount = 0;
|
||||
}
|
||||
|
||||
|
@ -700,21 +695,18 @@ ODM_ResetIQKResult(
|
|||
#if !(DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
u1Byte ODM_GetRightChnlPlaceforIQK(u1Byte chnl)
|
||||
{
|
||||
u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] =
|
||||
u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] =
|
||||
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,149,151,153,155,157,159,161,163,165};
|
||||
u1Byte place = chnl;
|
||||
|
||||
|
||||
if(chnl > 14)
|
||||
{
|
||||
for(place = 14; place<sizeof(channel_all); place++)
|
||||
{
|
||||
if(channel_all[place] == chnl)
|
||||
{
|
||||
|
||||
if (chnl > 14) {
|
||||
for (place = 14; place<sizeof(channel_all); place++) {
|
||||
if (channel_all[place] == chnl) {
|
||||
return place-13;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
@ -722,21 +714,21 @@ u1Byte ODM_GetRightChnlPlaceforIQK(u1Byte chnl)
|
|||
|
||||
VOID
|
||||
odm_IQCalibrate(
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
)
|
||||
{
|
||||
PADAPTER Adapter = pDM_Odm->Adapter;
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
if (*pDM_Odm->pIsFcsModeEnable)
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_CE))
|
||||
if (IS_HARDWARE_TYPE_8812AU(Adapter))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
||||
if (pDM_Odm->bLinked) {
|
||||
if ((*pDM_Odm->pChannel != pDM_Odm->preChannel) && (!*pDM_Odm->pbScanInProcess)) {
|
||||
pDM_Odm->preChannel = *pDM_Odm->pChannel;
|
||||
|
@ -745,24 +737,24 @@ odm_IQCalibrate(
|
|||
|
||||
if (pDM_Odm->LinkedInterval < 3)
|
||||
pDM_Odm->LinkedInterval++;
|
||||
|
||||
|
||||
if (pDM_Odm->LinkedInterval == 2) {
|
||||
if (IS_HARDWARE_TYPE_8814A(Adapter)) {
|
||||
#if (RTL8814A_SUPPORT == 1)
|
||||
#if (RTL8814A_SUPPORT == 1)
|
||||
PHY_IQCalibrate_8814A(pDM_Odm, FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#if (RTL8822B_SUPPORT == 1)
|
||||
else if (IS_HARDWARE_TYPE_8822B(Adapter))
|
||||
PHY_IQCalibrate_8822B(pDM_Odm, FALSE);
|
||||
#endif
|
||||
|
||||
|
||||
#if (RTL8821C_SUPPORT == 1)
|
||||
else if (IS_HARDWARE_TYPE_8821C(Adapter))
|
||||
PHY_IQCalibrate_8821C(pDM_Odm, FALSE);
|
||||
#endif
|
||||
|
||||
|
||||
#if (RTL8821A_SUPPORT == 1)
|
||||
else if (IS_HARDWARE_TYPE_8821(Adapter))
|
||||
PHY_IQCalibrate_8821A(pDM_Odm, FALSE);
|
||||
|
@ -778,14 +770,14 @@ void phydm_rf_init(IN PVOID pDM_VOID)
|
|||
odm_TXPowerTrackingInit(pDM_Odm);
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
|
||||
ODM_ClearTxPowerTrackingState(pDM_Odm);
|
||||
ODM_ClearTxPowerTrackingState(pDM_Odm);
|
||||
#endif
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
|
||||
#if (RTL8814A_SUPPORT == 1)
|
||||
#if (RTL8814A_SUPPORT == 1)
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
PHY_IQCalibrate_8814A_Init(pDM_Odm);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -324,7 +324,7 @@ phydm_Beamforming_GetFirstMUBFeeEntryIdx(
|
|||
BOOLEAN bFound = FALSE;
|
||||
|
||||
for (idx = 0; idx < BEAMFORMEE_ENTRY_NUM; idx++) {
|
||||
if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) {
|
||||
if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) {
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] idx=%d!\n", __func__, idx));
|
||||
bFound = TRUE;
|
||||
break;
|
||||
|
@ -605,9 +605,9 @@ Beamforming_DymPeriod(
|
|||
SoundPeriod_FW = 400;
|
||||
}
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW));
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW));
|
||||
if (pBeamformEntry->BeamformEntryCap & (BEAMFORMER_CAP_HT_EXPLICIT | BEAMFORMER_CAP_VHT_SU)) {
|
||||
if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) {
|
||||
if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) {
|
||||
if (pBeamformEntry->SoundPeriod != SoundPeriod_FW) {
|
||||
pBeamformEntry->SoundPeriod = SoundPeriod_FW;
|
||||
bChangePeriod = TRUE; /*Only FW sounding need to send H2C packet to change sound period. */
|
||||
|
@ -623,8 +623,6 @@ Beamforming_DymPeriod(
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOLEAN
|
||||
Beamforming_SendHTNDPAPacket(
|
||||
IN PVOID pDM_VOID,
|
||||
|
@ -645,7 +643,6 @@ Beamforming_SendHTNDPAPacket(
|
|||
}
|
||||
|
||||
|
||||
|
||||
BOOLEAN
|
||||
Beamforming_SendVHTNDPAPacket(
|
||||
IN PVOID pDM_VOID,
|
||||
|
@ -927,7 +924,7 @@ phydm_beamforming_StartPeriod(
|
|||
else
|
||||
Ret = FALSE;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__,
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__,
|
||||
pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW, pSoundInfo->SoundPeriod));
|
||||
|
||||
return Ret;
|
||||
|
@ -1151,7 +1148,7 @@ phydm_Beamforming_Notify(
|
|||
break;
|
||||
|
||||
case BEAMFORMING_NOTIFY_RESET:
|
||||
if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) {
|
||||
if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) {
|
||||
phydm_beamforming_ClearEntry_FW(pDM_Odm, FALSE, Idx);
|
||||
phydm_beamforming_EndPeriod_FW(pDM_Odm);
|
||||
} else {
|
||||
|
@ -1168,7 +1165,6 @@ phydm_Beamforming_Notify(
|
|||
}
|
||||
|
||||
|
||||
|
||||
BOOLEAN
|
||||
Beamforming_InitEntry(
|
||||
IN PVOID pDM_VOID,
|
||||
|
@ -1188,7 +1184,7 @@ Beamforming_InitEntry(
|
|||
|
||||
/*The current setting does not support Beaforming*/
|
||||
if (BEAMFORMING_CAP_NONE == pSTA->HtBeamformCap && BEAMFORMING_CAP_NONE == pSTA->VhtBeamformCap) {
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n"));
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1210,7 +1206,7 @@ Beamforming_InitEntry(
|
|||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] HT NumofSoundingDim=%d, CompSteeringNumofBFer=%d\n", __func__, NumofSoundingDim, CompSteeringNumofBFer));
|
||||
}
|
||||
#if (ODM_IC_11AC_SERIES_SUPPORT == 1)
|
||||
if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/
|
||||
if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/
|
||||
|
||||
/* We are Beamformee because the STA is SU Beamformer*/
|
||||
if (TEST_FLAG(pSTA->CurBeamformVHT, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) {
|
||||
|
@ -1448,7 +1444,7 @@ BeamformingStart_SW(
|
|||
pEntry->bBeamformingInProgress = TRUE;
|
||||
RA = pEntry->MacAddr;
|
||||
|
||||
if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) {
|
||||
if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) {
|
||||
if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) {
|
||||
pEntry->bBeamformingInProgress = FALSE;
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Return by not support BEAMFORMER_CAP_HT_EXPLICIT <==\n", __func__));
|
||||
|
@ -1541,7 +1537,7 @@ BeamformingStart_FW(
|
|||
pEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_PROGRESSING;
|
||||
pEntry->bSound = TRUE;
|
||||
HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_FW_NDPA, (pu1Byte)&Idx);
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] End, Idx=0x%X\n", __func__, Idx));
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1549,7 +1545,7 @@ BeamformingStart_FW(
|
|||
VOID
|
||||
Beamforming_CheckSoundingSuccess(
|
||||
IN PVOID pDM_VOID,
|
||||
BOOLEAN Status
|
||||
BOOLEAN Status
|
||||
)
|
||||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
@ -1576,7 +1572,7 @@ Beamforming_CheckSoundingSuccess(
|
|||
VOID
|
||||
phydm_Beamforming_End_SW(
|
||||
IN PVOID pDM_VOID,
|
||||
BOOLEAN Status
|
||||
BOOLEAN Status
|
||||
)
|
||||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
@ -1607,20 +1603,20 @@ phydm_Beamforming_End_SW(
|
|||
HalComTxbf_Set(pDM_Odm, TXBF_SET_TX_PATH_RESET, (pu1Byte)&(pBeamInfo->BeamformeeCurIdx));
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] LogStatusFailCnt %d\n", __func__, pEntry->LogStatusFailCnt));
|
||||
}
|
||||
|
||||
|
||||
if (pEntry->LogStatusFailCnt > 50) {
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s LogStatusFailCnt > 50, Stop SOUNDING\n", __func__));
|
||||
pEntry->bSound = FALSE;
|
||||
Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr);
|
||||
Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr);
|
||||
|
||||
/*Modified by David - Every action of deleting entry should follow by Notify*/
|
||||
phydm_Beamforming_Notify(pDM_Odm);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pEntry->bBeamformingInProgress = FALSE;
|
||||
}
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: Status=%d\n", __func__, Status));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
|
@ -1648,28 +1644,29 @@ Beamforming_TimerCallback(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__));
|
||||
|
||||
if (pBeamInfo->is_mu_sounding)
|
||||
if (pBeamInfo->is_mu_sounding) {
|
||||
bBeamformingInProgress = pBeamInfo->is_mu_sounding_in_progress;
|
||||
else
|
||||
} else {
|
||||
bBeamformingInProgress = pEntry->bBeamformingInProgress;
|
||||
|
||||
}
|
||||
if (bBeamformingInProgress) {
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("bBeamformingInProgress, reset it\n"));
|
||||
phydm_Beamforming_End_SW(pDM_Odm, 0);
|
||||
}
|
||||
}
|
||||
|
||||
ret = phydm_Beamforming_SelectBeamEntry(pDM_Odm, pBeamInfo);
|
||||
#if (SUPPORT_MU_BF == 1)
|
||||
if (ret && pBeamInfo->beamformee_mu_cnt > 1)
|
||||
if (ret && pBeamInfo->beamformee_mu_cnt > 1) {
|
||||
ret = 1;
|
||||
else
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
#endif
|
||||
if (ret)
|
||||
if (ret) {
|
||||
ret = BeamformingStart_SW(pDM_Odm, pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW);
|
||||
else
|
||||
} else {
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, Error value return from BeamformingStart_V2\n", __func__));
|
||||
|
||||
}
|
||||
if ((pBeamInfo->beamformee_su_cnt != 0) || (pBeamInfo->beamformee_mu_cnt > 1)) {
|
||||
if (pSoundInfo->SoundMode == SOUNDING_SW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_SW_HT_TIMER)
|
||||
ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, pSoundInfo->SoundPeriod);
|
||||
|
@ -1694,7 +1691,7 @@ Beamforming_SWTimerCallback(
|
|||
PADAPTER Adapter = (PADAPTER)pTimer->Adapter;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
||||
PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc;
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
Beamforming_TimerCallback(pDM_Odm);
|
||||
#elif(DM_ODM_SUPPORT_TYPE == ODM_CE)
|
||||
|
|
|
@ -38,7 +38,7 @@ phydm_SetKfreeToRF_8814A(
|
|||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo);
|
||||
BOOLEAN bOdd;
|
||||
|
||||
|
||||
if ((Data%2) != 0) { /*odd -> positive*/
|
||||
Data = Data - 1;
|
||||
ODM_SetRFReg(pDM_Odm, eRFPath, rRF_TxGainOffset, BIT19, 1);
|
||||
|
@ -113,9 +113,9 @@ phydm_SetKfreeToRF_8814A(
|
|||
/*that means Kfree offset is negative, we need to record it.*/
|
||||
pRFCalibrateInfo->KfreeOffset[eRFPath] = (-1)*pRFCalibrateInfo->KfreeOffset[eRFPath];
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath]));
|
||||
} else
|
||||
} else {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath]));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,7 +127,7 @@ phydm_SetKfreeToRF(
|
|||
)
|
||||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
phydm_SetKfreeToRF_8814A(pDM_Odm, eRFPath, Data);
|
||||
}
|
||||
|
@ -150,9 +150,9 @@ phydm_ConfigKFree(
|
|||
maxRFpath = 2; /*0~1*/
|
||||
else
|
||||
maxRFpath = 1;
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("===>phy_ConfigKFree8814A()\n"));
|
||||
|
||||
|
||||
if (pRFCalibrateInfo->RegRfKFreeEnable == 2) {
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): RegRfKFreeEnable == 2, Disable\n"));
|
||||
return;
|
||||
|
@ -188,4 +188,3 @@ phydm_ConfigKFree(
|
|||
}
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("<===phy_ConfigKFree8814A()\n"));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -37,34 +37,28 @@ phydm_dtp_fix_tx_path(
|
|||
pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv;
|
||||
u1Byte i,num_enable_path=0;
|
||||
|
||||
if(path==pDM_PathDiv->pre_tx_path)
|
||||
{
|
||||
if (path==pDM_PathDiv->pre_tx_path) {
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
pDM_PathDiv->pre_tx_path=path;
|
||||
}
|
||||
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT18|BIT19, 3);
|
||||
|
||||
for(i=0; i<4; i++)
|
||||
{
|
||||
if(path&BIT(i))
|
||||
for (i=0; i<4; i++) {
|
||||
if (path&BIT(i))
|
||||
num_enable_path++;
|
||||
}
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Number of trun-on path : (( %d ))\n", num_enable_path));
|
||||
|
||||
if(num_enable_path == 1)
|
||||
{
|
||||
if (num_enable_path == 1) {
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path);
|
||||
|
||||
if(path==PHYDM_A)//1-1
|
||||
{
|
||||
|
||||
if (path==PHYDM_A) { //1-1
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A ))\n"));
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0);
|
||||
}
|
||||
else if(path==PHYDM_B)//1-2
|
||||
else if (path==PHYDM_B)//1-2
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( B ))\n"));
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0);
|
||||
|
@ -82,20 +76,19 @@ phydm_dtp_fix_tx_path(
|
|||
}
|
||||
|
||||
}
|
||||
else if(num_enable_path == 2)
|
||||
else if (num_enable_path == 2)
|
||||
{
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path);
|
||||
|
||||
if(path==PHYDM_AB)//2-1
|
||||
{
|
||||
|
||||
if (path==PHYDM_AB) { //2-1
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B ))\n"));
|
||||
//set for 1ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1);
|
||||
}
|
||||
else if(path==PHYDM_AC)//2-2
|
||||
{
|
||||
|
@ -105,7 +98,7 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
}
|
||||
else if(path==PHYDM_AD)//2-3
|
||||
{
|
||||
|
@ -115,7 +108,7 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
}
|
||||
else if(path==PHYDM_BC)//2-4
|
||||
{
|
||||
|
@ -125,7 +118,7 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
}
|
||||
else if(path==PHYDM_BD)//2-5
|
||||
{
|
||||
|
@ -135,7 +128,7 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
}
|
||||
else if(path==PHYDM_CD)//2-6
|
||||
{
|
||||
|
@ -145,7 +138,7 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -154,14 +147,13 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, 0xf0000, path);
|
||||
|
||||
if(path==PHYDM_ABC)//3-1
|
||||
{
|
||||
|
||||
if(path==PHYDM_ABC) { //3-1
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B C))\n"));
|
||||
//set for 1ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1);
|
||||
|
@ -176,11 +168,11 @@ phydm_dtp_fix_tx_path(
|
|||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B D ))\n"));
|
||||
//set for 1ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 2);
|
||||
//set for 3ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT21|BIT20, 0);
|
||||
|
@ -194,7 +186,7 @@ phydm_dtp_fix_tx_path(
|
|||
//set for 1ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
|
@ -210,7 +202,7 @@ phydm_dtp_fix_tx_path(
|
|||
//set for 1ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2);
|
||||
ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2);
|
||||
//set for 2ss
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0);
|
||||
ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1);
|
||||
|
@ -268,9 +260,7 @@ phydm_find_default_path(
|
|||
{
|
||||
pDM_PathDiv->is_pathA_exist=FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if( (rssi_avg_a >=rssi_avg_b) && (rssi_avg_a >=rssi_avg_c)&&(rssi_avg_a >=rssi_avg_d))
|
||||
pDM_PathDiv->default_path=PATH_A;
|
||||
else if( (rssi_avg_b >=rssi_avg_c)&&(rssi_avg_b >=rssi_avg_d))
|
||||
|
@ -294,19 +284,14 @@ phydm_candidate_dtp_update(
|
|||
pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv;
|
||||
|
||||
pDM_PathDiv->num_candidate=3;
|
||||
|
||||
if(pDM_PathDiv->use_path_a_as_default_ant == 1)
|
||||
{
|
||||
if(pDM_PathDiv->num_tx_path==3)
|
||||
{
|
||||
if(pDM_PathDiv->is_pathA_exist)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
|
||||
if(pDM_PathDiv->use_path_a_as_default_ant == 1) {
|
||||
if(pDM_PathDiv->num_tx_path==3) {
|
||||
if(pDM_PathDiv->is_pathA_exist) {
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_ACD;
|
||||
}
|
||||
else // use path BCD
|
||||
{
|
||||
} else { // use path BCD
|
||||
pDM_PathDiv->num_candidate=1;
|
||||
phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD);
|
||||
return;
|
||||
|
@ -316,75 +301,69 @@ phydm_candidate_dtp_update(
|
|||
{
|
||||
if(pDM_PathDiv->is_pathA_exist)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_AD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_AD;
|
||||
} else {
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_CD;
|
||||
}
|
||||
else
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_CD;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//2 3 TX Mode
|
||||
if(pDM_PathDiv->num_tx_path==3)//choose 3 ant form 4
|
||||
{
|
||||
if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_ACD;
|
||||
} else {
|
||||
//2 3 TX Mode
|
||||
if(pDM_PathDiv->num_tx_path==3) { //choose 3 ant form 4
|
||||
if(pDM_PathDiv->default_path == PATH_A) { //choose 2 ant form 3
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_ACD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path==PATH_B)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path == PATH_C)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ACD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ACD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path == PATH_D)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ACD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_ABD;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_ACD;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BCD;
|
||||
}
|
||||
}
|
||||
|
||||
//2 2 TX Mode
|
||||
else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4
|
||||
|
||||
//2 2 TX Mode
|
||||
else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4
|
||||
{
|
||||
if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_AD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_AD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path==PATH_B)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AB;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_BD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path == PATH_C)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_CD;
|
||||
pDM_PathDiv->ant_candidate_1 = PHYDM_AC;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BC;
|
||||
pDM_PathDiv->ant_candidate_3 = PHYDM_CD;
|
||||
}
|
||||
else if(pDM_PathDiv->default_path == PATH_D)
|
||||
{
|
||||
pDM_PathDiv->ant_candidate_1= PHYDM_AD;
|
||||
pDM_PathDiv->ant_candidate_2 = PHYDM_BD;
|
||||
pDM_PathDiv->ant_candidate_3= PHYDM_CD;
|
||||
pDM_PathDiv->ant_candidate_1= PHYDM_AD;
|
||||
pDM_PathDiv->ant_candidate_2= PHYDM_BD;
|
||||
pDM_PathDiv->ant_candidate_3= PHYDM_CD;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -397,108 +376,96 @@ phydm_dynamic_tx_path(
|
|||
)
|
||||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv;
|
||||
|
||||
pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv;
|
||||
|
||||
PSTA_INFO_T pEntry;
|
||||
u4Byte i;
|
||||
u1Byte num_client=0;
|
||||
u1Byte H2C_Parameter[6] ={0};
|
||||
|
||||
|
||||
if(!pDM_Odm->bLinked) //bLinked==False
|
||||
{
|
||||
if(!pDM_Odm->bLinked) { //bLinked==False
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("DTP_8814 [No Link!!!]\n"));
|
||||
|
||||
if(pDM_PathDiv->bBecomeLinked == TRUE)
|
||||
{
|
||||
|
||||
if(pDM_PathDiv->bBecomeLinked == TRUE) {
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be disconnected]----->\n"));
|
||||
pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pDM_PathDiv->bBecomeLinked ==FALSE)
|
||||
{
|
||||
} else {
|
||||
if(pDM_PathDiv->bBecomeLinked ==FALSE) {
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be Linked !!!]----->\n"));
|
||||
pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked;
|
||||
}
|
||||
}
|
||||
|
||||
//2 [Period CTRL]
|
||||
if(pDM_PathDiv->dtp_period >=2)
|
||||
{
|
||||
pDM_PathDiv->dtp_period=0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//2 [Period CTRL]
|
||||
if(pDM_PathDiv->dtp_period >=2) {
|
||||
pDM_PathDiv->dtp_period=0;
|
||||
} else {
|
||||
//ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("Phydm_Dynamic_Tx_Path_8814A() Stay = (( %d ))\n",pDM_PathDiv->dtp_period));
|
||||
pDM_PathDiv->dtp_period++;
|
||||
pDM_PathDiv->dtp_period++;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//2 [Fix Path]
|
||||
if (pDM_Odm->path_select != PHYDM_AUTO_PATH)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//2 [Check Bfer]
|
||||
|
||||
//2 [Check Bfer]
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
#if (BEAMFORMING_SUPPORT == 1)
|
||||
{
|
||||
BEAMFORMING_CAP BeamformCap = (pDM_Odm->BeamformingInfo.BeamformCap);
|
||||
|
||||
if( BeamformCap & BEAMFORMER_CAP ) // BFmer On && Div On -> Div Off
|
||||
{
|
||||
if( pDM_PathDiv->fix_path_bfer == 0)
|
||||
{
|
||||
if( pDM_PathDiv->fix_path_bfer == 0)
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : OFF ] BFmer ==1 \n"));
|
||||
pDM_PathDiv->fix_path_bfer = 1 ;
|
||||
pDM_PathDiv->fix_path_bfer = 1 ;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else // BFmer Off && Div Off -> Div On
|
||||
{
|
||||
if( pDM_PathDiv->fix_path_bfer == 1 )
|
||||
if( pDM_PathDiv->fix_path_bfer == 1 )
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : ON ] BFmer ==0 \n"));
|
||||
pDM_PathDiv->fix_path_bfer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if(pDM_PathDiv->use_path_a_as_default_ant ==1)
|
||||
{
|
||||
if(pDM_PathDiv->use_path_a_as_default_ant ==1) {
|
||||
phydm_find_default_path(pDM_Odm);
|
||||
phydm_candidate_dtp_update(pDM_Odm);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT)
|
||||
{
|
||||
phydm_candidate_dtp_update(pDM_Odm);
|
||||
} else {
|
||||
if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT) {
|
||||
phydm_find_default_path(pDM_Odm);
|
||||
phydm_candidate_dtp_update(pDM_Odm);
|
||||
pDM_PathDiv->dtp_state = PHYDM_DTP_RUNNING_1;
|
||||
}
|
||||
|
||||
|
||||
else if( pDM_PathDiv->dtp_state == PHYDM_DTP_RUNNING_1)
|
||||
{
|
||||
pDM_PathDiv->dtp_check_patha_counter++;
|
||||
|
||||
|
||||
if(pDM_PathDiv->dtp_check_patha_counter>=NUM_RESET_DTP_PERIOD)
|
||||
{
|
||||
pDM_PathDiv->dtp_check_patha_counter=0;
|
||||
pDM_PathDiv->dtp_state = PHYDM_DTP_INIT;
|
||||
}
|
||||
//2 Search space update
|
||||
//2 Search space update
|
||||
else
|
||||
{
|
||||
// 1. find the worst candidate
|
||||
|
||||
|
||||
|
||||
// 2. repalce the worst candidate
|
||||
}
|
||||
|
@ -507,17 +474,14 @@ phydm_dynamic_tx_path(
|
|||
|
||||
//2 Dynamic Path Selection H2C
|
||||
|
||||
if(pDM_PathDiv->num_candidate == 1)
|
||||
{
|
||||
if(pDM_PathDiv->num_candidate == 1) {
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
H2C_Parameter[0] = pDM_PathDiv->num_candidate;
|
||||
H2C_Parameter[1] = pDM_PathDiv->num_tx_path;
|
||||
H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1;
|
||||
H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2;
|
||||
H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3;
|
||||
H2C_Parameter[1] = pDM_PathDiv->num_tx_path;
|
||||
H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1;
|
||||
H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2;
|
||||
H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3;
|
||||
|
||||
ODM_FillH2CCmd(pDM_Odm, PHYDM_H2C_DYNAMIC_TX_PATH, 6, H2C_Parameter);
|
||||
}
|
||||
|
@ -525,7 +489,6 @@ phydm_dynamic_tx_path(
|
|||
}
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
phydm_dynamic_tx_path_init(
|
||||
IN PVOID pDM_VOID
|
||||
|
@ -552,29 +515,25 @@ phydm_dynamic_tx_path_init(
|
|||
memcpy(&(pDM_PathDiv->search_space_3[0]), &(search_space_3[0]), NUM_CHOOSE3_FROM4);
|
||||
|
||||
pDM_PathDiv->use_path_a_as_default_ant= 1;
|
||||
pDM_PathDiv->dtp_state = PHYDM_DTP_INIT;
|
||||
pDM_PathDiv->dtp_state = PHYDM_DTP_INIT;
|
||||
pDM_Odm->path_select = PHYDM_AUTO_PATH;
|
||||
pDM_PathDiv->path_div_type = PHYDM_4R_PATH_DIV;
|
||||
|
||||
|
||||
if(pDM_PathDiv->is_u3_mode )
|
||||
{
|
||||
|
||||
if(pDM_PathDiv->is_u3_mode ) {
|
||||
pDM_PathDiv->num_tx_path=3;
|
||||
phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD);/* 3TX Set Init TX Path*/
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
pDM_PathDiv->num_tx_path=2;
|
||||
phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BC);/* 2TX // Set Init TX Path*/
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
phydm_process_rssi_for_path_div(
|
||||
IN OUT PVOID pDM_VOID,
|
||||
phydm_process_rssi_for_path_div(
|
||||
IN OUT PVOID pDM_VOID,
|
||||
IN PVOID p_phy_info_void,
|
||||
IN PVOID p_pkt_info_void
|
||||
)
|
||||
|
@ -595,20 +554,18 @@ phydm_process_rssi_for_path_div(
|
|||
{
|
||||
pDM_PathDiv->path_a_sum_all+=pPhyInfo->RxMIMOSignalStrength[0];
|
||||
pDM_PathDiv->path_a_cnt_all++;
|
||||
|
||||
|
||||
pDM_PathDiv->path_b_sum_all+=pPhyInfo->RxMIMOSignalStrength[1];
|
||||
pDM_PathDiv->path_b_cnt_all++;
|
||||
|
||||
|
||||
pDM_PathDiv->path_c_sum_all+=pPhyInfo->RxMIMOSignalStrength[2];
|
||||
pDM_PathDiv->path_c_cnt_all++;
|
||||
|
||||
|
||||
pDM_PathDiv->path_d_sum_all+=pPhyInfo->RxMIMOSignalStrength[3];
|
||||
pDM_PathDiv->path_d_cnt_all++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
pDM_PathDiv->PathA_Sum[pPktinfo->StationID]+=pPhyInfo->RxMIMOSignalStrength[0];
|
||||
pDM_PathDiv->PathA_Cnt[pPktinfo->StationID]++;
|
||||
|
||||
|
@ -617,8 +574,6 @@ phydm_process_rssi_for_path_div(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif //#if RTL8814A_SUPPORT
|
||||
|
@ -636,10 +591,10 @@ odm_pathdiv_debug(
|
|||
pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv);
|
||||
u4Byte used = *_used;
|
||||
u4Byte out_len = *_out_len;
|
||||
|
||||
|
||||
pDM_Odm->path_select = (dm_value[0] & 0xf);
|
||||
PHYDM_SNPRINTF((output+used, out_len-used,"Path_select = (( 0x%x ))\n",pDM_Odm->path_select ));
|
||||
|
||||
|
||||
//2 [Fix Path]
|
||||
if (pDM_Odm->path_select != PHYDM_AUTO_PATH)
|
||||
{
|
||||
|
@ -648,11 +603,9 @@ odm_pathdiv_debug(
|
|||
((pDM_Odm->path_select) & 0x2)?"B":"",
|
||||
((pDM_Odm->path_select) & 0x4)?"C":"",
|
||||
((pDM_Odm->path_select) & 0x8)?"D":"" ));
|
||||
|
||||
|
||||
phydm_dtp_fix_tx_path( pDM_Odm, pDM_Odm->path_select );
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
PHYDM_SNPRINTF((output+used, out_len-used,"%s\n","Auto Path"));
|
||||
}
|
||||
}
|
||||
|
@ -670,8 +623,8 @@ phydm_c2h_dtp_handler(
|
|||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv);
|
||||
|
||||
u1Byte macid = CmdBuf[0];
|
||||
u1Byte target = CmdBuf[1];
|
||||
u1Byte macid = CmdBuf[0];
|
||||
u1Byte target = CmdBuf[1];
|
||||
u1Byte nsc_1 = CmdBuf[2];
|
||||
u1Byte nsc_2 = CmdBuf[3];
|
||||
u1Byte nsc_3 = CmdBuf[4];
|
||||
|
@ -688,10 +641,10 @@ phydm_c2h_dtp_handler(
|
|||
}
|
||||
else
|
||||
{
|
||||
phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3);
|
||||
phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3);
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -732,7 +685,7 @@ odm_PathDiversityInit(
|
|||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
||||
/*pDM_Odm->SupportAbility |= ODM_BB_PATH_DIV;*/
|
||||
|
||||
|
||||
if(pDM_Odm->mp_mode == TRUE)
|
||||
return;
|
||||
|
||||
|
@ -752,7 +705,7 @@ odm_PathDiversityInit(
|
|||
if(pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
phydm_dynamic_tx_path_init(pDM_Odm);
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
{}
|
||||
#endif
|
||||
}
|
||||
|
@ -807,4 +760,3 @@ odm_SwAntDivConstructScanChnl(
|
|||
}
|
||||
|
||||
#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
|
||||
|
|
|
@ -17,8 +17,9 @@ halComTxbf_beamformInit(
|
|||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_Init(pDM_Odm);
|
||||
}
|
||||
}
|
||||
|
||||
/*Only used for MU BFer Entry when get GID management frame (self is as MU STA)*/
|
||||
|
@ -29,8 +30,9 @@ halComTxbf_ConfigGtab(
|
|||
{
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_ConfigGtab(pDM_Odm);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -167,7 +169,7 @@ phydm_beamformSetGetTxRate(
|
|||
#endif
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
halComTxbf_EnterWorkItemCallback(
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
IN PADAPTER Adapter
|
||||
|
@ -184,20 +186,24 @@ halComTxbf_EnterWorkItemCallback(
|
|||
#endif
|
||||
PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo;
|
||||
u1Byte Idx = pTxbfInfo->TXBFIdx;
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821))
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) {
|
||||
HalTxbfJaguar_Enter(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E) {
|
||||
HalTxbf8192E_Enter(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A) {
|
||||
HalTxbf8814A_Enter(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_Enter(pDM_Odm, Idx);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
halComTxbf_LeaveWorkItemCallback(
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
IN PADAPTER Adapter
|
||||
|
@ -218,18 +224,22 @@ halComTxbf_LeaveWorkItemCallback(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821))
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) {
|
||||
HalTxbfJaguar_Leave(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E) {
|
||||
HalTxbf8192E_Leave(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A) {
|
||||
HalTxbf8814A_Leave(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_Leave(pDM_Odm, Idx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
VOID
|
||||
halComTxbf_FwNdpaWorkItemCallback(
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
IN PADAPTER Adapter
|
||||
|
@ -249,14 +259,18 @@ halComTxbf_FwNdpaWorkItemCallback(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821))
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) {
|
||||
HalTxbfJaguar_FwTxBF(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E) {
|
||||
HalTxbf8192E_FwTxBF(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A) {
|
||||
HalTxbf8814A_FwTxBF(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_FwTxBF(pDM_Odm, Idx);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -277,14 +291,15 @@ halComTxbf_ClkWorkItemCallback(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8812)
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8812) {
|
||||
HalTxbfJaguar_Clk_8812A(pDM_Odm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
halComTxbf_RateWorkItemCallback(
|
||||
halComTxbf_RateWorkItemCallback(
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
IN PADAPTER Adapter
|
||||
#else
|
||||
|
@ -300,22 +315,24 @@ halComTxbf_RateWorkItemCallback(
|
|||
#endif
|
||||
PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo;
|
||||
u1Byte BW = pTxbfInfo->BW;
|
||||
u1Byte Rate = pTxbfInfo->Rate;
|
||||
|
||||
u1Byte Rate = pTxbfInfo->Rate;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8812)
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8812) {
|
||||
HalTxbf8812A_setNDPArate(pDM_Odm, BW, Rate);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E) {
|
||||
HalTxbf8192E_setNDPArate(pDM_Odm, BW, Rate);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A) {
|
||||
HalTxbf8814A_setNDPArate(pDM_Odm, BW, Rate);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
|
||||
VOID
|
||||
VOID
|
||||
halComTxbf_FwNdpaTimerCallback(
|
||||
IN PRT_TIMER pTimer
|
||||
)
|
||||
|
@ -327,13 +344,14 @@ halComTxbf_FwNdpaTimerCallback(
|
|||
|
||||
PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo;
|
||||
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (*pDM_Odm->pbFwDwRsvdPageInProgress)
|
||||
if (*pDM_Odm->pbFwDwRsvdPageInProgress) {
|
||||
ODM_SetTimer(pDM_Odm, &(pTxbfInfo->Txbf_FwNdpaTimer), 5);
|
||||
else
|
||||
} else {
|
||||
PlatformScheduleWorkItem(&(pTxbfInfo->Txbf_FwNdpaWorkItem));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -359,14 +377,18 @@ halComTxbf_StatusWorkItemCallback(
|
|||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__));
|
||||
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821))
|
||||
if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) {
|
||||
HalTxbfJaguar_Status(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8192E) {
|
||||
HalTxbf8192E_Status(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8814A) {
|
||||
HalTxbf8814A_Status(pDM_Odm, Idx);
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B)
|
||||
}
|
||||
else if (pDM_Odm->SupportICType & ODM_RTL8822B) {
|
||||
HalTxbf8822B_Status(pDM_Odm, Idx);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -390,7 +412,7 @@ halComTxbf_ResetTxPathWorkItemCallback(
|
|||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
HalTxbf8814A_ResetTxPath(pDM_Odm, Idx);
|
||||
|
||||
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -408,7 +430,7 @@ halComTxbf_GetTxRateWorkItemCallback(
|
|||
#else
|
||||
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
|
||||
#endif
|
||||
|
||||
|
||||
if (pDM_Odm->SupportICType & ODM_RTL8814A)
|
||||
HalTxbf8814A_GetTxRate(pDM_Odm);
|
||||
}
|
||||
|
@ -426,7 +448,7 @@ HalComTxbf_Set(
|
|||
PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] setType = 0x%X\n", __func__, setType));
|
||||
|
||||
|
||||
switch(setType){
|
||||
case TXBF_SET_SOUNDING_ENTER:
|
||||
pTxbfInfo->TXBFIdx = *pU1Tmp;
|
||||
|
@ -457,7 +479,7 @@ HalComTxbf_Set(
|
|||
case TXBF_SET_SOUNDING_CLK:
|
||||
phydm_beamformSetSoundingClk(pDM_Odm);
|
||||
break;
|
||||
|
||||
|
||||
case TXBF_SET_TX_PATH_RESET:
|
||||
pTxbfInfo->TXBFIdx = *pU1Tmp;
|
||||
phydm_beamformSetResetTxPath(pDM_Odm);
|
||||
|
@ -466,7 +488,7 @@ HalComTxbf_Set(
|
|||
case TXBF_SET_GET_TX_RATE:
|
||||
phydm_beamformSetGetTxRate(pDM_Odm);
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -498,7 +520,7 @@ HalComTxbf_Get(
|
|||
*pBoolean = FALSE;
|
||||
} else if (getType == TXBF_GET_EXPLICIT_BEAMFORMER) {
|
||||
if (IS_HARDWARE_TYPE_OLDER_THAN_8812A(Adapter))
|
||||
*pBoolean = FALSE;
|
||||
*pBoolean = FALSE;
|
||||
else if (/*IS_HARDWARE_TYPE_8822B(Adapter) ||*/
|
||||
IS_HARDWARE_TYPE_8821B(Adapter) ||
|
||||
IS_HARDWARE_TYPE_8192E(Adapter) ||
|
||||
|
@ -519,18 +541,18 @@ HalComTxbf_Get(
|
|||
|
||||
|
||||
} else if (getType == TXBF_GET_MU_MIMO_AP) {
|
||||
#if (RTL8822B_SUPPORT == 1)
|
||||
#if (RTL8822B_SUPPORT == 1)
|
||||
if (IS_HARDWARE_TYPE_8822B(Adapter))
|
||||
*pBoolean = TRUE;
|
||||
else
|
||||
#endif
|
||||
*pBoolean = FALSE;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -445,10 +445,11 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attri
|
|||
#endif /* CONFIG_TCP_CSUM_OFFLOAD_RX */
|
||||
|
||||
ret = rtw_netif_rx(padapter->pnetdev, pkt);
|
||||
if (ret == NET_RX_SUCCESS)
|
||||
if (ret == NET_RX_SUCCESS) {
|
||||
DBG_COUNTER(padapter->rx_logs.os_netif_ok);
|
||||
else
|
||||
} else {
|
||||
DBG_COUNTER(padapter->rx_logs.os_netif_err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue