📄 mlme.h
字号:
UCHAR rsv2:5; UCHAR ExtendChannelSwitch:1; UCHAR rsv:1; UCHAR BssCoexistMgmtSupport:1;#else UCHAR BssCoexistMgmtSupport:1; UCHAR rsv:1; UCHAR ExtendChannelSwitch:1; UCHAR rsv2:5;#endif // RT_BIG_ENDIAN //}EXT_CAP_INFO_ELEMENT, *PEXT_CAP_INFO_ELEMENT;// 802.11n 7.3.2.61typedef struct PACKED _BSS_2040_COEXIST_ELEMENT{ UCHAR ElementID; // ID = IE_2040_BSS_COEXIST = 72 UCHAR Len; BSS_2040_COEXIST_IE BssCoexistIe;}BSS_2040_COEXIST_ELEMENT, *PBSS_2040_COEXIST_ELEMENT;//802.11n 7.3.2.59typedef struct PACKED _BSS_2040_INTOLERANT_CH_REPORT{ UCHAR ElementID; // ID = IE_2040_BSS_INTOLERANT_REPORT = 73 UCHAR Len; UCHAR RegulatoryClass; UCHAR ChList[0];}BSS_2040_INTOLERANT_CH_REPORT, *PBSS_2040_INTOLERANT_CH_REPORT;// The structure for channel switch annoucement IE. This is in 802.11n D3.03typedef struct PACKED _CHA_SWITCH_ANNOUNCE_IE{ UCHAR SwitchMode; //channel switch mode UCHAR NewChannel; // UCHAR SwitchCount; // } CHA_SWITCH_ANNOUNCE_IE, *PCHA_SWITCH_ANNOUNCE_IE;// The structure for channel switch annoucement IE. This is in 802.11n D3.03typedef struct PACKED _SEC_CHA_OFFSET_IE{ UCHAR SecondaryChannelOffset; // 1: Secondary above, 3: Secondary below, 0: no Secondary } SEC_CHA_OFFSET_IE, *PSEC_CHA_OFFSET_IE;// This structure is extracted from struct RT_HT_CAPABILITYtypedef struct { BOOLEAN bHtEnable; // If we should use ht rate. BOOLEAN bPreNHt; // If we should use ht rate. //Substract from HT Capability IE UCHAR MCSSet[16];} RT_HT_PHY_INFO, *PRT_HT_PHY_INFO;//This structure substracts ralink supports from all 802.11n-related features.//Features not listed here but contained in 802.11n spec are not supported in rt2860.typedef struct {#ifdef RT_BIG_ENDIAN USHORT rsv:5; USHORT AmsduSize:1; // Max receiving A-MSDU size USHORT AmsduEnable:1; // Enable to transmit A-MSDU. Suggest disable. We should use A-MPDU to gain best benifit of 802.11n USHORT RxSTBC:2; // 2 bits USHORT TxSTBC:1; USHORT ShortGIfor40:1; //for40MHz USHORT ShortGIfor20:1; USHORT GF:1; //green field USHORT MimoPs:2;//mimo power safe MMPS_ USHORT ChannelWidth:1;#else USHORT ChannelWidth:1; USHORT MimoPs:2;//mimo power safe MMPS_ USHORT GF:1; //green field USHORT ShortGIfor20:1; USHORT ShortGIfor40:1; //for40MHz USHORT TxSTBC:1; USHORT RxSTBC:2; // 2 bits USHORT AmsduEnable:1; // Enable to transmit A-MSDU. Suggest disable. We should use A-MPDU to gain best benifit of 802.11n USHORT AmsduSize:1; // Max receiving A-MSDU size USHORT rsv:5;#endif //Substract from Addiont HT INFO IE#ifdef RT_BIG_ENDIAN UCHAR RecomWidth:1; UCHAR ExtChanOffset:2; // Please not the difference with following UCHAR NewExtChannelOffset; from 802.11n UCHAR MpduDensity:3; UCHAR MaxRAmpduFactor:2;#else UCHAR MaxRAmpduFactor:2; UCHAR MpduDensity:3; UCHAR ExtChanOffset:2; // Please not the difference with following UCHAR NewExtChannelOffset; from 802.11n UCHAR RecomWidth:1;#endif#ifdef RT_BIG_ENDIAN USHORT rsv2:11; USHORT OBSS_NonHTExist:1; USHORT rsv3:1; USHORT NonGfPresent:1; USHORT OperaionMode:2;#else USHORT OperaionMode:2; USHORT NonGfPresent:1; USHORT rsv3:1; USHORT OBSS_NonHTExist:1; USHORT rsv2:11;#endif // New Extension Channel Offset IE UCHAR NewExtChannelOffset; // Extension Capability IE = 127 UCHAR BSSCoexist2040; } RT_HT_CAPABILITY, *PRT_HT_CAPABILITY;// field in Addtional HT Information IE . typedef struct PACKED {#ifdef RT_BIG_ENDIAN UCHAR SerInterGranu:3; UCHAR S_PSMPSup:1; UCHAR RifsMode:1; UCHAR RecomWidth:1; UCHAR ExtChanOffset:2;#else UCHAR ExtChanOffset:2; UCHAR RecomWidth:1; UCHAR RifsMode:1; UCHAR S_PSMPSup:1; //Indicate support for scheduled PSMP UCHAR SerInterGranu:3; //service interval granularity#endif} ADD_HTINFO, *PADD_HTINFO;typedef struct PACKED{#ifdef RT_BIG_ENDIAN USHORT rsv2:11; USHORT OBSS_NonHTExist:1; USHORT rsv:1; USHORT NonGfPresent:1; USHORT OperaionMode:2; #else USHORT OperaionMode:2; USHORT NonGfPresent:1; USHORT rsv:1; USHORT OBSS_NonHTExist:1; USHORT rsv2:11; #endif} ADD_HTINFO2, *PADD_HTINFO2;// TODO: Need sync with spec about the definition of StbcMcs. In Draft 3.03, it's reserved.typedef struct PACKED{#ifdef RT_BIG_ENDIAN USHORT rsv:4; USHORT PcoPhase:1; USHORT PcoActive:1; USHORT LsigTxopProt:1; USHORT STBCBeacon:1; USHORT DualCTSProtect:1; USHORT DualBeacon:1; USHORT StbcMcs:6;#else USHORT StbcMcs:6; USHORT DualBeacon:1; USHORT DualCTSProtect:1; USHORT STBCBeacon:1; USHORT LsigTxopProt:1; // L-SIG TXOP protection full support USHORT PcoActive:1; USHORT PcoPhase:1; USHORT rsv:4; #endif // RT_BIG_ENDIAN //} ADD_HTINFO3, *PADD_HTINFO3;#define SIZE_ADD_HT_INFO_IE 22typedef struct PACKED{ UCHAR ControlChan; ADD_HTINFO AddHtInfo; ADD_HTINFO2 AddHtInfo2; ADD_HTINFO3 AddHtInfo3; UCHAR MCSSet[16]; // Basic MCS set} ADD_HT_INFO_IE, *PADD_HT_INFO_IE;typedef struct PACKED{ UCHAR NewExtChanOffset;} NEW_EXT_CHAN_IE, *PNEW_EXT_CHAN_IE;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 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;// 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -