even more cleanup. brackets + more

pull/104/head
kimocoder 2018-03-15 16:51:40 +01:00
parent 3ffd99abaf
commit 900fc8b5df
10 changed files with 368 additions and 381 deletions

View File

@ -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:

View File

@ -1,5 +1,5 @@
EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
EXTRA_CFLAGS += -O2
EXTRA_CFLAGS += -O1
#EXTRA_CFLAGS += -O3
EXTRA_CFLAGS += -Wall
EXTRA_CFLAGS += -Wextra

View File

@ -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:

View File

@ -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"

View File

@ -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
}

View File

@ -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)

View File

@ -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"));
}

View File

@ -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)

View File

@ -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

View File

@ -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);
}
}
}