prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h
new file mode 100644
index 0000000..ffeadf3
--- /dev/null
+++ b/CORE/WDA/inc/legacy/halMsgApi.h
@@ -0,0 +1,1333 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/*
+ * */
+#ifndef _HALMSGAPI_H_
+#define _HALMSGAPI_H_
+
+#include "halTypes.h"
+#include "sirApi.h"
+#include "sirParams.h"
+#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
+#include "halPhy.h"
+#include "halPhyApi.h"
+#endif
+
+#define HAL_NUM_BSSID 2
+/* operMode in ADD BSS message */
+#define BSS_OPERATIONAL_MODE_AP 0
+#define BSS_OPERATIONAL_MODE_STA 1
+
+/* STA entry type in add sta message */
+#define STA_ENTRY_SELF 0
+#define STA_ENTRY_OTHER 1
+#define STA_ENTRY_BSSID 2
+#define STA_ENTRY_BCAST 3 //Special station id for transmitting broadcast frames.
+#define STA_ENTRY_PEER STA_ENTRY_OTHER
+
+#define STA_ENTRY_TRANSMITTER STA_ENTRY_SELF
+#define STA_ENTRY_RECEIVER STA_ENTRY_OTHER
+
+#define HAL_STA_INVALID_IDX 0xFF
+#define HAL_BSS_INVALID_IDX 0xFF
+
+#define HAL_BSSPERSONA_INVALID_IDX 0xFF
+
+#define WLAN_BSS_PROTECTION_ON 1
+#define WLAN_BSS_PROTECTION_OFF 0
+
+/* Station index allocation after Broadcast station */
+#define HAL_MAX_NUM_BCAST_STATIONS 1
+#define HAL_MIN_BCAST_STA_INDEX ((HAL_MAX_NUM_BCAST_STATIONS>0)?0:HAL_STA_INVALID_IDX)
+#define HAL_MAX_BCAST_STA_INDEX ((HAL_MAX_NUM_BCAST_STATIONS>0)?(HAL_MAX_NUM_BCAST_STATIONS - 1):HAL_STA_INVALID_IDX)
+#define HAL_MIN_STA_INDEX ((HAL_MAX_BCAST_STA_INDEX!=HAL_STA_INVALID_IDX)?(HAL_MAX_BCAST_STA_INDEX+1):0)
+#define HAL_MAX_STA_INDEX (HAL_NUM_STA)
+
+/* Compilation flags for enabling disabling selfSta and bcastSta per BSS */
+#define HAL_SELF_STA_PER_BSS 1
+#define HAL_BCAST_STA_PER_BSS 1
+
+//invalid channel id.
+#define HAL_INVALID_CHANNEL_ID 0
+
+/* BSS index used when no BSS is associated with the station. For example,
+ * driver creates only one self station without valid BSS while scanning.
+ * Then this index is used to tell softmac that BSS is not valid.
+ */
+#define BSSIDX_INVALID 254
+
+#define HAL_IS_VALID_BSS_INDEX(pMac, bssIdx) ((BSSIDX_INVALID != (bssIdx)) && ((bssIdx) < (pMac)->hal.memMap.maxBssids))
+
+// Beacon structure
+typedef __ani_attr_pre_packed struct sAniBeaconStruct
+{
+ tANI_U32 beaconLength; // Indicates the beacon length
+ tSirMacMgmtHdr macHdr; // MAC Header for beacon
+ // Beacon body follows here
+} __ani_attr_packed tAniBeaconStruct, *tpAniBeaconStruct;
+
+// probeRsp template structure
+typedef __ani_attr_pre_packed struct sAniProbeRspStruct
+{
+ tSirMacMgmtHdr macHdr; // MAC Header for probeRsp
+ // probeRsp body follows here
+} __ani_attr_packed tAniProbeRspStruct, *tpAniProbeRspStruct;
+
+
+// Per TC parameters
+typedef struct
+{
+ tANI_U8 disableTx;
+ tANI_U8 disableRx;
+ tANI_U8 rxCompBA; // 1: expect to see frames with compressed BA coming from this peer MAC
+ tANI_U8 rxBApolicy; // immediate ACK or delayed ACK for frames from this peer MAC
+ tANI_U8 txCompBA; // 1: using compressed BA to send to this peer MAC
+ tANI_U8 txBApolicy; // immediate ACK or delayed ACK for frames to this peer MAC
+ tANI_U8 rxUseBA;
+ tANI_U8 txUseBA;
+ tANI_U8 rxBufferSize;
+ tANI_U8 txBufferSize;
+ tANI_U16 txBAWaitTimeout;
+ tANI_U16 rxBAWaitTimeout;
+} tTCParams;
+
+
+typedef enum eRxpMode {
+ eRXP_IDLE_MODE = 0x0,
+ eRXP_SCAN_MODE = 0x1,
+ eRXP_PRE_ASSOC_MODE = 0x2,
+ eRXP_POST_ASSOC_MODE = 0x4,
+ eRXP_AP_MODE = 0x8,
+ eRXP_PROMISCUOUS_MODE = 0x10,
+ eRXP_LEARN_MODE = 0x20,
+ eRXP_POWER_SAVE_MODE = 0x40,
+ eRXP_IBSS_MODE = 0x80,
+ eRXP_BTAMP_PREASSOC_MODE = 0x100,
+ eRXP_BTAMP_POSTASSOC_MODE = 0x200,
+ eRXP_BTAMP_AP_MODE = 0x400,
+ eRXP_BTAMP_STA_MODE = 0x800,
+ eRXP_MULTI_BSS_MODE = 0x1000
+#ifndef WLAN_FTM_STUB
+ ,eRXP_FTM_MODE = 0x4000
+#endif
+ ,eRXP_LISTEN_MODE = 0x8000
+} tRxpMode;
+
+
+typedef struct
+{
+ // First two fields bssid and assocId are used to find staid for sta.
+ // BSSID of STA
+ tSirMacAddr bssId;
+
+ // ASSOC ID, as assigned by PE/LIM. This needs to be assigned
+ // on a per BSS basis
+ tANI_U16 assocId;
+
+ // Field to indicate if this is sta entry for itself STA adding entry for itself
+ // or remote (AP adding STA after successful association.
+ // This may or may not be required in production driver.
+ tANI_U8 staType; // 0 - Self, 1 other/remote, 2 - bssid
+
+ tANI_U8 shortPreambleSupported;
+
+ // MAC Address of STA
+ tSirMacAddr staMac;
+
+ // Listen interval.
+ tANI_U16 listenInterval;
+
+ // Support for 11e/WMM
+ tANI_U8 wmmEnabled;
+
+ //
+ // U-APSD Flags: 1b per AC
+ // Encoded as follows:
+ // b7 b6 b5 b4 b3 b2 b1 b0
+ // X X X X BE BK VI VO
+ //
+ tANI_U8 uAPSD;
+
+ // Max SP Length
+ tANI_U8 maxSPLen;
+
+ // 11n HT capable STA
+ tANI_U8 htCapable;
+
+ // 11n Green Field preamble support
+ // 0 - Not supported, 1 - Supported
+ // Add it to RA related fields of sta entry in HAL
+ tANI_U8 greenFieldCapable;
+
+ // TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
+ tANI_U8 txChannelWidthSet;
+
+ // MIMO Power Save
+ tSirMacHTMIMOPowerSaveState mimoPS;
+
+ // RIFS mode: 0 - NA, 1 - Allowed
+ tANI_U8 rifsMode;
+
+ // L-SIG TXOP Protection mechanism
+ // 0 - No Support, 1 - Supported
+ // SG - there is global field.
+ tANI_U8 lsigTxopProtection;
+
+ // delayed ba support
+ tANI_U8 delBASupport;
+ // delayed ba support... TBD
+
+#ifdef ANI_DVT_DEBUG
+ //These 6 fields are used only by DVT driver to pass selected
+ //rates to Softmac through HAL.
+ tANI_U8 primaryRateIndex, secondaryRateIndex, tertiaryRateIndex;
+ tANI_U8 primaryRateIndex40, secondaryRateIndex40, tertiaryRateIndex40;
+#endif
+
+ // FIXME
+ //Add these fields to message
+ tANI_U8 us32MaxAmpduDuration; //in units of 32 us.
+ tANI_U8 maxAmpduSize; // 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k
+ tANI_U8 maxAmpduDensity; // 3 : 0~7 : 2^(11nAMPDUdensity -4)
+ tANI_U8 maxAmsduSize; // 1 : 3839 bytes, 0 : 7935 bytes
+
+ // TC parameters
+ tTCParams staTCParams[STACFG_MAX_TC];
+
+ // Compression and Concat parameters for DPU
+ tANI_U16 deCompEnable;
+ tANI_U16 compEnable;
+ tANI_U16 concatSeqRmv;
+ tANI_U16 concatSeqIns;
+
+
+ //11n Parameters
+
+ /**
+ HT STA should set it to 1 if it is enabled in BSS
+ HT STA should set it to 0 if AP does not support it.
+ This indication is sent to HAL and HAL uses this flag
+ to pickup up appropriate 40Mhz rates.
+ */
+ tANI_U8 fDsssCckMode40Mhz;
+
+
+ //short GI support for 40Mhz packets
+ tANI_U8 fShortGI40Mhz;
+
+ //short GI support for 20Mhz packets
+ tANI_U8 fShortGI20Mhz;
+
+
+
+ /*
+ * All the legacy and airgo supported rates.
+ * These rates are the intersection of peer and self capabilities.
+ */
+ tSirSupportedRates supportedRates;
+
+
+
+
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_ADD_STA_REQ is reported here
+ eHalStatus status;
+ // Station index; valid only when 'status' field value is eHAL_STATUS_SUCCESS
+ tANI_U8 staIdx;
+
+ //BSSID of BSS to which the station is associated.
+ //This should be filled back in by HAL, and sent back to LIM as part of
+ //the response message, so LIM can cache it in the station entry of hash table.
+ //When station is deleted, LIM will make use of this bssIdx to delete
+ //BSS from hal tables and from softmac.
+ tANI_U8 bssIdx;
+
+ /* this requires change in testDbg. I will change it later after coordinating with Diag team.
+ tANI_U8 fFwdTrigerSOSPtoHost; //trigger to start service period
+ tANI_U8 fFwdTrigerEOSPtoHost; //trigger to end service period
+ */
+
+ //HAL should update the existing STA entry, if this flag is set.
+ //PE will set this flag in case of reassoc, where we want to resue the
+ //the old staID and still return success.
+ tANI_U8 updateSta;
+ //A flag to indicate to HAL if the response message is required.
+ tANI_U8 respReqd;
+
+ /* Robust Management Frame (RMF) enabled/disabled */
+ tANI_U8 rmfEnabled;
+
+ /* The unicast encryption type in the association */
+ tANI_U32 encryptType;
+
+ /*The DPU signatures will be sent eventually to TL to help it determine the
+ association to which a packet belongs to*/
+ /*Unicast DPU index*/
+ tANI_U8 ucUcastSig;
+
+ /*Broadcast DPU index*/
+ tANI_U8 ucBcastSig;
+
+ tANI_U8 sessionId; //PE session id for PE<->HAL interface
+ // HAL just sends back what it receives.
+
+#ifdef WLAN_FEATURE_P2P
+ /*if this is a P2P Capable Sta*/
+ tANI_U8 p2pCapableSta;
+#endif
+
+} tAddStaParams, *tpAddStaParams;
+
+
+typedef struct
+{
+ // Station index
+ tANI_U16 staIdx;
+ tANI_U16 templIdx;
+ tANI_U8 rateIdx;
+
+ // The return status of SIR_HAL_UPDATE_STARATEINFO_REQ is reported here
+ eHalStatus status;
+
+ //A flag to indicate to HAL if the response message is required.
+ tANI_U8 respReqd;
+
+} tUpdateTxCmdTemplParams, *tpUpdateTxCmdTemplParams;
+//FIXME: change the structure name
+
+
+
+
+
+
+
+
+typedef struct
+{
+ // index of STA to delete - this should be the same as the index returned
+ // as part of the AddSta
+ tANI_U16 staIdx;
+ tANI_U16 assocId;
+ eHalStatus status; // Status of SIR_HAL_DELETE_STA_REQ is reported here
+ tANI_U8 respReqd;
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // PE session id now added to all HAL<->PE transacations
+ // HAL sends it back unmodified.
+} tDeleteStaParams, * tpDeleteStaParams;
+
+/*
+ * This is used by PE to configure the key information on a given station.
+ * When the secType is WEP40 or WEP104, the defWEPIdx is used to locate
+ * a preconfigured key from a BSS the station assoicated with; otherwise
+ * a new key descriptor is created based on the key field.
+ */
+typedef struct
+{
+ tANI_U16 staIdx;
+ tAniEdType encType; // Encryption/Decryption type
+ tAniWepType wepType; // valid only for WEP
+ tANI_U8 defWEPIdx; // Default WEP key, valid only for static WEP, must between 0 and 3
+#ifdef WLAN_SOFTAP_FEATURE
+ tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS]; // valid only for non-static WEP encyrptions
+#else
+ tSirKeys key;
+#endif
+ tANI_U8 singleTidRc; // 1=Single TID based Replay Count, 0=Per TID based RC
+ /*
+ * Following parameter is for returning status
+ * via response message. HAL does not read them.
+ */
+ eHalStatus status; // status of SIR_HAL_SET_STAKEY_REQ is reported here
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+
+ // PE session id now added to all HAL<->PE transacations
+ // HAL sends back response with no modification
+} tSetStaKeyParams, *tpSetStaKeyParams;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_ADD_BSS_REQ
+//
+typedef struct
+{
+ // MAC Address/BSSID
+ tSirMacAddr bssId;
+#ifdef HAL_SELF_STA_PER_BSS
+ // Self Mac Address
+ tSirMacAddr selfMacAddr;
+#endif
+ // BSS type
+ // FIXME - Is this reqd? Do we want to isolate BSS/IBSS parameters?
+ tSirBssType bssType;
+
+ // AP - 0; STA - 1 ;
+ tANI_U8 operMode;
+
+ // Network type - b/g/a/MixedMode/GreenField/Legacy
+ // TODO - This enum to be updated for HT support
+ // Review FIXME - Why is this needed?
+ tSirNwType nwType;
+
+ tANI_U8 shortSlotTimeSupported;
+ tANI_U8 llaCoexist;
+ tANI_U8 llbCoexist;
+ tANI_U8 llgCoexist;
+ tANI_U8 ht20Coexist;
+ tANI_U8 llnNonGFCoexist;
+ tANI_U8 fLsigTXOPProtectionFullSupport;
+ tANI_U8 fRIFSMode;
+
+ // Beacon Interval
+ tSirMacBeaconInterval beaconInterval;
+
+ // DTIM period
+ tANI_U8 dtimPeriod;
+
+ // CF Param Set
+ // Review FIXME - Does HAL need this?
+ tSirMacCfParamSet cfParamSet;
+
+ // MAC Rate Set
+ // Review FIXME - Does HAL need this?
+ tSirMacRateSet rateSet;
+
+ // 802.11n related HT parameters that are dynamic
+
+ // Enable/Disable HT capabilities
+ tANI_U8 htCapable;
+
+ // Enable/Disable OBSS protection
+ tANI_U8 obssProtEnabled;
+
+ // RMF enabled/disabled
+ tANI_U8 rmfEnabled;
+
+ // HT Operating Mode
+ // Review FIXME - Does HAL need this?
+ tSirMacHTOperatingMode htOperMode;
+
+ // Dual CTS Protection: 0 - Unused, 1 - Used
+ tANI_U8 dualCTSProtection;
+
+ // TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
+ tANI_U8 txChannelWidthSet;
+
+ // Current Operating Channel
+ tANI_U8 currentOperChannel;
+
+ // Current Extension Channel, if applicable
+ tANI_U8 currentExtChannel;
+
+ // Add a STA entry for "itself" -
+ // On AP - Add the AP itself in an "STA context"
+ // On STA - Add the AP to which this STA is joining in an "STA context"
+ tAddStaParams staContext;
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_ADD_BSS_REQ is reported here
+ eHalStatus status;
+ // BSS index allocated by HAL.
+ // valid only when 'status' field is eHAL_STATUS_SUCCESS
+ tANI_U16 bssIdx;
+
+ // Broadcast DPU descriptor index allocated by HAL and used for broadcast/multicast packets.
+ // valid only when 'status' field is eHAL_STATUS_SUCCESS
+ tANI_U8 bcastDpuDescIndx;
+
+ // DPU signature to be used for broadcast/multicast packets
+ // valid only when 'status' field is eHAL_STATUS_SUCCESS
+ tANI_U8 bcastDpuSignature;
+
+ // DPU descriptor index allocated by HAL, used for bcast/mcast management packets
+ tANI_U8 mgmtDpuDescIndx;
+
+ // DPU signature to be used for bcast/mcast management packets
+ tANI_U8 mgmtDpuSignature;
+
+ //HAL should update the existing BSS entry, if this flag is set.
+ //PE will set this flag in case of reassoc, where we want to resue the
+ //the old bssID and still return success.
+ tANI_U8 updateBss;
+
+ // Add BSSID info for rxp filter in IBSS mode
+ tSirMacSSid ssId;
+
+ //HAL will send the response message to LIM only when this flag is set.
+ //LIM will set this flag, whereas DVT will not set this flag.
+ tANI_U8 respReqd;
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // PE session id now added to all HAL<->PE transacations
+ // HAL Sends the sessionId unmodified.
+
+#if defined WLAN_FEATURE_VOWIFI
+ tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
+ tPowerdBm maxTxPower; //max power to be used after applying the power constraint, if any
+#endif
+
+#if defined WLAN_FEATURE_VOWIFI_11R
+ tANI_U8 extSetStaKeyParamValid; //Ext Bss Config Msg if set
+ tSetStaKeyParams extSetStaKeyParam; //SetStaKeyParams for ext bss msg
+#endif
+
+ tANI_U8 ucMaxProbeRespRetryLimit; //probe Response Max retries
+ tANI_U8 bHiddenSSIDEn; //To Enable Hidden ssid.
+ tANI_U8 bProxyProbeRespEn; //To Enable Disable FW Proxy Probe Resp
+ tANI_U8 halPersona; //Persona for the BSS can be STA,AP,GO,CLIENT value same as tVOS_CON_MODE
+
+ //Spectrum Management Capability, 1 - Enabled, 0 - Disabled.
+ tANI_U8 bSpectrumMgtEnabled;
+
+} tAddBssParams, * tpAddBssParams;
+
+typedef struct
+{
+ tANI_U8 bssIdx;
+ // The return status of SIR_HAL_DELETE_BSS_REQ is reported here
+ eHalStatus status;
+ //HAL will send the response message to LIM only when this flag is set.
+ //LIM will set this flag, whereas DVT will not set this flag.
+ tANI_U8 respReqd;
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // HAL sends it back unmodified.
+ tSirMacAddr bssid; // Will be removed for PE-HAL integration
+} tDeleteBssParams, * tpDeleteBssParams;
+
+//
+// UAPSD AC mask: 1b per AC
+// LSB 4 bits for delivery enabled setting. msb 4 bits for trigger enabled settings.
+// Encoded as follows:
+// b7 b6 b5 b4 b3 b2 b1 b0
+// BE BK VI VO BE BK VI VO
+
+typedef struct
+{
+ tANI_U8 staIdx;
+ tANI_U8 uapsdACMask;
+ tANI_U8 maxSpLen;
+} tUpdateUapsdParams, * tpUpdateUapsdParams;
+
+typedef struct sSirScanEntry
+{
+ tANI_U8 bssIdx[HAL_NUM_BSSID];
+ tANI_U8 activeBSScnt;
+}tSirScanEntry, *ptSirScanEntry;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_INIT_SCAN_REQ
+//
+typedef struct {
+
+ eHalSysMode scanMode;
+
+ tSirMacAddr bssid;
+
+ tANI_U8 notifyBss;
+
+#ifdef WLAN_FEATURE_P2P
+ tANI_U8 useNoA;
+#endif
+
+ // If this flag is set HAL notifies PE when SMAC returns status.
+ tANI_U8 notifyHost;
+
+ tANI_U8 frameLength;
+ tANI_U8 frameType; // Data NULL or CTS to self
+
+ // Indicates the scan duration (in ms)
+ tANI_U16 scanDuration;
+
+ // For creation of CTS-to-Self and Data-NULL MAC packets
+ tSirMacMgmtHdr macMgmtHdr;
+
+ tSirScanEntry scanEntry;
+
+ // when this flag is set, HAL should check for link traffic prior to scan
+ tSirLinkTrafficCheck checkLinkTraffic;
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_INIT_SCAN_REQ is reported here
+ eHalStatus status;
+
+} tInitScanParams, * tpInitScanParams;
+
+#ifdef WLAN_SOFTAP_FEATURE
+typedef enum eDelStaReasonCode{
+ HAL_DEL_STA_REASON_CODE_KEEP_ALIVE = 0x1,
+ HAL_DEL_STA_REASON_CODE_TIM_BASED = 0x2,
+ HAL_DEL_STA_REASON_CODE_RA_BASED = 0x3,
+ HAL_DEL_STA_REASON_CODE_UNKNOWN_A2 = 0x4
+}tDelStaReasonCode;
+#endif
+
+//
+// Msg header is used from tSirMsgQ
+// Msg Type = SIR_LIM_DELETE_STA_CONTEXT_IND
+//
+typedef struct {
+ tANI_U16 assocId;
+ tANI_U16 staId;
+ tSirMacAddr bssId; // TO SUPPORT BT-AMP
+ // HAL copies bssid from the sta table.
+#ifdef WLAN_SOFTAP_FEATURE
+ tSirMacAddr addr2; //
+ tANI_U16 reasonCode; // To unify the keepalive / unknown A2 / tim-based disa
+#endif
+} tDeleteStaContext, * tpDeleteStaContext;
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_START_SCAN_REQ
+// FIXME - Can we just use tSirMsgQ directly, instead of using this structure?
+//
+typedef struct {
+
+ // Indicates the current scan channel
+ tANI_U8 scanChannel;
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_START_SCAN_REQ is reported here
+ eHalStatus status;
+
+#if defined WLAN_FEATURE_VOWIFI
+ tANI_U32 startTSF[2];
+ tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
+#endif
+} tStartScanParams, * tpStartScanParams;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_END_SCAN_REQ
+// FIXME - Can we just use tSirMsgQ directly, instead of using this structure?
+//
+typedef struct {
+
+ // Indicates the current scan channel
+ tANI_U8 scanChannel;
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_END_SCAN_REQ is reported here
+ eHalStatus status;
+
+} tEndScanParams, * tpEndScanParams;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_FINISH_SCAN_REQ
+//
+typedef struct {
+
+ // Identifies the operational state of the AP/STA.
+ // In case of the STA, only if the operState is non-zero will the rest of
+ // the parameters that follow be decoded
+ // In case of the AP, all parameters are valid
+ //
+ // 0 - Idle state, 1 - Link Established
+
+ eHalSysMode scanMode;
+
+ tSirMacAddr bssid;
+
+ // Current operating channel
+ tANI_U8 currentOperChannel;
+
+ // If 20/40 MHz is operational, this will indicate the 40 MHz extension
+ // channel in combination with the control channel
+ ePhyChanBondState cbState;
+
+ // For an STA, indicates if a Data NULL frame needs to be sent
+ // to the AP with FrameControl.PwrMgmt bit set to 0
+ tANI_U8 notifyBss;
+
+ tANI_U8 notifyHost;
+
+ tANI_U8 frameLength;
+ tANI_U8 frameType; // Data NULL or CTS to self
+
+ // For creation of CTS-to-Self and Data-NULL MAC packets
+ tSirMacMgmtHdr macMgmtHdr;
+
+ tSirScanEntry scanEntry;
+
+ /*
+ * Following parameters are for returning status and station index from HAL to PE
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_FINISH_SCAN_REQ is reported here
+ eHalStatus status;
+
+} tFinishScanParams, * tpFinishScanParams;
+
+#ifdef FEATURE_WLAN_INTEGRATED_SOC
+#endif
+
+typedef struct sBeaconGenStaInfo {
+ tANI_U16 assocId;
+ tANI_U32 staTxAckCnt;
+}tBeaconGenStaInfo, *tpBeaconGenStaInfo;
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_LIM_BEACON_GEN_IND
+//
+
+typedef struct sBeaconGenParams {
+ // Identifies the BSSID for which it is time to generate a beacon
+ tANI_U8 bssIdx;
+ tSirMacAddr bssId;
+#ifdef FIXME_VOLANS
+ tANI_U8 numOfSta; /* Number of stations in power save, who have data pending*/
+ tANI_U8 numOfStaWithoutData; /* Number of stations in power save, who don't have any data pending*/
+ tANI_U8 fBroadcastTrafficPending ;
+ tANI_U8 dtimCount;
+#endif
+ tANI_U8 rsvd[3]; /** Align the Structure to 4 bytes as unalligned access will happen if
+ the staInfo is being Accessed */
+/** NOTE: tBeaconGenStaInfo staInfo[xx]; Depending on the Number of STA in PS, Every time
+ this array is being allocated and piled up at the End*/
+} tBeaconGenParams, * tpBeaconGenParams;
+
+typedef struct {
+ tSirMacAddr bssId;
+ tANI_U8 *beacon; // Beacon data.
+ tANI_U32 beaconLength; //length of the template.
+#ifdef WLAN_SOFTAP_FEATURE
+ tANI_U32 timIeOffset; //TIM IE offset from the beginning of the template.
+#ifdef WLAN_FEATURE_P2P
+ tANI_U16 p2pIeOffset; //P2P IE offset from the begining of the template
+#endif
+#endif
+} tSendbeaconParams, * tpSendbeaconParams;
+
+#ifdef WLAN_SOFTAP_FEATURE
+typedef struct sSendProbeRespParams {
+ tSirMacAddr bssId;
+ tANI_U8 *pProbeRespTemplate;
+ tANI_U32 probeRespTemplateLen;
+ tANI_U32 ucProxyProbeReqValidIEBmap[8];
+} tSendProbeRespParams, * tpSendProbeRespParams;
+#endif
+
+/*
+ * This is used by PE to create a set of WEP keys for a given BSS.
+ */
+typedef struct
+{
+ tANI_U8 bssIdx;
+ tAniEdType encType;
+ tANI_U8 numKeys;
+ tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
+ tANI_U8 singleTidRc; // 1=Single TID based Replay Count, 0=Per TID based RC
+ /*
+ * Following parameter is for returning status
+ * via response message. HAL does not read them.
+ */
+ eHalStatus status; // status of SIR_HAL_SET_BSSKEY_REQ is reported here
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // HAL sends this unmodified in the response
+} tSetBssKeyParams, *tpSetBssKeyParams;
+
+/*
+ * This is used by PE to Remove the key information on a given station.
+ */
+typedef struct
+{
+ tANI_U16 staIdx;
+ tAniEdType encType; // Encryption/Decryption type
+ tANI_U8 keyId;
+ tANI_BOOLEAN unicast;
+ /*
+ * Following parameter is for returning status
+ * via response message. HAL does not read them.
+ */
+ eHalStatus status; // return status of SIR_HAL_REMOVE_STAKEY_REQ
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // HAL Sends back the PE session
+ // id unmodified
+} tRemoveStaKeyParams, *tpRemoveStaKeyParams;
+
+/*
+ * This is used by PE to remove keys for a given BSS.
+ */
+typedef struct
+{
+ tANI_U8 bssIdx;
+ tAniEdType encType;
+ tANI_U8 keyId;
+ tANI_U8 wepType;
+ /*
+ * Following parameter is for returning status
+ * via response message. HAL does not read them.
+ */
+ eHalStatus status; // return status of SIR_HAL_REMOVE_BSSKEY_REQ
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // HAL Sends back the PE session
+ // id unmodified
+} tRemoveBssKeyParams, *tpRemoveBssKeyParams;
+
+typedef struct
+{
+ // index of STA to get the statistics from
+ tANI_U16 staIdx;
+ tANI_U8 encMode;
+ // The return status of SIR_HAL_DPU_STATS_REQ is reported here
+ eHalStatus status;
+ // The return statistics
+ tANI_U32 sendBlocks;
+ tANI_U32 recvBlocks;
+ tANI_U32 replays;
+ tANI_U8 micErrorCnt;
+ tANI_U32 protExclCnt;
+ tANI_U16 formatErrCnt;
+ tANI_U16 unDecryptableCnt;
+ tANI_U32 decryptErrCnt;
+ tANI_U32 decryptOkCnt;
+
+} tDpuStatsParams, * tpDpuStatsParams;
+
+
+/*
+ * Get the DPU signature based on a given staId
+ */
+typedef struct
+{
+ tANI_U16 staIdx;
+ /*
+ * Following parameter is for returning status
+ * via response message. HAL does not read them.
+ */
+ // The return status of SIR_HAL_SET_BSSKEY_REQ is reported here
+ eHalStatus status;
+ tANI_U8 dpuDescIndx;
+ tANI_U8 dpuSignature;
+} tGetDpuParams, *tpGetDpuParams;
+
+
+
+//HAL MSG: SIR_HAL_UPDATE_BEACON_IND
+typedef struct
+{
+
+ tANI_U8 bssIdx;
+
+ //shortPreamble mode. HAL should update all the STA rates when it
+ //receives this message
+ tANI_U8 fShortPreamble;
+ //short Slot time.
+ tANI_U8 fShortSlotTime;
+ //Beacon Interval
+ tANI_U16 beaconInterval;
+ //Protection related
+ tANI_U8 llaCoexist;
+ tANI_U8 llbCoexist;
+ tANI_U8 llgCoexist;
+ tANI_U8 ht20MhzCoexist;
+ tANI_U8 llnNonGFCoexist;
+ tANI_U8 fLsigTXOPProtectionFullSupport;
+ tANI_U8 fRIFSMode;
+
+ tANI_U16 paramChangeBitmap;
+}tUpdateBeaconParams, *tpUpdateBeaconParams;
+
+
+
+//HAL MSG: SIR_HAL_UPDATE_CF_IND
+typedef struct
+{
+
+ tANI_U8 bssIdx;
+
+ /*
+ * cfpCount indicates how many DTIMs (including the current frame) appear before the next CFP start.
+ * A CFPCount of 0 indicates that the current DTIM marks the start of the CFP.
+ */
+ tANI_U8 cfpCount;
+
+ /* cfpPeriod indicates the number of DTIM intervals between the start of CFPs. */
+ tANI_U8 cfpPeriod;
+
+}tUpdateCFParams, *tpUpdateCFParams;
+
+
+
+//HAL MSG: SIR_HAL_UPDATE_DTIM_IND
+//This message not required, as Softmac is supposed to read these values from the beacon.
+//PE should not look at TIM element
+
+/*
+typedef struct
+{
+ tANI_U8 bssIdx;
+
+
+ //The DTIM Count field indicates how many beacons (including the current frame) appear before the next
+ // DTIM. A DTIM Count of 0 indicates that the current TIM is a DTIM.
+ //
+ tANI_U8 dtimCount;
+
+
+ // The DTIM Period field indicates the number of Beacon intervals between successive DTIMs. If all TIMs are
+ // DTIMs, the DTIM Period field has the value 1. The DTIM Period value 0 is reserved.
+ //
+ tANI_U8 dtimPeriod;
+
+}tUpdateDtimParams, *tpUpdateDtimParams;
+*/
+
+
+//HAL MSG: SIR_HAL_CHNL_SWITCH_REQ
+typedef struct
+{
+ tANI_U8 channelNumber;
+#ifndef WLAN_FEATURE_VOWIFI
+ tANI_U8 localPowerConstraint;
+#endif /* WLAN_FEATURE_VOWIFI */
+ tSirMacHTSecondaryChannelOffset secondaryChannelOffset;
+ tANI_U8 peSessionId;
+#if defined WLAN_FEATURE_VOWIFI
+ tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
+ tPowerdBm maxTxPower;
+ tSirMacAddr selfStaMacAddr;
+ //the request has power constraints, this should be applied only to that session
+#endif
+ /* VO Wifi comment: BSSID is needed to identify which session issued this request. As the
+ request has power constraints, this should be applied only to that session */
+ /* V IMP: Keep bssId field at the end of this msg. It is used to mantain backward compatbility
+ * by way of ignoring if using new host/old FW or old host/new FW since it is at the end of this struct
+ */
+ tSirMacAddr bssId;
+
+ eHalStatus status;
+
+}tSwitchChannelParams, *tpSwitchChannelParams;
+
+typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam );
+
+typedef struct sLinkStateParams
+{
+ // SIR_HAL_SET_LINK_STATE
+ tSirMacAddr bssid;
+ tSirMacAddr selfMacAddr;
+ tSirLinkState state;
+ tpSetLinkStateCallback callback;
+ void *callbackArg;
+#ifdef WLAN_FEATURE_VOWIFI_11R
+ int ft;
+ void * session;
+#endif
+} tLinkStateParams, * tpLinkStateParams;
+
+
+typedef struct
+{
+ tANI_U16 staIdx;
+ tANI_U16 tspecIdx; //TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
+ tSirMacTspecIE tspec;
+ eHalStatus status;
+ tANI_U8 sessionId; //PE session id for PE<->HAL interface
+} tAddTsParams, *tpAddTsParams;
+
+typedef struct
+{
+ tANI_U16 staIdx;
+ tANI_U16 tspecIdx; //TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS
+ tSirMacAddr bssId; //TO SUPPORT BT-AMP
+
+} tDelTsParams, *tpDelTsParams;
+
+#ifdef WLAN_FEATURE_VOWIFI_11R
+
+#define HAL_QOS_NUM_TSPEC_MAX 2
+#define HAL_QOS_NUM_AC_MAX 4
+
+typedef struct
+{
+ tANI_U16 staIdx;
+ tANI_U16 tspecIdx; //TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
+ tSirMacTspecIE tspec[HAL_QOS_NUM_AC_MAX];
+ eHalStatus status[HAL_QOS_NUM_AC_MAX];
+ tANI_U8 sessionId; //PE session id for PE<->HAL interface
+}tAggrAddTsParams, *tpAggrAddTsParams;
+
+#endif /* WLAN_FEATURE_VOWIFI_11R */
+
+
+typedef tSirRetStatus (*tHalMsgCallback)(tpAniSirGlobal pMac, tANI_U32 mesgId, void *mesgParam );
+
+
+typedef struct
+{
+ tANI_U16 bssIdx;
+ tANI_BOOLEAN highPerformance;
+ tSirMacEdcaParamRecord acbe; // best effort
+ tSirMacEdcaParamRecord acbk; // background
+ tSirMacEdcaParamRecord acvi; // video
+ tSirMacEdcaParamRecord acvo; // voice
+} tEdcaParams, *tpEdcaParams;
+
+/*
+* Function Prototypes
+*/
+
+eHalStatus halMsg_setPromiscMode(tpAniSirGlobal pMac);
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_ADDBA_REQ
+//
+typedef struct sAddBAParams
+{
+
+ // Station Index
+ tANI_U16 staIdx;
+
+ // Peer MAC Address
+ tSirMacAddr peerMacAddr;
+
+ // ADDBA Action Frame dialog token
+ // HAL will not interpret this object
+ tANI_U8 baDialogToken;
+
+ // TID for which the BA is being setup
+ // This identifies the TC or TS of interest
+ tANI_U8 baTID;
+
+ // 0 - Delayed BA (Not supported)
+ // 1 - Immediate BA
+ tANI_U8 baPolicy;
+
+ // Indicates the number of buffers for this TID (baTID)
+ // NOTE - This is the requested buffer size. When this
+ // is processed by HAL and subsequently by HDD, it is
+ // possible that HDD may change this buffer size. Any
+ // change in the buffer size should be noted by PE and
+ // advertized appropriately in the ADDBA response
+ tANI_U16 baBufferSize;
+
+ // BA timeout in TU's
+ // 0 means no timeout will occur
+ tANI_U16 baTimeout;
+
+ // b0..b3 - Fragment Number - Always set to 0
+ // b4..b15 - Starting Sequence Number of first MSDU
+ // for which this BA is setup
+ tANI_U16 baSSN;
+
+ // ADDBA direction
+ // 1 - Originator
+ // 0 - Recipient
+ tANI_U8 baDirection;
+
+ //
+ // Following parameters are for returning status from
+ // HAL to PE via response message. HAL does not read them
+ //
+ // The return status of SIR_HAL_ADDBA_REQ is reported
+ // in the SIR_HAL_ADDBA_RSP message
+ eHalStatus status;
+
+ // Indicating to HAL whether a response message is required.
+ tANI_U8 respReqd;
+ tANI_U8 sessionId; // PE session id for PE<->HAL interface
+ // HAL Sends back the PE session
+ // id unmodified
+
+} tAddBAParams, * tpAddBAParams;
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_DELBA_IND
+//
+typedef struct sDelBAParams
+{
+
+ // Station Index
+ tANI_U16 staIdx;
+
+ // TID for which the BA session is being deleted
+ tANI_U8 baTID;
+
+ // DELBA direction
+ // 1 - Originator
+ // 0 - Recipient
+ tANI_U8 baDirection;
+
+ // FIXME - Do we need a response for this?
+ // Maybe just the IND/REQ will suffice?
+ //
+ // Following parameters are for returning status from
+ // HAL to PE via response message. HAL does not read them
+ //
+ // The return status of SIR_HAL_DELBA_REQ is reported
+ // in the SIR_HAL_DELBA_RSP message
+ //eHalStatus status;
+
+} tDelBAParams, * tpDelBAParams;
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_SET_MIMOPS_REQ
+//
+typedef struct sSet_MIMOPS
+{
+ // Station Index
+ tANI_U16 staIdx;
+
+ // MIMO Power Save State
+ tSirMacHTMIMOPowerSaveState htMIMOPSState;
+ // The return status of SIR_HAL_SET_MIMOPS_REQ is reported
+ // in the SIR_HAL_SET_MIMOPS_RSP message
+ eHalStatus status;
+ tANI_U8 fsendRsp;
+
+} tSetMIMOPS, * tpSetMIMOPS;
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_EXIT_BMPS_REQ
+//
+typedef struct sExitBmpsParams
+{
+ tANI_U8 sendDataNull;
+ eHalStatus status;
+} tExitBmpsParams, *tpExitBmpsParams;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_ENTER_UAPSD_REQ
+//
+typedef struct sUapsdParams
+{
+ tANI_U8 bkDeliveryEnabled:1;
+ tANI_U8 beDeliveryEnabled:1;
+ tANI_U8 viDeliveryEnabled:1;
+ tANI_U8 voDeliveryEnabled:1;
+ tANI_U8 bkTriggerEnabled:1;
+ tANI_U8 beTriggerEnabled:1;
+ tANI_U8 viTriggerEnabled:1;
+ tANI_U8 voTriggerEnabled:1;
+ eHalStatus status;
+}tUapsdParams, *tpUapsdParams;
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_LIM_DEL_BA_IND
+//
+typedef struct sBADeleteParams
+{
+
+ // Station Index
+ tANI_U16 staIdx;
+
+ // Peer MAC Address, whose BA session has timed out
+ tSirMacAddr peerMacAddr;
+
+ // TID for which a BA session timeout is being triggered
+ tANI_U8 baTID;
+
+ // DELBA direction
+ // 1 - Originator
+ // 0 - Recipient
+ tANI_U8 baDirection;
+
+ tANI_U32 reasonCode;
+
+ tSirMacAddr bssId; // TO SUPPORT BT-AMP
+ // HAL copies the sta bssid to this.
+} tBADeleteParams, * tpBADeleteParams;
+
+
+// Mesg Type = SIR_LIM_ADD_BA_IND
+typedef struct sBaActivityInd
+{
+ tANI_U16 baCandidateCnt;
+ //baCandidateCnt is followed by BA Candidate List ( tAddBaCandidate)
+
+ tSirMacAddr bssId; // TO SUPPORT BT-AMP
+} tBaActivityInd, * tpBaActivityInd;
+
+
+typedef struct tHalIndCB
+{
+
+ tHalMsgCallback pHalIndCB;
+
+}tHalIndCB,*tpHalIndCB;
+
+/** Max number of bytes required for stations bitmap aligned at 4 bytes boundary */
+#define HALMSG_NUMBYTES_STATION_BITMAP(x) (((x / 32) + ((x % 32)?1:0)) * 4)
+
+typedef struct sControlTxParams
+{
+ tANI_BOOLEAN stopTx;
+ /* Master flag to stop or resume all transmission, Once this flag is set,
+ * softmac doesnt look for any other details.
+ */
+ tANI_U8 fCtrlGlobal;
+ /* If this flag is set, staBitmap[] is valid */
+ tANI_U8 ctrlSta;
+ /* If this flag is set, bssBitmap and beaconBitmap is valid */
+ tANI_U8 ctrlBss;
+
+ /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
+ * stopped for resumed for transmission.
+ * This is 32 bit bitmap, not array of bytes.
+ */
+ tANI_U32 bssBitmap;
+ /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
+ * stopped for resumed for beacon transmission.
+ */
+ tANI_U32 beaconBitmap;
+
+ /**
+ * Memory for the station bitmap will be allocated later based on
+ * the number of station supported.
+ */
+} tTxControlParams, * tpTxControlParams;
+
+typedef struct sEnterBmpsParams
+{
+ //TBTT value derived from the last beacon
+ tANI_U8 bssIdx;
+ tANI_U64 tbtt;
+ tANI_U8 dtimCount;
+ //DTIM period given to HAL during association may not be valid,
+ //if association is based on ProbeRsp instead of beacon.
+ tANI_U8 dtimPeriod;
+
+ // For CCX and 11R Roaming
+ tANI_U8 bRssiFilterEnable;
+ tANI_U32 rssiFilterPeriod;
+ tANI_U32 numBeaconPerRssiAverage;
+
+ eHalStatus status;
+ tANI_U8 respReqd;
+}tEnterBmpsParams, *tpEnterBmpsParams;
+
+
+//
+// Mesg header is used from tSirMsgQ
+// Mesg Type = SIR_HAL_SET_MAX_TX_POWER_REQ
+//
+typedef struct sMaxTxPowerParams
+{
+ tSirMacAddr bssId; // BSSID is needed to identify which session issued this request. As
+ //the request has power constraints, this should be applied only to that session
+ tSirMacAddr selfStaMacAddr;
+ //In request,
+ //power == MaxTx power to be used.
+ //In response,
+ //power == tx power used for management frames.
+ tPowerdBm power;
+}tMaxTxPowerParams, *tpMaxTxPowerParams;
+
+typedef struct sAddStaSelfParams
+{
+ tSirMacAddr selfMacAddr;
+
+ tANI_U32 status;
+}tAddStaSelfParams, *tpAddStaSelfParams;
+
+typedef struct sDelStaSelfParams
+{
+ tSirMacAddr selfMacAddr;
+
+ tANI_U32 status;
+}tDelStaSelfParams, *tpDelStaSelfParams;
+
+#ifdef WLAN_FEATURE_P2P
+typedef struct sP2pPsParams
+{
+ tANI_U8 opp_ps;
+ tANI_U32 ctWindow;
+ tANI_U8 count;
+ tANI_U32 duration;
+ tANI_U32 interval;
+ tANI_U32 single_noa_duration;
+ tANI_U8 psSelection;
+}tP2pPsParams, *tpP2pPsParams;
+#endif
+
+#ifdef FEATURE_WLAN_INTEGRATED_SOC
+static inline void halGetTxTSFtimer(tpAniSirGlobal pMac,
+ tSirMacTimeStamp *pTime)
+{
+}
+
+extern void SysProcessMmhMsg(tpAniSirGlobal pMac, tSirMsgQ* pMsg);
+
+/* Beacon Filtering data structures */
+typedef __ani_attr_pre_packed struct sBeaconFilterMsg
+{
+ tANI_U16 capabilityInfo;
+ tANI_U16 capabilityMask;
+ tANI_U16 beaconInterval;
+ tANI_U16 ieNum;
+} __ani_attr_packed tBeaconFilterMsg, *tpBeaconFilterMsg;
+
+typedef __ani_attr_pre_packed struct sEidByteInfo
+{
+ tANI_U8 offset;
+ tANI_U8 value;
+ tANI_U8 bitMask;
+ tANI_U8 ref;
+} __ani_attr_packed tEidByteInfo, *tpEidByteInfo;
+
+
+/* The above structure would be followed by multiple of below mentioned
+structure */
+typedef __ani_attr_pre_packed struct sBeaconFilterIe
+{
+ tANI_U8 elementId;
+ tANI_U8 checkIePresence;
+ tEidByteInfo byte;
+} __ani_attr_packed tBeaconFilterIe, *tpBeaconFilterIe;
+
+typedef __ani_attr_pre_packed struct sRemBeaconFilterMsg
+{
+ tANI_U8 ucIeCount;
+ tANI_U8 ucRemIeId[1];
+} __ani_attr_packed tRemBeaconFilterMsg, *tpRemBeaconFilterMsg;
+
+#endif
+#endif /* _HALMSGAPI_H_ */
+
diff --git a/CORE/WDA/inc/legacy/halTypes.h b/CORE/WDA/inc/legacy/halTypes.h
new file mode 100644
index 0000000..ad7a02b
--- /dev/null
+++ b/CORE/WDA/inc/legacy/halTypes.h
@@ -0,0 +1,435 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/** ------------------------------------------------------------------------- *
+ ------------------------------------------------------------------------- *
+
+
+ \file halTypes.h
+
+ \brief This header captures types that must be shared in common with individual
+ module headers before inclusion into halCommonApi.h.
+
+ $Id$
+
+ Copyright (C) 2006 Airgo Networks, Incorporated
+
+
+ ========================================================================== */
+
+#ifndef HALTYPES_H
+#define HALTYPES_H
+#ifndef WINXP_APPS_BUILD //TODO: this header dependency does not belong in this file
+#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
+#include "wlan_qct_bal.h"
+
+#ifdef WLAN_HAL_VOLANS
+#include "volansDefs.h"
+#else
+#include "libraDefs.h"
+#endif
+#endif
+
+#endif /* WINXP_APPS_BUILD */
+
+#include "palTypes.h"
+#include "wlan_nv.h"
+
+#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
+
+/** ------------------------------------------------------------------------- *
+
+ \typedef tHalHandle
+
+ \brief Handle to the HAL. The HAL handle is returned by the HAL after it
+ is opened (by calling halOpen).
+
+ -------------------------------------------------------------------------- */
+typedef void *tHalHandle;
+
+// define a value for an invalid HAL handle.....
+#define HAL_INVALID_HAL_HANDLE ( NULL )
+
+
+/** ------------------------------------------------------------------------- *
+
+ \enum eHalStatus
+
+ \brief Enumeration of all status codes returned by the higher level
+ HAL interface functions.
+
+ -------------------------------------------------------------------------- */
+typedef enum
+{
+ eHAL_STATUS_SUCCESS,
+
+ // general failure. This status applies to all failure that are not covered
+ // by more specific return codes.
+ eHAL_STATUS_FAILURE,
+ eHAL_STATUS_FAILED_ALLOC,
+ eHAL_STATUS_RESOURCES,
+
+ // the HAL has not been opened and a HAL function is being attempted.
+ eHAL_STATUS_NOT_OPEN,
+
+ // function failed due to the card being removed...
+ eHAL_STATUS_CARD_NOT_PRESENT,
+
+ //halInterrupt status
+ eHAL_STATUS_INTERRUPT_ENABLED,
+ eHAL_STATUS_INTERRUPT_DISABLED,
+ eHAL_STATUS_NO_INTERRUPTS,
+ eHAL_STATUS_INTERRUPT_PRESENT,
+ eHAL_STATUS_ALL_INTERRUPTS_PROCESSED,
+ eHAL_STATUS_INTERRUPT_NOT_PROCESSED, //interrupt cleared but no Isr to process
+
+ // a parameter on the PAL function call is not valid.
+ eHAL_STATUS_INVALID_PARAMETER,
+
+ // the PAL has not been initialized...
+ eHAL_STATUS_NOT_INITIALIZED,
+
+ // Error codes for PE-HAL message API
+ eHAL_STATUS_INVALID_STAIDX,
+ eHAL_STATUS_INVALID_BSSIDX,
+ eHAL_STATUS_STA_TABLE_FULL, // No space to add more STA, sta table full.
+ eHAL_STATUS_BSSID_TABLE_FULL,
+ eHAL_STATUS_DUPLICATE_BSSID,
+ eHAL_STATUS_DUPLICATE_STA,
+ eHAL_STATUS_BSSID_INVALID,
+ eHAL_STATUS_STA_INVALID,
+ eHAL_STATUS_INVALID_KEYID,
+ eHAL_STATUS_INVALID_SIGNATURE,
+
+ //DXE
+ eHAL_STATUS_DXE_FAILED_NO_DESCS,
+ eHAL_STATUS_DXE_CHANNEL_NOT_CONFIG, // Channel not configured
+ eHAL_STATUS_DXE_CHANNEL_MISUSE, // Specified operation inconsistent w/ configuration
+ eHAL_STATUS_DXE_VIRTUAL_MEM_ALLOC_ERROR, //
+ eHAL_STATUS_DXE_SHARED_MEM_ALLOC_ERROR, //
+ eHAL_STATUS_DXE_INVALID_CHANNEL,
+ eHAL_STATUS_DXE_INVALID_CALLBACK,
+ eHAL_STATUS_DXE_INCONSISTENT_DESC_COUNT,
+ eHAL_STATUS_DXE_XFR_QUEUE_ERROR,
+ eHAL_STATUS_DXE_INVALID_BUFFER,
+ eHAL_STATUS_DXE_INCOMPLETE_PACKET,
+ eHAL_STATUS_DXE_INVALID_PARAMETER,
+ eHAL_STATUS_DXE_CH_ALREADY_CONFIGURED,
+ eHAL_STATUS_DXE_USB_INVALID_EP,
+ eHAL_STATUS_DXE_GEN_ERROR,
+
+
+ // status codes added for the ImageValidate library
+ eHAL_STATUS_E_NULL_VALUE,
+ eHAL_STATUS_E_FILE_NOT_FOUND,
+ eHAL_STATUS_E_FILE_INVALID_CONTENT,
+ eHAL_STATUS_E_MALLOC_FAILED,
+ eHAL_STATUS_E_FILE_READ_FAILED,
+ eHAL_STATUS_E_IMAGE_INVALID,
+ eHAL_STATUS_E_IMAGE_UNSUPPORTED,
+
+ // status code returned by device memory calls when memory is
+ // not aligned correctly.
+ eHAL_STATUS_DEVICE_MEMORY_MISALIGNED, // memory access is not aligned on a 4 byte boundary
+ eHAL_STATUS_DEVICE_MEMORY_LENGTH_ERROR, // memory access is not a multiple of 4 bytes
+
+ // Generic status code to indicate network congestion.
+ eHAL_STATUS_NET_CONGESTION,
+
+ // various status codes for Rx packet dropped conditions... Note the Min and Max
+ // enums that bracked the Rx Packet Dropped status codes. There is code that
+ // looks at the various packet dropped conditions so make sure these min / max
+ // enums remain accurate.
+ eHAL_STATUS_RX_PACKET_DROPPED,
+ eHAL_STATUS_RX_PACKET_DROPPED_MIN = eHAL_STATUS_RX_PACKET_DROPPED,
+ eHAL_STATUS_RX_PACKET_DROPPED_NULL_DATA,
+ eHAL_STATUS_RX_PACKET_DROPPED_WDS_FRAME,
+ eHAL_STATUS_RX_PACKET_DROPPED_FILTERED,
+ eHAL_STATUS_RX_PACKET_DROPPED_GROUP_FROM_SELF,
+ eHAL_STATUS_RX_PACKET_DROPPED_MAX = eHAL_STATUS_RX_PACKET_DROPPED_GROUP_FROM_SELF,
+
+ // Status indicating that PMU did not power up and hence indicative of the fact that the clocks are not on
+ eHAL_STATUS_PMU_NOT_POWERED_UP,
+
+ // Queuing code for BA message API
+ eHAL_STATUS_BA_ENQUEUED, // packets have been buffered in Host
+ eHAL_STATUS_BA_INVALID,
+
+ // A-MPDU/BA related Error codes
+ eHAL_STATUS_BA_RX_BUFFERS_FULL,
+ eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED,
+ eHAL_STATUS_BA_RX_INVALID_SESSION_ID,
+
+ // !!LAC - can we rework the code so these are not needed?
+ eHAL_STATUS_BA_RX_DROP_FRAME,
+ eHAL_STATUS_BA_RX_INDICATE_FRAME,
+ eHAL_STATUS_BA_RX_ENQUEUE_FRAME,
+
+ // PMC return codes.
+ eHAL_STATUS_PMC_PENDING,
+ eHAL_STATUS_PMC_DISABLED,
+ eHAL_STATUS_PMC_NOT_NOW,
+ eHAL_STATUS_PMC_AC_POWER,
+ eHAL_STATUS_PMC_SYS_ERROR,
+ eHAL_STATUS_PMC_CANNOT_ENTER_IMPS,
+ eHAL_STATUS_PMC_ALREADY_IN_IMPS,
+
+ eHAL_STATUS_HEARTBEAT_TMOUT,
+ eHAL_STATUS_NTH_BEACON_DELIVERY,
+
+ //CSR
+ eHAL_STATUS_CSR_WRONG_STATE,
+
+ // DPU
+ eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL,
+ eHAL_STATUS_DPU_MICKEY_TABLE_FULL,
+
+ // HAL-FW messages
+ eHAL_STATUS_FW_MSG_FAILURE, // Error in Hal-FW message interface
+ eHAL_STATUS_FW_MSG_TIMEDOUT,
+ eHAL_STATUS_FW_MSG_INVALID,
+ eHAL_STATUS_FW_SEND_MSG_FAILED,
+ eHAL_STATUS_FW_PS_BUSY,
+
+ eHAL_STATUS_TIMER_START_FAILED,
+ eHAL_STATUS_TIMER_STOP_FAILED,
+
+ eHAL_STATUS_TL_SUSPEND_TIMEOUT,
+
+ eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL,
+
+ eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN,
+
+ // not a real status. Just a way to mark the maximum in the enum.
+ eHAL_STATUS_MAX
+
+} eHalStatus;
+
+
+// macro to check for SUCCESS value of the halStatus
+#define HAL_STATUS_SUCCESS( variable ) ( eHAL_STATUS_SUCCESS == ( variable ) )
+
+/// Bit value data structure
+typedef enum sHalBitVal // For Bit operations
+{
+ eHAL_CLEAR,
+ eHAL_SET
+}tHalBitVal;
+
+// -------------------------------------------------------------
+/// MMH APIs
+enum {
+ eHI_PRI,
+ ePROT,
+ eDBG
+};
+
+/// System role definition on a per BSS
+typedef enum eBssSystemRole
+{
+ eSYSTEM_UNKNOWN_ROLE,
+ eSYSTEM_AP_ROLE,
+ eSYSTEM_STA_IN_IBSS_ROLE,
+ eSYSTEM_STA_ROLE,
+ eSYSTEM_BTAMP_STA_ROLE,
+ eSYSTEM_BTAMP_AP_ROLE,
+
+ eSYSTEM_LAST_ROLE,
+ eSYSTEM_MULTI_BSS_ROLE = eSYSTEM_LAST_ROLE
+} tBssSystemRole;
+
+
+// ---------------------------------------
+// Channel Bonding Sideband configuration
+// ---------------------------------------
+typedef enum sHalCBsidebandType
+{
+ eHAL_SIDEBAND_CENTER=0,
+ eHAL_SIDEBAND_LOWER,
+ eHAL_SIDEBAND_UPPER,
+ eHAL_SIDEBAND_COPY
+}tHalCBsidebandType;
+
+
+/// HAL states
+typedef enum {
+ eHAL_IDLE,
+ eHAL_INIT,
+ eHAL_CFG, //CFG download completed.
+ eHAL_STARTED, //halProcessStartEvent compelted.
+ eHAL_SYS_READY, //Sys_ready msg received from HDD.
+ eHAL_NORMAL, //Sys_ready msg received from HDD and halProcessStartEvent completed.
+} tHAL_STATE;
+
+
+
+
+// Type to define softmac mode (also system mode)
+typedef enum
+{
+ //3- Promisc, 2 - Scan, 1 - Learn 0 - Normal
+ eHAL_SYS_MODE_NORMAL = 0,
+ eHAL_SYS_MODE_LEARN,
+ eHAL_SYS_MODE_SCAN,
+ eHAL_SYS_MODE_PROMISC,
+ eHAL_SYS_MODE_SUSPEND_LINK
+} eHalSysMode;
+
+
+
+
+// HAL frame types. Used on the TxRx APIs and the
+// corresponding PAL routines.
+typedef enum {
+
+ HAL_TXRX_FRM_RAW,
+ HAL_TXRX_FRM_ETH2,
+ HAL_TXRX_FRM_802_3,
+ HAL_TXRX_FRM_802_11_MGMT,
+ HAL_TXRX_FRM_802_11_CTRL,
+ HAL_TXRX_FRM_802_11_DATA,
+ HAL_TXRX_FRM_IGNORED, //This frame will be dropped
+ HAL_TXRX_FRM_MAX
+
+} eFrameType;
+
+
+typedef enum
+{
+ ANI_TXDIR_IBSS = 0,
+ ANI_TXDIR_TODS,
+ ANI_TXDIR_FROMDS,
+ ANI_TXDIR_WDS
+
+} eFrameTxDir;
+
+typedef enum
+{
+ eRF_BAND_UNKNOWN = 0,
+ eRF_BAND_2_4_GHZ = 1,
+ eRF_BAND_5_GHZ = 2
+} eRfBandMode;
+
+
+#ifndef __offsetof
+#define __offsetof(type, field) ((tANI_U32)(&((type *)0)->field))
+#endif
+
+#ifndef offsetof
+#define offsetof(type, field) __offsetof(type, field)
+#endif
+
+#ifdef FEATURE_WLAN_INTEGRATED_SOC
+#define HAL_MAX_TXPOWER_INVALID 127
+
+#define MIN_STA_PWR_CAP_DBM 13
+#define MAX_STA_PWR_CAP_DBM 19
+
+/* Moving the miscellaneous defination required by UMAC are moved here from
+ * volansdefs.h */
+/* --------------------------------------------------------------------
+ * Support definitions for taurus
+ * --------------------------------------------------------------------
+ */
+
+/*
+ * Volans supports 8 stations in hardware
+ *
+ * Volans without Virtual STA feature can only support 8 stations:
+ * 1 Broadcast STA (hard)
+ * 1 "Self" STA (hard)
+ * 6 Soft AP Stations (hard)
+ *
+ * Volans with Virtual STA feature supports 14 stations:
+ * 1 Broadcast STA (hard)
+ * 1 "Self" STA (hard)
+ * 2 General Purpose Stations to support Virtual STAs (hard)
+ * 10 Soft AP Stations (4 hard/6 virtual)
+ */
+
+#define HAL_INVALID_BSSIDX HAL_NUM_BSSID+1
+#define HAL_NUM_UMA_DESC_ENTRIES 8
+#define MAX_NUM_OF_BACKOFFS 8
+
+#define IS_VALID_BSSIDX(__x) \
+ ((__x) < HAL_NUM_BSSID)
+
+#ifdef WLAN_SOFTAP_VSTA_FEATURE
+#define HAL_NUM_ASSOC_STA 10
+#define HAL_NUM_STA 14
+#define HAL_NUM_HW_STA 8
+#define HAL_NUM_GPSTA 2
+#define HAL_NUM_VSTA HAL_NUM_STA - HAL_NUM_HW_STA
+
+#define QWLANFW_MAX_NUM_VSTA HAL_NUM_VSTA
+#define QWLANFW_VSTA_INVALID_IDX HAL_NUM_STA+1
+#define QWLAN_VSTA_MIN_IDX HAL_NUM_HW_STA
+#define QWLANFW_NUM_GPSTA HAL_NUM_GPSTA
+
+
+#define IS_VSTA_VALID_IDX(__x) \
+ ((__x) != QWLANFW_VSTA_INVALID_IDX)
+
+#define IS_VSTA_IDX(__x) \
+ (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
+
+
+// is the STA a General Purpose STA?
+#define IS_GPSTA_IDX(__x) \
+ (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
+ ((__x) < HAL_NUM_HW_STA))
+
+// is the STA a HW STA (excluding GP STAs)
+#define IS_HWSTA_IDX(__x) \
+ ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
+
+#else
+/*In prima 12 HW stations are supported including BCAST STA(staId 0)
+ and SELF STA(staId 1) so total ASSOC stations which can connect to Prima
+ SoftAP = 12 - 1(Self STa) - 1(Bcast Sta) = 10 Stations. */
+#define HAL_NUM_STA 12
+#define HAL_NUM_ASSOC_STA 10
+#define HAL_NUM_HW_STA 12
+#endif
+
+/*
+ * From NOVA Mac Arch document
+ * Encryp. mode The encryption mode
+ * 000: Encryption functionality is not enabled
+ * 001: Encryption is set to WEP
+ * 010: Encryption is set to WEP 104
+ * 011: Encryption is set to TKIP
+ * 100: Encryption is set to AES
+ * 101 - 111: Reserved for future
+ */
+
+#define HAL_ENC_POLICY_NULL 0
+#define HAL_ENC_POLICY_WEP40 1
+#define HAL_ENC_POLICY_WEP104 2
+#define HAL_ENC_POLICY_TKIP 3
+#define HAL_ENC_POLICY_AES_CCM 4
+
+#define STACFG_MAX_TC 8
+
+#endif
+
+#endif
+
diff --git a/CORE/WDA/inc/legacy/palTypes.h b/CORE/WDA/inc/legacy/palTypes.h
new file mode 100644
index 0000000..31a590c
--- /dev/null
+++ b/CORE/WDA/inc/legacy/palTypes.h
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/*
+ * */
+#if !defined( PALTYPES_H__ )
+#define PALTYPES_H__
+
+/** ------------------------------------------------------------------------- *
+ ------------------------------------------------------------------------- *
+
+
+ \file palTypes.h
+
+ \brief Exports and types for the Platform Abstraction Layer typedefs.
+ These are common typedefs that can be used across Platforms (OS/compiler
+ and bus types). All common code should adhere to these common types.
+
+ $Id$
+
+ Copyright (C) 2006 Airgo Networks, Incorporated
+
+ ... description...
+
+ ========================================================================== */
+#ifndef WINXP_APPS_BUILD
+#include "vos_types.h"
+#include "vos_api.h"
+#endif /* WINXP_APPS_BUILD */
+
+#ifdef FEATURE_WLAN_INTEGRATED_SOC
+#include "halLegacyPalTypes.h"
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#ifndef MK_IMAGE_HDR
+// values to check against for code that is Client/AP specific.
+// the build will define one of the following:
+// ANI_PRODUCT_TYPE_CLIENT
+// ANI_PRODUCT_TYPE_AP
+// ANI_PRODUCT_TYPE_AP_SDK
+//
+// Validate the Product type being built....
+//
+#if ( defined( ANI_PRODUCT_TYPE_CLIENT ) && ( defined( ANI_PRODUCT_TYPE_AP ) || defined( ANI_PRODUCT_TYPE_AP_SDK ) ) )
+#error "more than one ANI_PRODUCT_TYPE_xxx is defined for this build"
+
+#elif ( defined( ANI_PRODUCT_TYPE_AP ) && ( defined( ANI_PRODUCT_TYPE_CLIENT ) || defined( ANI_PRODUCT_TYPE_AP_SDK ) ) )
+#error "more than one ANI_PRODUCT_TYPE_xxx is defined for this build"
+
+#elif ( defined( ANI_PRODUCT_TYPE_AP_SDK ) && ( defined( ANI_PRODUCT_TYPE_CLIENT ) || defined( ANI_PRODUCT_TYPE_AP ) ) )
+#error "more than one ANI_PRODUCT_TYPE_xxx is defined for this build"
+
+#elif !( defined( ANI_PRODUCT_TYPE_CLIENT ) || defined( ANI_PRODUCT_TYPE_AP ) || defined( ANI_PRODUCT_TYPE_AP_SDK ) )
+#error "NONE of the ANI_PRODUCT_TYPE_xxxx are defined for this build"
+
+#endif
+
+
+//
+// Validate the Bus type being built....
+//
+#if defined(ANI_BUS_TYPE_PCI)
+
+#if defined( ANI_BUS_TYPE_PCIe ) || defined( ANI_BUS_TYPE_USB ) || defined(ANI_BUS_TYPE_SDIO) || defined( ANI_BUS_TYPE_PLATFORM )
+#error "more than one ANI_BUS_TYPE_xxx is defined for this build"
+#endif //
+
+#elif defined( ANI_BUS_TYPE_PCIe )
+
+#if defined( ANI_BUS_TYPE_PCI ) || defined( ANI_BUS_TYPE_USB ) || defined(ANI_BUS_TYPE_SDIO) || defined( ANI_BUS_TYPE_PLATFORM )
+#error "more than one ANI_BUS_TYPE_xxx is defined for this build"
+#endif
+
+#elif defined( ANI_BUS_TYPE_USB )
+
+#if defined( ANI_BUS_TYPE_PCIe ) || defined( ANI_BUS_TYPE_PCI ) || defined(ANI_BUS_TYPE_SDIO) || defined( ANI_BUS_TYPE_PLATFORM )
+#error "more than one ANI_BUS_TYPE_xxx is defined for this build"
+#endif
+
+#elif defined( ANI_BUS_TYPE_SDIO )
+
+#if defined( ANI_BUS_TYPE_PCIe ) || defined( ANI_BUS_TYPE_USB ) || defined(ANI_BUS_TYPE_PCI) || defined( ANI_BUS_TYPE_PLATFORM )
+#error "more than one ANI_BUS_TYPE_xxx is defined for this build"
+#endif
+
+#elif defined( ANI_BUS_TYPE_PLATFORM )
+
+#if defined( ANI_BUS_TYPE_PCIe ) || defined( ANI_BUS_TYPE_USB ) || defined(ANI_BUS_TYPE_PCI) || defined( ANI_BUS_TYPE_SDIO )
+#error "more than one ANI_BUS_TYPE_xxx is defined for this build"
+#endif
+
+#elif !( defined( ANI_BUS_TYPE_PCIe ) || defined( ANI_BUS_TYPE_USB ) || defined(ANI_BUS_TYPE_PCI) || defined(ANI_BUS_TYPE_SDIO) || defined( ANI_BUS_TYPE_PLATFORM ) )
+
+#error "NONE of the ANI_BUS_TYPE_xxx are defined for this build"
+
+#endif
+
+
+//
+// Validate the OS Type being built...
+//
+#if ( defined( ANI_OS_TYPE_WINDOWS ) && defined( ANI_OS_TYPE_LINUX ) && defined(ANI_OS_TYPE_OSX) && defined(ANI_OS_TYPE_AMSS) && \
+ defined( ANI_OS_TYPE_ANDROID ) )
+#error "more than one ANI_OS_TYPE_xxx is defined for this build"
+
+#elif !( defined( ANI_OS_TYPE_WINDOWS ) || defined( ANI_OS_TYPE_LINUX ) || defined(ANI_OS_TYPE_OSX) || defined(ANI_OS_TYPE_AMSS) \
+ || defined (ANI_OS_TYPE_ANDROID) )
+#error "NONE of the ANI_OS_TYPE_xxx are defined for this build"
+
+#endif
+
+
+//
+// Validate the compiler...
+//
+#if ( defined( ANI_COMPILER_TYPE_MSVC ) && defined( ANI_COMPILER_TYPE_GCC ) && defined( ANI_COMPILER_TYPE_RVCT ) )
+#error "more than one ANI_COMPILER_TYPE_xxx is defined for this build"
+
+#elif !( defined( ANI_COMPILER_TYPE_MSVC ) || defined( ANI_COMPILER_TYPE_GCC ) || defined( ANI_COMPILER_TYPE_RVCT ) )
+#error "NONE of the ANI_COMPILER_TYPE_xxx are defined for this build"
+
+#endif
+
+
+
+// some differences related to the compiler being used...
+#if defined ( ANI_COMPILER_TYPE_GCC )
+
+#define ANI_INLINE_FUNCTION static __inline__
+
+#elif defined( ANI_COMPILER_TYPE_MSVC )
+
+#define ANI_INLINE_FUNCTION __inline
+
+#elif defined( ANI_COMPILER_TYPE_RVCT )
+
+#define ANI_INLINE_FUNCTION INLINE
+
+#else
+
+#error "invalid ANI_COMPILER_TYPE definition"
+
+#endif
+#endif
+
+
+
+
+// Common type definitions...
+
+#ifndef FEATURE_WLAN_INTEGRATED_SOC
+typedef unsigned char tANI_U8;
+typedef signed char tANI_S8;
+
+typedef unsigned short tANI_U16;
+typedef signed short tANI_S16;
+
+typedef unsigned long tANI_U32;
+typedef signed long tANI_S32;
+
+#if defined ANI_OS_TYPE_WINDOWS
+typedef unsigned __int64 tANI_U64;
+#else
+typedef unsigned long long tANI_U64;
+#endif
+
+typedef tANI_U8 tANI_BYTE;
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#if defined( ANI_OS_TYPE_WINDOWS )
+#if defined(_WIN64)
+ typedef unsigned __int64 tANI_U32_OR_PTR;
+#else
+ typedef unsigned long tANI_U32_OR_PTR;
+#endif
+#else
+typedef tANI_U32 tANI_U32_OR_PTR;
+#endif
+
+// Buffer address; could be virt or phys; could be 32- or 64-bit depending on compile option
+typedef tANI_U32_OR_PTR tANI_BUFFER_ADDR;
+// which boolean is the most usefule...or both ?
+#ifndef FEATURE_WLAN_INTEGRATED_SOC
+typedef tANI_U8 tANI_BOOLEAN;
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+typedef enum tagAniBoolean
+{
+ eANI_BOOLEAN_FALSE = 0,
+ eANI_BOOLEAN_TRUE,
+
+ eANI_BOOLEAN_OFF = 0,
+ eANI_BOOLEAN_ON = 1,
+} eAniBoolean;
+
+
+
+//
+// MAC address data type...
+//
+// review the usefulness of this type. I suspect this type is not
+// real useful unless we provide some 'helper' functions to manage
+// the MAC addresses.
+//
+#define ANI_MAC_ADDR_SIZE ( 6 )
+typedef tANI_U8 tAniMacAddr[ ANI_MAC_ADDR_SIZE ];
+
+
+
+
+
+/** ------------------------------------------------------------------------- *
+
+ \typedef tHddHandle
+
+ \brief Handle to the HDD. The HDD handle is given to the HAL from
+ the HDD on halOpen. The HDD handle is an input to all HDD/PAL function
+ calls and represents an opaque handle to the HDD instance that is tied
+ to the HAL instance, opened through halOpen.
+
+ The HDD must be able to derive it's internal instance structure pointer
+ through this handle. hint hint...
+
+ -------------------------------------------------------------------------- */
+typedef void *tHddHandle;
+// define a value for an invalid HAL handle.....
+#define HDD_INVALID_HDD_HANDLE ( NULL )
+
+
+// For packet classification routines
+#define PAL_BIT_MASK(offset) (1 << (offset))
+#define PAL_PKT_FLD_DSCP_OFFSET 0
+#define PAL_PKT_FLD_8021P_OFFSET 1
+
+#define PAL_PKT_FLD_DSCP_MASK PAL_BIT_MASK(PAL_PKT_FLD_DSCP_OFFSET)
+#define PAL_PKT_FLD_8021P_MASK PAL_BIT_MASK(PAL_PKT_FLD_8021P_OFFSET)
+
+#if defined( ANI_OS_TYPE_WINDOWS ) || defined (ANI_OS_TYPE_OSX)
+ #define PAL_PKT_FLD_8021P_BIT_OFFSET 0
+#elif defined( ANI_OS_TYPE_LINUX )
+ #define PAL_PKT_FLD_8021P_BIT_OFFSET 5
+#elif defined( ANI_OS_TYPE_AMSS )
+ #define PAL_PKT_FLD_8021P_BIT_OFFSET 0
+#endif
+
+
+/*
+This represent an object for a spin lock and it is platform dependant
+*/
+//User of this variable must initialize it to PAL_INVALID_SPINLOCK_HANDLE in order for validation to work.
+typedef void * tPalSpinLockHandle;
+
+#define PAL_INVALID_SPINLOCK_HANDLE (NULL)
+
+/*
+ * This represent an object for a semaphore and it is platform dependant
+ */
+typedef void * tPalSemaphoreHandle;
+
+
+#define PAL_TICKS_PER_SECOND 100
+
+#ifndef FEATURE_WLAN_INTEGRATED_SOC
+typedef tANI_U32 tANI_TIMESTAMP;
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+#endif
diff --git a/CORE/WDA/inc/legacy/wlan_qct_hal.h b/CORE/WDA/inc/legacy/wlan_qct_hal.h
new file mode 100644
index 0000000..6117279
--- /dev/null
+++ b/CORE/WDA/inc/legacy/wlan_qct_hal.h
@@ -0,0 +1,592 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/*
+ * Qualcomm, Inc proprietary. All rights reserved.
+ *
+ * Date Modified by Modification Information
+ * --------------------------------------------------------------------
+ */
+#ifndef WLAN_QCT_HAL_H
+#define WLAN_QCT_HAL_H
+#include "vos_status.h"
+#include "halTypes.h"
+#ifndef PALTYPES_H__
+
+
+/// unsigned 8-bit types
+#define tANI_U8 v_U8_t
+
+/// unsigned 16-bit types
+#define tANI_U16 v_U16_t
+
+/// unsigned 32-bit types
+#define tANI_U32 v_U32_t
+
+/// signed 8-bit types
+#define tANI_S8 v_S7_t
+
+/// signed 16-bit types
+#define tANI_S16 v_S15_t
+
+/// signed 32-bit types
+#define tANI_S32 v_S31_t
+
+#define eHalStatus VOS_STATUS
+
+#endif
+#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
+#include "halBdDefs.h"
+#endif
+#define QWLAN_HAL_DXE0_MASTERID 5
+
+typedef struct sHalBdGeneric {
+ /* 0x00 */
+ // ENDIAN BEGIN
+ tANI_U32 dpuRF : 8;
+ tANI_U32 dpuSignature:3; /* Signature on RA's DPU descriptor */
+ tANI_U32 staSignature:3;
+ tANI_U32 reserved : 14;
+ tANI_U32 dpuNE : 1;
+ tANI_U32 dpuNC : 1;
+ tANI_U32 bdt : 2; /* BD type */
+ // ENDIAN END
+
+ /* 0x04 */
+ // ENDIAN BEGIN
+ tANI_U32 reserved1:32;
+ // ENDIAN END
+
+
+ /* 0x08 */
+ // ENDIAN BEGIN
+ tANI_U32 headPduIdx : 16; /* Head PDU index */
+ tANI_U32 tailPduIdx : 16; /* Tail PDU index */
+ // ENDIAN END
+
+ /* 0x0c */
+ // ENDIAN BEGIN
+ tANI_U32 mpduHeaderLength : 8; /* MPDU header length */
+ tANI_U32 mpduHeaderOffset : 8; /* MPDU header start offset */
+ tANI_U32 mpduDataOffset : 9; /* MPDU data start offset */
+ tANI_U32 pduCount : 7; /* PDU count */
+ // ENDIAN END
+
+ /* 0x10 */
+ // ENDIAN BEGIN
+ tANI_U32 mpduLength : 16; /* MPDU length */
+ tANI_U32 reserved3:4; /* DPU compression feedback */
+ tANI_U32 tid : 4; /* Traffic identifier, tid */
+ tANI_U32 rateIndex : 8;
+ // ENDIAN END
+
+ /* 0x14 */
+ // ENDIAN BEGIN
+ tANI_U32 dpuDescIdx : 8;
+ tANI_U32 addr1Index : 8; //A1 index after RxP binary search
+ tANI_U32 addr2Index : 8; //A2 index after RxP binary search
+ tANI_U32 addr3Index : 8; //A3 index after RxP binary search
+ // ENDIAN END
+//}__ani_attr_packed __ani_attr_aligned_4 tHalBdGeneric, *tpHalBdGeneric;
+} tHalBdGeneric, *tpHalBdGeneric;
+
+
+/*
+ * PDU without BD
+ */
+
+typedef struct sHalPdu {
+ tANI_U8 payload[124];
+ tANI_U32 nextPduIdx; /* LSB 16 bits */
+//} __ani_attr_packed __ani_attr_aligned_4 tHalPdu, *tpHalPdu;
+} tHalPdu, *tpHalPdu;
+
+#ifdef FEATURE_WLAN_UAPSD_FW_TRG_FRAMES
+/* UAPSD parameters passed per AC to HAL from TL */
+typedef struct sUapsdInfo {
+ tANI_U8 staidx; // STA index
+ tANI_U8 ac; // Access Category
+ tANI_U8 up; // User Priority
+ tANI_U32 srvInterval; // Service Interval
+ tANI_U32 susInterval; // Suspend Interval
+ tANI_U32 delayInterval; // Delay Interval
+} tUapsdInfo, tpUapsdInfo;
+#endif
+
+#define HAL_TXBD_BDRATE_DEFAULT 0
+#define HAL_TXBD_BDRATE_FIRST 1
+#define HAL_TXBD_BDRATE_SECOND 2
+#define HAL_TXBD_BDRATE_THIRD 3
+
+#define HAL_FRAME_TYPE_MASK 0x30
+#define HAL_FRAME_TYPE_OFFSET 0x4
+#define HAL_FRAME_SUBTYPE_MASK 0x0F
+
+#define HAL_TXBD_BD_SSN_FILL_HOST 0
+#define HAL_TXBD_BD_SSN_FILL_DPU_NON_QOS 1
+#define HAL_TXBD_BD_SSN_FILL_DPU_QOS 2
+
+#define HAL_ACKPOLICY_ACK_REQUIRED 0
+#define HAL_ACKPOLICY_ACK_NOTREQUIRED 1
+
+#define HAL_BDRATE_BCDATA_FRAME 1
+#define HAL_BDRATE_BCMGMT_FRAME 2
+#define HAL_BDRATE_CTRL_FRAME 3
+
+/* Default values for FillTx BD */
+#define HAL_DEFAULT_UNICAST_ENABLED 1
+#define HAL_RMF_DISABLED 0
+#define HAL_RMF_ENABLED 1
+#define HAL_NO_ENCRYPTION_DISABLED 0
+#define HAL_NO_ENCRYPTION_ENABLED 1
+
+#define WLANHAL_RX_BD_ADDR3_SELF_IDX 0
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+// Should not use tHalTxBd nor tHalRxBd. UMAC doesn't know these HAL structure.
+#define WLANHAL_TX_BD_HEADER_SIZE 40
+#define WLANHAL_RX_BD_HEADER_SIZE 76
+#else
+#define WLANHAL_TX_BD_HEADER_SIZE sizeof(tHalTxBd)
+#define WLANHAL_RX_BD_HEADER_SIZE sizeof(tHalRxBd)
+#endif
+
+
+#define WLANHAL_RX_BD_HEADER_OFFSET 0
+
+#define WLANHAL_RX_BD_GET_MPDU_H_OFFSET( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->mpduHeaderOffset)
+
+#define WLANHAL_RX_BD_GET_MPDU_D_OFFSET( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->mpduDataOffset)
+
+#define WLANHAL_RX_BD_GET_MPDU_LEN( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->mpduLength)
+
+#define WLANHAL_RX_BD_GET_MPDU_H_LEN( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->mpduHeaderLength)
+
+#define WLANHAL_RX_BD_GET_FT( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->ft)
+
+#define WLANHAL_RX_BD_GET_LLC( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->llc)
+
+#define WLANHAL_RX_BD_GET_TID( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->tid)
+
+#define WLANHAL_RX_BD_GET_ASF( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->asf)
+
+#define WLANHAL_RX_BD_GET_AEF( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->aef)
+
+#define WLANHAL_RX_BD_GET_LSF( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->lsf)
+
+#define WLANHAL_RX_BD_GET_ESF( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->esf)
+
+#define WLANHAL_RX_BD_GET_STA_ID( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->addr2Index)
+#define WLANHAL_RX_BD_GET_ADDR3_IDX( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->addr3Index)
+#define WLANHAL_RX_BD_GET_ADDR1_IDX( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->addr1Index)
+
+#define WLANHAL_TX_BD_GET_TID( _pvBDHeader ) (((tpHalTxBd)_pvBDHeader)->tid)
+#define WLANHAL_TX_BD_GET_STA_ID( _pvBDHeader ) (((tpHalTxBd)_pvBDHeader)->staIndex)
+
+#define WLANHAL_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->dpuSignature)
+
+#ifdef WLAN_SOFTAP_FEATURE
+#define WLANHAL_FC_RX_BD_REPORT_CONTENT_SIZE 2*HAL_NUM_STA*sizeof(tANI_U8) // size of fcSTATxQLen[HAL_NUM_STA]+fcSTACurTxRate[HAL_NUM_STA]
+#define WLANHAL_FC_TX_BD_HEADER_SIZE sizeof(tHalFcTxBd)
+#define WLANHAL_RX_BD_GET_FC( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->fc)
+#define WLANHAL_RX_BD_GET_RX_TIME_STAMP( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->mclkRxTimestamp)
+#define WLANHAL_RX_BD_GET_STA_VALID_MASK( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->fcSTAValidMask)
+#define WLANHAL_RX_BD_GET_STA_PS_STATE( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->fcSTAPwrSaveStateMask)
+#define WLANHAL_RX_BD_GET_STA_TH_IND( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->fcSTAThreshIndMask)
+#define WLANHAL_RX_BD_GET_STA_TXQ_STATUS( _pvBDHeader ) (((tpHalFcRxBd)_pvBDHeader)->fcSTATxQStatus)
+#define WLANHAL_RX_BD_GET_STA_TXQ_LEN( _pvBDHeader, staIdx ) (((tpHalFcRxBd)_pvBDHeader)->fcSTATxQLen[staIdx])
+#define WLANHAL_RX_BD_GET_STA_CUR_TX_RATE( _pvBDHeader, staIdx ) (((tpHalFcRxBd)_pvBDHeader)->fcSTACurTxRate[staIdx])
+
+#define WLANHAL_TX_BD_GET_RMF(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->rmf)
+
+#define WLANHAL_TX_BD_GET_UB(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->ub)
+
+#define WLANHAL_RX_BD_GET_RMF(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->rmf)
+
+#define WLANHAL_RX_BD_GET_UB(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->ub)
+
+#define WLANHAL_RX_BD_GET_RATEINDEX(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->rateIndex)
+
+#define WLANHAL_RX_BD_GET_TIMESTAMP(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->mclkRxTimestamp)
+
+#define tHalFcRxBd halFcRxBd_type
+#define tpHalFcRxBd phalFcRxBd_type
+#define tHalFcTxBd halFcTxBd_type
+#define tpHalFcTxBd pHalFcTxBd_type
+#define tHalFcTxParams tFcTxParams_type
+#define tHalFcRxParams tFcRxParams_type
+#define tpHalFcTxParams pFcTxParams_type
+#define tpHalFcRxParams pFcRxParams_type
+#endif
+
+/*------------ RSSI and SNR Information extraction -------------*/
+#define WLANHAL_RX_BD_GET_RSSI0( _pvBDHeader ) \
+ (((((tpHalRxBd)_pvBDHeader)->phyStats0) >> 24) & 0xff)
+#define WLANHAL_RX_BD_GET_RSSI1( _pvBDHeader ) \
+ (((((tpHalRxBd)_pvBDHeader)->phyStats0) >> 16) & 0xff)
+#define WLANHAL_RX_BD_GET_RSSI2( _pvBDHeader ) \
+ (((((tpHalRxBd)_pvBDHeader)->phyStats0) >> 0) & 0xff)
+#define WLANHAL_RX_BD_GET_RSSI3( _pvBDHeader ) \
+ ((((tpHalRxBd)_pvBDHeader)->phyStats0) & 0xff)
+
+// Get the average of the 4 values.
+#define WLANHAL_GET_RSSI_AVERAGE( _pvBDHeader ) \
+ (((WLANHAL_RX_BD_GET_RSSI0(_pvBDHeader)) + \
+ (WLANHAL_RX_BD_GET_RSSI1(_pvBDHeader)) + \
+ (WLANHAL_RX_BD_GET_RSSI2(_pvBDHeader)) + \
+ (WLANHAL_RX_BD_GET_RSSI3(_pvBDHeader))) / 4)
+
+// Get the SNR value from PHY Stats
+#define WLANHAL_RX_BD_GET_SNR( _pvBDHeader ) \
+ (((((tpHalRxBd)_pvBDHeader)->phyStats1) >> 24) & 0xff)
+/*-----------------------------------------------------------------*/
+#define WLANHAL_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->dpuSignature)
+
+
+#define WLANHAL_TX_BD_SET_MPDU_DATA_OFFSET( _bd, _off ) (((tpHalTxBd)_bd)->mpduDataOffset = _off)
+
+#define WLANHAL_TX_BD_SET_MPDU_HEADER_OFFSET( _bd, _off ) (((tpHalTxBd)_bd)->mpduHeaderOffset = _off)
+
+#define WLANHAL_TX_BD_SET_MPDU_HEADER_LEN( _bd, _len ) (((tpHalTxBd)_bd)->mpduHeaderLength = _len)
+
+#define WLANHAL_TX_BD_SET_MPDU_LEN( _bd, _len ) (((tpHalTxBd)_bd)->mpduLength = _len)
+
+#define WLANHAL_RX_BD_GET_BA_OPCODE(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->reorderOpcode)
+
+#define WLANHAL_RX_BD_GET_BA_FI(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->reorderFwdIdx)
+
+#define WLANHAL_RX_BD_GET_BA_SI(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->reorderSlotIdx)
+
+#define WLANHAL_RX_BD_GET_BA_CSN(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->currentPktSeqNo)
+
+#define WLANHAL_RX_BD_GET_BA_ESN(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->expectedPktSeqNo)
+
+#define WLANHAL_RX_BD_GET_RXP_FLAGS(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->rxpFlags)
+
+#define WLANHAL_RX_BD_GET_TYPE_SUBTYPE(_pvBDHeader) (((tpHalRxBd)_pvBDHeader)->frameTypeSubtype)
+#define WLANHAL_RX_BD_SET_TYPE_SUBTYPE( _bd, _typeSubtype ) (((tpHalRxBd)_bd)->frameTypeSubtype = _typeSubtype)
+
+#ifdef WLAN_HAL_VOLANS
+/*Macros to extract 48-bit replay counter when replay check is done at host in volans*/
+#define WLANHAL_RX_BD_GET_PMICMD_20TO23(_pvBDHeader) ((((tpHalRxBd)_pvBDHeader)->pmiCmd4to23[4]))
+#define WLANHAL_RX_BD_GET_UC_BC( _pvBDHeader ) (((tpHalRxBd)_pvBDHeader)->ub)
+#define WLANHAL_RX_BD_GET_PMICMD_24TO25(_pvBDHeader) ((((tpHalRxBd)_pvBDHeader)->pmiCmd24to25))
+#endif
+
+#define WLANHAL_RX_BD_ASF_SET 1 /*The value of the field when set and pkt is AMSDU*/
+
+#define WLANHAL_RX_BD_FSF_SET 1
+
+#define WLANHAL_RX_BD_LSF_SET 1
+
+#define WLANHAL_RX_BD_AEF_SET 1
+
+
+#define WLANHAL_RX_BD_LLC_PRESENT 0 /*The value of the field when LLC is present*/
+
+#define WLANHAL_RX_BD_FT_DONE 1 /* The value of the field when frame xtl was done*/
+
+#ifdef FEATURE_WLAN_NON_INTEGRATED_SOC
+//Check whether a RX frame is unprotected over the air
+#if defined(LIBRA_WAPI_SUPPORT)
+#define WLANHAL_RX_IS_UNPROTECTED_WPI_FRAME(_pvBDHeader) \
+ (((tpHalRxBd)_pvBDHeader)->uef)
+
+#else
+#define WLANHAL_RX_IS_UNPROTECTED_WPI_FRAME(_pvBDHeader) \
+ (DPU_FEEDBACK_WPI_UNPROTECTED == ((tpHalRxBd)_pvBDHeader)->dpuFeedback)
+#endif
+#else
+/*DPU_FEEDBACK_WPI_UNPROTECTED macro defined in volansdefs.h which is not available
+ for UMAC in prima so declared it here */
+#define DPU_FEEDBACK_WPI_UNPROTECTED 0x20
+#define WLANHAL_RX_IS_UNPROTECTED_WPI_FRAME(_pvBDHeader) \
+ (DPU_FEEDBACK_WPI_UNPROTECTED == ((WDI_RxBdType *)_pvBDHeader)->dpuFeedback)
+#endif
+
+/*==========================================================================
+
+ FUNCTION WLANHAL_RxBD_GetFrameTypeSubType
+
+ DESCRIPTION
+ Called by TL to retrieve the type/subtype of the received frame.
+
+ DEPENDENCIES
+ TL should pass a valid RxBD buffer pointer.
+
+ PARAMETERS
+
+ IN
+ pvBDHeader: Void pointer to the RxBD buffer.
+ usFrmCtrl:the frame ctrl of the 802.11 header
+
+ RETURN VALUE
+ A byte which contains both type and subtype info. LSB four bytes (b0 to b3)
+ is subtype and b5-b6 is type info.
+
+ SIDE EFFECTS
+
+============================================================================*/
+
+tANI_U8 WLANHAL_RxBD_GetFrameTypeSubType(v_PVOID_t _pvBDHeader, tANI_U16 usFrmCtrl);
+
+
+#define HAL_TXCOMP_REQUESTED_MASK 0x1 //bit 0 for TxComp intr requested.
+#define HAL_USE_SELF_STA_REQUESTED_MASK 0x2 //bit 1 for STA overwrite with selfSta Requested.
+#define HAL_TX_NO_ENCRYPTION_MASK 0x4 //bit 2. If set, the frame is not to be encrypted
+#if defined(LIBRA_WAPI_SUPPORT)
+#define HAL_WAPI_STA_MASK 0x8 //bit 3. If set, this frame is for WAPI station
+#endif
+
+#ifdef FEATURE_WLAN_UAPSD_FW_TRG_FRAMES
+#define HAL_TRIGGER_ENABLED_AC_MASK 0x10 //bit 4 for data frames belonging to trigger enabled AC
+#endif
+#define HAL_USE_NO_ACK_REQUESTED_MASK 0x20
+
+#define HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 // Bit 6 will be used to control BD rate for Management frames
+
+/*==========================================================================
+
+ FUNCTION WLANHAL_FillTxBd
+
+ DESCRIPTION
+ Called by PE to register as a client for management frames delivery.
+
+ DEPENDENCIES
+ TL must be initialized before this API can be called.
+
+ PARAMETERS
+
+ IN
+ pAdapter: pointer to the global adapter context;a handle to TL's
+ control block can be extracted from its context
+ vosFrmBuf: pointer to a vOSS buffer containing the management
+ frame to be transmitted
+ usFrmLen: the length of the frame to be transmitted; information
+ is already included in the vOSS buffer
+ wFrmType: the type of the frame being transmitted
+ tid: tid used to transmit this frame
+ pfnCompTxFunc: function pointer to the transmit complete routine
+ voosBDHeader: pointer to the BD header
+ txFlag: can have appropriate bit setting as required
+
+ #define HAL_TXCOMP_REQUESTED_MASK 0x1 //bit 0 for TxComp intr requested.
+ #define HAL_USE_SELF_STA_REQUESTED_MASK 0x2 //bit 1 for STA overwrite with selfSta Requested.
+ #define HAL_TX_NO_ENCRYPTION_MASK 0x4 //bit 2. If set, the frame is not to be encrypted
+#if defined(FEATURE_WLAN_WAPI)
+ #define HAL_WAPI_STA_MASK 0x8 //bit 3. If set, this frame is for WAPI station
+#endif
+
+ uTimestamp: pkt timestamp
+
+
+ RETURN VALUE
+ The result code associated with performing the operation
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS WLANHAL_FillTxBd(void *pAdaptor, tANI_U8 typeSubtype, void *pDestMacAddr, void *pAddr2,
+ tANI_U8* ptid, tANI_U8 disableFrmXtl, void *pTxBd, tANI_U8 txFlag, tANI_U32 timeStamp);
+
+#ifdef WLAN_SOFTAP_FEATURE
+VOS_STATUS WLANHAL_FillFcTxBd(void *pVosGCtx, void *pFcParams, void *pFcTxBd);
+/** To swap the report part of FC RxBD */
+void WLANHAL_SwapFcRxBd(tANI_U8 *pBd);
+#endif
+
+/* To swap the data */
+void WLANHAL_Swap32Bytes(tANI_U8* pData, tANI_U32 size);
+
+/** To swap the RxBD */
+void WLANHAL_SwapRxBd(tANI_U8 *pBd);
+void WLANHAL_RxAmsduBdFix(void *pVosGCtx,v_PVOID_t _pvBDHeader);
+
+#ifdef WLAN_PERF
+tANI_U32 WLANHAL_TxBdFastFwd(void *pAdaptor, tANI_U8 *pDestMac, tANI_U8 tid, tANI_U8 unicastDst, void *pTxBd, tANI_U16);
+#endif
+
+#ifdef FEATURE_WLAN_UAPSD_FW_TRG_FRAMES
+VOS_STATUS WLANHAL_EnableUapsdAcParams(void* pVosGCtx, tANI_U8 staIdx, tUapsdInfo *pUapsdInfo);
+VOS_STATUS WLANHAL_DisableUapsdAcParams(void* pVosGCtx, tANI_U8 staIdx, tANI_U8 ac);
+#endif
+
+VOS_STATUS WLANHAL_EnableIdleBdPduInterrupt(void* pVosGCtx, tANI_U8 idleBdPduThreshold);
+
+#ifdef FEATURE_ON_CHIP_REORDERING
+tANI_U8 WLANHAL_IsOnChipReorderingEnabledForTID(void* pVosGCtx, tANI_U8 staIdx, tANI_U8 tid);
+#endif
+
+#ifdef WLAN_SOFTAP_VSTA_FEATURE
+v_BOOL_t WLANHAL_IsHwFrameTxTranslationCapable(v_PVOID_t pVosGCtx, tANI_U8 staIdx);
+#endif
+
+#define tHalRxBd halRxBd_type
+#define tpHalRxBd phalRxBd_type
+
+#define tHalTxBd halTxBd_type
+#define tpHalTxBd pHalTxBd_type
+
+#ifdef BA_PARAM_STRUCTURE
+#else
+#define BA_PARAM_STRUCTURE
+//
+// HAL --> TL
+// Messages indicating the setup and/or teardown of
+// A-MPDU/BA sessions with a given peer HT MAC entity
+//
+
+//
+// A data structure identifying all of the variables
+// in a typical A-MPDU/BA setup
+//
+typedef struct sBAParams
+{
+
+ // A unique BA Session ID that has been assigned by HAL
+ // for the curent BA Session
+ tANI_U16 baSessionID;
+
+ // TID for which the BA session has been setup
+ tANI_U8 baTID;
+
+ // BA Buffer Size allocated for the current BA session //Should be deleted. needs TL change. use winSize instead
+ tANI_U8 baBufferSize;
+
+ tANI_U16 SSN;
+ tANI_U8 winSize;
+ tANI_U8 STAID;
+
+} tBAParams, *tpBAParams;
+
+//
+// TL -> HAL
+// tSirMsgQ.type = SIR_HAL_HDD_ADDBA_RSP
+//
+typedef struct sAddBARsp
+{
+ // Message Type
+ tANI_U16 mesgType;
+
+ // Message Length
+ tANI_U16 mesgLen;
+
+ //BA session ID
+ tANI_U16 baSessionID;
+
+ tANI_U16 replyWinSize;
+}tAddBARsp, *tpAddBARsp;
+
+//
+// HAL -> TL
+// tSirMsgQ.type = SIR_HAL_ADDBA_IND
+// tSirMsgQ.reserved = 0
+// tSirMsgQ.body = "allocated" instance of tpAddBAInd
+//
+typedef struct sAddBAInd
+{
+
+ // Message Type
+ tANI_U16 mesgType;
+
+ // Message Length
+ tANI_U16 mesgLen;
+
+ tBAParams baSession;
+
+} tAddBAInd, *tpAddBAInd;
+
+//
+// HAL -> TL
+// tSirMsgQ.type = SIR_HAL_DELBA_IND
+// tSirMsgQ.reserved = 0
+// tSirMsgQ.body = "allocated" instance of tpDelBAInd
+//
+// TL -> HAL
+// tSirMsgQ.type = SIR_HAL_BA_FAIL_IND
+// tSirMsgQ.reserved = 0
+// tSirMsgQ.body = "allocated" instance of tpDelBAInd
+//
+typedef struct sDelBAInd
+{
+ tANI_U8 staIdx;
+
+ tANI_U8 baTID;
+ // Message Type
+ tANI_U16 mesgType;
+
+ // Message Length
+ tANI_U16 mesgLen;
+
+} tDelBAInd, *tpDelBAInd;
+#endif
+
+/*===============================================
+ *
+ * TL <-> HAL structures
+ *
+ *===============================================
+ */
+//
+// TL -> HAL
+// tSirMsgQ.type = SIR_HAL_TL_FLUSH_AC_REQ
+//
+typedef struct sFlushACReq
+{
+ // Message Type
+ tANI_U16 mesgType;
+
+ // Message Length
+ tANI_U16 mesgLen;
+
+ // Station Index. originates from HAL
+ tANI_U8 ucSTAId;
+
+ // TID for which the transmit queue is being flushed
+ tANI_U8 ucTid;
+
+} tFlushACReq, *tpFlushACReq;
+
+//
+//
+// HAL -> TL
+// tSirMsgQ.type = SIR_HAL_TL_FLUSH_AC_RSP
+//
+typedef struct sFlushACRsp
+{
+ // Message Type
+ tANI_U16 mesgType;
+
+ // Message Length
+ tANI_U16 mesgLen;
+
+ // Station Index. originates from HAL
+ tANI_U8 ucSTAId;
+
+ // TID for which the transmit queue is being flushed
+ tANI_U8 ucTid;
+
+ // status of the Flush operation
+ tANI_U8 status;
+} tFlushACRsp, *tpFlushACRsp;
+
+#endif
+
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
new file mode 100644
index 0000000..4a0fa59
--- /dev/null
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -0,0 +1,2025 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+#ifndef WLAN_QCT_WDA_H
+#define WLAN_QCT_WDA_H
+
+/*===========================================================================
+
+ W L A N DEVICE ADAPTATION L A Y E R
+ E X T E R N A L A P I
+
+
+DESCRIPTION
+ This file contains the external API exposed by the wlan adaptation layer for Prima
+ and Volans.
+
+ For Volans this layer is actually a thin layer that maps all WDA messages and
+ functions to equivalent HAL messages and functions. The reason this layer was introduced
+ was to keep the UMAC identical across Prima and Volans. This layer provides the glue
+ between SME, PE , TL and HAL.
+
+ Copyright (c) 2008 QUALCOMM Incorporated. All Rights Reserved.
+ Qualcomm Confidential and Proprietary
+===========================================================================*/
+
+
+/*===========================================================================
+
+ EDIT HISTORY FOR FILE
+
+
+ This section contains comments describing changes made to the module.
+ Notice that changes are listed in reverse chronological order.
+
+
+ $Header:$ $DateTime: $ $Author: $
+
+
+when who what, where, why
+-------- --- ----------------------------------------------
+10/05/2011 haparna Adding support for Keep Alive Feature
+01/27/2011 rnair Adding WDA support for Volans.
+12/08/2010 seokyoun Move down HAL interfaces from TL to WDA
+ for UMAC convergence btween Volans/Libra and Prima
+08/25/2010 adwivedi WDA Context and exposed API's
+=========================================================================== */
+
+#include "aniGlobal.h"
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+
+# include "wlan_qct_wdi_ds.h"
+
+#else
+
+# include "sirParams.h"
+# include "limGlobal.h"
+# include "halTypes.h"
+# include "wlan_qct_bal.h"
+# include "wlan_qct_hal.h"
+/* This header is for ADD and remove BA session */
+# include "halCommonApi.h"
+
+#endif
+
+/* Add Include */
+
+typedef enum
+{
+ WDA_INIT_STATE,
+ WDA_START_STATE,
+ WDA_READY_STATE,
+ WDA_PRE_ASSOC_STATE,
+ WDA_BA_UPDATE_TL_STATE,
+ WDA_BA_UPDATE_LIM_STATE,
+ WDA_STOP_STATE,
+ WDA_CLOSE_STATE
+}WDA_state;
+
+typedef enum
+{
+ WDA_PROCESS_SET_LINK_STATE,
+ WDA_IGNORE_SET_LINK_STATE
+}WDA_processSetLinkStateStatus;
+
+typedef enum
+{
+ WDA_DISABLE_BA,
+ WDA_ENABLE_BA
+}WDA_BaEnableFlags;
+
+typedef enum
+{
+ WDA_INVALID_STA_INDEX,
+ WDA_VALID_STA_INDEX
+}WDA_ValidStaIndex;
+
+#if defined( FEATURE_WLAN_NON_INTEGRATED_SOC )
+#if !defined( VOS_MQ_ID_WDA )
+#define VOS_MQ_ID_WDA VOS_MQ_ID_HAL
+#endif
+#endif
+/*--------------------------------------------------------------------------
+ Utilities
+ --------------------------------------------------------------------------*/
+
+#define WDA_TLI_CEIL( _a, _b) (( 0 != (_a)%(_b))? (_a)/(_b) + 1: (_a)/(_b))
+
+/*
+ * Check the version number and find if MCC feature is supported or not
+ */
+#define IS_MCC_SUPPORTED (WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual( 0, 1, 1, 0))
+
+/*--------------------------------------------------------------------------
+ Definitions for Data path APIs
+ --------------------------------------------------------------------------*/
+
+/*As per 802.11 spec */
+#define WDA_TLI_MGMT_FRAME_TYPE 0x00
+#define WDA_TLI_CTRL_FRAME_TYPE 0x10
+#define WDA_TLI_DATA_FRAME_TYPE 0x20
+
+/*802.3 header definitions*/
+#define WDA_TLI_802_3_HEADER_LEN 14
+/*802.11 header definitions - header len without QOS ctrl field*/
+#define WDA_TLI_802_11_HEADER_LEN 24
+
+/*Determines the header len based on the disable xtl field*/
+#define WDA_TLI_MAC_HEADER_LEN( _dxtl) \
+ ( ( 0 == _dxtl )? \
+ WDA_TLI_802_3_HEADER_LEN:WDA_TLI_802_11_HEADER_LEN )
+
+/* TX channel enum type:
+
+ We have five types of TX packets so far and want to block/unblock each
+ traffic individually according to, for example, low resouce condition.
+ Define five TX channels for UMAC here. WDA can map these logical
+ channels to physical DXE channels if needed.
+*/
+typedef enum
+{
+ WDA_TXFLOW_AC_BK = 0,
+ WDA_TXFLOW_AC_BE = 1,
+ WDA_TXFLOW_AC_VI = 2,
+ WDA_TXFLOW_AC_VO = 3,
+ WDA_TXFLOW_MGMT = 4,
+ WDA_TXFLOW_BAP = 1, /* BAP is sent as BE */
+ WDA_TXFLOW_FC = 1, /* FC is sent as BE */
+ WDA_TXFLOW_MAX
+} WDA_TXFlowEnumType;
+
+#define WDA_TXFLOWMASK 0x1F /* 1~4bit:low priority ch / 5bit: high */
+
+/* ---------------------------------------------------------------------
+ Libra and Volans specifics
+
+ TODO Consider refactoring it and put it into two separate headers,
+ one for Prima and one for Volans
+
+ feturized with FEATURE_WLAN_INTEGRATED_SOC for Prima
+ ----------------------------------------------------------------------*/
+
+/* For backward compatability with SDIO. It's BAL header size for SDIO
+ interface. It's nothing for integrated SOC */
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#define WDA_DXE_HEADER_SIZE 0
+#else /* FEATURE_WLAN_INTEGRATED_SOC */
+#define WDA_DXE_HEADER_SIZE WLAN_BAL_DXE_HEADER_SIZE
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#else /* FEATURE_WLAN_INTEGRATED_SOC */
+/*Libra PDU size*/
+#define WDA_TLI_PDU_RES_SIZE 124
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+/*Minimum resources needed - arbitrary*/
+
+/*DXE + SD*/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#define WDA_WLAN_LIBRA_HEADER_LEN 20+8
+#else /* FEATURE_WLAN_INTEGRATED_SOC */
+#define WLAN_LIBRA_HEADER_LEN 20+8
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#define WDA_TLI_BD_PDU_RESERVE_THRESHOLD 10
+#else /* FEATURE_WLAN_INTEGRATED_SOC */
+#define WDA_TLI_BD_PDU_RESERVE_THRESHOLD 150
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_TLI_MIN_RES_MF 1
+# define WDA_TLI_MIN_RES_BAP 2
+# define WDA_TLI_MIN_RES_DATA 3
+#else
+# define WDA_TLI_MIN_RES_MF 13 /*Keeping for MF*/
+# define WDA_TLI_MIN_RES_BAP WDA_TLI_MIN_RES_MF + 13 /*Another for BAP*/
+# define WDA_TLI_MIN_RES_DATA WDA_TLI_MIN_RES_BAP + 13 /*Min 12 for data*/
+# define WLANTL_TH_RES_DATA 254
+#endif
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_NUM_STA 8
+#else
+# define WDA_NUM_STA HAL_NUM_STA
+#endif
+
+/* For backward compatability with SDIO.
+
+ For SDIO interface, calculate the TX frame length and number of PDU
+ to transfter the frame.
+
+ _vosBuff: IN VOS pakcet buffer pointer
+ _usPktLen: OUT VOS packet length in bytes
+ _uResLen: OUT Number of PDU to hold this VOS packet
+ _uTotalPktLen: OUT Totoal packet length including BAL header size
+
+ For integrated SOC, _usPktLen and _uTotalPktLen is VOS pakcet length
+ which does include BD header length. _uResLen is hardcoded 2.
+ */
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+
+#ifdef WINDOWS_DT
+#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
+ _uResLen, _uTotalPktLen) \
+ do \
+ { \
+ _usPktLen = wpalPacketGetFragCount((wpt_packet*)_vosBuff) + 1/*BD*/;\
+ _uResLen = _usPktLen; \
+ _uTotalPktLen = _usPktLen; \
+ } \
+ while ( 0 )
+#else /* WINDOWS_DT */
+#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
+ _uResLen, _uTotalPktLen) \
+ do \
+ { \
+ _usPktLen = 2; /* Need 1 descriptor per a packet + packet*/ \
+ _uResLen = 2; /* Assume that we spends two DXE descriptor */ \
+ _uTotalPktLen = _usPktLen; \
+ } \
+ while ( 0 )
+#endif /* WINDOWS_DT */
+
+#else /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#define WLANTL_PDU_RES_SIZE 124 /*Libra PDU size*/
+#define WLAN_LIBRA_BD_HEADER_LEN 128 /*The lenght of the tx BD header*/
+
+/*Minimum resources needed - arbitrary*/
+
+/*DXE + SD*/
+#define WLAN_LIBRA_HEADER_LEN 20+8
+
+#define WLANTL_MAX_MSDU 1538
+
+#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
+ _uResLen, _uTotalPktLen) \
+ do \
+ { \
+ vos_pkt_get_packet_length( _vosBuff, &_usPktLen ); \
+ _uResLen = WDA_TLI_CEIL( (_usPktLen - WLAN_LIBRA_BD_HEADER_LEN), \
+ WLANTL_PDU_RES_SIZE ) + 1/*The BD*/; \
+ _uTotalPktLen = _usPktLen + WLAN_BAL_DXE_HEADER_SIZE; \
+ } \
+ while ( 0 )
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+
+/*--------------------------------------------------------------------------
+ Message Definitions
+ --------------------------------------------------------------------------*/
+
+/* TX Tranmit request message. It serializes TX request to TX thread.
+ The message is processed in TL.
+*/
+#define WDA_DS_TX_START_XMIT WLANTL_TX_START_XMIT
+#define WDA_DS_FINISH_ULA WLANTL_FINISH_ULA
+
+
+#define WDA_TX_PACKET_FREED 0X0
+
+/* Approximate amount of time to wait for WDA to stop WDI */
+#define WDA_STOP_TIMEOUT (WDI_RESPONSE_TIMEOUT + WDI_SET_POWER_STATE_TIMEOUT + 5)
+/*--------------------------------------------------------------------------
+ Functions
+ --------------------------------------------------------------------------*/
+
+/* For data client */
+typedef VOS_STATUS (*WDA_DS_TxCompleteCallback) ( v_PVOID_t pContext, vos_pkt_t *pFrameDataBuff, VOS_STATUS txStatus );
+typedef VOS_STATUS (*WDA_DS_RxPacketCallback) ( v_PVOID_t pContext, vos_pkt_t *pFrameDataBuff );
+typedef v_U32_t (*WDA_DS_TxPacketCallback) ( v_PVOID_t pContext,
+ vos_pkt_t **ppFrameDataBuff,
+ v_U32_t uSize,
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+ v_U8_t uFlowMask,
+#endif
+ v_BOOL_t *pbUrgent );
+typedef VOS_STATUS (*WDA_DS_ResourceCB) ( v_PVOID_t pContext, v_U32_t uCount );
+
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+/* For management client */
+typedef VOS_STATUS (*WDA_DS_TxCompleteCb)( v_PVOID_t pContext, wpt_packet *pFrame );
+typedef VOS_STATUS (*WDA_DS_RxCompleteCb)( v_PVOID_t pContext, wpt_packet *pFrame );
+typedef VOS_STATUS (*WDA_DS_TxFlowControlCb)( v_PVOID_t pContext, v_U8_t acMask );
+typedef void (*pWDATxRxCompFunc)( v_PVOID_t pContext, void *pData );
+
+//callback function for TX complete
+//parameter 1 - global pMac pointer
+//parameter 2 - txComplete status : 1- success, 0 - failure.
+typedef eHalStatus (*pWDAAckFnTxComp)(tpAniSirGlobal, tANI_U32);
+
+typedef struct
+{
+ tANI_U16 ucValidStaIndex ;
+ /*
+ * each bit in ucUseBaBitmap represent BA is enabled or not for this tid
+ * tid0 ..bit0, tid1..bit1 and so on..
+ */
+ tANI_U8 ucUseBaBitmap ;
+ tANI_U8 bssIdx;
+ tANI_U32 framesTxed[STACFG_MAX_TC];
+}tWdaStaInfo, *tpWdaStaInfo ;
+
+/* group all the WDA timers into this structure */
+typedef struct
+{
+ /* BA activity check timer */
+ TX_TIMER baActivityChkTmr ;
+
+ /* Tx Complete Timeout timer */
+ TX_TIMER TxCompleteTimer ;
+}tWdaTimers ;
+
+#define WDA_MAX_STA (16)
+
+typedef struct
+{
+ v_PVOID_t pVosContext; /* global VOSS context*/
+ v_PVOID_t pWdiContext; /* WDI context */
+ WDA_state wdaState ; /* WDA state tracking */
+ v_PVOID_t wdaMsgParam ; /* PE parameter tracking */
+ v_PVOID_t wdaWdiApiMsgParam ; /* WDI API paramter tracking */
+ v_PVOID_t wdaWdiCfgApiMsgParam ; /* WDI API paramter tracking */
+ vos_event_t wdaWdiEvent; /* WDI API sync event */
+
+ /* Event to wait for tx completion */
+ vos_event_t txFrameEvent;
+
+ /* call back function for tx complete*/
+ pWDATxRxCompFunc pTxCbFunc;
+ /* call back function for tx packet ack */
+ pWDAAckFnTxComp pAckTxCbFunc;
+ tANI_U32 frameTransRequired;
+ tSirMacAddr macBSSID; /*BSSID of the network */
+ tSirMacAddr macSTASelf; /*Self STA MAC*/
+
+ /* TX channel mask for flow control */
+ v_U8_t uTxFlowMask;
+ /* TL's TX resource callback */
+ WDA_DS_ResourceCB pfnTxResourceCB;
+ /* TL's TX complete callback */
+ WDA_DS_TxCompleteCallback pfnTxCompleteCallback;
+
+ tWdaStaInfo wdaStaInfo[WDA_MAX_STA];
+
+ tANI_U8 wdaMaxSta;
+ tWdaTimers wdaTimers;
+
+ /* STA, AP, IBSS, MULTI-BSS etc.*/
+ tBssSystemRole wdaGlobalSystemRole;
+
+ /* driver mode, PRODUCTION or FTM */
+ tDriverType driverMode;
+
+#ifdef ANI_MANF_DIAG
+ /* FTM Command Request tracking */
+ v_PVOID_t wdaFTMCmdReq;
+#endif /* ANI_MANF_DIAG */
+
+ /* Event to wait for suspend data tx*/
+ vos_event_t suspendDataTxEvent;
+ /* Status frm TL after suspend/resume Tx */
+ tANI_U8 txStatus;
+ /* Flag set to true when TL suspend timesout.*/
+ tANI_U8 txSuspendTimedOut;
+
+ vos_event_t waitOnWdiIndicationCallBack;
+
+ /* version information */
+ tSirVersionType wcnssWlanCompiledVersion;
+ tSirVersionType wcnssWlanReportedVersion;
+ tSirVersionString wcnssSoftwareVersionString;
+ tSirVersionString wcnssHardwareVersionString;
+
+
+ tSirLinkState linkState;
+ /* set, when BT AMP session is going on */
+ v_BOOL_t wdaAmpSessionOn;
+ v_U32_t VosPacketToFree;
+} tWDA_CbContext ;
+
+typedef struct
+{
+ v_PVOID_t pWdaContext; /* pointer to WDA context*/
+ v_PVOID_t wdaMsgParam; /* PE parameter tracking */
+ v_PVOID_t wdaWdiApiMsgParam; /* WDI API paramter tracking */
+} tWDA_ReqParams;
+
+/*
+ * FUNCTION: WDA_open
+ * open WDA context
+ */
+
+VOS_STATUS WDA_open(v_PVOID_t pVosContext, v_PVOID_t pOSContext,
+ tMacOpenParameters *pMacParams ) ;
+
+/*
+ * FUNCTION: WDA_preStart
+ * Trigger DAL-AL to start CFG download
+ */
+VOS_STATUS WDA_start(v_PVOID_t pVosContext) ;
+
+VOS_STATUS WDA_NVDownload_Start(v_PVOID_t pVosContext);
+
+/*
+ * FUNCTION: WDA_preStart
+ * Trigger WDA to start CFG download
+ */
+VOS_STATUS WDA_preStart(v_PVOID_t pVosContext) ;
+/*
+ * FUNCTION: WDA_stop
+ * stop WDA
+ */
+VOS_STATUS WDA_stop(v_PVOID_t pVosContext,tANI_U8 reason);
+
+/*
+ * FUNCTION: WDA_close
+ * close WDA context
+ */
+VOS_STATUS WDA_close(v_PVOID_t pVosContext);
+/*
+ * FUNCTION: WDA_shutdown
+ * Shutdown will not close the control transport, added by SSR
+ */
+VOS_STATUS WDA_shutdown(v_PVOID_t pVosContext, wpt_boolean closeTransport);
+
+/*
+ * FUNCTION: WDA_McProcessMsg
+ * DAL-AL message processing entry function
+ */
+
+VOS_STATUS WDA_McProcessMsg( v_CONTEXT_t pVosContext, vos_msg_t *pMsg ) ;
+
+/* -----------------------------------------------------------------
+ * WDA data path API's
+ * ----------------------------------------------------------------*/
+/*
+ * FUNCTION: WDA_MgmtDSRegister
+ * Send Message back to PE
+ */
+
+VOS_STATUS WDA_MgmtDSRegister(tWDA_CbContext *pWDA,
+ WDA_DS_TxCompleteCb WDA_TxCompleteCallback,
+ WDA_DS_RxCompleteCb WDA_RxCompleteCallback,
+ WDA_DS_TxFlowControlCb WDA_TxFlowCtrlCallback
+ ) ;
+/*
+ * FUNCTION: WDA_MgmtDSTxPacket
+ * Forward TX management frame to WDI
+ */
+
+VOS_STATUS WDA_TxPacket(tWDA_CbContext *pWDA,
+ void *pFrmBuf,
+ tANI_U16 frmLen,
+ eFrameType frmType,
+ eFrameTxDir txDir,
+ tANI_U8 tid,
+ pWDATxRxCompFunc pCompFunc,
+ void *pData,
+ pWDAAckFnTxComp pAckTxComp,
+ tANI_U8 txFlag);
+
+/*
+ * FUNCTION: WDA_PostMsgApi
+ * API fpr PE to post Message to WDA
+ */
+VOS_STATUS WDA_PostMsgApi(tpAniSirGlobal pMac, tSirMsgQ *pMsg) ;
+
+/* ---------------------------------------------------------
+ * FUNCTION: wdaGetGlobalSystemRole()
+ *
+ * Get the global HAL system role.
+ * ---------------------------------------------------------
+ */
+tBssSystemRole wdaGetGlobalSystemRole(tpAniSirGlobal pMac);
+
+/* maximum wait time for WDA complete event (correct value has to be derived)
+ * for now giving the value 1000 ms */
+#define WDA_WDI_COMPLETION_TIME_OUT 30000 /* in ms */
+
+#define WDA_TL_TX_FRAME_TIMEOUT 10000 /* in msec a very high upper limit of 5,000 msec */
+#define WDA_TL_SUSPEND_TIMEOUT 2000 /* in ms unit */
+
+/*Tag used by WDA to mark a timed out frame*/
+#define WDA_TL_TX_MGMT_TIMED_OUT 0xDEAD
+
+#define WDA_TL_TX_SUSPEND_SUCCESS 0
+#define WDA_TL_TX_SUSPEND_FAILURE 1
+
+// FIXME Temporary value for R33D integaration
+//#define WDA_TL_TX_FRAME_TIMEOUT 20000 /* in msec a very high upper limit */
+
+#endif /* FEATURE_WLAN_INTEGRATED_SOC */
+
+#if defined( FEATURE_WLAN_NON_INTEGRATED_SOC )
+#if !defined( wdaGetGlobalSystemRole )
+#define wdaGetGlobalSystemRole halGetGlobalSystemRole
+#endif
+#endif
+
+/* ---------------------------------------------------------------------------
+
+ RX Meta info access for Integrated SOC
+ RX BD header access for NON Integrated SOC
+
+ These MACRO are for RX frames that are on flat buffers
+
+ ---------------------------------------------------------------------------*/
+
+/* WDA_GET_RX_MAC_HEADER *****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MAC_HEADER(pRxMeta) \
+ (tpSirMacMgmtHdr)( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderPtr )
+#else
+# define WDA_GET_RX_MAC_HEADER(bdHd) SIR_MAC_BD_TO_MPDUHEADER(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDUHEADER3A ****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDUHEADER3A(pRxMeta) \
+ (tpSirMacDataHdr3a)( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderPtr )
+#else
+# define WDA_GET_RX_MPDUHEADER3A(bdHd) SIR_MAC_BD_TO_MPDUHEADER3A(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDU_HEADER_LEN *************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderLength )
+#else
+# define WDA_GET_RX_MPDU_HEADER_LEN(bdHd) WLANHAL_RX_BD_GET_MPDU_H_LEN(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDU_LEN ********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDU_LEN(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduLength )
+#else
+# define WDA_GET_RX_MPDU_LEN(bdHd) WLANHAL_RX_BD_GET_MPDU_LEN(bdHd)
+#endif
+
+/* WDA_GET_RX_PAYLOAD_LEN ****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_PAYLOAD_LEN(pRxMeta) \
+ ( WDA_GET_RX_MPDU_LEN(pRxMeta) - WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta) )
+#else
+# define WDA_GET_RX_PAYLOAD_LEN(bdHd) SIR_MAC_BD_TO_PAYLOAD_LEN(bdHd)
+#endif
+
+/* WDA_GET_RX_MAC_RATE_IDX ***************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MAC_RATE_IDX(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->rateIndex )
+#else
+# define WDA_GET_RX_MAC_RATE_IDX(bdHd) SIR_MAC_BD_TO_RATE_INDEX(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDU_DATA ******************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDU_DATA(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduDataPtr )
+#else
+# define WDA_GET_RX_MPDU_DATA(bdHd) SIR_MAC_BD_TO_MPDUDATA(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDU_DATA_OFFSET ***********************************************/
+// For Integrated SOC: When UMAC receive the packet. BD is already stripped off.
+// Data offset is the MPDU header length
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDU_DATA_OFFSET(pRxMeta) WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta)
+#else
+# define WDA_GET_RX_MPDU_DATA_OFFSET(bdHd) \
+ WLANHAL_RX_BD_GET_MPDU_D_OFFSET(bdHd)
+#endif
+
+/* WDA_GET_RX_MPDU_HEADER_OFFSET *********************************************/
+// For Integrated SOC: We UMAC receive the frame,
+// BD is gone and MAC header at offset 0
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_MPDU_HEADER_OFFSET(pRxMeta) 0
+#else
+# define WDA_GET_RX_MPDU_HEADER_OFFSET(bdHd) WLANHAL_RX_BD_GET_MPDU_H_OFFSET(bdHd)
+#endif
+
+/* WDA_GET_RX_UNKNOWN_UCAST **************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_UNKNOWN_UCAST(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->unknownUcastPkt )
+#else
+# define WDA_GET_RX_UNKNOWN_UCAST(bdHd) SIR_MAC_BD_IS_UNKNOWN_UCAST_FRAME(bdHd)
+#endif
+
+/* WDA_GET_RX_TID ************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_TID(pRxMeta) ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->tid )
+#else
+# define WDA_GET_RX_TID(bdHd) WLANHAL_RX_BD_GET_TID(bdHd)
+#endif
+
+/* WDA_GET_RX_STAID **********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_STAID(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->staId)
+#else
+# define WDA_GET_RX_STAID(bdHd) WLANHAL_RX_BD_GET_STA_ID(bdHd)
+#endif
+
+/* WDA_GET_RX_ADDR3_IDX ******************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_ADDR3_IDX(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->addr3Idx)
+#else
+# define WDA_GET_RX_ADDR3_IDX(bdHd) WLANHAL_RX_BD_GET_ADDR3_IDX(bdHd)
+#endif
+
+/* WDA_GET_RX_CH *************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_CH(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxChannel)
+#else
+# define WDA_GET_RX_CH(bdHd) SIR_MAC_BD_TO_RX_CHANNEL(bdHd)
+#endif
+
+/* WDA_GET_RX_DPUSIG *********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_DPUSIG(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->dpuSig)
+#else
+# define WDA_GET_RX_DPUSIG(bdHd) WLANHAL_RX_BD_GET_DPU_SIG(bdHd)
+#endif
+
+/* WDA_IS_RX_BCAST ***********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_IS_RX_BCAST(pRxMeta) \
+ ( (1 == ((WDI_DS_RxMetaInfoType*)(pRxMeta))->bcast) ? VOS_TRUE : VOS_FALSE )
+#else
+# define WDA_IS_RX_BCAST(bdHd) \
+ ( ( 0xFF == WLANHAL_RX_BD_GET_ADDR1_IDX(bdHd)) ? VOS_TRUE : VOS_FALSE )
+#endif
+
+/* WDA_GET_RX_FT_DONE ********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FT_DONE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ft)
+#else
+# define WDA_GET_RX_FT_DONE(bdHd) WLANHAL_RX_BD_GET_FT(bdHd)
+#endif
+
+/* WDA_GET_RX_DPU_FEEDBACK **************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_DPU_FEEDBACK(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->dpuFeedback)
+#endif
+
+/* WDA_GET_RX_ASF ************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_ASF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_asf)
+#else
+# define WDA_GET_RX_ASF(bdHd) WLANHAL_RX_BD_GET_ASF(bdHd)
+#endif
+
+/* WDA_GET_RX_AEF ************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_AEF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_aef)
+#else
+# define WDA_GET_RX_AEF(bdHd) WLANHAL_RX_BD_GET_AEF(bdHd)
+#endif
+
+/* WDA_GET_RX_ESF ************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_ESF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_esf)
+#else
+# define WDA_GET_RX_ESF(bdHd) WLANHAL_RX_BD_GET_ESF(bdHd)
+#endif
+
+/* WDA_GET_RX_BEACON_SENT ****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_BEACON_SENT(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->bsf)
+#else
+# define WDA_GET_RX_BEACON_SENT(bdHd) SIR_MAC_BD_TO_IBSS_BCN_SENT(bdHd)
+#endif
+
+/* WDA_GET_RX_TSF_LATER *****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_TSF_LATER(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rtsf)
+#else
+# define WDA_GET_RX_TSF_LATER(bdHd) SIR_MAC_BD_TO_IBSS_TSF_LATER(bdHd)
+#endif
+
+/* WDA_GET_RX_TYPE ***********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_TYPE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->type)
+#else
+# define WDA_GET_RX_TYPE(bdHd) \
+ ( ( WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd) & 0x30 ) >> 4 )
+#endif
+
+/* WDA_GET_RX_SUBTYPE ********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_SUBTYPE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->subtype)
+#else
+# define WDA_GET_RX_SUBTYPE(bdHd) ( WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd) & 0x0F )
+#endif
+
+/* WDA_GET_RX_TYPE_SUBTYPE ****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_TYPE_SUBTYPE(pRxMeta) \
+ ((WDA_GET_RX_TYPE(pRxMeta)<<4)|WDA_GET_RX_SUBTYPE(pRxMeta))
+#else
+# define WDA_GET_RX_TYPE_SUBTYPE(bdHd) WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd)
+#endif
+
+/* WDA_GET_RX_REORDER_OPCODE : For MSDU reorder *******************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_REORDER_OPCODE(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderOpcode)
+#else
+# define WDA_GET_RX_REORDER_OPCODE(bdHd) WLANHAL_RX_BD_GET_BA_OPCODE(bdHd)
+#endif
+
+/* WDA_GET_RX_REORDER_SLOT_IDX : For MSDU reorder ****************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_REORDER_SLOT_IDX(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderSlotIdx)
+#else
+# define WDA_GET_RX_REORDER_SLOT_IDX(bdHd) WLANHAL_RX_BD_GET_BA_SI(bdHd)
+#endif
+
+/* WDA_GET_RX_REORDER_FWD_IDX : For MSDU reorder *****************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_REORDER_FWD_IDX(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderFwdIdx)
+#else
+# define WDA_GET_RX_REORDER_FWD_IDX(bdHd) WLANHAL_RX_BD_GET_BA_FI(bdHd)
+#endif
+
+/* WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO : Fro MSDU reorder **********************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->currentPktSeqNo)
+#else
+# define WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO(bdHd) \
+ WLANHAL_RX_BD_GET_BA_CSN(bdHd)
+#endif
+
+/* WDA_IS_RX_LLC_PRESENT *****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_IS_RX_LLC_PRESENT(pRxMeta) \
+ ( (0 == ((WDI_DS_RxMetaInfoType*)(pRxMeta))->llcr) ? VOS_TRUE : VOS_FALSE )
+#else
+# define WDA_IS_RX_LLC_PRESENT(bdHd) \
+ ( (0 == (v_U8_t)WLANHAL_RX_BD_GET_LLC(bdHd) ) ? VOS_TRUE : VOS_FALSE )
+#endif
+
+#define WLANWDA_HO_IS_AN_AMPDU 0x4000
+#define WLANWDA_HO_LAST_MPDU_OF_AMPDU 0x400
+
+/* WDA_IS_RX_AN_AMPDU ********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_IS_RX_AN_AMPDU(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxpFlags & WLANWDA_HO_IS_AN_AMPDU )
+#else
+# define WDA_IS_RX_AN_AMPDU(bdHd) WLAN_HAL_IS_AN_AMPDU(bdHd)
+#endif
+
+/* WDA_IS_RX_LAST_MPDU *******************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_IS_RX_LAST_MPDU(pRxMeta) \
+ ( ((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxpFlags & WLANWDA_HO_LAST_MPDU_OF_AMPDU )
+#else
+# define WDA_IS_RX_LAST_MPDU(bdHd) WLAN_HAL_IS_LAST_MPDU(bdHd)
+#endif
+
+/* WDA_GET_RX_TIMESTAMP *****************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_TIMESTAMP(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->mclkRxTimestamp)
+#else
+# define WDA_GET_RX_TIMESTAMP(bdHd) SIR_MAC_BD_RX_TIMESTAMP(bdHd)
+#endif
+
+/* WDA_IS_RX_IN_SCAN *********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_IS_RX_IN_SCAN(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->scan)
+#else
+# define WDA_IS_RX_IN_SCAN(bdHd) SIR_MAC_BD_TO_SCAN_LEARN(bdHd)
+#endif
+
+/* WDA_GET_RX_RSSI_DB ********************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+// Volans RF
+# define WDA_RSSI_OFFSET 100
+# define WDA_GET_RSSI0_DB(rssi0) (rssi0 - WDA_RSSI_OFFSET)
+# define WDA_GET_RSSI1_DB(rssi0) (0 - WDA_RSSI_OFFSET)
+# define WDA_MAX_OF_TWO(val1, val2) ( ((val1) > (val2)) ? (val1) : (val2))
+# define WDA_GET_RSSI_DB(rssi0) \
+ WDA_MAX_OF_TWO(WDA_GET_RSSI0_DB(rssi0), WDA_GET_RSSI1_DB(rssi0))
+# define WDA_GET_RX_RSSI_DB(pRxMeta) \
+ WDA_GET_RSSI_DB((((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi0))
+#else
+# define WDA_GET_RX_RSSI_DB(bdHd) SIR_MAC_BD_TO_RSSI_DB(bdHd)
+#endif
+
+/* WDA_GET_RX_SNR ************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_SNR(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->snr)
+#else
+# define WDA_GET_RX_SNR(bdHd) WLANHAL_RX_BD_GET_SNR(bdHd)
+#endif
+
+/* WDA_IS_RX_FC **************************************************************/
+// Flow control frames
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+/* FIXME WDA should provide the meta info which indicates FC frame
+ In the meantime, use hardcoded FALSE, since we don't support FC yet */
+# define WDA_IS_RX_FC(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fc)
+#else
+# define WDA_IS_RX_FC(bdHd) WLANHAL_RX_BD_GET_FC(bdHd)
+#endif
+
+/* WDA_GET_RX_FC_VALID_STA_MASK **********************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FC_VALID_STA_MASK(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAValidMask)
+#else
+# define WDA_GET_RX_FC_VALID_STA_MASK(bdHd) \
+ WLANHAL_RX_BD_GET_STA_VALID_MASK(bdHd)
+#endif
+
+/* WDA_GET_RX_FC_PWRSAVE_STA_MASK ********************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FC_PWRSAVE_STA_MASK(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAPwrSaveStateMask)
+#else
+# define WDA_GET_RX_FC_PWRSAVE_STA_MASK(bdHd) \
+ WLANHAL_RX_BD_GET_STA_PS_STATE(bdHd)
+#endif
+
+/* WDA_GET_RX_FC_STA_THRD_IND_MASK ********************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FC_STA_THRD_IND_MASK(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAThreshIndMask)
+#else
+# define WDA_GET_RX_FC_STA_THRD_IND_MASK(bdHd) \
+ WLANHAL_RX_BD_GET_STA_TH_IND(bdHd)
+#endif
+
+/* WDA_GET_RX_FC_FORCED_STA_TX_DISABLED_BITMAP ********************************************/
+# define WDA_GET_RX_FC_STA_TX_DISABLED_BITMAP(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcStaTxDisabledBitmap)
+
+/* WDA_GET_RX_FC_STA_TXQ_LEN *************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FC_STA_TXQ_LEN(pRxMeta, staId) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTATxQLen[(staId)])
+#else
+# define WDA_GET_RX_FC_STA_TXQ_LEN(bdHd, staId) \
+ WLANHAL_RX_BD_GET_STA_TXQ_LEN( _pvBDHeader, staId )
+#endif
+
+/* WDA_GET_RX_FC_STA_CUR_TXRATE **********************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_FC_STA_CUR_TXRATE(pRxMeta, staId) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTACurTxRate[(staId)])
+#else
+# define WDA_GET_RX_FC_STA_CUR_TXRATE(bdHd, staId) \
+ WLANHAL_RX_BD_GET_STA_CUR_TX_RATE( bdHd, staIdx )
+#endif
+
+/* WDA_GET_RX_REPLAY_COUNT ***************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GET_RX_REPLAY_COUNT(pRxMeta) \
+ (((WDI_DS_RxMetaInfoType*)(pRxMeta))->replayCount)
+#endif
+
+/* WDA_GETRSSI0 ***************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GETRSSI0(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi0)
+#else
+# define WDA_GETRSSI0(bdHd) (v_S7_t)(HAL_GET_RSSI0_DB(SIR_MAC_BD_TO_PHY_STATS0(bdHd)))
+#endif
+
+/* WDA_GETRSSI1 ***************************************************************/
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_GETRSSI1(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi1)
+#else
+# define WDA_GETRSSI1(bdHd) (v_S7_t)(HAL_GET_RSSI1_DB(SIR_MAC_BD_TO_PHY_STATS0(bdHd)))
+#endif
+
+
+
+/* --------------------------------------------------------------------*/
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+uint8 WDA_IsWcnssWlanCompiledVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
+uint8 WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
+
+
+VOS_STATUS WDA_GetWcnssWlanCompiledVersion(v_PVOID_t pvosGCtx,
+ tSirVersionType *pVersion);
+VOS_STATUS WDA_GetWcnssWlanReportedVersion(v_PVOID_t pvosGCtx,
+ tSirVersionType *pVersion);
+VOS_STATUS WDA_GetWcnssSoftwareVersion(v_PVOID_t pvosGCtx,
+ tANI_U8 *pVersion,
+ tANI_U32 versionBufferSize);
+VOS_STATUS WDA_GetWcnssHardwareVersion(v_PVOID_t pvosGCtx,
+ tANI_U8 *pVersion,
+ tANI_U32 versionBufferSize);
+
+VOS_STATUS WDA_SetUapsdAcParamsReq(v_PVOID_t , v_U8_t , tUapsdInfo *);
+VOS_STATUS WDA_ClearUapsdAcParamsReq(v_PVOID_t , v_U8_t , wpt_uint8 );
+VOS_STATUS WDA_SetRSSIThresholdsReq(tpAniSirGlobal , tSirRSSIThresholds *);
+// Just declare the function extern here and save some time.
+extern tSirRetStatus halMmhForwardMBmsg(void*, tSirMbMsg*);
+tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb);
+#else
+# define uMacPostCtrlMsg(hal, msg) halMmhForwardMBmsg(hal, msg)
+#endif
+
+
+#if defined(FEATURE_WLAN_NON_INTEGRATED_SOC) || defined(FEATURE_WLAN_INTEGRATED_SOC)
+#define WDA_MAX_TXPOWER_INVALID HAL_MAX_TXPOWER_INVALID
+
+//WDA Messages to HAL messages Mapping
+#if 0
+//Required by SME
+//#define WDA_SIGNAL_BT_EVENT SIR_HAL_SIGNAL_BT_EVENT - this is defined in sirParams.h
+//#define WDA_BTC_SET_CFG SIR_HAL_BTC_SET_CFG
+
+//Required by PE
+#define WDA_HOST_MSG_START SIR_HAL_HOST_MSG_START
+#define WDA_INITIAL_CAL_FAILED_NTF SIR_HAL_INITIAL_CAL_FAILED_NTF
+#define WDA_SHUTDOWN_REQ SIR_HAL_SHUTDOWN_REQ
+#define WDA_SHUTDOWN_CNF SIR_HAL_SHUTDOWN_CNF
+#define WDA_RADIO_ON_OFF_IND SIR_HAL_RADIO_ON_OFF_IND
+#define WDA_RESET_CNF SIR_HAL_RESET_CNF
+#define WDA_SetRegDomain \
+ eHalStatus halPhySetRegDomain(tHalHandle hHal, eRegDomainId regDomain);
+#endif
+
+#define WDA_APP_SETUP_NTF SIR_HAL_APP_SETUP_NTF
+#define WDA_NIC_OPER_NTF SIR_HAL_NIC_OPER_NTF
+#define WDA_INIT_START_REQ SIR_HAL_INIT_START_REQ
+#define WDA_RESET_REQ SIR_HAL_RESET_REQ
+#define WDA_HDD_ADDBA_REQ SIR_HAL_HDD_ADDBA_REQ
+#define WDA_HDD_ADDBA_RSP SIR_HAL_HDD_ADDBA_RSP
+#define WDA_DELETEBA_IND SIR_HAL_DELETEBA_IND
+#define WDA_BA_FAIL_IND SIR_HAL_BA_FAIL_IND
+#define WDA_TL_FLUSH_AC_REQ SIR_TL_HAL_FLUSH_AC_REQ
+#define WDA_TL_FLUSH_AC_RSP SIR_HAL_TL_FLUSH_AC_RSP
+
+#define WDA_MSG_TYPES_BEGIN SIR_HAL_MSG_TYPES_BEGIN
+#define WDA_ITC_MSG_TYPES_BEGIN SIR_HAL_ITC_MSG_TYPES_BEGIN
+#define WDA_RADAR_DETECTED_IND SIR_HAL_RADAR_DETECTED_IND
+#define WDA_WDT_KAM_RSP SIR_HAL_WDT_KAM_RSP
+#define WDA_TIMER_TEMP_MEAS_REQ SIR_HAL_TIMER_TEMP_MEAS_REQ
+#define WDA_TIMER_PERIODIC_STATS_COLLECT_REQ SIR_HAL_TIMER_PERIODIC_STATS_COLLECT_REQ
+#define WDA_CAL_REQ_NTF SIR_HAL_CAL_REQ_NTF
+#define WDA_MNT_OPEN_TPC_TEMP_MEAS_REQ SIR_HAL_MNT_OPEN_TPC_TEMP_MEAS_REQ
+#define WDA_CCA_MONITOR_INTERVAL_TO SIR_HAL_CCA_MONITOR_INTERVAL_TO
+#define WDA_CCA_MONITOR_DURATION_TO SIR_HAL_CCA_MONITOR_DURATION_TO
+#define WDA_CCA_MONITOR_START SIR_HAL_CCA_MONITOR_START
+#define WDA_CCA_MONITOR_STOP SIR_HAL_CCA_MONITOR_STOP
+#define WDA_CCA_CHANGE_MODE SIR_HAL_CCA_CHANGE_MODE
+#define WDA_TIMER_WRAP_AROUND_STATS_COLLECT_REQ SIR_HAL_TIMER_WRAP_AROUND_STATS_COLLECT_REQ
+
+/*
+ * New Taurus related messages
+ */
+#define WDA_ADD_STA_REQ SIR_HAL_ADD_STA_REQ
+#define WDA_ADD_STA_RSP SIR_HAL_ADD_STA_RSP
+#define WDA_ADD_STA_SELF_RSP SIR_HAL_ADD_STA_SELF_RSP
+#define WDA_DEL_STA_SELF_RSP SIR_HAL_DEL_STA_SELF_RSP
+#define WDA_DELETE_STA_REQ SIR_HAL_DELETE_STA_REQ
+#define WDA_DELETE_STA_RSP SIR_HAL_DELETE_STA_RSP
+#define WDA_ADD_BSS_REQ SIR_HAL_ADD_BSS_REQ
+#define WDA_ADD_BSS_RSP SIR_HAL_ADD_BSS_RSP
+#define WDA_DELETE_BSS_REQ SIR_HAL_DELETE_BSS_REQ
+#define WDA_DELETE_BSS_RSP SIR_HAL_DELETE_BSS_RSP
+#define WDA_INIT_SCAN_REQ SIR_HAL_INIT_SCAN_REQ
+#define WDA_INIT_SCAN_RSP SIR_HAL_INIT_SCAN_RSP
+#define WDA_START_SCAN_REQ SIR_HAL_START_SCAN_REQ
+#define WDA_START_SCAN_RSP SIR_HAL_START_SCAN_RSP
+#define WDA_END_SCAN_REQ SIR_HAL_END_SCAN_REQ
+#define WDA_END_SCAN_RSP SIR_HAL_END_SCAN_RSP
+#define WDA_FINISH_SCAN_REQ SIR_HAL_FINISH_SCAN_REQ
+#define WDA_FINISH_SCAN_RSP SIR_HAL_FINISH_SCAN_RSP
+#define WDA_SEND_BEACON_REQ SIR_HAL_SEND_BEACON_REQ
+#define WDA_SEND_BEACON_RSP SIR_HAL_SEND_BEACON_RSP
+
+#define WDA_INIT_CFG_REQ SIR_HAL_INIT_CFG_REQ
+#define WDA_INIT_CFG_RSP SIR_HAL_INIT_CFG_RSP
+
+#define WDA_INIT_WM_CFG_REQ SIR_HAL_INIT_WM_CFG_REQ
+#define WDA_INIT_WM_CFG_RSP SIR_HAL_INIT_WM_CFG_RSP
+
+#define WDA_SET_BSSKEY_REQ SIR_HAL_SET_BSSKEY_REQ
+#define WDA_SET_BSSKEY_RSP SIR_HAL_SET_BSSKEY_RSP
+#define WDA_SET_STAKEY_REQ SIR_HAL_SET_STAKEY_REQ
+#define WDA_SET_STAKEY_RSP SIR_HAL_SET_STAKEY_RSP
+#define WDA_DPU_STATS_REQ SIR_HAL_DPU_STATS_REQ
+#define WDA_DPU_STATS_RSP SIR_HAL_DPU_STATS_RSP
+#define WDA_GET_DPUINFO_REQ SIR_HAL_GET_DPUINFO_REQ
+#define WDA_GET_DPUINFO_RSP SIR_HAL_GET_DPUINFO_RSP
+
+#define WDA_UPDATE_EDCA_PROFILE_IND SIR_HAL_UPDATE_EDCA_PROFILE_IND
+
+#define WDA_UPDATE_STARATEINFO_REQ SIR_HAL_UPDATE_STARATEINFO_REQ
+#define WDA_UPDATE_STARATEINFO_RSP SIR_HAL_UPDATE_STARATEINFO_RSP
+
+#define WDA_UPDATE_BEACON_IND SIR_HAL_UPDATE_BEACON_IND
+#define WDA_UPDATE_CF_IND SIR_HAL_UPDATE_CF_IND
+#define WDA_CHNL_SWITCH_REQ SIR_HAL_CHNL_SWITCH_REQ
+#define WDA_ADD_TS_REQ SIR_HAL_ADD_TS_REQ
+#define WDA_DEL_TS_REQ SIR_HAL_DEL_TS_REQ
+#define WDA_SOFTMAC_TXSTAT_REPORT SIR_HAL_SOFTMAC_TXSTAT_REPORT
+
+#define WDA_MBOX_SENDMSG_COMPLETE_IND SIR_HAL_MBOX_SENDMSG_COMPLETE_IND
+#define WDA_EXIT_BMPS_REQ SIR_HAL_EXIT_BMPS_REQ
+#define WDA_EXIT_BMPS_RSP SIR_HAL_EXIT_BMPS_RSP
+#define WDA_EXIT_BMPS_IND SIR_HAL_EXIT_BMPS_IND
+#define WDA_ENTER_BMPS_REQ SIR_HAL_ENTER_BMPS_REQ
+#define WDA_ENTER_BMPS_RSP SIR_HAL_ENTER_BMPS_RSP
+#define WDA_BMPS_STATUS_IND SIR_HAL_BMPS_STATUS_IND
+#define WDA_MISSED_BEACON_IND SIR_HAL_MISSED_BEACON_IND
+
+#define WDA_CFG_RXP_FILTER_REQ SIR_HAL_CFG_RXP_FILTER_REQ
+#define WDA_CFG_RXP_FILTER_RSP SIR_HAL_CFG_RXP_FILTER_RSP
+
+#define WDA_SWITCH_CHANNEL_RSP SIR_HAL_SWITCH_CHANNEL_RSP
+#define WDA_P2P_NOA_ATTR_IND SIR_HAL_P2P_NOA_ATTR_IND
+#define WDA_PWR_SAVE_CFG SIR_HAL_PWR_SAVE_CFG
+
+#define WDA_REGISTER_PE_CALLBACK SIR_HAL_REGISTER_PE_CALLBACK
+#define WDA_SOFTMAC_MEM_READREQUEST SIR_HAL_SOFTMAC_MEM_READREQUEST
+#define WDA_SOFTMAC_MEM_WRITEREQUEST SIR_HAL_SOFTMAC_MEM_WRITEREQUEST
+
+#define WDA_SOFTMAC_MEM_READRESPONSE SIR_HAL_SOFTMAC_MEM_READRESPONSE
+#define WDA_SOFTMAC_BULKREGWRITE_CONFIRM SIR_HAL_SOFTMAC_BULKREGWRITE_CONFIRM
+#define WDA_SOFTMAC_BULKREGREAD_RESPONSE SIR_HAL_SOFTMAC_BULKREGREAD_RESPONSE
+#define WDA_SOFTMAC_HOSTMESG_MSGPROCESSRESULT SIR_HAL_SOFTMAC_HOSTMESG_MSGPROCESSRESULT
+
+#define WDA_ADDBA_REQ SIR_HAL_ADDBA_REQ
+#define WDA_ADDBA_RSP SIR_HAL_ADDBA_RSP
+#define WDA_DELBA_IND SIR_HAL_DELBA_IND
+#define WDA_DEL_BA_IND SIR_HAL_DEL_BA_IND
+#define WDA_MIC_FAILURE_IND SIR_HAL_MIC_FAILURE_IND
+
+//message from sme to initiate delete block ack session.
+#define WDA_DELBA_REQ SIR_HAL_DELBA_REQ
+#define WDA_IBSS_STA_ADD SIR_HAL_IBSS_STA_ADD
+#define WDA_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND SIR_HAL_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND
+#define WDA_SET_LINK_STATE SIR_HAL_SET_LINK_STATE
+#define WDA_SET_LINK_STATE_RSP SIR_HAL_SET_LINK_STATE_RSP
+#define WDA_ENTER_IMPS_REQ SIR_HAL_ENTER_IMPS_REQ
+#define WDA_ENTER_IMPS_RSP SIR_HAL_ENTER_IMPS_RSP
+#define WDA_EXIT_IMPS_RSP SIR_HAL_EXIT_IMPS_RSP
+#define WDA_EXIT_IMPS_REQ SIR_HAL_EXIT_IMPS_REQ
+#define WDA_SOFTMAC_HOSTMESG_PS_STATUS_IND SIR_HAL_SOFTMAC_HOSTMESG_PS_STATUS_IND
+#define WDA_POSTPONE_ENTER_IMPS_RSP SIR_HAL_POSTPONE_ENTER_IMPS_RSP
+#define WDA_STA_STAT_REQ SIR_HAL_STA_STAT_REQ
+#define WDA_GLOBAL_STAT_REQ SIR_HAL_GLOBAL_STAT_REQ
+#define WDA_AGGR_STAT_REQ SIR_HAL_AGGR_STAT_REQ
+#define WDA_STA_STAT_RSP SIR_HAL_STA_STAT_RSP
+#define WDA_GLOBAL_STAT_RSP SIR_HAL_GLOBAL_STAT_RSP
+#define WDA_AGGR_STAT_RSP SIR_HAL_AGGR_STAT_RSP
+#define WDA_STAT_SUMM_REQ SIR_HAL_STAT_SUMM_REQ
+#define WDA_STAT_SUMM_RSP SIR_HAL_STAT_SUMM_RSP
+#define WDA_REMOVE_BSSKEY_REQ SIR_HAL_REMOVE_BSSKEY_REQ
+#define WDA_REMOVE_BSSKEY_RSP SIR_HAL_REMOVE_BSSKEY_RSP
+#define WDA_REMOVE_STAKEY_REQ SIR_HAL_REMOVE_STAKEY_REQ
+#define WDA_REMOVE_STAKEY_RSP SIR_HAL_REMOVE_STAKEY_RSP
+#define WDA_SET_STA_BCASTKEY_REQ SIR_HAL_SET_STA_BCASTKEY_REQ
+#define WDA_SET_STA_BCASTKEY_RSP SIR_HAL_SET_STA_BCASTKEY_RSP
+#define WDA_REMOVE_STA_BCASTKEY_REQ SIR_HAL_REMOVE_STA_BCASTKEY_REQ
+#define WDA_REMOVE_STA_BCASTKEY_RSP SIR_HAL_REMOVE_STA_BCASTKEY_RSP
+#define WDA_ADD_TS_RSP SIR_HAL_ADD_TS_RSP
+#define WDA_DPU_MIC_ERROR SIR_HAL_DPU_MIC_ERROR
+#define WDA_TIMER_BA_ACTIVITY_REQ SIR_HAL_TIMER_BA_ACTIVITY_REQ
+#define WDA_TIMER_CHIP_MONITOR_TIMEOUT SIR_HAL_TIMER_CHIP_MONITOR_TIMEOUT
+#define WDA_TIMER_TRAFFIC_ACTIVITY_REQ SIR_HAL_TIMER_TRAFFIC_ACTIVITY_REQ
+#define WDA_TIMER_ADC_RSSI_STATS SIR_HAL_TIMER_ADC_RSSI_STATS
+
+#ifdef FEATURE_WLAN_CCX
+#define WDA_TSM_STATS_REQ SIR_HAL_TSM_STATS_REQ
+#define WDA_TSM_STATS_RSP SIR_HAL_TSM_STATS_RSP
+#endif
+#ifdef WLAN_SOFTAP_FEATURE
+#define WDA_UPDATE_PROBE_RSP_IE_BITMAP_IND SIR_HAL_UPDATE_PROBE_RSP_IE_BITMAP_IND
+#define WDA_UPDATE_UAPSD_IND SIR_HAL_UPDATE_UAPSD_IND
+#endif
+
+#define WDA_SET_MIMOPS_REQ SIR_HAL_SET_MIMOPS_REQ
+#define WDA_SET_MIMOPS_RSP SIR_HAL_SET_MIMOPS_RSP
+#define WDA_SYS_READY_IND SIR_HAL_SYS_READY_IND
+#define WDA_SET_TX_POWER_REQ SIR_HAL_SET_TX_POWER_REQ
+#define WDA_SET_TX_POWER_RSP SIR_HAL_SET_TX_POWER_RSP
+#define WDA_GET_TX_POWER_REQ SIR_HAL_GET_TX_POWER_REQ
+#define WDA_GET_TX_POWER_RSP SIR_HAL_GET_TX_POWER_RSP
+#define WDA_GET_NOISE_REQ SIR_HAL_GET_NOISE_REQ
+#define WDA_GET_NOISE_RSP SIR_HAL_GET_NOISE_RSP
+#define WDA_SET_TX_PER_TRACKING_REQ SIR_HAL_SET_TX_PER_TRACKING_REQ
+
+/* Messages to support transmit_halt and transmit_resume */
+#define WDA_TRANSMISSION_CONTROL_IND SIR_HAL_TRANSMISSION_CONTROL_IND
+/* Indication from LIM to HAL to Initialize radar interrupt */
+#define WDA_INIT_RADAR_IND SIR_HAL_INIT_RADAR_IND
+/* Messages to support transmit_halt and transmit_resume */
+
+
+#define WDA_BEACON_PRE_IND SIR_HAL_BEACON_PRE_IND
+#define WDA_ENTER_UAPSD_REQ SIR_HAL_ENTER_UAPSD_REQ
+#define WDA_ENTER_UAPSD_RSP SIR_HAL_ENTER_UAPSD_RSP
+#define WDA_EXIT_UAPSD_REQ SIR_HAL_EXIT_UAPSD_REQ
+#define WDA_EXIT_UAPSD_RSP SIR_HAL_EXIT_UAPSD_RSP
+#define WDA_LOW_RSSI_IND SIR_HAL_LOW_RSSI_IND
+#define WDA_BEACON_FILTER_IND SIR_HAL_BEACON_FILTER_IND
+/// PE <-> HAL WOWL messages
+#define WDA_WOWL_ADD_BCAST_PTRN SIR_HAL_WOWL_ADD_BCAST_PTRN
+#define WDA_WOWL_DEL_BCAST_PTRN SIR_HAL_WOWL_DEL_BCAST_PTRN
+#define WDA_WOWL_ENTER_REQ SIR_HAL_WOWL_ENTER_REQ
+#define WDA_WOWL_ENTER_RSP SIR_HAL_WOWL_ENTER_RSP
+#define WDA_WOWL_EXIT_REQ SIR_HAL_WOWL_EXIT_REQ
+#define WDA_WOWL_EXIT_RSP SIR_HAL_WOWL_EXIT_RSP
+#define WDA_TX_COMPLETE_IND SIR_HAL_TX_COMPLETE_IND
+#define WDA_TIMER_RA_COLLECT_AND_ADAPT SIR_HAL_TIMER_RA_COLLECT_AND_ADAPT
+/// PE <-> HAL statistics messages
+#define WDA_GET_STATISTICS_REQ SIR_HAL_GET_STATISTICS_REQ
+#define WDA_GET_STATISTICS_RSP SIR_HAL_GET_STATISTICS_RSP
+#define WDA_SET_KEY_DONE SIR_HAL_SET_KEY_DONE
+
+/// PE <-> HAL BTC messages
+#define WDA_BTC_SET_CFG SIR_HAL_BTC_SET_CFG
+#define WDA_SIGNAL_BT_EVENT SIR_HAL_SIGNAL_BT_EVENT
+#define WDA_HANDLE_FW_MBOX_RSP SIR_HAL_HANDLE_FW_MBOX_RSP
+#define WDA_UPDATE_PROBE_RSP_TEMPLATE_IND SIR_HAL_UPDATE_PROBE_RSP_TEMPLATE_IND
+#define WDA_SIGNAL_BTAMP_EVENT SIR_HAL_SIGNAL_BTAMP_EVENT
+
+#ifdef ANI_CHIPSET_VOLANS
+#endif
+
+#define WDA_SET_MAX_TX_POWER_REQ SIR_HAL_SET_MAX_TX_POWER_REQ
+#define WDA_SET_MAX_TX_POWER_RSP SIR_HAL_SET_MAX_TX_POWER_RSP
+
+#define WDA_SEND_MSG_COMPLETE SIR_HAL_SEND_MSG_COMPLETE
+
+/// PE <-> HAL Host Offload message
+#define WDA_SET_HOST_OFFLOAD SIR_HAL_SET_HOST_OFFLOAD
+
+/// PE <-> HAL Keep Alive message
+#define WDA_SET_KEEP_ALIVE SIR_HAL_SET_KEEP_ALIVE
+
+#ifdef WLAN_NS_OFFLOAD
+#define WDA_SET_NS_OFFLOAD SIR_HAL_SET_NS_OFFLOAD
+#endif //WLAN_NS_OFFLOAD
+#define WDA_ADD_STA_SELF_REQ SIR_HAL_ADD_STA_SELF_REQ
+#define WDA_DEL_STA_SELF_REQ SIR_HAL_DEL_STA_SELF_REQ
+
+#ifdef WLAN_FEATURE_P2P
+#define WDA_SET_P2P_GO_NOA_REQ SIR_HAL_SET_P2P_GO_NOA_REQ
+#endif
+
+#define WDA_TX_COMPLETE_TIMEOUT_IND WDA_MSG_TYPES_END - 1
+#define WDA_WLAN_SUSPEND_IND SIR_HAL_WLAN_SUSPEND_IND
+#define WDA_WLAN_RESUME_REQ SIR_HAL_WLAN_RESUME_REQ
+#define WDA_MSG_TYPES_END SIR_HAL_MSG_TYPES_END
+
+#define WDA_SUSPEND_ACTIVITY_RSP SIR_HAL_SUSPEND_ACTIVITY_RSP
+
+
+#define WDA_MMH_TXMB_READY_EVT SIR_HAL_MMH_TXMB_READY_EVT
+#define WDA_MMH_RXMB_DONE_EVT SIR_HAL_MMH_RXMB_DONE_EVT
+#define WDA_MMH_MSGQ_NE_EVT SIR_HAL_MMH_MSGQ_NE_EVT
+#endif
+
+#ifdef WLAN_FEATURE_VOWIFI_11R
+#define WDA_AGGR_QOS_REQ SIR_HAL_AGGR_QOS_REQ
+#define WDA_AGGR_QOS_RSP SIR_HAL_AGGR_QOS_RSP
+#endif /* WLAN_FEATURE_VOWIFI_11R */
+
+#ifdef ANI_MANF_DIAG
+/* FTM CMD MSG */
+#define WDA_FTM_CMD_REQ SIR_PTT_MSG_TYPES_BEGIN
+#define WDA_FTM_CMD_RSP SIR_PTT_MSG_TYPES_END
+#endif /* ANI_MANF_DIAG */
+
+#ifdef FEATURE_WLAN_SCAN_PNO
+/*Requests sent to lower driver*/
+#define WDA_SET_PNO_REQ SIR_HAL_SET_PNO_REQ
+#define WDA_SET_RSSI_FILTER_REQ SIR_HAL_SET_RSSI_FILTER_REQ
+#define WDA_UPDATE_SCAN_PARAMS_REQ SIR_HAL_UPDATE_SCAN_PARAMS
+
+/*Indication comming from lower driver*/
+#define WDA_SET_PNO_CHANGED_IND SIR_HAL_SET_PNO_CHANGED_IND
+#endif // FEATURE_WLAN_SCAN_PNO
+
+#ifdef WLAN_WAKEUP_EVENTS
+#define WDA_WAKE_REASON_IND SIR_HAL_WAKE_REASON_IND
+#endif // WLAN_WAKEUP_EVENTS
+
+#ifdef WLAN_FEATURE_PACKET_FILTERING
+#define WDA_8023_MULTICAST_LIST_REQ SIR_HAL_8023_MULTICAST_LIST_REQ
+#define WDA_RECEIVE_FILTER_SET_FILTER_REQ SIR_HAL_RECEIVE_FILTER_SET_FILTER_REQ
+#define WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ SIR_HAL_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ
+#define WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP SIR_HAL_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP
+#define WDA_RECEIVE_FILTER_CLEAR_FILTER_REQ SIR_HAL_RECEIVE_FILTER_CLEAR_FILTER_REQ
+#endif // WLAN_FEATURE_PACKET_FILTERING
+
+#define WDA_SET_POWER_PARAMS_REQ SIR_HAL_SET_POWER_PARAMS_REQ
+
+#ifdef WLAN_FEATURE_GTK_OFFLOAD
+#define WDA_GTK_OFFLOAD_REQ SIR_HAL_GTK_OFFLOAD_REQ
+#define WDA_GTK_OFFLOAD_GETINFO_REQ SIR_HAL_GTK_OFFLOAD_GETINFO_REQ
+#define WDA_GTK_OFFLOAD_GETINFO_RSP SIR_HAL_GTK_OFFLOAD_GETINFO_RSP
+#endif //WLAN_FEATURE_GTK_OFFLOAD
+
+#define WDA_SET_TM_LEVEL_REQ SIR_HAL_SET_TM_LEVEL_REQ
+
+#ifdef FEATURE_WLAN_INTEGRATED_SOC
+tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
+#endif
+
+#if defined(FEATURE_WLAN_NON_INTEGRATED_SOC)
+#define VOS_MODULE_ID_WDA VOS_MODULE_ID_HAL
+
+//Required by TL
+
+//WDA Functions to HAL functions Mapping
+//Required by SME and PE
+#define WDA_SetRegDomain halPhySetRegDomain
+#define wdaPostCtrlMsg halPostMsgApi
+#else
+eHalStatus WDA_SetRegDomain(void * clientCtxt, v_REGDOMAIN_t regId);
+#endif //FEATURE_WLAN_NON_INTEGRATED_SOC
+
+#define HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 // Bit 6 will be used to control BD rate for Management frames
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#define halTxFrame(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, txFlag) \
+ (eHalStatus)( WDA_TxPacket(\
+ vos_get_context(VOS_MODULE_ID_WDA, vos_get_global_context(VOS_MODULE_ID_WDA, (hHal))),\
+ (pFrmBuf),\
+ (frmLen),\
+ (frmType),\
+ (txDir),\
+ (tid),\
+ (pCompFunc),\
+ (pData),\
+ (NULL), \
+ (txFlag)) )
+
+#define halTxFrameWithTxComplete(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, pCBackFnTxComp, txFlag) \
+ (eHalStatus)( WDA_TxPacket(\
+ vos_get_context(VOS_MODULE_ID_WDA, vos_get_global_context(VOS_MODULE_ID_WDA, (hHal))),\
+ (pFrmBuf),\
+ (frmLen),\
+ (frmType),\
+ (txDir),\
+ (tid),\
+ (pCompFunc),\
+ (pData),\
+ (pCBackFnTxComp), \
+ (txFlag)) )
+#endif
+
+/* -----------------------------------------------------------------
+ WDA data path API's for TL
+ -------------------------------------------------------------------*/
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+v_BOOL_t WDA_IsHwFrameTxTranslationCapable(v_PVOID_t pVosGCtx,
+ tANI_U8 staIdx);
+#else
+# define WDA_IsHwFrameTxTranslationCapable(vosGCtx, staId) \
+ WLANHAL_IsHwFrameTxTranslationCapable(vosGCtx, staId)
+#endif
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo) \
+ WDA_SetUapsdAcParamsReq(vosGCtx, staId, uapsdInfo)
+#else
+# define WDA_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo) \
+ WLANHAL_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo)
+#endif
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_DisableUapsdAcParams(vosGCtx, staId, ac) \
+ WDA_ClearUapsdAcParamsReq(vosGCtx, staId, ac)
+#else
+# define WDA_DisableUapsdAcParams(vosGCtx, staId, ac) \
+ WLANHAL_DisableUapsdAcParams(vosGCtx, staId, ac)
+#endif
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+# define WDA_SetRSSIThresholds(pMac, pThresholds) \
+ WDA_SetRSSIThresholdsReq(pMac, pThresholds)
+#else
+# define WDA_SetRSSIThresholds(pMac, pThresholds) \
+ halPS_SetRSSIThresholds(pMac, pThresholds)
+#endif
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+#define WDA_UpdateRssiBmps(pvosGCtx, staId, rssi) \
+ WLANTL_UpdateRssiBmps (pvosGCtx, staId, rssi)
+#endif
+
+#ifdef WLAN_PERF
+/*==========================================================================
+ FUNCTION WDA_TLI_FastHwFwdDataFrame
+
+ DESCRIPTION
+ For NON integrated SOC, this function is called by TL.
+
+ Fast path function to quickly forward a data frame if HAL determines BD
+ signature computed here matches the signature inside current VOSS packet.
+ If there is a match, HAL and TL fills in the swapped packet length into
+ BD header and DxE header, respectively. Otherwise, packet goes back to
+ normal (slow) path and a new BD signature would be tagged into BD in this
+ VOSS packet later by the WLANHAL_FillTxBd() function.
+
+ TODO For integrated SOC, this function does nothing yet. Pima SLM/HAL
+ should provide the equivelant functionality.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ vosDataBuff Ptr to VOSS packet
+ pMetaInfo For getting frame's TID
+ pStaInfo For checking STA type
+
+ OUT
+ pvosStatus returned status
+ puFastFwdOK Flag to indicate whether frame could be fast forwarded
+
+ RETURN VALUE
+ No return.
+
+ SIDE EFFECTS
+
+============================================================================*/
+void WDA_TLI_FastHwFwdDataFrame
+(
+ v_PVOID_t pvosGCtx,
+ vos_pkt_t* vosDataBuff,
+ VOS_STATUS* pvosStatus,
+ v_U32_t* puFastFwdOK,
+ WLANTL_MetaInfoType* pMetaInfo,
+ WLAN_STADescType* pStaInfo
+);
+#endif /* WLAN_PERF */
+
+/*==========================================================================
+ FUNCTION WDA_DS_Register
+
+ DESCRIPTION
+ Register TL client to WDA. This function registers TL RX/TX functions
+ to WDI by calling WDI_DS_Register.
+
+
+ For NON integrated SOC, this function calls WLANBAL_RegTlCbFunctions
+ to register TL's RX/TX functions to BAL
+
+ TODO
+ For Prima, pfnResourceCB gets called in WDTS_OOResourceNotification.
+ The uCount parameter is AC mask. It should be redefined to use the
+ same resource callback function.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ pfnTxCompleteCallback TX complete callback upon TX completion
+ pfnRxPacketCallback RX callback
+ pfnResourceCB gets called when updating TX PDU number
+ uResTheshold minimum TX PDU size for a packet
+ pCallbackContext WDI calls callback function with it
+ VOS global context pointer
+ OUT
+ uAvailableTxBuf available TX PDU numbder.
+ BAL returns it for NON integrated SOC
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_Register
+(
+ v_PVOID_t pvosGCtx,
+ WDA_DS_TxCompleteCallback pfnTxCompleteCallback,
+ WDA_DS_RxPacketCallback pfnRxPacketCallback,
+ WDA_DS_TxPacketCallback pfnTxPacketCallback,
+ WDA_DS_ResourceCB pfnResourceCB,
+ v_U32_t uResTheshold,
+ v_PVOID_t pCallbackContext,
+ v_U32_t *uAvailableTxBuf
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_StartXmit
+
+ DESCRIPTION
+ Serialize TX transmit reques to TX thread.
+
+ TODO This sends TX transmit request to TL. It should send to WDI for
+ abstraction.
+
+ For NON integrated SOC, this function calls WLANBAL_StartXmit
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_StartXmit
+(
+ v_PVOID_t pvosGCtx
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_FinishULA
+
+ DESCRIPTION
+ Serialize Finish Upper Level Authentication reques to TX thread.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ callbackRoutine routine to be called in TX thread
+ callbackContext user data for the above routine
+
+ RETURN VALUE
+ please see vos_tx_mq_serialize
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_FinishULA
+(
+ void (*callbackRoutine) (void *callbackContext),
+ void *callbackContext
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_BuildTxPacketInfo
+
+ DESCRIPTION
+ Build TX meta info for integrated SOC.
+
+ Same function calls HAL for reserve BD header space into VOS packet and
+ HAL function to fill it.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ vosDataBuff vos data buffer
+ pvDestMacAddr destination MAC address ponter
+ ucDisableFrmXtl Is frame xtl disabled?
+ ucQosEnabled Is QoS enabled?
+ ucWDSEnabled Is WDS enabled?
+ extraHeadSpace Extra head bytes. If it's not 0 due to 4 bytes align
+ of BD header.
+ typeSubtype typeSubtype from MAC header or TX metainfo/BD
+ pAddr2 address 2
+ uTid tid
+ txFlag
+ timeStamp
+ ucIsEapol
+ ucUP
+
+ OUT
+ *pusPktLen Packet length
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_BuildTxPacketInfo
+(
+ v_PVOID_t pvosGCtx,
+ vos_pkt_t* vosDataBuff,
+ v_MACADDR_t* pvDestMacAddr,
+ v_U8_t ucDisableFrmXtl,
+ v_U16_t* pusPktLen,
+ v_U8_t ucQosEnabled,
+ v_U8_t ucWDSEnabled,
+ v_U8_t extraHeadSpace,
+ v_U8_t typeSubtype,
+ v_PVOID_t pAddr2,
+ v_U8_t uTid,
+ v_U8_t txFlag,
+ v_U32_t timeStamp,
+ v_U8_t ucIsEapol,
+ v_U8_t ucUP
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_PeekRxPacketInfo
+
+ DESCRIPTION
+ Return RX metainfo pointer for for integrated SOC.
+
+ Same function will return BD header pointer.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ vosDataBuff vos data buffer
+
+ pvDestMacAddr destination MAC address ponter
+ bSwap Want to swap BD header? For backward compatability
+ It does nothing for integrated SOC
+ OUT
+ *ppRxHeader RX metainfo pointer
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_PeekRxPacketInfo
+(
+ vos_pkt_t *vosDataBuff,
+ v_PVOID_t *ppRxHeader,
+ v_BOOL_t bSwap
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_TrimRxPacketInfo
+
+ DESCRIPTION
+ Trim/Remove RX BD header for NON integrated SOC.
+ It does nothing for integrated SOC.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ vosDataBuff vos data buffer
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_TrimRxPacketInfo
+(
+ vos_pkt_t *vosDataBuff
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetTxResources
+
+ DESCRIPTION
+ It does return hardcoded value for Prima. It should bigger number than 0.
+ Returning 0 will put TL in out-of-resource condition for TX.
+
+ Return current PDU resources from BAL for NON integrated SOC.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ vosDataBuff vos data buffer
+
+ OUT
+ puResCount available PDU number for TX
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_GetTxResources
+(
+ v_PVOID_t pvosGCtx,
+ v_U32_t* puResCount
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetRssi
+
+ DESCRIPTION
+ Get RSSI
+
+ TODO It returns hardcoded value in the meantime since WDA/WDI does nothing
+ support it yet for Prima.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ vosDataBuff vos data buffer
+
+ OUT
+ puRssi RSSI
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_GetRssi
+(
+ v_PVOID_t pvosGCtx,
+ v_S7_t* puRssi
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_RxAmsduBdFix
+
+ DESCRIPTION
+ For backward compatability with Libra/Volans. Need to call HAL function
+ for HW BD bug fix
+
+ It does nothing for integrated SOC.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ pvBDHeader BD header pointer
+
+ OUT
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_RxAmsduBdFix
+(
+ v_PVOID_t pvosGCtx,
+ v_PVOID_t pvBDHeader
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetFrameTypeSubType
+
+ DESCRIPTION
+ Get typeSubtype from the packet. The BD header should have this.
+ But some reason, Libra/Volans read it from 802.11 header and save it
+ back to BD header. So for NON integrated SOC, this function does
+ the same.
+
+ For integrated SOC, WDI does the same, not TL.
+ It does return typeSubtype from RX meta info for integrated SOC.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ vosDataBuff vos data buffer
+ pRxHeader RX meta info or BD header pointer
+
+ OUT
+ ucTypeSubtype typeSubtype
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_GetFrameTypeSubType
+(
+ v_PVOID_t pvosGCtx,
+ vos_pkt_t *vosDataBuff,
+ v_PVOID_t pRxHeader,
+ v_U8_t *ucTypeSubtype
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetReplayCounter
+
+ DESCRIPTION
+ Return replay counter from BD header or RX meta info
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pRxHeader RX meta info or BD header pointer
+
+ OUT
+
+ RETURN VALUE
+ Replay Counter
+
+ SIDE EFFECTS
+
+============================================================================*/
+v_U64_t
+WDA_DS_GetReplayCounter
+(
+ v_PVOID_t pRxHeader
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetReplayCounter
+
+ DESCRIPTION
+ HO support. Set RSSI threshold via HAL function for NON integrated SOC
+
+ TODO
+ Same function should be provided by WDA/WDI for Prima.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pMac MAC global pointer
+ pThresholds pointer of threshold structure to set.
+
+ OUT
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_SetRSSIThresholds
+(
+ tpAniSirGlobal pMac,
+ tpSirRSSIThresholds pThresholds
+);
+
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+/*==========================================================================
+ FUNCTION WDA_DS_TxFrames
+
+ DESCRIPTION
+ Pull packets from TL and push them to WDI. It gets invoked upon
+ WDA_DS_TX_START_XMIT.
+
+ This function is equivelant of WLANSSC_Transmit in Libra/Volans.
+
+ TODO
+ This function should be implemented and moved in WDI.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+
+ OUT
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_TxFrames
+(
+ v_PVOID_t pvosGCtx
+);
+#endif
+
+/*==========================================================================
+ FUNCTION WDA_DS_TxFlowControlCallback
+
+ DESCRIPTION
+ Invoked by WDI to control TX flow.
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+ uFlowMask TX channel mask for flow control
+ Defined in WDA_TXFlowEnumType
+
+ OUT
+
+ RETURN VALUE
+
+ SIDE EFFECTS
+
+============================================================================*/
+v_VOID_t
+WDA_DS_TxFlowControlCallback
+(
+ v_PVOID_t pvosGCtx,
+ v_U8_t uFlowMask
+);
+
+/*==========================================================================
+ FUNCTION WDA_DS_GetTxFlowMask
+
+ DESCRIPTION
+ return TX flow mask control value
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pvosGCtx VOS context
+
+ OUT
+ uFlowMask TX channel mask for flow control
+ Defined in WDA_TXFlowEnumType
+
+ RETURN VALUE
+ VOS_STATUS_E_INVAL: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WDA_DS_GetTxFlowMask
+(
+ v_PVOID_t pvosGCtx,
+ v_U8_t* puFlowMask
+);
+
+/*==========================================================================
+ FUNCTION WDA_HALDumpCmdReq
+
+ DESCRIPTION
+ Send Dump commandsto WDI
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pMac MAC global pointer
+ cmd Hal dump command
+ arg1 Dump command argument 1
+ arg2 Dump command argument 2
+ arg3 Dump command argument 3
+ arg4 Dump command argument 4
+
+ OUT
+ pBuffer Dump command Response buffer
+
+ RETURN VALUE
+ VOS_STATUS_E_FAULT: pointer is NULL and other errors
+ VOS_STATUS_SUCCESS: Everything is good :)
+
+ SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS WDA_HALDumpCmdReq(tpAniSirGlobal pMac,tANI_U32 cmd,
+ tANI_U32 arg1, tANI_U32 arg2, tANI_U32 arg3,
+ tANI_U32 arg4, tANI_U8 *pBuffer);
+
+/*==========================================================================
+ FUNCTION WDA_featureCapsExchange
+
+ DESCRIPTION
+ WDA API to invoke capability exchange between host and FW
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ pVosContext VOS context
+
+ OUT
+ NONE
+
+ RETURN VALUE
+ NONE
+
+ SIDE EFFECTS
+============================================================================*/
+void WDA_featureCapsExchange(v_PVOID_t pVosContext);
+
+/*==========================================================================
+ FUNCTION WDA_getHostWlanFeatCaps
+
+ DESCRIPTION
+ Wrapper for WDI API, that will return if the feature (enum value).passed
+ to this API is supported or not in Host
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ featEnumValue enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
+
+ OUT
+ NONE
+
+ RETURN VALUE
+ 0 - implies feature is NOT Supported
+ any non zero value - implies feature is SUPPORTED
+
+ SIDE EFFECTS
+============================================================================*/
+tANI_U8 WDA_getHostWlanFeatCaps(tANI_U8 featEnumValue);
+
+/*==========================================================================
+ FUNCTION WDA_getFwWlanFeatCaps
+
+ DESCRIPTION
+ Wrapper for WDI API, that will return if the feature (enum value).passed
+ to this API is supported or not in FW
+
+ DEPENDENCIES
+
+ PARAMETERS
+
+ IN
+ featEnumValue enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
+
+ OUT
+ NONE
+
+ RETURN VALUE
+ 0 - implies feature is NOT Supported
+ any non zero value - implies feature is SUPPORTED
+
+ SIDE EFFECTS
+============================================================================*/
+tANI_U8 WDA_getFwWlanFeatCaps(tANI_U8 featEnumValue);
+
+#endif
diff --git a/CORE/WDA/inc/wlan_qct_wda_msg.h b/CORE/WDA/inc/wlan_qct_wda_msg.h
new file mode 100644
index 0000000..952c217
--- /dev/null
+++ b/CORE/WDA/inc/wlan_qct_wda_msg.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+#ifndef WLAN_QCT_MSG_MAP_H
+#define WLAN_QCT_MSG_MAP_H
+
+/*===========================================================================
+
+ W L A N DEVICE ADAPTATION L A Y E R
+ MSG MAPPING
+
+
+DESCRIPTION
+ This file contains the external API exposed by the wlan adaptation layer
+
+
+ Copyright (c) 2008 QUALCOMM Incorporated. All Rights Reserved.
+ Qualcomm Confidential and Proprietary
+===========================================================================*/
+
+
+/*===========================================================================
+
+ EDIT HISTORY FOR FILE
+
+
+ This section contains comments describing changes made to the module.
+ Notice that changes are listed in reverse chronological order.
+
+
+ $Header:$ $DateTime: $ $Author: $
+
+
+when who what, where, why
+-------- --- ----------------------------------------------
+25/08/2010 adwivedi MAP WDA messages on Legacy HAL messages
+=========================================================================== */
+
+/* Add Include */
+#include "wlan_qct_pack_align.h"
+
+
+#define WDA_CONFIG_PARAM_UPDATE_REQ SIR_CFG_PARAM_UPDATE_IND
+
+#define ALIGNED_WORD_SIZE 4
+
+/* Config format required by HAL for each CFG item*/
+WPT_PACK_START
+typedef WPT_PACK_PRE struct
+{
+ /* Cfg Id. The Id required by HAL is exported by HAL
+ * in shared header file between UMAC and HAL.*/
+ tANI_U16 type;
+
+ /* Length of the Cfg. This parameter is used to go to next cfg
+ * in the TLV format.*/
+ tANI_U16 length;
+
+ /* Padding bytes for unaligned address's */
+ tANI_U16 padBytes;
+
+ /* Reserve bytes for making cfgVal to align address */
+ tANI_U16 reserved;
+
+ /* Following the uCfgLen field there should be a 'uCfgLen' bytes
+ * containing the uCfgValue ; tANI_U8 uCfgValue[uCfgLen] */
+}WPT_PACK_POST tHalCfg, *tpHalCfg;
+WPT_PACK_END
+
+/////#define WDA_UT
+#ifdef WDA_UT
+#define WDA_WDI_EVENT_MSG 0x00FF
+void WDI_processEvent(void *wdiEventData, void *pUserData);
+#endif
+
+#endif