void odm_RefreshRateAdaptiveMask(struct _rtw_dm *pDM_Odm) { u8 i; struct rtl_priv *rtlpriv = pDM_Odm->rtlpriv; struct rate_adaptive *p_ra = &(rtlpriv->ra); PODM_RATE_ADAPTIVE pRA = &pDM_Odm->RateAdaptive; if (rtlpriv->bDriverStopped) { RT_TRACE(rtlpriv, COMP_RATE, DBG_TRACE, "<---- odm_RefreshRateAdaptiveMask(): driver is going to unload\n"); return; } /* printk("==> %s \n",__FUNCTION__); */ for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { struct sta_info *pstat = pDM_Odm->pODM_StaInfo[i]; if (IS_STA_VALID(pstat)) { if (pstat->rssi_stat.UndecoratedSmoothedPWDB < p_ra->ldpc_thres) { p_ra->use_ldpc = TRUE; pRA->bLowerRtsRate = TRUE; Set_RA_LDPC_8812(pstat, TRUE); /* DbgPrint("RSSI=%d, bUseLdpc = TRUE\n", pHalData->UndecoratedSmoothedPWDB); */ } else if (pstat->rssi_stat.UndecoratedSmoothedPWDB > (p_ra->ldpc_thres-5)) { p_ra->use_ldpc = FALSE; pRA->bLowerRtsRate = FALSE; Set_RA_LDPC_8812(pstat, FALSE); /* DbgPrint("RSSI=%d, bUseLdpc = FALSE\n", pHalData->UndecoratedSmoothedPWDB); */ } if (TRUE == ODM_RAStateCheck(rtlpriv, pstat->rssi_stat.UndecoratedSmoothedPWDB, FALSE , &pstat->rssi_level)) { RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, "RSSI:%d, RSSI_LEVEL:%d\n", pstat->rssi_stat.UndecoratedSmoothedPWDB, pstat->rssi_level); /* printk("RSSI:%d, RSSI_LEVEL:%d\n", pstat->rssi_stat.UndecoratedSmoothedPWDB, pstat->rssi_level); */ rtw_hal_update_ra_mask(pstat->rtlpriv, pstat, pstat->rssi_level); } } } }
void odm_RefreshRateAdaptiveMask(struct rtl_priv *rtlpriv) { struct rate_adaptive *p_ra = &(rtlpriv->ra); struct rtl_dm *rtldm = rtl_dm(rtlpriv); u8 i; struct _rtw_hal *pHalData = GET_HAL_DATA(rtlpriv); struct _rtw_dm * pDM_Odm = &(pHalData->odmpriv); if (rtlpriv->bDriverStopped) { RT_TRACE(rtlpriv, COMP_RATE, DBG_TRACE, "<---- odm_RefreshRateAdaptiveMask(): driver is going to unload\n"); return; } /* printk("==> %s \n",__FUNCTION__); */ for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { struct sta_info *pstat = rtldm->pODM_StaInfo[i]; if (IS_STA_VALID(pstat)) { if (pstat->rssi_stat.UndecoratedSmoothedPWDB < p_ra->ldpc_thres) { p_ra->use_ldpc = true; Set_RA_LDPC_8812(pstat, true); /* DbgPrint("RSSI=%d, bUseLdpc = true\n", pHalData->UndecoratedSmoothedPWDB); */ } else if (pstat->rssi_stat.UndecoratedSmoothedPWDB > (p_ra->ldpc_thres-5)) { p_ra->use_ldpc = false; Set_RA_LDPC_8812(pstat, false); /* DbgPrint("RSSI=%d, bUseLdpc = false\n", pHalData->UndecoratedSmoothedPWDB); */ } if (true == ODM_RAStateCheck(rtlpriv, pstat->rssi_stat.UndecoratedSmoothedPWDB, false , &pstat->rssi_level)) { RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, "RSSI:%d, RSSI_LEVEL:%d\n", pstat->rssi_stat.UndecoratedSmoothedPWDB, pstat->rssi_level); /* printk("RSSI:%d, RSSI_LEVEL:%d\n", pstat->rssi_stat.UndecoratedSmoothedPWDB, pstat->rssi_level); */ rtw_hal_update_ra_mask(pstat->rtlpriv, pstat, pstat->rssi_level); } } } }