mwifiex/mxm_wifiex/wlan_src/mlan/mlan_ieee.h
Sherry Sun 8ffae47921 mxm_wifiex: update to mxm5x17283 release
changes:
1. WCSWREL-191: Fixed the error when loading module param from user config for SD8801
2. WCSWREL-186: Fixed the issue of mlanutl failing on kernel higher than L5.15
3. Fixed low throughput issue for WPA3 SAE
4. Added driver change for WLAN throughput improvement on 8997 SoC
5. Updated README to recommend not to use WEP/TKIP for all chipsets
6. WCSWREL-180: Fix P2P test fail on kernel higher than L5.12
7. WCSWREL-156: kernel_write/kernel_read not allowed by drivers for L5.10 kernel GKI buildou
8. Alternative for pm_qos_add_request/pm_qos_remove_request

Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Approved-by: Tian Yang <yang.tian@nxp.com>
2021-10-12 12:16:50 +08:00

2005 lines
56 KiB
C

/** @file mlan_ieee.h
*
* @brief This file contains IEEE information element related
* definitions used in MLAN and MOAL module.
*
*
* Copyright 2008-2021 NXP
*
* This software file (the File) is distributed by NXP
* under the terms of the GNU General Public License Version 2, June 1991
* (the License). You may use, redistribute and/or modify the 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:
11/03/2008: initial version
******************************************************/
#ifndef _MLAN_IEEE_H_
#define _MLAN_IEEE_H_
/** FIX IES size in beacon buffer */
#define WLAN_802_11_FIXED_IE_SIZE 12
/** WLAN supported rates */
#define WLAN_SUPPORTED_RATES 14
/** WLAN supported rates extension */
#define WLAN_SUPPORTED_RATES_EXT 60
/** Enumeration definition*/
/** WLAN_802_11_NETWORK_TYPE */
typedef enum _WLAN_802_11_NETWORK_TYPE {
Wlan802_11FH,
Wlan802_11DS,
/* Defined as upper bound*/
Wlan802_11NetworkTypeMax
} WLAN_802_11_NETWORK_TYPE;
#ifdef BIG_ENDIAN_SUPPORT
/** Frame control: Type Mgmt frame */
#define IEEE80211_FC_MGMT_FRAME_TYPE_MASK 0x3000
/** Frame control: SubType Mgmt frame */
#define IEEE80211_GET_FC_MGMT_FRAME_SUBTYPE(fc) (((fc)&0xF000) >> 12)
#else
/** Frame control: Type Mgmt frame */
#define IEEE80211_FC_MGMT_FRAME_TYPE_MASK 0x000C
/** Frame control: SubType Mgmt frame */
#define IEEE80211_GET_FC_MGMT_FRAME_SUBTYPE(fc) (((fc)&0x00F0) >> 4)
#endif
#ifdef PRAGMA_PACK
#pragma pack(push, 1)
#endif
/* Reason codes */
#define IEEE_80211_REASONCODE_UNSPECIFIED 1
typedef enum _IEEEtypes_Ext_ElementId_e {
HE_CAPABILITY = 35,
HE_OPERATION = 36
} IEEEtypes_Ext_ElementId_e;
/** IEEE Type definitions */
typedef MLAN_PACK_START enum _IEEEtypes_ElementId_e {
SSID = 0,
SUPPORTED_RATES = 1,
FH_PARAM_SET = 2,
DS_PARAM_SET = 3,
CF_PARAM_SET = 4,
IBSS_PARAM_SET = 6,
COUNTRY_INFO = 7,
POWER_CONSTRAINT = 32,
POWER_CAPABILITY = 33,
TPC_REQUEST = 34,
TPC_REPORT = 35,
CHANNEL_SWITCH_ANN = 37,
EXTEND_CHANNEL_SWITCH_ANN = 60,
QUIET = 40,
IBSS_DFS = 41,
SUPPORTED_CHANNELS = 36,
REGULATORY_CLASS = 59,
HT_CAPABILITY = 45,
QOS_INFO = 46,
HT_OPERATION = 61,
MULTI_BSSID = 71,
BSSCO_2040 = 72,
OVERLAPBSSSCANPARAM = 74,
NONTX_BSSID_CAP = 83,
MBSSID_INDEX = 85,
EXT_CAPABILITY = 127,
LINK_ID = 101,
/*IEEE802.11r*/
MOBILITY_DOMAIN = 54,
FAST_BSS_TRANSITION = 55,
TIMEOUT_INTERVAL = 56,
RIC = 57,
QOS_MAPPING = 110,
VHT_CAPABILITY = 191,
VHT_OPERATION = 192,
EXT_BSS_LOAD = 193,
BW_CHANNEL_SWITCH = 194,
VHT_TX_POWER_ENV = 195,
EXT_POWER_CONSTR = 196,
AID_INFO = 197,
QUIET_CHAN = 198,
OPER_MODE_NTF = 199,
ERP_INFO = 42,
EXTENDED_SUPPORTED_RATES = 50,
VENDOR_SPECIFIC_221 = 221,
WMM_IE = VENDOR_SPECIFIC_221,
WPS_IE = VENDOR_SPECIFIC_221,
/* WPA */
WPA_IE = VENDOR_SPECIFIC_221,
/* WPA2 */
RSN_IE = 48,
VS_IE = VENDOR_SPECIFIC_221,
WAPI_IE = 68,
FRAGMENT = 242,
RSNX_IE = 244,
EXTENSION = 255
} MLAN_PACK_END IEEEtypes_ElementId_e;
/** IEEE IE header */
typedef MLAN_PACK_START struct _IEEEtypes_Header_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
} MLAN_PACK_END IEEEtypes_Header_t, *pIEEEtypes_Header_t;
/** Vendor specific IE header */
typedef MLAN_PACK_START struct _IEEEtypes_VendorHeader_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** OUI */
t_u8 oui[3];
/** OUI type */
t_u8 oui_type;
/** OUI subtype */
t_u8 oui_subtype;
/** Version */
t_u8 version;
} MLAN_PACK_END IEEEtypes_VendorHeader_t, *pIEEEtypes_VendorHeader_t;
/** Vendor specific IE */
typedef MLAN_PACK_START struct _IEEEtypes_VendorSpecific_t {
/** Vendor specific IE header */
IEEEtypes_VendorHeader_t vend_hdr;
/** IE Max - size of previous fields */
t_u8 data[IEEE_MAX_IE_SIZE - sizeof(IEEEtypes_VendorHeader_t)];
} MLAN_PACK_END IEEEtypes_VendorSpecific_t, *pIEEEtypes_VendorSpecific_t;
/** IEEE IE */
typedef MLAN_PACK_START struct _IEEEtypes_Generic_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** IE Max - size of previous fields */
t_u8 data[IEEE_MAX_IE_SIZE - sizeof(IEEEtypes_Header_t)];
} MLAN_PACK_END IEEEtypes_Generic_t, *pIEEEtypes_Generic_t;
/**ft capability policy*/
typedef MLAN_PACK_START struct _IEEEtypes_FtCapPolicy_t {
#ifdef BIG_ENDIAN_SUPPORT
/** Reserved */
t_u8 reserved : 6;
/** RIC support */
t_u8 ric : 1;
/** FT over the DS capable */
t_u8 ft_over_ds : 1;
#else
/** FT over the DS capable */
t_u8 ft_over_ds : 1;
/** RIC support */
t_u8 ric : 1;
/** Reserved */
t_u8 reserved : 6;
#endif
} MLAN_PACK_END IEEEtypes_FtCapPolicy_t;
/** Mobility domain IE */
typedef MLAN_PACK_START struct _IEEEtypes_MobilityDomain_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** Mobility Domain ID */
t_u16 mdid;
/** FT Capability policy */
t_u8 ft_cap;
} MLAN_PACK_END IEEEtypes_MobilityDomain_t;
/**FT MIC Control*/
typedef MLAN_PACK_START struct _IEEEtypes_FT_MICControl_t {
/** reserved */
t_u8 reserved;
/** element count */
t_u8 element_count;
} MLAN_PACK_END IEEEtypes_FT_MICControl_t;
/** FTIE MIC LEN */
#define FTIE_MIC_LEN 16
/**FT IE*/
typedef MLAN_PACK_START struct _IEEEtypes_FastBssTransElement_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** mic control */
IEEEtypes_FT_MICControl_t mic_control;
/** mic */
t_u8 mic[FTIE_MIC_LEN];
/** ANonce */
t_u8 a_nonce[32];
/** SNonce */
t_u8 s_nonce[32];
/** sub element */
t_u8 sub_element[1];
} MLAN_PACK_END IEEEtypes_FastBssTransElement_t;
/*Category for FT*/
#define FT_CATEGORY 6
/** FT ACTION request */
#define FT_ACTION_REQUEST 1
/** FT ACTION response */
#define FT_ACTION_RESPONSE 2
/*FT response and FT ack*/
typedef MLAN_PACK_START struct {
/** category */
t_u8 category;
/** action */
t_u8 action;
/** sta address */
t_u8 sta_addr[MLAN_MAC_ADDR_LENGTH];
/** target ap address */
t_u8 target_ap_addr[MLAN_MAC_ADDR_LENGTH];
/** status code */
t_u16 status_code;
/** varible */
t_u8 variable[];
} MLAN_PACK_END IEEEtypes_Ft_action_response;
/**FT request */
typedef MLAN_PACK_START struct {
/** category */
t_u8 category;
/** action */
t_u8 action;
/** sta address */
t_u8 sta_addr[MLAN_MAC_ADDR_LENGTH];
/** target ap address */
t_u8 target_ap_addr[MLAN_MAC_ADDR_LENGTH];
/** varible */
t_u8 variable[];
} MLAN_PACK_END IEEEtypes_Ft_action_request;
/** auth frame body*/
typedef MLAN_PACK_START struct {
/** auth alg */
t_u16 auth_alg;
/** auth transaction */
t_u16 auth_transaction;
/** status code */
t_u16 status_code;
/** variable */
t_u8 variable[];
} MLAN_PACK_END IEEEtypes_Auth_framebody;
/** associate request frame */
typedef MLAN_PACK_START struct {
t_u16 capab_info;
t_u16 listen_interval;
/** followed by SSID and Supported rates */
t_u8 variablep[];
} MLAN_PACK_END IEEEtypes_assoc_req;
/*Mgmt frame*/
typedef MLAN_PACK_START struct {
/** frame control */
t_u16 frame_control;
/** duration */
t_u16 duration;
/** dest address */
t_u8 da[MLAN_MAC_ADDR_LENGTH];
/** source address */
t_u8 sa[MLAN_MAC_ADDR_LENGTH];
/** bssid */
t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
/** seq control */
t_u16 seq_ctrl;
/** address 4 */
t_u8 addr4[MLAN_MAC_ADDR_LENGTH];
union {
IEEEtypes_Auth_framebody auth;
IEEEtypes_assoc_req assoc_req;
IEEEtypes_Ft_action_response ft_resp;
IEEEtypes_Ft_action_request ft_req;
} u;
} MLAN_PACK_END IEEE80211_MGMT;
/** TLV header */
typedef MLAN_PACK_START struct _TLV_Generic_t {
/** Type */
t_u16 type;
/** Length */
t_u16 len;
} MLAN_PACK_END TLV_Generic_t, *pTLV_Generic_t;
/** Capability information mask */
#define CAPINFO_MASK (~(MBIT(15) | MBIT(14) | MBIT(11) | MBIT(9)))
/** Capability Bit Map*/
#ifdef BIG_ENDIAN_SUPPORT
typedef MLAN_PACK_START struct _IEEEtypes_CapInfo_t {
t_u8 rsrvd1 : 2;
t_u8 dsss_ofdm : 1;
t_u8 radio_measurement : 1;
t_u8 rsvrd2 : 1;
t_u8 short_slot_time : 1;
t_u8 rsrvd3 : 1;
t_u8 spectrum_mgmt : 1;
t_u8 chan_agility : 1;
t_u8 pbcc : 1;
t_u8 short_preamble : 1;
t_u8 privacy : 1;
t_u8 cf_poll_rqst : 1;
t_u8 cf_pollable : 1;
t_u8 ibss : 1;
t_u8 ess : 1;
} MLAN_PACK_END IEEEtypes_CapInfo_t, *pIEEEtypes_CapInfo_t;
#else
typedef MLAN_PACK_START struct _IEEEtypes_CapInfo_t {
/** Capability Bit Map : ESS */
t_u8 ess : 1;
/** Capability Bit Map : IBSS */
t_u8 ibss : 1;
/** Capability Bit Map : CF pollable */
t_u8 cf_pollable : 1;
/** Capability Bit Map : CF poll request */
t_u8 cf_poll_rqst : 1;
/** Capability Bit Map : privacy */
t_u8 privacy : 1;
/** Capability Bit Map : Short preamble */
t_u8 short_preamble : 1;
/** Capability Bit Map : PBCC */
t_u8 pbcc : 1;
/** Capability Bit Map : Channel agility */
t_u8 chan_agility : 1;
/** Capability Bit Map : Spectrum management */
t_u8 spectrum_mgmt : 1;
/** Capability Bit Map : Reserved */
t_u8 rsrvd3 : 1;
/** Capability Bit Map : Short slot time */
t_u8 short_slot_time : 1;
/** Capability Bit Map : APSD */
t_u8 Apsd : 1;
/** Capability Bit Map : Reserved */
t_u8 rsvrd2 : 1;
/** Capability Bit Map : DSS OFDM */
t_u8 dsss_ofdm : 1;
/** Capability Bit Map : Reserved */
t_u8 rsrvd1 : 2;
} MLAN_PACK_END IEEEtypes_CapInfo_t, *pIEEEtypes_CapInfo_t;
#endif /* BIG_ENDIAN_SUPPORT */
/** IEEEtypes_Ssid_t */
typedef MLAN_PACK_START struct _IEEEtypes_Ssid_t {
/** SSID: Element ID */
t_u8 element_id;
/** SSID : Length */
t_u8 len;
/** ssid */
t_u8 ssid[MLAN_MAX_SSID_LENGTH];
} MLAN_PACK_END IEEEtypes_Ssid_t, *pIEEEtypes_Ssid_t;
/** IEEEtypes_CfParamSet_t */
typedef MLAN_PACK_START struct _IEEEtypes_CfParamSet_t {
/** CF peremeter : Element ID */
t_u8 element_id;
/** CF peremeter : Length */
t_u8 len;
/** CF peremeter : Count */
t_u8 cfp_cnt;
/** CF peremeter : Period */
t_u8 cfp_period;
/** CF peremeter : Maximum duration */
t_u16 cfp_max_duration;
/** CF peremeter : Remaining duration */
t_u16 cfp_duration_remaining;
} MLAN_PACK_END IEEEtypes_CfParamSet_t, *pIEEEtypes_CfParamSet_t;
/** IEEEtypes_IbssParamSet_t */
typedef MLAN_PACK_START struct _IEEEtypes_IbssParamSet_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** ATIM window value in milliseconds */
t_u16 atim_window;
} MLAN_PACK_END IEEEtypes_IbssParamSet_t, *pIEEEtypes_IbssParamSet_t;
/** IEEEtypes_SsParamSet_t */
typedef MLAN_PACK_START union _IEEEtypes_SsParamSet_t {
/** SS parameter : CF parameter set */
IEEEtypes_CfParamSet_t cf_param_set;
/** SS parameter : IBSS parameter set */
IEEEtypes_IbssParamSet_t ibss_param_set;
} MLAN_PACK_END IEEEtypes_SsParamSet_t, *pIEEEtypes_SsParamSet_t;
/** IEEEtypes_FhParamSet_t */
typedef MLAN_PACK_START struct _IEEEtypes_FhParamSet_t {
/** FH parameter : Element ID */
t_u8 element_id;
/** FH parameter : Length */
t_u8 len;
/** FH parameter : Dwell time in milliseconds */
t_u16 dwell_time;
/** FH parameter : Hop set */
t_u8 hop_set;
/** FH parameter : Hop pattern */
t_u8 hop_pattern;
/** FH parameter : Hop index */
t_u8 hop_index;
} MLAN_PACK_END IEEEtypes_FhParamSet_t, *pIEEEtypes_FhParamSet_t;
/** IEEEtypes_DsParamSet_t */
typedef MLAN_PACK_START struct _IEEEtypes_DsParamSet_t {
/** DS parameter : Element ID */
t_u8 element_id;
/** DS parameter : Length */
t_u8 len;
/** DS parameter : Current channel */
t_u8 current_chan;
} MLAN_PACK_END IEEEtypes_DsParamSet_t, *pIEEEtypes_DsParamSet_t;
/** IEEEtypes_PhyParamSet_t */
typedef MLAN_PACK_START union _IEEEtypes_PhyParamSet_t {
/** FH parameter set */
IEEEtypes_FhParamSet_t fh_param_set;
/** DS parameter set */
IEEEtypes_DsParamSet_t ds_param_set;
} MLAN_PACK_END IEEEtypes_PhyParamSet_t, *pIEEEtypes_PhyParamSet_t;
/** IEEEtypes_ERPInfo_t */
typedef MLAN_PACK_START struct _IEEEtypes_ERPInfo_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** ERP flags */
t_u8 erp_flags;
} MLAN_PACK_END IEEEtypes_ERPInfo_t, *pIEEEtypes_ERPInfo_t;
/** IEEEtypes_AId_t */
typedef t_u16 IEEEtypes_AId_t;
/** IEEEtypes_StatusCode_t */
typedef t_u16 IEEEtypes_StatusCode_t;
/** Fixed size in assoc_resp */
#define ASSOC_RESP_FIXED_SIZE 6
/** IEEEtypes_SeqCtl_t */
typedef MLAN_PACK_START struct _IEEEtypes_SeqCtl_t {
/** Fragment Number */
t_u16 FragNum : 4;
/** Sequence Number */
t_u16 SeqNum : 12;
} MLAN_PACK_END IEEEtypes_SeqCtl_t;
/** IEEEtypes_MgmtHdr_t */
typedef MLAN_PACK_START struct _IEEEtypes_MgmtHdr_t {
/** FrmCtl*/
t_u16 FrmCtl;
/** Duration*/
t_u16 Duration;
/** Destination Addr*/
t_u8 DestAddr[6];
/** Source Addr*/
t_u8 SrcAddr[6];
/** BSSID */
t_u8 BssId[6];
/** IEEEtypes_SeqCtl_t */
IEEEtypes_SeqCtl_t SeqCtl;
} MLAN_PACK_END IEEEtypes_MgmtHdr_t;
/** IEEEtypes_AssocRsp_t */
typedef MLAN_PACK_START struct _IEEEtypes_AssocRsp_t {
/** Capability information */
IEEEtypes_CapInfo_t capability;
/** Association response status code */
IEEEtypes_StatusCode_t status_code;
/** Association ID */
IEEEtypes_AId_t a_id;
/** IE data buffer */
t_u8 ie_buffer[1];
} MLAN_PACK_END IEEEtypes_AssocRsp_t, *pIEEEtypes_AssocRsp_t;
/** 802.11 supported rates */
typedef t_u8 WLAN_802_11_RATES[WLAN_SUPPORTED_RATES];
/** cipher TKIP */
#define WPA_CIPHER_TKIP 2
/** cipher AES */
#define WPA_CIPHER_AES_CCM 4
/** AKM: 8021x */
#define RSN_AKM_8021X 1
/** AKM: PSK */
#define RSN_AKM_PSK 2
/** AKM: PSK SHA256 */
#define RSN_AKM_PSK_SHA256 6
/** AKM: PSK SHA256 */
#define RSN_AKM_SAE 8
/** AKM: PSK SHA256 */
#define RSN_AKM_OWE 18
#if defined(STA_SUPPORT)
/** Pairwise Cipher Suite length */
#define PAIRWISE_CIPHER_SUITE_LEN 4
/** AKM Suite length */
#define AKM_SUITE_LEN 4
/** MFPC bit in RSN capability */
#define MFPC_BIT 7
/** MFPR bit in RSN capability */
#define MFPR_BIT 6
/** PMF ORing mask */
#define PMF_MASK 0x00c0
#endif
/** wpa_suite_t */
typedef MLAN_PACK_START struct _wpa_suite_t {
/** OUI */
t_u8 oui[3];
/** tyep */
t_u8 type;
} MLAN_PACK_END wpa_suite, wpa_suite_mcast_t;
/** wpa_suite_ucast_t */
typedef MLAN_PACK_START struct {
/* count */
t_u16 count;
/** wpa_suite list */
wpa_suite list[1];
} MLAN_PACK_END wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t;
/** IEEEtypes_Rsn_t */
typedef MLAN_PACK_START struct _IEEEtypes_Rsn_t {
/** Rsn : Element ID */
t_u8 element_id;
/** Rsn : Length */
t_u8 len;
/** Rsn : version */
t_u16 version;
/** Rsn : group cipher */
wpa_suite_mcast_t group_cipher;
/** Rsn : pairwise cipher */
wpa_suite_ucast_t pairwise_cipher;
} MLAN_PACK_END IEEEtypes_Rsn_t, *pIEEEtypes_Rsn_t;
/** IEEEtypes_Wpa_t */
typedef MLAN_PACK_START struct _IEEEtypes_Wpa_t {
/** Wpa : Element ID */
t_u8 element_id;
/** Wpa : Length */
t_u8 len;
/** Wpa : oui */
t_u8 oui[4];
/** version */
t_u16 version;
/** Wpa : group cipher */
wpa_suite_mcast_t group_cipher;
/** Wpa : pairwise cipher */
wpa_suite_ucast_t pairwise_cipher;
} MLAN_PACK_END IEEEtypes_Wpa_t, *pIEEEtypes_Wpa_t;
/** Data structure of WMM QoS information */
typedef MLAN_PACK_START struct _IEEEtypes_WmmQosInfo_t {
#ifdef BIG_ENDIAN_SUPPORT
/** QoS UAPSD */
t_u8 qos_uapsd : 1;
/** Reserved */
t_u8 reserved : 3;
/** Parameter set count */
t_u8 para_set_count : 4;
#else
/** Parameter set count */
t_u8 para_set_count : 4;
/** Reserved */
t_u8 reserved : 3;
/** QoS UAPSD */
t_u8 qos_uapsd : 1;
#endif /* BIG_ENDIAN_SUPPORT */
} MLAN_PACK_END IEEEtypes_WmmQosInfo_t, *pIEEEtypes_WmmQosInfo_t;
/** Data structure of WMM Aci/Aifsn */
typedef MLAN_PACK_START struct _IEEEtypes_WmmAciAifsn_t {
#ifdef BIG_ENDIAN_SUPPORT
/** Reserved */
t_u8 reserved : 1;
/** Aci */
t_u8 aci : 2;
/** Acm */
t_u8 acm : 1;
/** Aifsn */
t_u8 aifsn : 4;
#else
/** Aifsn */
t_u8 aifsn : 4;
/** Acm */
t_u8 acm : 1;
/** Aci */
t_u8 aci : 2;
/** Reserved */
t_u8 reserved : 1;
#endif /* BIG_ENDIAN_SUPPORT */
} MLAN_PACK_END IEEEtypes_WmmAciAifsn_t, *pIEEEtypes_WmmAciAifsn_t;
/** Data structure of WMM ECW */
typedef MLAN_PACK_START struct _IEEEtypes_WmmEcw_t {
#ifdef BIG_ENDIAN_SUPPORT
/** Maximum Ecw */
t_u8 ecw_max : 4;
/** Minimum Ecw */
t_u8 ecw_min : 4;
#else
/** Minimum Ecw */
t_u8 ecw_min : 4;
/** Maximum Ecw */
t_u8 ecw_max : 4;
#endif /* BIG_ENDIAN_SUPPORT */
} MLAN_PACK_END IEEEtypes_WmmEcw_t, *pIEEEtypes_WmmEcw_t;
/** Data structure of WMM AC parameters */
typedef MLAN_PACK_START struct _IEEEtypes_WmmAcParameters_t {
IEEEtypes_WmmAciAifsn_t aci_aifsn; /**< AciAifSn */
IEEEtypes_WmmEcw_t ecw; /**< Ecw */
t_u16 tx_op_limit; /**< Tx op limit */
} MLAN_PACK_END IEEEtypes_WmmAcParameters_t, *pIEEEtypes_WmmAcParameters_t;
/** Data structure of WMM Info IE */
typedef MLAN_PACK_START struct _IEEEtypes_WmmInfo_t {
/**
* WMM Info IE - Vendor Specific Header:
* element_id [221/0xdd]
* Len [7]
* Oui [00:50:f2]
* OuiType [2]
* OuiSubType [0]
* Version [1]
*/
IEEEtypes_VendorHeader_t vend_hdr;
/** QoS information */
IEEEtypes_WmmQosInfo_t qos_info;
} MLAN_PACK_END IEEEtypes_WmmInfo_t, *pIEEEtypes_WmmInfo_t;
/** Data structure of WMM parameter IE */
typedef MLAN_PACK_START struct _IEEEtypes_WmmParameter_t {
/**
* WMM Parameter IE - Vendor Specific Header:
* element_id [221/0xdd]
* Len [24]
* Oui [00:50:f2]
* OuiType [2]
* OuiSubType [1]
* Version [1]
*/
IEEEtypes_VendorHeader_t vend_hdr;
/** QoS information */
IEEEtypes_WmmQosInfo_t qos_info;
/** Reserved */
t_u8 reserved;
/** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */
IEEEtypes_WmmAcParameters_t ac_params[MAX_AC_QUEUES];
} MLAN_PACK_END IEEEtypes_WmmParameter_t, *pIEEEtypes_WmmParameter_t;
/** Enumerator for TSPEC direction */
typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_Direction_e {
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;
/** Enumerator for TSPEC PSB */
typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_PSB_e {
TSPEC_PSB_LEGACY = 0,
TSPEC_PSB_TRIG = 1,
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_PSB_e;
/** Enumerator for TSPEC Ack Policy */
typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e {
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;
/** Enumerator for TSPEC Trafffice type */
typedef MLAN_PACK_START enum _IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e {
TSPEC_TRAFFIC_APERIODIC = 0,
TSPEC_TRAFFIC_PERIODIC = 1,
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e;
/** Data structure of WMM TSPEC information */
typedef MLAN_PACK_START struct {
#ifdef BIG_ENDIAN_SUPPORT
t_u8 Reserved17_23 : 7; /* ! Reserved */
t_u8 Schedule : 1;
IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e AckPolicy : 2;
t_u8 UserPri : 3; /* ! 802.1d User Priority */
// IEEEtypes_WMM_TSPEC_TS_Info_PSB_e PowerSaveBehavior : 1; /*
// !Legacy/Trigg*/
t_u8 PowerSaveBehavior : 1;
t_u8 Aggregation : 1; /* ! Reserved */
t_u8 AccessPolicy2 : 1; /* ! */
t_u8 AccessPolicy1 : 1; /* ! */
IEEEtypes_WMM_TSPEC_TS_Info_Direction_e Direction : 2;
t_u8 TID : 4; /* ! Unique identifier */
// IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e TrafficType : 1;
t_u8 TrafficType : 1;
#else
// IEEEtypes_WMM_TSPEC_TS_TRAFFIC_TYPE_e TrafficType : 1;
t_u8 TrafficType : 1;
t_u8 TID : 4; /* ! Unique identifier */
IEEEtypes_WMM_TSPEC_TS_Info_Direction_e Direction : 2;
t_u8 AccessPolicy1 : 1; /* ! */
t_u8 AccessPolicy2 : 1; /* ! */
t_u8 Aggregation : 1; /* ! Reserved */
// IEEEtypes_WMM_TSPEC_TS_Info_PSB_e PowerSaveBehavior : 1; /* !
// Legacy/Trigg*/
t_u8 PowerSaveBehavior : 1;
t_u8 UserPri : 3; /* ! 802.1d User Priority */
IEEEtypes_WMM_TSPEC_TS_Info_AckPolicy_e AckPolicy : 2;
t_u8 Schedule : 1;
t_u8 Reserved17_23 : 7; /* ! Reserved */
#endif
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_TS_Info_t;
/** Data structure of WMM TSPEC Nominal Size */
typedef MLAN_PACK_START struct {
#ifdef BIG_ENDIAN_SUPPORT
t_u16 Fixed : 1; /* ! 1: Fixed size given in Size, 0: Var, size is
nominal */
t_u16 Size : 15; /* ! Nominal size in octets */
#else
t_u16 Size : 15; /* ! Nominal size in octets */
t_u16 Fixed : 1; /* ! 1: Fixed size given in Size, 0: Var, size is
nominal */
#endif
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_NomMSDUSize_t;
/** Data structure of WMM TSPEC SBWA */
typedef MLAN_PACK_START struct {
#ifdef BIG_ENDIAN_SUPPORT
t_u16 Whole : 3; /* ! Whole portion */
t_u16 Fractional : 13; /* ! Fractional portion */
#else
t_u16 Fractional : 13; /* ! Fractional portion */
t_u16 Whole : 3; /* ! Whole portion */
#endif
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_SBWA;
/** Data structure of WMM TSPEC Body */
typedef MLAN_PACK_START struct {
IEEEtypes_WMM_TSPEC_TS_Info_t TSInfo;
IEEEtypes_WMM_TSPEC_NomMSDUSize_t NomMSDUSize;
t_u16 MaximumMSDUSize;
t_u32 MinServiceInterval;
t_u32 MaxServiceInterval;
t_u32 InactivityInterval;
t_u32 SuspensionInterval;
t_u32 ServiceStartTime;
t_u32 MinimumDataRate;
t_u32 MeanDataRate;
t_u32 PeakDataRate;
t_u32 MaxBurstSize;
t_u32 DelayBound;
t_u32 MinPHYRate;
IEEEtypes_WMM_TSPEC_SBWA SurplusBWAllowance;
t_u16 MediumTime;
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_Body_t;
/** Data structure of WMM TSPEC all elements */
typedef MLAN_PACK_START struct {
t_u8 ElementId;
t_u8 Len;
t_u8 OuiType[4]; /* 00:50:f2:02 */
t_u8 OuiSubType; /* 01 */
t_u8 Version;
IEEEtypes_WMM_TSPEC_Body_t TspecBody;
} MLAN_PACK_END IEEEtypes_WMM_TSPEC_t;
/** WMM Action Category values */
typedef MLAN_PACK_START enum _IEEEtypes_ActionCategory_e {
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_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_WNM = 10,
IEEE_MGMT_ACTION_CATEGORY_UNPROTECT_WNM = 11,
IEEE_MGMT_ACTION_CATEGORY_WMM_TSPEC = 17
} MLAN_PACK_END IEEEtypes_ActionCategory_e;
/** WMM TSPEC operations */
typedef MLAN_PACK_START enum _IEEEtypes_WMM_Tspec_Action_e {
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;
/** WMM TSPEC Category Action Base */
typedef MLAN_PACK_START struct {
IEEEtypes_ActionCategory_e category;
IEEEtypes_WMM_Tspec_Action_e action;
t_u8 dialogToken;
} MLAN_PACK_END IEEEtypes_WMM_Tspec_Action_Base_Tspec_t;
/** WMM TSPEC AddTS request structure */
typedef MLAN_PACK_START struct {
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
t_u8 statusCode;
IEEEtypes_WMM_TSPEC_t tspecIE;
/* Place holder for additional elements after the TSPEC */
t_u8 subElem[256];
} MLAN_PACK_END IEEEtypes_Action_WMM_AddTsReq_t;
/** WMM TSPEC AddTS response structure */
typedef MLAN_PACK_START struct {
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
t_u8 statusCode;
IEEEtypes_WMM_TSPEC_t tspecIE;
/* Place holder for additional elements after the TSPEC */
t_u8 subElem[256];
} MLAN_PACK_END IEEEtypes_Action_WMM_AddTsRsp_t;
/** WMM TSPEC DelTS structure */
typedef MLAN_PACK_START struct {
IEEEtypes_WMM_Tspec_Action_Base_Tspec_t tspecAct;
t_u8 reasonCode;
IEEEtypes_WMM_TSPEC_t tspecIE;
} MLAN_PACK_END IEEEtypes_Action_WMM_DelTs_t;
/** union of WMM TSPEC structures */
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;
/** union of WMM TSPEC & Action category */
typedef MLAN_PACK_START union {
IEEEtypes_ActionCategory_e category;
IEEEtypes_Action_WMMAC_t wmmAc;
} MLAN_PACK_END IEEEtypes_ActionFrame_t;
/** Data structure for subband set */
typedef MLAN_PACK_START struct _IEEEtypes_SubbandSet_t {
/** First channel */
t_u8 first_chan;
/** Number of channels */
t_u8 no_of_chan;
/** Maximum Tx power in dBm */
t_u8 max_tx_pwr;
} MLAN_PACK_END IEEEtypes_SubbandSet_t, *pIEEEtypes_SubbandSet_t;
#ifdef STA_SUPPORT
/** Data structure for Country IE */
typedef MLAN_PACK_START struct _IEEEtypes_CountryInfoSet_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** Country code */
t_u8 country_code[COUNTRY_CODE_LEN];
/** Set of subbands */
IEEEtypes_SubbandSet_t sub_band[1];
} MLAN_PACK_END IEEEtypes_CountryInfoSet_t, *pIEEEtypes_CountryInfoSet_t;
/** Data structure for Country IE full set */
typedef MLAN_PACK_START struct _IEEEtypes_CountryInfoFullSet_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** Country code */
t_u8 country_code[COUNTRY_CODE_LEN];
/** Set of subbands */
IEEEtypes_SubbandSet_t sub_band[MRVDRV_MAX_SUBBAND_802_11D];
} MLAN_PACK_END IEEEtypes_CountryInfoFullSet_t,
*pIEEEtypes_CountryInfoFullSet_t;
#endif /* STA_SUPPORT */
/** Data structure for Link ID */
typedef MLAN_PACK_START struct _IEEEtypes_LinkIDElement_t {
/** Element ID */
t_u8 element_id;
/** Length */
t_u8 len;
/** bssid */
t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
/** initial sta address */
t_u8 init_sta[MLAN_MAC_ADDR_LENGTH];
/** respose sta address */
t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH];
} MLAN_PACK_END IEEEtypes_LinkIDElement_t, *pIEEEtypes_LinkIDElement_t;
/** HT Capabilities Data */
typedef struct MLAN_PACK_START _HTCap_t {
/** HT Capabilities Info field */
t_u16 ht_cap_info;
/** A-MPDU Parameters field */
t_u8 ampdu_param;
/** Supported MCS Set field */
t_u8 supported_mcs_set[16];
/** HT Extended Capabilities field */
t_u16 ht_ext_cap;
/** Transmit Beamforming Capabilities field */
t_u32 tx_bf_cap;
/** Antenna Selection Capability field */
t_u8 asel;
} MLAN_PACK_END HTCap_t, *pHTCap_t;
/** HT Information Data */
typedef struct MLAN_PACK_START _HTInfo_t {
/** Primary channel */
t_u8 pri_chan;
/** Field 2 */
t_u8 field2;
/** Field 3 */
t_u16 field3;
/** Field 4 */
t_u16 field4;
/** Bitmap indicating MCSs supported by all HT STAs in the BSS */
t_u8 basic_mcs_set[16];
} MLAN_PACK_END HTInfo_t, *pHTInfo_t;
/** 20/40 BSS Coexistence Data */
typedef struct MLAN_PACK_START _BSSCo2040_t {
/** 20/40 BSS Coexistence value */
t_u8 bss_co_2040_value;
} MLAN_PACK_END BSSCo2040_t, *pBSSCo2040_t;
#define MAX_DSCP_EXCEPTION_NUM 21
/** DSCP Range */
typedef struct MLAN_PACK_START _DSCP_Exception_t {
/* DSCP value 0 to 63 or ff */
t_u8 dscp_value;
/* user priority 0-7*/
t_u8 user_priority;
} MLAN_PACK_END DSCP_Exception_t, *pDSCP_Exception_t;
/** DSCP Range */
typedef struct MLAN_PACK_START _DSCP_Range_t {
/* DSCP low value */
t_u8 dscp_low_value;
/* DSCP high value */
t_u8 dscp_high_value;
} MLAN_PACK_END DSCP_Range_t, *pDSCP_Range_t;
/** Overlapping BSS Scan Parameters Data */
typedef struct MLAN_PACK_START _OverlapBSSScanParam_t {
/** OBSS Scan Passive Dwell in milliseconds */
t_u16 obss_scan_passive_dwell;
/** OBSS Scan Active Dwell in milliseconds */
t_u16 obss_scan_active_dwell;
/** BSS Channel Width Trigger Scan Interval in seconds */
t_u16 bss_chan_width_trigger_scan_int;
/** OBSS Scan Passive Total Per Channel */
t_u16 obss_scan_passive_total;
/** OBSS Scan Active Total Per Channel */
t_u16 obss_scan_active_total;
/** BSS Width Channel Transition Delay Factor */
t_u16 bss_width_chan_trans_delay;
/** OBSS Scan Activity Threshold */
t_u16 obss_scan_active_threshold;
} MLAN_PACK_END OBSSScanParam_t, *pOBSSScanParam_t;
/** HT Capabilities IE */
typedef MLAN_PACK_START struct _IEEEtypes_HTCap_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** HTCap struct */
HTCap_t ht_cap;
} MLAN_PACK_END IEEEtypes_HTCap_t, *pIEEEtypes_HTCap_t;
/** HT Information IE */
typedef MLAN_PACK_START struct _IEEEtypes_HTInfo_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** HTInfo struct */
HTInfo_t ht_info;
} MLAN_PACK_END IEEEtypes_HTInfo_t, *pIEEEtypes_HTInfo_t;
/** the AP which send the multi_bssid IE */
#define MULTI_BSSID_AP 1
/** the AP which don't send beacon */
#define MULTI_BSSID_SUB_AP 2
/** IEEEtypes_NotxBssCap_t */
typedef MLAN_PACK_START struct _IEEEtypes_NotxBssCap_t {
/** Nontransmitted BSSID Capability: Element ID */
t_u8 element_id;
/** Nontransmitted BSSID Capability : Length */
t_u8 len;
/** capability */
t_u16 cap;
} MLAN_PACK_END IEEEtypes_NotxBssCap_t, *pIEEEtypes_NotxBssCap_t;
/** Multi BSSID IE */
typedef MLAN_PACK_START struct _IEEEtypes_MultiBSSIDIndex_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** BSSID Index */
t_u8 bssid_index;
/** DTIM Period (Optional, not Present in ProbeRsp) */
t_u8 dtim_period;
/** DTIM Count (Optional, not Present in ProbeRsp) */
t_u8 dtim_count;
} MLAN_PACK_END IEEEtypes_MultiBSSIDIndex_t, *pIEEEtypes_MultiBSSIDIndex_t;
/** NonTransmitted BSSID Profile Subelement IE */
/** SUBID for IEEEtypes_NonTransBSSIDCap_t */
#define NONTRANS_BSSID_PROFILE_SUBELEM_ID 0
/** NonTransmitted BSSID Capability IE */
typedef MLAN_PACK_START struct _IEEEtypes_NonTransBSSIDProfile_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 profile_data[];
} MLAN_PACK_END IEEEtypes_NonTransBSSIDProfile_t,
*pIEEEtypes_NonTransBSSIDProfile_t;
/** Multi BSSID IE */
typedef MLAN_PACK_START struct _IEEEtypes_MultiBSSID_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** Max BSSID Indicator */
t_u8 max_bssid_indicator;
/** Optional Subelement data*/
t_u8 sub_elem_data[];
} MLAN_PACK_END IEEEtypes_MultiBSSID_t, *pIEEEtypes_MultiBSSID_t;
/** 20/40 BSS Coexistence IE */
typedef MLAN_PACK_START struct _IEEEtypes_2040BSSCo_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** BSSCo2040_t struct */
BSSCo2040_t bss_co_2040;
} MLAN_PACK_END IEEEtypes_2040BSSCo_t, *pIEEEtypes_2040BSSCo_t;
/** Extended Capabilities IE */
typedef MLAN_PACK_START struct _IEEEtypes_ExtCap_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** ExtCap_t struct */
ExtCap_t ext_cap;
} MLAN_PACK_END IEEEtypes_ExtCap_t, *pIEEEtypes_ExtCap_t;
/** Overlapping BSS Scan Parameters IE */
typedef MLAN_PACK_START struct _IEEEtypes_OverlapBSSScanParam_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** OBSSScanParam_t struct */
OBSSScanParam_t obss_scan_param;
} MLAN_PACK_END IEEEtypes_OverlapBSSScanParam_t,
*pIEEEtypes_OverlapBSSScanParam_t;
/** VHT MCS rate set field, refer to 802.11ac */
typedef MLAN_PACK_START struct _VHT_MCS_set {
t_u16 rx_mcs_map;
t_u16 rx_max_rate; /* bit 29-31 reserved */
t_u16 tx_mcs_map;
t_u16 tx_max_rate; /* bit 61-63 reserved */
} MLAN_PACK_END VHT_MCS_set_t, *pVHT_MCS_set_t;
/** VHT Capabilities info field, reference 802.11ac D1.4 p89 */
typedef MLAN_PACK_START struct _VHT_capa {
#if 0
#ifdef BIG_ENDIAN_SUPPORT
t_u8 mpdu_max_len:2;
t_u8 chan_width:2;
t_u8 rx_LDPC:1;
t_u8 sgi_80:1;
t_u8 sgi_160:1;
t_u8 tx_STBC:1;
t_u8 rx_STBC:3;
t_u8 SU_beamformer_capa:1;
t_u8 SU_beamformee_capa:1;
t_u8 beamformer_ante_num:3;
t_u8 sounding_dim_num:3;
t_u8 MU_beamformer_capa:1;
t_u8 MU_beamformee_capa:1;
t_u8 VHT_TXOP_ps:1;
t_u8 HTC_VHT_capa:1;
t_u8 max_ampdu_len:3;
t_u8 link_apapt_capa:2;
t_u8 reserved_1:4;
#else
t_u8 reserved_1:4;
t_u8 link_apapt_capa:2;
t_u8 max_ampdu_len:3;
t_u8 HTC_VHT_capa:1;
t_u8 VHT_TXOP_ps:1;
t_u8 MU_beamformee_capa:1;
t_u8 MU_beamformer_capa:1;
t_u8 sounding_dim_num:3;
t_u8 beamformer_ante_num:3;
t_u8 SU_beamformee_capa:1;
t_u8 SU_beamformer_capa:1;
t_u8 rx_STBC:3;
t_u8 tx_STBC:1;
t_u8 sgi_160:1;
t_u8 sgi_80:1;
t_u8 rx_LDPC:1;
t_u8 chan_width:2;
t_u8 mpdu_max_len:2;
#endif /* BIG_ENDIAN_SUPPORT */
#endif
t_u32 vht_cap_info;
VHT_MCS_set_t mcs_sets;
} MLAN_PACK_END VHT_capa_t, *pVHT_capa_t;
/** VHT Capabilities IE */
typedef MLAN_PACK_START struct _IEEEtypes_VHTCap_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
VHT_capa_t vht_cap;
} MLAN_PACK_END IEEEtypes_VHTCap_t, *pIEEEtypes_VHTCap_t;
#define VHT_CAP_CHWD_80MHZ 0
#define VHT_CAP_CHWD_160MHZ 1
#define VHT_CAP_CHWD_80_80MHZ 2
/** VHT Operations IE */
typedef MLAN_PACK_START struct _IEEEtypes_VHTOprat_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 chan_width;
t_u8 chan_center_freq_1;
t_u8 chan_center_freq_2;
/** Basic MCS set map, each 2 bits stands for a Nss */
t_u16 basic_MCS_map;
} MLAN_PACK_END IEEEtypes_VHTOprat_t, *pIEEEtypes_VHTOprat_t;
#define VHT_OPER_CHWD_20_40MHZ 0
#define VHT_OPER_CHWD_80MHZ 1
#define VHT_OPER_CHWD_160MHZ 2
#define VHT_OPER_CHWD_80_80MHZ 3
/** VHT Transmit Power Envelope IE */
typedef MLAN_PACK_START struct _IEEEtypes_VHTtxpower_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 max_tx_power;
t_u8 chan_center_freq;
t_u8 chan_width;
} MLAN_PACK_END IEEEtypes_VHTtxpower_t, *pIEEEtypes_VHTtxpower_t;
/** Extended Power Constraint IE */
typedef MLAN_PACK_START struct _IEEEtypes_ExtPwerCons_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** channel width */
t_u8 chan_width;
/** local power constraint */
t_u8 local_power_cons;
} MLAN_PACK_END IEEEtypes_ExtPwerCons_t, *pIEEEtypes_ExtPwerCons_t;
/** Extended BSS Load IE */
typedef MLAN_PACK_START struct _IEEEtypes_ExtBSSload_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 MU_MIMO_capa_count;
t_u8 stream_underutilization;
t_u8 VHT40_util;
t_u8 VHT80_util;
t_u8 VHT160_util;
} MLAN_PACK_END IEEEtypes_ExtBSSload_t, *pIEEEtypes_ExtBSSload_t;
/** Quiet Channel IE */
typedef MLAN_PACK_START struct _IEEEtypes_QuietChan_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 AP_quiet_mode;
t_u8 quiet_count;
t_u8 quiet_period;
t_u16 quiet_dur;
t_u16 quiet_offset;
} MLAN_PACK_END IEEEtypes_QuietChan_t, *pIEEEtypes_QuietChan_t;
/** Wide Bandwidth Channel Switch IE */
typedef MLAN_PACK_START struct _IEEEtypes_BWSwitch_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
t_u8 new_chan_width;
t_u8 new_chan_center_freq_1;
t_u8 new_chan_center_freq_2;
} MLAN_PACK_END IEEEtypes_BWSwitch_t, *pIEEEtypes_BWSwitch_t;
/** AID IE */
typedef MLAN_PACK_START struct _IEEEtypes_AID_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** AID number */
t_u16 AID;
} MLAN_PACK_END IEEEtypes_AID_t, *pIEEEtypes_AID_t;
/** Operating Mode Notificaton IE */
typedef MLAN_PACK_START struct _IEEEtypes_OperModeNtf_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** Operating Mode */
t_u8 oper_mode;
} MLAN_PACK_END IEEEtypes_OperModeNtf_t, *pIEEEtypes_OperModeNtf_t;
typedef MLAN_PACK_START struct _IEEEtypes_Extension_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** Element id extension */
t_u8 ext_id;
/** payload */
t_u8 data[];
} MLAN_PACK_END IEEEtypes_Extension_t, *pIEEEtypes_Extension_t;
typedef MLAN_PACK_START struct _IEEEtypes_HECap_t {
/** Generic IE header */
IEEEtypes_Header_t ieee_hdr;
/** Element id extension */
t_u8 ext_id;
/** he mac capability info */
t_u8 he_mac_cap[6];
/** he phy capability info */
t_u8 he_phy_cap[11];
/** he txrx mcs support , size would be 4 or 8 or 12 */
t_u8 he_txrx_mcs_support[4];
/** PPE Thresholds (optional) */
} MLAN_PACK_END IEEEtypes_HECap_t, *pIEEEtypes_HECap_t;
/** default channel switch count */
#define DEF_CHAN_SWITCH_COUNT 5
/* IEEE Channel Switch Announcement Element (7.3.2.20) */
/**
* Provided in beacons and probe responses. Used to advertise when
* and to which channel it is changing to. Only starting STAs in
* an IBSS and APs are allowed to originate a chan switch element.
*/
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 37 */
t_u8 len; /**< Element length after id and len */
t_u8 chan_switch_mode; /**< STA should not transmit any frames if 1 */
t_u8 new_channel_num; /**< Channel # that AP/IBSS is moving to */
t_u8 chan_switch_count; /**< # of TBTTs before channel switch */
} MLAN_PACK_END IEEEtypes_ChanSwitchAnn_t;
/** data structure for extended channel switch */
typedef MLAN_PACK_START struct {
/** IEEE element ID = 60 */
t_u8 element_id;
/** Element length after id and len, set to 4 */
t_u8 len;
/** STA should not transmit any frames if 1 */
t_u8 chan_switch_mode;
/** Operate class # that AP/IBSS is moving to */
t_u8 new_oper_class;
/** Channel # that AP/IBSS is moving to */
t_u8 new_channel_num;
/** of TBTTs before channel switch */
t_u8 chan_switch_count;
} MLAN_PACK_END IEEEtypes_ExtChanSwitchAnn_t;
/** Maximum number of subbands in the IEEEtypes_SupportedChannels_t structure */
#define WLAN_11H_MAX_SUBBANDS 5
/** Maximum number of DFS channels configured in IEEEtypes_IBSS_DFS_t */
#define WLAN_11H_MAX_IBSS_DFS_CHANNELS 25
/** IEEE Power Constraint element (7.3.2.15) */
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 32 */
t_u8 len; /**< Element length after id and len */
t_u8 local_constraint; /**< Local power constraint applied to 11d
chan info */
} MLAN_PACK_END IEEEtypes_PowerConstraint_t;
/** IEEE Power Capability element (7.3.2.16) */
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 33 */
t_u8 len; /**< Element length after id and len */
t_s8 min_tx_power_capability; /**< Minimum Transmit power (dBm) */
t_s8 max_tx_power_capability; /**< Maximum Transmit power (dBm) */
} MLAN_PACK_END IEEEtypes_PowerCapability_t;
/** IEEE TPC Report element (7.3.2.18) */
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 35 */
t_u8 len; /**< Element length after id and len */
t_s8 tx_power; /**< Max power used to transmit the TPC Report frame
(dBm) */
t_s8 link_margin; /**< Link margin when TPC Request received (dB) */
} MLAN_PACK_END IEEEtypes_TPCReport_t;
/* IEEE Supported Channel sub-band description (7.3.2.19) */
/**
* Sub-band description used in the supported channels element.
*/
typedef MLAN_PACK_START struct {
t_u8 start_chan; /**< Starting channel in the subband */
t_u8 num_chans; /**< Number of channels in the subband */
} MLAN_PACK_END IEEEtypes_SupportChan_Subband_t;
/* IEEE Supported Channel element (7.3.2.19) */
/**
* Sent in association requests. Details the sub-bands and number
* of channels supported in each subband
*/
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 36 */
t_u8 len; /**< Element length after id and len */
/** Configured sub-bands information in the element */
IEEEtypes_SupportChan_Subband_t subband[WLAN_11H_MAX_SUBBANDS];
} MLAN_PACK_END IEEEtypes_SupportedChannels_t;
/* IEEE Wide Bandwidth Channel Switch Element */
/**
* Provided in beacons and probe responses. Used to advertise when
* and to which channel it is changing to. Only starting STAs in
* an IBSS and APs are allowed to originate a wide bandwidth chan
* switch element.
*/
typedef MLAN_PACK_START struct {
/** Generic IE header IEEE Element ID = 194*/
IEEEtypes_Header_t ieee_hdr;
t_u8 new_channel_width;
t_u8 new_channel_center_freq0;
t_u8 new_channel_center_freq1;
} MLAN_PACK_END IEEEtypes_WideBWChanSwitch_t;
/* IEEE VHT Transmit Power Envelope Element */
/**
* Provided in beacons and probe responses. Used to advertise the max
* TX power in sepeate bandwidth and as a sub element of Channel Switch
* Wrapper IE.
*/
typedef MLAN_PACK_START struct {
/** Generic IE header IEEE Element ID = 195*/
IEEEtypes_Header_t ieee_hdr;
t_u8 tpc_info; /**< Transmit Power Information>*/
t_u8 local_max_tp_20mhz; /**< Local Maximum Transmit Power for 20 MHZ>*/
t_u8 local_max_tp_40mhz; /**< Local Maximum Transmit Power for 40 MHZ>*/
t_u8 local_max_tp_80mhz; /**< Local Maximum Transmit Power for 80 MHZ>*/
t_u8 local_max_tp_160mhz_80_80mhz; /**< Local Maximum Transmit Power for
160/80+80 MHZ>*/
} MLAN_PACK_END IEEEtypes_VhtTpcEnvelope_t;
/* IEEE Quiet Period Element (7.3.2.23) */
/**
* Provided in beacons and probe responses. Indicates times during
* which the STA should not be transmitting data. Only starting STAs in
* an IBSS and APs are allowed to originate a quiet element.
*/
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 40 */
t_u8 len; /**< Element length after id and len */
t_u8 quiet_count; /**< Number of TBTTs until beacon with the quiet
period */
t_u8 quiet_period; /**< Regular quiet period, # of TBTTS between periods
*/
t_u16 quiet_duration; /**< Duration of the quiet period in TUs */
t_u16 quiet_offset; /**< Offset in TUs from the TBTT for the quiet
period */
} MLAN_PACK_END IEEEtypes_Quiet_t;
/**
*** @brief Map octet of the basic measurement report (7.3.2.22.1)
**/
typedef MLAN_PACK_START struct {
#ifdef BIG_ENDIAN_SUPPORT
/**< Reserved */
t_u8 rsvd5_7 : 3;
/**< Channel is unmeasured */
t_u8 unmeasured : 1;
/**< Radar detected on channel */
t_u8 radar : 1;
/**< Unidentified signal found on channel */
t_u8 unidentified_sig : 1;
/**< OFDM preamble detected on channel */
t_u8 ofdm_preamble : 1;
/**< At least one valid MPDU received on channel */
t_u8 bss : 1;
#else
/**< At least one valid MPDU received on channel */
t_u8 bss : 1;
/**< OFDM preamble detected on channel */
t_u8 ofdm_preamble : 1;
/**< Unidentified signal found on channel */
t_u8 unidentified_sig : 1;
/**< Radar detected on channel */
t_u8 radar : 1;
/**< Channel is unmeasured */
t_u8 unmeasured : 1;
/**< Reserved */
t_u8 rsvd5_7 : 3;
#endif /* BIG_ENDIAN_SUPPORT */
} MLAN_PACK_END MeasRptBasicMap_t;
/* IEEE DFS Channel Map field (7.3.2.24) */
/**
* Used to list supported channels and provide a octet "map" field which
* contains a basic measurement report for that channel in the
* IEEEtypes_IBSS_DFS_t element
*/
typedef MLAN_PACK_START struct {
t_u8 channel_number; /**< Channel number */
MeasRptBasicMap_t rpt_map; /**< Basic measurement report for the channel
*/
} MLAN_PACK_END IEEEtypes_ChannelMap_t;
/* IEEE IBSS DFS Element (7.3.2.24) */
/**
* IBSS DFS element included in ad hoc beacons and probe responses.
* Provides information regarding the IBSS DFS Owner as well as the
* originating STAs supported channels and basic measurement results.
*/
typedef MLAN_PACK_START struct {
t_u8 element_id; /**< IEEE Element ID = 41 */
t_u8 len; /**< Element length after id and len */
t_u8 dfs_owner[MLAN_MAC_ADDR_LENGTH]; /**< DFS Owner STA Address */
t_u8 dfs_recovery_interval; /**< DFS Recovery time in TBTTs */
/** Variable length map field, one Map entry for each supported channel
*/
IEEEtypes_ChannelMap_t channel_map[WLAN_11H_MAX_IBSS_DFS_CHANNELS];
} MLAN_PACK_END IEEEtypes_IBSS_DFS_t;
/* 802.11h BSS information kept for each BSSID received in scan results */
/**
* IEEE BSS information needed from scan results for later processing in
* join commands
*/
typedef struct {
t_u8 sensed_11h; /**< Capability bit set or 11h IE found in this BSS */
IEEEtypes_PowerConstraint_t power_constraint; /**< Power Constraint IE
*/
IEEEtypes_PowerCapability_t power_capability; /**< Power Capability IE
*/
IEEEtypes_TPCReport_t tpc_report; /**< TPC Report IE */
IEEEtypes_ChanSwitchAnn_t chan_switch_ann; /**< Channel Switch
Announcement IE */
IEEEtypes_Quiet_t quiet; /**< Quiet IE */
IEEEtypes_IBSS_DFS_t ibss_dfs; /**< IBSS DFS Element IE */
} wlan_11h_bss_info_t;
/** Ethernet packet type for TDLS */
#define MLAN_ETHER_PKT_TYPE_TDLS_ACTION (0x890D)
/*802.11z TDLS action frame type and strcuct */
typedef MLAN_PACK_START struct {
/*link indentifier ie =101*/
t_u8 element_id;
/*len = 18*/
t_u8 len;
/** bssid */
t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
/** init sta mac address */
t_u8 init_sta[MLAN_MAC_ADDR_LENGTH];
/** resp sta mac address */
t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH];
} MLAN_PACK_END IEEEtypes_tdls_linkie;
/** action code for tdls setup request */
#define TDLS_SETUP_REQUEST 0
/** action code for tdls setup response */
#define TDLS_SETUP_RESPONSE 1
/** action code for tdls setup confirm */
#define TDLS_SETUP_CONFIRM 2
/** action code for tdls tear down */
#define TDLS_TEARDOWN 3
/** action code for tdls traffic indication */
#define TDLS_PEER_TRAFFIC_INDICATION 4
/** action code for tdls channel switch request */
#define TDLS_CHANNEL_SWITCH_REQUEST 5
/** action code for tdls channel switch response */
#define TDLS_CHANNEL_SWITCH_RESPONSE 6
/** action code for tdls psm request */
#define TDLS_PEER_PSM_REQUEST 7
/** action code for tdls psm response */
#define TDLS_PEER_PSM_RESPONSE 8
/** action code for tdls traffic response */
#define TDLS_PEER_TRAFFIC_RESPONSE 9
/** action code for tdls discovery request */
#define TDLS_DISCOVERY_REQUEST 10
/** action code for TDLS discovery response */
#define TDLS_DISCOVERY_RESPONSE 14
/** category public */
#define CATEGORY_PUBLIC 4
/** action code for 20/40 BSS Coexsitence Management frame */
#define BSS_20_40_COEX 0
#ifdef STA_SUPPORT
/** Macro for maximum size of scan response buffer */
#define MAX_SCAN_RSP_BUF (16 * 1024)
/** Maximum number of channels that can be sent in user scan config */
#define WLAN_USER_SCAN_CHAN_MAX 50
/** Maximum length of SSID list */
#define MRVDRV_MAX_SSID_LIST_LENGTH 10
/** Maximum length of BSSID list */
#define MAX_BSSID_FILTER_LIST 5
/** Scan all the channels in specified band */
#define BAND_SPECIFIED 0x80
/**
* IOCTL SSID List sub-structure sent in wlan_ioctl_user_scan_cfg
*
* Used to specify SSID specific filters as well as SSID pattern matching
* filters for scan result processing in firmware.
*/
typedef MLAN_PACK_START struct _wlan_user_scan_ssid {
/** SSID */
t_u8 ssid[MLAN_MAX_SSID_LENGTH + 1];
/** Maximum length of SSID */
t_u8 max_len;
} MLAN_PACK_END wlan_user_scan_ssid;
/**
* @brief IOCTL channel sub-structure sent in wlan_ioctl_user_scan_cfg
*
* Multiple instances of this structure are included in the IOCTL command
* to configure a instance of a scan on the specific channel.
*/
typedef MLAN_PACK_START struct _wlan_user_scan_chan {
/** Channel Number to scan */
t_u8 chan_number;
/** Radio type: 'B/G' Band = 0, 'A' Band = 1 */
t_u8 radio_type;
/** Scan type: Active = 1, Passive = 2 */
t_u8 scan_type;
/** Reserved */
t_u8 reserved;
/** Scan duration in milliseconds; if 0 default used */
t_u32 scan_time;
} MLAN_PACK_END wlan_user_scan_chan;
/** channel statictics */
typedef MLAN_PACK_START struct _ChanStatistics_t {
/** channle number */
t_u8 chan_num;
/** band info */
Band_Config_t bandcfg;
/** flags */
t_u8 flags;
/** noise */
t_s8 noise;
/** total network */
t_u16 total_networks;
/** scan duration */
t_u16 cca_scan_duration;
/** busy duration */
t_u16 cca_busy_duration;
/** min rss */
t_u8 min_rss;
/** max rssi */
t_u8 max_rss;
} MLAN_PACK_END ChanStatistics_t;
/** Enhance ext scan type defination */
typedef enum _MLAN_EXT_SCAN_TYPE {
EXT_SCAN_DEFAULT,
EXT_SCAN_ENHANCE,
EXT_SCAN_CANCEL,
} MLAN_EXT_SCAN_TYPE;
/**
* Input structure to configure an immediate scan cmd to firmware
*
* Specifies a number of parameters to be used in general for the scan
* as well as a channel list (wlan_user_scan_chan) for each scan period
* desired.
*/
typedef MLAN_PACK_START struct {
/**
* Flag set to keep the previous scan table intact
*
* If set, the scan results will accumulate, replacing any previous
* matched entries for a BSS with the new scan data
*/
t_u8 keep_previous_scan;
/**
* BSS mode to be sent in the firmware command
*
* Field can be used to restrict the types of networks returned in the
* scan. Valid settings are:
*
* - MLAN_SCAN_MODE_BSS (infrastructure)
* - MLAN_SCAN_MODE_IBSS (adhoc)
* - MLAN_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure)
*/
t_u8 bss_mode;
/**
* Configure the number of probe requests for active chan scans
*/
t_u8 num_probes;
/**
* @brief ssid filter flag
*/
t_u8 ssid_filter;
/**
* @brief BSSID filter sent in the firmware command to limit the
* results
*/
t_u8 specific_bssid[MLAN_MAC_ADDR_LENGTH];
/**
* SSID filter list used in the to limit the scan results
*/
wlan_user_scan_ssid ssid_list[MRVDRV_MAX_SSID_LIST_LENGTH];
/**
* Variable number (fixed maximum) of channels to scan up
*/
wlan_user_scan_chan chan_list[WLAN_USER_SCAN_CHAN_MAX];
/** scan channel gap */
t_u16 scan_chan_gap;
/** scan type: 0 legacy, 1: enhance scan*/
t_u8 ext_scan_type;
/** flag to filer only probe response */
t_u8 proberesp_only;
t_u8 random_mac[MLAN_MAC_ADDR_LENGTH];
/** Number of BSSIDs to be filtered */
t_u8 bssid_num;
/** BSSID filter list used in the to limit the scan results */
mlan_802_11_mac_addr bssid_list[MAX_BSSID_FILTER_LIST];
} MLAN_PACK_END wlan_user_scan_cfg;
/** Default scan interval in millisecond*/
#define DEFAULT_BGSCAN_INTERVAL 30000
/** action get all, except pps/uapsd config */
#define BG_SCAN_ACT_GET 0x0000
/** action set all, except pps/uapsd config */
#define BG_SCAN_ACT_SET 0x0001
/** action get pps/uapsd config */
#define BG_SCAN_ACT_GET_PPS_UAPSD 0x0100
/** action set pps/uapsd config */
#define BG_SCAN_ACT_SET_PPS_UAPSD 0x0101
/** action set all */
#define BG_SCAN_ACT_SET_ALL 0xff01
/** ssid match */
#define BG_SCAN_SSID_MATCH 0x0001
/** ssid match and RSSI exceeded */
#define BG_SCAN_SSID_RSSI_MATCH 0x0004
/**wait for all channel scan to complete to report scan result*/
#define BG_SCAN_WAIT_ALL_CHAN_DONE 0x80000000
/** Maximum number of channels that can be sent in bg scan config */
#define WLAN_BG_SCAN_CHAN_MAX 38
/** Enumeration definition */
/** EES MODE */
typedef enum {
/** EES MODE: LOW */
EES_MODE_LOW = 0,
/** EES MODE: MID */
EES_MODE_MID,
/** EES MODE: HIGH */
EES_MODE_HIGH,
/** EES MODE: OFF */
EES_MODE_OFF,
/** EES MODE: LOOP */
EES_MODE_LOOP = 15,
} ees_modes;
/** EES Maximum SSID */
#define EES_MAX_SSIDS 2
/** ees_ssid_config */
typedef MLAN_PACK_START struct {
/** SSID */
t_u8 ssid[MLAN_MAX_SSID_LENGTH + 1];
/** Maximum length of SSID */
t_u8 max_len;
/** PairCipher */
t_u8 pair_cipher;
/** GroupCipher */
t_u8 group_cipher;
} MLAN_PACK_END ees_ssid_config;
/**
* Input structure to configure bs scan cmd to firmware
*/
typedef MLAN_PACK_START struct {
/** action */
t_u16 action;
/** enable/disable */
t_u8 enable;
/** BSS type:
* MLAN_SCAN_MODE_BSS (infrastructure)
* MLAN_SCAN_MODE_IBSS (adhoc)
* MLAN_SCAN_MODE_ANY (unrestricted, adhoc and infrastructure)
*/
t_u8 bss_type;
/** number of channel scanned during each scan */
t_u8 chan_per_scan;
/** interval between consecutive scan */
t_u32 scan_interval;
/** bit 0: ssid match bit 1: ssid match and SNR exceeded
* bit 2: ssid match and RSSI exceeded
* bit 31: wait for all channel scan to complete to report scan result
*/
t_u32 report_condition;
/* Configure the number of probe requests for active chan scans */
t_u8 num_probes;
/** RSSI threshold */
t_u8 rssi_threshold;
/** SNR threshold */
t_u8 snr_threshold;
/** repeat count */
t_u16 repeat_count;
/** start later flag */
t_u16 start_later;
/** SSID filter list used in the to limit the scan results */
wlan_user_scan_ssid ssid_list[MRVDRV_MAX_SSID_LIST_LENGTH];
/** Variable number (fixed maximum) of channels to scan up */
wlan_user_scan_chan chan_list[WLAN_BG_SCAN_CHAN_MAX];
/** scan channel gap */
t_u16 scan_chan_gap;
/** Enable EES configuration */
t_u8 config_ees;
/** EES scan mode */
t_u16 ees_mode;
/** EES report condition */
t_u16 report_cond;
/** EES High Period scan interval */
t_u16 high_period;
/** EES High Period scan count */
t_u16 high_period_count;
/** EES Medium Period scan interval */
t_u16 mid_period;
/** EES Medium Period scan count */
t_u16 mid_period_count;
/** EES Low Period scan interval */
t_u16 low_period;
/** EES Low Period scan count */
t_u16 low_period_count;
/** Number of networks in the list */
t_u8 network_count;
/** Maximum number of connection count */
t_u8 max_conn_count;
/** Black List Exp */
t_u8 black_list_exp;
/** Array of ees config struct */
ees_ssid_config ees_ssid_cfg[EES_MAX_SSIDS];
t_u8 random_mac[MLAN_MAC_ADDR_LENGTH];
} MLAN_PACK_END wlan_bgscan_cfg;
#endif /* STA_SUPPORT */
#ifdef PRAGMA_PACK
#pragma pack(pop)
#endif
/** BSSDescriptor_t
* Structure used to store information for beacon/probe response
*/
typedef struct _BSSDescriptor_t {
/** MAC address */
mlan_802_11_mac_addr mac_address;
/** SSID */
mlan_802_11_ssid ssid;
/** WEP encryption requirement */
t_u32 privacy;
/** Receive signal strength in dBm */
t_s32 rssi;
/** channel load */
t_u8 chan_load;
/** Channel */
t_u32 channel;
/** Freq */
t_u32 freq;
/** Beacon period */
t_u16 beacon_period;
/** ATIM window */
t_u32 atim_window;
/** ERP flags */
t_u8 erp_flags;
/** Type of network in use */
WLAN_802_11_NETWORK_TYPE network_type_use;
/** Network infrastructure mode */
t_u32 bss_mode;
/** Network supported rates */
WLAN_802_11_RATES supported_rates;
/** Supported data rates */
t_u8 data_rates[WLAN_SUPPORTED_RATES];
/** Current channel bandwidth
* 0 : 20MHZ
* 1 : 40MHZ
* 2 : 80MHZ
* 3 : 160MHZ
*/
t_u8 curr_bandwidth;
/** Network band.
* BAND_B(0x01): 'b' band
* BAND_G(0x02): 'g' band
* BAND_A(0X04): 'a' band
*/
t_u16 bss_band;
/** TSF timestamp from the current firmware TSF */
t_u64 network_tsf;
/** TSF value included in the beacon/probe response */
t_u8 time_stamp[8];
/** PHY parameter set */
IEEEtypes_PhyParamSet_t phy_param_set;
/** SS parameter set */
IEEEtypes_SsParamSet_t ss_param_set;
/** Capability information */
IEEEtypes_CapInfo_t cap_info;
/** WMM IE */
IEEEtypes_WmmParameter_t wmm_ie;
/** 802.11h BSS information */
wlan_11h_bss_info_t wlan_11h_bss_info;
/** Indicate disabling 11n when associate with AP */
t_u8 disable_11n;
/** 802.11n BSS information */
/** HT Capabilities IE */
IEEEtypes_HTCap_t *pht_cap;
/** HT Capabilities Offset */
t_u16 ht_cap_offset;
/** HT Information IE */
IEEEtypes_HTInfo_t *pht_info;
/** HT Information Offset */
t_u16 ht_info_offset;
/** Flag to indicate this is multi_bssid_ap */
t_u8 multi_bssid_ap;
/** the mac address of multi-bssid AP */
mlan_802_11_mac_addr multi_bssid_ap_addr;
/** 20/40 BSS Coexistence IE */
IEEEtypes_2040BSSCo_t *pbss_co_2040;
/** 20/40 BSS Coexistence Offset */
t_u16 bss_co_2040_offset;
/** Extended Capabilities IE */
IEEEtypes_ExtCap_t *pext_cap;
/** Extended Capabilities Offset */
t_u16 ext_cap_offset;
/** Overlapping BSS Scan Parameters IE */
IEEEtypes_OverlapBSSScanParam_t *poverlap_bss_scan_param;
/** Overlapping BSS Scan Parameters Offset */
t_u16 overlap_bss_offset;
/** VHT Capabilities IE */
IEEEtypes_VHTCap_t *pvht_cap;
/** VHT Capabilities IE offset */
t_u16 vht_cap_offset;
/** VHT Operations IE */
IEEEtypes_VHTOprat_t *pvht_oprat;
/** VHT Operations IE offset */
t_u16 vht_oprat_offset;
/** VHT Transmit Power Envelope IE */
IEEEtypes_VHTtxpower_t *pvht_txpower;
/** VHT Transmit Power Envelope IE offset */
t_u16 vht_txpower_offset;
/** Extended Power Constraint IE */
IEEEtypes_ExtPwerCons_t *pext_pwer;
/** Extended Power Constraint IE offset */
t_u16 ext_pwer_offset;
/** Extended BSS Load IE */
IEEEtypes_ExtBSSload_t *pext_bssload;
/** Extended BSS Load IE offset */
t_u16 ext_bssload_offset;
/** Quiet Channel IE */
IEEEtypes_QuietChan_t *pquiet_chan;
/** Quiet Channel IE offset */
t_u16 quiet_chan_offset;
/** Operating Mode Notification IE */
IEEEtypes_OperModeNtf_t *poper_mode;
/** Operating Mode Notification IE offset */
t_u16 oper_mode_offset;
/** HE Capability IE */
IEEEtypes_HECap_t *phe_cap;
/** HE Capability IE offset */
t_u16 he_cap_offset;
/** HE operation IE */
IEEEtypes_Extension_t *phe_oprat;
/** HE operation IE offset */
t_u16 he_oprat_offset;
#ifdef STA_SUPPORT
/** Country information set */
IEEEtypes_CountryInfoFullSet_t country_info;
#endif /* STA_SUPPORT */
/** WPA IE */
IEEEtypes_VendorSpecific_t *pwpa_ie;
/** WPA IE offset in the beacon buffer */
t_u16 wpa_offset;
/** RSN IE */
IEEEtypes_Generic_t *prsn_ie;
/** RSN IE offset in the beacon buffer */
t_u16 rsn_offset;
#ifdef STA_SUPPORT
/** WAPI IE */
IEEEtypes_Generic_t *pwapi_ie;
/** WAPI IE offset in the beacon buffer */
t_u16 wapi_offset;
#endif
/* Hotspot 2.0 OSEN AKM IE*/
IEEEtypes_Generic_t *posen_ie;
/** osen IE offset in the beacon buffer */
t_u16 osen_offset;
/* Mobility domain IE */
IEEEtypes_MobilityDomain_t *pmd_ie;
/** Mobility domain IE offset in the beacon buffer */
t_u16 md_offset;
/** Pointer to the returned scan response */
t_u8 *pbeacon_buf;
/** Length of the stored scan response */
t_u32 beacon_buf_size;
/** Max allocated size for updated scan response */
t_u32 beacon_buf_size_max;
/** scan age in secs */
t_u32 age_in_secs;
} BSSDescriptor_t, *pBSSDescriptor_t;
#endif /* !_MLAN_IEEE_H_ */