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

📄 rt_ate.c

📁 ralink 2870 usb无线网卡 最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
/* ************************************************************************* * Ralink Tech Inc. * 5F., No.36, Taiyuan St., Jhubei City, * Hsinchu County 302, * Taiwan, R.O.C. * * (c) Copyright 2002-2007, Ralink Technology, Inc. * * This program is free software; you can redistribute it and/or modify  *  * it under the terms of the GNU General Public License as published by  *  * the Free Software Foundation; either version 2 of the License, or     *  * (at your option) any later version.                                   *  *                                                                       *  * This program is distributed in the hope that it will be useful,       *  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *  * GNU General Public License for more details.                          *  *                                                                       *  * You should have received a copy of the GNU General Public License     *  * along with this program; if not, write to the                         *  * Free Software Foundation, Inc.,                                       *  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *  *                                                                       *  ************************************************************************* */#include "rt_config.h"#ifdef RALINK_ATE#ifdef UCOSINT IoctlResponse(PUCHAR payload, PUCHAR msg, INT len);#endif // UCOS //// 802.11 MAC Header, Type:Data, Length:24bytesUCHAR TemplateFrame[24] = {0x08,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,		0x00,0xAA,0xBB,0x12,0x34,0x56,0x00,0x11,0x22,0xAA,0xBB,0xCC,0x00,0x00};	 extern RTMP_RF_REGS RF2850RegTable[];extern UCHAR NUM_OF_2850_CHNL;extern FREQUENCY_ITEM FreqItems3020[];extern UCHAR NUM_OF_3020_CHNL;#ifdef RTMP_MAC_USBextern UCHAR EpToQueue[];extern VOID RTUSBRejectPendingPackets(IN PRTMP_ADAPTER pAd);#endif // RTMP_MAC_USB //#ifdef UCOSextern INT ConsoleResponse(IN PUCHAR buff);extern int (*remote_display)(char *);#endif // UCOS //static CHAR CCKRateTable[] = {0, 1, 2, 3, 8, 9, 10, 11, -1}; /* CCK Mode. */static CHAR OFDMRateTable[] = {0, 1, 2, 3, 4, 5, 6, 7, -1}; /* OFDM Mode. */static CHAR HTMIXRateTable[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1}; /* HT Mix Mode. */static INT TxDmaBusy(	IN PRTMP_ADAPTER pAd);static INT RxDmaBusy(	IN PRTMP_ADAPTER pAd);static VOID RtmpDmaEnable(	IN PRTMP_ADAPTER pAd,	IN INT Enable);static VOID BbpSoftReset(	IN PRTMP_ADAPTER pAd);static VOID RtmpRfIoWrite(	IN PRTMP_ADAPTER pAd);static INT ATESetUpFrame(	IN PRTMP_ADAPTER pAd,	IN UINT32 TxIdx);static INT ATETxPwrHandler(	IN PRTMP_ADAPTER pAd,	IN char index);static INT ATECmdHandler(	IN	PRTMP_ADAPTER	pAd, 	IN	PSTRING			arg);static int CheckMCSValid(	IN UCHAR Mode,	IN UCHAR Mcs);#ifdef RTMP_MAC_USBstatic VOID ATEWriteTxInfo(	IN	PRTMP_ADAPTER	pAd,	IN	PTXINFO_STRUC 	pTxInfo,	IN	  USHORT		USBDMApktLen,	IN	  BOOLEAN		bWiv,	IN	  UCHAR			QueueSel,	IN	  UCHAR			NextValid,	IN	  UCHAR			TxBurst);static VOID ATEWriteTxWI(	IN	PRTMP_ADAPTER	pAd,	IN	PTXWI_STRUC 	pTxWI,	IN	BOOLEAN			FRAG,		IN	BOOLEAN			InsTimestamp,	IN	BOOLEAN 		AMPDU,	IN	BOOLEAN 		Ack,	IN	BOOLEAN 		NSeq,		// HW new a sequence.	IN	UCHAR			BASize,	IN	UCHAR			WCID,	IN	ULONG			Length,	IN	UCHAR 			PID,	IN	UCHAR			MIMOps,	IN	UCHAR			Txopmode,		IN	BOOLEAN			CfAck,		IN	HTTRANSMIT_SETTING	Transmit);#endif // RTMP_MAC_USB //static VOID SetJapanFilter(	IN	PRTMP_ADAPTER	pAd);#ifdef RALINK_28xx_QAstatic inline INT 	DO_RACFG_CMD_ATE_START(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_STOP(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_RF_WRITE_ALL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_E2PROM_READ16(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_E2PROM_WRITE16(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_E2PROM_READ_ALL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_E2PROM_WRITE_ALL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_IO_READ(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_IO_WRITE(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_IO_READ_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_BBP_READ8(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_BBP_WRITE8(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_BBP_READ_ALL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_GET_NOISE_LEVEL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_GET_COUNTER(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_CLEAR_COUNTER(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_TX_START(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_GET_TX_STATUS(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_TX_STOP(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_RX_START(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_RX_STOP(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_RX_STOP(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_START_TX_CARRIER(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_START_TX_CONT(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_START_TX_FRAME(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_BW(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_TX_POWER0(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_TX_POWER1(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_FREQ_OFFSET(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_GET_STATISTICS(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_RESET_COUNTER(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SEL_TX_ANTENNA(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);	static inline INT DO_RACFG_CMD_ATE_SEL_RX_ANTENNA(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_PREAMBLE(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_CHANNEL(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_ADDR1(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_ADDR2(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_ADDR3(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_RATE(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_TX_FRAME_LEN(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_SET_TX_FRAME_COUNT(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_START_RX_FRAME(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_E2PROM_READ_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_E2PROM_WRITE_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_IO_WRITE_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_BBP_READ_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);static inline INT DO_RACFG_CMD_ATE_BBP_WRITE_BULK(	IN	PRTMP_ADAPTER	pAdapter,	IN	struct iwreq	*wrq,	IN struct ate_racfghdr *pRaCfg);#endif // RALINK_28xx_QA //#ifdef RTMP_MAC_USBstatic INT TxDmaBusy(	IN PRTMP_ADAPTER pAd){	INT result;	USB_DMA_CFG_STRUC UsbCfg;	RTMP_IO_READ32(pAd, USB_DMA_CFG, &UsbCfg.word);	// disable DMA	if (UsbCfg.field.TxBusy)		result = 1;	else		result = 0;	return result;}static INT RxDmaBusy(	IN PRTMP_ADAPTER pAd){	INT result;	USB_DMA_CFG_STRUC UsbCfg;	RTMP_IO_READ32(pAd, USB_DMA_CFG, &UsbCfg.word);	// disable DMA	if (UsbCfg.field.RxBusy)		result = 1;	else		result = 0;	return result;}static VOID RtmpDmaEnable(	IN PRTMP_ADAPTER pAd,	IN INT Enable){	BOOLEAN value;	ULONG WaitCnt;	USB_DMA_CFG_STRUC UsbCfg;		value = Enable > 0 ? 1 : 0;	// check DMA is in busy mode.	WaitCnt = 0;	while (TxDmaBusy(pAd) || RxDmaBusy(pAd))	{		RTMPusecDelay(10);		if (WaitCnt++ > 100)			break;	}	//Why not to clear USB DMA TX path first ???	RTMP_IO_READ32(pAd, USB_DMA_CFG, &UsbCfg.word);	// disable DMA	UsbCfg.field.TxBulkEn = value;	UsbCfg.field.RxBulkEn = value;	RTMP_IO_WRITE32(pAd, USB_DMA_CFG, UsbCfg.word);	// abort all TX rings	RTMPusecDelay(5000);	return;}#endif // RTMP_MAC_USB //static VOID BbpSoftReset(	IN PRTMP_ADAPTER pAd){	UCHAR BbpData = 0;	// Soft reset, set BBP R21 bit0=1->0	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R21, &BbpData);	BbpData |= 0x00000001; //set bit0=1	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R21, BbpData);	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R21, &BbpData);	BbpData &= ~(0x00000001); //set bit0=0	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R21, BbpData);	return;}static VOID RtmpRfIoWrite(	IN PRTMP_ADAPTER pAd){	// Set RF value 1's set R3[bit2] = [0]	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);	RTMPusecDelay(200);	// Set RF value 2's set R3[bit2] = [1]	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 | 0x04));	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);	RTMPusecDelay(200);	// Set RF value 3's set R3[bit2] = [0]	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);	return;}static int CheckMCSValid(	IN UCHAR Mode,	IN UCHAR Mcs){	INT i;

⌨️ 快捷键说明

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