blob: 5ddb01c6320c6c93f276b520e430fb49522c02b1 [file] [log] [blame]
/*
* 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