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

📄 rtmp.h

📁 Linux下的RT系列无线网卡驱动,可以直接在x86平台上编译
💻 H
📖 第 1 页 / 共 5 页
字号:
                    case 5785000:    ch = 157; /* UNII */  break;     \                    case 5805000:    ch = 161; /* UNII */  break;     \                    case 5825000:    ch = 165; /* UNII */  break;     \                    case 5500000:    ch = 100; /* HiperLAN2 */  break;     \                    case 5520000:    ch = 104; /* HiperLAN2 */  break;     \                    case 5540000:    ch = 108; /* HiperLAN2 */  break;     \                    case 5560000:    ch = 112; /* HiperLAN2 */  break;     \                    case 5580000:    ch = 116; /* HiperLAN2 */  break;     \                    case 5600000:    ch = 120; /* HiperLAN2 */  break;     \                    case 5620000:    ch = 124; /* HiperLAN2 */  break;     \                    case 5640000:    ch = 128; /* HiperLAN2 */  break;     \                    case 5660000:    ch = 132; /* HiperLAN2 */  break;     \                    case 5680000:    ch = 136; /* HiperLAN2 */  break;     \                    case 5700000:    ch = 140; /* HiperLAN2 */  break;     \                    case 5170000:    ch = 34;  /* Japan MMAC */   break;   \                    case 5190000:    ch = 38;  /* Japan MMAC */   break;   \                    case 5210000:    ch = 42;  /* Japan MMAC */   break;   \                    case 5230000:    ch = 46;  /* Japan MMAC */   break;   \                    case 4920000:    ch = 184; /* Japan */  break;   \                    case 4940000:    ch = 188; /* Japan */  break;   \                    case 4960000:    ch = 192; /* Japan */  break;   \                    case 4980000:    ch = 196; /* Japan */  break;   \                    case 5040000:    ch = 208; /* Japan, means J08 */  break;   \                    case 5060000:    ch = 212; /* Japan, means J12 */  break;   \                    case 5080000:    ch = 216; /* Japan, means J16 */  break;   \                    default:         ch = 1;     break;     \                }                                           \            }//// 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)// 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(_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;								\	}															\}#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);              \    }                                                                   \}#define SWITCH_AB( _pAA, _pBB)    \{                                                                           \    PVOID pCC;                                                          \    pCC = _pBB;                                                 \    _pBB = _pAA;                                                 \    _pAA = pCC;                                                 \}// 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#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal)        \{                                                                                       \    ULONG High32TSF, Low32TSF;                                                          \    RTMP_IO_READ32(_pAd, TSF_TIMER_DW1, &High32TSF);                                       \    RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF);                                        \    MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal);   \}// INFRA mode- Address 1 - AP, Address 2 - this STA, Address 3 - DA// ADHOC mode- Address 1 - DA, Address 2 - this STA, Address 3 - BSSID#ifdef CONFIG_STA_SUPPORT#define MAKE_802_11_HEADER(_pAd, _80211hdr, _pDA)                         \{                                                                               \    NdisZeroMemory(&_80211hdr, sizeof(HEADER_802_11));                          \    if (INFRA_ON(_pAd))                                                         \    {                                                                           \        COPY_MAC_ADDR(_80211hdr.Addr1, _pAd->CommonCfg.Bssid);                  \        COPY_MAC_ADDR(_80211hdr.Addr3, _pDA);                                   \        _80211hdr.FC.ToDs = 1;                                                  \    }                                                                           \    else                                                                        \    {                                                                           \        COPY_MAC_ADDR(_80211hdr.Addr1, _pDA);                                   \        COPY_MAC_ADDR(_80211hdr.Addr3, _pAd->CommonCfg.Bssid);                  \    }                                                                           \    COPY_MAC_ADDR(_80211hdr.Addr2, _pAd->CurrentAddress);                       \    _80211hdr.FC.Type = BTYPE_DATA;                                             \    if (_pAd->CommonCfg.bAPSDForcePowerSave)									\    {																			\    	_80211hdr.FC.PwrMgmt = PWR_SAVE;												\    }																			\    else																		\    {																			\    	_80211hdr.FC.PwrMgmt = (_pAd->StaCfg.Psm == PWR_SAVE);                  \    }																			\}#endif // CONFIG_STA_SUPPORT //#define NDIS_QUERY_BUFFER(_NdisBuf, _ppVA, _pBufLen)                    \    NdisQueryBuffer(_NdisBuf, _ppVA, _pBufLen)//#endif#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)))//// Register set pair for initialzation register set definition//typedef struct  _RTMP_REG_PAIR{	ULONG   Register;	ULONG   Value;} RTMP_REG_PAIR, *PRTMP_REG_PAIR;typedef struct  _BBP_REG_PAIR{	UCHAR   Register;	UCHAR   Value;} BBP_REG_PAIR, *PBBP_REG_PAIR;//// Register set pair for initialzation register set definition//typedef struct  _RTMP_RF_REGS{	UCHAR   Channel;	ULONG   R1;	ULONG   R2;	ULONG   R3;	ULONG   R4;} RTMP_RF_REGS, *PRTMP_RF_REGS;////  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;typedef	union	_HEADER_802_11_SEQ{#ifdef BIG_ENDAIN    struct {   	USHORT			Sequence:12;	USHORT			Frag:4;    }   field;#else    struct {	USHORT			Frag:4;	USHORT			Sequence:12;    }   field;#endif    USHORT           value;}	HEADER_802_11_SEQ, *PHEADER_802_11_SEQ;////  Data buffer for DMA operation, the buffer must be contiguous physical memory//  Both DMA to / from CPU use the same structure.//typedef struct  _RTMP_REORDERBUF{	BOOLEAN			IsFull;	PVOID                   AllocVa;            // TxBuf virtual address	UCHAR			Header802_3[14];	HEADER_802_11_SEQ			Sequence;	//support compressed bitmap BA, so no consider fragment in BA	UCHAR 		DataOffset;	USHORT 		Datasize;	ULONG                   AllocSize;	NDIS_PHYSICAL_ADDRESS   AllocPa;            // TxBuf physical address}   RTMP_REORDERBUF, *PRTMP_REORDERBUF;//// 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#ifdef RX_SCATTERED	RTMP_DMABUF             NextDmaBuf;             // Associated DMA buffer structure#endif} RTMP_DMACB, *PRTMP_DMACB;typedef struct _RTMP_TX_BUF{	PQUEUE_ENTRY    Next;	UCHAR           Index;	ULONG                   AllocSize;          // Control block size	PVOID                   AllocVa;            // Control block virtual address	NDIS_PHYSICAL_ADDRESS   AllocPa;            // Control block physical address} RTMP_TXBUF, *PRTMP_TXBUF;typedef struct _RTMP_RX_BUF{	BOOLEAN           InUse;	ULONG           	ByBaRecIndex;	RTMP_REORDERBUF	MAP_RXBuf[Max_RX_REORDERBUF];} RTMP_RXBUF, *PRTMP_RXBUF;typedef struct _RTMP_TX_RING{	RTMP_DMACB  Cell[TX_RING_SIZE];	ULONG		TxCpuIdx;		ULONG		TxDmaIdx;   	ULONG		TxSwFreeIdx; 	// software next free tx index} RTMP_TX_RING, *PRTMP_TX_RING;typedef struct _RTMP_RX_RING{	RTMP_DMACB  Cell[RX_RING_SIZE];	ULONG		RxCpuIdx;	ULONG		RxDmaIdx;	LONG		RxSwReadIdx; 	// software next read index} RTMP_RX_RING, *PRTMP_RX_RING;typedef struct _RTMP_MGMT_RING{	RTMP_DMACB  Cell[MGMT_RING_SIZE];	ULONG		TxCpuIdx;	ULONG		TxDmaIdx;	ULONG		TxSwFreeIdx; // software next free tx index} RTMP_MGMT_RING, *PRTMP_MGMT_RING;////  Statistic counter structure//

⌨️ 快捷键说明

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