prima: WLAN Driver Release 3.1.7.9

This is the initial release of the Prima WLAN Driver
diff --git a/CORE/TL/src/wlan_qct_tli.h b/CORE/TL/src/wlan_qct_tli.h
new file mode 100644
index 0000000..4845331
--- /dev/null
+++ b/CORE/TL/src/wlan_qct_tli.h
@@ -0,0 +1,1595 @@
+/*
+ * 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_TLI_H
+#define WLAN_QCT_TLI_H
+
+/*===========================================================================
+
+               W L A N   T R A N S P O R T   L A Y E R
+                     I N T E R N A L   A P I
+
+
+DESCRIPTION
+  This file contains the internal declarations used within wlan transport
+  layer module.
+
+  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
+--------    ---    ----------------------------------------------------------
+02/19/10    bad     Fixed 802.11 to 802.3 ft issues with WAPI
+01/14/10    rnair   Fixed the byte order for the WAI packet type.
+01/08/10    lti     Added TL Data Caching
+10/09/09    rnair   Add support for WAPI
+02/02/09    sch     Add Handoff support
+12/09/08    lti     Fixes for AMSS compilation
+12/02/08    lti     Fix fo trigger frame generation
+10/31/08    lti     Fix fo TL tx suspend
+10/01/08    lti     Merged in fixes from reordering
+09/05/08    lti     Fixes following QOS unit testing
+08/06/08    lti     Added QOS support
+07/18/08    lti     Fixes following integration
+                    Added frame translation
+06/26/08    lti     Fixes following unit testing
+05/05/08    lti     Created module.
+
+===========================================================================*/
+
+
+
+/*===========================================================================
+
+                          INCLUDE FILES FOR MODULE
+
+===========================================================================*/
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+#include "vos_packet.h"
+#include "vos_api.h"
+#include "vos_timer.h"
+#include "vos_mq.h"
+#include "vos_list.h"
+#include "wlan_qct_tl.h"
+#include "pmcApi.h"
+#include "wlan_qct_hal.h"
+
+
+#define STATIC  static
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+/*Maximum number of TIDs */
+#define WLAN_MAX_TID                          8
+
+/** The define is moved to external header file to be used by HDD */
+#ifndef WLAN_SOFTAP_FEATURE
+/*Maximum number of supported stations */
+#define WLAN_MAX_STA_COUNT                    5
+#endif
+
+/*Offset of the OUI field inside the LLC/SNAP header*/
+#define WLANTL_LLC_OUI_OFFSET                 3
+
+/*Size of the OUI type field inside the LLC/SNAP header*/
+#define WLANTL_LLC_OUI_SIZE                   3
+
+/*Offset of the protocol type field inside the LLC/SNAP header*/
+#define WLANTL_LLC_PROTO_TYPE_OFFSET  WLANTL_LLC_OUI_OFFSET +  WLANTL_LLC_OUI_SIZE
+
+/*Size of the protocol type field inside the LLC/SNAP header*/
+#define WLANTL_LLC_PROTO_TYPE_SIZE            2
+
+/*802.1x protocol type */
+#define WLANTL_LLC_8021X_TYPE            0x888E
+
+/*WAPI protocol type */
+#define WLANTL_LLC_WAI_TYPE              0x88b4
+
+/*Length offset inside the AMSDU sub-frame header*/
+#define WLANTL_AMSDU_SUBFRAME_LEN_OFFSET     12
+
+/*802.3 header definitions*/
+#define  WLANTL_802_3_HEADER_LEN             14
+
+/* Offset of DA field in a 802.3 header*/
+#define  WLANTL_802_3_HEADER_DA_OFFSET        0
+
+/*802.11 header definitions - header len without QOS ctrl field*/
+#define  WLANTL_802_11_HEADER_LEN            24
+
+/*802.11 header length + QOS ctrl field*/
+#define  WLANTL_MPDU_HEADER_LEN              32
+
+/*802.11 header definitions*/
+#define  WLANTL_802_11_MAX_HEADER_LEN        40
+
+/*802.11 header definitions - qos ctrl field len*/
+#define  WLANTL_802_11_HEADER_QOS_CTL         2
+
+/*802.11 header definitions - ht ctrl field len*/
+#define  WLANTL_802_11_HEADER_HT_CTL          4
+
+/* Offset of Addr1 field in a 802.11 header*/
+#define  WLANTL_802_11_HEADER_ADDR1_OFFSET    4
+
+/*802.11 ADDR4 MAC addr field len */
+#define  WLANTL_802_11_HEADER_ADDR4_LEN       VOS_MAC_ADDR_SIZE
+
+/* Length of an AMSDU sub-frame */
+#define TL_AMSDU_SUBFRM_HEADER_LEN           14
+
+/* Length of the LLC header*/
+#define WLANTL_LLC_HEADER_LEN   8
+
+/*As per 802.11 spec */
+#define WLANTL_MGMT_FRAME_TYPE       0x00
+#define WLANTL_CTRL_FRAME_TYPE       0x10
+#define WLANTL_DATA_FRAME_TYPE       0x20
+
+/*Value of the data type field in the 802.11 frame */
+#define WLANTL_80211_DATA_TYPE         0x02
+#define WLANTL_80211_DATA_QOS_SUBTYPE  0x08
+#define WLANTL_80211_NULL_QOS_SUBTYPE  0x0C
+
+
+/*-------------------------------------------------------------------------
+  BT-AMP related definition - !!! should probably be moved to BT-AMP header
+---------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------
+  Helper macros
+---------------------------------------------------------------------------*/
+ /*Checks STA index validity*/
+#define WLANTL_STA_ID_INVALID( _staid )( _staid >= WLAN_MAX_STA_COUNT )
+
+/*As per Libra behavior */
+#define WLANTL_STA_ID_BCAST     0xFF
+
+/*Checks TID validity*/
+#define WLANTL_TID_INVALID( _tid )     ( _tid >= WLAN_MAX_TID )
+
+/*Checks AC validity*/
+#define WLANTL_AC_INVALID( _tid )     ( _tid >= WLANTL_MAX_AC )
+
+/*Determines the addr field offset based on the frame xtl bit*/
+#define WLANTL_MAC_ADDR_ALIGN( _dxtl )                                    \
+      ( ( 0 == _dxtl ) ?                              \
+        WLANTL_802_3_HEADER_DA_OFFSET: WLANTL_802_11_HEADER_ADDR1_OFFSET )
+
+/*Determines the header len based on the disable xtl field*/
+#define WLANTL_MAC_HEADER_LEN( _dxtl)                                     \
+      ( ( 0 == _dxtl )?                               \
+         WLANTL_802_3_HEADER_LEN:WLANTL_802_11_HEADER_LEN )
+
+/*Determines the necesary length of the BD header - in case
+  UMA translation is enabled enough room needs to be left in front of the
+  packet for the 802.11 header to be inserted*/
+#define WLANTL_BD_HEADER_LEN( _dxtl )                                    \
+      ( ( 0 == _dxtl )?                               \
+         (WLANHAL_TX_BD_HEADER_SIZE+WLANTL_802_11_MAX_HEADER_LEN): WLANHAL_TX_BD_HEADER_SIZE )
+
+
+#define WLAN_TL_CEIL( _a, _b)  (( 0 != (_a)%(_b))? (_a)/(_b) + 1: (_a)/(_b))
+
+/*get TL control block from vos global context */
+#define VOS_GET_TL_CB(_pvosGCtx) \
+        (WLANTL_CbType*)vos_get_context( VOS_MODULE_ID_TL, _pvosGCtx)
+
+/* Check whether Rx frame is LS or EAPOL packet (other than data) */
+#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
+        (WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
+        (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType)
+
+/*get RSSI0 from a RX BD*/
+/* 7 bits in phystats represent -100dBm to +27dBm */
+#define WLAN_TL_RSSI_CORRECTION 100
+#define WLANTL_GETRSSI0(pBD)    (WDA_GETRSSI0(pBD) - WLAN_TL_RSSI_CORRECTION)
+
+/*get RSSI1 from a RX BD*/
+#define WLANTL_GETRSSI1(pBD)    (WDA_GETRSSI1(pBD) - WLAN_TL_RSSI_CORRECTION)
+
+/* Check whether Rx frame is LS or EAPOL packet (other than data) */
+#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
+        (WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
+        (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType)
+
+/*---------------------------------------------------------------------------
+  TL signals for TX thread
+---------------------------------------------------------------------------*/
+typedef enum
+{
+  /*Suspend signal - following serialization of a HAL suspend request*/
+  WLANTL_TX_SIG_SUSPEND = 0,
+
+  /*Res need signal - triggered when all pending TxComp have been received
+   and TL is low on resources*/
+  WLANTL_TX_RES_NEEDED  = 1,
+
+  /* Forwarding RX cached frames */
+  WLANTL_TX_FWD_CACHED  = 2,
+
+  /* Serialized STAID AC Indication */
+  WLANTL_TX_STAID_AC_IND = 3,
+
+  /* Serialzie TX transmit request */
+  WLANTL_TX_START_XMIT = 4,
+
+  /* Serialzie Finish UL Authentication request */
+  WLANTL_FINISH_ULA   = 5,
+
+  WLANTL_TX_MAX
+}WLANTL_TxSignalsType;
+
+/*---------------------------------------------------------------------------
+  STA Event type
+---------------------------------------------------------------------------*/
+typedef enum
+{
+  /* Transmit frame event */
+  WLANTL_TX_EVENT = 0,
+
+  /* Receive frame event */
+  WLANTL_RX_EVENT = 1,
+
+  WLANTL_MAX_EVENT
+}WLANTL_STAEventType;
+
+/*---------------------------------------------------------------------------
+
+  DESCRIPTION
+    State machine used by transport layer for receiving or transmitting
+    packets.
+
+  PARAMETERS
+
+   IN
+   pAdapter:        pointer to the global adapter context; a handle to TL's
+                    control block can be extracted from its context
+   ucSTAId:         identifier of the station being processed
+   vosDataBuff:    pointer to the tx/rx vos buffer
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+---------------------------------------------------------------------------*/
+typedef VOS_STATUS (*WLANTL_STAFuncType)( v_PVOID_t     pAdapter,
+                                          v_U8_t        ucSTAId,
+                                          vos_pkt_t**   pvosDataBuff);
+
+/*---------------------------------------------------------------------------
+  STA FSM Entry type
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  WLANTL_STAFuncType  pfnSTATbl[WLANTL_MAX_EVENT];
+} WLANTL_STAFsmEntryType;
+
+/* Receive in connected state - only EAPOL or WAI*/
+VOS_STATUS WLANTL_STARxConn( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* Transmit in connected state - only EAPOL or WAI*/
+VOS_STATUS WLANTL_STATxConn( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* Receive in authenticated state - all data allowed*/
+VOS_STATUS WLANTL_STARxAuth( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* Transmit in authenticated state - all data allowed*/
+VOS_STATUS WLANTL_STATxAuth( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* Receive in disconnected state - no data allowed*/
+VOS_STATUS WLANTL_STARxDisc( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* Transmit in disconnected state - no data allowed*/
+VOS_STATUS WLANTL_STATxDisc( v_PVOID_t     pAdapter,
+                             v_U8_t        ucSTAId,
+                             vos_pkt_t**   pvosDataBuff );
+
+/* TL State Machine */
+STATIC const WLANTL_STAFsmEntryType tlSTAFsm[WLANTL_STA_MAX_STATE] =
+{
+  /* WLANTL_STA_INIT */
+  { {
+    NULL,      /* WLANTL_TX_EVENT - no packets should get transmitted*/
+    NULL,      /* WLANTL_RX_EVENT - no packets should be received - drop*/
+  } },
+
+  /* WLANTL_STA_CONNECTED */
+  { {
+    WLANTL_STATxConn,      /* WLANTL_TX_EVENT - only EAPoL or WAI frames are allowed*/
+    WLANTL_STARxConn,      /* WLANTL_RX_EVENT - only EAPoL or WAI frames can be rx*/
+  } },
+
+  /* WLANTL_STA_AUTHENTICATED */
+  { {
+    WLANTL_STATxAuth,      /* WLANTL_TX_EVENT - all data frames allowed*/
+    WLANTL_STARxAuth,      /* WLANTL_RX_EVENT - all data frames can be rx */
+  } },
+
+  /* WLANTL_STA_DISCONNECTED */
+  { {
+    WLANTL_STATxDisc,      /* WLANTL_TX_EVENT - do nothing */
+    WLANTL_STARxDisc,      /* WLANTL_RX_EVENT - frames will still be fwd-ed*/
+  } }
+};
+
+/*---------------------------------------------------------------------------
+  Reordering information
+---------------------------------------------------------------------------*/
+
+#define WLANTL_MAX_WINSIZE      64
+#define WLANTL_MAX_BA_SESSION   40
+
+typedef struct
+{
+   v_BOOL_t     isAvailable;
+#ifdef ANI_CHIPSET_VOLANS
+   v_U64_t      ullReplayCounter[WLANTL_MAX_WINSIZE];
+#endif
+   v_PVOID_t    arrayBuffer[WLANTL_MAX_WINSIZE];
+} WLANTL_REORDER_BUFFER_T;
+
+
+/* To handle Frame Q aging, timer is needed
+ * After timer expired, Qed frames have to be routed to upper layer
+ * WLANTL_TIMER_EXPIER_UDATA_T is user data type for timer callback
+ */
+typedef struct
+{
+   /* Global contect, HAL, HDD need this */
+   v_PVOID_t          pAdapter;
+
+   /* TL context handle */
+   v_PVOID_t          pTLHandle;
+
+   /* Current STAID, to know STA context */
+   v_U32_t            STAID;
+
+   v_U8_t             TID;
+} WLANTL_TIMER_EXPIER_UDATA_T;
+
+typedef struct
+{
+  /*specifies if re-order session exists*/
+  v_U8_t             ucExists;
+
+  /* Current Index */
+  v_U32_t             ucCIndex;
+
+  /* Count of the total packets in list*/
+  v_U16_t            usCount;
+
+  /* vos ttimer to handle Qed frames aging */
+  vos_timer_t        agingTimer;
+
+  /* Q windoe size */
+  v_U32_t            winSize;
+
+  /* Available RX frame buffer size */
+  v_U32_t            bufferSize;
+
+  /* Start Sequence number */
+  v_U32_t            SSN;
+
+  /* BA session ID, generate by HAL */
+  v_U32_t            sessionID;
+
+  v_U32_t            currentESN;
+
+  v_U32_t            pendingFramesCount;
+
+  vos_lock_t         reorderLock;
+
+  /* Aging timer callback user data */
+  WLANTL_TIMER_EXPIER_UDATA_T timerUdata;
+
+  WLANTL_REORDER_BUFFER_T     *reorderBuffer;
+}WLANTL_BAReorderType;
+
+
+/*---------------------------------------------------------------------------
+  UAPSD information
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* flag set when a UAPSD session with triggers generated in fw is being set*/
+  v_U8_t              ucSet;
+}WLANTL_UAPSDInfoType;
+
+/*---------------------------------------------------------------------------
+  STA Client type
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* Flag that keeps track of registration; only one STA with unique
+     ID allowed */
+  v_U8_t                        ucExists;
+
+  /*The flag controls the Rx path for the station - as long as there are
+    packets at sta level that need to be fwd-ed the Rx path will be blocked,
+    it will become unblocked only when the cached frames were fwd-ed;
+    while the rx path is blocked all rx-ed frames for that STA will be cached
+    */
+  v_U8_t                        ucRxBlocked;
+
+  /* Function pointer to the receive packet handler from HDD */
+  WLANTL_STARxCBType            pfnSTARx;
+
+  /* Function pointer to the transmit complete confirmation handler
+    from HDD */
+  WLANTL_TxCompCBType           pfnSTATxComp;
+
+  /* Function pointer to the packet retrieval routine in HDD */
+  WLANTL_STAFetchPktCBType      pfnSTAFetchPkt;
+
+  /* Reordering information for the STA */
+  WLANTL_BAReorderType          atlBAReorderInfo[WLAN_MAX_TID];
+
+  /* STA Descriptor, contains information related to the new added STA */
+  WLAN_STADescType              wSTADesc;
+
+  /* Current connectivity state of the STA */
+  WLANTL_STAStateType           tlState;
+
+  /* Station priority */
+  WLANTL_STAPriorityType        tlPri;
+
+  /* Value of the averaged RSSI for this station */
+  v_S7_t                        rssiAvg;
+
+  /* Value of the averaged RSSI for this station in BMPS */
+  v_S7_t                        rssiAvgBmps;
+
+  /* Value of the averaged RSSI for this station */
+  v_U32_t                       uLinkQualityAvg;
+
+  /* Tx packet count per station per TID */
+  v_U32_t                       auTxCount[WLAN_MAX_TID];
+
+  /* Rx packet count per station per TID */
+  v_U32_t                       auRxCount[WLAN_MAX_TID];
+
+  /* Suspend flag */
+  v_U8_t                        ucTxSuspended;
+
+  /* Pointer to the AMSDU chain maintained by the AMSDU de-aggregation
+     completion sub-module */
+  vos_pkt_t*                    vosAMSDUChainRoot;
+
+  /* Pointer to the root of the chain */
+  vos_pkt_t*                    vosAMSDUChain;
+
+  /* Used for saving/restoring frame header for 802.3/11 AMSDU sub-frames */
+  v_U8_t                        aucMPDUHeader[WLANTL_MPDU_HEADER_LEN];
+
+  /* length of the header */
+  v_U8_t                        ucMPDUHeaderLen;
+
+  /* Enabled ACs currently serviced by TL (automatic setup in TL)*/
+  v_U8_t                        aucACMask[WLANTL_MAX_AC];
+
+  /* Current AC to be retrieved */
+  WLANTL_ACEnumType             ucCurrentAC;
+
+  /*Packet pending flag - set if tx is pending for the station*/
+  v_U8_t                        ucPktPending;
+  
+  /*used on tx packet to signal when there is no more data to tx for the 
+   moment=> packets can be passed to BAL */
+  v_U8_t                    ucNoMoreData;
+
+  /* Last serviced AC to be retrieved */
+  WLANTL_ACEnumType             ucServicedAC;
+
+   /* Current weight for the AC */
+  v_U8_t                        ucCurrentWeight;
+
+  /* Info used for UAPSD trigger frame generation  */
+  WLANTL_UAPSDInfoType          wUAPSDInfo[WLANTL_MAX_AC];
+
+  /* flag to signal if a trigger frames is pending */
+  v_U8_t                        ucPendingTrigFrm;
+
+  WLANTL_TRANSFER_STA_TYPE      trafficStatistics;
+
+  /*Members needed for packet caching in TL*/
+  /*Begining of the cached packets chain*/
+  vos_pkt_t*                 vosBegCachedFrame;
+
+  /*Begining of the cached packets chain*/
+  vos_pkt_t*                 vosEndCachedFrame;
+
+#ifdef WLAN_SOFTAP_FEATURE
+
+  /* LWM related fields */
+
+  //current station is slow. LWM mode is enabled.
+  v_BOOL_t ucLwmModeEnabled;
+  //LWM events is reported when LWM mode is on. Able to send more traffic
+  //under the constraints of uBuffThresholdMax
+  v_BOOL_t ucLwmEventReported;
+
+  //v_U8_t uLwmEventReported;
+
+  /* Flow control fields */
+  //memory used in previous round
+  v_U8_t bmuMemConsumed;
+
+  //the number packets injected in this round
+  v_U32_t uIngress_length;
+
+  //number of packets allowed in current round beforing receiving new FW memory updates
+  v_U32_t uBuffThresholdMax;
+
+
+  // v_U32_t uEgress_length;
+
+  // v_U32_t uIngress_length;
+
+  // v_U32_t uBuffThresholdMax;
+
+  // v_U32_t uBuffThresholdUsed;
+
+  /* Value used to set LWM in FW. Initialized to 1/3* WLAN_STA_BMU_THRESHOLD_MAX
+     In the future, it can be dynamically adjusted if we find the reason to implement
+     such algorithm. */
+  v_U32_t uLwmThreshold;
+
+  //tx disable forced by Riva software
+  v_U16_t fcStaTxDisabled;
+
+  /** HDD buffer status for packet scheduling. Once HDD
+   *  stores a new packet in a previously empty queue, it
+   *  will call TL interface to set the fields. The fields
+   *  will be cleaned by TL when TL can't fetch more packets
+   *  from the queue. */
+  // the fields are ucPktPending and ucACMask;
+
+  /* Queue to keep unicast station management frame */
+  vos_list_t pStaManageQ;
+#endif
+
+#ifdef ANI_CHIPSET_VOLANS
+ /* 1 means replay check is needed for the station,
+  * 0 means replay check is not needed for the station*/
+  v_BOOL_t      ucIsReplayCheckValid;
+
+ /* It contains 48-bit replay counter per TID*/
+  v_U64_t       ullReplayCounter[WLANTL_MAX_TID];
+
+ /* It contains no of replay packets found per STA.
+    It is for debugging purpose only.*/
+  v_U32_t       ulTotalReplayPacketsDetected;
+#endif
+
+}WLANTL_STAClientType;
+
+/*---------------------------------------------------------------------------
+  BAP Client type
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* flag that keeps track of registration; only one non-data BT-AMP client
+     allowed */
+  v_U8_t                    ucExists;
+
+  /* pointer to the receive processing routine for non-data BT-AMP frames */
+  WLANTL_BAPRxCBType        pfnTlBAPRx;
+
+  /* pointer to the flush call back complete function */
+  WLANTL_FlushOpCompCBType    pfnFlushOpCompleteCb;
+
+  /* pointer to the non-data BT-AMP frame pending transmission */
+  vos_pkt_t*                vosPendingDataBuff;
+
+  /* BAP station ID */
+  v_U8_t                    ucBAPSTAId;
+}WLANTL_BAPClientType;
+
+
+/*---------------------------------------------------------------------------
+  Management Frame Client type
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* flag that keeps track of registration; only one management frame
+     client allowed */
+  v_U8_t                       ucExists;
+
+  /* pointer to the receive processing routine for management frames */
+  WLANTL_MgmtFrmRxCBType       pfnTlMgmtFrmRx;
+
+  /* pointer to the management frame pending transmission */
+  vos_pkt_t*                   vosPendingDataBuff;
+}WLANTL_MgmtFrmClientType;
+
+typedef struct
+{
+   WLANTL_TrafficStatusChangedCBType  trafficCB;
+   WLANTL_HO_TRAFFIC_STATUS_TYPE      trafficStatus;
+   v_U32_t                            idleThreshold;
+   v_U32_t                            measurePeriod;
+   v_U32_t                            rtRXFrameCount;
+   v_U32_t                            rtTXFrameCount;
+   v_U32_t                            nrtRXFrameCount;
+   v_U32_t                            nrtTXFrameCount;
+   vos_timer_t                        trafficTimer;
+   v_PVOID_t                          usrCtxt;
+} WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE;
+
+typedef struct
+{
+   v_S7_t                          rssiValue;
+   v_U8_t                          triggerEvent[WLANTL_HS_NUM_CLIENT];
+   v_PVOID_t                       usrCtxt[WLANTL_HS_NUM_CLIENT];
+   v_U8_t                          whoIsClient[WLANTL_HS_NUM_CLIENT];
+   WLANTL_RSSICrossThresholdCBType crossCBFunction[WLANTL_HS_NUM_CLIENT];
+   v_U8_t                          numClient;
+} WLANTL_HO_RSSI_INDICATION_TYPE;
+
+typedef struct
+{
+   v_U8_t                             numThreshold;
+   v_U8_t                             regionNumber;
+   v_S7_t                             historyRSSI;
+   v_U8_t                             alpha;
+   v_U32_t                            sampleTime;
+   v_U32_t                            fwNotification;
+} WLANTL_CURRENT_HO_STATE_TYPE;
+
+typedef struct
+{
+   WLANTL_HO_RSSI_INDICATION_TYPE       registeredInd[WLANTL_MAX_AVAIL_THRESHOLD];
+   WLANTL_CURRENT_HO_STATE_TYPE         currentHOState;
+   WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE currentTraffic;
+   v_PVOID_t                            macCtxt;
+   vos_lock_t                           hosLock;
+} WLANTL_HO_SUPPORT_TYPE;
+
+/*---------------------------------------------------------------------------
+  TL control block type
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* TL configuration information */
+  WLANTL_ConfigInfoType     tlConfigInfo;
+
+  /* list of the active stations */
+  WLANTL_STAClientType      *atlSTAClients; /*Allocate memory [WLAN_MAX_STA_COUNT] of station */
+
+  /* information on the management frame client */
+  WLANTL_MgmtFrmClientType  tlMgmtFrmClient;
+
+  /* information on the BT AMP client */
+  WLANTL_BAPClientType      tlBAPClient;
+
+  /* number of packets sent to BAL waiting for tx complete confirmation */
+  v_U16_t                   usPendingTxCompleteCount;
+
+  /* global suspend flag */
+  v_U8_t                    ucTxSuspended;
+
+  /* resource flag */
+  v_U32_t                   uResCount;
+
+  /* dummy vos buffer - used for chains */
+  vos_pkt_t*                vosDummyBuf;
+
+  /* temporary buffer for storing the packet that no longer fits */
+  vos_pkt_t*                vosTempBuf;
+
+  /* The value of the station id and AC for the cached buffer */
+  v_U8_t                    ucCachedSTAId;
+  v_U8_t                    ucCachedAC;
+
+  /* Last registered STA - until multiple sta support is added this will
+     be used always for tx */
+  v_U8_t                    ucRegisteredStaId;
+
+  /*Current TL STA used for TX*/
+  v_U8_t                    ucCurrentSTA;
+
+  WLANTL_REORDER_BUFFER_T   *reorderBufferPool; /* Allocate memory for [WLANTL_MAX_BA_SESSION] sessions */
+
+  WLANTL_HO_SUPPORT_TYPE    hoSupport;
+
+  v_BOOL_t                  bUrgent;
+
+#ifdef WLAN_SOFTAP_FEATURE
+
+  /* resource flag */
+  v_U32_t bd_pduResCount;
+
+  /* time interval to evaluate LWM mode*/
+  //vos_timer_t tThresholdSamplingTimer;
+
+#if 0
+  //information fields for flow control
+  tFcTxParams_type tlFCInfo;
+#endif
+
+  vos_pkt_t*                vosTxFCBuf;
+
+  /* LWM mode is enabled or not for each station. Bit-wise operation.32 station maximum. */
+  //  v_U32_t uStaLwmMask;
+
+  /* LWM event is reported by FW. */
+  //  v_U32_t uStaLwmEventReported;
+
+  /** Multiple Station Scheduling and TL queue management.
+      4 HDD BC/MC data packet queue status is specified as Station 0's status. Weights used
+      in WFQ algorith are initialized in WLANTL_OPEN and contained in tlConfigInfo field.
+      Each station has fields of ucPktPending and AC mask to tell whether a AC has traffic
+      or not.
+
+      Stations are served in a round-robin fashion from highest priority to lowest priority.
+      The number of round-robin times of each prioirty equals to the WFQ weights and differetiates
+      the traffic of different prioirty. As such, stations can not provide low priority packets if
+      high priority packets are all served.
+      */
+
+  /* Currently served station id. Reuse ucCurrentSTA field. */
+  //v_U8_t uCurStaId;
+
+  /* Current served station ID in round-robin method to traverse all stations.*/
+  WLANTL_ACEnumType uCurServedAC;
+
+  /* How many weights have not been served in current AC. */
+  v_U8_t ucCurLeftWeight;
+
+  /* BC/MC management queue. Current implementation uses queue size 1. Will check whether
+    size N is supported. */
+  vos_list_t pMCBCManageQ;
+
+  v_U32_t sendFCFrame;
+
+  v_U8_t done_once;
+  v_U8_t uFramesProcThres;
+#endif
+  /*whether we are in BMPS/UAPSD/WOWL mode, since the latter 2 need to be BMPS first*/
+  v_BOOL_t                  isBMPS;
+}WLANTL_CbType;
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_GetFrames
+
+  DESCRIPTION
+
+    BAL calls this function at the request of the lower bus interface.
+    When this request is being received TL will retrieve packets from HDD
+    in accordance with the priority rules and the count supplied by BAL.
+
+  DEPENDENCIES
+
+    HDD must have registered with TL at least one STA before this function
+    can be called.
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to TL's
+                    or BAL's control block can be extracted from its context
+    uSize:          maximum size accepted by the lower layer
+    uFlowMask       TX flow control mask. Each bit is defined as 
+                    WDA_TXFlowEnumType
+
+    OUT
+    vosDataBuff:   it will contain a pointer to the first buffer supplied
+                    by TL, if there is more than one packet supplied, TL
+                    will chain them through vOSS buffers
+
+  RETURN VALUE
+
+    The result code associated with performing the operation
+
+    1 or more: number of required resources if there are still frames to fetch
+               For Volans, it's BD/PDU numbers. For Prima, it's free DXE descriptors.
+    0 : error or HDD queues are drained
+
+  SIDE EFFECTS
+
+============================================================================*/
+v_U32_t
+WLANTL_GetFrames
+(
+  v_PVOID_t       pAdapter,
+  vos_pkt_t     **ppFrameDataBuff,
+  v_U32_t         uSize,
+#if defined( FEATURE_WLAN_INTEGRATED_SOC )
+  v_U8_t          uFlowMask,
+#endif
+  v_BOOL_t*       pbUrgent
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_TxComp
+
+  DESCRIPTION
+    It is being called by BAL upon asynchronous notification of the packet
+    or packets  being sent over the bus.
+
+  DEPENDENCIES
+    Tx complete cannot be called without a previous transmit.
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to TL's
+                    or BAL's control block can be extracted from its context
+    vosDataBuff:   it will contain a pointer to the first buffer for which
+                    the BAL report is being made, if there is more then one
+                    packet they will be chained using vOSS buffers.
+    wTxSTAtus:      the status of the transmitted packet, see above chapter
+                    on HDD interaction for a list of possible values
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_TxComp
+(
+  v_PVOID_t      pAdapter,
+  vos_pkt_t     *pFrameDataBuff,
+  VOS_STATUS     wTxStatus
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_RxFrames
+
+  DESCRIPTION
+    Callback registered by TL and called by BAL when a packet is received
+    over the bus. Upon the call of this function TL will make the necessary
+    decision with regards to the forwarding or queuing of this packet and
+    the layer it needs to be delivered to.
+
+  DEPENDENCIES
+    TL must be initiailized before this function gets called.
+    If the frame carried is a data frame then the station for which it is
+    destined to must have been previously registered with TL.
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to TL's
+                    or BAL's control block can be extracted from its context
+
+    vosDataBuff:   it will contain a pointer to the first buffer received,
+                    if there is more then one packet they will be chained
+                    using vOSS buffers.
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_RxFrames
+(
+  v_PVOID_t      pAdapter,
+  vos_pkt_t     *pFrameDataBuff
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_RxCachedFrames
+
+  DESCRIPTION
+    Utility function used by TL to forward the cached frames to a particular
+    station;
+
+  DEPENDENCIES
+    TL must be initiailized before this function gets called.
+    If the frame carried is a data frame then the station for which it is
+    destined to must have been previously registered with TL.
+
+  PARAMETERS
+
+    IN
+    pTLCb:   pointer to TL handle
+
+    ucSTAId:    station for which we need to forward the packets
+
+    vosDataBuff:   it will contain a pointer to the first cached buffer
+                   received, if there is more then one packet they will be
+                   chained using vOSS buffers.
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+    VOS_STATUS_E_INVAL:   Input parameters are invalid
+    VOS_STATUS_E_FAULT:   pointer to TL cb is NULL ; access would cause a
+                          page fault
+    VOS_STATUS_SUCCESS:   Everything is good :)
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_RxCachedFrames
+(
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          ucSTAId,
+  vos_pkt_t*      vosDataBuff
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_ResourceCB
+
+  DESCRIPTION
+    Called by the TL when it has packets available for transmission.
+
+  DEPENDENCIES
+    The TL must be registered with BAL before this function can be called.
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to TL's
+                    or BAL's control block can be extracted from its context
+    uCount:         avail resource count obtained from hw
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_ResourceCB
+(
+  v_PVOID_t       pAdapter,
+  v_U32_t         uCount
+);
+
+
+/*==========================================================================
+  FUNCTION    WLANTL_ProcessMainMessage
+
+  DESCRIPTION
+    Called by VOSS when a message was serialized for TL through the
+    main thread/task.
+
+  DEPENDENCIES
+    The TL must be initialized before this function 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
+    message:        type and content of the message
+
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_ProcessMainMessage
+(
+  v_PVOID_t        pAdapter,
+  vos_msg_t*       message
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_ProcessTxMessage
+
+  DESCRIPTION
+    Called by VOSS when a message was serialized for TL through the
+    tx thread/task.
+
+  DEPENDENCIES
+    The TL must be initialized before this function 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
+    message:        type and content of the message
+
+
+  RETURN VALUE
+
+    The result code associated with performing the operation
+    VOS_STATUS_SUCCESS:  Everything is good :)
+
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_ProcessTxMessage
+(
+  v_PVOID_t        pAdapter,
+  vos_msg_t*       message
+);
+
+/*==========================================================================
+  FUNCTION    WLAN_TLGetNextTxIds
+
+  DESCRIPTION
+    Gets the next station and next AC in the list
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+   OUT
+   pucSTAId:    STAtion ID
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLAN_TLGetNextTxIds
+(
+  v_PVOID_t    pAdapter,
+  v_U8_t*      pucSTAId
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_CleanCb
+
+  DESCRIPTION
+    Cleans TL control block
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    IN
+    pTLCb:       pointer to TL's control block
+    ucEmpty:     set if TL has to clean up the queues and release pedning pkts
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_CleanCB
+(
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          ucEmpty
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_CleanSTA
+
+  DESCRIPTION
+    Cleans a station control block.
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to TL's
+                    control block can be extracted from its context
+    ucEmpty:        if set the queues and pending pkts will be emptyed
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_CleanSTA
+(
+  WLANTL_STAClientType*  ptlSTAClient,
+  v_U8_t                 ucEmpty
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_GetTxResourcesCB
+
+  DESCRIPTION
+    Processing function for Resource needed signal. A request will be issued
+    to BAL to get mor tx resources.
+
+  DEPENDENCIES
+    The TL must be initialized before this function can be called.
+
+  PARAMETERS
+
+    IN
+    pvosGCtx:       pointer to the global vos context; a handle to TL's
+                    control block can be extracted from its context
+
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+    VOS_STATUS_E_FAULT:   pointer to TL cb is NULL ; access would cause a
+                          page fault
+    VOS_STATUS_SUCCESS:   Everything is good :)
+
+  Other values can be returned as a result of a function call, please check
+  corresponding API for more info.
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_GetTxResourcesCB
+(
+  v_PVOID_t        pvosGCtx
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_PrepareBDHeader
+
+  DESCRIPTION
+    Callback function for serializing Suspend signal through Tx thread
+
+  DEPENDENCIES
+    Just notify HAL that suspend in TL is complete.
+
+  PARAMETERS
+
+   IN
+   pAdapter:       pointer to the global adapter context; a handle to TL's
+                   control block can be extracted from its context
+   pUserData:      user data sent with the callback
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+void
+WLANTL_PrepareBDHeader
+(
+  vos_pkt_t*      vosDataBuff,
+  v_PVOID_t*      ppvBDHeader,
+  v_MACADDR_t*    pvDestMacAdddr,
+  v_U8_t          ucDisableFrmXtl,
+  VOS_STATUS*     pvosSTAtus,
+  v_U16_t*        usPktLen,
+  v_U8_t          ucQosEnabled,
+  v_U8_t          ucWDSEnabled,
+  v_U8_t          extraHeadSpace
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_Translate8023To80211Header
+
+  DESCRIPTION
+    Inline function for translating and 802.3 header into an 802.11 header.
+
+  DEPENDENCIES
+
+
+  PARAMETERS
+
+   IN
+    pTLCb:            TL control block
+    ucStaId:          station ID
+
+   IN/OUT
+    vosDataBuff:      vos data buffer, will contain the new header on output
+
+   OUT
+    pvosStatus:       status of the operation
+
+  RETURN VALUE
+    No return.
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_Translate8023To80211Header
+(
+  vos_pkt_t*      vosDataBuff,
+  VOS_STATUS*     pvosStatus,
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          ucStaId,
+  v_U8_t          ucUP,
+  v_U8_t          *ucWDSEnabled,
+  v_U8_t          *extraHeadSpace
+);
+
+/*==========================================================================
+  FUNCTION    WLANTL_Translate80211To8023Header
+
+  DESCRIPTION
+    Inline function for translating and 802.11 header into an 802.3 header.
+
+  DEPENDENCIES
+
+
+  PARAMETERS
+
+   IN
+    pTLCb:            TL control block
+    ucStaId:          station ID
+    ucHeaderLen:      Length of the header from BD
+    ucActualHLen:     Length of header including padding or any other trailers
+
+   IN/OUT
+    vosDataBuff:      vos data buffer, will contain the new header on output
+
+   OUT
+    pvosStatus:       status of the operation
+
+  RETURN VALUE
+    Status of the operation
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_Translate80211To8023Header
+(
+  vos_pkt_t*      vosDataBuff,
+  VOS_STATUS*     pvosStatus,
+  v_U16_t         usActualHLen,  
+  v_U8_t          ucHeaderLen,
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          ucSTAId
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_MgmtFrmRxDefaultCb
+
+  DESCRIPTION
+    Default Mgmt Frm rx callback: asserts all the time. If this function gets
+    called  it means there is no registered rx cb pointer for Mgmt Frm.
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    Not used.
+
+  RETURN VALUE
+   Always FAILURE.
+
+============================================================================*/
+VOS_STATUS
+WLANTL_MgmtFrmRxDefaultCb
+(
+  v_PVOID_t  pAdapter,
+  v_PVOID_t  vosBuff
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_STARxDefaultCb
+
+  DESCRIPTION
+    Default BAP rx callback: asserts all the time. If this function gets
+    called  it means there is no registered rx cb pointer for BAP.
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    Not used.
+
+  RETURN VALUE
+   Always FAILURE.
+
+============================================================================*/
+VOS_STATUS
+WLANTL_BAPRxDefaultCb
+(
+  v_PVOID_t    pAdapter,
+  vos_pkt_t*   vosDataBuff,
+  WLANTL_BAPFrameEnumType frameType
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_STARxDefaultCb
+
+  DESCRIPTION
+    Default STA rx callback: asserts all the time. If this function gets
+    called  it means there is no registered rx cb pointer for station.
+    (Mem corruption most likely, it should never happen)
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    Not used.
+
+  RETURN VALUE
+   Always FAILURE.
+
+============================================================================*/
+VOS_STATUS
+WLANTL_STARxDefaultCb
+(
+  v_PVOID_t               pAdapter,
+  vos_pkt_t*              vosDataBuff,
+  v_U8_t                  ucSTAId,
+  WLANTL_RxMetaInfoType*  pRxMetaInfo
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_STAFetchPktDefaultCb
+
+  DESCRIPTION
+    Default fetch callback: asserts all the time. If this function gets
+    called  it means there is no registered fetch cb pointer for station.
+    (Mem corruption most likely, it should never happen)
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+    Not used.
+
+  RETURN VALUE
+   Always FAILURE.
+
+============================================================================*/
+VOS_STATUS
+WLANTL_STAFetchPktDefaultCb
+(
+  v_PVOID_t              pAdapter,
+  v_U8_t*                pucSTAId,
+  WLANTL_ACEnumType      ucAC,
+  vos_pkt_t**            vosDataBuff,
+  WLANTL_MetaInfoType*   tlMetaInfo
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_TxCompDefaultCb
+
+  DESCRIPTION
+    Default tx complete handler. It will release the completed pkt to
+    prevent memory leaks.
+
+  PARAMETERS
+
+    IN
+    pAdapter:       pointer to the global adapter context; a handle to
+                    TL/HAL/PE/BAP/HDD control block can be extracted from
+                    its context
+    vosDataBuff:   pointer to the VOSS data buffer that was transmitted
+    wTxSTAtus:      status of the transmission
+
+
+  RETURN VALUE
+    The result code associated with performing the operation; please
+    check vos_pkt_return_pkt for possible error codes.
+
+============================================================================*/
+VOS_STATUS
+WLANTL_TxCompDefaultCb
+(
+ v_PVOID_t      pAdapter,
+ vos_pkt_t*     vosDataBuff,
+ VOS_STATUS     wTxSTAtus
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_PackUpTriggerFrame
+
+  DESCRIPTION
+    Packs up a trigger frame and places it in TL's cache for tx and notifies
+    BAL
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+  IN
+    pTLCb:         pointer to the TL control block
+    pfnSTATxComp:  Tx Complete Cb to be used when frame is received
+    ucSTAId:       station id
+    ucAC:          access category
+
+  RETURN VALUE
+    None
+
+  SIDE EFFECTS
+
+============================================================================*/
+VOS_STATUS
+WLANTL_PackUpTriggerFrame
+(
+  WLANTL_CbType*            pTLCb,
+  WLANTL_TxCompCBType       pfnSTATxComp,
+  v_U8_t                    ucSTAId,
+  WLANTL_ACEnumType         ucAC
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_TxCompTriggFrameSI
+
+  DESCRIPTION
+    Tx complete handler for the service interval trigger frame.
+    It will restart the SI timer.
+
+  PARAMETERS
+
+   IN
+    pvosGCtx:       pointer to the global vos context; a handle to
+                    TL/HAL/PE/BAP/HDD control block can be extracted from
+                    its context
+    vosDataBuff:   pointer to the VOSS data buffer that was transmitted
+    wTxSTAtus:      status of the transmission
+
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+ ============================================================================*/
+VOS_STATUS
+WLANTL_TxCompTriggFrameSI
+(
+  v_PVOID_t      pvosGCtx,
+  vos_pkt_t*     vosDataBuff,
+  VOS_STATUS     wTxSTAtus
+);
+
+/*==========================================================================
+
+  FUNCTION    WLANTL_TxCompTriggFrameSI
+
+  DESCRIPTION
+    Tx complete handler for the service interval trigger frame.
+    It will restart the SI timer.
+
+  PARAMETERS
+
+   IN
+    pvosGCtx:       pointer to the global vos context; a handle to
+                    TL/HAL/PE/BAP/HDD control block can be extracted from
+                    its context
+    vosDataBuff:   pointer to the VOSS data buffer that was transmitted
+    wTxSTAtus:      status of the transmission
+
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+============================================================================*/
+VOS_STATUS
+WLANTL_TxCompTriggFrameDI
+(
+ v_PVOID_t      pvosGCtx,
+ vos_pkt_t*     vosDataBuff,
+ VOS_STATUS     wTxSTAtus
+);
+
+/*==========================================================================
+
+   FUNCTION
+
+   DESCRIPTION   Read RSSI value out of a RX BD
+
+   PARAMETERS: Caller must validate all parameters
+
+   RETURN VALUE
+
+============================================================================*/
+VOS_STATUS WLANTL_ReadRSSI
+(
+   v_PVOID_t        pAdapter,
+   v_PVOID_t        pBDHeader,
+   v_U8_t           STAid
+);
+
+
+
+void WLANTL_PowerStateChangedCB
+(
+   v_PVOID_t pAdapter,
+   tPmcState newState
+);
+
+#ifdef WLAN_SOFTAP_FEATURE
+/*==========================================================================
+  FUNCTION   WLANTL_FwdPktToHDD 
+
+  DESCRIPTION
+    Determine the Destation Station ID and route the Frame to Upper Layer
+
+  DEPENDENCIES
+
+  PARAMETERS
+
+   IN
+   pvosGCtx:       pointer to the global vos context; a handle to TL's
+                   control block can be extracted from its context
+   ucSTAId:        identifier of the station being processed
+   vosDataBuff:   pointer to the rx vos buffer
+
+  RETURN VALUE
+    The result code associated with performing the operation
+
+    VOS_STATUS_E_INVAL:   invalid input parameters
+    VOS_STATUS_E_FAULT:   pointer to TL cb is NULL ; access would cause a
+                          page fault
+    VOS_STATUS_SUCCESS:   Everything is good :)
+
+  SIDE EFFECTS
+
+============================================================================*/
+
+VOS_STATUS
+WLANTL_FwdPktToHDD
+(
+  v_PVOID_t       pvosGCtx,
+  vos_pkt_t*     pvosDataBuff,
+  v_U8_t          ucSTAId
+);
+
+#endif /* #ifdef WLANTL_SOFTAP_FEATURE */
+#endif /* #ifndef WLAN_QCT_TLI_H */