blob: 139c6ab4aaa41d4a964c754b3656c36e3ea335fd [file] [log] [blame]
/** @file mlan_ieee.h
*
* @brief This file contains IEEE information element related
* definitions used in MLAN and MOAL module.
*
* Copyright (C) 2008-2009, Marvell International Ltd.
* All Rights Reserved
*/
/******************************************************
Change log:
11/03/2008: initial version
******************************************************/
#ifndef _MLAN_IEEE_H_
#define _MLAN_IEEE_H_
/** WLAN supported rates */
#define WLAN_SUPPORTED_RATES 14
/** WLAN supported rates extension*/
#define WLAN_SUPPORTED_RATES_EXT 32
/** 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;
/** Maximum size of IEEE Information Elements */
#define IEEE_MAX_IE_SIZE 256
#ifdef PRAGMA_PACK
#pragma pack(push, 1)
#endif
/** 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,
SUPPORTED_CHANNELS = 36,
CHANNEL_SWITCH_ANN = 37,
QUIET = 40,
IBSS_DFS = 41,
HT_CAPABILITY = 45,
HT_OPERATION = 61,
BSSCO_2040 = 72,
OVERLAPBSSSCANPARAM = 74,
EXT_CAPABILITY = 127,
ERP_INFO = 42,
EXTENDED_SUPPORTED_RATES = 50,
VENDOR_SPECIFIC_221 = 221,
WMM_IE = VENDOR_SPECIFIC_221,
WPS_IE = VENDOR_SPECIFIC_221,
WPA_IE = VENDOR_SPECIFIC_221,
RSN_IE = 48,
VS_IE = VENDOR_SPECIFIC_221,
WAPI_IE = 68,
} 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;
/** Capability information mask */
#define CAPINFO_MASK (~(MBIT(15) | MBIT(14) | \
MBIT(12) | MBIT(11) | MBIT(9)))
/** Capability Bit Map*/
#ifdef BIG_ENDIAN
typedef MLAN_PACK_START struct _IEEEtypes_CapInfo_t
{
t_u8 rsrvd1:2;
t_u8 dsss_ofdm:1;
t_u8 rsvrd2:2;
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 */
/** 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 */
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 */
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;
/** 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];
/** Maximum number of AC QOS queues available in the driver/firmware */
#define MAX_AC_QUEUES 4
/** Data structure of WMM QoS information */
typedef MLAN_PACK_START struct _IEEEtypes_WmmQosInfo_t
{
#ifdef BIG_ENDIAN
/** 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 */
} 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
/** 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 */
} 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
/** 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 */
} 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;
/** Maximum subbands for 11d */
#define MRVDRV_MAX_SUBBAND_802_11D 83
/** Country code length */
#define COUNTRY_CODE_LEN 3
/** 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 */
t_u8 max_tx_pwr;
} MLAN_PACK_END IEEEtypes_SubbandSet_t, *pIEEEtypes_SubbandSet_t;
/** 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;
/** 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;
/** Extended Capabilities Data */
typedef struct MLAN_PACK_START _ExtCap_t
{
/** Extended Capabilities value */
t_u8 ext_cap_value;
} MLAN_PACK_END ExtCap_t, *pExtCap_t;
/** Overlapping BSS Scan Parameters Data */
typedef struct MLAN_PACK_START _OverlapBSSScanParam_t
{
/** OBSS Scan Passive Dwell */
t_u16 obss_scan_passive_dwell;
/** OBSS Scan Active Dwell */
t_u16 obss_scan_active_dwell;
/** BSS Channel Width Trigger Scan Interval */
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;
/** 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;
/** 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 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
t_u8 rsvd5_7:3; /**< Reserved */
t_u8 unmeasured:1; /**< Channel is unmeasured */
t_u8 radar:1; /**< Radar detected on channel */
t_u8 unidentified_sig:1; /**< Unidentified signal found on channel */
t_u8 ofdm_preamble:1; /**< OFDM preamble detected on channel */
t_u8 bss:1; /**< At least one valid MPDU received on channel */
#else
t_u8 bss:1; /**< At least one valid MPDU received on channel */
t_u8 ofdm_preamble:1; /**< OFDM preamble detected on channel */
t_u8 unidentified_sig:1; /**< Unidentified signal found on channel */
t_u8 radar:1; /**< Radar detected on channel */
t_u8 unmeasured:1; /**< Channel is unmeasured */
t_u8 rsvd5_7:3; /**< Reserved */
#endif /* BIG_ENDIAN */
} 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_Quiet_t quiet; /**< Quiet IE */
IEEEtypes_IBSS_DFS_t ibss_dfs; /**< IBSS DFS Element IE */
} wlan_11h_bss_info_t;
#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 */
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];
/** 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;
/** 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;
/** 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;
/** Country information set */
IEEEtypes_CountryInfoFullSet_t country_info;
/** 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;
/** WAPI IE */
IEEEtypes_Generic_t *pwapi_ie;
/** WAPI IE offset in the beacon buffer */
t_u16 wapi_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;
} BSSDescriptor_t, *pBSSDescriptor_t;
#endif /* !_MLAN_IEEE_H_ */