qcacld-3.0: Initial snapshot of ihelium wlan driver

qcacld-3.0: Initial snapshot of ihelium wlan driver
to match code-scanned SU Release 5.0.0.139. This is
open-source version of wlan for next Android release.

Change-Id: Icf598ca97da74f84bea607e4e902d1889806f507
diff --git a/core/mac/src/pe/include/lim_global.h b/core/mac/src/pe/include/lim_global.h
new file mode 100644
index 0000000..5ddb01c
--- /dev/null
+++ b/core/mac/src/pe/include/lim_global.h
@@ -0,0 +1,670 @@
+/*
+ * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This file was originally distributed by Qualcomm Atheros, Inc.
+ * under proprietary terms before Copyright ownership was assigned
+ * to the Linux Foundation.
+ */
+
+/*
+ *
+ * This file lim_global.h contains the definitions exported by
+ * LIM module.
+ * Author:        Chandra Modumudi
+ * Date:          02/11/02
+ * History:-
+ * Date           Modified by    Modification Information
+ * --------------------------------------------------------------------
+ *
+ */
+#ifndef __LIM_GLOBAL_H
+#define __LIM_GLOBAL_H
+
+#include "wni_api.h"
+#include "sir_api.h"
+#include "sir_mac_prot_def.h"
+#include "sir_mac_prop_exts.h"
+#include "sir_common.h"
+#include "sir_debug.h"
+#include "wni_cfg.h"
+#include "csr_api.h"
+#include "sap_api.h"
+#include "dot11f.h"
+#include "wma_if.h"
+
+/* / Maximum number of scan hash table entries */
+#define LIM_MAX_NUM_OF_SCAN_RESULTS 256
+
+/* Sending Disassociate frames threshold */
+#define LIM_SEND_DISASSOC_FRAME_THRESHOLD       2
+#define LIM_HASH_MISS_TIMER_MS                  10000
+
+/* Deferred Message Queue Length */
+#define MAX_DEFERRED_QUEUE_LEN                  80
+
+/* Maximum number of PS - TIM's to be sent with out wakeup from STA */
+#define LIM_TIM_WAIT_COUNT_FACTOR          5
+
+/*
+ * Use this count if (LIM_TIM_WAIT_FACTOR * ListenInterval)
+ * is less than LIM_MIN_TIM_WAIT_CNT
+ */
+#define LIM_MIN_TIM_WAIT_COUNT          50
+
+#define GET_TIM_WAIT_COUNT(LIntrvl) \
+	((LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) > LIM_MIN_TIM_WAIT_COUNT ? \
+	(LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) : LIM_MIN_TIM_WAIT_COUNT)
+
+#define IS_5G_BAND(__rfBand)     ((__rfBand & 0x3) == 0x2)
+#define IS_24G_BAND(__rfBand)    ((__rfBand & 0x3) == 0x1)
+
+#define LIM_MAX_CSA_IE_UPDATES    (5)
+
+/* enums exported by LIM are as follows */
+
+/*System role definition */
+typedef enum eLimSystemRole {
+	eLIM_UNKNOWN_ROLE,
+	eLIM_AP_ROLE,
+	eLIM_STA_IN_IBSS_ROLE,
+	eLIM_STA_ROLE,
+	eLIM_BT_AMP_STA_ROLE,
+	eLIM_BT_AMP_AP_ROLE,
+	eLIM_P2P_DEVICE_ROLE,
+	eLIM_P2P_DEVICE_GO,
+	eLIM_P2P_DEVICE_CLIENT
+} tLimSystemRole;
+
+/*
+ * SME state definition accessible across all Sirius modules.
+ * AP only states are LIM_SME_CHANNEL_SCAN_STATE &
+ * LIM_SME_NORMAL_CHANNEL_SCAN_STATE.
+ * Note that these states may also be present in STA
+ * side too when DFS support is present for a STA in IBSS mode.
+ */
+typedef enum eLimSmeStates {
+	eLIM_SME_OFFLINE_STATE,
+	eLIM_SME_IDLE_STATE,
+	eLIM_SME_SUSPEND_STATE,
+	eLIM_SME_WT_SCAN_STATE,
+	eLIM_SME_WT_JOIN_STATE,
+	eLIM_SME_WT_AUTH_STATE,
+	eLIM_SME_WT_ASSOC_STATE,
+	eLIM_SME_WT_REASSOC_STATE,
+	eLIM_SME_WT_REASSOC_LINK_FAIL_STATE,
+	eLIM_SME_JOIN_FAILURE_STATE,
+	eLIM_SME_ASSOCIATED_STATE,
+	eLIM_SME_REASSOCIATED_STATE,
+	eLIM_SME_LINK_EST_STATE,
+	eLIM_SME_LINK_EST_WT_SCAN_STATE,
+	eLIM_SME_WT_PRE_AUTH_STATE,
+	eLIM_SME_WT_DISASSOC_STATE,
+	eLIM_SME_WT_DEAUTH_STATE,
+	eLIM_SME_WT_START_BSS_STATE,
+	eLIM_SME_WT_STOP_BSS_STATE,
+	eLIM_SME_NORMAL_STATE,
+	eLIM_SME_CHANNEL_SCAN_STATE,
+	eLIM_SME_NORMAL_CHANNEL_SCAN_STATE
+} tLimSmeStates;
+
+/*
+ * MLM state definition.
+ * While these states are present on AP too when it is
+ * STA mode, per-STA MLM state exclusive to AP is:
+ * eLIM_MLM_WT_AUTH_FRAME3.
+ */
+typedef enum eLimMlmStates {
+	eLIM_MLM_OFFLINE_STATE,
+	eLIM_MLM_IDLE_STATE,
+	eLIM_MLM_WT_PROBE_RESP_STATE,
+	eLIM_MLM_PASSIVE_SCAN_STATE,
+	eLIM_MLM_WT_JOIN_BEACON_STATE,
+	eLIM_MLM_JOINED_STATE,
+	eLIM_MLM_BSS_STARTED_STATE,
+	eLIM_MLM_WT_AUTH_FRAME2_STATE,
+	eLIM_MLM_WT_AUTH_FRAME3_STATE,
+	eLIM_MLM_WT_AUTH_FRAME4_STATE,
+	eLIM_MLM_AUTH_RSP_TIMEOUT_STATE,
+	eLIM_MLM_AUTHENTICATED_STATE,
+	eLIM_MLM_WT_ASSOC_RSP_STATE,
+	eLIM_MLM_WT_REASSOC_RSP_STATE,
+	eLIM_MLM_ASSOCIATED_STATE,
+	eLIM_MLM_REASSOCIATED_STATE,
+	eLIM_MLM_LINK_ESTABLISHED_STATE,
+	eLIM_MLM_WT_ASSOC_CNF_STATE,
+	eLIM_MLM_LEARN_STATE,
+	eLIM_MLM_WT_ADD_BSS_RSP_STATE,
+	eLIM_MLM_WT_DEL_BSS_RSP_STATE,
+	eLIM_MLM_WT_ADD_BSS_RSP_ASSOC_STATE,
+	eLIM_MLM_WT_ADD_BSS_RSP_REASSOC_STATE,
+	eLIM_MLM_WT_ADD_BSS_RSP_PREASSOC_STATE,
+	eLIM_MLM_WT_ADD_STA_RSP_STATE,
+	eLIM_MLM_WT_DEL_STA_RSP_STATE,
+	/*
+	 * MLM goes to this state when LIM initiates DELETE_STA
+	 * as processing of Assoc req because the entry already exists.
+	 * LIM comes out of this state when DELETE_STA response from
+	 * HAL is received. LIM needs to maintain this state so that ADD_STA
+	 * can be issued while processing DELETE_STA response from HAL.
+	 */
+	eLIM_MLM_WT_ASSOC_DEL_STA_RSP_STATE,
+	eLIM_MLM_WT_SET_BSS_KEY_STATE,
+	eLIM_MLM_WT_SET_STA_KEY_STATE,
+	eLIM_MLM_WT_SET_STA_BCASTKEY_STATE,
+	eLIM_MLM_WT_SET_MIMOPS_STATE,
+#if defined WLAN_FEATURE_VOWIFI_11R
+	eLIM_MLM_WT_ADD_BSS_RSP_FT_REASSOC_STATE,
+	eLIM_MLM_WT_FT_REASSOC_RSP_STATE,
+#endif
+	eLIM_MLM_P2P_LISTEN_STATE,
+} tLimMlmStates;
+
+/* 11h channel quiet states */
+
+/*
+ * This enum indicates in which state the device is in
+ * when it receives quiet element in beacon or probe-response.
+ * The default quiet state of the device is always INIT
+ * eLIM_QUIET_BEGIN - When Quiet period is started
+ * eLIM_QUIET_CHANGED - When Quiet period is updated
+ * eLIM_QUIET_RUNNING - Between two successive Quiet updates
+ * eLIM_QUIET_END - When quiet period ends
+ */
+typedef enum eLimQuietStates {
+	eLIM_QUIET_INIT,
+	eLIM_QUIET_BEGIN,
+	eLIM_QUIET_CHANGED,
+	eLIM_QUIET_RUNNING,
+	eLIM_QUIET_END
+} tLimQuietStates;
+
+/* 11h channel switch states */
+
+/*
+ * This enum indicates in which state the channel-swith
+ * is presently operating.
+ * eLIM_11H_CHANSW_INIT - Default state
+ * eLIM_11H_CHANSW_RUNNING - When channel switch is running
+ * eLIM_11H_CHANSW_END - After channel switch is complete
+ */
+typedef enum eLimDot11hChanSwStates {
+	eLIM_11H_CHANSW_INIT,
+	eLIM_11H_CHANSW_RUNNING,
+	eLIM_11H_CHANSW_END
+} tLimDot11hChanSwStates;
+
+
+/* WLAN_SUSPEND_LINK Related */
+typedef void (*SUSPEND_RESUME_LINK_CALLBACK)(tpAniSirGlobal pMac,
+					     CDF_STATUS status,
+					     uint32_t *data);
+
+/* LIM to HAL SCAN Management Message Interface states */
+typedef enum eLimHalScanState {
+	eLIM_HAL_IDLE_SCAN_STATE,
+	eLIM_HAL_INIT_SCAN_WAIT_STATE,
+	eLIM_HAL_START_SCAN_WAIT_STATE,
+	eLIM_HAL_END_SCAN_WAIT_STATE,
+	eLIM_HAL_FINISH_SCAN_WAIT_STATE,
+	eLIM_HAL_INIT_LEARN_WAIT_STATE,
+	eLIM_HAL_START_LEARN_WAIT_STATE,
+	eLIM_HAL_END_LEARN_WAIT_STATE,
+	eLIM_HAL_FINISH_LEARN_WAIT_STATE,
+	eLIM_HAL_SCANNING_STATE,
+/* WLAN_SUSPEND_LINK Related */
+	eLIM_HAL_SUSPEND_LINK_WAIT_STATE,
+	eLIM_HAL_SUSPEND_LINK_STATE,
+	eLIM_HAL_RESUME_LINK_WAIT_STATE,
+/* end WLAN_SUSPEND_LINK Related */
+} tLimLimHalScanState;
+
+/* MLM Req/Cnf structure definitions */
+typedef struct sLimMlmAuthReq {
+	tSirMacAddr peerMacAddr;
+	tAniAuthType authType;
+	uint32_t authFailureTimeout;
+	uint8_t sessionId;
+} tLimMlmAuthReq, *tpLimMlmAuthReq;
+
+typedef struct sLimMlmJoinReq {
+	uint32_t joinFailureTimeout;
+	tSirMacRateSet operationalRateSet;
+	uint8_t sessionId;
+	tSirBssDescription bssDescription;
+} tLimMlmJoinReq, *tpLimMlmJoinReq;
+
+typedef struct sLimMlmScanReq {
+	tSirBssType bssType;
+	tSirMacAddr bssId;
+	tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
+	tSirScanType scanType;
+	uint32_t minChannelTime;
+	uint32_t maxChannelTime;
+	uint32_t dot11mode;
+	/* Number of SSIDs to scan(send Probe request) */
+	uint8_t numSsid;
+
+	bool p2pSearch;
+	uint16_t uIEFieldLen;
+	uint16_t uIEFieldOffset;
+
+	uint8_t sessionId;
+	/* channelList MUST be the last field of this structure */
+	tSirChannelList channelList;
+	/*-----------------------------
+	   tLimMlmScanReq....
+	   -----------------------------
+	   uIEFiledLen
+	   -----------------------------
+	   uIEFiledOffset               ----+
+	   -----------------------------    |
+	   channelList.numChannels          |
+	   -----------------------------    |
+	   ... variable size up to          |
+	   channelNumber[numChannels-1]     |
+	   This can be zero, if             |
+	   numChannel is zero.              |
+	   ----------------------------- <--+
+	   ... variable size uIEFiled
+	   up to uIEFieldLen (can be 0)
+	   -----------------------------*/
+} tLimMlmScanReq, *tpLimMlmScanReq;
+
+typedef struct tLimScanResultNode tLimScanResultNode;
+struct tLimScanResultNode {
+	tLimScanResultNode *next;
+	tSirBssDescription bssDescription;
+};
+
+#ifdef FEATURE_OEM_DATA_SUPPORT
+
+#ifndef OEM_DATA_REQ_SIZE
+#define OEM_DATA_REQ_SIZE 280
+#endif
+#ifndef OEM_DATA_RSP_SIZE
+#define OEM_DATA_RSP_SIZE 1724
+#endif
+
+/* OEM Data related structure definitions */
+typedef struct sLimMlmOemDataReq {
+	tSirMacAddr selfMacAddr;
+	uint8_t oemDataReq[OEM_DATA_REQ_SIZE];
+} tLimMlmOemDataReq, *tpLimMlmOemDataReq;
+
+typedef struct sLimMlmOemDataRsp {
+	uint8_t oemDataRsp[OEM_DATA_RSP_SIZE];
+} tLimMlmOemDataRsp, *tpLimMlmOemDataRsp;
+#endif
+
+/* Pre-authentication structure definition */
+typedef struct tLimPreAuthNode {
+	struct tLimPreAuthNode *next;
+	tSirMacAddr peerMacAddr;
+	tAniAuthType authType;
+	tLimMlmStates mlmState;
+	uint8_t authNodeIdx;
+	uint8_t challengeText[SIR_MAC_AUTH_CHALLENGE_LENGTH];
+	uint8_t fTimerStarted:1;
+	uint8_t fSeen:1;
+	uint8_t fFree:1;
+	uint8_t rsvd:5;
+	TX_TIMER timer;
+	uint16_t seq_num;
+	v_TIME_t timestamp;
+} tLimPreAuthNode, *tpLimPreAuthNode;
+
+/* Pre-authentication table definition */
+typedef struct tLimPreAuthTable {
+	uint32_t numEntry;
+	tpLimPreAuthNode pTable;
+} tLimPreAuthTable, *tpLimPreAuthTable;
+
+/* / Per STA context structure definition */
+typedef struct sLimMlmStaContext {
+	tLimMlmStates mlmState;
+	tAniAuthType authType;
+	uint16_t listenInterval;
+	tSirMacCapabilityInfo capabilityInfo;
+	tSirMacPropRateSet propRateSet;
+	tSirMacReasonCodes disassocReason;
+	uint16_t cleanupTrigger;
+
+	tSirResultCodes resultCode;
+	uint16_t protStatusCode;
+
+	uint8_t subType:1;      /* Indicates ASSOC (0) or REASSOC (1) */
+	uint8_t updateContext:1;
+	uint8_t schClean:1;
+	/* 802.11n HT Capability in Station: Enabled 1 or DIsabled 0 */
+	uint8_t htCapability:1;
+#ifdef WLAN_FEATURE_11AC
+	uint8_t vhtCapability:1;
+#endif
+} tLimMlmStaContext, *tpLimMlmStaContext;
+
+/* Structure definition to hold deferred messages queue parameters */
+typedef struct sLimDeferredMsgQParams {
+	tSirMsgQ deferredQueue[MAX_DEFERRED_QUEUE_LEN];
+	uint16_t size;
+	uint16_t read;
+	uint16_t write;
+} tLimDeferredMsgQParams, *tpLimDeferredMsgQParams;
+
+typedef struct sCfgProtection {
+	uint32_t overlapFromlla:1;
+	uint32_t overlapFromllb:1;
+	uint32_t overlapFromllg:1;
+	uint32_t overlapHt20:1;
+	uint32_t overlapNonGf:1;
+	uint32_t overlapLsigTxop:1;
+	uint32_t overlapRifs:1;
+	uint32_t overlapOBSS:1; /* added for obss */
+	uint32_t fromlla:1;
+	uint32_t fromllb:1;
+	uint32_t fromllg:1;
+	uint32_t ht20:1;
+	uint32_t nonGf:1;
+	uint32_t lsigTxop:1;
+	uint32_t rifs:1;
+	uint32_t obss:1;        /* added for Obss */
+} tCfgProtection, *tpCfgProtection;
+
+typedef enum eLimProtStaCacheType {
+	eLIM_PROT_STA_CACHE_TYPE_INVALID,
+	eLIM_PROT_STA_CACHE_TYPE_llB,
+	eLIM_PROT_STA_CACHE_TYPE_llG,
+	eLIM_PROT_STA_CACHE_TYPE_HT20
+} tLimProtStaCacheType;
+
+typedef struct sCacheParams {
+	uint8_t active;
+	tSirMacAddr addr;
+	tLimProtStaCacheType protStaCacheType;
+
+} tCacheParams, *tpCacheParams;
+
+#define LIM_PROT_STA_OVERLAP_CACHE_SIZE    HAL_NUM_ASSOC_STA
+#define LIM_PROT_STA_CACHE_SIZE            HAL_NUM_ASSOC_STA
+
+typedef struct sLimProtStaParams {
+	uint8_t numSta;
+	uint8_t protectionEnabled;
+} tLimProtStaParams, *tpLimProtStaParams;
+
+typedef struct sLimNoShortParams {
+	uint8_t numNonShortPreambleSta;
+	tCacheParams staNoShortCache[LIM_PROT_STA_CACHE_SIZE];
+} tLimNoShortParams, *tpLimNoShortParams;
+
+typedef struct sLimNoShortSlotParams {
+	uint8_t numNonShortSlotSta;
+	tCacheParams staNoShortSlotCache[LIM_PROT_STA_CACHE_SIZE];
+} tLimNoShortSlotParams, *tpLimNoShortSlotParams;
+
+typedef struct tLimIbssPeerNode tLimIbssPeerNode;
+struct tLimIbssPeerNode {
+	tLimIbssPeerNode *next;
+	tSirMacAddr peerMacAddr;
+	uint8_t extendedRatesPresent:1;
+	uint8_t edcaPresent:1;
+	uint8_t wmeEdcaPresent:1;
+	uint8_t wmeInfoPresent:1;
+	uint8_t htCapable:1;
+	uint8_t vhtCapable:1;
+	uint8_t rsvd:2;
+	uint8_t htSecondaryChannelOffset;
+	tSirMacCapabilityInfo capabilityInfo;
+	tSirMacRateSet supportedRates;
+	tSirMacRateSet extendedRates;
+	uint8_t supportedMCSSet[SIZE_OF_SUPPORTED_MCS_SET];
+	tSirMacEdcaParamSetIE edcaParams;
+	uint8_t erpIePresent;
+
+	/* HT Capabilities of IBSS Peer */
+	uint8_t htGreenfield;
+	uint8_t htShortGI40Mhz;
+	uint8_t htShortGI20Mhz;
+
+	/* DSSS/CCK at 40 MHz: Enabled 1 or Disabled */
+	uint8_t htDsssCckRate40MHzSupport;
+
+	/* MIMO Power Save */
+	tSirMacHTMIMOPowerSaveState htMIMOPSState;
+
+	/* */
+	/* A-MPDU Density */
+	/* 000 - No restriction */
+	/* 001 - 1/8 usec */
+	/* 010 - 1/4 usec */
+	/* 011 - 1/2 usec */
+	/* 100 - 1 usec */
+	/* 101 - 2 usec */
+	/* 110 - 4 usec */
+	/* 111 - 8 usec */
+	/* */
+	uint8_t htAMpduDensity;
+
+	/* Maximum Rx A-MPDU factor */
+	uint8_t htMaxRxAMpduFactor;
+
+	/* Set to 0 for 3839 octets */
+	/* Set to 1 for 7935 octets */
+	uint8_t htMaxAmsduLength;
+
+	/* */
+	/* Recommended Tx Width Set */
+	/* 0 - use 20 MHz channel (control channel) */
+	/* 1 - use 40 Mhz channel */
+	/* */
+	uint8_t htSupportedChannelWidthSet;
+
+	uint8_t htLdpcCapable;
+
+	uint8_t beaconHBCount;
+	uint8_t heartbeatFailure;
+
+	uint8_t *beacon;        /* Hold beacon to be sent to HDD/CSR */
+	uint16_t beaconLen;
+
+#ifdef WLAN_FEATURE_11AC
+	tDot11fIEVHTCaps VHTCaps;
+	uint8_t vhtSupportedChannelWidthSet;
+	uint8_t vhtBeamFormerCapable;
+#endif
+	/*
+	 * Peer Atim Info
+	 */
+	uint8_t atimIePresent;
+	uint32_t peerAtimWindowLength;
+};
+
+/* Enums used for channel switching. */
+typedef enum eLimChannelSwitchState {
+	eLIM_CHANNEL_SWITCH_IDLE,
+	eLIM_CHANNEL_SWITCH_PRIMARY_ONLY,
+	eLIM_CHANNEL_SWITCH_PRIMARY_AND_SECONDARY
+} tLimChannelSwitchState;
+
+/* Channel Switch Info */
+typedef struct sLimChannelSwitchInfo {
+	tLimChannelSwitchState state;
+	uint8_t primaryChannel;
+	uint8_t ch_center_freq_seg0;
+	uint8_t ch_center_freq_seg1;
+	phy_ch_width ch_width;
+	int8_t switchCount;
+	uint32_t switchTimeoutValue;
+	uint8_t switchMode;
+} tLimChannelSwitchInfo, *tpLimChannelSwitchInfo;
+
+#ifdef WLAN_FEATURE_11AC
+typedef struct sLimOperatingModeInfo {
+	uint8_t present;
+	uint8_t chanWidth:2;
+	uint8_t reserved:2;
+	uint8_t rxNSS:3;
+	uint8_t rxNSSType:1;
+} tLimOperatingModeInfo, *tpLimOperatingModeInfo;
+#endif
+
+typedef struct sLimWiderBWChannelSwitch {
+	uint8_t newChanWidth;
+	uint8_t newCenterChanFreq0;
+	uint8_t newCenterChanFreq1;
+} tLimWiderBWChannelSwitchInfo, *tpLimWiderBWChannelSwitchInfo;
+
+/* Enums used when stopping the Tx. */
+typedef enum eLimQuietTxMode {
+	/* Stop/resume transmission of all stations,Uses the global flag */
+	eLIM_TX_ALL = 0,
+	/*
+	 * Stops/resumes the transmission of specific stations identified
+	 * by staId.
+	 */
+	eLIM_TX_STA,
+	/* Stops/resumes the transmission of all the packets in BSS */
+	eLIM_TX_BSS,
+	/*
+	 * Stops/resumes the transmission of all packets except beacons in BSS
+	 * This is used when radar is detected in the current operating channel.
+	 * Beacon has to be sent to notify the stations associated about the
+	 * scheduled channel switch
+	 */
+	eLIM_TX_BSS_BUT_BEACON
+} tLimQuietTxMode;
+
+typedef enum eLimControlTx {
+	eLIM_RESUME_TX = 0,
+	eLIM_STOP_TX
+} tLimControlTx;
+
+/* -------------------------------------------------------------------- */
+
+typedef struct sLimTspecInfo {
+	/* 0==free, else used */
+	uint8_t inuse;
+	/* index in list */
+	uint8_t idx;
+	tSirMacAddr staAddr;
+	uint16_t assocId;
+	tSirMacTspecIE tspec;
+	/* number of Tclas elements */
+	uint8_t numTclas;
+	tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
+	uint8_t tclasProc;
+	/* tclassProc is valid only if this is set to 1. */
+	uint8_t tclasProcPresent:1;
+} cdf_packed tLimTspecInfo, *tpLimTspecInfo;
+
+typedef struct sLimAdmitPolicyInfo {
+	/* admit control policy type */
+	uint8_t type;
+	/* oversubscription factor : 0 means nothing is allowed */
+	uint8_t bw_factor;
+	/* valid only when 'type' is set BW_FACTOR */
+} tLimAdmitPolicyInfo, *tpLimAdmitPolicyInfo;
+
+typedef enum eLimWscEnrollState {
+	eLIM_WSC_ENROLL_NOOP,
+	eLIM_WSC_ENROLL_BEGIN,
+	eLIM_WSC_ENROLL_IN_PROGRESS,
+	eLIM_WSC_ENROLL_END
+} tLimWscEnrollState;
+
+#define WSC_PASSWD_ID_PUSH_BUTTON         (0x0004)
+
+typedef struct sLimWscIeInfo {
+	bool apSetupLocked;
+	bool selectedRegistrar;
+	uint16_t selectedRegistrarConfigMethods;
+	tLimWscEnrollState wscEnrollmentState;
+	tLimWscEnrollState probeRespWscEnrollmentState;
+	uint8_t reqType;
+	uint8_t respType;
+} tLimWscIeInfo, *tpLimWscIeInfo;
+
+/* maximum number of tspec's supported */
+#define LIM_NUM_TSPEC_MAX      15
+
+/* structure to hold all 11h specific data */
+typedef struct sLimSpecMgmtInfo {
+	tLimQuietStates quietState;
+	uint32_t quietCount;
+	/* This is in units of system TICKS */
+	uint32_t quietDuration;
+	/* This is in units of TU, for over the air transmission */
+	uint32_t quietDuration_TU;
+	/* After this timeout, actual quiet starts */
+	uint32_t quietTimeoutValue;
+	/* Used on AP, if quiet is enabled during learning */
+	bool fQuietEnabled;
+	tLimDot11hChanSwStates dot11hChanSwState;
+	/* Radar detected in cur oper chan on AP */
+	bool fRadarDetCurOperChan;
+	/* Whether radar interrupt has been configured */
+	bool fRadarIntrConfigured;
+} tLimSpecMgmtInfo, *tpLimSpecMgmtInfo;
+
+#ifdef FEATURE_WLAN_TDLS
+/*
+ * Peer info needed for TDLS setup..
+ */
+typedef struct tLimTDLSPeerSta {
+	struct tLimTDLSPeerSta *next;
+	uint8_t dialog;
+	tSirMacAddr peerMac;
+	tSirMacCapabilityInfo capabilityInfo;
+	tSirMacRateSet supportedRates;
+	tSirMacRateSet extendedRates;
+	tSirMacQosCapabilityStaIE qosCaps;
+	tSirMacEdcaParamSetIE edcaParams;
+	uint8_t mcsSet[SIZE_OF_SUPPORTED_MCS_SET];
+	uint8_t tdls_bIsResponder;
+	/* HT Capabilties */
+	tDot11fIEHTCaps tdlsPeerHTCaps;
+	tDot11fIEExtCap tdlsPeerExtCaps;
+	uint8_t tdls_flags;
+	uint8_t tdls_link_state;
+	uint8_t tdls_prev_link_state;
+	uint8_t tdls_sessionId;
+	uint8_t ExtRatesPresent;
+	TX_TIMER gLimTdlsLinkSetupRspTimeoutTimer;
+	TX_TIMER gLimTdlsLinkSetupCnfTimeoutTimer;
+} tLimTdlsLinkSetupPeer, *tpLimTdlsLinkSetupPeer;
+
+typedef struct tLimTdlsLinkSetupInfo {
+	tLimTdlsLinkSetupPeer *tdlsLinkSetupList;
+	uint8_t num_tdls_peers;
+	uint8_t tdls_flags;
+	uint8_t tdls_state;
+	uint8_t tdls_prev_state;
+} tLimTdlsLinkSetupInfo, *tpLimTdlsLinkSetupInfo;
+
+typedef enum tdlsLinkMode {
+	TDLS_LINK_MODE_BG,
+	TDLS_LINK_MODE_N,
+	TDLS_LINK_MODE_AC,
+	TDLS_LINK_MODE_NONE
+} eLimTdlsLinkMode;
+#endif /* FEATURE_WLAN_TDLS */
+
+#endif