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