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

📄 rt_ate.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);		// Clean bit4 to stop continuous Tx production test.		MacData &= 0xFFFFFFEF;	   	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);		pAd->ate.Mode |= ATE_RXFRAME;		// Abort Tx, RX DMA.		RtmpDmaEnable(pAd, 0);		// Disable TX of MAC block		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);		Value &= ~(1 << 2);		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);        // Reset Rx RING.		for ( i = 0; i < (RX_RING_SIZE); i++)		{			PRX_CONTEXT  pRxContext = &(pAd->RxContext[i]);			pRxContext->InUse = FALSE;			pRxContext->IRPPending = FALSE;			pRxContext->Readable = FALSE;			/* Get the URB from kernel(i.e., host control driver) back to driver. */			RTUSB_UNLINK_URB(pRxContext->pUrb);			/* Sleep 200 microsecs to give cancellation time to work. */			RTMPusecDelay(200);			pAd->BulkInReq = 0;//			InterlockedExchange(&pAd->PendingRx, 0);			pAd->PendingRx = 0;			// Next Rx Read index			pAd->NextRxBulkInReadIndex = 0;			// Rx Bulk pointer			pAd->NextRxBulkInIndex		= RX_RING_SIZE - 1;				pAd->NextRxBulkInPosition = 0;					}		// read to clear counters		RTUSBReadMACRegister(pAd, RX_STA_CNT0, &temp); // RX PHY & RX CRC count		RTUSBReadMACRegister(pAd, RX_STA_CNT1, &temp); // RX PLCP error count & CCA false alarm count		RTUSBReadMACRegister(pAd, RX_STA_CNT2, &temp); // RX FIFO overflow frame count & RX duplicated filtered frame count		pAd->ContinBulkIn = TRUE;		// Enable Tx, RX DMA.		RtmpDmaEnable(pAd, 1);		// Enable RX of MAC block		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);		Value |= (1 << 3);		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);		// Kick bulk in		RTUSBBulkReceive(pAd);	}	else	{			ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE: Invalid arg!\n"));		return FALSE;	}	RTMPusecDelay(5000);	ATEDBGPRINT(RT_DEBUG_TRACE, ("<=== ATECmdHandler()\n"));	return TRUE;}#endif // RTMP_MAC_USB //INT	Set_ATE_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	if (ATECmdHandler(pAd, arg))	{		ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_Proc Success\n"));		return TRUE;	}	else	{		ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_Proc Failed\n"));		return FALSE;	}}/* ==========================================================================    Description:        Set ATE ADDR1=DA for TxFrame(AP  : To DS = 0 ; From DS = 1)        or        Set ATE ADDR3=DA for TxFrame(STA : To DS = 1 ; From DS = 0)                    Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_DA_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	PSTRING				value;	INT					i;	// Mac address acceptable format 01:02:03:04:05:06 length 17		if (strlen(arg) != 17)  		return FALSE;    for (i = 0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		/* sanity check */		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))		{			return FALSE;  		}#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr3[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	/* sanity check */	if (i != 6)	{		return FALSE;  	}#ifdef CONFIG_STA_SUPPORT	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_DA_Proc (DA = %2X:%2X:%2X:%2X:%2X:%2X)\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]));#endif // CONFIG_STA_SUPPORT //	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_DA_Proc Success\n"));		return TRUE;}/* ==========================================================================    Description:        Set ATE ADDR3=SA for TxFrame(AP  : To DS = 0 ; From DS = 1)        or        Set ATE ADDR2=SA for TxFrame(STA : To DS = 1 ; From DS = 0)            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_SA_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	PSTRING				value;	INT					i;	// Mac address acceptable format 01:02:03:04:05:06 length 17		if (strlen(arg) != 17)  		return FALSE;    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		/* sanity check */		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))		{			return FALSE;  		}#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr2[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	/* sanity check */	if (i != 6)	{		return FALSE;	}#ifdef CONFIG_STA_SUPPORT	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_SA_Proc (SA = %2X:%2X:%2X:%2X:%2X:%2X)\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]));#endif // CONFIG_STA_SUPPORT //	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_SA_Proc Success\n"));	return TRUE;}/* ==========================================================================    Description:        Set ATE ADDR2=BSSID for TxFrame(AP  : To DS = 0 ; From DS = 1)        or        Set ATE ADDR1=BSSID for TxFrame(STA : To DS = 1 ; From DS = 0)    Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_BSSID_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	PSTRING				value;	INT					i;	// Mac address acceptable format 01:02:03:04:05:06 length 17		if (strlen(arg) != 17)  		return FALSE;    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		/* sanity check */		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))		{			return FALSE;  		}#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr1[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	/* sanity check */	if(i != 6)	{		return FALSE;	}#ifdef CONFIG_STA_SUPPORT	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_BSSID_Proc (BSSID = %2X:%2X:%2X:%2X:%2X:%2X)\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]));#endif // CONFIG_STA_SUPPORT //	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_BSSID_Proc Success\n"));	return TRUE;}/* ==========================================================================    Description:        Set ATE Tx Channel    Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_CHANNEL_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	UCHAR channel;	channel = simple_strtol(arg, 0, 10);	// to allow A band channel : ((channel < 1) || (channel > 14))	if ((channel < 1) || (channel > 216))	{		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_CHANNEL_Proc::Out of range, it should be in range of 1~14.\n"));		return FALSE;	}	pAd->ate.Channel = channel;	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_CHANNEL_Proc (ATE Channel = %d)\n", pAd->ate.Channel));	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_CHANNEL_Proc Success\n"));		return TRUE;}/* ==========================================================================    Description:        Set ATE Tx Power0            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_TX_POWER0_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PSTRING			arg){	CHAR TxPower;		TxPower = simple_strtol(arg, 0, 10);	if (pAd->ate.Channel <= 14)	{		if ((TxPower > 31) || (TxPower < 0))		{			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER0_Proc::Out of range (Value=%d)\n", TxPower));			return FALSE;		}	}	else/* 5.5 GHz */	{		if ((TxPower > 15) || (TxPower < -7))		{			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER0_Proc::Out of range (Value=%d)\n", TxPower));			return FALSE;		}	}	pAd->ate.TxPower0 = TxPower;	ATETxPwrHandler(pAd, 0);	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_POWER0_Proc Success\n"));		return TRUE;}/* ==========================================================================    Description:        Set ATE Tx Power1            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_TX_POWER1_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PSTRING			arg){	CHAR TxPower;		TxPower = simple_strtol(arg, 0, 10);	if (pAd->ate.Channel <= 14)	{		if ((TxPower > 31) || (TxPower < 0))		{			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER1_Proc::Out of range (Value=%d)\n", TxPower));			return FALSE;		}	}	else	{		if ((TxPower > 15) || (TxPower < -7))		{			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER1_Proc::Out of range (Value=%d)\n", TxPower));			return FALSE;		}	}	pAd->ate.TxPower1 = TxPower;	ATETxPwrHandler(pAd, 1);	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_POWER1_Proc Success\n"));		return TRUE;}/* ==========================================================================    Description:        Set ATE Tx Antenna            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_TX_Antenna_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PSTRING			arg){	CHAR value;		value = simple_strtol(arg, 0, 10);	if ((value > 2) || (value < 0))	{		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_Antenna_Proc::Out of range (Value=%d)\n", value));		return FALSE;	}	pAd->ate.TxAntennaSel = value;	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_Antenna_Proc (Antenna = %d)\n", pAd->ate.TxAntennaSel));	ATEDBGPRINT(RT_DEBUG_TRACE,("Ralink: Set_ATE_TX_Antenna_Proc Success\n"));	// calibration power unbalance issues, merged from Arch Team	ATEAsicSwitchChannel(pAd);		return TRUE;}/* ==========================================================================    Description:        Set ATE Rx Antenna            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_RX_Antenna_Proc(	IN	PRTMP_ADAPTER	pAd,	IN	PSTRING			arg){	CHAR value;		value = simple_strtol(arg, 0, 10);	if ((value > 3) || (value < 0))	{		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_RX_Antenna_Proc::Out of range (Value=%d)\n", value));		return FALSE;	}	pAd->ate.RxAntennaSel = value;	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_RX_Antenna_Proc (Antenna = %d)\n", pAd->ate.RxAntennaSel));	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_RX_Antenna_Proc Success\n"));	// calibration power unbalance issues, merged from Arch Team	ATEAsicSwitchChannel(pAd);		return TRUE;}/* ==========================================================================    Description:        Set ATE RF frequence offset            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_TX_FREQOFFSET_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	UCHAR RFFreqOffset = 0;	ULONG R4 = 0;		RFFreqOffset = simple_strtol(arg, 0, 10);	if (RFFreqOffset >= 64)	{		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_FREQOFFSET_Proc::Out of range, it should be in range of 0~63.\n"));		return FALSE;	}	pAd->ate.RFFreqOffset = RFFreqOffset;	{		// RT28xx		// shift TX power control to correct RF register bit position		R4 = pAd->ate.RFFreqOffset << 15;				R4 |= (pAd->LatchRfRegs.R4 & ((~0x001f8000)));		pAd->LatchRfRegs.R4 = R4;				RtmpRfIoWrite(pAd);	}	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_FREQOFFSET_Proc (RFFreqOffset = %d)\n", pAd->ate.RFFreqOffset));	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_FREQOFFSET_Proc Success\n"));		return TRUE;}/* ==========================================================================    Description:        Set ATE RF BW            Return:        TRUE if all parameters are OK, FALSE otherwise==========================================================================*/INT	Set_ATE_TX_BW_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg){	INT i;	UCHAR value = 0;	UCHAR BBPCurrentBW;		BBPCurrentBW = simple_strtol(arg, 0, 10);	if ((BBPCurrentBW == 0)		)	{		pAd->ate.TxWI.BW = BW_20;	}	else	{		pAd->ate.TxWI.BW = BW_40; 	}	/* RT35xx ATE will reuse this code segment. */	// Fix the error spectrum of CCK-40MHZ	// Turn on BBP 20MHz mode by request here.	if ((pAd->ate.TxWI.PHYMODE == MODE_CCK) && (pAd->ate.TxWI.BW == BW_40))	{		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_BW_Proc!! Warning!! CCK only supports 20MHZ!!\nBandwidth switch to 20\n"));		pAd->ate.TxWI.BW = BW_20;	}	if (pAd->ate.TxWI.BW == BW_20)	{		if (pAd->ate.Channel <= 14)		{ 			for (i=0; i<5; i++) 			{				if (pAd->Tx20MPwrCfgGBand[i] != 0xffffffff)				{					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx20MPwrCfgGBand[i]);						RTMPusecDelay(5000);								}			}		}		else		{

⌨️ 快捷键说明

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