mlme.h
来自「Ralink RT61 SoftAP Driver source code. 」· C头文件 代码 · 共 587 行 · 第 1/2 页
H
587 行
UCHAR Rsv1:1;
UCHAR MaxSPLength:2;
UCHAR Rsv2:1;
#else
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;
#endif
} QBSS_STA_INFO_PARM, *PQBSS_STA_INFO_PARM;
// QBSS Info field in QAP's Beacon/ProbeRsp
typedef struct {
UCHAR ParamSetCount:4;
UCHAR Rsv:3;
UCHAR UAPSD:1;
} QBSS_AP_INFO_PARM, *PQBSS_AP_INFO_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 _MLME_QUEUE_ELEM {
UCHAR Msg[MAX_LEN_OF_MLME_BUFFER];
ULONG Machine;
ULONG MsgType;
ULONG MsgLen;
LARGE_INTEGER TimeStamp;
UCHAR Rssi;
UCHAR Channel;
BOOLEAN Occupied;
#ifdef APCLI_SUPPORT
USHORT ifIndex;
#endif
} 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;
#ifdef APCLI_SUPPORT
// 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;
ULONG BssIdx;
ULONG RoamIdx;
BOOLEAN CurrReqIsFromNdis; // TRUE - then we should call NdisMSetInformationComplete()
// FALSE - req is from driver itself.
// no NdisMSetInformationComplete() is required
UCHAR VarIELen; // Length of next VIE include EID & Length
UCHAR VarIEs[MAX_VIE_LEN];
// Record the rssi value when receive Probe Rsp.
UCHAR Rssi;
struct timer_list ProbeTimer;
struct timer_list ApCliAuthTimer;
struct timer_list ApCliAssocTimer;
} MLME_AUX, *PMLME_AUX;
#endif /* APCLI_SUPPORT */
typedef struct _MLME_DISASSOC_REQ_STRUCT{
UCHAR Addr[MAC_ADDR_LEN];
USHORT Reason;
} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_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 _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;
#ifdef APCLI_SUPPORT
// 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_AUTH_REQ_STRUCT {
UCHAR Addr[MAC_ADDR_LEN];
USHORT Alg;
ULONG Timeout;
} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT;
typedef struct _MLME_JOIN_REQ_STRUCT {
UCHAR Bssid[MAC_ADDR_LEN];
UCHAR SsidLen;
CHAR Ssid[MAX_LEN_OF_SSID];
} MLME_JOIN_REQ_STRUCT;
typedef struct _APCLI_CTRL_JOIN_REQ_STRUCT {
USHORT Status;
} STA_CTRL_MSG_STRUCT, *PSTA_CTRL_MSG_STRUCT;
#endif /* APCLI_SUPPORT */
typedef struct {
UCHAR Eid;
UCHAR Len;
CHAR Octet[1];
} EID_STRUCT,*PEID_STRUCT;
// New for WPA cipher suite
typedef struct _RSN_EID_STRUCT {
UCHAR Eid;
UCHAR Length;
UCHAR Oui[4];
USHORT Version;
UCHAR Multicast[4];
USHORT Count;
struct {
UCHAR Oui[4];
} Unicast[1];
} RSN_EID_STRUCT, *PRSN_EID_STRUCT;
typedef struct _MLME_DLS_REQ_STRUCT {
UCHAR Addr[MAC_ADDR_LEN];
USHORT Reason;
} MLME_DLS_REQ_STRUCT, *PMLME_DLS_REQ_STRUCT;
// value domain of pMacEntry->AuthState
typedef 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.114
typedef enum _WpaState {
AS_NOTUSE, //0
AS_DISCONNECT, // 1
AS_DISCONNECTED, // 2
AS_INITIALIZE, // 3
AS_AUTHENTICATION,
AS_AUTHENTICATION2, // 5
AS_INITPMK, // 6
AS_INITPSK, // 7
AS_PTKSTART, // 8
AS_PTKINIT_NEGOTIATING, // 9
AS_PTKINITDONE, // 10
AS_UPDATEKEYS,
AS_INTEGRITY_FAILURE,
AS_KEYUPDATE,
} WPA_STATE;
// For supplicant state machine states. 802.11i Draft 4.1, p. 97
// We simplified it
typedef enum _SsWpaState
{
SS_NOTUSE, // 0
SS_START, // 1
SS_WAIT_MSG_3, // 2
SS_WAIT_GROUP, // 3
SS_FINISH, // 4
SS_KEYUPDATE, // 5
} SS_WPA_STATE;
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;
CIPHER_SUITE WPA2;
// 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
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;
BSS_ENTRY *BssEntry; //[MAX_LEN_OF_BSS_TABLE];
} BSS_TABLE, *PBSS_TABLE;
#define DEFAULT_DTIM_PERIOD 1
#define MAC_TABLE_AGEOUT_TIME 300 // unit: sec
#define MAC_TABLE_ASSOC_TIMEOUT 5 // unit: sec
#endif // MLME_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?