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

📄 rtmp.h

📁 ralink最新rt3070 usb wifi 无线网卡驱动程序
💻 H
📖 第 1 页 / 共 5 页
字号:
	UCHAR 		Header[32]; // Header buffer	UCHAR		Pattern[32]; // Pattern buffer	USHORT		DLen; // Data Length	USHORT		seq;	UINT32		CID;	pid_t 		AtePid;	// counters	UINT32		U2M;	UINT32		OtherData;	UINT32		Beacon;	UINT32		OtherCount;	UINT32		TxAc0;	UINT32		TxAc1;	UINT32		TxAc2;	UINT32		TxAc3;	UINT32		TxHCCA;	UINT32		TxMgmt;	UINT32		RSSI0;	UINT32		RSSI1;	UINT32		RSSI2;	UINT32		SNR0;	UINT32		SNR1;	// control	//UINT32		Repeat; // Tx Cpu count	UCHAR		TxStatus; // task Tx status // 0 --> task is idle, 1 --> task is running#endif // RALINK_28xx_QA //}	ATE_INFO, *PATE_INFO;#ifdef RALINK_28xx_QAstruct ate_racfghdr { 	UINT32		magic_no;	USHORT		command_type;	USHORT		command_id;	USHORT		length;	USHORT		sequence;	USHORT		status;	UCHAR		data[2046];}  __attribute__((packed));#endif // RALINK_28xx_QA //#endif // RALINK_ATE //#ifdef DOT11_N_SUPPORTstruct reordering_mpdu{	struct reordering_mpdu	*next;	PNDIS_PACKET			pPacket;		/* coverted to 802.3 frame */	int						Sequence;		/* sequence number of MPDU */	BOOLEAN					bAMSDU;};struct reordering_list{	struct reordering_mpdu *next;	int 	qlen;};struct reordering_mpdu_pool{	PVOID					mem;	NDIS_SPIN_LOCK			lock;	struct reordering_list 	freelist;};#endif // DOT11_N_SUPPORT //typedef struct 	_RSSI_SAMPLE {	CHAR			LastRssi0;             // last received RSSI	CHAR			LastRssi1;             // last received RSSI	CHAR			LastRssi2;             // last received RSSI	CHAR			AvgRssi0;	CHAR			AvgRssi1;	CHAR			AvgRssi2;	SHORT			AvgRssi0X8;	SHORT			AvgRssi1X8;	SHORT			AvgRssi2X8;} RSSI_SAMPLE;////  Queue structure and macros//typedef struct  _QUEUE_ENTRY    {	struct _QUEUE_ENTRY     *Next;}   QUEUE_ENTRY, *PQUEUE_ENTRY;// Queue structuretypedef struct  _QUEUE_HEADER   {	PQUEUE_ENTRY    Head;	PQUEUE_ENTRY    Tail;	ULONG           Number;}   QUEUE_HEADER, *PQUEUE_HEADER;#define InitializeQueueHeader(QueueHeader)              \{                                                       \	(QueueHeader)->Head = (QueueHeader)->Tail = NULL;   \	(QueueHeader)->Number = 0;                          \}#define RemoveHeadQueue(QueueHeader)                \(QueueHeader)->Head;                                \{                                                   \	PQUEUE_ENTRY pNext;                             \	if ((QueueHeader)->Head != NULL)				\	{												\		pNext = (QueueHeader)->Head->Next;          \		(QueueHeader)->Head = pNext;                \		if (pNext == NULL)                          \			(QueueHeader)->Tail = NULL;             \		(QueueHeader)->Number--;                    \	}												\}#define InsertHeadQueue(QueueHeader, QueueEntry)            \{                                                           \		((PQUEUE_ENTRY)QueueEntry)->Next = (QueueHeader)->Head; \		(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);       \		if ((QueueHeader)->Tail == NULL)                        \			(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);   \		(QueueHeader)->Number++;                                \}#define InsertTailQueue(QueueHeader, QueueEntry)                \{                                                               \	((PQUEUE_ENTRY)QueueEntry)->Next = NULL;                    \	if ((QueueHeader)->Tail)                                    \		(QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry); \	else                                                        \		(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);       \	(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);           \	(QueueHeader)->Number++;                                    \}////  Macros for flag and ref count operations//#define RTMP_SET_FLAG(_M, _F)       ((_M)->Flags |= (_F))#define RTMP_CLEAR_FLAG(_M, _F)     ((_M)->Flags &= ~(_F))#define RTMP_CLEAR_FLAGS(_M)        ((_M)->Flags = 0)#define RTMP_TEST_FLAG(_M, _F)      (((_M)->Flags & (_F)) != 0)#define RTMP_TEST_FLAGS(_M, _F)     (((_M)->Flags & (_F)) == (_F))#define OPSTATUS_SET_FLAG(_pAd, _F)     ((_pAd)->CommonCfg.OpStatusFlags |= (_F))#define OPSTATUS_CLEAR_FLAG(_pAd, _F)   ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F))#define OPSTATUS_TEST_FLAG(_pAd, _F)    (((_pAd)->CommonCfg.OpStatusFlags & (_F)) != 0)#define CLIENT_STATUS_SET_FLAG(_pEntry,_F)      ((_pEntry)->ClientStatusFlags |= (_F))#define CLIENT_STATUS_CLEAR_FLAG(_pEntry,_F)    ((_pEntry)->ClientStatusFlags &= ~(_F))#define CLIENT_STATUS_TEST_FLAG(_pEntry,_F)     (((_pEntry)->ClientStatusFlags & (_F)) != 0)#define RX_FILTER_SET_FLAG(_pAd, _F)    ((_pAd)->CommonCfg.PacketFilter |= (_F))#define RX_FILTER_CLEAR_FLAG(_pAd, _F)  ((_pAd)->CommonCfg.PacketFilter &= ~(_F))#define RX_FILTER_TEST_FLAG(_pAd, _F)   (((_pAd)->CommonCfg.PacketFilter & (_F)) != 0)#ifdef CONFIG_STA_SUPPORT#define STA_NO_SECURITY_ON(_p)          (_p->StaCfg.WepStatus == Ndis802_11EncryptionDisabled)#define STA_WEP_ON(_p)                  (_p->StaCfg.WepStatus == Ndis802_11Encryption1Enabled)#define STA_TKIP_ON(_p)                 (_p->StaCfg.WepStatus == Ndis802_11Encryption2Enabled)#define STA_AES_ON(_p)                  (_p->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)#define STA_TGN_WIFI_ON(_p)             (_p->StaCfg.bTGnWifiTest == TRUE)#endif // CONFIG_STA_SUPPORT //#define CKIP_KP_ON(_p)				((((_p)->StaCfg.CkipFlag) & 0x10) && ((_p)->StaCfg.bCkipCmicOn == TRUE))#define CKIP_CMIC_ON(_p)			((((_p)->StaCfg.CkipFlag) & 0x08) && ((_p)->StaCfg.bCkipCmicOn == TRUE))#define INC_RING_INDEX(_idx, _RingSize)    \{                                          \    (_idx) = (_idx+1) % (_RingSize);       \}// We will have a cost down version which mac version is 0x3090xxxx#define IS_RT3090(_pAd)				((((_pAd)->MACVersion & 0xffff0000) == 0x30710000) || (((_pAd)->MACVersion & 0xffff0000) == 0x30900000))#define IS_RT3070(_pAd)				(((_pAd)->MACVersion & 0xffff0000) == 0x30700000)#define IS_RT3071(_pAd)				(((_pAd)->MACVersion & 0xffff0000) == 0x30710000)#define IS_RT2070(_pAd)				(((_pAd)->RfIcType == RFIC_2020) || ((_pAd)->EFuseTag == 0x27))#define IS_RT30xx(_pAd)				(((_pAd)->MACVersion & 0xfff00000) == 0x30700000)#define RING_PACKET_INIT(_TxRing, _idx)    \{                                          \    _TxRing->Cell[_idx].pNdisPacket = NULL;                              \    _TxRing->Cell[_idx].pNextNdisPacket = NULL;                              \}#define TXDT_INIT(_TxD)    \{                                          \	NdisZeroMemory(_TxD, TXD_SIZE);	\	_TxD->DMADONE = 1;                              \}//Set last data segment#define RING_SET_LASTDS(_TxD, _IsSD0)    \{                                          \    if (_IsSD0) {_TxD->LastSec0 = 1;}     \    else {_TxD->LastSec1 = 1;}     \}// Increase TxTsc value for next transmission// TODO: // When i==6, means TSC has done one full cycle, do re-keying stuff follow specs// Should send a special event microsoft defined to request re-key#define INC_TX_TSC(_tsc)                                \{                                                       \    int i=0;                                            \    while (++_tsc[i] == 0x0)                            \    {                                                   \        i++;                                            \        if (i == 6)                                     \            break;                                      \    }                                                   \}#ifdef DOT11_N_SUPPORT// StaActive.SupportedHtPhy.MCSSet is copied from AP beacon.  Don't need to update here.#define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd)                                 \{                                                                                       \	_pAd->StaActive.SupportedHtPhy.ChannelWidth = _pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth;      \	_pAd->StaActive.SupportedHtPhy.MimoPs = _pAd->MlmeAux.HtCapability.HtCapInfo.MimoPs;      \	_pAd->StaActive.SupportedHtPhy.GF = _pAd->MlmeAux.HtCapability.HtCapInfo.GF;      \	_pAd->StaActive.SupportedHtPhy.ShortGIfor20 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20;      \	_pAd->StaActive.SupportedHtPhy.ShortGIfor40 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40;      \	_pAd->StaActive.SupportedHtPhy.TxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC;      \	_pAd->StaActive.SupportedHtPhy.RxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC;      \	_pAd->StaActive.SupportedHtPhy.ExtChanOffset = _pAd->MlmeAux.AddHtInfo.AddHtInfo.ExtChanOffset;      \	_pAd->StaActive.SupportedHtPhy.RecomWidth = _pAd->MlmeAux.AddHtInfo.AddHtInfo.RecomWidth;      \	_pAd->StaActive.SupportedHtPhy.OperaionMode = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode;      \	_pAd->StaActive.SupportedHtPhy.NonGfPresent = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent;      \	NdisMoveMemory((_pAd)->MacTab.Content[BSSID_WCID].HTCapability.MCSSet, (_pAd)->StaActive.SupportedPhyInfo.MCSSet, sizeof(UCHAR) * 16);\}#define COPY_AP_HTSETTINGS_FROM_BEACON(_pAd, _pHtCapability)                                 \{                                                                                       \	_pAd->MacTab.Content[BSSID_WCID].AMsduSize = (UCHAR)(_pHtCapability->HtCapInfo.AMsduSize);	\	_pAd->MacTab.Content[BSSID_WCID].MmpsMode= (UCHAR)(_pHtCapability->HtCapInfo.MimoPs);	\	_pAd->MacTab.Content[BSSID_WCID].MaxRAmpduFactor = (UCHAR)(_pHtCapability->HtCapParm.MaxRAmpduFactor);	\}#endif // DOT11_N_SUPPORT ////// MACRO for 32-bit PCI register read / write//// Usage : RTMP_IO_READ32(//              PRTMP_ADAPTER pAd,//              ULONG Register_Offset,//              PULONG  pValue)////         RTMP_IO_WRITE32(//              PRTMP_ADAPTER pAd,//              ULONG Register_Offset,//              ULONG Value)////// BBP & RF are using indirect access. Before write any value into it.// We have to make sure there is no outstanding command pending via checking busy bit.//#define MAX_BUSY_COUNT  100         // Number of retry before failing access BBP & RF indirect register//#ifdef RT2870#define RTMP_RF_IO_WRITE32(_A, _V)                 RTUSBWriteRFRegister(_A, _V)#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)   RTUSBReadBBPRegister(_A, _I, _pV)#define RTMP_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)   RTUSBWriteBBPRegister(_A, _I, _V)#define BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)			RTUSBWriteBBPRegister(_A, _I, _V)#define BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)   		RTUSBReadBBPRegister(_A, _I, _pV)#endif // RT2870 //#ifdef RT30xx#define RTMP_RF_IO_READ8_BY_REG_ID(_A, _I, _pV)    RT30xxReadRFRegister(_A, _I, _pV)#define RTMP_RF_IO_WRITE8_BY_REG_ID(_A, _I, _V)    RT30xxWriteRFRegister(_A, _I, _V)#endif // RT30xx //#define     MAP_CHANNEL_ID_TO_KHZ(ch, khz)  {               \                switch (ch)                                 \                {                                           \                    case 1:     khz = 2412000;   break;     \                    case 2:     khz = 2417000;   break;     \                    case 3:     khz = 2422000;   break;     \                    case 4:     khz = 2427000;   break;     \                    case 5:     khz = 2432000;   break;     \                    case 6:     khz = 2437000;   break;     \                    case 7:     khz = 2442000;   break;     \                    case 8:     khz = 2447000;   break;     \                    case 9:     khz = 2452000;   break;     \                    case 10:    khz = 2457000;   break;     \                    case 11:    khz = 2462000;   break;     \                    case 12:    khz = 2467000;   break;     \                    case 13:    khz = 2472000;   break;     \                    case 14:    khz = 2484000;   break;     \                    case 36:  /* UNII */  khz = 5180000;   break;     \                    case 40:  /* UNII */  khz = 5200000;   break;     \                    case 44:  /* UNII */  khz = 5220000;   break;     \                    case 48:  /* UNII */  khz = 5240000;   break;     \                    case 52:  /* UNII */  khz = 5260000;   break;     \                    case 56:  /* UNII */  khz = 5280000;   break;     \                    case 60:  /* UNII */  khz = 5300000;   break;     \                    case 64:  /* UNII */  khz = 5320000;   break;     \                    case 149: /* UNII */  khz = 5745000;   break;     \                    case 153: /* UNII */  khz = 5765000;   break;     \                    case 157: /* UNII */  khz = 5785000;   break;     \                    case 161: /* UNII */  khz = 5805000;   break;     \                    case 165: /* UNII */  khz = 5825000;   break;     \                    case 100: /* HiperLAN2 */  khz = 5500000;   break;     \                    case 104: /* HiperLAN2 */  khz = 5520000;   break;     \                    case 108: /* HiperLAN2 */  khz = 5540000;   break;     \                    case 112: /* HiperLAN2 */  khz = 5560000;   break;     \                    case 116: /* HiperLAN2 */  khz = 5580000;   break;     \                    case 120: /* HiperLAN2 */  khz = 5600000;   break;     \                    case 124: /* HiperLAN2 */  khz = 5620000;   break;     \                    case 128: /* HiperLAN2 */  khz = 5640000;   break;     \                    case 132: /* HiperLAN2 */  khz = 5660000;   break;     \                    case 136: /* HiperLAN2 */  khz = 5680000;   break;     \                    case 140: /* HiperLAN2 */  khz = 5700000;   break;     \                    case 34:  /* Japan MMAC */   khz = 5170000;   break;   \                    case 38:  /* Japan MMAC */   khz = 5190000;   break;   \                    case 42:  /* Japan MMAC */   khz = 5210000;   break;   \                    case 46:  /* Japan MMAC */   khz = 5230000;   break;   \                    case 184: /* Japan */   khz = 4920000;   break;   \                    case 188: /* Japan */   khz = 4940000;   break;   \                    case 192: /* Japan */   khz = 4960000;   break;   \                    case 196: /* Japan */   khz = 4980000;   break;   \                    case 208: /* Japan, means J08 */   khz = 5040000;   break;   \                    case 212: /* Japan, means J12 */   khz = 5060000;   break;   \                    case 216: /* Japan, means J16 */   khz = 5080000;   break;   \                    default:    khz = 2412000;   break;     \                }                                           \            }#define     MAP_KHZ_TO_CHANNEL_ID(khz, ch)  {               \                switch (khz)                                \                {                                           \                    case 2412000:    ch = 1;     break;     \                    case 2417000:    ch = 2;     break;     \                    case 2422000:    ch = 3;     break;     \                    case 2427000:    ch = 4;     break;     \                    case 2432000:    ch = 5;     break;     \                    case 2437000:    ch = 6;     break;     \                    case 2442000:    ch = 7;     break;     \                    case 2447000:    ch = 8;     break;     \                    case 2452000:    ch = 9;     break;     \                    case 2457000:    ch = 10;    break;     \                    case 2462000:    ch = 11;    break;     \                    case 2467000:    ch = 12;    break;     \                    case 2472000:    ch = 13;    break;     \                    case 2484000:    ch = 14;    break;     \                    case 5180000:    ch = 36;  /* UNII */  break;     \                    case 5200000:    ch = 40;  /* UNII */  break;     \                    case 5220000:    ch = 44;  /* UNII */  break;     \                    case 5240000:    ch = 48;  /* UNII */  break;     \                    case 5260000:    ch = 52;  /* UNII */  break;     \                    case 5280000:    ch = 56;  /* UNII */  break;     \

⌨️ 快捷键说明

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