📄 mlme.h
字号:
typedef struct PACKED{ UCHAR NewExtChanOffset;} NEW_EXT_CHAN_IE, *PNEW_EXT_CHAN_IE;// 4-byte HTC field. maybe included in any frame except non-QOS data frame. The Order bit must set 1.typedef struct PACKED {#ifdef BIG_ENDIAN UINT32 RDG:1; //RDG / More PPDU UINT32 ACConstraint:1; //feedback request UINT32 rsv:5; //calibration sequence UINT32 ZLFAnnouce:1; // ZLF announcement UINT32 CSISTEERING:2; //CSI/ STEERING UINT32 FBKReq:2; //feedback request UINT32 CalSeq:2; //calibration sequence UINT32 CalPos:2; // calibration position UINT32 MFBorASC:7; //Link adaptation feedback containing recommended MCS. 0x7f for no feedback or not available UINT32 MFS:3; //SET to the received value of MRS. 0x111 for unsolicited MFB. UINT32 MRSorASI:3; // MRQ Sequence identifier. unchanged during entire procedure. 0x000-0x110. UINT32 MRQ:1; //MCS feedback. Request for a MCS feedback UINT32 TRQ:1; //sounding request UINT32 MA:1; //management action payload exist in (QoS Null+HTC)#else UINT32 MA:1; //management action payload exist in (QoS Null+HTC) UINT32 TRQ:1; //sounding request UINT32 MRQ:1; //MCS feedback. Request for a MCS feedback UINT32 MRSorASI:3; // MRQ Sequence identifier. unchanged during entire procedure. 0x000-0x110. UINT32 MFS:3; //SET to the received value of MRS. 0x111 for unsolicited MFB. UINT32 MFBorASC:7; //Link adaptation feedback containing recommended MCS. 0x7f for no feedback or not available UINT32 CalPos:2; // calibration position UINT32 CalSeq:2; //calibration sequence UINT32 FBKReq:2; //feedback request UINT32 CSISTEERING:2; //CSI/ STEERING UINT32 ZLFAnnouce:1; // ZLF announcement UINT32 rsv:5; //calibration sequence UINT32 ACConstraint:1; //feedback request UINT32 RDG:1; //RDG / More PPDU#endif /* !BIG_ENDIAN */} HT_CONTROL, *PHT_CONTROL;// 2-byte QOS CONTROL fieldtypedef struct PACKED {#ifdef BIG_ENDIAN USHORT Txop_QueueSize:8; USHORT AMsduPresent:1; USHORT AckPolicy:2; //0: normal ACK 1:No ACK 2:scheduled under MTBA/PSMP 3: BA USHORT EOSP:1; USHORT TID:4;#else USHORT TID:4; USHORT EOSP:1; USHORT AckPolicy:2; //0: normal ACK 1:No ACK 2:scheduled under MTBA/PSMP 3: BA USHORT AMsduPresent:1; USHORT Txop_QueueSize:8;#endif /* !BIG_ENDIAN */} QOS_CONTROL, *PQOS_CONTROL; // 2-byte Frame control fieldtypedef struct PACKED {#ifdef BIG_ENDIAN USHORT Order:1; // Strict order expected USHORT Wep:1; // Wep data USHORT MoreData:1; // More data bit USHORT PwrMgmt:1; // Power management bit USHORT Retry:1; // Retry status bit USHORT MoreFrag:1; // More fragment bit USHORT FrDs:1; // From DS indication USHORT ToDs:1; // To DS indication USHORT SubType:4; // MSDU subtype USHORT Type:2; // MSDU type USHORT Ver:2; // Protocol version#else USHORT Ver:2; // Protocol version USHORT Type:2; // MSDU type USHORT SubType:4; // MSDU subtype USHORT ToDs:1; // To DS indication USHORT FrDs:1; // From DS indication USHORT MoreFrag:1; // More fragment bit USHORT Retry:1; // Retry status bit USHORT PwrMgmt:1; // Power management bit USHORT MoreData:1; // More data bit USHORT Wep:1; // Wep data USHORT Order:1; // Strict order expected#endif /* !BIG_ENDIAN */} FRAME_CONTROL, *PFRAME_CONTROL;typedef struct PACKED _HEADER_802_11 { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; UCHAR Addr3[MAC_ADDR_LEN];#ifdef BIG_ENDIAN USHORT Sequence:12; USHORT Frag:4;#else USHORT Frag:4; USHORT Sequence:12;#endif /* !BIG_ENDIAN */ UCHAR Octet[0];} HEADER_802_11, *PHEADER_802_11;typedef struct PACKED _FRAME_802_11 { HEADER_802_11 Hdr; UCHAR Octet[1];} FRAME_802_11, *PFRAME_802_11;// QoSNull embedding of management action. When HT Control MA field set to 1.typedef struct PACKED _MA_BODY { UCHAR Category; UCHAR Action; UCHAR Octet[1];} MA_BODY, *PMA_BODY;typedef struct PACKED _HEADER_802_3 { UCHAR DAAddr1[MAC_ADDR_LEN]; UCHAR SAAddr2[MAC_ADDR_LEN]; UCHAR Octet[2];} HEADER_802_3, *PHEADER_802_3;////Block ACK related format// 2-byte BA Parameter field in DELBA frames to terminate an already set up bAtypedef struct PACKED{#ifdef BIG_ENDIAN USHORT TID:4; // value of TC os TS USHORT Initiator:1; // 1: originator 0:recipient USHORT Rsv:11; // always set to 0#else USHORT Rsv:11; // always set to 0 USHORT Initiator:1; // 1: originator 0:recipient USHORT TID:4; // value of TC os TS#endif /* !BIG_ENDIAN */} DELBA_PARM, *PDELBA_PARM;// 2-byte BA Parameter Set field in ADDBA frames to signal parm for setting up a BAtypedef struct PACKED {#ifdef BIG_ENDIAN USHORT BufSize:10; // number of buffe of size 2304 octetsr USHORT TID:4; // value of TC os TS USHORT BAPolicy:1; // 1: immediately BA 0:delayed BA USHORT AMSDUSupported:1; // 0: not permitted 1: permitted#else USHORT AMSDUSupported:1; // 0: not permitted 1: permitted USHORT BAPolicy:1; // 1: immediately BA 0:delayed BA USHORT TID:4; // value of TC os TS USHORT BufSize:10; // number of buffe of size 2304 octetsr#endif /* !BIG_ENDIAN */} BA_PARM, *PBA_PARM;// 2-byte BA Starting Seq CONTROL fieldtypedef union PACKED { struct PACKED {#ifdef BIG_ENDIAN USHORT StartSeq:12; // sequence number of the 1st MSDU for which this BAR is sent USHORT FragNum:4; // always set to 0#else USHORT FragNum:4; // always set to 0 USHORT StartSeq:12; // sequence number of the 1st MSDU for which this BAR is sent#endif /* BIG_ENDIAN */ } field; USHORT word;} BASEQ_CONTROL, *PBASEQ_CONTROL;//BAControl and BARControl are the same// 2-byte BA CONTROL field in BA frametypedef struct PACKED {#ifdef BIG_ENDIAN USHORT TID:4; USHORT Rsv:9; USHORT Compressed:1; USHORT MTID:1; //EWC V1.24 USHORT ACKPolicy:1; // only related to N-Delayed BA. But not support in RT2860b. 0:NormalACK 1:No ACK#else USHORT ACKPolicy:1; // only related to N-Delayed BA. But not support in RT2860b. 0:NormalACK 1:No ACK USHORT MTID:1; //EWC V1.24 USHORT Compressed:1; USHORT Rsv:9; USHORT TID:4;#endif /* !BIG_ENDIAN */} BA_CONTROL, *PBA_CONTROL;// 2-byte BAR CONTROL field in BAR frametypedef struct PACKED {#ifdef BIG_ENDIAN USHORT TID:4; USHORT Rsv1:9; USHORT Compressed:1; USHORT MTID:1; //if this bit1, use FRAME_MTBA_REQ, if 0, use FRAME_BA_REQ USHORT ACKPolicy:1;#else USHORT ACKPolicy:1; // 0:normal ack, 1:no ack. USHORT MTID:1; //if this bit1, use FRAME_MTBA_REQ, if 0, use FRAME_BA_REQ USHORT Compressed:1; USHORT Rsv1:9; USHORT TID:4;#endif /* !BIG_ENDIAN */} BAR_CONTROL, *PBAR_CONTROL;// BARControl in MTBAR frametypedef struct PACKED {#ifdef BIG_ENDIAN USHORT NumTID:4; USHORT Rsv1:9; USHORT Compressed:1; USHORT MTID:1; USHORT ACKPolicy:1;#else USHORT ACKPolicy:1; USHORT MTID:1; USHORT Compressed:1; USHORT Rsv1:9; USHORT NumTID:4;#endif /* !BIG_ENDIAN */} MTBAR_CONTROL, *PMTBAR_CONTROL;typedef struct PACKED {#ifdef BIG_ENDIAN USHORT TID:4; USHORT Rsv1:12;#else USHORT Rsv1:12; USHORT TID:4;#endif /* !BIG_ENDIAN */} PER_TID_INFO, *PPER_TID_INFO;typedef struct { PER_TID_INFO PerTID; BASEQ_CONTROL BAStartingSeq;} EACH_TID, *PEACH_TID;typedef struct PACKED _PSPOLL_FRAME { FRAME_CONTROL FC; USHORT Aid; UCHAR Bssid[MAC_ADDR_LEN]; UCHAR Ta[MAC_ADDR_LEN];} PSPOLL_FRAME, *PPSPOLL_FRAME;typedef struct PACKED _RTS_FRAME { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN];}RTS_FRAME, *PRTS_FRAME;// 802.11n BAR use compressed bitmap.typedef struct PACKED _FRAME_BA_REQ { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; BAR_CONTROL BARControl; BASEQ_CONTROL BAStartingSeq;} FRAME_BA_REQ, *PFRAME_BA_REQ;//typedef struct _FRAME_MTBA_REQ { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; MTBAR_CONTROL MTBARControl; UCHAR Octet[1]; // EACH_TID} FRAME_MTBA_REQ, *PFRAME_MTBA_REQ;// Compressed format is mandantory in HT STAtypedef struct PACKED _FRAME_MTBA { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; BA_CONTROL BAControl; UCHAR Octet[1]; //repeated of BASEQ_CONTROL+bitmap[8]} FRAME_MTBA, *PFRAME_MTBA;//Action Frame//Action Frame Category:Spectrum, Action:Channel Switch. 7.3.2.20typedef struct PACKED _CHAN_SWITCH_ANNOUNCE { UCHAR ElementIE; UCHAR Len; UCHAR Mode; UCHAR NewChannel; UCHAR CSCount;} CHAN_SWITCH_ANNOUNCE, *PCHAN_SWITCH_ANNOUNCE;//802.11n : 7.3.2.20atypedef struct PACKED _SECOND_CHAN_OFFSET { UCHAR ElementIE; UCHAR Len; UCHAR Mode; UCHAR NewChannel; UCHAR CSCount;} SECOND_CHAN_OFFSET, *PSECOND_CHAN_OFFSET;typedef struct PACKED _FRAME_SPETRUM_CS { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; CHAN_SWITCH_ANNOUNCE CSAnnounce; SECOND_CHAN_OFFSET SecondChannel;} FRAME_SPETRUM_CS, *PFRAME_SPETRUM_CS;typedef struct PACKED _FRAME_ADDBA_REQ { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; UCHAR Token; // 1 BA_PARM BaParm; // 2 - 10 USHORT TimeOutValue; // 0 - 0 BASEQ_CONTROL BaStartSeq; // 0-0} FRAME_ADDBA_REQ, *PFRAME_ADDBA_REQ;typedef struct PACKED _FRAME_ADDBA_RSP { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; UCHAR Token; USHORT StatusCode; BA_PARM BaParm; //0 - 2 USHORT TimeOutValue;} FRAME_ADDBA_RSP, *PFRAME_ADDBA_RSP;typedef struct PACKED _FRAME_DELBA_REQ { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; DELBA_PARM DelbaParm; USHORT ReasonCode;} FRAME_DELBA_REQ, *PFRAME_DELBA_REQ;//7.2.1.7typedef struct PACKED _FRAME_BAR { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; BAR_CONTROL BarControl; BASEQ_CONTROL StartingSeq;} FRAME_BAR, *PFRAME_BAR;//7.2.1.7typedef struct PACKED _FRAME_BA { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; BAR_CONTROL BarControl; BASEQ_CONTROL StartingSeq; UCHAR bitmask[8];} FRAME_BA, *PFRAME_BA;typedef struct PACKED _FRAME_PSMP_ACTION { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; UCHAR Psmp; // 7.3.1.25} FRAME_PSMP_ACTION, *PFRAME_PSMP_ACTION;typedef struct PACKED _FRAME_RADIO_ACTION { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; UCHAR Token; USHORT Repetition; UCHAR data[0];} FRAME_RADIO_ACTION, *PFRAME_RADIO_ACTION;//// _Limit must be the 2**n - 1// _SEQ1 , _SEQ2 must be within 0 ~ _Limit// #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 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -