📄 rtmp.h
字号:
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 + -