123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737 |
- #define _RTL8812A_DM_C_
- #include <rtl8812a_hal.h>
- static VOID
- dm_CheckProtection(
- IN PADAPTER Adapter
- )
- {
- #if 0
- PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo);
- u1Byte CurRate, RateThreshold;
- if(pMgntInfo->pHTInfo->bCurBW40MHz)
- RateThreshold = MGN_MCS1;
- else
- RateThreshold = MGN_MCS3;
- if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold)
- {
- pMgntInfo->bDmDisableProtect = TRUE;
- DbgPrint("Forced disable protect: %x\n", Adapter->TxStats.CurrentInitTxRate);
- }
- else
- {
- pMgntInfo->bDmDisableProtect = FALSE;
- DbgPrint("Enable protect: %x\n", Adapter->TxStats.CurrentInitTxRate);
- }
- #endif
- }
- static VOID
- dm_CheckStatistics(
- IN PADAPTER Adapter
- )
- {
- #if 0
- if(!Adapter->MgntInfo.bMediaConnect)
- return;
-
- rtw_hal_get_hwreg( Adapter, HW_VAR_INIT_TX_RATE, (pu1Byte)(&Adapter->TxStats.CurrentInitTxRate) );
-
-
-
- rtw_hal_get_hwreg( Adapter, HW_VAR_RETRY_COUNT, (pu1Byte)(&Adapter->TxStats.NumTxRetryCount) );
- #endif
- }
- static void dm_CheckPbcGPIO(_adapter *padapter)
- {
- u8 tmp1byte;
- u8 bPbcPressed = _FALSE;
- if(!padapter->registrypriv.hw_wps_pbc)
- return;
- #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
- if (IS_HARDWARE_TYPE_8812(padapter))
- {
- tmp1byte = rtw_read8(padapter, GPIO_IO_SEL);
- tmp1byte |= (HAL_8192C_HW_GPIO_WPS_BIT);
- rtw_write8(padapter, GPIO_IO_SEL, tmp1byte);
- tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT);
- rtw_write8(padapter, GPIO_IN, tmp1byte);
- tmp1byte = rtw_read8(padapter, GPIO_IO_SEL);
- tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT);
- rtw_write8(padapter, GPIO_IO_SEL, tmp1byte);
- tmp1byte =rtw_read8(padapter, GPIO_IN);
- if (tmp1byte == 0xff)
- return ;
- if (tmp1byte&HAL_8192C_HW_GPIO_WPS_BIT)
- {
- bPbcPressed = _TRUE;
- }
- }
- else if (IS_HARDWARE_TYPE_8821(padapter))
- {
- tmp1byte = rtw_read8(padapter, GPIO_IO_SEL_8811A);
- tmp1byte |= (BIT4);
- rtw_write8(padapter, GPIO_IO_SEL_8811A, tmp1byte);
- tmp1byte &= ~(BIT4);
- rtw_write8(padapter, GPIO_IN_8811A, tmp1byte);
- tmp1byte = rtw_read8(padapter, GPIO_IO_SEL_8811A);
- tmp1byte &= ~(BIT4);
- rtw_write8(padapter, GPIO_IO_SEL_8811A, tmp1byte);
- tmp1byte =rtw_read8(padapter, GPIO_IN_8811A);
- if (tmp1byte == 0xff)
- return ;
- if (tmp1byte&BIT4)
- {
- bPbcPressed = _TRUE;
- }
- }
- #else
- #endif
- if( _TRUE == bPbcPressed)
- {
-
-
- DBG_8192C("CheckPbcGPIO - PBC is pressed\n");
- rtw_request_wps_pbc_event(padapter);
- }
- }
- #ifdef CONFIG_PCI_HCI
- VOID
- dm_InterruptMigration(
- IN PADAPTER Adapter
- )
- {
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bCurrentIntMt, bCurrentACIntDisable;
- BOOLEAN IntMtToSet = _FALSE;
- BOOLEAN ACIntToSet = _FALSE;
-
- bCurrentIntMt = pHalData->bInterruptMigration;
- bCurrentACIntDisable = pHalData->bDisableTxInt;
-
-
-
-
- if(!Adapter->registrypriv.wifi_spec &&
- (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) &&
- pmlmepriv->LinkDetectInfo.bHigherBusyTraffic)
- {
- IntMtToSet = _TRUE;
-
- if(pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic )
- ACIntToSet = _TRUE;
- }
-
- if( bCurrentIntMt != IntMtToSet ){
- DBG_8192C("%s(): Update interrrupt migration(%d)\n",__FUNCTION__,IntMtToSet);
- if(IntMtToSet)
- {
-
-
-
-
-
- rtw_write32(Adapter, REG_INT_MIG, 0xff000fa0);
- pHalData->bInterruptMigration = IntMtToSet;
- }
- else
- {
-
- rtw_write32(Adapter, REG_INT_MIG, 0);
- pHalData->bInterruptMigration = IntMtToSet;
- }
- }
-
- }
- #endif
- static void
- dm_InitGPIOSetting(
- IN PADAPTER Adapter
- )
- {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- u8 tmp1byte;
- tmp1byte = rtw_read8(Adapter, REG_GPIO_MUXCFG);
- tmp1byte &= (GPIOSEL_GPIO | ~GPIOSEL_ENBT);
- #ifdef CONFIG_BT_COEXIST
-
- if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID) &&
- pHalData->bt_coexist.BT_Coexist)
- {
- tmp1byte |= (BIT5);
- }
- #endif
- rtw_write8(Adapter, REG_GPIO_MUXCFG, tmp1byte);
- }
- ODM_BOARD_TYPE_E boardType(u8 InterfaceSel)
- {
- ODM_BOARD_TYPE_E board = ODM_BOARD_DEFAULT;
- #ifdef CONFIG_PCI_HCI
- INTERFACE_SELECT_PCIE pcie = (INTERFACE_SELECT_PCIE)InterfaceSel;
- switch (pcie)
- {
- case INTF_SEL0_SOLO_MINICARD:
- board |= ODM_BOARD_MINICARD;
- break;
- case INTF_SEL1_BT_COMBO_MINICARD:
- board |= ODM_BOARD_BT;
- board |= ODM_BOARD_MINICARD;
- break;
- default:
- board = ODM_BOARD_DEFAULT;
- break;
- }
- #elif defined(CONFIG_USB_HCI)
- INTERFACE_SELECT_USB usb = (INTERFACE_SELECT_USB)InterfaceSel;
- switch (usb)
- {
- case INTF_SEL1_USB_High_Power:
- board |= ODM_BOARD_EXT_LNA;
- board |= ODM_BOARD_EXT_PA;
- break;
- case INTF_SEL2_MINICARD:
- board |= ODM_BOARD_MINICARD;
- break;
- case INTF_SEL4_USB_Combo:
- board |= ODM_BOARD_BT;
- break;
- case INTF_SEL5_USB_Combo_MF:
- board |= ODM_BOARD_BT;
- break;
- case INTF_SEL0_USB:
- case INTF_SEL3_USB_Solo:
- default:
- board = ODM_BOARD_DEFAULT;
- break;
- }
-
- #endif
-
- return board;
- }
- static void Init_ODM_ComInfo_8812(PADAPTER Adapter)
- {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- u8 cut_ver,fab_ver;
- u8 BoardType = ODM_BOARD_DEFAULT;
-
-
-
-
- _rtw_memset(pDM_Odm,0,sizeof(pDM_Odm));
-
- pDM_Odm->Adapter = Adapter;
-
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_PLATFORM,ODM_CE);
- if (Adapter->interface_type == RTW_GSPI)
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_INTERFACE,ODM_ITRF_SDIO);
- else
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_INTERFACE,Adapter->interface_type);
- if (IS_HARDWARE_TYPE_8812(Adapter))
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_IC_TYPE, ODM_RTL8812);
- else if (IS_HARDWARE_TYPE_8821(Adapter))
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_IC_TYPE, ODM_RTL8821);
- fab_ver = ODM_TSMC;
- if (IS_VENDOR_8812A_C_CUT(Adapter))
- cut_ver = ODM_CUT_C;
- else
- cut_ver = ODM_CUT_A;
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver);
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_CUT_VER,cut_ver);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_MP_TEST_CHIP,IS_NORMAL_CHIP(pHalData->VersionID));
-
- #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
- if(pHalData->InterfaceSel == INTF_SEL1_USB_High_Power)
- {
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_PA, 1);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_LNA, 1);
- }
- else
- {
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_PA, pHalData->ExternalPA_2G);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_LNA, 0);
- }
- #else
-
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_PA, 0);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_LNA, 0);
- #endif
- if (pHalData->ExternalLNA_2G != 0) {
- BoardType |= ODM_BOARD_EXT_LNA;
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_LNA, 1);
- }
- if (pHalData->ExternalLNA_5G != 0) {
- BoardType |= ODM_BOARD_EXT_LNA_5G;
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_5G_EXT_LNA, 1);
- }
- if (pHalData->ExternalPA_2G != 0) {
- BoardType |= ODM_BOARD_EXT_PA;
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_PA, 1);
- }
- if (pHalData->ExternalPA_5G != 0) {
- BoardType |= ODM_BOARD_EXT_PA_5G;
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_5G_EXT_PA, 1);
- }
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_BOARD_TYPE, BoardType);
-
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RFE_TYPE, pHalData->RFEType);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_EXT_TRSW, 0);
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_PATCH_ID,pEEPROM->CustomerID);
-
- ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_BWIFI_TEST,Adapter->registrypriv.wifi_spec);
-
-
- if(pHalData->rf_type == RF_1T1R){
- ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_RF_TYPE,ODM_1T1R);
- }
- else if(pHalData->rf_type == RF_2T2R){
- ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_RF_TYPE,ODM_2T2R);
- }
- else if(pHalData->rf_type == RF_1T2R){
- ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_RF_TYPE,ODM_1T2R);
- }
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RFE_TYPE, pHalData->RFEType);
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_ANTENNA_TYPE, pHalData->TRxAntDivType);
-
- #ifdef CONFIG_DISABLE_ODM
- pdmpriv->InitODMFlag = 0;
- #else
- pdmpriv->InitODMFlag = ODM_RF_CALIBRATION |
- ODM_RF_TX_PWR_TRACK
- ;
-
-
- #endif
- ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_ABILITY,pdmpriv->InitODMFlag);
-
- }
- static void Update_ODM_ComInfo_8812(PADAPTER Adapter)
- {
- struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
- struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
- struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv;
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- int i;
- #ifdef CONFIG_DISABLE_ODM
- pdmpriv->InitODMFlag = 0;
- #else
-
- pdmpriv->InitODMFlag = ODM_BB_DIG |
- #ifdef CONFIG_ODM_REFRESH_RAMASK
- ODM_BB_RA_MASK |
- #endif
- ODM_BB_FA_CNT |
- ODM_BB_RSSI_MONITOR |
- ODM_RF_TX_PWR_TRACK |
- ODM_MAC_EDCA_TURBO
- ;
- if(pHalData->AntDivCfg)
- pdmpriv->InitODMFlag |= ODM_BB_ANT_DIV;
- #if (MP_DRIVER==1)
- if (Adapter->registrypriv.mp_mode == 1)
- {
- pdmpriv->InitODMFlag = ODM_RF_CALIBRATION |
- ODM_RF_TX_PWR_TRACK;
- }
- #endif
-
- #endif
- ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_ABILITY,pdmpriv->InitODMFlag);
-
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_TX_UNI,&(Adapter->xmitpriv.tx_bytes));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_RX_UNI,&(Adapter->recvpriv.rx_bytes));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_WM_MODE,&(pmlmeext->cur_wireless_mode));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_BAND,&(pHalData->CurrentBandType));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_FORCED_RATE,&(pHalData->ForcedDataRate));
-
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_SEC_CHNL_OFFSET,&(pHalData->nCur40MhzPrimeSC));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_SEC_MODE,&(Adapter->securitypriv.dot11PrivacyAlgrthm));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_BW,&(pHalData->CurrentChannelBW ));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_CHNL,&( pHalData->CurrentChannel));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_NET_CLOSED,&( Adapter->net_closed));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_MP_MODE,&(Adapter->registrypriv.mp_mode));
-
-
-
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_SCAN,&(pmlmepriv->bScanInProcess));
- ODM_CmnInfoHook(pDM_Odm,ODM_CMNINFO_POWER_SAVING,&(pwrctrlpriv->bpower_saving));
- ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_ANTENNA_TYPE, pHalData->TRxAntDivType);
- for(i=0; i< NUM_STA; i++)
- {
-
- ODM_CmnInfoPtrArrayHook(pDM_Odm, ODM_CMNINFO_STA_STATUS,i,NULL);
- }
- }
- void
- rtl8812_InitHalDm(
- IN PADAPTER Adapter
- )
- {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- u8 i;
- #ifdef CONFIG_USB_HCI
- dm_InitGPIOSetting(Adapter);
- #endif
- pdmpriv->DM_Type = DM_Type_ByDriver;
- pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE;
-
- Update_ODM_ComInfo_8812(Adapter);
- ODM_DMInit(pDM_Odm);
- Adapter->fix_rate = 0xFF;
- }
- VOID
- rtl8812_HalDmWatchDog(
- IN PADAPTER Adapter
- )
- {
- BOOLEAN bFwCurrentInPSMode = _FALSE;
- BOOLEAN bFwPSAwake = _TRUE;
- u8 hw_init_completed = _FALSE;
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- PDM_ODM_T pDM_Odm = &(pHalData->odmpriv);
- #ifdef CONFIG_CONCURRENT_MODE
- PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter;
- #endif
- _func_enter_;
- hw_init_completed = Adapter->hw_init_completed;
- if (hw_init_completed == _FALSE)
- goto skip_dm;
- #ifdef CONFIG_LPS
- #ifdef CONFIG_CONCURRENT_MODE
- if (Adapter->iface_type != IFACE_PORT0 && pbuddy_adapter) {
- bFwCurrentInPSMode = pbuddy_adapter->pwrctrlpriv.bFwCurrentInPSMode;
- rtw_hal_get_hwreg(pbuddy_adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake));
- } else
- #endif
- {
- bFwCurrentInPSMode = Adapter->pwrctrlpriv.bFwCurrentInPSMode;
- rtw_hal_get_hwreg(Adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake));
- }
- #endif
- #ifdef CONFIG_P2P_PS
-
-
- if(Adapter->wdinfo.p2p_ps_mode)
- bFwPSAwake = _FALSE;
- #endif
- if( (hw_init_completed == _TRUE)
- && ((!bFwCurrentInPSMode) && bFwPSAwake))
- {
-
-
-
- dm_CheckStatistics(Adapter);
-
-
-
-
-
- #ifdef CONFIG_PCI_HCI
-
-
-
-
-
- #endif
-
- }
-
- if (hw_init_completed == _TRUE)
- {
- u8 bLinked=_FALSE;
- #ifdef CONFIG_DISABLE_ODM
- pHalData->odmpriv.SupportAbility = 0;
- #endif
- if(rtw_linked_check(Adapter))
- bLinked = _TRUE;
- #ifdef CONFIG_CONCURRENT_MODE
- if(pbuddy_adapter && rtw_linked_check(pbuddy_adapter))
- bLinked = _TRUE;
- #endif
- ODM_CmnInfoUpdate(&pHalData->odmpriv ,ODM_CMNINFO_LINK, bLinked);
- ODM_DMWatchdog(&pHalData->odmpriv);
-
- }
- skip_dm:
-
-
- #ifdef CONFIG_PCI_HCI
- if(pHalData->bGpioHwWpsPbc)
- #endif
- {
-
- dm_CheckPbcGPIO(Adapter);
- }
- return;
- }
- void rtl8812_init_dm_priv(IN PADAPTER Adapter)
- {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- PDM_ODM_T podmpriv = &pHalData->odmpriv;
- _rtw_memset(pdmpriv, 0, sizeof(struct dm_priv));
-
- Init_ODM_ComInfo_8812(Adapter);
- #ifdef CONFIG_SW_ANTENNA_DIVERSITY
-
- ODM_InitAllTimers(podmpriv );
- #endif
- ODM_InitDebugSetting(podmpriv);
- Adapter->registrypriv.RegEnableTxPowerLimit = 0;
- Adapter->registrypriv.RegPowerBase = 14;
- Adapter->registrypriv.RegTxPwrLimit = 0xFFFFFFFF;
- Adapter->registrypriv.TxBBSwing_2G = 0xFF;
- Adapter->registrypriv.TxBBSwing_5G = 0xFF;
- Adapter->registrypriv.bEn_RFE = 0;
- Adapter->registrypriv.RFE_Type = 64;
- pHalData->RegRFPathS1 = 0;
- pHalData->TxPwrInPercentage = TX_PWR_PERCENTAGE_3;
- }
- void rtl8812_deinit_dm_priv(IN PADAPTER Adapter)
- {
- PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter);
- struct dm_priv *pdmpriv = &pHalData->dmpriv;
- PDM_ODM_T podmpriv = &pHalData->odmpriv;
-
- #ifdef CONFIG_SW_ANTENNA_DIVERSITY
-
- ODM_CancelAllTimers(podmpriv);
- #endif
- }
- #ifdef CONFIG_ANTENNA_DIVERSITY
- void AntDivCompare8812(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src)
- {
-
-
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- if(0 != pHalData->AntDivCfg )
- {
-
-
-
- if(dst->Rssi >= src->Rssi )
- {
- src->Rssi = dst->Rssi;
- src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna;
- }
- }
- }
- u8 AntDivBeforeLink8812(PADAPTER Adapter )
- {
-
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- PDM_ODM_T pDM_Odm =&pHalData->odmpriv;
- SWAT_T *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
-
-
- if(pHalData->AntDivCfg==0)
- {
-
- return _FALSE;
- }
- if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)
- {
- return _FALSE;
- }
- if(pDM_SWAT_Table->SWAS_NoLink_State == 0){
-
- pDM_SWAT_Table->SWAS_NoLink_State = 1;
- pDM_SWAT_Table->CurAntenna = (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?AUX_ANT:MAIN_ANT;
-
- rtw_antenna_select_cmd(Adapter, pDM_SWAT_Table->CurAntenna, _FALSE);
-
- return _TRUE;
- }
- else
- {
- pDM_SWAT_Table->SWAS_NoLink_State = 0;
- return _FALSE;
- }
- }
- #endif
|