/** @file IEEE_types.h
|
*
|
* @brief This file contains definitions relating to messages specified in the
|
* IEEE 802.11 spec.
|
*
|
* Copyright (C) 2014-2017, Marvell International Ltd.
|
*
|
* This software file (the "File") is distributed by Marvell International
|
* Ltd. under the terms of the GNU General Public License Version 2, June 1991
|
* (the "License"). You may use, redistribute and/or modify this File in
|
* accordance with the terms and conditions of the License, a copy of which
|
* is available by writing to the Free Software Foundation, Inc.,
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
|
* worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
*
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
* this warranty disclaimer.
|
*/
|
|
/******************************************************
|
Change log:
|
03/07/2014: Initial version
|
******************************************************/
|
#ifndef _IEEE_TYPES_H_
|
#define _IEEE_TYPES_H_
|
|
/*==========================================================================*/
|
/* INCLUDE FILES */
|
/*==========================================================================*/
|
#include "wltypes.h"
|
|
/*==========================================================================*/
|
/* PUBLIC DEFINITIONS */
|
/*==========================================================================*/
|
|
#define IS_BROADCAST(macaddr) ((*(UINT16 *)macaddr == 0xffff) && \
|
(*(UINT16 *)((UINT8 *)macaddr+2) == 0xffff) && \
|
(*(UINT16 *)((UINT8 *)macaddr+4) == 0xffff))
|
|
#define IS_MULTICAST(macaddr) ((*(UINT8*)macaddr & 0x01) == 0x01)
|
|
#define IS_GROUP(macaddr) ((*(UINT8*)macaddr & 0x01) == 0x01)
|
|
#define ADDR_NOT_EQUAL(a, b) (((a)[0] != (b)[0]) || ((a)[1] != (b)[1]) || \
|
((a)[2] != (b)[2]) || ((a)[3] != (b)[3]) || \
|
((a)[4] != (b)[4]) || ((a)[5] != (b)[5]))
|
|
#define LLC_SNAP_SIZE 6
|
#define ETHERTYPE_LEN 2
|
|
#define IEEE_MSG_TYPE(Hdr_p) ((Hdr_p)->FrmCtl.Type)
|
#define IEEE_MSG_SUBTYPE(Hdr_p) ((Hdr_p)->FrmCtl.Subtype)
|
|
/*--------------------------------------------------------------*/
|
/* Reason Codes - these codes are used in management message */
|
/* frame bodies to indicate why an action is taking place (such */
|
/* as a disassociation or deauthentication). */
|
/*--------------------------------------------------------------*/
|
#define IEEEtypes_REASON_RSVD 0
|
#define IEEEtypes_REASON_UNSPEC 1
|
#define IEEEtypes_REASON_PRIOR_AUTH_INVALID 2
|
#define IEEEtypes_REASON_DEAUTH_LEAVING 3
|
#define IEEEtypes_REASON_DISASSOC_INACTIVE 4
|
#define IEEEtypes_REASON_DISASSOC_AP_BUSY 5
|
#define IEEEtypes_REASON_CLASS2_NONAUTH 6
|
#define IEEEtypes_REASON_CLASS3_NONASSOC 7
|
#define IEEEtypes_REASON_DISASSOC_STA_HASLEFT 8
|
#define IEEEtypes_REASON_CANT_ASSOC_NONAUTH 9
|
/***************802.11h Reasons***************/
|
#define IEEEtypes_REASON_DISASSOC_BAD_POWERCAP 10
|
#define IEEEtypes_REASON_DISASSOC_BAD_SUPPCHAN 11
|
/***************802.11v Reasons***************/
|
#define IEEEtypes_REASON_BSS_TRANSITION_MGMT 12
|
/***************WPA Reasons*******************/
|
#define IEEEtypes_REASON_INVALID_IE 13
|
#define IEEEtypes_REASON_MIC_FAILURE 14
|
#define IEEEtypes_REASON_4WAY_HANDSHK_TIMEOUT 15
|
#define IEEEtypes_REASON_GRP_KEY_UPD_TIMEOUT 16
|
#define IEEEtypes_REASON_IE_4WAY_DIFF 17
|
#define IEEEtypes_REASON_INVALID_MCAST_CIPHER 18
|
#define IEEEtypes_REASON_INVALID_UNICAST_CIPHER 19
|
#define IEEEtypes_REASON_INVALID_AKMP 20
|
#define IEEEtypes_REASON_UNSUPT_RSN_VER 21
|
#define IEEEtypes_REASON_INVALID_RSN_CAP 22
|
#define IEEEtypes_REASON_8021X_AUTH_FAIL 23
|
#define IEEEtypes_REASON_CIPHER_POLICY_REJECT 24
|
/*************** 802.11z(TDLS) Reasons*************/
|
#define IEEEtypes_REASON_TDLS_TEARDOWN_TDLSPEER_UNREACHABLE 25
|
#define IEEEtypes_REASON_TDLS_TEARDOWN_UNSPEC 26
|
/***************802.11e Reasons***************/
|
#define IEEEtypes_REASON_DISASSOC_UNSPEC_QOS 32
|
#define IEEEtypes_REASON_DISASSOC_QAP_NO_BNDWDTH 33
|
#define IEEEtypes_REASON_DISASSOC_FRM_LOSS_BAD_CH 34
|
#define IEEEtypes_REASON_DISASSOC_QSTA_VIOL_TXOP 35
|
#define IEEEtypes_REASON_REQ_PEER_LEAVE_QBSS 36
|
#define IEEEtypes_REASON_REQ_PEER_NO_THANKS 37
|
#define IEEEtypes_REASON_REQ_PEER_ACM_MISMATCH 38
|
#define IEEEtypes_REASON_REQ_PEER_TIMEOUT 39
|
#define IEEEtypes_REASON_PEER_QSTA_NO_SUPP_CIPHER 45
|
/*********************************************/
|
|
/*------------------------------------------------------------*/
|
/* Status Codes - these codes are used in management message */
|
/* frame bodies to indicate the results of an operation (such */
|
/* as association, reassociation, and authentication). */
|
/*------------------------------------------------------------*/
|
#define IEEEtypes_STATUS_SUCCESS 0
|
#define IEEEtypes_STATUS_UNSPEC_FAILURE 1
|
|
/****************BEGIN: 802.11z(TDLS) status codes********/
|
#define IEEEtypes_STATUS_TDLS_WAKEUPSCHEDULE_REJECTED_BUT_ALT_PROVIDED 2
|
#define IEEEtypes_STATUS_TDLS_WAKEUPSCHEDULE_REJECTED 3
|
#define IEEEtypes_STATUS_SECURITY_DISABLED 5
|
#define IEEEtypes_STATUS_UNACCEPTABLE_LIFETIME 6
|
#define IEEEtypes_STATUS_NOT_IN_SAME_BSS 7
|
/****************END: 802.11z(TDLS) status codes********/
|
#define IEEEtypes_STATUS_CAPS_UNSUPPORTED 10
|
#define IEEEtypes_STATUS_REASSOC_NO_ASSOC 11
|
#define IEEEtypes_STATUS_ASSOC_DENIED_UNSPEC 12
|
#define IEEEtypes_STATUS_UNSUPPORTED_AUTHALG 13
|
#define IEEEtypes_STATUS_RX_AUTH_NOSEQ 14
|
#define IEEEtypes_STATUS_CHALLENGE_FAIL 15
|
#define IEEEtypes_STATUS_AUTH_TIMEOUT 16
|
#define IEEEtypes_STATUS_ASSOC_DENIED_BUSY 17
|
#define IEEEtypes_STATUS_ASSOC_DENIED_RATES 18
|
#define IEEEtypes_STATUS_ASSOC_DENIED_NOSHORT 19
|
#define IEEEtypes_STATUS_ASSOC_DENIED_NOPBCC 20
|
#define IEEEtypes_STATUS_ASSOC_DENIED_NOAGILITY 21
|
#define IEEEtypes_STATUS_ASSOC_DENIED_SPECMGMT_REQD 22
|
#define IEEEtypes_STATUS_ASSOC_DENIED_BAD_POWERCAP 23
|
#define IEEEtypes_STATUS_ASSOC_DENIED_BAD_SUPPCHAN 24
|
#define IEEEtypes_STATUS_ASSOC_DENIED_NOSHORTSLOTTIME 25
|
#define IEEEtypes_STATUS_ASSOC_DENIED_NODSSSOFDM 26
|
|
#define IEEEtypes_STATUS_R0KH_UNAVAILABLE 28
|
|
#define IEEEtypes_STATUS_TEMP_REJECTION 30
|
#define IEEEtypes_STATUS_ROBUST_MGMT_VIOLAION 31
|
#define IEEEtypes_STATUS_UNSPEC_QOS_FAILURE 32
|
#define IEEEtypes_STATUS_ASSOC_DENIED_QAP_INSUFF_BNDWDTH 33
|
#define IEEEtypes_STATUS_ASSOC_DENIED_EXC_FRM_LOSS_BAD_CH 34
|
#define IEEEtypes_STATUS_ASSOC_DENIED_STA_NO_QOS_SUPP 35
|
|
#define IEEEtypes_STATUS_REQ_DECLINED 37
|
#define IEEEtypes_STATUS_REQ_FAIL_INVALID_PARAMS 38
|
#define IEEEtypes_STATUS_FAIL_TS_AP_THINKS_ITS_SMART_THO 39
|
#define IEEEtypes_STATUS_INVALID_IE 40
|
#define IEEEtypes_STATUS_INVALID_GROUP_CIPHER 41
|
#define IEEEtypes_STATUS_INVALID_PAIRWISE_CIPHER 42
|
#define IEEEtypes_STATUS_INVALID_AKMP 43
|
#define IEEEtypes_STATUS_UNSUPPORTED_RSN_VER 44
|
#define IEEEtypes_STATUS_INVALID_RSN_CAPABILITIES 45
|
#define IEEEtypes_STATUS_CIPHER_POLICY_REJECT 46
|
#define IEEEtypes_STATUS_FAIL_TS_TRY_LATER_AFTER_TS_DELAY 47
|
#define IEEEtypes_STATUS_DIRECT_LINK_NOT_ALLOWED 48
|
#define IEEEtypes_STATUS_DEST_STA_NOT_IN_QBSS 49
|
#define IEEEtypes_STATUS_DEST_STA_NOT_A_QSTA 50
|
#define IEEEtypes_STATUS_LISTEN_INTERVAL_TOO_LARGE 51
|
#define IEEEtypes_STATUS_INVALID_FT_ACT_FRAME_COUNT 52
|
#define IEEEtypes_STATUS_INVALID_PMKID 53
|
#define IEEEtypes_STATUS_INVALID_MDIE 54
|
#define IEEEtypes_STATUS_INVALID_FTIE 55
|
#define IEEEtypes_STATUS_REQ_TCLAS_NOT_SUPPORTED 56
|
#define IEEEtypes_STATUS_INSF_TCLAS_RSOURCES 57
|
#define IEEEtypes_STATUS_TS_FAIL_TRANS_SUGGESTED 58
|
#define IEEEtypes_STATUS_UAPSD_COEX_NOT_SUPPORTED 59
|
#define IEEEtypes_STATUS_REQ_UAPSD_COEX_MODE_NOT_SUP 60
|
#define IEEEtypes_STATUS_REQ_INVL_WITH_UAPSD_COEX_NOT_SUP 61
|
#define IEEEtypes_STATUS_INVALID_CONTENTS_OF_RSNIE 72
|
|
/*--------------------------------------------*/
|
/* Various sizes used in IEEE 802.11 messages */
|
/*--------------------------------------------*/
|
#define IEEEtypes_ADDRESS_SIZE 6
|
#define IEEEtypes_BITMAP_SIZE 251
|
#define IEEEtypes_CHALLENGE_TEXT_SIZE 128
|
#define IEEEtypes_CHALLENGE_TEXT_LEN 128
|
#define IEEEtypes_MAX_DATA_RATES 8
|
#define IEEEtypes_MAX_DATA_BODY_LEN 2312
|
#define IEEEtypes_MAX_MGMT_BODY_LEN 2312
|
#define IEEEtypes_SSID_SIZE 32
|
#define IEEEtypes_TIME_STAMP_SIZE 8
|
#define IEEEtypes_MAX_CHANNELS 14
|
#define IEEEtypes_MAX_BSS_DESCRIPTS 16
|
#define IEEEtypes_MAX_DATA_RATES_G 14
|
#define IEEEtypes_COUNTRY_CODE_SIZE 3
|
#define IEEEtypes_COUNTRY_MAX_TRIPLETS 83
|
|
/*---------------------------------------------------------------------*/
|
/* Define masks used to extract fields from the capability information */
|
/* structure in a beacon message. */
|
/*---------------------------------------------------------------------*/
|
#define IEEEtypes_CAP_INFO_ESS 1
|
#define IEEEtypes_CAP_INFO_IBSS 2
|
#define IEEEtypes_CAP_INFO_CF_POLLABLE 4
|
#define IEEEtypes_CAP_INFO_CF_POLL_RQST 8
|
#define IEEEtypes_CAP_INFO_PRIVACY 16
|
#define IEEEtypes_CAP_INFO_SHORT_PREAMB 32
|
#define IEEEtypes_CAP_INFO_PBCC 64
|
#define IEEEtypes_CAP_INFO_CHANGE_AGILITY 128
|
#define IEEEtypes_CAP_INFO_SHORT_SLOT_TIME 0x0400
|
#define IEEEtypes_CAP_INFO_DSSS_OFDM 0x2000
|
|
/*---------------------------*/
|
/* Miscellaneous definitions */
|
/*---------------------------*/
|
#define IEEEtypes_PROTOCOL_VERSION 0
|
|
#define IEEEtypes_BASIC_RATE_FLAG 0x80
|
/* */
|
/* Used to determine which rates in a list are designated as basic rates */
|
/* */
|
|
#define IEEEtypes_SUPP_RATE_MASK 0x7F
|
|
#define IEEE_DATA_RATE_1Mbps 2
|
#define IEEE_DATA_RATE_2Mbps 4
|
#define IEEE_DATA_RATE_5_5Mbps 11
|
#define IEEE_DATA_RATE_11Mbps 22
|
|
#define IEEE_DATA_RATE_6Mbps 12
|
#define IEEE_DATA_RATE_9Mbps 18
|
#define IEEE_DATA_RATE_12Mbps 24
|
#define IEEE_DATA_RATE_18Mbps 36
|
#define IEEE_DATA_RATE_24Mbps 48
|
#define IEEE_DATA_RATE_36Mbps 72
|
#define IEEE_DATA_RATE_48Mbps 96
|
#define IEEE_DATA_RATE_54Mbps 108
|
|
/* */
|
/* Used to mask off the basic rate flag, if one exists, for given */
|
/* data rates */
|
/* */
|
|
#define IEEEtypes_RATE_MIN 2
|
/* */
|
/* The minimum allowable data rate in units of kb/s */
|
/* */
|
|
#define IEEEtypes_RATE_MAX 127
|
/* */
|
/* The maximum allowable data rate in units of kb/s */
|
/* */
|
|
#define IEEEtypes_TIME_UNIT 1024
|
/* */
|
/* The number of microseconds in 1 time unit, as specified in the */
|
/* 802.11 spec */
|
/* */
|
#define CONVERT_TU_TO_MILLISECOND(x) (x * 1024 / 1000)
|
#define CONVERT_TU_TO_MICROSECOND(x) (x * 1024)
|
|
/**
|
* 802.11 frame classes
|
*/
|
#define IEEEtypes_CLASS1_FRAME 1
|
#define IEEEtypes_CLASS2_FRAME 2
|
#define IEEEtypes_CLASS3_FRAME 3
|
|
/*
|
* Structure of an internet header, naked of options.
|
*
|
* ip_len and ip_off are sint16, rather than UINT16
|
* pragmatically since otherwise unsigned comparisons can result
|
* against negative integers quite easily, and fail in subtle ways.
|
*/
|
typedef MLAN_PACK_START struct {
|
#if 1 //BYTE_ORDER == LITTLE_ENDIAN
|
UINT8 ip_hl:4; /* header length */
|
UINT8 ip_v:4; /* version */
|
#endif
|
UINT8 ip_tos; /* type of service */
|
sint16 ip_len; /* total length */
|
UINT16 ip_id; /* identification */
|
sint16 ip_off; /* fragment offset field */
|
UINT8 ip_ttl; /* time to live */
|
UINT8 ip_p; /* protocol */
|
UINT16 ip_sum; /* checksum */
|
UINT32 ip_src; // source ip addr
|
UINT32 ip_dst; // dest ip address
|
} MLAN_PACK_END ip_hdr_t;
|
#define IP_DF 0x4000 /* dont fragment flag */
|
#define IP_MF 0x2000 /* more fragments flag */
|
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
|
|
#define IP_V4 4
|
#define IP_V6 6
|
#define IP_PROT_TCP 0x06
|
#define IP_PROT_UDP 0x11
|
|
typedef MLAN_PACK_START struct {
|
UINT8 priority:4;
|
UINT8 ip_v:4;
|
UINT8 flow_lbl[3];
|
UINT16 payload_len;
|
UINT8 next_hdr;
|
UINT8 hop_limit;
|
UINT8 ip_src[16]; /* source ip addr */
|
UINT8 ip_dst[16]; /* dest ip address */
|
} MLAN_PACK_END ipv6_hdr_t;
|
|
#define ETHTYPE_ARP 0x0806
|
#define ETHTYPE_IP 0x0800
|
#define ARP_OP_REQ 1
|
#define ARP_OP_RESP 2
|
#define ETHTYPE_IPV6 0x86DD
|
#define ICMPV6_TYPE 0x3a
|
|
/* See RFC 826 for ARP protocol description. */
|
typedef MLAN_PACK_START struct {
|
UINT16 ar_hrd; // hardware address space
|
UINT16 ar_pro; // prototcol address space
|
UINT8 ar_hln; // byte length of hardware addr
|
UINT8 ar_pln; // byte length of protocol addr
|
UINT16 ar_op; // ARP opcode
|
} MLAN_PACK_END arp_hdr_t;
|
|
typedef MLAN_PACK_START struct {
|
arp_hdr_t hdr; // arp header
|
UINT8 ar_sha[IEEEtypes_ADDRESS_SIZE]; // sender hardware addr
|
UINT8 ar_spa[4]; // sender protocol addr
|
UINT8 ar_tha[IEEEtypes_ADDRESS_SIZE]; // target hardware addr
|
UINT8 ar_tpa[4]; // target protocol addr
|
} MLAN_PACK_END arp_t;
|
|
/* icmp header struct of echo request and echo reply */
|
typedef MLAN_PACK_START struct {
|
UINT8 type;
|
UINT8 code;
|
UINT16 sum;
|
UINT16 id;
|
UINT16 seq;
|
} MLAN_PACK_END icmp_hdr_t;
|
#define ICMP_ECHO_REQ 8
|
#define ICMP_ECHO_REPLY 0
|
|
typedef MLAN_PACK_START struct {
|
UINT8 type;
|
UINT8 icode;
|
UINT16 csum;
|
UINT32 reserved;
|
UINT8 target_addr[16];
|
} MLAN_PACK_END icmpv6_nsol_t;
|
#define ICMPV6_TYPE_NSOL 0x87
|
#define ICMPV6_TYPE_NADV 0x88
|
|
#define ICMPV6_NADV_FLAG_RTR (1<<31)
|
#define ICMPV6_NADV_FLAG_SOL (1<<30)
|
#define ICMPV6_NADV_FLAG_OVR (1<<29)
|
|
#define ICMPV6_OPT_TYPE_TLA (0x2)
|
#define ICMPV6_OPT_TYPE_TLA_LEN (0x1)
|
|
typedef MLAN_PACK_START struct {
|
UINT8 type;
|
UINT8 icode;
|
UINT16 csum;
|
UINT32 reserved;
|
UINT8 target_addr[16];
|
UINT8 icmp_option_type;
|
UINT8 icmp_option_length;
|
UINT8 macAddr[6];
|
} MLAN_PACK_END icmpv6_nadv_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.1x Types
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START enum {
|
IEEE_8021X_PACKET_TYPE_EAP_PACKET = 0,
|
IEEE_8021X_PACKET_TYPE_EAPOL_START = 1,
|
IEEE_8021X_PACKET_TYPE_EAPOL_LOGOFF = 2,
|
IEEE_8021X_PACKET_TYPE_EAPOL_KEY = 3,
|
IEEE_8021X_PACKET_TYPE_ASF_ALERT = 4,
|
|
} MLAN_PACK_END IEEEtypes_8021x_PacketType_e;
|
|
typedef MLAN_PACK_START enum {
|
IEEE_8021X_CODE_TYPE_REQUEST = 1,
|
IEEE_8021X_CODE_TYPE_RESPONSE = 2,
|
IEEE_8021X_CODE_TYPE_SUCCESS = 3,
|
IEEE_8021X_CODE_TYPE_FAILURE = 4,
|
|
} MLAN_PACK_END IEEEtypes_8021x_CodeType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 PHY Types
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START enum {
|
IEEE_PHY_TYPE_UNKNOWN = 0,
|
|
IEEE_PHY_TYPE_FHSS_2_4_GHz = 1,
|
IEEE_PHY_TYPE_DSSS_2_4_GHz = 2,
|
IEEE_PHY_TYPE_IR_BASEBAND = 3,
|
IEEE_PHY_TYPE_OFDM_5GHz = 4,
|
IEEE_PHY_TYPE_HRDSSS = 5,
|
IEEE_PHY_TYPE_ERP = 6,
|
|
} MLAN_PACK_END IEEEtypes_PhyType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 Message Types
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef enum {
|
IEEE_TYPE_MANAGEMENT = 0,
|
IEEE_TYPE_CONTROL,
|
IEEE_TYPE_DATA
|
} IEEEtypes_MsgType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 Mangagement SubTypes
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef enum {
|
IEEE_MSG_ASSOCIATE_RQST = 0,
|
IEEE_MSG_ASSOCIATE_RSP,
|
IEEE_MSG_REASSOCIATE_RQST,
|
IEEE_MSG_REASSOCIATE_RSP,
|
IEEE_MSG_PROBE_RQST,
|
IEEE_MSG_PROBE_RSP,
|
IEEE_MSG_BEACON = 8,
|
IEEE_MSG_ATIM,
|
IEEE_MSG_DISASSOCIATE,
|
IEEE_MSG_AUTHENTICATE,
|
IEEE_MSG_DEAUTHENTICATE,
|
IEEE_MSG_ACTION
|
} IEEEtypes_MgmtSubType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 Control Frame SubTypes
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef enum {
|
BF_RPRT_POLL = 4,
|
NDPA = 5,
|
BAR = 8,
|
BA = 9,
|
PS_POLL = 10,
|
RTS = 11,
|
CTS = 12,
|
ACK = 13,
|
CF_END = 14,
|
CF_END_CF_ACK = 15,
|
} IEEEtypes_CtlSubType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 Data Frame SubTypes
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef enum {
|
DATA = 0,
|
DATA_CF_ACK = 1,
|
DATA_CF_POLL = 2,
|
DATA_CF_ACK_CF_POLL = 3,
|
NULL_DATA = 4,
|
CF_ACK = 5,
|
CF_POLL = 6,
|
CF_ACK_CF_POLL = 7,
|
QOS_DATA = 8,
|
QOS_DATA_CF_ACK = 9,
|
QOS_DATA_CF_POLL = 10,
|
QOS_DATA_CF_ACK_CF_POLL = 11,
|
QOS_NULL = 12,
|
RESERVED_13 = 13,
|
QOS_CF_POLL_NO_DATA = 14,
|
QOS_CF_ACK_CF_POLL_NO_DATA = 15
|
} IEEEtypes_DataSubType_e;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11 Action Frame Categories
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START enum {
|
IEEE_MGMT_ACTION_CATEGORY_SPECTRUM_MGMT = 0,
|
IEEE_MGMT_ACTION_CATEGORY_QOS = 1,
|
IEEE_MGMT_ACTION_CATEGORY_DLS = 2,
|
IEEE_MGMT_ACTION_CATEGORY_BLOCK_ACK = 3,
|
IEEE_MGMT_ACTION_CATEGORY_UNPROTECT_PUBLIC = 4,
|
IEEE_MGMT_ACTION_CATEGORY_RADIO_RSRC = 5,
|
IEEE_MGMT_ACTION_CATEGORY_FAST_BSS_TRANS = 6,
|
IEEE_MGMT_ACTION_CATEGORY_HT = 7,
|
IEEE_MGMT_ACTION_CATEGORY_SA_QUERY = 8,
|
IEEE_MGMT_ACTION_CATEGORY_PROTECT_PUBLIC = 9,
|
IEEE_MGMT_ACTION_CATEGORY_PROTECT_WNM = 10,
|
IEEE_MGMT_ACTION_CATEGORY_UNPROTECT_WNM = 11,
|
IEEE_MGMT_ACTION_CATEGORY_TDLS = 12,
|
|
IEEE_MGMT_ACTION_CATEGORY_WMM_TSPEC = 17,
|
IEEE_MGMT_ACTION_CATEGORY_VHT = 21,
|
IEEE_MGMT_ACTION_CATEGORY_PROTECT_VENDOR_SPECIFIC = 126,
|
IEEE_MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC = 127
|
} MLAN_PACK_END IEEEtypes_ActionCategory_e;
|
|
/*
|
** The possible types of commands sent from the SME
|
*/
|
typedef enum {
|
SME_CMD_NONE,
|
|
SME_CMD_AUTHENTICATE,
|
SME_CMD_ASSOCIATE,
|
SME_CMD_REASSOCIATE,
|
|
SME_CMD_DEAUTHENTICATE,
|
SME_CMD_DISASSOCIATE,
|
|
SME_CMD_START,
|
SME_CMD_JOIN,
|
|
SME_CMD_RESET,
|
SME_CMD_SCAN,
|
|
} IEEEtypes_SmeCmd_e;
|
|
/*
|
** The possible types of Basic Service Sets
|
*/
|
typedef enum {
|
BSS_INFRASTRUCTURE = 1,
|
BSS_INDEPENDENT,
|
BSS_ANY,
|
BSS_TDLS,
|
// Firmware internal BSS types only
|
BSS_BT_AMP = 0xF0,
|
BSS_LAST = 0xFF
|
} IEEEtypes_Bss_e;
|
|
/*
|
** 802.11 Element and Subelement IDs
|
*/
|
typedef MLAN_PACK_START enum {
|
ELEM_ID_SSID = 0,
|
ELEM_ID_SUPPORTED_RATES = 1,
|
ELEM_ID_FH_PARAM_SET = 2,
|
ELEM_ID_DS_PARAM_SET = 3,
|
ELEM_ID_CF_PARAM_SET = 4,
|
ELEM_ID_TIM = 5,
|
ELEM_ID_IBSS_PARAM_SET = 6,
|
ELEM_ID_COUNTRY = 7,
|
ELEM_ID_HOP_PARAM = 8,
|
ELEM_ID_HOP_TABLE = 9,
|
ELEM_ID_REQUEST = 10,
|
ELEM_ID_BSS_LOAD = 11,
|
ELEM_ID_EDCA_PARAM_SET = 12,
|
ELEM_ID_TSPEC = 13,
|
ELEM_ID_TCLAS = 14,
|
ELEM_ID_SCHEDULE = 15,
|
ELEM_ID_CHALLENGE_TEXT = 16,
|
|
ELEM_ID_POWER_CONSTRAINT = 32,
|
ELEM_ID_POWER_CAPABILITY = 33,
|
ELEM_ID_TPC_REQUEST = 34,
|
ELEM_ID_TPC_REPORT = 35,
|
ELEM_ID_SUPPORTED_CHANNELS = 36,
|
ELEM_ID_CHANNEL_SWITCH_ANN = 37,
|
ELEM_ID_MEASUREMENT_REQ = 38,
|
ELEM_ID_MEASUREMENT_RPT = 39,
|
ELEM_ID_QUIET = 40,
|
ELEM_ID_IBSS_DFS = 41,
|
ELEM_ID_ERP_INFO = 42,
|
ELEM_ID_TS_DELAY = 43,
|
ELEM_ID_TCLAS_PROCESS = 44,
|
ELEM_ID_HT_CAPABILITY = 45,
|
ELEM_ID_QOS_CAPABILITY = 46,
|
|
ELEM_ID_RSN = 48,
|
|
ELEM_ID_EXT_SUPPORTED_RATES = 50,
|
ELEM_ID_AP_CHANNEL_REPORT = 51,
|
ELEM_ID_NEIGHBOR_REPORT = 52,
|
ELEM_ID_RCPI = 53,
|
ELEM_ID_MOBILITY_DOMAIN = 54,
|
ELEM_ID_FAST_BSS_TRANS = 55,
|
ELEM_ID_TIMEOUT_INTERVAL = 56,
|
ELEM_ID_RIC_DATA = 57,
|
ELEM_ID_DSE_REGISTERED_LOC = 58,
|
ELEM_ID_SUPPORTED_REGCLASS = 59,
|
ELEM_ID_EXT_CHAN_SWITCH_ANN = 60,
|
ELEM_ID_HT_INFORMATION = 61,
|
ELEM_ID_SECONDARY_CHAN_OFFSET = 62,
|
ELEM_ID_BSS_ACCESS_DELAY = 63,
|
ELEM_ID_ANTENNA_INFO = 64,
|
ELEM_ID_RSNI = 65,
|
ELEM_ID_MEAS_PILOT_TX_INFO = 66,
|
ELEM_ID_BSS_AVAIL_ADM_CAP = 67,
|
ELEM_ID_BSS_AC_ACCESS_DELAY = 68,
|
|
ELEM_ID_RRM_ENABLED_CAP = 70,
|
ELEM_ID_MULTI_BSSID = 71,
|
ELEM_ID_2040_BSS_COEXISTENCE = 72,
|
ELEM_ID_2040_BSS_INTOL_CHRPT = 73,
|
ELEM_ID_OBSS_SCAN_PARAM = 74,
|
ELEM_ID_RIC_DESCRIPTOR = 75,
|
ELEM_ID_MANAGEMENT_MIC = 76,
|
|
ELEM_ID_EVENT_REQUEST = 78,
|
ELEM_ID_EVENT_REPORT = 79,
|
ELEM_ID_DIAG_REQUEST = 80,
|
ELEM_ID_DIAG_REPORT = 81,
|
ELEM_ID_LOCATION_PARAM = 82,
|
ELEM_ID_NONTRANS_BSSID_CAP = 83,
|
ELEM_ID_SSID_LIST = 84,
|
ELEM_ID_MBSSID_INDEX = 85,
|
ELEM_ID_FMS_DESCRIPTOR = 86,
|
ELEM_ID_FMS_REQUEST = 87,
|
ELEM_ID_FMS_RESPONSE = 88,
|
ELEM_ID_QOS_TRAFFIC_CAP = 89,
|
ELEM_ID_BSS_MAX_IDLE_PERIOD = 90,
|
ELEM_ID_TFS_REQUEST = 91,
|
ELEM_ID_TFS_RESPONSE = 92,
|
ELEM_ID_WNM_SLEEP_MODE = 93,
|
ELEM_ID_TIM_BCAST_REQUEST = 94,
|
ELEM_ID_TIM_BCAST_RESPONSE = 95,
|
ELEM_ID_COLLOC_INTF_REPORT = 96,
|
ELEM_ID_CHANNEL_USAGE = 97,
|
ELEM_ID_TIME_ZONE = 98,
|
ELEM_ID_DMS_REQUEST = 99,
|
ELEM_ID_DMS_RESPONSE = 100,
|
ELEM_ID_LINK_ID = 101,
|
ELEM_ID_WAKEUP_SCHEDULE = 102,
|
ELEM_ID_TDLS_CS_TIMING = 104,
|
ELEM_ID_PTI_CONTROL = 105,
|
ELEM_ID_PU_BUFFER_STATUS = 106,
|
|
ELEM_ID_EXT_CAPABILITIES = 127,
|
ELEM_ID_VHT_CAPABILITIES = 191,
|
ELEM_ID_VHT_OPERATION = 192,
|
ELEM_ID_WIDE_BAND_CHAN_SW = 193,
|
ELEM_ID_AID = 197,
|
ELEM_ID_VHT_OP_MODE_NOTIFICATION = 199,
|
|
ELEM_ID_VENDOR_SPECIFIC = 221,
|
|
/* Subelement IDs */
|
SUBELEM_ID_REPORTED_FRAME_BODY = 1,
|
SUBELEM_ID_REPORTING_DETAIL = 2,
|
|
SUBELEM_ID_PMK_R1_KEY_HOLDER_ID = 1,
|
SUBELEM_ID_GTK = 2,
|
SUBELEM_ID_PMK_R0_KEY_HOLDER_ID = 3,
|
SUBELEM_ID_IGTK = 4,
|
|
/* Non-IEEE IDs */
|
ELEM_ID_WAPI = 68,
|
|
} MLAN_PACK_END IEEEtypes_ElementId_e;
|
|
/* The KDE data types */
|
typedef enum {
|
KDE_DATA_TYPE_RESERVED,
|
KDE_DATA_TYPE_GTK = 1,
|
KDE_DATA_TYPE_RESERVED2,
|
KDE_DATA_TYPE_MACADDR = 3,
|
KDE_DATA_TYPE_PMKID = 4,
|
KDE_DATA_TYPE_SMK = 5,
|
KDE_DATA_TYPE_NONCE = 6,
|
KDE_DATA_TYPE_LIFETIME = 7,
|
KDE_DATA_TYPE_ERROR = 8,
|
KDE_DATA_TYPE_IGTK = 9
|
} IEEEtypes_KDEDataType_e;
|
|
/* The possible power management modes */
|
typedef enum {
|
PWR_MODE_ACTIVE,
|
PWR_MODE_PWR_SAVE
|
} IEEEtypes_PwrMgmtMode_e;
|
|
/* The possible types of authentication */
|
typedef enum {
|
AUTH_OPEN_SYSTEM = 0,
|
AUTH_SHARED_KEY = 1,
|
AUTH_FAST_BSS_TRANSITION = 2,
|
|
AUTH_NETWORK_EAP = 0x80,
|
|
AUTH_NOT_SUPPORTED,
|
|
AUTH_AUTO_OPEN_OR_SHARED = 0xFF
|
} IEEEtypes_AuthType_e;
|
|
/* The possible responses to a request to scan */
|
typedef enum {
|
SCAN_RESULT_SUCCESS,
|
SCAN_RESULT_INVALID_PARAMETERS,
|
SCAN_RESULT_INTERNAL_ERROR,
|
SCAN_RESULT_PARTIAL_RESULTS,
|
|
} IEEEtypes_ScanResult_e;
|
|
/* The possible responses to a request to join a BSS */
|
typedef enum {
|
JOIN_RESULT_SUCCESS,
|
JOIN_RESULT_INTERNAL_ERROR,
|
JOIN_RESULT_TIMEOUT
|
} IEEEtypes_JoinResult_e;
|
|
/* The possible results to a request to authenticate */
|
typedef enum {
|
AUTH_RESULT_SUCCESS,
|
AUTH_RESULT_INTERNAL_ERROR,
|
AUTH_RESULT_TIMEOUT,
|
AUTH_RESULT_UNUSED, /* Do not reuse, maps to refused assoc result */
|
AUTH_RESULT_UNHANDLED_MSG,
|
AUTH_RESULT_REFUSED,
|
AUTH_RESULT_INVALID_PARAMETER
|
} IEEEtypes_AuthResult_e;
|
|
/* The possible results to a request to deauthenticate */
|
typedef enum {
|
DEAUTH_RESULT_SUCCESS,
|
DEAUTH_RESULT_INVALID_PARAMETERS,
|
DEAUTH_RESULT_TOO_MANY_SIMULTANEOUS_RQSTS,
|
DEAUTH_RESULT_TIMEOUT
|
} IEEEtypes_DeauthResult_e;
|
|
/* The possible results to a request to associate */
|
typedef enum {
|
ASSOC_RESULT_SUCCESS,
|
ASSOC_RESULT_INTERNAL_ERROR,
|
ASSOC_RESULT_TIMEOUT,
|
ASSOC_RESULT_REFUSED,
|
ASSOC_RESULT_AUTH_UNHANDLED_MSG,
|
ASSOC_RESULT_AUTH_REFUSED,
|
ASSOC_RESULT_INVALID_PARAMETER,
|
|
} IEEEtypes_AssocResult_e;
|
|
typedef enum {
|
/* Failure enumerations must be non-zero since they map to the
|
** IEEE status field in the assoc response. The SUCCESS code is left
|
** in here as a place holder but is never used. The remaining enums
|
** cannot be assigned a value of 0.
|
*/
|
ASSOC_CMD_SUCCESS = 0,
|
|
ASSOC_CMD_FAILURE_ASSOC,
|
ASSOC_CMD_FAILURE_AUTH,
|
ASSOC_CMD_FAILURE_JOIN
|
} IEEEtypes_AssocCmdFailurePoint_e;
|
|
typedef enum {
|
DISASSOC_RESULT_SUCCESS,
|
DISASSOC_RESULT_INVALID_PARAMETERS,
|
DISASSOC_RESULT_TIMEOUT,
|
DISASSOC_RESULT_REFUSED
|
} IEEEtypes_DisassocResult_e;
|
/* */
|
/* The possible results to a request to disassociate */
|
/* */
|
|
typedef enum {
|
PWR_MGMT_RESULT_SUCCESS,
|
PWR_MGMT_RESULT_INVALID_PARAMETERS,
|
PWR_MGMT_RESULT_NOT_SUPPORTED
|
} IEEEtypes_PwrMgmtResult_e;
|
/* */
|
/* The possible results to a request to change the power management mode */
|
/* */
|
|
typedef enum {
|
RESET_RESULT_SUCCESS
|
} IEEEtypes_ResetResult_e;
|
/* */
|
/* The possible results to a request to reset */
|
/* */
|
|
typedef enum {
|
START_RESULT_SUCCESS,
|
START_RESULT_INVALID_PARAMETERS,
|
START_RESULT_BSS_ALREADY_STARTED_OR_JOINED,
|
START_RESULT_RESET_REQUIRED_BEFORE_START,
|
START_RESULT_NOT_SUPPORTED,
|
START_RESULT_ACS_ENABLED
|
} IEEEtypes_StartResult_e;
|
/* */
|
/* The possible results to a request to start */
|
/* */
|
|
typedef enum {
|
TPCADAPT_RESULT_SUCCESS,
|
TPCADAPT_RESULT_INVALID_PARAMETERS,
|
TPCADAPT_RESULT_UNSPECIFIED_FAILURE
|
} IEEEtypes_TPCAdaptResult_e;
|
|
typedef enum {
|
STATE_IDLE,
|
STATE_SCANNING,
|
STATE_JOINING,
|
|
STATE_ASSOCIATING,
|
STATE_ASSOCIATED,
|
STATE_ROAMING,
|
|
STATE_IBSS_ACTIVE,
|
STATE_BSS_ACTIVE,
|
STATE_TDLS_SETUP_REQ_RCVD,
|
STATE_TDLS_SETUP_REQ_SENT,
|
STATE_TDLS_SETUP_RSP_SENT,
|
STATE_TDLS_ACTIVE,
|
} IEEEtypes_MacMgmtStates_e;
|
|
/* */
|
/* The possible states the MAC Management Service Task can be in */
|
/* */
|
|
/*---------------------------------------------------------------------------*/
|
/* Types Used In IEEE 802.11 MAC Message Data Structures */
|
/*---------------------------------------------------------------------------*/
|
typedef UINT8 IEEEtypes_Len_t;
|
/* */
|
/* Length type */
|
/* */
|
|
typedef UINT8 IEEEtypes_Addr_t;
|
/* */
|
/* Address type */
|
/* */
|
|
typedef IEEEtypes_Addr_t IEEEtypes_MacAddr_t[IEEEtypes_ADDRESS_SIZE];
|
/* */
|
/* MAC address type */
|
/* */
|
|
typedef UINT8 IEEEtypes_DataRate_t;
|
/* */
|
/* Type used to specify the supported data rates */
|
/* */
|
|
typedef UINT8 IEEEtypes_SsId_t[IEEEtypes_SSID_SIZE];
|
/* */
|
/* SS ID type */
|
/* */
|
|
/*---------------------------------------------------------------------------*/
|
/* IEEE 802.11 MAC Message Data Structures */
|
/* */
|
/* Each IEEE 802.11 MAC message includes a MAC header, a frame body (which */
|
/* can be empty), and a frame check sequence field. This section gives the */
|
/* structures that used for the MAC message headers and frame bodies that */
|
/* can exist in the three types of MAC messages - 1) Control messages, */
|
/* 2) Data messages, and 3) Management messages. */
|
/*---------------------------------------------------------------------------*/
|
typedef MLAN_PACK_START struct {
|
UINT16 ProtocolVersion:2;
|
UINT16 Type:2;
|
UINT16 Subtype:4;
|
UINT16 ToDs:1;
|
UINT16 FromDs:1;
|
UINT16 MoreFrag:1;
|
UINT16 Retry:1;
|
UINT16 PwrMgmt:1;
|
UINT16 MoreData:1;
|
UINT16 Protected:1;
|
UINT16 Order:1;
|
|
} MLAN_PACK_END IEEEtypes_FrameCtl_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 FragNum:4;
|
UINT16 SeqNum:12;
|
|
} MLAN_PACK_END IEEEtypes_SeqCtl_t;
|
|
typedef struct {
|
UINT16 FrmBodyLen;
|
IEEEtypes_FrameCtl_t FrmCtl;
|
UINT16 DurationId;
|
IEEEtypes_MacAddr_t Addr1;
|
IEEEtypes_MacAddr_t Addr2;
|
IEEEtypes_MacAddr_t Addr3;
|
IEEEtypes_SeqCtl_t SeqCtl;
|
IEEEtypes_MacAddr_t Addr4;
|
|
} IEEEtypes_GenHdr_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 FrmBodyLen;
|
IEEEtypes_FrameCtl_t FrmCtl;
|
UINT16 Duration;
|
IEEEtypes_MacAddr_t DestAddr;
|
IEEEtypes_MacAddr_t SrcAddr;
|
IEEEtypes_MacAddr_t BssId;
|
IEEEtypes_SeqCtl_t SeqCtl;
|
IEEEtypes_MacAddr_t Rsrvd;
|
|
} MLAN_PACK_END IEEEtypes_MgmtHdr_t;
|
|
typedef struct {
|
IEEEtypes_GenHdr_t Hdr;
|
UINT8 FrmBody[IEEEtypes_MAX_DATA_BODY_LEN];
|
UINT32 FCS;
|
|
} IEEEtypes_DataFrame_t;
|
|
typedef struct {
|
UINT8 UserPriority:4;
|
UINT8 Management:1;
|
UINT8 Reserved:3;
|
|
} IEEEtypes_NonceFlags_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 PN0;
|
UINT8 PN1;
|
UINT8 Reserved1;
|
UINT8 Reserved2:5;
|
UINT8 ExtIV:1;
|
UINT8 KeyId:2;
|
UINT8 PN2;
|
UINT8 PN3;
|
UINT8 PN4;
|
UINT8 PN5;
|
|
} MLAN_PACK_END IEEEtypes_CcmpHeader_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 TSC1;
|
UINT8 WepSeed;
|
UINT8 TSC0;
|
UINT8 Reserved:5;
|
UINT8 ExtIV:1;
|
UINT8 KeyId:2;
|
UINT8 TSC2;
|
UINT8 TSC3;
|
UINT8 TSC4;
|
UINT8 TSC5;
|
|
} MLAN_PACK_END IEEEtypes_TkipHeader_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_FrameCtl_t frameCtl;
|
IEEEtypes_MacAddr_t addr1;
|
IEEEtypes_MacAddr_t addr2;
|
IEEEtypes_MacAddr_t addr3;
|
|
} MLAN_PACK_END IEEEtypes_BIP_AAD_t;
|
|
/************************************************************************/
|
/* Control Frame Types */
|
/************************************************************************/
|
typedef MLAN_PACK_START struct {
|
UINT16 FrmBodyLen;
|
IEEEtypes_FrameCtl_t FrmCtl;
|
UINT16 DurationId;
|
IEEEtypes_MacAddr_t DestAddr;
|
IEEEtypes_MacAddr_t SrcAddr;
|
UINT8 Reserved[14]; /* Header MAC HW is 32 bytes */
|
|
} MLAN_PACK_END IEEEtypes_CtlHdr_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CtlHdr_t Hdr;
|
UINT32 FCS;
|
|
} MLAN_PACK_END IEEEtypes_PsPoll_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 BARAckPolicy:1;
|
UINT16 Multi_TID:1;
|
UINT16 CompressedBitmap:1;
|
UINT16 Reserved:9;
|
UINT16 TID:4;
|
|
} MLAN_PACK_END IEEEtypes_BARCtl_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CtlHdr_t Hdr;
|
|
IEEEtypes_BARCtl_t BARCtl;
|
IEEEtypes_SeqCtl_t SeqCtl;
|
UINT32 FCS;
|
|
} MLAN_PACK_END IEEEtypes_BlockAckReq_t;
|
|
//NDPA frame components
|
typedef MLAN_PACK_START struct {
|
UINT16 AID:12;
|
UINT16 FbType:1;
|
UINT16 NcIndex:3;
|
|
} MLAN_PACK_END IEEEtypes_StaInfo_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 Rsvd:2; //[0:1] Reserved
|
UINT8 SoundingSeq:6; //[2:7]Seq no.
|
IEEEtypes_StaInfo_t StaInfo; //Currently only 1 sta_info support
|
|
} MLAN_PACK_END IEEEtypes_NDPAFrameBody_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CtlHdr_t Hdr;
|
IEEEtypes_NDPAFrameBody_t FrameBody;
|
UINT32 FCS;
|
|
} MLAN_PACK_END IEEEtypes_NDPAFrame_t;
|
/*-------------------------------------------------*/
|
/* Management Frame Body Components - Fixed Fields */
|
/*-------------------------------------------------*/
|
typedef UINT16 IEEEtypes_AId_t;
|
/* */
|
/* Association ID assigned by an AP during the association process */
|
/* */
|
|
typedef UINT16 IEEEtypes_AuthAlg_t;
|
/* */
|
/* Number indicating the authentication algorithm used (it can take */
|
/* on the values given by IEEEtypes_AuthType_e): */
|
/* 0 = Open system */
|
/* 1 = Shared key */
|
/* All other values reserved */
|
/* */
|
|
typedef UINT16 IEEEtypes_AuthTransSeq_t;
|
/* */
|
/* Authentication transaction sequence number that indicates the current */
|
/* state of progress through a multistep transaction */
|
/* */
|
|
typedef UINT16 IEEEtypes_BcnInterval_t;
|
/* */
|
/* Beacon interval that represents the number of time units between */
|
/* target beacon transmission times */
|
/* */
|
|
typedef UINT8 IEEEtypes_DtimPeriod_t;
|
/*
|
* Interval that represents the number of time units between DTIMs.
|
*/
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Ess:1;
|
UINT16 Ibss:1;
|
UINT16 CfPollable:1;
|
UINT16 CfPollRqst:1;
|
UINT16 Privacy:1;
|
UINT16 ShortPreamble:1;
|
UINT16 Pbcc:1;
|
UINT16 ChanAgility:1;
|
UINT16 SpectrumMgmt:1;
|
UINT16 Qos:1;
|
UINT16 ShortSlotTime:1;
|
UINT16 APSD:1;
|
UINT16 RadioMeasurement:1;
|
UINT16 DsssOfdm:1;
|
UINT16 DelayedBlockAck:1;
|
UINT16 ImmediateBlockAck:1;
|
} MLAN_PACK_END IEEEtypes_CapInfo_t;
|
|
typedef UINT16 IEEEtypes_ListenInterval_t;
|
/* */
|
/* Listen interval to indicate to an AP how often a STA wakes to listen */
|
/* to beacon management frames */
|
/* */
|
|
typedef UINT16 IEEEtypes_ReasonCode_t;
|
/* */
|
/* Reason code to indicate the reason that an unsolicited notification */
|
/* management frame of type Disassociation or Deauthentication was */
|
/* generated */
|
/* */
|
|
typedef UINT16 IEEEtypes_StatusCode_t;
|
/* */
|
/* Status code used in a response management frame to indicate the */
|
/* success or failure of a requested operation */
|
/* */
|
|
typedef UINT8 IEEEtypes_TimeStamp_t[IEEEtypes_TIME_STAMP_SIZE];
|
|
/*-------------------------------------------------------*/
|
/* Management Frame Body Components - Information Fields */
|
/*-------------------------------------------------------*/
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
} MLAN_PACK_END IEEEtypes_InfoElementHdr_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 Data[255];
|
} MLAN_PACK_END IEEEtypes_IE_Param_t;
|
|
/*
|
** SSID element that idicates the identity of an ESS or IBSS
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_SsId_t SsId;
|
} MLAN_PACK_END IEEEtypes_SsIdElement_t;
|
|
/*
|
** Supported rates element that specifies the rates in the operational
|
** rate set in the MLME join request and the MLME start request
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_DataRate_t Rates[IEEEtypes_MAX_DATA_RATES];
|
} MLAN_PACK_END IEEEtypes_SuppRatesElement_t;
|
|
/*
|
** FH parameter set that conatins the set of parameters necessary to
|
** allow sychronization for stations using a frequency hopping PHY
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT16 DwellTime;
|
UINT8 HopSet;
|
UINT8 HopPattern;
|
UINT8 HopIndex;
|
} MLAN_PACK_END IEEEtypes_FhParamElement_t;
|
|
/*
|
** DS parameter set that contains information to allow channel number
|
** identification for stations using a direct sequence spread spectrum PHY
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 CurrentChan;
|
} MLAN_PACK_END IEEEtypes_DsParamElement_t;
|
|
/*
|
** CF parameter set that contains the set of parameters necessary to
|
** support the PCF
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 CfpCnt;
|
UINT8 CfpPeriod;
|
UINT16 CfpMaxDuration;
|
UINT16 CfpDurationRemaining;
|
} MLAN_PACK_END IEEEtypes_CfParamElement_t;
|
|
/* Since uAP is the only one that holds the TIM statically, we'll
|
** define a max size for the PVB that accomodates a max AID of 32
|
** used by the uAP. Size is 5 to account for broadcast.
|
*/
|
#define MAX_TIM_ELEMENT_PVB_LENGTH 5
|
/*
|
** TIM, which contains:
|
** 1) DTIM count - how many beacons (including the current beacon
|
** frame) appear before the next DTIM; a count of 0 indicates the
|
** current TIM is the DTIM
|
**
|
** 2) DTIM period - indicates the number of beacon intervals between
|
** successive DTIMs
|
**
|
** 3) Bitmap control - contains the traffic indicator bit associated
|
** with association ID 0 - this is set to 1 for TIM elements with a
|
** a value of 0 in the DTIM count field when one or more broadcast
|
** or multicast frames are buffered at the AP. The remaining bits
|
** of the field form the bitmap offset
|
**
|
** 4) Partial virtual bitmap - indicates which stations have messages
|
** buffered at the AP, for which the AP is prepared to deliver at
|
* the time the beacon frame is transmitted
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 DtimCnt;
|
UINT8 DtimPeriod;
|
UINT8 BitmapCtl;
|
UINT8 PartialVirtualBitmap[MAX_TIM_ELEMENT_PVB_LENGTH];
|
} MLAN_PACK_END IEEEtypes_TimElement_t;
|
|
/*
|
** IBSS parameters necessary to support an IBSS
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT16 AtimWindow;
|
} MLAN_PACK_END IEEEtypes_IbssParamElement_t;
|
|
/*
|
** The challenge text used in authentication exchanges
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 Text[IEEEtypes_CHALLENGE_TEXT_SIZE];
|
} MLAN_PACK_END IEEEtypes_ChallengeText_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ExtCapability;
|
UINT32 Capability;
|
|
UINT8 SsIdLength;
|
IEEEtypes_SsId_t SsId;
|
|
} MLAN_PACK_END IEEEtypes_SsIdL_HidSsId_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 OuiType[4]; /* 00:50:f2:05 */
|
|
UINT8 PrimarySsIdExtCapability;
|
|
/* Start optional fields */
|
|
UINT8 SsIdCount;
|
|
/* SsIdCount # of hidden SSIDs, not a fixed size substructure */
|
IEEEtypes_SsIdL_HidSsId_t hidSsid[1];
|
|
} MLAN_PACK_END IEEEtypes_SsIdLElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 OuiType[4];
|
UINT8 Data[1];
|
|
} MLAN_PACK_END IEEEtypes_WPS_DataElement_t;
|
|
/* This structure is a member of BssConfig_t which is referenced by ROMed code.
|
** Any increase in the size of this structure will cause the subsequent elements
|
** of BssConfig_t to move forward, in turn affecting the ROM code. Therefore,
|
** any changes to this structure should be done taking into account its effect
|
** on BssConfig_t and ROM code.
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 BSS_CoexistSupport:1; /* bit 0 */
|
UINT8 Reserved1:1; /* bit 1 */
|
UINT8 ExtChanSwitching:1; /* bit 2 */
|
UINT8 RejectUnadmFrame:1; /* bit 3 */
|
UINT8 PSMP_Capable:1; /* bit 4 */
|
UINT8 Reserved5:1; /* bit 5 */
|
UINT8 SPSMP_Support:1; /* bit 6 */
|
UINT8 Event:1; /* bit 7 */
|
UINT8 Diagnostics:1; /* bit 8 */
|
UINT8 MulticastDiagnostics:1; /* bit 9 */
|
UINT8 LocationTracking:1; /* bit 10 */
|
UINT8 FMS:1; /* bit 11 */
|
UINT8 ProxyARPService:1; /* bit 12 */
|
UINT8 CollocatedIntf:1; /* bit 13 */
|
UINT8 CivicLocation:1; /* bit 14 */
|
UINT8 GeospatialLocation:1; /* bit 15 */
|
UINT8 TFS:1; /* bit 16 */
|
UINT8 WNM_Sleep:1; /* bit 17 */
|
UINT8 TIM_Broadcast:1; /* bit 18 */
|
UINT8 BSS_Transition:1; /* bit 19 */
|
UINT8 QoSTrafficCap:1; /* bit 20 */
|
UINT8 AC_StationCount:1; /* bit 21 */
|
UINT8 MultipleBSSID:1; /* bit 22 */
|
UINT8 TimingMeasurement:1; /* bit 23 */
|
UINT8 ChannelUsage:1; /* bit 24 */
|
UINT8 SSID_List:1; /* bit 25 */
|
UINT8 DMS:1; /* bit 26 */
|
UINT8 UTC:1; /* bit 27 */
|
UINT8 TDLSPeerUAPSDSupport:1; /* bit 28 */
|
UINT8 TDLSPeerPSMSupport:1; /* bit 29 */
|
UINT8 TDLSChannelSwitching:1; /* bit 30 */
|
UINT8 Reserved31:1;
|
UINT8 Reserved32_36:5;
|
UINT8 TDLSSupport:1; /* bit 37 */
|
UINT8 TDLSProhibited:1; /* bit 38 */
|
UINT8 TDLSChlSwitchProhib:1; /* bit 39 */
|
UINT8 Reserved40_47:8;
|
UINT8 Reserved48_55:8;
|
UINT8 Reserved56_60:5;
|
UINT8 TDLSWiderBandSupport:1;
|
UINT8 OpModeNotification:1; /* bit 62 */
|
UINT8 Reserved63:1; /* bit 63 */
|
/* This structure is a member of BssConfig_t which is referenced by ROMed code.
|
** Any increase in the size of this structure will cause the subsequent elements
|
** of BssConfig_t to move forward, in turn affecting the ROM code. Therefore,
|
** any changes to this structure should be done taking into account its effect
|
** on BssConfig_t and ROM code.
|
*/
|
} MLAN_PACK_END IEEEtypes_ExtCapability_t;
|
|
/*
|
** The HT Capability Element
|
*/
|
|
typedef enum {
|
STATIC_SM_PS,
|
DYNAMIC_SM_PS,
|
RESERVED_SM_PS,
|
DISABLE_SM_PS
|
} IEEEtypes_HtCap_SMPS_e;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 LdpcCoding:1;
|
UINT16 SuppChanWidth:1;
|
UINT16 MIMOPowerSave:2;
|
UINT16 GFPreamble:1;
|
UINT16 ShortGI20MHZ:1;
|
UINT16 ShortGI40MHZ:1;
|
UINT16 TxSTBC:1;
|
UINT16 RxSTBC:2;
|
UINT16 DelayedBA:1;
|
UINT16 MaximalAMSDUSize:1;
|
UINT16 DsssCck40MHzMode:1;
|
UINT16 Psmp:1;
|
UINT16 FortyMHzIntolerant:1;
|
UINT16 L_SIG_TXOP_Protection:1;
|
} MLAN_PACK_END IEEEtypes_HT_Cap_Info_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 MaxRxAMpduFactor:2;
|
UINT8 MpduDensity:3;
|
UINT8 Reserved_5_7:3;
|
} MLAN_PACK_END IEEEtypes_HT_Mac_Params_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Pco:1;
|
UINT16 TransitionTime:2;
|
UINT16 Reserved:5;
|
|
UINT16 McsFeedback:2;
|
UINT16 HtcSupport:1;
|
UINT16 RdResponder:1;
|
UINT16 Reserved2:4;
|
} MLAN_PACK_END IEEEtypes_HT_Ext_Cap_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT32 TxBFCapable:1; /* B0 */
|
UINT32 RxStaggeredSounding:1;
|
UINT32 TxStaggeredSounding:1;
|
UINT32 RxNDPCap:1;
|
UINT32 TxNDPCap:1;
|
UINT32 ImplicitTxBF:1;
|
UINT32 Calibration:2;
|
UINT32 ExplCSITxBF:1; /* B8 */
|
|
UINT32 ExplUcompSteerMatrix:1;
|
UINT32 ExplCompSteerMatrix:1;
|
UINT32 ExplBFCSIFeedback:2;
|
UINT32 ExplUcompSteerFeedback:2;
|
UINT32 ExplCompSteerMatrixFeedback:2;
|
UINT32 MinimalGrouping:2;
|
UINT32 CSINumMFAntennae:2; /* B20 */
|
|
UINT32 UcompSteerMatrixBFAntennae:2;
|
UINT32 CompSteerMatrixBFAntennae:2;
|
UINT32 CSIMaxMaxBeamSupported:2;
|
UINT32 ChanEstCapability:2;
|
UINT32 Reserved:3; /* B31 */
|
|
} MLAN_PACK_END IEEEtypes_HT_TXBF_Cap_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ASCapable:1;
|
UINT8 ExplCSITxASCapable:1;
|
UINT8 IndicesFeedbackTxAS:1;
|
UINT8 ExplicitCSIFeedback:1;
|
UINT8 AntIndicesFeedback:1;
|
UINT8 RxASCapable:1;
|
UINT8 TxSoundingPPDUs:1;
|
UINT8 Reserved:1;
|
|
} MLAN_PACK_END IEEEtypes_HT_AS_Cap_t;
|
|
typedef enum {
|
HTC_NO_FEEDBACK = 0,
|
HTC_CSI,
|
HTC_UCOMP_BF,
|
HTC_COMP_BF
|
} IEEEtypes_HTC_CSI_Types_e;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Nc:2;
|
UINT16 Nr:2;
|
UINT16 ChanW:1;
|
UINT16 Ng:2;
|
UINT16 Coeff_size:2;
|
UINT16 Codebook_info:2;
|
UINT16 Re_segments:2;
|
UINT16 Reserved:2;
|
|
UINT32 SndTimestamp;
|
|
} MLAN_PACK_END IEEEtypes_MIMOCtrl_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Reserved:1;
|
UINT16 TRQ:1;
|
UINT16 MAI:4;
|
UINT16 MFSI:3;
|
UINT16 MFB_ASELC:7;
|
|
} MLAN_PACK_END IEEEtypes_LinkAdaptCtrl_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_LinkAdaptCtrl_t LA_Ctrl;
|
UINT16 CalibPos:2;
|
UINT16 CalibSeq:2;
|
UINT16 Reserved:2;
|
UINT16 CSI:2;
|
UINT16 NDPAnnounce:1;
|
UINT16 Reserved2:5;
|
UINT16 ACConst:1;
|
UINT16 RDG_MorePPDU:1;
|
|
} MLAN_PACK_END IEEEtypes_HTCtrl_t;
|
|
#define HTC_NDP_ANNOUNCE BIT24
|
|
#define IEEEtypes_MCS_BITMAP_SIZE 16
|
typedef UINT8 IEEEtypes_Supported_MCS_Bitmap_t[IEEEtypes_MCS_BITMAP_SIZE];
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_HT_Cap_Info_t HtCapInfo;
|
IEEEtypes_HT_Mac_Params_t HtMacParams;
|
IEEEtypes_Supported_MCS_Bitmap_t SupportedMcsBitmap;
|
IEEEtypes_HT_Ext_Cap_t ExtHTCaps;
|
IEEEtypes_HT_TXBF_Cap_t TxBFCaps;
|
IEEEtypes_HT_AS_Cap_t ASCaps;
|
|
} MLAN_PACK_END IEEEtypes_HT_Capability_t;
|
|
/*
|
** The HT Information Element
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 PrimaryChan;
|
/*-----------------------------------------------*/
|
UINT8 SecChanOffset:2;
|
UINT8 ChanWidth:1;
|
UINT8 RifsMode:1;
|
UINT8 CtrlLedAccessOnly:1;
|
UINT8 SrvIntrvlGran:3;
|
/*-----------------------------------------------*/
|
UINT16 HtProtection:2;
|
UINT16 NonGfHtStaPresent:1;
|
UINT16 Reserved1:1;
|
UINT16 ObssNonHtStaPresent:1;
|
UINT16 Reserved2:11;
|
/*-----------------------------------------------*/
|
UINT16 Reserved3:6;
|
UINT16 DualBeacon:1;
|
UINT16 DualCtsProtection:1;
|
UINT16 StbcBeacon:1;
|
UINT16 L_SIGTxopProtectionAllowed:1;
|
UINT16 PcoActive:1;
|
UINT16 PcoPhase:1;
|
UINT16 Reserved4:4;
|
/*-----------------------------------------------*/
|
IEEEtypes_Supported_MCS_Bitmap_t BasicMcsSetBitmap;
|
|
} MLAN_PACK_END IEEEtypes_HT_Information_t;
|
|
/* secondary channel offset */
|
/* 20/40 BSS Coexistence */
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 InfoResuest:1;
|
UINT8 FortyMHzIntolerant:1;
|
UINT8 Width20MHzRequest:1;
|
UINT8 Reserved:5;
|
|
} MLAN_PACK_END IEEEtypes_20N40_BSS_Coexist_t;
|
|
/* overlapping BSS Scan Parameters */
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT16 OBSSScanPassiveDwell;
|
UINT16 OBSSScanActiveDwel;
|
UINT16 BSSChanWidthTriggerScanInt;
|
UINT16 OBSSScanPassiveTotal;
|
UINT16 OBSSScanActiveTotal;
|
UINT16 BSSWidthChanTransDelay;
|
UINT16 OBSSScanActiveThreshold;
|
|
} MLAN_PACK_END IEEEtypes_OBSS_ScanParam_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 htSupported;
|
IEEEtypes_HT_Capability_t htCap;
|
IEEEtypes_HT_Information_t htInfo;
|
UINT8 secChanOffset;
|
IEEEtypes_20N40_BSS_Coexist_t coexist;
|
IEEEtypes_OBSS_ScanParam_t scanParam;
|
|
} MLAN_PACK_END HtEntry_t;
|
|
#define DOT11AC_VHTCAP_MAX_MPDU_LEN_0 3895
|
#define DOT11AC_VHTCAP_MAX_MPDU_LEN_1 7991
|
#define DOT11AC_VHTCAP_MAX_MPDU_LEN_2 11454
|
#define DOT11AC_VHTCAP_MAX_MPDU_LEN_3 3895 //reserved value
|
|
/* IE definitions based on draft 1.4.
|
*/
|
typedef MLAN_PACK_START struct {
|
UINT32 MaxMpduLen:2;
|
UINT32 SuppChanWidthSet:2;
|
UINT32 RxLDPC:1;
|
UINT32 ShortGI_80:1;
|
UINT32 ShortGI_160:1;
|
UINT32 TxSTBC:1;
|
/*------------------------*/
|
UINT32 RxSTBC:3;
|
UINT32 SUBFerCap:1;
|
UINT32 SUBFeeCap:1;
|
UINT32 NumBFerAnt:3;
|
/*------------------------*/
|
UINT32 NumSoundingDim:3;
|
UINT32 MUBFerCap:1;
|
UINT32 MUBFeeCap:1;
|
UINT32 VHTTxOPPs:1;
|
UINT32 HTC_VHT_Cap:1;
|
UINT32 MaxAMPDULenExp:3;
|
UINT32 VHTLinkAdaptCap:2;
|
UINT32 Reserved:4;
|
|
} MLAN_PACK_END IEEEtypes_VHT_Cap_Info_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 RxMCSMap;
|
UINT16 RxHighestDataRate:13;
|
UINT16 Reserved1:3;
|
|
UINT16 TxMCSMap;
|
UINT16 TxHighestDataRate:13;
|
UINT16 Reserved2:3;
|
|
} MLAN_PACK_END IEEEtypes_VHT_Supp_MCS_Set_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_VHT_Cap_Info_t VhtCap;
|
IEEEtypes_VHT_Supp_MCS_Set_t VhtSuppMcsSet;
|
|
} MLAN_PACK_END IEEEtypes_VHT_Capability_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ChanWidth;
|
UINT8 ChanCenterFreq1;
|
UINT8 ChanCenterFreq2;
|
|
} MLAN_PACK_END IEEEtypes_VHT_Op_Info_t;
|
|
/*
|
** The VHT Operation Element
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_VHT_Op_Info_t VhtOpInfo;
|
UINT16 VhtBasicMcsSet;
|
|
} MLAN_PACK_END IEEEtypes_VHT_Operation_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 chanWidth:2;
|
UINT8 reserved:2;
|
UINT8 rxNss:3;
|
UINT8 rxNssType:1;
|
|
} MLAN_PACK_END IEEEtypes_VHT_OpMode_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_VHT_OpMode_t VhtOpMode;
|
} MLAN_PACK_END IEEEtypes_VHT_OpModeNotification_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
/** WideBW has same structure as VHT_OP_INFO*/
|
IEEEtypes_VHT_Op_Info_t wideBwCs;
|
} MLAN_PACK_END IEEEtypes_WIde_BW_CS_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_AId_t Aid;
|
} MLAN_PACK_END IEEEtypes_AIDElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11k RRM definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
/* First byte */
|
UINT8 LinkMeas:1;
|
UINT8 NborRpt:1;
|
UINT8 ParallelMeas:1;
|
UINT8 RepeatMeas:1;
|
UINT8 BcnPassiveMeas:1;
|
UINT8 BcnActiveMeas:1;
|
UINT8 BcnTableMeas:1;
|
UINT8 BcnMeasRptCond:1;
|
|
/* Second byte */
|
UINT8 FrameMeas:1;
|
UINT8 ChanLoadMeas:1;
|
UINT8 NoiseHistMeas:1;
|
UINT8 StatsMeas:1;
|
UINT8 LciMeas:1;
|
UINT8 LciAzimuth:1;
|
UINT8 TxStreamMeas:1;
|
UINT8 TrigTxStreamMeas:1;
|
|
/* Third byte */
|
UINT8 ApChanRpt:1;
|
UINT8 RrmMib:1;
|
UINT8 OpChanMaxMeas:3;
|
UINT8 NonOpChanMaxMeas:3;
|
|
/* Fourth byte */
|
UINT8 MeasPilot:3;
|
UINT8 MeasPilotTxInfo:1;
|
UINT8 NborRptTsfOffset:1;
|
UINT8 RcpiMeas:1;
|
UINT8 RsniMeas:1;
|
UINT8 BssAvgAccessDelay:1;
|
|
/* Fifth byte */
|
UINT8 BssAvailAdmCap:1;
|
UINT8 AntennaInfo:1;
|
UINT8 Reserved:6;
|
|
} MLAN_PACK_END IEEEtypes_RrmEnabledCapabilities_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 RegulatoryClass;
|
|
UINT8 ChannelList[1];
|
|
} MLAN_PACK_END IEEEtypes_ApChanRptElement_t;
|
|
typedef enum {
|
RPT_DTL_NO_FIX_OR_IE = 0,
|
RPT_DTL_ALL_FIX_AND_REQ_IES = 1,
|
RPT_DTL_ALL_FIX_AND_ALL_IES = 2,
|
|
} IEEEtypes_ReportDetailLevel_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
MLAN_PACK_START IEEEtypes_ReportDetailLevel_e MLAN_PACK_END
|
RptDetailLevel;
|
|
} MLAN_PACK_END IEEEtypes_ReportingDetailElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_ElementId_e IeList[1];
|
|
} MLAN_PACK_END IEEEtypes_RequestElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11d and 802.11j Country IE definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
|
/** Regulatory Triplet component in the country IE */
|
typedef MLAN_PACK_START struct {
|
UINT8 RegulatoryExtensionId;
|
UINT8 RegulatoryClass;
|
UINT8 CoverageClass;
|
|
} MLAN_PACK_END IEEEtypes_RegulatoryTriplet_t;
|
|
/** Subband Triplet component in the country IE */
|
typedef MLAN_PACK_START struct {
|
UINT8 FirstChan;
|
UINT8 NumChans;
|
UINT8 MaxTxPower;
|
|
} MLAN_PACK_END IEEEtypes_SubbandTriplet_t;
|
|
/* Country Info Triplet union comprised of subband and potentially regulatory
|
* triplets
|
*/
|
typedef MLAN_PACK_START union {
|
UINT8 TripletIdentifier;
|
IEEEtypes_SubbandTriplet_t Subband;
|
IEEEtypes_RegulatoryTriplet_t Regulatory;
|
|
} MLAN_PACK_END IEEEtypes_CountryInfoTriplet_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 CountryCode[IEEEtypes_COUNTRY_CODE_SIZE];
|
IEEEtypes_CountryInfoTriplet_t Triplets[IEEEtypes_COUNTRY_MAX_TRIPLETS];
|
|
} MLAN_PACK_END IEEEtypes_CountryInfoElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11h TPC definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
|
/*
|
** Power Constraint IE - for 802.11h TPC. Specifies a Local
|
** Power Constraint in a channel.
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 localConstraint;
|
} MLAN_PACK_END IEEEtypes_PowerConstraintElement_t;
|
|
/*
|
** Power Capability IE - for 802.11h TPC. Specifies the
|
** min and max power the station is capable of transmitting with.
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 minTxPwr;
|
UINT8 maxTxPwr;
|
} MLAN_PACK_END IEEEtypes_PowerCapabilityElement_t;
|
|
/*
|
** 802.11h TPC Request IE - used for requesting a peer station
|
** to send Tx power and Link Margin.
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
} MLAN_PACK_END IEEEtypes_TPCRequestElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 TxPwr;
|
UINT8 LinkMargin;
|
} MLAN_PACK_END IEEEtypes_TPCReportElement_t;
|
|
#define WIFI_TPCRPT_OUI_SUBTYPE 0x08
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 OuiType[4]; /* 00:50:f2:08 */
|
UINT8 OuiSubType;
|
|
UINT8 TxPwr;
|
UINT8 LinkMargin;
|
|
} MLAN_PACK_END IEEEtypes_WiFi_TPCReportElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11h DFS definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 ChannelSwitchMode;
|
UINT8 ChannelNumber;
|
UINT8 ChannelSwitchCount;
|
} MLAN_PACK_END IEEEtypes_ChannelSwitchElement_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 BSS:1;
|
UINT8 OFDM_Preamble:1;
|
UINT8 Unidentified:1;
|
UINT8 Radar:1;
|
UINT8 Unmeasured:1;
|
UINT8 Reserved:3;
|
} MLAN_PACK_END IEEEtypes_DFS_Map_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ChannelNumber;
|
IEEEtypes_DFS_Map_t DFS_Map;
|
} MLAN_PACK_END IEEEtypes_ChannelMap_t;
|
|
#define MAX_NUMBER_OF_DFS_CHANNELS 25
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_MacAddr_t DFS_Owner;
|
UINT8 DFS_Recovery_Interval;
|
|
/* For the channels in .11a */
|
IEEEtypes_ChannelMap_t Channel_Map[MAX_NUMBER_OF_DFS_CHANNELS];
|
} MLAN_PACK_END IEEEtypes_IbssDfsElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 QuietCount;
|
UINT8 QuietPeriod;
|
UINT16 QuietDuration;
|
UINT16 QuietOffset;
|
} MLAN_PACK_END IEEEtypes_QuietElement_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 FirstChannelNumber;
|
UINT8 NumberOfChannels;
|
} MLAN_PACK_END ChannelsTuple_t;
|
|
#define MAX_CHANNEL_TUPLES 20
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
ChannelsTuple_t ChannelTuple[MAX_CHANNEL_TUPLES];
|
} MLAN_PACK_END IEEEtypes_SupportedChannelsElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 currRegClass;
|
UINT8 suppRegClass;
|
} MLAN_PACK_END IEEEtypes_SupportedRegClasses_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11y definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 ChannelSwitchMode;
|
UINT8 RegClass;
|
UINT8 ChannelNumber;
|
UINT8 ChannelSwitchCount;
|
} MLAN_PACK_END IEEEtypes_ExtChannelSwitchElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11e definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT16 StaCount;
|
UINT8 ChnlUtil;
|
UINT16 AdmCap;
|
} MLAN_PACK_END IEEEtypes_BSSLoadElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11i and WPA definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
typedef enum {
|
IEEEtypes_RSN_AUTH_KEY_SUITE_RSVD = 0,
|
IEEEtypes_RSN_AUTH_KEY_SUITE_8021X = 1,
|
IEEEtypes_RSN_AUTH_KEY_SUITE_PSK = 2,
|
IEEEtypes_AKM_SUITE_FT_1X = 3,
|
IEEEtypes_AKM_SUITE_FT_PSK = 4,
|
IEEEtypes_AKM_SUITE_1X_SHA256 = 5,
|
IEEEtypes_AKM_SUITE_PSK_SHA256 = 6
|
} IEEEtypes_RSN_Auth_Key_Suite;
|
|
/* Cipher Suite Selector */
|
typedef enum {
|
IEEEtypes_RSN_CIPHER_SUITE_NONE = 0,
|
IEEEtypes_RSN_CIPHER_SUITE_WEP40,
|
IEEEtypes_RSN_CIPHER_SUITE_TKIP,
|
IEEEtypes_RSN_CIPHER_SUITE_WRAP,
|
IEEEtypes_RSN_CIPHER_SUITE_CCMP,
|
IEEEtypes_RSN_CIPHER_SUITE_WEP104
|
} IEEEtypes_RSN_Cipher_Suite;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 OuiType[4]; /* 00:50:f2:01 */
|
UINT16 Ver;
|
UINT8 GrpKeyCipher[4];
|
UINT16 PwsKeyCnt;
|
UINT8 PwsKeyCipherList[4];
|
UINT16 AuthKeyCnt;
|
UINT8 AuthKeyList[4];
|
} MLAN_PACK_END IEEEtypes_WPAElement_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 PreAuth:1; /* B0 */
|
UINT8 NoPairwise:1;
|
UINT8 PtksaReplayCtr:2;
|
UINT8 GtksaReplayCtr:2;
|
UINT8 MFPR:1;
|
UINT8 MFPC:1;
|
|
UINT8 Reserved_8:1; /* B8 */
|
UINT8 PeerkeyEnabled:1;
|
UINT8 SppAmsduCap:1;
|
UINT8 SppAmsduReq:1;
|
UINT8 PBAC:1;
|
UINT8 Reserved_13_15:3;
|
} MLAN_PACK_END IEEEtypes_RSNCapability_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
/* All elements after Ver field are optional per the spec.
|
**
|
** - AuthKeyList and PwsKeyCipherList can have multiple elements so
|
** static parsing of this structure is not possible.
|
**
|
** - RsnCap, PMKIDCnt/List, and GrpMgmtCipher are often not included
|
**
|
** - If any optional element is included, all preceding elements must
|
** also be included. Once an optional element is not inserted, the
|
** IE construction ends. (i.e. RsnCap must be included if PMKIDCnt/List
|
** is needed).
|
*/
|
|
UINT16 Ver;
|
UINT8 GrpKeyCipher[4];
|
UINT16 PwsKeyCnt;
|
UINT8 PwsKeyCipherList[4];
|
UINT16 AuthKeyCnt;
|
UINT8 AuthKeyList[4];
|
|
IEEEtypes_RSNCapability_t RsnCap;
|
|
UINT16 PMKIDCnt;
|
UINT8 PMKIDList[16];
|
|
UINT8 GrpMgmtCipher[4];
|
} MLAN_PACK_END IEEEtypes_RSNElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11r definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
|
typedef MLAN_PACK_START struct {
|
UINT8 FtOverBss:1;
|
UINT8 FtOverAir:1;
|
|
UINT8 Reserved:6;
|
|
} MLAN_PACK_END IEEEtypes_FT_CapabilityPolicy_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT16 MobilityDomainId;
|
|
IEEEtypes_FT_CapabilityPolicy_t FtCapPol;
|
|
} MLAN_PACK_END IEEEtypes_MobilityDomainElement_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 KeyId:2;
|
|
UINT8 Reserved1:6;
|
UINT8 Reserved2:8;
|
|
} MLAN_PACK_END IEEEtypes_GtkKeyInfo_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_GtkKeyInfo_t KeyInfo;
|
UINT8 KeyLen;
|
UINT8 RSC[8];
|
|
UINT8 Key[32]; /* Variable length from 5 to 32 */
|
|
} IEEEtypes_GtkElement_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 Reserved;
|
UINT8 InfoElementCount;
|
|
} MLAN_PACK_END IEEEtypes_FT_MICControl_t;
|
|
#define FTIE_MIC_LEN 16
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_FT_MICControl_t MicControl;
|
|
UINT8 MIC[FTIE_MIC_LEN];
|
UINT8 ANonce[32];
|
UINT8 SNonce[32];
|
|
UINT8 SubElem[1];
|
|
} MLAN_PACK_END IEEEtypes_FastBssTransElement_t;
|
|
typedef MLAN_PACK_START enum {
|
TI_TYPE_RESERVED = 0,
|
TI_TYPE_REASSOC_DEADLINE_TUS = 1,
|
TI_TYPE_KEY_LIFETIME_SECS = 2,
|
TI_TYPE_ASSOCIATION_COMEBACK_TIME = 3,
|
|
} IEEEtypes_TimeoutInterval_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_TimeoutInterval_e TimeoutIntervalType;
|
UINT32 TimeoutInterval;
|
|
} MLAN_PACK_END IEEEtypes_TimeoutIntervalElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 Identifier;
|
UINT8 DescCount;
|
|
IEEEtypes_StatusCode_t StatusCode;
|
|
} MLAN_PACK_END IEEEtypes_RICDataElement_t;
|
|
typedef MLAN_PACK_START enum {
|
RIC_RESOURCE_BLOCK_ACK = 1,
|
|
} MLAN_PACK_END IEEEtypes_RICResource_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
IEEEtypes_RICResource_e ResourceType;
|
|
UINT8 Data[1];
|
|
} MLAN_PACK_END IEEEtypes_RICDescElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** 802.11w definitions
|
**
|
**
|
*****************************************************************************
|
*/
|
#define MMIE_MIC_LEN 8
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 KeyId[2];
|
UINT8 IPN[6];
|
|
UINT8 MIC[MMIE_MIC_LEN];
|
|
} MLAN_PACK_END IEEEtypes_ManagementMICElement_t;
|
|
/*
|
*****************************************************************************
|
**
|
**
|
** Management Frame Bodies
|
**
|
**
|
*****************************************************************************
|
*/
|
|
/*
|
** The parameter set relevant to the PHY
|
*/
|
typedef MLAN_PACK_START union {
|
IEEEtypes_FhParamElement_t FhParamSet;
|
IEEEtypes_DsParamElement_t DsParamSet;
|
|
} MLAN_PACK_END IEEEtypes_PhyParamElement_t;
|
|
/*
|
** Service set parameters - for a BSS supporting, PCF, the
|
** CF parameter set is used; for an independent BSS, the IBSS
|
** parameter set is used.
|
*/
|
typedef MLAN_PACK_START union {
|
IEEEtypes_CfParamElement_t CfParamSet;
|
IEEEtypes_IbssParamElement_t IbssParamSet;
|
} MLAN_PACK_END IEEEtypes_SsParamElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_DataRate_t Rates[IEEEtypes_MAX_DATA_RATES];
|
} MLAN_PACK_END IEEEtypes_ExtSuppRatesElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
MLAN_PACK_START union {
|
MLAN_PACK_START struct {
|
UINT8 NonERPPresent:1;
|
UINT8 UseProtection:1;
|
UINT8 BarkerPreamble:1;
|
UINT8 Reserved:5;
|
} bf;
|
UINT8 erpInfo;
|
} u;
|
} MLAN_PACK_END IEEEtypes_ERPInfoElement_t;
|
|
#define IEEEtypes_BCN_FIXED_FIELD_SZ (sizeof(IEEEtypes_TimeStamp_t) \
|
+ sizeof(IEEEtypes_BcnInterval_t) \
|
+ sizeof(IEEEtypes_CapInfo_t))
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_TimeStamp_t TimeStamp;
|
IEEEtypes_BcnInterval_t BcnInterval;
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_SsIdElement_t SsId;
|
IEEEtypes_SuppRatesElement_t SuppRates;
|
IEEEtypes_PhyParamElement_t PhyParamSet;
|
IEEEtypes_SsParamElement_t SsParamSet;
|
IEEEtypes_TimElement_t Tim;
|
IEEEtypes_ERPInfoElement_t ERPInfo;
|
IEEEtypes_ExtSuppRatesElement_t ExtSuppRates;
|
} MLAN_PACK_END IEEEtypes_Bcn_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ReasonCode_t ReasonCode;
|
} MLAN_PACK_END IEEEtypes_DisAssoc_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_ListenInterval_t ListenInterval;
|
UINT8 IEBuffer[1];
|
} MLAN_PACK_END IEEEtypes_AssocRqst_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_StatusCode_t StatusCode;
|
IEEEtypes_AId_t AId;
|
} MLAN_PACK_END IEEEtypes_AssocRsp_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_ListenInterval_t ListenInterval;
|
IEEEtypes_MacAddr_t CurrentApAddr;
|
UINT8 IEBuffer[1];
|
} MLAN_PACK_END IEEEtypes_ReAssocRqst_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_StatusCode_t StatusCode;
|
IEEEtypes_AId_t AId;
|
} MLAN_PACK_END IEEEtypes_ReAssocRsp_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_SsIdElement_t SsId;
|
IEEEtypes_SuppRatesElement_t SuppRates;
|
IEEEtypes_ExtSuppRatesElement_t ExtSuppRates;
|
} MLAN_PACK_END IEEEtypes_ProbeRqst_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_TimeStamp_t TimeStamp;
|
IEEEtypes_BcnInterval_t BcnInterval;
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_SsIdElement_t SsId;
|
IEEEtypes_SuppRatesElement_t SuppRates;
|
IEEEtypes_PhyParamElement_t PhyParamSet;
|
IEEEtypes_SsParamElement_t SsParamSet;
|
IEEEtypes_TimElement_t Tim;
|
IEEEtypes_ERPInfoElement_t ERPInfo;
|
IEEEtypes_ExtSuppRatesElement_t ExtSuppRates;
|
} MLAN_PACK_END IEEEtypes_ProbeRsp_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_AuthAlg_t AuthAlg;
|
IEEEtypes_AuthTransSeq_t AuthTransSeq;
|
IEEEtypes_StatusCode_t StatusCode;
|
IEEEtypes_ChallengeText_t ChallengeText;
|
} MLAN_PACK_END IEEEtypes_Auth_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ReasonCode_t ReasonCode;
|
} MLAN_PACK_END IEEEtypes_Deauth_t;
|
|
/*---------------------------------------------------------------------------*/
|
/* IEEE 802.11 MLME SAP Interface Data Structures */
|
/* */
|
/* According to IEEE 802.11, services are provided by the MLME to the SME. */
|
/* In the current architecture, the services are provided to the SME by the */
|
/* MAC Management Service Task. This section describes data structures */
|
/* needed for these services. */
|
/*---------------------------------------------------------------------------*/
|
|
/*
|
** BSS Description Set
|
**
|
** A description of a BSS, providing the following:
|
** BssId: The ID of the BSS
|
** SsId: The SSID of the BSS
|
** BssType: The type of the BSS (INFRASTRUCTURE or INDEPENDENT)
|
** BcnPeriod: The beacon period (in time units)
|
** DtimPeriod: The DTIM period (in beacon periods)
|
** Tstamp: Timestamp of a received frame from the BSS; this is an 8
|
** byte string from a probe response or beacon
|
** StartTs: The value of a station's timing synchronization function
|
** at the start of reception of the first octet of the
|
** timestamp field of a received frame (probe response or
|
** beacon) from a BSS; this is an 8 byte string
|
** PhyParamSet: The parameter set relevant to the PHY (empty if not
|
** needed by the PHY)
|
** SsParamSet: The service set parameters. These can consist of either
|
** the parameter set for CF periods or for an IBSS.
|
** Cap: The advertised capabilities of the BSS
|
** DataRates: The set of data rates that must be supported by all
|
** stations (the BSS basic rate set)
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t BssId;
|
IEEEtypes_SsId_t SsId;
|
IEEEtypes_Bss_e BssType;
|
IEEEtypes_BcnInterval_t BcnPeriod;
|
IEEEtypes_DtimPeriod_t DtimPeriod;
|
IEEEtypes_TimeStamp_t Tstamp;
|
IEEEtypes_TimeStamp_t StartTs;
|
IEEEtypes_PhyParamElement_t PhyParamSet;
|
IEEEtypes_SsParamElement_t SsParamSet;
|
IEEEtypes_CapInfo_t Cap;
|
IEEEtypes_DataRate_t DataRates[IEEEtypes_MAX_DATA_RATES_G];
|
/*
|
** DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used in the middle of
|
** the adhoc join command. Any changes will shift the binary layout
|
** of the following fields in the command from the driver
|
*/
|
} MLAN_PACK_END IEEEtypes_BssDesc_t;
|
|
typedef enum {
|
Band_2_4_GHz = 0,
|
Band_5_GHz = 1,
|
Band_4_GHz = 2,
|
|
} ChanBand_e;
|
|
#define NUM_CHAN_BAND_ENUMS 3
|
|
typedef enum {
|
ChanWidth_20_MHz = 0,
|
ChanWidth_10_MHz = 1,
|
ChanWidth_40_MHz = 2,
|
ChanWidth_80_MHz = 3,
|
|
} ChanWidth_e;
|
|
typedef enum {
|
SECONDARY_CHAN_NONE = 0,
|
SECONDARY_CHAN_ABOVE = 1,
|
SECONDARY_CHAN_BELOW = 3,
|
//reserved 2, 4~255
|
} Chan2Offset_e;
|
|
typedef enum {
|
MANUAL_MODE = 0,
|
ACS_MODE = 1,
|
} ScanMode_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 chan2Offset;
|
} MLAN_PACK_END IEEEtypes_SecondaryChannelOffset_t;
|
|
/* This struct is used in ROM and existing fields should not be changed. */
|
typedef MLAN_PACK_START struct {
|
ChanBand_e chanBand:2;
|
ChanWidth_e chanWidth:2;
|
Chan2Offset_e chan2Offset:2;
|
ScanMode_e scanMode:2;
|
} MLAN_PACK_END BandConfig_t;
|
|
#define MASK_SCAN_MODE(pBandConfig) (*(UINT8*)(pBandConfig) &= 0x3f)
|
|
#define BC_2_4_GHZ {Band_2_4_GHz, ChanWidth_20_MHz, SECONDARY_CHAN_NONE, MANUAL_MODE}
|
#define BC_5_GHZ {Band_5_GHz, ChanWidth_20_MHz, SECONDARY_CHAN_NONE, MANUAL_MODE}
|
|
typedef MLAN_PACK_START struct {
|
BandConfig_t bandConfig;
|
UINT8 chanNum;
|
|
} MLAN_PACK_END ChanBandInfo_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 passiveScan:1;
|
UINT8 disableChanFilt:1;
|
UINT8 multiDomainScan:1;
|
UINT8 rspTimeoutEn:1;
|
UINT8 hiddenSsidReport:1;
|
UINT8 firstScanCmd:1;
|
UINT8 reserved_6_7:2;
|
|
} MLAN_PACK_END ChanScanMode_t;
|
|
typedef MLAN_PACK_START struct {
|
BandConfig_t bandConfig;
|
UINT8 chanNum;
|
ChanScanMode_t scanMode;
|
UINT16 minScanTime; // unused - not removed since shared with
|
// host
|
UINT16 maxScanTime;
|
|
} MLAN_PACK_END channelInfo_t;
|
|
/*
|
** Join request message from the SME to establish synchronization with
|
** a BSS
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_BssDesc_t BssDesc;
|
#ifdef OLD_DFS
|
IEEEtypes_QuietElement_t Quiet_Element;
|
IEEEtypes_IbssDfsElement_t IBSS_DFS_Element;
|
#endif
|
channelInfo_t JoinChannel;
|
|
UINT8 *pIeBuf;
|
UINT16 ieBufLen;
|
} MLAN_PACK_END IEEEtypes_JoinCmd_t;
|
|
/*
|
** Join confirm message sent from the MLME as a result of a join request;
|
** it reports the result of the join
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_JoinResult_e Result;
|
} MLAN_PACK_END IEEEtypes_JoinCfrm_t;
|
|
/*
|
** Authenticate request message sent from the SME to establish
|
** authentication with a specified peer MAC entity
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_AuthType_e AuthType;
|
IEEEtypes_AuthTransSeq_t AuthTransSeq;
|
} MLAN_PACK_END IEEEtypes_AuthCmd_t;
|
|
/*
|
** Authenticate confirm message sent from the MLME as a result of an
|
** authenticate request; it reports the result of the authentication
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_AuthType_e AuthType;
|
IEEEtypes_AuthResult_e Result;
|
} MLAN_PACK_END IEEEtypes_AuthCfrm_t;
|
|
/*
|
** Authenticate indication message sent from the MLME to report
|
** authentication with a peer MAC entity that resulted from an
|
** authentication procedure that was initiated by that MAC entity
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_AuthType_e AuthType;
|
} MLAN_PACK_END IEEEtypes_AuthInd_t;
|
|
/*
|
** Deauthenticate request message sent from the SME to invalidate
|
** authentication with a specified peer MAC entity
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
channelInfo_t DeauthChanInfo;
|
IEEEtypes_ReasonCode_t Reason;
|
} MLAN_PACK_END IEEEtypes_DeauthCmd_t;
|
|
/*
|
** Deauthenticate confirm message sent from the MLME as a result of a
|
** deauthenticate request message; it reports the result of the
|
** deauthentication
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_DeauthResult_e Result;
|
} MLAN_PACK_END IEEEtypes_DeauthCfrm_t;
|
|
/*
|
** Deauthentication indication message sent from the MLME to report
|
** invalidation of an authentication with a peer MAC entity; the message
|
** is generated as a result of an invalidation of the authentication
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_ReasonCode_t Reason;
|
} MLAN_PACK_END IEEEtypes_DeauthInd_t;
|
|
/*
|
** Internal Association command constructed from the TLV based host
|
** command struct
|
*/
|
typedef struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_ListenInterval_t ListenInterval;
|
IEEEtypes_SsId_t SsId;
|
IEEEtypes_DataRate_t RateSet[IEEEtypes_MAX_DATA_RATES_G];
|
|
UINT8 *pIeBuf;
|
UINT16 ieBufLen;
|
|
} IEEEtypes_AssocCmd_t;
|
|
/*
|
** Association confirm message sent from the MLME as a result of an
|
** association request message; it reports the result of the assoication
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_AssocResult_e Result;
|
IEEEtypes_AssocCmdFailurePoint_e FailurePoint;
|
} MLAN_PACK_END IEEEtypes_AssocCfrm_t;
|
|
/*
|
** Disassociate request message sent from the SME to establish
|
** disassociation with an AP
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_ReasonCode_t Reason;
|
} MLAN_PACK_END IEEEtypes_DisassocCmd_t;
|
|
/*
|
** Disassociate confirm message sent from the MLME as a result of a
|
** disassociate request message; it reports the result of the
|
** disassociation
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_DisassocResult_e Result;
|
} MLAN_PACK_END IEEEtypes_DisassocCfrm_t;
|
|
/*
|
** Disassociate indication message sent from the MLME to report the
|
** invalidation of an association relationship with a peer MAC entity;
|
** the message is generated as a result of an invalidation of an
|
** association relationship
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
IEEEtypes_ReasonCode_t Reason;
|
} MLAN_PACK_END IEEEtypes_DisassocInd_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_MacAddr_t MacAddr;
|
} MLAN_PACK_END IEEEtypes_BssId_t;
|
|
/*
|
** Start request message sent from the SME to start a new BSS; the BSS
|
** may be either an infrastructure BSS (with the MAC entity acting as the
|
** AP) or an independent BSS (with the MAC entity acting as the first
|
** station in the IBSS)
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_SsId_t SsId;
|
IEEEtypes_Bss_e BssType;
|
IEEEtypes_BcnInterval_t BcnPeriod;
|
IEEEtypes_DtimPeriod_t DtimPeriod;
|
IEEEtypes_SsParamElement_t SsParamSet;
|
IEEEtypes_PhyParamElement_t PhyParamSet;
|
UINT16 Reserved;
|
IEEEtypes_CapInfo_t CapInfo;
|
IEEEtypes_DataRate_t OpRateSet[IEEEtypes_MAX_DATA_RATES_G];
|
#ifdef OLD_DFS
|
IEEEtypes_QuietElement_t Quiet_Element;
|
IEEEtypes_IbssDfsElement_t IBSS_DFS_Element;
|
#endif
|
channelInfo_t JoinChannel;
|
UINT8 *pIeBuf;
|
UINT16 ieBufLen;
|
IEEEtypes_BssId_t BssId;
|
} MLAN_PACK_END IEEEtypes_StartCmd_t;
|
|
/*
|
** Start confirm message sent from the MLME as a result of a start request
|
** message; it reports the results of the BSS creation procedure
|
*/
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_StartResult_e Result;
|
} MLAN_PACK_END IEEEtypes_StartCfrm_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t PeerStaAddr;
|
} MLAN_PACK_END IEEEtypes_TPCAdaptCmd_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_TPCAdaptResult_e Result;
|
} MLAN_PACK_END IEEEtypes_TPCAdaptCfrm_t;
|
|
typedef struct {
|
IEEEtypes_GenHdr_t Hdr;
|
UINT8 Body[8];
|
} IEEEtypes_Frame_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MacAddr_t da;
|
IEEEtypes_MacAddr_t sa;
|
UINT16 type;
|
} MLAN_PACK_END ether_hdr_t;
|
|
typedef MLAN_PACK_START struct {
|
ether_hdr_t Hdr;
|
UINT8 Body[1600 - 14];
|
} MLAN_PACK_END IEEEtypes_8023_Frame_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElemId;
|
IEEEtypes_Len_t Len;
|
UINT8 Oui[4];
|
UINT8 Data[1];
|
} MLAN_PACK_END IEEEtypes_WPSElement_t;
|
|
/*---------------------------------*/
|
/* IEEE 802.11 Management Messages */
|
/*---------------------------------*/
|
|
#define WMM_STATS_PKTS_HIST_BINS 7
|
|
typedef MLAN_PACK_START enum {
|
AckPolicy_ImmediateAck = 0,
|
AckPolicy_NoAck = 1,
|
AckPolicy_ExplicitAck = 2,
|
AckPolicy_BlockAck = 3,
|
|
} MLAN_PACK_END IEEEtypes_AckPolicy_e;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 userPriority:3;
|
UINT16 reserved1:1;
|
UINT16 eosp:1;
|
IEEEtypes_AckPolicy_e ackPolicy:2;
|
UINT16 amsdu:1;
|
UINT16 reserved2:8;
|
|
} MLAN_PACK_END IEEEtypes_QosCtl_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 Version;
|
UINT8 SourceIpAddr[4];
|
UINT8 DestIpAddr[4];
|
UINT8 SourcePort[2];
|
UINT8 DestPort[2];
|
UINT8 DSCP;
|
UINT8 Protocol;
|
UINT8 Reserved;
|
|
} MLAN_PACK_END IEEEtypes_TCLAS_IPv4_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
|
UINT8 UserPriority;
|
|
UINT8 ClassifierType;
|
UINT8 ClassifierMask;
|
|
MLAN_PACK_START union {
|
IEEEtypes_TCLAS_IPv4_t ipv4;
|
|
} MLAN_PACK_END classifier;
|
|
} MLAN_PACK_END IEEEtypes_TCLAS_t;
|
|
typedef enum {
|
AC_BE = 0x0,
|
AC_BK,
|
AC_VI,
|
AC_VO,
|
|
AC_MAX_TYPES
|
} IEEEtypes_WMM_AC_e;
|
|
#define WMM_MAX_TIDS 8
|
#define WMM_MAX_RX_PN_SUPPORTED 4
|
|
typedef MLAN_PACK_START struct {
|
UINT8 Aifsn:4;
|
UINT8 Acm:1;
|
UINT8 Aci:2;
|
UINT8 Rsvd1:1;
|
|
} MLAN_PACK_END IEEEtypes_WMM_AC_ACI_AIFSN_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 EcwMin:4;
|
UINT8 EcwMax:4;
|
|
} MLAN_PACK_END IEEEtypes_ECW_Min_Max_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_AC_ACI_AIFSN_t AciAifsn;
|
IEEEtypes_ECW_Min_Max_t EcwMinMax;
|
UINT16 TxopLimit;
|
|
} MLAN_PACK_END IEEEtypes_WMM_AC_Parameters_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ParamSetCount:4;
|
UINT8 Reserved1:3;
|
UINT8 QosInfoUAPSD:1;
|
|
} MLAN_PACK_END IEEEtypes_QAP_QOS_Info_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 AC_VO:1;
|
UINT8 AC_VI:1;
|
UINT8 AC_BK:1;
|
UINT8 AC_BE:1;
|
UINT8 QAck:1;
|
UINT8 MaxSP:2;
|
UINT8 MoreDataAck:1;
|
|
} MLAN_PACK_END IEEEtypes_QSTA_QOS_Info_t;
|
|
typedef MLAN_PACK_START union {
|
IEEEtypes_QAP_QOS_Info_t QAp;
|
IEEEtypes_QSTA_QOS_Info_t QSta;
|
|
} MLAN_PACK_END IEEEtypes_QOS_Info_t;
|
|
//added for TDLS
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
IEEEtypes_QOS_Info_t QosInfo;
|
} MLAN_PACK_END IEEEtypes_QOS_Capability_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 OuiType[4]; /* 00:50:f2:02 */
|
UINT8 OuiSubType; /* 01 */
|
UINT8 Version;
|
|
IEEEtypes_QOS_Info_t QosInfo;
|
UINT8 Reserved1;
|
IEEEtypes_WMM_AC_Parameters_t AcParams[AC_MAX_TYPES];
|
|
} MLAN_PACK_END IEEEtypes_WMM_ParamElement_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 OuiType[4]; /* 00:50:f2:02 */
|
UINT8 OuiSubType; /* 00 */
|
UINT8 Version;
|
|
IEEEtypes_QOS_Info_t QosInfo;
|
|
} MLAN_PACK_END IEEEtypes_WMM_InfoElement_t;
|
|
typedef MLAN_PACK_START enum {
|
TSPEC_DIR_UPLINK = 0,
|
TSPEC_DIR_DOWNLINK = 1,
|
/* 2 is a reserved value */
|
TSPEC_DIR_BIDIRECT = 3,
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_Direction_e;
|
|
typedef MLAN_PACK_START enum {
|
TSPEC_PSB_LEGACY = 0,
|
TSPEC_PSB_TRIG = 1,
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_PSB_e;
|
|
typedef MLAN_PACK_START enum {
|
/* 0 is reserved */
|
TSPEC_ACCESS_EDCA = 1,
|
TSPEC_ACCESS_HCCA = 2,
|
TSPEC_ACCESS_HEMM = 3,
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_AccessPolicy_e;
|
|
typedef MLAN_PACK_START enum {
|
TSPEC_ACKPOLICY_NORMAL = 0,
|
TSPEC_ACKPOLICY_NOACK = 1,
|
/* 2 is reserved */
|
TSPEC_ACKPOLICY_BLOCKACK = 3,
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e;
|
|
typedef MLAN_PACK_START enum {
|
TSPEC_TRAFFIC_APERIODIC = 0,
|
TSPEC_TRAFFIC_PERIODIC = 1,
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e TrafficType:1;
|
UINT8 TID:4; //! Unique identifier
|
IEEEtypes_WMM_TSPEC_TS_Info_Direction_e Direction:2;
|
UINT8 acp_1:1;
|
|
UINT8 acp_2:1;
|
UINT8 Aggregation:1;
|
IEEEtypes_WMM_TSPEC_TS_Info_PSB_e PSB:1; //! Legacy/Trigg
|
UINT8 UserPriority:3; //! 802.1d User Priority
|
IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e AckPolicy:2;
|
|
UINT8 tsinfo_0:8;
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Size:15; //! Nominal size in octets
|
UINT16 Fixed:1; //! 1: Fixed size given in Size, 0: Var, size is nominal
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_NomMSDUSize_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT16 Fractional:13; //! Fractional portion
|
UINT16 Whole:3; //! Whole portion
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_SBWA;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_TSPEC_TS_Info_t TSInfo;
|
IEEEtypes_WMM_TSPEC_NomMSDUSize_t NomMSDUSize;
|
UINT16 MaximumMSDUSize;
|
UINT32 MinServiceInterval;
|
UINT32 MaxServiceInterval;
|
UINT32 InactivityInterval;
|
UINT32 SuspensionInterval;
|
UINT32 ServiceStartTime;
|
UINT32 MinimumDataRate;
|
UINT32 MeanDataRate;
|
UINT32 PeakDataRate;
|
UINT32 MaxBurstSize;
|
UINT32 DelayBound;
|
UINT32 MinPHYRate;
|
IEEEtypes_WMM_TSPEC_SBWA SurplusBWAllowance;
|
UINT16 MediumTime;
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_Body_t;
|
|
typedef MLAN_PACK_START struct {
|
UINT8 ElementId;
|
UINT8 Len;
|
UINT8 OuiType[4]; /* 00:50:f2:02 */
|
UINT8 OuiSubType; /* 01 */
|
UINT8 Version;
|
|
IEEEtypes_WMM_TSPEC_Body_t TspecBody;
|
|
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_t;
|
|
typedef MLAN_PACK_START enum {
|
TSPEC_ACTION_CODE_ADDTS_REQ = 0,
|
TSPEC_ACTION_CODE_ADDTS_RSP = 1,
|
TSPEC_ACTION_CODE_DELTS = 2,
|
|
} MLAN_PACK_END IEEEtypes_WMM_Tspec_Action_e;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ActionCategory_e category;
|
IEEEtypes_WMM_Tspec_Action_e action;
|
UINT8 dialogToken;
|
|
} MLAN_PACK_END IEEEtypes_WMM_Tspec_Action_Base_Tspec_t;
|
|
/* Allocate enough space for a V4 TCLASS + a small CCX or VendSpec IE */
|
#define WMM_TSPEC_EXTRA_IE_BUF_MAX (sizeof(IEEEtypes_TCLAS_t) + 6)
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
|
UINT8 statusCode;
|
IEEEtypes_WMM_TSPEC_t tspecIE;
|
|
/* Place holder for additional elements after the TSPEC */
|
UINT8 subElem[WMM_TSPEC_EXTRA_IE_BUF_MAX];
|
|
} MLAN_PACK_END IEEEtypes_Action_WMM_AddTsReq_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
|
UINT8 statusCode;
|
IEEEtypes_WMM_TSPEC_t tspecIE;
|
|
/* Place holder for additional elements after the TSPEC */
|
UINT8 subElem[256];
|
|
} MLAN_PACK_END IEEEtypes_Action_WMM_AddTsRsp_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
|
UINT8 reasonCode;
|
IEEEtypes_WMM_TSPEC_t tspecIE;
|
|
} MLAN_PACK_END IEEEtypes_Action_WMM_DelTs_t;
|
|
typedef MLAN_PACK_START union {
|
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
|
|
IEEEtypes_Action_WMM_AddTsReq_t addTsReq;
|
IEEEtypes_Action_WMM_AddTsRsp_t addTsRsp;
|
IEEEtypes_Action_WMM_DelTs_t delTs;
|
|
} MLAN_PACK_END IEEEtypes_Action_WMMAC_t;
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_MgmtHdr_t Hdr;
|
MLAN_PACK_START union {
|
IEEEtypes_Bcn_t Bcn;
|
IEEEtypes_DisAssoc_t DisAssoc;
|
IEEEtypes_AssocRqst_t AssocRqst;
|
IEEEtypes_AssocRsp_t AssocRsp;
|
IEEEtypes_ReAssocRqst_t ReAssocRqst;
|
IEEEtypes_ReAssocRsp_t ReAssocRsp;
|
IEEEtypes_ProbeRqst_t ProbeRqst;
|
IEEEtypes_ProbeRsp_t ProbeRsp;
|
IEEEtypes_Auth_t Auth;
|
IEEEtypes_Deauth_t Deauth;
|
UINT8 BodyStart;
|
} MLAN_PACK_END Body;
|
|
UINT32 FCS;
|
} MLAN_PACK_END dot11MgtFrame_t;
|
|
#define FCS_SIZE (4)
|
|
#define IV_SIZE (4)
|
#define EIV_SIZE (4)
|
#define MIC_SIZE (8)
|
#define MIC_KEY_SIZE (8)
|
#define ICV_SIZE (4)
|
#define EXT_IV (0x20)
|
|
#define IEEE80211_HEADER_SIZE (24)
|
#define QOS_CTRL_SIZE (2)
|
#define IEEE80211_QOSHEADER_SIZE (IEEE80211_HEADER_SIZE+QOS_CTRL_SIZE)
|
|
#define MACHDR_n_FCS_SIZE (IEEE80211_HEADER_SIZE+FCS_SIZE)
|
#define QOS_MACHDR_n_FCS_SIZE (IEEE80211_QOSHEADER_SIZE+FCS_SIZE)
|
|
#define WEPOVERHEAD (IV_SIZE+ICV_SIZE)
|
|
#define IEEE80211_SIFS_11b (10) /* us */
|
#define IEEE80211_SIFS_11g (IEEE80211_SIFS_11b) /* us */
|
#define IEEE80211_SIFS_11a (16) /* us */
|
|
#define IEEE80211b_SHORT_PREAM (96) /* us */
|
#define IEEE80211b_LONG_PREAM (192) /* us */
|
|
#define SIGNAL_EXTENSION (6) /* us */
|
|
#define TPREAMBLE (16) /* us */
|
#define TSIGNAL (4) /* us */
|
#define IEEE80211g_PREAM (TPREAMBLE+TSIGNAL) /* us */
|
#define IEEE80211a_PREAM (IEEE80211g_PREAM ) /* us */
|
#define IEEE80211n_PREAM (40) /* us */
|
#define IEEE80211ac_PREAM (40) /* us */ //TBD
|
|
#define TSYM (4) /* us */
|
|
#define IEEE80211_BSS_CLOCK_PPM (100) // ppm
|
|
enum {
|
OTHER = 0x00,
|
FCC = 0x10,
|
IC = 0x20,
|
ETSI = 0x30,
|
SPAIN = 0x31,
|
FRANCE = 0x32,
|
JAPAN = 0x40,
|
JAPAN1 = 0x41,
|
CHINA = 0x50
|
};
|
|
typedef enum {
|
RegDomain_Null = 0x00,
|
|
RegDomain_FCC = 0x01,
|
RegDomain_ETSI = 0x02,
|
RegDomain_MIC = 0x03,
|
|
RegDomain_Other = 0xFF,
|
|
} RegDomain_e;
|
|
#define IEEE_PHY_RATE_CODE_1Mbps (10) // it's the same as IEEE_PHY_RATE_CODE_12Mbps
|
#define IEEE_PHY_RATE_CODE_2Mbps (20)
|
#define IEEE_PHY_RATE_CODE_5_5Mbps (55)
|
#define IEEE_PHY_RATE_CODE_11Mbps (110)
|
#define IEEE_PHY_RATE_CODE_22Mbps (220)
|
#define IEEE_PHY_RATE_CODE_6Mbps (0x0B)
|
#define IEEE_PHY_RATE_CODE_9Mbps (0x0F)
|
#define IEEE_PHY_RATE_CODE_12Mbps (0x0A) // it's the same as IEEE_PHY_RATE_CODE_1Mbps
|
#define IEEE_PHY_RATE_CODE_18Mbps (0x0E)
|
#define IEEE_PHY_RATE_CODE_24Mbps (0x09)
|
#define IEEE_PHY_RATE_CODE_36Mbps (0x0D)
|
#define IEEE_PHY_RATE_CODE_48Mbps (0x08)
|
#define IEEE_PHY_RATE_CODE_54Mbps (0x0C)
|
#define IEEE_PHY_RATE_CODE_72Mbps (0x07)
|
|
#define IEEE_PHY_RATE_CODE_1Mbps (10) // it's the same as IEEE_PHY_RATE_CODE_12Mbps
|
#define IEEE_PHY_RATE_CODE_2Mbps (20)
|
#define IEEE_PHY_RATE_CODE_5_5Mbps (55)
|
#define IEEE_PHY_RATE_CODE_11Mbps (110)
|
#define IEEE_PHY_RATE_CODE_22Mbps (220)
|
|
#define IEEE_PHY_RATE_CODE_6Mbps (0x0B)
|
#define IEEE_PHY_RATE_CODE_9Mbps (0x0F)
|
#define IEEE_PHY_RATE_CODE_12Mbps (0x0A) // it's the same as IEEE_PHY_RATE_CODE_1Mbps
|
#define IEEE_PHY_RATE_CODE_18Mbps (0x0E)
|
#define IEEE_PHY_RATE_CODE_24Mbps (0x09)
|
#define IEEE_PHY_RATE_CODE_36Mbps (0x0D)
|
#define IEEE_PHY_RATE_CODE_48Mbps (0x08)
|
#define IEEE_PHY_RATE_CODE_54Mbps (0x0C)
|
#define IEEE_PHY_RATE_CODE_72Mbps (0x07)
|
|
#define IEEE_PHY_RATE_CODE_MCS0 (0x00)
|
#define IEEE_PHY_RATE_CODE_MCS1 (0x01)
|
#define IEEE_PHY_RATE_CODE_MCS2 (0x02)
|
#define IEEE_PHY_RATE_CODE_MCS3 (0x03)
|
#define IEEE_PHY_RATE_CODE_MCS4 (0x04)
|
#define IEEE_PHY_RATE_CODE_MCS5 (0x05)
|
#define IEEE_PHY_RATE_CODE_MCS6 (0x06)
|
#define IEEE_PHY_RATE_CODE_MCS7 (0x07)
|
|
#define IEEE_PHY_RATE_CODE_MCS8 (0x08)
|
#define IEEE_PHY_RATE_CODE_MCS9 (0x09)
|
#define IEEE_PHY_RATE_CODE_MCS10 (0x0A)
|
#define IEEE_PHY_RATE_CODE_MCS11 (0x0B)
|
#define IEEE_PHY_RATE_CODE_MCS12 (0x0C)
|
#define IEEE_PHY_RATE_CODE_MCS13 (0x0D)
|
#define IEEE_PHY_RATE_CODE_MCS14 (0x0E)
|
#define IEEE_PHY_RATE_CODE_MCS15 (0x0F)
|
|
#define IEEE_PHY_RATE_CODE_MCS32 (0x20)
|
|
typedef enum {
|
MOD_CLASS_INFRA = 1,
|
MOD_CLASS_FHSS = 2,
|
MOD_CLASS_HR_DSSS = 3,
|
MOD_CLASS_ERP_PBCC = 4,
|
MOD_CLASS_DSSS_OFDM = 5,
|
MOD_CLASS_ERP_OFDM = 6,
|
MOD_CLASS_OFDM = 7,
|
MOD_CLASS_HT = 8,
|
MOD_CLASS_VHT = 9,
|
} MOD_CLASS_e;
|
|
typedef enum {
|
DSSS_1Mbps = 0 + (MOD_CLASS_HR_DSSS << 8),
|
DSSS_2Mbps,
|
DSSS_5d5Mbps,
|
DSSS_11Mbps,
|
} HR_DSSS_e;
|
|
typedef enum {
|
OFDM_6Mbps = 0 + (MOD_CLASS_OFDM << 8),
|
OFDM_9Mbps,
|
OFDM_12Mbps,
|
OFDM_18Mbps,
|
OFDM_24Mbps,
|
OFDM_36Mbps,
|
OFDM_48Mbps,
|
OFDM_54Mbps,
|
} OFDM_e;
|
|
typedef enum {
|
// 1x1 EM
|
MCS_0 = 0 + (MOD_CLASS_HT << 8),
|
MCS_1,
|
MCS_2,
|
MCS_3,
|
MCS_4,
|
MCS_5,
|
MCS_6,
|
MCS_7,
|
|
// 2x2 EM
|
MCS_8,
|
MCS_9,
|
MCS_10,
|
MCS_11,
|
MCS_12,
|
MCS_13,
|
MCS_14,
|
MCS_15,
|
|
// 3x3 EM
|
MCS_16,
|
MCS_17,
|
MCS_18,
|
MCS_19,
|
MCS_20,
|
MCS_21,
|
MCS_22,
|
MCS_23,
|
|
// 4x4 EM
|
MCS_24,
|
MCS_25,
|
MCS_26,
|
MCS_27,
|
MCS_28,
|
MCS_29,
|
MCS_30,
|
MCS_31,
|
|
// 1x1 EM 40MHz only
|
MCS_32,
|
|
// 2x2 UEM
|
MCS_33,
|
MCS_34,
|
MCS_35,
|
MCS_36,
|
MCS_37,
|
MCS_38,
|
|
// 3x3 UEM
|
MCS_39,
|
MCS_40,
|
MCS_41,
|
MCS_42,
|
MCS_43,
|
MCS_44,
|
MCS_45,
|
MCS_46,
|
MCS_47,
|
MCS_48,
|
MCS_49,
|
MCS_50,
|
MCS_51,
|
MCS_52,
|
|
// 4x4 UEM
|
MCS_53,
|
MCS_54,
|
MCS_55,
|
MCS_56,
|
MCS_57,
|
MCS_58,
|
MCS_59,
|
MCS_60,
|
MCS_61,
|
MCS_62,
|
MCS_63,
|
MCS_64,
|
MCS_65,
|
MCS_66,
|
MCS_67,
|
MCS_68,
|
MCS_69,
|
MCS_70,
|
MCS_71,
|
MCS_72,
|
MCS_73,
|
MCS_74,
|
MCS_75,
|
MCS_76,
|
|
} MCS_e;
|
|
typedef union {
|
UINT16 u16;
|
HR_DSSS_e dsss;
|
OFDM_e ofdm;
|
MCS_e mcs;
|
} RATE_CODE_u;
|
|
#define RATECODE_to_RATEID(x) (x & 0xff)
|
|
#define IEEEtypes_STATUS_INVALID_INFO_ELEMENT 40
|
#define IEEEtypes_STATUS_INVALID_AKMP 43
|
#define IEEEtypes_STATUS_CIPHER_POLICY_REJECT 46
|
#define IEEEtypes_STATUS_INVALID_MCAST_CIPHER 47
|
#define IEEEtypes_STATUS_INVALID_UCAST_CIPHER 48
|
#define IEEEtypes_STATUS_UNSUPPORT_WAPI_VERSION 49
|
#define IEEEtypes_STATUS_INVALID_WAPI_CAPS 50
|
|
typedef MLAN_PACK_START struct {
|
IEEEtypes_ElementId_e ElementId;
|
IEEEtypes_Len_t Len;
|
UINT8 Data[1];
|
} MLAN_PACK_END IEEEtypes_WAPIElement_t;
|
|
#endif /* _IEEE_TYPES_H_ */
|