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

📄 rtmp.h

📁 ralink 2870 usb无线网卡 最新驱动
💻 H
📖 第 1 页 / 共 5 页
字号:
	(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);       \}#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)////// Common fragment list structure -  Identical to the scatter gather frag list structure////#define RTMP_SCATTER_GATHER_ELEMENT         SCATTER_GATHER_ELEMENT //#define PRTMP_SCATTER_GATHER_ELEMENT        PSCATTER_GATHER_ELEMENT #define NIC_MAX_PHYS_BUF_COUNT              8typedef struct _RTMP_SCATTER_GATHER_ELEMENT {    PVOID		Address;    ULONG		Length;    PULONG		Reserved;} RTMP_SCATTER_GATHER_ELEMENT, *PRTMP_SCATTER_GATHER_ELEMENT;typedef struct _RTMP_SCATTER_GATHER_LIST {    ULONG  NumberOfElements;    PULONG Reserved;    RTMP_SCATTER_GATHER_ELEMENT Elements[NIC_MAX_PHYS_BUF_COUNT];} RTMP_SCATTER_GATHER_LIST, *PRTMP_SCATTER_GATHER_LIST;////  Some utility macros//#ifndef min#define min(_a, _b)     (((_a) < (_b)) ? (_a) : (_b))#endif#ifndef max#define max(_a, _b)     (((_a) > (_b)) ? (_a) : (_b))#endif#define GET_LNA_GAIN(_pAd)	((_pAd->LatchRfRegs.Channel <= 14) ? (_pAd->BLNAGain) : ((_pAd->LatchRfRegs.Channel <= 64) ? (_pAd->ALNAGain0) : ((_pAd->LatchRfRegs.Channel <= 128) ? (_pAd->ALNAGain1) : (_pAd->ALNAGain2))))#define INC_COUNTER64(Val)          (Val.QuadPart++)#define INFRA_ON(_p)                (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_INFRA_ON))#define ADHOC_ON(_p)                (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_ADHOC_ON))#define MONITOR_ON(_p)              (((_p)->StaCfg.BssType) == BSS_MONITOR)#define IDLE_ON(_p)                 (!INFRA_ON(_p) && !ADHOC_ON(_p))// Check LEAP & CCKM flags#define LEAP_ON(_p)                 (((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP)#define LEAP_CCKM_ON(_p)            ((((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) && ((_p)->StaCfg.LeapAuthInfo.CCKM == TRUE))// if orginal Ethernet frame contains no LLC/SNAP, then an extra LLC/SNAP encap is required #define EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(_pBufVA, _pExtraLlcSnapEncap)		\{																\	if (((*(_pBufVA + 12) << 8) + *(_pBufVA + 13)) > 1500)		\	{															\		_pExtraLlcSnapEncap = SNAP_802_1H;						\		if (NdisEqualMemory(IPX, _pBufVA + 12, 2) || 			\			NdisEqualMemory(APPLE_TALK, _pBufVA + 12, 2))		\		{														\			_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL;			\		}														\	}															\	else														\	{															\		_pExtraLlcSnapEncap = NULL;								\	}															\}// New Define for new Tx Path.#define EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(_pBufVA, _pExtraLlcSnapEncap)	\{																\	if (((*(_pBufVA) << 8) + *(_pBufVA + 1)) > 1500)			\	{															\		_pExtraLlcSnapEncap = SNAP_802_1H;						\		if (NdisEqualMemory(IPX, _pBufVA, 2) || 				\			NdisEqualMemory(APPLE_TALK, _pBufVA, 2))			\		{														\			_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL;			\		}														\	}															\	else														\	{															\		_pExtraLlcSnapEncap = NULL;								\	}															\}#define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType)                   \{                                                                       \    NdisMoveMemory(_p, _pMac1, MAC_ADDR_LEN);                           \    NdisMoveMemory((_p + MAC_ADDR_LEN), _pMac2, MAC_ADDR_LEN);          \    NdisMoveMemory((_p + MAC_ADDR_LEN * 2), _pType, LENGTH_802_3_TYPE); \}// if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way.// else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field // else remove the LLC/SNAP field from the result Ethernet frame// Patch for WHQL only, which did not turn on Netbios but use IPX within its payload// Note://     _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO//     _pRemovedLLCSNAP: pointer to removed LLC/SNAP; NULL is not removed#define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize, _pRemovedLLCSNAP)      \{                                                                       \    char LLC_Len[2];                                                    \                                                                        \    _pRemovedLLCSNAP = NULL;                                            \    if (NdisEqualMemory(SNAP_802_1H, _pData, 6)  ||                     \        NdisEqualMemory(SNAP_BRIDGE_TUNNEL, _pData, 6))                 \    {                                                                   \        PUCHAR pProto = _pData + 6;                                     \                                                                        \        if ((NdisEqualMemory(IPX, pProto, 2) || NdisEqualMemory(APPLE_TALK, pProto, 2)) &&  \            NdisEqualMemory(SNAP_802_1H, _pData, 6))                    \        {                                                               \            LLC_Len[0] = (UCHAR)(_DataSize / 256);                      \            LLC_Len[1] = (UCHAR)(_DataSize % 256);                      \            MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len);          \        }                                                               \        else                                                            \        {                                                               \            MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, pProto);           \            _pRemovedLLCSNAP = _pData;                                  \            _DataSize -= LENGTH_802_1_H;                                \            _pData += LENGTH_802_1_H;                                   \        }                                                               \    }                                                                   \    else                                                                \    {                                                                   \        LLC_Len[0] = (UCHAR)(_DataSize / 256);                          \        LLC_Len[1] = (UCHAR)(_DataSize % 256);                          \        MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len);              \    }                                                                   \}// Enqueue this frame to MLME engine// We need to enqueue the whole frame because MLME need to pass data type// information from 802.11 header#ifdef RTMP_MAC_USB#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal)        \{                                                                                       \    UINT32 High32TSF=0, Low32TSF=0;                                                          \    MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal);   \}#endif // RTMP_MAC_USB //#define MAC_ADDR_EQUAL(pAddr1,pAddr2)           RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN)#define SSID_EQUAL(ssid1, len1, ssid2, len2)    ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))//// Check if it is Japan W53(ch52,56,60,64) channel.//#define JapanChannelCheck(channel)  ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))#ifdef CONFIG_STA_SUPPORT#define STA_EXTRA_SETTING(_pAd)#define STA_PORT_SECURED(_pAd) \{ \	BOOLEAN	Cancelled; \	(_pAd)->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \	NdisAcquireSpinLock(&((_pAd)->MacTabLock)); \	(_pAd)->MacTab.Content[BSSID_WCID].PortSecured = (_pAd)->StaCfg.PortSecured; \	(_pAd)->MacTab.Content[BSSID_WCID].PrivacyFilter = Ndis802_11PrivFilterAcceptAll;\	NdisReleaseSpinLock(&(_pAd)->MacTabLock); \	RTMPCancelTimer(&((_pAd)->Mlme.LinkDownTimer), &Cancelled);\	STA_EXTRA_SETTING(_pAd); \}#endif // CONFIG_STA_SUPPORT //////  Data buffer for DMA operation, the buffer must be contiguous physical memory//  Both DMA to / from CPU use the same structure.//typedef struct  _RTMP_DMABUF{	ULONG                   AllocSize;	PVOID                   AllocVa;            // TxBuf virtual address	NDIS_PHYSICAL_ADDRESS   AllocPa;            // TxBuf physical address} RTMP_DMABUF, *PRTMP_DMABUF;//// Control block (Descriptor) for all ring descriptor DMA operation, buffer must be // contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor// which won't be released, driver has to wait until upper layer return the packet// before giveing up this rx ring descriptor to ASIC. NDIS_BUFFER is assocaited pair// to describe the packet buffer. For Tx, NDIS_PACKET stored the tx packet descriptor// which driver should ACK upper layer when the tx is physically done or failed.//typedef struct _RTMP_DMACB{	ULONG                   AllocSize;          // Control block size	PVOID                   AllocVa;            // Control block virtual address	NDIS_PHYSICAL_ADDRESS   AllocPa;            // Control block physical address	PNDIS_PACKET pNdisPacket;	PNDIS_PACKET pNextNdisPacket;	RTMP_DMABUF             DmaBuf;             // Associated DMA buffer structure} RTMP_DMACB, *PRTMP_DMACB;typedef struct _RTMP_TX_RING{	RTMP_DMACB  Cell[TX_RING_SIZE];	UINT32		TxCpuIdx;		UINT32		TxDmaIdx;   	UINT32		TxSwFreeIdx; 	// software next free tx index} RTMP_TX_RING, *PRTMP_TX_RING;typedef struct _RTMP_RX_RING{	RTMP_DMACB  Cell[RX_RING_SIZE];	UINT32		RxCpuIdx;	UINT32		RxDmaIdx;	INT32		RxSwReadIdx; 	// software next read index} RTMP_RX_RING, *PRTMP_RX_RING;typedef struct _RTMP_MGMT_RING{	RTMP_DMACB  Cell[MGMT_RING_SIZE];	UINT32		TxCpuIdx;	UINT32		TxDmaIdx;	UINT32		TxSwFreeIdx; // software next free tx index} RTMP_MGMT_RING, *PRTMP_MGMT_RING;////  Statistic counter structure//typedef struct _COUNTER_802_3{	// General Stats	ULONG       GoodTransmits;	ULONG       GoodReceives;	ULONG       TxErrors;	ULONG       RxErrors;	ULONG       RxNoBuffer;	// Ethernet Stats	ULONG       RcvAlignmentErrors;	ULONG       OneCollision;	ULONG       MoreCollisions;} COUNTER_802_3, *PCOUNTER_802_3;typedef struct _COUNTER_802_11 {	ULONG           Length;	LARGE_INTEGER   LastTransmittedFragmentCount;	LARGE_INTEGER   TransmittedFragmentCount;	LARGE_INTEGER   MulticastTransmittedFrameCount;	LARGE_INTEGER   FailedCount;	LARGE_INTEGER   RetryCount;	LARGE_INTEGER   MultipleRetryCount;	LARGE_INTEGER   RTSSuccessCount;	LARGE_INTEGER   RTSFailureCount;	LARGE_INTEGER   ACKFailureCount;	LARGE_INTEGER   FrameDuplicateCount;	LARGE_INTEGER   ReceivedFragmentCount;	LARGE_INTEGER   MulticastReceivedFrameCount;	LARGE_INTEGER   FCSErrorCount;} COUNTER_802_11, *PCOUNTER_802_11;typedef struct _COUNTER_RALINK {	ULONG           TransmittedByteCount;   // both successful and failure, used to calculate TX throughput	ULONG           ReceivedByteCount;      // both CRC okay and CRC error, used to calculate RX throughput	ULONG           BeenDisassociatedCount;	ULONG           BadCQIAutoRecoveryCount;	ULONG           PoorCQIRoamingCount;	ULONG           MgmtRingFullCount;	ULONG           RxCountSinceLastNULL;	ULONG           RxCount;

⌨️ 快捷键说明

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