Exemple #1
0
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;
}
Exemple #2
0
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;
}