prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
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