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_RefreshRateAdaptiveMaskCE( IN PVOID pDM_VOID ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i; PADAPTER pAdapter = pDM_Odm->Adapter; PODM_RATE_ADAPTIVE pRA = &pDM_Odm->RateAdaptive; if(pAdapter->bDriverStopped) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_TRACE, ("<---- odm_RefreshRateAdaptiveMask(): driver is going to unload\n")); return; } if(!pDM_Odm->bUseRAMask) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_LOUD, ("<---- odm_RefreshRateAdaptiveMask(): driver does not control rate adaptive mask\n")); return; } for(i=0; i<ODM_ASSOCIATE_ENTRY_NUM; i++){ PSTA_INFO_T pstat = pDM_Odm->pODM_StaInfo[i]; if(IS_STA_VALID(pstat) ) { if(IS_MCAST( pstat->hwaddr)) //if(psta->mac_id ==1) continue; if(IS_MCAST( pstat->hwaddr)) continue; if( TRUE == ODM_RAStateCheck(pDM_Odm, pstat->rssi_stat.UndecoratedSmoothedPWDB, FALSE , &pstat->rssi_level) ) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_LOUD, ("RSSI:%d, RSSI_LEVEL:%d\n", pstat->rssi_stat.UndecoratedSmoothedPWDB, pstat->rssi_level)); rtw_hal_update_ra_mask(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); } } } }