📄 mlme.h
字号:
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/ProbeRsp
typedef struct PACKED {
BOOLEAN bValid; // 1: variable contains valid value
BOOLEAN bQAck;
BOOLEAN bQueueRequest;
BOOLEAN bTxopRequest;
// 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/ProbeRsp
typedef struct PACKED {
BOOLEAN bValid; // 1: variable contains valid value
USHORT StaNum;
UCHAR ChannelUtilization;
USHORT RemainingAdmissionControl; // in unit of 32-us
} QBSS_LOAD_PARM, *PQBSS_LOAD_PARM;
// QOS Capability reported in QAP's BEACON/ProbeRsp
// QOS Capability sent out in QSTA's AssociateReq/ReAssociateReq
typedef struct PACKED {
BOOLEAN bValid; // 1: variable contains valid value
BOOLEAN bQAck;
BOOLEAN bQueueRequest;
BOOLEAN bTxopRequest;
// BOOLEAN bMoreDataAck;
UCHAR EdcaUpdateCount;
} QOS_CAPABILITY_PARM, *PQOS_CAPABILITY_PARM;
typedef struct {
UCHAR Bssid[MAC_ADDR_LEN];
UCHAR 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;
UCHAR 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
// 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;
UCHAR AuthBitMode;
NDIS_802_11_WEP_STATUS WepStatus; // Unicast Encryption Algorithm extract from VAR_IE
UCHAR 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;
} 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;
LARGE_INTEGER TimeStamp;
UCHAR Rssi;
UCHAR Signal;
UCHAR Channel;
BOOLEAN Occupied;
BOOLEAN bReqIsFromNdis;
UCHAR Msg[MAX_LEN_OF_MLME_BUFFER];
} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM;
typedef struct _MLME_QUEUE {
ULONG Num;
ULONG Head;
ULONG Tail;
spinlock_t 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->ActiveCfg.
// 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->ActiveCfg 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;
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;
// 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; // TRUE - then we should call NdisMSetInformationComplete()
// FALSE - req is from driver itself.
// no NdisMSetInformationComplete() is required
RALINK_TIMER_STRUCT BeaconTimer, ScanTimer;
RALINK_TIMER_STRUCT AuthTimer;
RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer;
} MLME_AUX, *PMLME_AUX;
// assoc struct is equal to reassoc
typedef 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;
typedef struct {
UCHAR Eid;
UCHAR Len;
CHAR Octet[1];
} EID_STRUCT,*PEID_STRUCT;
#endif // __MLME_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -