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 */