pHalData->LastDTPLvl = TxHighPwrLevel_Normal;
pHalData->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
- PADAPTER Adapter = pDM_Odm->Adapter;
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- pdmpriv->bDynamicTxPowerEnable = _FALSE;
-
- #if (RTL8192C_SUPPORT==1)
- #ifdef CONFIG_USB_HCI
-
- #ifdef CONFIG_INTEL_PROXIM
- if((pHalData->BoardType == BOARD_USB_High_PA)||(Adapter->proximity.proxim_support==_TRUE))
- #else
- if(pHalData->BoardType == BOARD_USB_High_PA)
- #endif
- {
- //odm_SavePowerIndex(Adapter);
- odm_DynamicTxPowerSavePowerIndex(pDM_Odm);
- pdmpriv->bDynamicTxPowerEnable = _TRUE;
- }
- else
- #else
- pdmpriv->bDynamicTxPowerEnable = _FALSE;
- #endif
- #endif
-
- pdmpriv->LastDTPLvl = TxHighPwrLevel_Normal;
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-
+\r
#endif
}
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
for(index = 0; index< 6; index++)
pHalData->PowerIndex_backup[index] = PlatformEFIORead1Byte(Adapter, Power_Index_REG[index]);
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
- PADAPTER Adapter = pDM_Odm->Adapter;
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- for(index = 0; index< 6; index++)
- pdmpriv->PowerIndex_backup[index] = rtw_read8(Adapter, Power_Index_REG[index]);
+
+ \r
#endif
#endif
}
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
for(index = 0; index< 6; index++)
PlatformEFIOWrite1Byte(Adapter, Power_Index_REG[index], pHalData->PowerIndex_backup[index]);
-#elif(DM_ODM_SUPPORT_TYPE == ODM_CE)
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- for(index = 0; index< 6; index++)
- rtw_write8(Adapter, Power_Index_REG[index], pdmpriv->PowerIndex_backup[index]);
+
+\r
#endif
#endif
}
if(!priv->pshare->rf_ft_var.tx_pwr_ctrl)
return;
-#if ((RTL8812E_SUPPORT==1) || (RTL8881A_SUPPORT==1))
- if (pDM_Odm->SupportICType & (ODM_RTL8812 | ODM_RTL8881A))
+#if ((RTL8812E_SUPPORT==1) || (RTL8881A_SUPPORT==1) || (RTL8814A_SUPPORT==1))
+ if (pDM_Odm->SupportICType & (ODM_RTL8812 | ODM_RTL8881A | ODM_RTL8814A))
pwr_thd = TX_POWER_NEAR_FIELD_THRESH_8812;
#endif
}
}
#endif
+
+#ifdef CONFIG_WLAN_HAL_8814AE
+ if (GET_CHIP_VER(priv) == VERSION_8814A) {
+ if (!disable_pwr_ctrl && (pDM_Odm->RSSI_Min != 0xff)) {\r
+ if (pDM_Odm->RSSI_Min > pwr_thd)\r
+ RRSR_power_control_14(priv, 1);\r
+ else if (pDM_Odm->RSSI_Min < (pwr_thd-8))\r
+ RRSR_power_control_14(priv, 0);\r
+ } else {
+ RRSR_power_control_14(priv, 0);\r
+ }
+ }
+#endif
+
}
//#endif
pHalData->LastDTPLvl = pHalData->DynamicTxHighPowerLvl;
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
-
- #if (RTL8192C_SUPPORT==1)
- PADAPTER Adapter = pDM_Odm->Adapter;
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
- int UndecoratedSmoothedPWDB;
- if(!pdmpriv->bDynamicTxPowerEnable)
- return;
-#ifdef CONFIG_INTEL_PROXIM
- if(Adapter->proximity.proxim_on== _TRUE){
- struct proximity_priv *prox_priv=Adapter->proximity.proximity_priv;
- // Intel set fixed tx power
- printk("\n %s Adapter->proximity.proxim_on=%d prox_priv->proxim_modeinfo->power_output=%d \n",__FUNCTION__,Adapter->proximity.proxim_on,prox_priv->proxim_modeinfo->power_output);
- if(prox_priv!=NULL){
- if(prox_priv->proxim_modeinfo->power_output> 0)
- {
- switch(prox_priv->proxim_modeinfo->power_output)
- {
- case 1:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_100;
- printk("TxHighPwrLevel_100\n");
- break;
- case 2:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_70;
- printk("TxHighPwrLevel_70\n");
- break;
- case 3:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_50;
- printk("TxHighPwrLevel_50\n");
- break;
- case 4:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_35;
- printk("TxHighPwrLevel_35\n");
- break;
- case 5:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_15;
- printk("TxHighPwrLevel_15\n");
- break;
- default:
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_100;
- printk("TxHighPwrLevel_100\n");
- break;
- }
- }
- }
- }
- else
-#endif
- {
- // STA not connected and AP not connected
- if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) &&
- (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0))
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("Not connected to any \n"));
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-
- //the LastDTPlvl should reset when disconnect,
- //otherwise the tx power level wouldn't change when disconnect and connect again.
- // Maddest 20091220.
- pdmpriv->LastDTPLvl=TxHighPwrLevel_Normal;
- return;
- }
-
- if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) // Default port
- {
- #if 0
- //todo: AP Mode
- if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) ||
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE))
- {
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Client PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
- else
- {
- UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("STA Default Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
- #else
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- #endif
- }
- else // associated entry pwdb
- {
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Ext Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
-
- if(UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL2)
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x0)\n"));
- }
- else if((UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL2-3)) &&
- (UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL1) )
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
- }
- else if(UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL1-5))
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Normal\n"));
- }
- }
- if( (pdmpriv->DynamicTxHighPowerLvl != pdmpriv->LastDTPLvl) )
- {
- PHY_SetTxPowerLevel8192C(Adapter, pHalData->CurrentChannel);
- if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Normal) // HP1 -> Normal or HP2 -> Normal
- odm_DynamicTxPowerRestorePowerIndex(pDM_Odm);
- else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level1)
- odm_DynamicTxPowerWritePowerIndex(pDM_Odm, 0x14);
- else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level2)
- odm_DynamicTxPowerWritePowerIndex(pDM_Odm, 0x10);
- }
- pdmpriv->LastDTPLvl = pdmpriv->DynamicTxHighPowerLvl;
- #endif
-#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
+#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
}
IN PVOID pDM_VOID\r
)
{
+#if (RTL8192D_SUPPORT==1)
PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;\r
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
PADAPTER Adapter = pDM_Odm->Adapter;
}
pHalData->LastDTPLvl = pHalData->DynamicTxHighPowerLvl;
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
-#if (RTL8192D_SUPPORT==1)
- PADAPTER Adapter = pDM_Odm->Adapter;
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
-
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- DM_ODM_T *podmpriv = &pHalData->odmpriv;
- int UndecoratedSmoothedPWDB;
- #if (RTL8192D_EASY_SMART_CONCURRENT == 1)
- PADAPTER BuddyAdapter = Adapter->BuddyAdapter;
- BOOLEAN bGetValueFromBuddyAdapter = DualMacGetParameterFromBuddyAdapter(Adapter);
- u8 HighPowerLvlBackForMac0 = TxHighPwrLevel_Level1;
- #endif
-
- // If dynamic high power is disabled.
- if( (pdmpriv->bDynamicTxPowerEnable != _TRUE) ||
- (!(podmpriv->SupportAbility& ODM_BB_DYNAMIC_TXPWR)) )
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
- return;
- }
- // STA not connected and AP not connected
- if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) &&
- (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0))
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("Not connected to any \n"));
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
- //the LastDTPlvl should reset when disconnect,
- //otherwise the tx power level wouldn't change when disconnect and connect again.
- // Maddest 20091220.
- pdmpriv->LastDTPLvl=TxHighPwrLevel_Normal;
- return;
- }
-
- if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) // Default port
- {
- #if 0
- //todo: AP Mode
- if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) ||
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE))
- {
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Client PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
- else
- {
- UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("STA Default Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
- #else
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- #endif
- }
- else // associated entry pwdb
- {
- UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Ext Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
- }
-#if TX_POWER_FOR_5G_BAND == 1
- if(pHalData->CurrentBandType92D == BAND_ON_5G){
- if(UndecoratedSmoothedPWDB >= 0x33)
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Level2 (TxPwr=0x0)\n"));
- }
- else if((UndecoratedSmoothedPWDB <0x33) &&
- (UndecoratedSmoothedPWDB >= 0x2b) )
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
- }
- else if(UndecoratedSmoothedPWDB < 0x2b)
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Normal\n"));
- }
- }
- else
-#endif
- {
- if(UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL2)
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x0)\n"));
- }
- else if((UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL2-3)) &&
- (UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL1) )
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
- }
- else if(UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL1-5))
- {
- pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Normal\n"));
- }
- }
-#if (RTL8192D_EASY_SMART_CONCURRENT == 1)
- if(bGetValueFromBuddyAdapter)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() mac 0 for mac 1 \n"));
- if(Adapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() change value \n"));
- HighPowerLvlBackForMac0 = pHalData->DynamicTxHighPowerLvl;
- pHalData->DynamicTxHighPowerLvl = Adapter->DualMacDMSPControl.CurTxHighLvlForAnotherMacOfDMSP;
- PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
- pHalData->DynamicTxHighPowerLvl = HighPowerLvlBackForMac0;
- Adapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP = _FALSE;
- }
- }
-#endif
-
- if( (pdmpriv->DynamicTxHighPowerLvl != pdmpriv->LastDTPLvl) )
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("PHY_SetTxPowerLevel8192S() Channel = %d \n" , pHalData->CurrentChannel));
-#if (RTL8192D_EASY_SMART_CONCURRENT == 1)
- if(BuddyAdapter == NULL)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter == NULL case \n"));
- if(!Adapter->bSlaveOfDMSP)
- {
- PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
- }
- }
- else
- {
- if(pHalData->MacPhyMode92D == DUALMAC_SINGLEPHY)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter DMSP \n"));
- if(Adapter->bSlaveOfDMSP)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() bslave case \n"));
- BuddyAdapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP = _TRUE;
- BuddyAdapter->DualMacDMSPControl.CurTxHighLvlForAnotherMacOfDMSP = pHalData->DynamicTxHighPowerLvl;
- }
- else
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() master case \n"));
- if(!bGetValueFromBuddyAdapter)
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() mac 0 for mac 0 \n"));
- PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
- }
- }
- }
- else
- {
- //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter DMDP\n"));
- PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
- }
- }
-#else
- PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
+\r
+#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
#endif
- }
- pdmpriv->LastDTPLvl = pdmpriv->DynamicTxHighPowerLvl;
-#endif
-#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
-
}
\r