void rtl8723b_HalDmWatchDog_in_LPS(IN PADAPTER Adapter) { u8 bLinked =false; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; struct dm_priv *pdmpriv = &pHalData->dmpriv; PDM_ODM_T pDM_Odm = &pHalData->odmpriv; pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; struct sta_priv *pstapriv = &Adapter->stapriv; struct sta_info *psta = NULL; if (Adapter->hw_init_completed == false) goto skip_lps_dm; if (rtw_linked_check(Adapter)) bLinked = true; ODM_CmnInfoUpdate(&pHalData->odmpriv , ODM_CMNINFO_LINK, bLinked); if (bLinked == false) goto skip_lps_dm; if (!(pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR)) goto skip_lps_dm; /* ODM_DMWatchdog(&pHalData->odmpriv); */ /* Do DIG by RSSI In LPS-32K */ /* 1 Find MIN-RSSI */ psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); if (psta == NULL) goto skip_lps_dm; pdmpriv->EntryMinUndecoratedSmoothedPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; DBG_871X("CurIGValue =%d, EntryMinUndecoratedSmoothedPWDB = %d\n", pDM_DigTable->CurIGValue, pdmpriv->EntryMinUndecoratedSmoothedPWDB); if (pdmpriv->EntryMinUndecoratedSmoothedPWDB <=0) goto skip_lps_dm; pdmpriv->MinUndecoratedPWDBForDM = pdmpriv->EntryMinUndecoratedSmoothedPWDB; pDM_Odm->RSSI_Min = pdmpriv->MinUndecoratedPWDBForDM; /* if (pDM_DigTable->CurIGValue != pDM_Odm->RSSI_Min) */ if ((pDM_DigTable->CurIGValue > pDM_Odm->RSSI_Min + 5) || (pDM_DigTable->CurIGValue < pDM_Odm->RSSI_Min - 5)) { rtw_dm_in_lps_wk_cmd(Adapter); } skip_lps_dm: return; }
void rtl8723b_HalDmWatchDog_in_LPS(IN PADAPTER Adapter) { u8 bLinked=_FALSE; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; PDM_ODM_T pDM_Odm = &pHalData->odmpriv; pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; struct sta_priv *pstapriv = &Adapter->stapriv; struct sta_info *psta = NULL; #ifdef CONFIG_CONCURRENT_MODE PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter; #endif //CONFIG_CONCURRENT_MODE if (!rtw_is_hw_init_completed(Adapter)) goto skip_lps_dm; if(rtw_linked_check(Adapter)) bLinked = _TRUE; #ifdef CONFIG_CONCURRENT_MODE if (pbuddy_adapter && rtw_linked_check(pbuddy_adapter)) bLinked = _TRUE; #endif //CONFIG_CONCURRENT_MODE ODM_CmnInfoUpdate(&pHalData->odmpriv ,ODM_CMNINFO_LINK, bLinked); if(bLinked == _FALSE) goto skip_lps_dm; if (!(pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR)) goto skip_lps_dm; //ODM_DMWatchdog(&pHalData->odmpriv); //Do DIG by RSSI In LPS-32K //.1 Find MIN-RSSI psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); if(psta == NULL) goto skip_lps_dm; pHalData->EntryMinUndecoratedSmoothedPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; DBG_871X("CurIGValue=%d, EntryMinUndecoratedSmoothedPWDB = %d\n", pDM_DigTable->CurIGValue, pHalData->EntryMinUndecoratedSmoothedPWDB ); if(pHalData->EntryMinUndecoratedSmoothedPWDB <=0) goto skip_lps_dm; pHalData->MinUndecoratedPWDBForDM = pHalData->EntryMinUndecoratedSmoothedPWDB; pDM_Odm->RSSI_Min = pHalData->MinUndecoratedPWDBForDM; //if(pDM_DigTable->CurIGValue != pDM_Odm->RSSI_Min) if((pDM_DigTable->CurIGValue > pDM_Odm->RSSI_Min + 5) || (pDM_DigTable->CurIGValue < pDM_Odm->RSSI_Min - 5)) { rtw_dm_in_lps_wk_cmd(Adapter); } skip_lps_dm: return; }