📄 mlme.h
字号:
// #define SEQ_STEPONE(_SEQ1, _SEQ2, _Limit) ((_SEQ1 == ((_SEQ2+1) & _Limit)))#define SEQ_SMALLER(_SEQ1, _SEQ2, _Limit) (((_SEQ1-_SEQ2) & ((_Limit+1)>>1)))#define SEQ_LARGER(_SEQ1, _SEQ2, _Limit) ((_SEQ1 != _SEQ2) && !(((_SEQ1-_SEQ2) & ((_Limit+1)>>1))))#define SEQ_WITHIN_WIN(_SEQ1, _SEQ2, _WIN, _Limit) (SEQ_LARGER(_SEQ1, _SEQ2, _Limit) && \ SEQ_SMALLER(_SEQ1, ((_SEQ2+_WIN+1)&_Limit), _Limit))//// Contention-free parameter (without ID and Length)//typedef struct PACKED { BOOLEAN bValid; // 1: variable contains valid value UCHAR CfpCount; UCHAR CfpPeriod; USHORT CfpMaxDuration; USHORT CfpDurRemaining;} CF_PARM, *PCF_PARM;typedef struct _CIPHER_SUITE { NDIS_802_11_ENCRYPTION_STATUS PairCipher; // Unicast cipher 1, this one has more secured cipher suite NDIS_802_11_ENCRYPTION_STATUS PairCipherAux; // Unicast cipher 2 if AP announce two unicast cipher suite NDIS_802_11_ENCRYPTION_STATUS GroupCipher; // Group cipher USHORT RsnCapability; // RSN capability from beacon BOOLEAN bMixMode; // Indicate Pair & Group cipher might be different} CIPHER_SUITE, *PCIPHER_SUITE; // EDCA configuration from AP's BEACON/ProbeRsptypedef struct { BOOLEAN bValid; // 1: variable contains valid value BOOLEAN bAdd; // 1: variable contains valid value BOOLEAN bQAck; BOOLEAN bQueueRequest; BOOLEAN bTxopRequest; BOOLEAN bAPSDCapable;// BOOLEAN bMoreDataAck; UCHAR EdcaUpdateCount; UCHAR Aifsn[4]; // 0:AC_BK, 1:AC_BE, 2:AC_VI, 3:AC_VO UCHAR Cwmin[4]; UCHAR Cwmax[4]; USHORT Txop[4]; // in unit of 32-us BOOLEAN bACM[4]; // 1: Admission Control of AC_BK is mandattory} EDCA_PARM, *PEDCA_PARM;// QBSS LOAD information from QAP's BEACON/ProbeRsptypedef struct { BOOLEAN bValid; // 1: variable contains valid value USHORT StaNum; UCHAR ChannelUtilization; USHORT RemainingAdmissionControl; // in unit of 32-us} QBSS_LOAD_PARM, *PQBSS_LOAD_PARM;// QBSS Info field in QSTA's assoc reqtypedef struct PACKED {#ifdef RT_BIG_ENDIAN UCHAR Rsv2:1; UCHAR MaxSPLength:2; UCHAR Rsv1:1; UCHAR UAPSD_AC_BE:1; UCHAR UAPSD_AC_BK:1; UCHAR UAPSD_AC_VI:1; UCHAR UAPSD_AC_VO:1;#else UCHAR UAPSD_AC_VO:1; UCHAR UAPSD_AC_VI:1; UCHAR UAPSD_AC_BK:1; UCHAR UAPSD_AC_BE:1; UCHAR Rsv1:1; UCHAR MaxSPLength:2; UCHAR Rsv2:1;#endif /* !RT_BIG_ENDIAN */} QBSS_STA_INFO_PARM, *PQBSS_STA_INFO_PARM;// QBSS Info field in QAP's Beacon/ProbeRsptypedef struct PACKED {#ifdef RT_BIG_ENDIAN UCHAR UAPSD:1; UCHAR Rsv:3; UCHAR ParamSetCount:4;#else UCHAR ParamSetCount:4; UCHAR Rsv:3; UCHAR UAPSD:1;#endif /* !RT_BIG_ENDIAN */} QBSS_AP_INFO_PARM, *PQBSS_AP_INFO_PARM;// QOS Capability reported in QAP's BEACON/ProbeRsp// QOS Capability sent out in QSTA's AssociateReq/ReAssociateReqtypedef struct { BOOLEAN bValid; // 1: variable contains valid value BOOLEAN bQAck; BOOLEAN bQueueRequest; BOOLEAN bTxopRequest;// BOOLEAN bMoreDataAck; UCHAR EdcaUpdateCount;} QOS_CAPABILITY_PARM, *PQOS_CAPABILITY_PARM;#ifdef CONFIG_STA_SUPPORTtypedef struct { UCHAR IELen; UCHAR IE[MAX_CUSTOM_LEN];} WPA_IE_;#endif // CONFIG_STA_SUPPORT //typedef struct { UCHAR Bssid[MAC_ADDR_LEN]; UCHAR Channel; UCHAR CentralChannel; //Store the wide-band central channel for 40MHz. .used in 40MHz AP. Or this is the same as Channel. UCHAR BssType; USHORT AtimWin; USHORT BeaconPeriod; UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR SupRateLen; UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR ExtRateLen; HT_CAPABILITY_IE HtCapability; UCHAR HtCapabilityLen; ADD_HT_INFO_IE AddHtInfo; // AP might use this additional ht info IE UCHAR AddHtInfoLen; UCHAR NewExtChanOffset; CHAR Rssi; UCHAR Privacy; // Indicate security function ON/OFF. Don't mess up with auth mode. UCHAR Hidden; USHORT DtimPeriod; USHORT CapabilityInfo; USHORT CfpCount; USHORT CfpPeriod; USHORT CfpMaxDuration; USHORT CfpDurRemaining; UCHAR SsidLen; CHAR Ssid[MAX_LEN_OF_SSID]; ULONG LastBeaconRxTime; // OS's timestamp BOOLEAN bSES; // New for WPA2 CIPHER_SUITE WPA; // AP announced WPA cipher suite CIPHER_SUITE WPA2; // AP announced WPA2 cipher suite // New for microsoft WPA support NDIS_802_11_FIXED_IEs FixIEs; NDIS_802_11_AUTHENTICATION_MODE AuthModeAux; // Addition mode for WPA2 / WPA capable AP NDIS_802_11_AUTHENTICATION_MODE AuthMode; NDIS_802_11_WEP_STATUS WepStatus; // Unicast Encryption Algorithm extract from VAR_IE USHORT VarIELen; // Length of next VIE include EID & Length UCHAR VarIEs[MAX_VIE_LEN]; // CCX Ckip information UCHAR CkipFlag; // CCX 2 TSF UCHAR PTSF[4]; // Parent TSF UCHAR TTSF[8]; // Target TSF // 802.11e d9, and WMM EDCA_PARM EdcaParm; QOS_CAPABILITY_PARM QosCapability; QBSS_LOAD_PARM QbssLoad;#ifdef CONFIG_STA_SUPPORT WPA_IE_ WpaIE; WPA_IE_ RsnIE;#ifdef EXT_BUILD_CHANNEL_LIST UCHAR CountryString[3]; BOOLEAN bHasCountryIE;#endif // EXT_BUILD_CHANNEL_LIST //#endif // CONFIG_STA_SUPPORT //} BSS_ENTRY, *PBSS_ENTRY;typedef struct { UCHAR BssNr; UCHAR BssOverlapNr; BSS_ENTRY BssEntry[MAX_LEN_OF_BSS_TABLE];} BSS_TABLE, *PBSS_TABLE;typedef struct _MLME_QUEUE_ELEM { ULONG Machine; ULONG MsgType; ULONG MsgLen; UCHAR Msg[MGMT_DMA_BUFFER_SIZE]; LARGE_INTEGER TimeStamp; UCHAR Rssi0; UCHAR Rssi1; UCHAR Rssi2; UCHAR Signal; UCHAR Channel; UCHAR Wcid; BOOLEAN Occupied;#ifdef MLME_EX USHORT Idx;#endif // MLME_EX //} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM;typedef struct _MLME_QUEUE { ULONG Num; ULONG Head; ULONG Tail; NDIS_SPIN_LOCK Lock; MLME_QUEUE_ELEM Entry[MAX_LEN_OF_MLME_QUEUE];} MLME_QUEUE, *PMLME_QUEUE;typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem);typedef struct _STATE_MACHINE { ULONG Base; ULONG NrState; ULONG NrMsg; ULONG CurrState; STATE_MACHINE_FUNC *TransFunc;} STATE_MACHINE, *PSTATE_MACHINE;// MLME AUX data structure that hold temporarliy settings during a connection attempt.// Once this attemp succeeds, all settings will be copy to pAd->StaActive.// A connection attempt (user set OID, roaming, CCX fast roaming,..) consists of// several steps (JOIN, AUTH, ASSOC or REASSOC) and may fail at any step. We purposely// separate this under-trial settings away from pAd->StaActive so that once// this new attempt failed, driver can auto-recover back to the active settings.typedef struct _MLME_AUX { UCHAR BssType; UCHAR Ssid[MAX_LEN_OF_SSID]; UCHAR SsidLen; UCHAR Bssid[MAC_ADDR_LEN]; UCHAR AutoReconnectSsid[MAX_LEN_OF_SSID]; UCHAR AutoReconnectSsidLen; USHORT Alg; UCHAR ScanType; UCHAR Channel; UCHAR CentralChannel; USHORT Aid; USHORT CapabilityInfo; USHORT BeaconPeriod; USHORT CfpMaxDuration; USHORT CfpPeriod; USHORT AtimWin; // Copy supported rate from desired AP's beacon. We are trying to match // AP's supported and extended rate settings. UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR SupRateLen; UCHAR ExtRateLen; HT_CAPABILITY_IE HtCapability; UCHAR HtCapabilityLen; ADD_HT_INFO_IE AddHtInfo; // AP might use this additional ht info IE UCHAR NewExtChannelOffset; //RT_HT_CAPABILITY SupportedHtPhy; // new for QOS QOS_CAPABILITY_PARM APQosCapability; // QOS capability of the current associated AP EDCA_PARM APEdcaParm; // EDCA parameters of the current associated AP QBSS_LOAD_PARM APQbssLoad; // QBSS load of the current associated AP // new to keep Ralink specific feature ULONG APRalinkIe; BSS_TABLE SsidBssTab; // AP list for the same SSID BSS_TABLE RoamTab; // AP list eligible for roaming ULONG BssIdx; ULONG RoamIdx; BOOLEAN CurrReqIsFromNdis; RALINK_TIMER_STRUCT BeaconTimer, ScanTimer; RALINK_TIMER_STRUCT AuthTimer; RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer;#ifdef CONFIG_STA_SUPPORT#endif // CONFIG_STA_SUPPORT //} MLME_AUX, *PMLME_AUX;typedef struct _MLME_ADDBA_REQ_STRUCT{ UCHAR Wcid; // UCHAR pAddr[MAC_ADDR_LEN]; UCHAR BaBufSize; USHORT TimeOutValue; UCHAR TID; UCHAR Token; USHORT BaStartSeq;} MLME_ADDBA_REQ_STRUCT, *PMLME_ADDBA_REQ_STRUCT;typedef struct _MLME_DELBA_REQ_STRUCT{ UCHAR Wcid; // UCHAR Addr[MAC_ADDR_LEN]; UCHAR TID; UCHAR Initiator;} MLME_DELBA_REQ_STRUCT, *PMLME_DELBA_REQ_STRUCT;// assoc struct is equal to reassoctypedef struct _MLME_ASSOC_REQ_STRUCT{ UCHAR Addr[MAC_ADDR_LEN]; USHORT CapabilityInfo; USHORT ListenIntv; ULONG Timeout;} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT;typedef struct _MLME_DISASSOC_REQ_STRUCT{ UCHAR Addr[MAC_ADDR_LEN]; USHORT Reason;} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT;typedef struct _MLME_AUTH_REQ_STRUCT { UCHAR Addr[MAC_ADDR_LEN]; USHORT Alg; ULONG Timeout;} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT;typedef struct _MLME_DEAUTH_REQ_STRUCT { UCHAR Addr[MAC_ADDR_LEN]; USHORT Reason;} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT;typedef struct { ULONG BssIdx;} MLME_JOIN_REQ_STRUCT;typedef struct _MLME_SCAN_REQ_STRUCT { UCHAR Bssid[MAC_ADDR_LEN]; UCHAR BssType; UCHAR ScanType; UCHAR SsidLen; CHAR Ssid[MAX_LEN_OF_SSID];} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT;typedef struct _MLME_START_REQ_STRUCT { CHAR Ssid[MAX_LEN_OF_SSID]; UCHAR SsidLen;} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT;#ifdef CONFIG_STA_SUPPORT#ifdef QOS_DLS_SUPPORT// structure for DLStypedef struct _RT_802_11_DLS { USHORT TimeOut; // Use to time out while slience, unit: second , set by UI USHORT CountDownTimer; // Use to time out while slience,unit: second , used by driver only NDIS_802_11_MAC_ADDRESS MacAddr; // set by UI UCHAR Status; // 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only BOOLEAN Valid; // 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link RALINK_TIMER_STRUCT Timer; // Use to time out while handshake USHORT Sequence; USHORT MacTabMatchWCID; // ASIC BOOLEAN bHTCap; PVOID pAd;} RT_802_11_DLS, *PRT_802_11_DLS;typedef struct _MLME_DLS_REQ_STRUCT { PRT_802_11_DLS pDLS; USHORT Reason;} MLME_DLS_REQ_STRUCT, *PMLME_DLS_REQ_STRUCT;#endif // QOS_DLS_SUPPORT //#endif // CONFIG_STA_SUPPORT //typedef struct PACKED { UCHAR Eid; UCHAR Len; UCHAR Octet[1];} EID_STRUCT,*PEID_STRUCT, BEACON_EID_STRUCT, *PBEACON_EID_STRUCT;typedef struct PACKED _RTMP_TX_RATE_SWITCH{ UCHAR ItemNo;#ifdef RT_BIG_ENDIAN UCHAR Rsv2:2; UCHAR Mode:2; UCHAR Rsv1:1; UCHAR BW:1; UCHAR ShortGI:1; UCHAR STBC:1;#else UCHAR STBC:1; UCHAR ShortGI:1; UCHAR BW:1; UCHAR Rsv1:1; UCHAR Mode:2; UCHAR Rsv2:2;#endif UCHAR CurrMCS; UCHAR TrainUp; UCHAR TrainDown;} RRTMP_TX_RATE_SWITCH, *PRTMP_TX_RATE_SWITCH;// ========================== AP mlme.h ===============================#define TBTT_PRELOAD_TIME 384 // usec. LomgPreamble + 24-byte at 1Mbps#define DEFAULT_DTIM_PERIOD 1// weighting factor to calculate Channel quality, total should be 100%//#define RSSI_WEIGHTING 0//#define TX_WEIGHTING 40//#define RX_WEIGHTING 60#define MAC_TABLE_AGEOUT_TIME 300 // unit: sec#define MAC_TABLE_ASSOC_TIMEOUT 5 // unit: sec#define MAC_TABLE_FULL(Tab) ((Tab).size == MAX_LEN_OF_MAC_TABLE)// AP shall drop the sta if contine Tx fail count reach it.#define MAC_ENTRY_LIFE_CHECK_CNT 20 // packet cnt.// Value domain of pMacEntry->Ssttypedef enum _Sst { SST_NOT_AUTH, // 0: equivalent to IEEE 802.11/1999 state 1 SST_AUTH, // 1: equivalent to IEEE 802.11/1999 state 2 SST_ASSOC // 2: equivalent to IEEE 802.11/1999 state 3} SST;// value domain of pMacEntry->AuthStatetypedef enum _AuthState { AS_NOT_AUTH, AS_AUTH_OPEN, // STA has been authenticated using OPEN SYSTEM AS_AUTH_KEY, // STA has been authenticated using SHARED KEY AS_AUTHENTICATING // STA is waiting for AUTH seq#3 using SHARED KEY} AUTH_STATE;//for-wpa value domain of pMacEntry->WpaState 802.1i D3 p.114typedef enum _ApWpaState { AS_NOTUSE, // 0 AS_DISCONNECT, // 1 AS_DISCONNECTED, // 2 AS_INITIALIZE, // 3 AS_AUTHENTICATION, // 4 AS_AUTHENTICATION2, // 5 AS_INITPMK, // 6 AS_INITPSK, // 7 AS_PTKSTART, // 8 AS_PTKINIT_NEGOTIATING, // 9 AS_PTKINITDONE, // 10 AS_UPDATEKEYS, // 11 AS_INTEGRITY_FAILURE, // 12 AS_KEYUPDATE, // 13} AP_WPA_STATE;// for-wpa value domain of pMacEntry->WpaState 802.1i D3 p.114typedef enum _GTKState { REKEY_NEGOTIATING, REKEY_ESTABLISHED, KEYERROR,} GTK_STATE;// for-wpa value domain of pMacEntry->WpaState 802.1i D3 p.114typedef enum _WpaGTKState { SETKEYS, SETKEYS_DONE,} WPA_GTK_STATE;// ====================== end of AP mlme.h ============================#endif // MLME_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -