Пример #1
0
/*  Add new function to reset the state of antenna diversity before link. */
u8 AntDivBeforeLink8188E(struct adapter *Adapter)
{
    struct hal_data_8188e *hal_data = GET_HAL_DATA(Adapter);
    struct odm_dm_struct *dm_odm = &hal_data->odmpriv;
    struct sw_ant_switch *dm_swat_tbl = &dm_odm->DM_SWAT_Table;
    struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);

    /*  Condition that does not need to use antenna diversity. */
    if (hal_data->AntDivCfg == 0)
        return false;

    if (check_fwstate(pmlmepriv, _FW_LINKED))
        return false;

    if (dm_swat_tbl->SWAS_NoLink_State == 0) {
        /* switch channel */
        dm_swat_tbl->SWAS_NoLink_State = 1;
        dm_swat_tbl->CurAntenna = (dm_swat_tbl->CurAntenna == Antenna_A) ? Antenna_B : Antenna_A;

        rtw_antenna_select_cmd(Adapter, dm_swat_tbl->CurAntenna, false);
        return true;
    } else {
        dm_swat_tbl->SWAS_NoLink_State = 0;
        return false;
    }
}
// Add new function to reset the state of antenna diversity before link.
u8 AntDivBeforeLink8812(PADAPTER Adapter )
{
	
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(Adapter);	
	PDM_ODM_T 	pDM_Odm =&pHalData->odmpriv;
	SWAT_T		*pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
	struct mlme_priv	*pmlmepriv = &(Adapter->mlmepriv);
	
	// Condition that does not need to use antenna diversity.
	if(pHalData->AntDivCfg==0)
	{
		//DBG_8192C("odm_AntDivBeforeLink8192C(): No AntDiv Mechanism.\n");
		return _FALSE;
	}

	if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)	
	{		
		return _FALSE;
	}


	if(pDM_SWAT_Table->SWAS_NoLink_State == 0){
		//switch channel
		pDM_SWAT_Table->SWAS_NoLink_State = 1;
		pDM_SWAT_Table->CurAntenna = (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?AUX_ANT:MAIN_ANT;

		//PHY_SetBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300, pDM_SWAT_Table->CurAntenna);
		rtw_antenna_select_cmd(Adapter, pDM_SWAT_Table->CurAntenna, _FALSE);
		//DBG_8192C("%s change antenna to ANT_( %s ).....\n",__FUNCTION__, (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?"MAIN":"AUX");
		return _TRUE;
	}
	else
	{
		pDM_SWAT_Table->SWAS_NoLink_State = 0;
		return _FALSE;
	}	

}