Example #1
0
void rtl8723a_set_ampdu_factor(struct rtw_adapter *padapter, u8 FactorToSet)
{
	u8 RegToSet_Normal[4] = { 0x41, 0xa8, 0x72, 0xb9 };
	u8 MaxAggNum;
	u8 *pRegToSet;
	u8 index = 0;

	pRegToSet = RegToSet_Normal;	/*  0xb972a841; */

	if (rtl8723a_BT_enabled(padapter) &&
	    rtl8723a_BT_using_antenna_1(padapter))
		MaxAggNum = 0x8;
	else
		MaxAggNum = 0xF;

	if (FactorToSet <= 3) {
		FactorToSet = 1 << (FactorToSet + 2);
		if (FactorToSet > MaxAggNum)
			FactorToSet = MaxAggNum;

		for (index = 0; index < 4; index++) {
			if ((pRegToSet[index] & 0xf0) > (FactorToSet << 4))
				pRegToSet[index] = (pRegToSet[index] & 0x0f) |
					(FactorToSet << 4);

			if ((pRegToSet[index] & 0x0f) > FactorToSet)
				pRegToSet[index] = (pRegToSet[index] & 0xf0) |
					FactorToSet;

			rtl8723au_write8(padapter, REG_AGGLEN_LMT + index,
					 pRegToSet[index]);
		}
	}
}
Example #2
0
void rtw_set_ps_mode23a(struct rtw_adapter *padapter, u8 ps_mode,
			u8 smart_ps, u8 bcn_ant_mode)
{
	struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;

	RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_,
			 ("%s: PowerMode =%d Smart_PS =%d\n",
			  __func__, ps_mode, smart_ps));

	if (ps_mode > PM_Card_Disable) {
		RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_,
			 ("ps_mode:%d error\n", ps_mode));
		return;
	}

	if (pwrpriv->pwr_mode == ps_mode) {
		if (PS_MODE_ACTIVE == ps_mode)
			return;

		if (pwrpriv->smart_ps == smart_ps &&
		    pwrpriv->bcn_ant_mode == bcn_ant_mode)
			return;
	}

	if (ps_mode == PS_MODE_ACTIVE) {
		DBG_8723A("rtw_set_ps_mode23a: Leave 802.11 power save\n");

		pwrpriv->pwr_mode = ps_mode;
		rtw_set_rpwm23a(padapter, PS_STATE_S4);
		rtl8723a_set_FwPwrMode_cmd(padapter, ps_mode);
		pwrpriv->bFwCurrentInPSMode = false;
	} else {
		if (PS_RDY_CHECK(padapter) ||
		    rtl8723a_BT_using_antenna_1(padapter)) {
			DBG_8723A("%s: Enter 802.11 power save\n", __func__);

			pwrpriv->bFwCurrentInPSMode = true;
			pwrpriv->pwr_mode = ps_mode;
			pwrpriv->smart_ps = smart_ps;
			pwrpriv->bcn_ant_mode = bcn_ant_mode;
			rtl8723a_set_FwPwrMode_cmd(padapter, ps_mode);

			rtw_set_rpwm23a(padapter, PS_STATE_S2);
		}
	}
}