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

📄 rt_ate.c

📁 ralink最新rt3070 usb wifi 无线网卡驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		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 back to driver.			//			RTUSB_UNLINK_URB(pRxContext->pUrb);			/* Sleep 200 microsecs to give cancellation time to work. */			NdisMSleep(200);			pAd->BulkInReq = 0;//			InterlockedExchange(&pAd->PendingRx, 0);			pAd->PendingRx = 0;			pAd->NextRxBulkInReadIndex = 0;	// Next Rx Read index			pAd->NextRxBulkInIndex		= RX_RING_SIZE - 1;	// Rx Bulk pointer			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 // RT2870 //INT	Set_ATE_Proc(	IN	PRTMP_ADAPTER	pAd, 	IN	PUCHAR			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	PUCHAR			arg){	CHAR				*value;	INT					i;		if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17		return FALSE;    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) 			return FALSE;  //Invalid#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr3[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	if(i != 6)		return FALSE;  //Invalid#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	PUCHAR			arg){	CHAR				*value;	INT					i;		if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17		return FALSE;    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) 			return FALSE;  //Invalid#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr2[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	if(i != 6)		return FALSE;  //Invalid#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	PUCHAR			arg){	CHAR				*value;	INT					i;		if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17		return FALSE;    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 	{		if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) 			return FALSE;  //Invalid#ifdef CONFIG_STA_SUPPORT		AtoH(value, &pAd->ate.Addr1[i++], 1);#endif // CONFIG_STA_SUPPORT //	}	if(i != 6)		return FALSE;  //Invalid#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	PUCHAR			arg){	UCHAR channel;	channel = simple_strtol(arg, 0, 10);	if ((channel < 1) || (channel > 216))// to allow A band channel : ((channel < 1) || (channel > 14))	{		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	PUCHAR			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.5GHz	{		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	PUCHAR			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	PUCHAR			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"));		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	PUCHAR			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"));		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	PUCHAR			arg){	UCHAR RFFreqOffset;	ULONG R4;		RFFreqOffset = simple_strtol(arg, 0, 10);#ifndef RT30xx	if(RFFreqOffset >= 64)#endif // RT30xx //#ifdef RT30xx//2008/08/06: KH modified the limit of offset value from 65 to 95(0x5F)	if(RFFreqOffset >= 95)#endif // RT30xx //	{		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;#ifdef RT30xx	if(IS_RT30xx(pAd))	{		// Set RF offset		UCHAR RFValue;		RT30xxReadRFRegister(pAd, RF_R23, (PUCHAR)&RFValue);				//2008/08/06: KH modified "pAd->RFFreqOffset" to "pAd->ate.RFFreqOffset"				RFValue = (RFValue & 0x80) | pAd->ate.RFFreqOffset;		RT30xxWriteRFRegister(pAd, RF_R23, (UCHAR)RFValue);	}	else#endif // RT30xx //	{				R4 = pAd->ate.RFFreqOffset << 15;		// shift TX power control to correct RF register bit position		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	PUCHAR			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; 	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		{			for (i=0; i<5; i++)			{				if (pAd->Tx20MPwrCfgABand[i] != 0xffffffff) 			{					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx20MPwrCfgABand[i]);	 				RTMPusecDelay(5000);				 			} 		}		} 

⌨️ 快捷键说明

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