⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt_ate.c.bak

📁 Linux下的RT系列无线网卡驱动,可以直接在x86平台上编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);		//Set BBP R69=0x16		value = 0x16; 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, value);		//Set BBP R70=0x08		value = 0x08; 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, value);		//Set BBP R73=0x11		value = 0x11; 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, value);	    // If Channel=14, Bandwidth=20M and Mode=CCK, Set BBP R4 bit5=1	    // (Japan filter coefficients)	    // This segment of code will only works when ATETXMODE and ATECHANNEL	    // were set to MODE_CCK and 14 respectively before ATETXBW is set to 0.	    //=====================================================================		if (pAd->ate.Channel == 14)		{			int TxMode = pAd->ate.TxWI.PHYMODE;			if (TxMode == MODE_CCK)			{				// when Channel==14 && Mode==CCK && BandWidth==20M, BBP R4 bit5=1 				ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &value);				value |= 0x20; //set bit5=1 				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, value);							}		}	    //=====================================================================		// if bandwidth != 40M, RF Reg4 bit 21 = 0		pAd->LatchRfRegs.R4 &= ~0x00200000;		RtmpRfIoWrite(pAd);	}	else if(pAd->ate.TxWI.BW == BW_40)	{		if(pAd->ate.Channel <= 14)		{			for (i=0; i<5; i++)			{				if (pAd->Tx40MPwrCfgGBand[i] != 0xffffffff)				{					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx40MPwrCfgGBand[i]);						RTMPusecDelay(5000);								}			}		}		else		{			for (i=0; i<5; i++)			{				if (pAd->Tx40MPwrCfgABand[i] != 0xffffffff)				{					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx40MPwrCfgABand[i]);						RTMPusecDelay(5000);								}			}				}		//Set BBP R4 bit[4:3]=1:0		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &value);		value &= (~0x18);		value |= 0x10;		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, value);		//Set BBP R66=0x3C		value = 0x3C;		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);		//Set BBP R69=0x1A		value = 0x1A;		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, value);		//Set BBP R70=0x0A		value = 0x0A;		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, value);		//Set BBP R73=0x16		value = 0x16;		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, value);		// if bandwidth = 40M, RF Reg4 bit 21 = 1		pAd->LatchRfRegs.R4 |= 0x00200000;		RtmpRfIoWrite(pAd);	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_BW_Proc (BBPCurrentBW = %d)\n", pAd->ate.TxWI.BW));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_BW_Proc Success\n"));		return TRUE;}/*     ==========================================================================    Description:        Set ATE Tx frame length            Return:        TRUE if all parameters are OK, FALSE otherwise    ==========================================================================*/INT	Set_ATE_TX_LENGTH_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	pAd->ate.TxLength = simple_strtol(arg, 0, 10);	if((pAd->ate.TxLength < 24) || (pAd->ate.TxLength > 1500))	{		pAd->ate.TxLength = 1500;		DBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_LENGTH_Proc::Out of range, it should be in range of 24~1500.\n"));		return FALSE;	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_LENGTH_Proc (TxLength = %ld)\n", pAd->ate.TxLength));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_LENGTH_Proc Success\n"));		return TRUE;}/*     ==========================================================================    Description:        Set ATE Tx frame count            Return:        TRUE if all parameters are OK, FALSE otherwise    ==========================================================================*/INT	Set_ATE_TX_COUNT_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	pAd->ate.TxCount = simple_strtol(arg, 0, 10);	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_COUNT_Proc (TxCount = %ld)\n", pAd->ate.TxCount));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_COUNT_Proc Success\n"));		return TRUE;}/*     ==========================================================================    Description:        Set ATE Tx frame MCS                Return:        	TRUE if all parameters are OK, FALSE otherwise    ==========================================================================*/INT	Set_ATE_TX_MCS_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PUCHAR			arg){	UCHAR MCS;	int result;	MCS = simple_strtol(arg, 0, 10);	result = checkMCSValid(pAd->ate.TxWI.PHYMODE, MCS);	if (result != -1)	{		pAd->ate.TxWI.MCS = (UCHAR)MCS;	}	else	{		DBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_MCS_Proc::Out of range, refer to rate table.\n"));		return FALSE;	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_MCS_Proc (MCS = %d)\n", pAd->ate.TxWI.MCS));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_MCS_Proc Success\n"));		return TRUE;}/*     ==========================================================================    Description:        Set ATE Tx frame Mode        0: MODE_CCK        1: MODE_OFDM        2: MODE_HTMIX        3: MODE_HTGREENFIELD                Return:        	TRUE if all parameters are OK, FALSE otherwise    ==========================================================================*/INT	Set_ATE_TX_MODE_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PUCHAR			arg){	pAd->ate.TxWI.PHYMODE = simple_strtol(arg, 0, 10);	if(pAd->ate.TxWI.PHYMODE > 3)	{		pAd->ate.TxWI.PHYMODE = 0;		DBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_MODE_Proc::Out of range. it should be in range of 0~3\n"));		DBGPRINT(RT_DEBUG_ERROR, ("0: CCK, 1: OFDM, 2: HT_MIX, 3: HT_GREEN_FIELD.\n"));		return FALSE;	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_MODE_Proc (TxMode = %d)\n", pAd->ate.TxWI.PHYMODE));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_MODE_Proc Success\n"));		return TRUE;}/*     ==========================================================================    Description:        Set ATE Tx frame GI                Return:        	TRUE if all parameters are OK, FALSE otherwise    ==========================================================================*/INT	Set_ATE_TX_GI_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PUCHAR			arg){	pAd->ate.TxWI.ShortGI = simple_strtol(arg, 0, 10);	if(pAd->ate.TxWI.ShortGI > 1)	{		pAd->ate.TxWI.ShortGI = 0;		DBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_GI_Proc::Out of range\n"));		return FALSE;	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_GI_Proc (GI = %d)\n", pAd->ate.TxWI.ShortGI));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_GI_Proc Success\n"));		return TRUE;}/*    ==========================================================================    Description:    ========================================================================== */INT	Set_ATE_RX_FER_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	pAd->ate.bRxFer = simple_strtol(arg, 0, 10);	if (pAd->ate.bRxFer == 1)	{		pAd->ate.RxCntPerSec = 0;		pAd->ate.RxTotalCnt = 0;	}	DBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_RX_FER_Proc (bRxFer = %d)\n", pAd->ate.bRxFer));	DBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_RX_FER_Proc Success\n"));		return TRUE;}INT Set_ATE_Read_RF_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	printk("R1 = %lx\n", pAd->LatchRfRegs.R1);	printk("R2 = %lx\n", pAd->LatchRfRegs.R2);	printk("R3 = %lx\n", pAd->LatchRfRegs.R3);	printk("R4 = %lx\n", pAd->LatchRfRegs.R4);	return TRUE;}INT Set_ATE_Write_RF1_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	UINT32 value = simple_strtol(arg, 0, 16);	pAd->LatchRfRegs.R1 = value;	RtmpRfIoWrite(pAd);	return TRUE;}INT Set_ATE_Write_RF2_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	UINT32 value = simple_strtol(arg, 0, 16);	pAd->LatchRfRegs.R2 = value;	RtmpRfIoWrite(pAd);	return TRUE;}INT Set_ATE_Write_RF3_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	UINT32 value = simple_strtol(arg, 0, 16);	pAd->LatchRfRegs.R3 = value;	RtmpRfIoWrite(pAd);	return TRUE;}INT Set_ATE_Write_RF4_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	UINT32 value = simple_strtol(arg, 0, 16);	pAd->LatchRfRegs.R4 = value;	RtmpRfIoWrite(pAd);	return TRUE;}INT	Set_ATE_Show_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	printk("Mode=%d\n", pAd->ate.Mode);	printk("TxPower0=%d\n", pAd->ate.TxPower0);	printk("TxPower1=%d\n", pAd->ate.TxPower1);	printk("TxAntennaSel=%d\n", pAd->ate.TxAntennaSel);	printk("RxAntennaSel=%d\n", pAd->ate.RxAntennaSel);	printk("BBPCurrentBW=%d\n", pAd->ate.TxWI.BW);	printk("GI=%d\n", pAd->ate.TxWI.ShortGI);	printk("MCS=%d\n", pAd->ate.TxWI.MCS);	printk("TxMode=%d\n", pAd->ate.TxWI.PHYMODE);	printk("Addr1=%02x:%02x:%02x:%02x:%02x:%02x\n",		pAd->ate.Addr1[0], pAd->ate.Addr1[1], pAd->ate.Addr1[2], pAd->ate.Addr1[3], pAd->ate.Addr1[4], pAd->ate.Addr1[5]);	printk("Addr2=%02x:%02x:%02x:%02x:%02x:%02x\n",		pAd->ate.Addr2[0], pAd->ate.Addr2[1], pAd->ate.Addr2[2], pAd->ate.Addr2[3], pAd->ate.Addr2[4], pAd->ate.Addr2[5]);	printk("Addr3=%02x:%02x:%02x:%02x:%02x:%02x\n",		pAd->ate.Addr3[0], pAd->ate.Addr3[1], pAd->ate.Addr3[2], pAd->ate.Addr3[3], pAd->ate.Addr3[4], pAd->ate.Addr3[5]);	printk("Channel=%d\n", pAd->ate.Channel);	printk("TxLength=%ld\n", pAd->ate.TxLength);	printk("TxCount=%ld\n", pAd->ate.TxCount);	printk("RFFreqOffset=%ld\n", pAd->ate.RFFreqOffset);	printk(KERN_EMERG "Set_ATE_Show_Proc Success\n");	return TRUE;}INT	Set_ATE_Help_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			arg){	printk("ATE=ATESTART, ATESTOP, TXCONT, TXCARR, TXFRAME, RXFRAME\n");	printk("ATEDA\n");	printk("ATESA\n");	printk("ATEBSSID\n");	printk("ATECHANNEL, range:0~14\n");	printk("ATETXPOW0, set power level of antenna 1.\n");	printk("ATETXPOW1, set power level of antenna 2.\n");	printk("ATETXANT, set TX antenna. 0:all, 1:antenna one, 2:antenna two.\n");	printk("ATERXANT, set RX antenna.0:all, 1:antenna one, 2:antenna tow, 3:antenna three.\n");	printk("ATETXFREQOFFSET, set frequency offset, range 0~63\n");	printk("ATETXBW, set BandWidth, 0:20MHz, 1:40MHz.\n");	printk("ATETXLEN, set Frame length, range 24~1500\n");	printk("ATETXCNT, set how many frame going to transmit.\n");	printk("ATETXMCS, set MCS, reference to rate table.\n");	printk("ATETXMODE, set Mode 0:CCK, 1:OFDM, 2:HT-Mix, 3:GreenField, reference to rate table.\n");	printk("ATETXGI, set GI interval, 0:Long, 1:Short\n");	printk("ATERXFER, 0:disable Rx Frame error rate. 1:enable Rx Frame error rate.\n");	printk("ATERRF, show all RF registers.\n");	printk("ATEWRF1, set RF1 register.\n");	printk("ATEWRF2, set RF2 register.\n");	printk("ATEWRF3, set RF3 register.\n");	printk("ATEWRF4, set RF4 register.\n");	printk("ATESHOW, display all parameters of ATE.\n");	printk("ATEHELP, online help.\n");	return TRUE;}/*    ==========================================================================    Description:    ========================================================================== */VOID ATEAsicSwitchChannel(    IN PRTMP_ADAPTER pAd) {	ULONG R3 = DEFAULT_RF_TX_POWER, R4 = 0, R2, Value;	CHAR TxPwer, TxPwer2;	UCHAR index, BbpValue = 0;	RTMP_RF_REGS *RFRegTable;	UCHAR Channel = pAd->ate.Channel;#ifdef RALINK_2860_QA	if ((pAd->ate.bQATxStart == TRUE) || (pAd->ate.bQARxStart == TRUE))	{		if (pAd->ate.Channel != pAd->LatchRfRegs.Channel)					{			pAd->ate.Channel = pAd->LatchRfRegs.Channel;		}		return;	}	else#endif // RALINK_2860_QA //	// Select antenna	AsicAntennaSelect(pAd, Channel);	// fill Tx power value	TxPwer = pAd->ate.TxPower0;	TxPwer2 = pAd->ate.TxPower1;	RFRegTable = RF2850RegTable;	R3 = (ULONG) TxPwer;	R3 = R3 << 9; // shift TX power control to correct RF R3 bit position#if 1	switch (pAd->RfIcType)	{		case RFIC_2820:		case RFIC_2850:						for (index = 0; index < NUM_OF_2850_CHNL; index++)			{				if (Channel == RFRegTable[index].Channel)				{					R2 = RFRegTable[index].R2;					if (pAd->Antenna.field.TxPath == 2)					{						if (pAd->ate.TxAntennaSel == 1)						{							R2 |= 0x4000;	// If TX Antenna select is 1 , bit 14 = 1; Disable Ant 2							ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);							BbpValue &= 0xE7;		//11100111B							ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);						}						else if (pAd->ate.TxAntennaSel == 2)						{							R2 |= 0x8000;	// If TX Antenna select is 2 , bit 15 = 1; Disable Ant 1							ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);							BbpValue &= 0xE7;								BbpValue |= 0x08;							ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);						}						else						{							ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);							BbpValue &= 0xE7;							BbpValue |= 0x10;							ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);						}					}					if (pAd->Antenna.field.RxPath == 3)					{						switch (pAd->ate.RxAntennaSel)						{							case 1:								R2 |= 0x20040;								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);								BbpValue &= 0xE4;								BbpValue |= 0x00;								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);																break;							case 2:								R2 |= 0x10040;								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);								BbpValue &= 0xE4;								BbpValue |= 0x01;								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);																	break;							case 3:									R2 |= 0x30000;								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);								BbpValue &= 0xE4;								BbpValue |= 0x02;								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								break;															default:									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);								BbpValue &= 0xE4;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -