📄 mlme.h
字号:
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 RT_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 /* !RT_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 RT_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 /* !RT_BIG_ENDIAN */} BA_PARM, *PBA_PARM;// 2-byte BA Starting Seq CONTROL fieldtypedef union PACKED { struct PACKED {#ifdef RT_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 /* RT_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 RT_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 /* !RT_BIG_ENDIAN */} BA_CONTROL, *PBA_CONTROL;// 2-byte BAR CONTROL field in BAR frametypedef struct PACKED {#ifdef RT_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 /* !RT_BIG_ENDIAN */} BAR_CONTROL, *PBAR_CONTROL;// BARControl in MTBAR frametypedef struct PACKED {#ifdef RT_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 /* !RT_BIG_ENDIAN */} MTBAR_CONTROL, *PMTBAR_CONTROL;typedef struct PACKED {#ifdef RT_BIG_ENDIAN USHORT TID:4; USHORT Rsv1:12;#else USHORT Rsv1:12; USHORT TID:4;#endif /* !RT_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;// BAREQ AND MTBAREQ have the same subtype BAR, 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 PACKED _FRAME_MTBA_REQ { FRAME_CONTROL FC; USHORT Duration; UCHAR Addr1[MAC_ADDR_LEN]; UCHAR Addr2[MAC_ADDR_LEN]; MTBAR_CONTROL MTBARControl; PER_TID_INFO PerTIDInfo; BASEQ_CONTROL BAStartingSeq;} 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; BASEQ_CONTROL BAStartingSeq; UCHAR BitMap[8];} FRAME_MTBA, *PFRAME_MTBA;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_ACTION_HDR { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action;} FRAME_ACTION_HDR, *PFRAME_ACTION_HDR;//Action Frame//Action Frame Category:Spectrum, Action:Channel Switch. 7.3.2.20typedef struct PACKED _CHAN_SWITCH_ANNOUNCE { UCHAR ElementID; // ID = IE_CHANNEL_SWITCH_ANNOUNCEMENT = 37 UCHAR Len; CHA_SWITCH_ANNOUNCE_IE CSAnnounceIe;} CHAN_SWITCH_ANNOUNCE, *PCHAN_SWITCH_ANNOUNCE;//802.11n : 7.3.2.20atypedef struct PACKED _SECOND_CHAN_OFFSET { UCHAR ElementID; // ID = IE_SECONDARY_CH_OFFSET = 62 UCHAR Len; SEC_CHA_OFFSET_IE SecChOffsetIe;} 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;// Radio Measuement Request Frame Formattypedef struct PACKED _FRAME_RM_REQ_ACTION { HEADER_802_11 Hdr; UCHAR Category; UCHAR Action; UCHAR Token; USHORT Repetition; UCHAR data[0];} FRAME_RM_REQ_ACTION, *PFRAME_RM_REQ_ACTION;typedef struct PACKED { UCHAR ID; UCHAR Length; UCHAR ChannelSwitchMode; UCHAR NewRegClass; UCHAR NewChannelNum; UCHAR ChannelSwitchCount;} HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE, *PHT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE;//// _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 { 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -