void rtw_ps_processor(struct rtl_priv *rtlpriv) { struct pwrctrl_priv *pwrpriv = &rtlpriv->pwrctrlpriv; struct mlme_priv *pmlmepriv = &(rtlpriv->mlmepriv); pwrpriv->ps_processing = _TRUE; if (pwrpriv->ips_mode_req == IPS_NONE ) goto exit; if (rtw_pwr_unassociated_idle(rtlpriv) == _FALSE) goto exit; if ((pwrpriv->rf_pwrstate == rf_on) && ((pwrpriv->pwr_state_check_cnts%4)==0)) { DBG_871X("==>%s .fw_state(%x)\n",__FUNCTION__,get_fwstate(pmlmepriv)); pwrpriv->change_rfpwrstate = rf_off; #ifdef CONFIG_AUTOSUSPEND if (rtlpriv->registrypriv.usbss_enable) { if(pwrpriv->bHWPwrPindetect) pwrpriv->bkeepfwalive = _TRUE; if(rtlpriv->net_closed == _TRUE) pwrpriv->ps_flag = _TRUE; rtlpriv->bCardDisableWOHSM = _TRUE; autosuspend_enter(rtlpriv); } else if(pwrpriv->bHWPwrPindetect) { } else #endif { rtw_ips_enter(rtlpriv); } } exit: rtw_set_pwr_state_check_timer(&rtlpriv->pwrctrlpriv); pwrpriv->ps_processing = _FALSE; return; }
void rtw_ps_processor(struct rtl_priv *rtlpriv) { struct pwrctrl_priv *pwrpriv = &rtlpriv->pwrctrlpriv; struct mlme_priv *pmlmepriv = &(rtlpriv->mlmepriv); pwrpriv->ps_processing = true; if (pwrpriv->ips_mode_req == IPS_NONE ) goto exit; if (rtw_pwr_unassociated_idle(rtlpriv) == false) goto exit; if ((pwrpriv->rf_pwrstate == ERFON) && ((pwrpriv->pwr_state_check_cnts%4)==0)) { RT_TRACE(rtlpriv, COMP_POWER, DBG_DMESG, "==>%s .fw_state(%x)\n",__FUNCTION__,get_fwstate(pmlmepriv)); pwrpriv->change_rfpwrstate = ERFOFF; #ifdef CONFIG_AUTOSUSPEND if (rtlpriv->registrypriv.usbss_enable) { if(pwrpriv->bHWPwrPindetect) pwrpriv->bkeepfwalive = true; if(rtlpriv->net_closed == true) pwrpriv->ps_flag = true; rtlpriv->bCardDisableWOHSM = true; autosuspend_enter(rtlpriv); } else if(pwrpriv->bHWPwrPindetect) { } else #endif { rtw_ips_enter(rtlpriv); } } exit: rtw_set_pwr_state_check_timer(&rtlpriv->pwrctrlpriv); pwrpriv->ps_processing = false; return; }