blob: 3089d9514ff3aa859324560f83f541c89207768d [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * */
24#ifndef WLAN_QCT_TLI_H
25#define WLAN_QCT_TLI_H
26
27/*===========================================================================
28
29 W L A N T R A N S P O R T L A Y E R
30 I N T E R N A L A P I
31
32
33DESCRIPTION
34 This file contains the internal declarations used within wlan transport
35 layer module.
36
37 Copyright (c) 2008 QUALCOMM Incorporated. All Rights Reserved.
38 Qualcomm Confidential and Proprietary
39===========================================================================*/
40
41
42/*===========================================================================
43
44 EDIT HISTORY FOR FILE
45
46
47 This section contains comments describing changes made to the module.
48 Notice that changes are listed in reverse chronological order.
49
50
51 $Header:$ $DateTime: $ $Author: $
52
53
54when who what, where, why
55-------- --- ----------------------------------------------------------
5602/19/10 bad Fixed 802.11 to 802.3 ft issues with WAPI
5701/14/10 rnair Fixed the byte order for the WAI packet type.
5801/08/10 lti Added TL Data Caching
5910/09/09 rnair Add support for WAPI
6002/02/09 sch Add Handoff support
6112/09/08 lti Fixes for AMSS compilation
6212/02/08 lti Fix fo trigger frame generation
6310/31/08 lti Fix fo TL tx suspend
6410/01/08 lti Merged in fixes from reordering
6509/05/08 lti Fixes following QOS unit testing
6608/06/08 lti Added QOS support
6707/18/08 lti Fixes following integration
68 Added frame translation
6906/26/08 lti Fixes following unit testing
7005/05/08 lti Created module.
71
72===========================================================================*/
73
74
75
76/*===========================================================================
77
78 INCLUDE FILES FOR MODULE
79
80===========================================================================*/
81
82/*----------------------------------------------------------------------------
83 * Include Files
84 * -------------------------------------------------------------------------*/
85#include "vos_packet.h"
86#include "vos_api.h"
87#include "vos_timer.h"
88#include "vos_mq.h"
89#include "vos_list.h"
90#include "wlan_qct_tl.h"
91#include "pmcApi.h"
92#include "wlan_qct_hal.h"
93
94
95#define STATIC static
96
97/*----------------------------------------------------------------------------
98 * Preprocessor Definitions and Constants
99 * -------------------------------------------------------------------------*/
100
101/*Maximum number of TIDs */
102#define WLAN_MAX_TID 8
103
104/** The define is moved to external header file to be used by HDD */
105#ifndef WLAN_SOFTAP_FEATURE
106/*Maximum number of supported stations */
107#define WLAN_MAX_STA_COUNT 5
108#endif
109
110/*Offset of the OUI field inside the LLC/SNAP header*/
111#define WLANTL_LLC_OUI_OFFSET 3
112
113/*Size of the OUI type field inside the LLC/SNAP header*/
114#define WLANTL_LLC_OUI_SIZE 3
115
116/*Offset of the protocol type field inside the LLC/SNAP header*/
117#define WLANTL_LLC_PROTO_TYPE_OFFSET WLANTL_LLC_OUI_OFFSET + WLANTL_LLC_OUI_SIZE
118
119/*Size of the protocol type field inside the LLC/SNAP header*/
120#define WLANTL_LLC_PROTO_TYPE_SIZE 2
121
122/*802.1x protocol type */
123#define WLANTL_LLC_8021X_TYPE 0x888E
124
125/*WAPI protocol type */
126#define WLANTL_LLC_WAI_TYPE 0x88b4
127
128/*Length offset inside the AMSDU sub-frame header*/
129#define WLANTL_AMSDU_SUBFRAME_LEN_OFFSET 12
130
131/*802.3 header definitions*/
132#define WLANTL_802_3_HEADER_LEN 14
133
134/* Offset of DA field in a 802.3 header*/
135#define WLANTL_802_3_HEADER_DA_OFFSET 0
136
137/*802.11 header definitions - header len without QOS ctrl field*/
138#define WLANTL_802_11_HEADER_LEN 24
139
140/*802.11 header length + QOS ctrl field*/
141#define WLANTL_MPDU_HEADER_LEN 32
142
143/*802.11 header definitions*/
144#define WLANTL_802_11_MAX_HEADER_LEN 40
145
146/*802.11 header definitions - qos ctrl field len*/
147#define WLANTL_802_11_HEADER_QOS_CTL 2
148
149/*802.11 header definitions - ht ctrl field len*/
150#define WLANTL_802_11_HEADER_HT_CTL 4
151
152/* Offset of Addr1 field in a 802.11 header*/
153#define WLANTL_802_11_HEADER_ADDR1_OFFSET 4
154
155/*802.11 ADDR4 MAC addr field len */
156#define WLANTL_802_11_HEADER_ADDR4_LEN VOS_MAC_ADDR_SIZE
157
158/* Length of an AMSDU sub-frame */
159#define TL_AMSDU_SUBFRM_HEADER_LEN 14
160
161/* Length of the LLC header*/
162#define WLANTL_LLC_HEADER_LEN 8
163
164/*As per 802.11 spec */
165#define WLANTL_MGMT_FRAME_TYPE 0x00
166#define WLANTL_CTRL_FRAME_TYPE 0x10
167#define WLANTL_DATA_FRAME_TYPE 0x20
168
169/*Value of the data type field in the 802.11 frame */
170#define WLANTL_80211_DATA_TYPE 0x02
171#define WLANTL_80211_DATA_QOS_SUBTYPE 0x08
172#define WLANTL_80211_NULL_QOS_SUBTYPE 0x0C
173
174
175/*-------------------------------------------------------------------------
176 BT-AMP related definition - !!! should probably be moved to BT-AMP header
177---------------------------------------------------------------------------*/
178
179/*-------------------------------------------------------------------------
180 Helper macros
181---------------------------------------------------------------------------*/
182 /*Checks STA index validity*/
183#define WLANTL_STA_ID_INVALID( _staid )( _staid >= WLAN_MAX_STA_COUNT )
184
185/*As per Libra behavior */
186#define WLANTL_STA_ID_BCAST 0xFF
187
188/*Checks TID validity*/
189#define WLANTL_TID_INVALID( _tid ) ( _tid >= WLAN_MAX_TID )
190
191/*Checks AC validity*/
192#define WLANTL_AC_INVALID( _tid ) ( _tid >= WLANTL_MAX_AC )
193
194/*Determines the addr field offset based on the frame xtl bit*/
195#define WLANTL_MAC_ADDR_ALIGN( _dxtl ) \
196 ( ( 0 == _dxtl ) ? \
197 WLANTL_802_3_HEADER_DA_OFFSET: WLANTL_802_11_HEADER_ADDR1_OFFSET )
198
199/*Determines the header len based on the disable xtl field*/
200#define WLANTL_MAC_HEADER_LEN( _dxtl) \
201 ( ( 0 == _dxtl )? \
202 WLANTL_802_3_HEADER_LEN:WLANTL_802_11_HEADER_LEN )
203
204/*Determines the necesary length of the BD header - in case
205 UMA translation is enabled enough room needs to be left in front of the
206 packet for the 802.11 header to be inserted*/
207#define WLANTL_BD_HEADER_LEN( _dxtl ) \
208 ( ( 0 == _dxtl )? \
209 (WLANHAL_TX_BD_HEADER_SIZE+WLANTL_802_11_MAX_HEADER_LEN): WLANHAL_TX_BD_HEADER_SIZE )
210
211
212#define WLAN_TL_CEIL( _a, _b) (( 0 != (_a)%(_b))? (_a)/(_b) + 1: (_a)/(_b))
213
214/*get TL control block from vos global context */
215#define VOS_GET_TL_CB(_pvosGCtx) \
216 (WLANTL_CbType*)vos_get_context( VOS_MODULE_ID_TL, _pvosGCtx)
217
218/* Check whether Rx frame is LS or EAPOL packet (other than data) */
219#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
220 (WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
221 (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType)
222
223/*get RSSI0 from a RX BD*/
224/* 7 bits in phystats represent -100dBm to +27dBm */
225#define WLAN_TL_RSSI_CORRECTION 100
226#define WLANTL_GETRSSI0(pBD) (WDA_GETRSSI0(pBD) - WLAN_TL_RSSI_CORRECTION)
227
228/*get RSSI1 from a RX BD*/
229#define WLANTL_GETRSSI1(pBD) (WDA_GETRSSI1(pBD) - WLAN_TL_RSSI_CORRECTION)
230
231/* Check whether Rx frame is LS or EAPOL packet (other than data) */
232#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
233 (WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
234 (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType)
235
236/*---------------------------------------------------------------------------
237 TL signals for TX thread
238---------------------------------------------------------------------------*/
239typedef enum
240{
241 /*Suspend signal - following serialization of a HAL suspend request*/
242 WLANTL_TX_SIG_SUSPEND = 0,
243
244 /*Res need signal - triggered when all pending TxComp have been received
245 and TL is low on resources*/
246 WLANTL_TX_RES_NEEDED = 1,
247
248 /* Forwarding RX cached frames */
249 WLANTL_TX_FWD_CACHED = 2,
250
251 /* Serialized STAID AC Indication */
252 WLANTL_TX_STAID_AC_IND = 3,
253
254 /* Serialzie TX transmit request */
255 WLANTL_TX_START_XMIT = 4,
256
257 /* Serialzie Finish UL Authentication request */
258 WLANTL_FINISH_ULA = 5,
259
260 WLANTL_TX_MAX
261}WLANTL_TxSignalsType;
262
263/*---------------------------------------------------------------------------
264 STA Event type
265---------------------------------------------------------------------------*/
266typedef enum
267{
268 /* Transmit frame event */
269 WLANTL_TX_EVENT = 0,
270
271 /* Receive frame event */
272 WLANTL_RX_EVENT = 1,
273
274 WLANTL_MAX_EVENT
275}WLANTL_STAEventType;
276
277/*---------------------------------------------------------------------------
278
279 DESCRIPTION
280 State machine used by transport layer for receiving or transmitting
281 packets.
282
283 PARAMETERS
284
285 IN
286 pAdapter: pointer to the global adapter context; a handle to TL's
287 control block can be extracted from its context
288 ucSTAId: identifier of the station being processed
289 vosDataBuff: pointer to the tx/rx vos buffer
290
291 RETURN VALUE
292 The result code associated with performing the operation
293
294---------------------------------------------------------------------------*/
295typedef VOS_STATUS (*WLANTL_STAFuncType)( v_PVOID_t pAdapter,
296 v_U8_t ucSTAId,
297 vos_pkt_t** pvosDataBuff);
298
299/*---------------------------------------------------------------------------
300 STA FSM Entry type
301---------------------------------------------------------------------------*/
302typedef struct
303{
304 WLANTL_STAFuncType pfnSTATbl[WLANTL_MAX_EVENT];
305} WLANTL_STAFsmEntryType;
306
307/* Receive in connected state - only EAPOL or WAI*/
308VOS_STATUS WLANTL_STARxConn( v_PVOID_t pAdapter,
309 v_U8_t ucSTAId,
310 vos_pkt_t** pvosDataBuff );
311
312/* Transmit in connected state - only EAPOL or WAI*/
313VOS_STATUS WLANTL_STATxConn( v_PVOID_t pAdapter,
314 v_U8_t ucSTAId,
315 vos_pkt_t** pvosDataBuff );
316
317/* Receive in authenticated state - all data allowed*/
318VOS_STATUS WLANTL_STARxAuth( v_PVOID_t pAdapter,
319 v_U8_t ucSTAId,
320 vos_pkt_t** pvosDataBuff );
321
322/* Transmit in authenticated state - all data allowed*/
323VOS_STATUS WLANTL_STATxAuth( v_PVOID_t pAdapter,
324 v_U8_t ucSTAId,
325 vos_pkt_t** pvosDataBuff );
326
327/* Receive in disconnected state - no data allowed*/
328VOS_STATUS WLANTL_STARxDisc( v_PVOID_t pAdapter,
329 v_U8_t ucSTAId,
330 vos_pkt_t** pvosDataBuff );
331
332/* Transmit in disconnected state - no data allowed*/
333VOS_STATUS WLANTL_STATxDisc( v_PVOID_t pAdapter,
334 v_U8_t ucSTAId,
335 vos_pkt_t** pvosDataBuff );
336
337/* TL State Machine */
338STATIC const WLANTL_STAFsmEntryType tlSTAFsm[WLANTL_STA_MAX_STATE] =
339{
340 /* WLANTL_STA_INIT */
341 { {
342 NULL, /* WLANTL_TX_EVENT - no packets should get transmitted*/
343 NULL, /* WLANTL_RX_EVENT - no packets should be received - drop*/
344 } },
345
346 /* WLANTL_STA_CONNECTED */
347 { {
348 WLANTL_STATxConn, /* WLANTL_TX_EVENT - only EAPoL or WAI frames are allowed*/
349 WLANTL_STARxConn, /* WLANTL_RX_EVENT - only EAPoL or WAI frames can be rx*/
350 } },
351
352 /* WLANTL_STA_AUTHENTICATED */
353 { {
354 WLANTL_STATxAuth, /* WLANTL_TX_EVENT - all data frames allowed*/
355 WLANTL_STARxAuth, /* WLANTL_RX_EVENT - all data frames can be rx */
356 } },
357
358 /* WLANTL_STA_DISCONNECTED */
359 { {
360 WLANTL_STATxDisc, /* WLANTL_TX_EVENT - do nothing */
361 WLANTL_STARxDisc, /* WLANTL_RX_EVENT - frames will still be fwd-ed*/
362 } }
363};
364
365/*---------------------------------------------------------------------------
366 Reordering information
367---------------------------------------------------------------------------*/
368
369#define WLANTL_MAX_WINSIZE 64
370#define WLANTL_MAX_BA_SESSION 40
371
372typedef struct
373{
374 v_BOOL_t isAvailable;
375#ifdef ANI_CHIPSET_VOLANS
376 v_U64_t ullReplayCounter[WLANTL_MAX_WINSIZE];
377#endif
378 v_PVOID_t arrayBuffer[WLANTL_MAX_WINSIZE];
379} WLANTL_REORDER_BUFFER_T;
380
381
382/* To handle Frame Q aging, timer is needed
383 * After timer expired, Qed frames have to be routed to upper layer
384 * WLANTL_TIMER_EXPIER_UDATA_T is user data type for timer callback
385 */
386typedef struct
387{
388 /* Global contect, HAL, HDD need this */
389 v_PVOID_t pAdapter;
390
391 /* TL context handle */
392 v_PVOID_t pTLHandle;
393
394 /* Current STAID, to know STA context */
395 v_U32_t STAID;
396
397 v_U8_t TID;
398} WLANTL_TIMER_EXPIER_UDATA_T;
399
400typedef struct
401{
402 /*specifies if re-order session exists*/
403 v_U8_t ucExists;
404
405 /* Current Index */
406 v_U32_t ucCIndex;
407
408 /* Count of the total packets in list*/
409 v_U16_t usCount;
410
411 /* vos ttimer to handle Qed frames aging */
412 vos_timer_t agingTimer;
413
414 /* Q windoe size */
415 v_U32_t winSize;
416
417 /* Available RX frame buffer size */
418 v_U32_t bufferSize;
419
420 /* Start Sequence number */
421 v_U32_t SSN;
422
423 /* BA session ID, generate by HAL */
424 v_U32_t sessionID;
425
426 v_U32_t currentESN;
427
428 v_U32_t pendingFramesCount;
429
430 vos_lock_t reorderLock;
431
432 /* Aging timer callback user data */
433 WLANTL_TIMER_EXPIER_UDATA_T timerUdata;
434
435 WLANTL_REORDER_BUFFER_T *reorderBuffer;
436}WLANTL_BAReorderType;
437
438
439/*---------------------------------------------------------------------------
440 UAPSD information
441---------------------------------------------------------------------------*/
442typedef struct
443{
444 /* flag set when a UAPSD session with triggers generated in fw is being set*/
445 v_U8_t ucSet;
446}WLANTL_UAPSDInfoType;
447
448/*---------------------------------------------------------------------------
449 STA Client type
450---------------------------------------------------------------------------*/
451typedef struct
452{
453 /* Flag that keeps track of registration; only one STA with unique
454 ID allowed */
455 v_U8_t ucExists;
456
457 /*The flag controls the Rx path for the station - as long as there are
458 packets at sta level that need to be fwd-ed the Rx path will be blocked,
459 it will become unblocked only when the cached frames were fwd-ed;
460 while the rx path is blocked all rx-ed frames for that STA will be cached
461 */
462 v_U8_t ucRxBlocked;
463
464 /* Function pointer to the receive packet handler from HDD */
465 WLANTL_STARxCBType pfnSTARx;
466
467 /* Function pointer to the transmit complete confirmation handler
468 from HDD */
469 WLANTL_TxCompCBType pfnSTATxComp;
470
471 /* Function pointer to the packet retrieval routine in HDD */
472 WLANTL_STAFetchPktCBType pfnSTAFetchPkt;
473
474 /* Reordering information for the STA */
475 WLANTL_BAReorderType atlBAReorderInfo[WLAN_MAX_TID];
476
477 /* STA Descriptor, contains information related to the new added STA */
478 WLAN_STADescType wSTADesc;
479
480 /* Current connectivity state of the STA */
481 WLANTL_STAStateType tlState;
482
483 /* Station priority */
484 WLANTL_STAPriorityType tlPri;
485
486 /* Value of the averaged RSSI for this station */
487 v_S7_t rssiAvg;
488
489 /* Value of the averaged RSSI for this station in BMPS */
490 v_S7_t rssiAvgBmps;
491
492 /* Value of the averaged RSSI for this station */
493 v_U32_t uLinkQualityAvg;
494
495 /* Tx packet count per station per TID */
496 v_U32_t auTxCount[WLAN_MAX_TID];
497
498 /* Rx packet count per station per TID */
499 v_U32_t auRxCount[WLAN_MAX_TID];
500
501 /* Suspend flag */
502 v_U8_t ucTxSuspended;
503
504 /* Pointer to the AMSDU chain maintained by the AMSDU de-aggregation
505 completion sub-module */
506 vos_pkt_t* vosAMSDUChainRoot;
507
508 /* Pointer to the root of the chain */
509 vos_pkt_t* vosAMSDUChain;
510
511 /* Used for saving/restoring frame header for 802.3/11 AMSDU sub-frames */
512 v_U8_t aucMPDUHeader[WLANTL_MPDU_HEADER_LEN];
513
514 /* length of the header */
515 v_U8_t ucMPDUHeaderLen;
516
517 /* Enabled ACs currently serviced by TL (automatic setup in TL)*/
518 v_U8_t aucACMask[WLANTL_MAX_AC];
519
520 /* Current AC to be retrieved */
521 WLANTL_ACEnumType ucCurrentAC;
522
523 /*Packet pending flag - set if tx is pending for the station*/
524 v_U8_t ucPktPending;
525
526 /*used on tx packet to signal when there is no more data to tx for the
527 moment=> packets can be passed to BAL */
528 v_U8_t ucNoMoreData;
529
530 /* Last serviced AC to be retrieved */
531 WLANTL_ACEnumType ucServicedAC;
532
533 /* Current weight for the AC */
534 v_U8_t ucCurrentWeight;
535
536 /* Info used for UAPSD trigger frame generation */
537 WLANTL_UAPSDInfoType wUAPSDInfo[WLANTL_MAX_AC];
538
539 /* flag to signal if a trigger frames is pending */
540 v_U8_t ucPendingTrigFrm;
541
542 WLANTL_TRANSFER_STA_TYPE trafficStatistics;
543
544 /*Members needed for packet caching in TL*/
545 /*Begining of the cached packets chain*/
546 vos_pkt_t* vosBegCachedFrame;
547
548 /*Begining of the cached packets chain*/
549 vos_pkt_t* vosEndCachedFrame;
550
551#ifdef WLAN_SOFTAP_FEATURE
552
553 /* LWM related fields */
554
555 //current station is slow. LWM mode is enabled.
556 v_BOOL_t ucLwmModeEnabled;
557 //LWM events is reported when LWM mode is on. Able to send more traffic
558 //under the constraints of uBuffThresholdMax
559 v_BOOL_t ucLwmEventReported;
560
561 //v_U8_t uLwmEventReported;
562
563 /* Flow control fields */
564 //memory used in previous round
565 v_U8_t bmuMemConsumed;
566
567 //the number packets injected in this round
568 v_U32_t uIngress_length;
569
570 //number of packets allowed in current round beforing receiving new FW memory updates
571 v_U32_t uBuffThresholdMax;
572
573
574 // v_U32_t uEgress_length;
575
576 // v_U32_t uIngress_length;
577
578 // v_U32_t uBuffThresholdMax;
579
580 // v_U32_t uBuffThresholdUsed;
581
582 /* Value used to set LWM in FW. Initialized to 1/3* WLAN_STA_BMU_THRESHOLD_MAX
583 In the future, it can be dynamically adjusted if we find the reason to implement
584 such algorithm. */
585 v_U32_t uLwmThreshold;
586
587 //tx disable forced by Riva software
588 v_U16_t fcStaTxDisabled;
589
590 /** HDD buffer status for packet scheduling. Once HDD
591 * stores a new packet in a previously empty queue, it
592 * will call TL interface to set the fields. The fields
593 * will be cleaned by TL when TL can't fetch more packets
594 * from the queue. */
595 // the fields are ucPktPending and ucACMask;
596
597 /* Queue to keep unicast station management frame */
598 vos_list_t pStaManageQ;
599#endif
600
601#ifdef ANI_CHIPSET_VOLANS
602 /* 1 means replay check is needed for the station,
603 * 0 means replay check is not needed for the station*/
604 v_BOOL_t ucIsReplayCheckValid;
605
606 /* It contains 48-bit replay counter per TID*/
607 v_U64_t ullReplayCounter[WLANTL_MAX_TID];
608
609 /* It contains no of replay packets found per STA.
610 It is for debugging purpose only.*/
611 v_U32_t ulTotalReplayPacketsDetected;
612#endif
613
614}WLANTL_STAClientType;
615
616/*---------------------------------------------------------------------------
617 BAP Client type
618---------------------------------------------------------------------------*/
619typedef struct
620{
621 /* flag that keeps track of registration; only one non-data BT-AMP client
622 allowed */
623 v_U8_t ucExists;
624
625 /* pointer to the receive processing routine for non-data BT-AMP frames */
626 WLANTL_BAPRxCBType pfnTlBAPRx;
627
628 /* pointer to the flush call back complete function */
629 WLANTL_FlushOpCompCBType pfnFlushOpCompleteCb;
630
631 /* pointer to the non-data BT-AMP frame pending transmission */
632 vos_pkt_t* vosPendingDataBuff;
633
634 /* BAP station ID */
635 v_U8_t ucBAPSTAId;
636}WLANTL_BAPClientType;
637
638
639/*---------------------------------------------------------------------------
640 Management Frame Client type
641---------------------------------------------------------------------------*/
642typedef struct
643{
644 /* flag that keeps track of registration; only one management frame
645 client allowed */
646 v_U8_t ucExists;
647
648 /* pointer to the receive processing routine for management frames */
649 WLANTL_MgmtFrmRxCBType pfnTlMgmtFrmRx;
650
651 /* pointer to the management frame pending transmission */
652 vos_pkt_t* vosPendingDataBuff;
653}WLANTL_MgmtFrmClientType;
654
655typedef struct
656{
657 WLANTL_TrafficStatusChangedCBType trafficCB;
658 WLANTL_HO_TRAFFIC_STATUS_TYPE trafficStatus;
659 v_U32_t idleThreshold;
660 v_U32_t measurePeriod;
661 v_U32_t rtRXFrameCount;
662 v_U32_t rtTXFrameCount;
663 v_U32_t nrtRXFrameCount;
664 v_U32_t nrtTXFrameCount;
665 vos_timer_t trafficTimer;
666 v_PVOID_t usrCtxt;
667} WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE;
668
669typedef struct
670{
671 v_S7_t rssiValue;
672 v_U8_t triggerEvent[WLANTL_HS_NUM_CLIENT];
673 v_PVOID_t usrCtxt[WLANTL_HS_NUM_CLIENT];
674 v_U8_t whoIsClient[WLANTL_HS_NUM_CLIENT];
675 WLANTL_RSSICrossThresholdCBType crossCBFunction[WLANTL_HS_NUM_CLIENT];
676 v_U8_t numClient;
677} WLANTL_HO_RSSI_INDICATION_TYPE;
678
679typedef struct
680{
681 v_U8_t numThreshold;
682 v_U8_t regionNumber;
683 v_S7_t historyRSSI;
684 v_U8_t alpha;
685 v_U32_t sampleTime;
686 v_U32_t fwNotification;
687} WLANTL_CURRENT_HO_STATE_TYPE;
688
689typedef struct
690{
691 WLANTL_HO_RSSI_INDICATION_TYPE registeredInd[WLANTL_MAX_AVAIL_THRESHOLD];
692 WLANTL_CURRENT_HO_STATE_TYPE currentHOState;
693 WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE currentTraffic;
694 v_PVOID_t macCtxt;
695 vos_lock_t hosLock;
696} WLANTL_HO_SUPPORT_TYPE;
697
698/*---------------------------------------------------------------------------
699 TL control block type
700---------------------------------------------------------------------------*/
701typedef struct
702{
703 /* TL configuration information */
704 WLANTL_ConfigInfoType tlConfigInfo;
705
706 /* list of the active stations */
707 WLANTL_STAClientType *atlSTAClients; /*Allocate memory [WLAN_MAX_STA_COUNT] of station */
708
709 /* information on the management frame client */
710 WLANTL_MgmtFrmClientType tlMgmtFrmClient;
711
712 /* information on the BT AMP client */
713 WLANTL_BAPClientType tlBAPClient;
714
715 /* number of packets sent to BAL waiting for tx complete confirmation */
716 v_U16_t usPendingTxCompleteCount;
717
718 /* global suspend flag */
719 v_U8_t ucTxSuspended;
720
721 /* resource flag */
722 v_U32_t uResCount;
723
724 /* dummy vos buffer - used for chains */
725 vos_pkt_t* vosDummyBuf;
726
727 /* temporary buffer for storing the packet that no longer fits */
728 vos_pkt_t* vosTempBuf;
729
730 /* The value of the station id and AC for the cached buffer */
731 v_U8_t ucCachedSTAId;
732 v_U8_t ucCachedAC;
733
734 /* Last registered STA - until multiple sta support is added this will
735 be used always for tx */
736 v_U8_t ucRegisteredStaId;
737
738 /*Current TL STA used for TX*/
739 v_U8_t ucCurrentSTA;
740
741 WLANTL_REORDER_BUFFER_T *reorderBufferPool; /* Allocate memory for [WLANTL_MAX_BA_SESSION] sessions */
742
743 WLANTL_HO_SUPPORT_TYPE hoSupport;
744
745 v_BOOL_t bUrgent;
746
747#ifdef WLAN_SOFTAP_FEATURE
748
749 /* resource flag */
750 v_U32_t bd_pduResCount;
751
752 /* time interval to evaluate LWM mode*/
753 //vos_timer_t tThresholdSamplingTimer;
754
755#if 0
756 //information fields for flow control
757 tFcTxParams_type tlFCInfo;
758#endif
759
760 vos_pkt_t* vosTxFCBuf;
761
762 /* LWM mode is enabled or not for each station. Bit-wise operation.32 station maximum. */
763 // v_U32_t uStaLwmMask;
764
765 /* LWM event is reported by FW. */
766 // v_U32_t uStaLwmEventReported;
767
768 /** Multiple Station Scheduling and TL queue management.
769 4 HDD BC/MC data packet queue status is specified as Station 0's status. Weights used
770 in WFQ algorith are initialized in WLANTL_OPEN and contained in tlConfigInfo field.
771 Each station has fields of ucPktPending and AC mask to tell whether a AC has traffic
772 or not.
773
774 Stations are served in a round-robin fashion from highest priority to lowest priority.
775 The number of round-robin times of each prioirty equals to the WFQ weights and differetiates
776 the traffic of different prioirty. As such, stations can not provide low priority packets if
777 high priority packets are all served.
778 */
779
780 /* Currently served station id. Reuse ucCurrentSTA field. */
781 //v_U8_t uCurStaId;
782
783 /* Current served station ID in round-robin method to traverse all stations.*/
784 WLANTL_ACEnumType uCurServedAC;
785
786 /* How many weights have not been served in current AC. */
787 v_U8_t ucCurLeftWeight;
788
789 /* BC/MC management queue. Current implementation uses queue size 1. Will check whether
790 size N is supported. */
791 vos_list_t pMCBCManageQ;
792
793 v_U32_t sendFCFrame;
794
795 v_U8_t done_once;
796 v_U8_t uFramesProcThres;
797#endif
798 /*whether we are in BMPS/UAPSD/WOWL mode, since the latter 2 need to be BMPS first*/
799 v_BOOL_t isBMPS;
800}WLANTL_CbType;
801
802/*==========================================================================
803
804 FUNCTION WLANTL_GetFrames
805
806 DESCRIPTION
807
808 BAL calls this function at the request of the lower bus interface.
809 When this request is being received TL will retrieve packets from HDD
810 in accordance with the priority rules and the count supplied by BAL.
811
812 DEPENDENCIES
813
814 HDD must have registered with TL at least one STA before this function
815 can be called.
816
817 PARAMETERS
818
819 IN
820 pAdapter: pointer to the global adapter context; a handle to TL's
821 or BAL's control block can be extracted from its context
822 uSize: maximum size accepted by the lower layer
823 uFlowMask TX flow control mask. Each bit is defined as
824 WDA_TXFlowEnumType
825
826 OUT
827 vosDataBuff: it will contain a pointer to the first buffer supplied
828 by TL, if there is more than one packet supplied, TL
829 will chain them through vOSS buffers
830
831 RETURN VALUE
832
833 The result code associated with performing the operation
834
835 1 or more: number of required resources if there are still frames to fetch
836 For Volans, it's BD/PDU numbers. For Prima, it's free DXE descriptors.
837 0 : error or HDD queues are drained
838
839 SIDE EFFECTS
840
841============================================================================*/
842v_U32_t
843WLANTL_GetFrames
844(
845 v_PVOID_t pAdapter,
846 vos_pkt_t **ppFrameDataBuff,
847 v_U32_t uSize,
848#if defined( FEATURE_WLAN_INTEGRATED_SOC )
849 v_U8_t uFlowMask,
850#endif
851 v_BOOL_t* pbUrgent
852);
853
854/*==========================================================================
855
856 FUNCTION WLANTL_TxComp
857
858 DESCRIPTION
859 It is being called by BAL upon asynchronous notification of the packet
860 or packets being sent over the bus.
861
862 DEPENDENCIES
863 Tx complete cannot be called without a previous transmit.
864
865 PARAMETERS
866
867 IN
868 pAdapter: pointer to the global adapter context; a handle to TL's
869 or BAL's control block can be extracted from its context
870 vosDataBuff: it will contain a pointer to the first buffer for which
871 the BAL report is being made, if there is more then one
872 packet they will be chained using vOSS buffers.
873 wTxSTAtus: the status of the transmitted packet, see above chapter
874 on HDD interaction for a list of possible values
875
876 RETURN VALUE
877 The result code associated with performing the operation
878
879 SIDE EFFECTS
880
881============================================================================*/
882VOS_STATUS
883WLANTL_TxComp
884(
885 v_PVOID_t pAdapter,
886 vos_pkt_t *pFrameDataBuff,
887 VOS_STATUS wTxStatus
888);
889
890/*==========================================================================
891
892 FUNCTION WLANTL_RxFrames
893
894 DESCRIPTION
895 Callback registered by TL and called by BAL when a packet is received
896 over the bus. Upon the call of this function TL will make the necessary
897 decision with regards to the forwarding or queuing of this packet and
898 the layer it needs to be delivered to.
899
900 DEPENDENCIES
901 TL must be initiailized before this function gets called.
902 If the frame carried is a data frame then the station for which it is
903 destined to must have been previously registered with TL.
904
905 PARAMETERS
906
907 IN
908 pAdapter: pointer to the global adapter context; a handle to TL's
909 or BAL's control block can be extracted from its context
910
911 vosDataBuff: it will contain a pointer to the first buffer received,
912 if there is more then one packet they will be chained
913 using vOSS buffers.
914
915 RETURN VALUE
916 The result code associated with performing the operation
917
918 SIDE EFFECTS
919
920============================================================================*/
921VOS_STATUS
922WLANTL_RxFrames
923(
924 v_PVOID_t pAdapter,
925 vos_pkt_t *pFrameDataBuff
926);
927
928/*==========================================================================
929
930 FUNCTION WLANTL_RxCachedFrames
931
932 DESCRIPTION
933 Utility function used by TL to forward the cached frames to a particular
934 station;
935
936 DEPENDENCIES
937 TL must be initiailized before this function gets called.
938 If the frame carried is a data frame then the station for which it is
939 destined to must have been previously registered with TL.
940
941 PARAMETERS
942
943 IN
944 pTLCb: pointer to TL handle
945
946 ucSTAId: station for which we need to forward the packets
947
948 vosDataBuff: it will contain a pointer to the first cached buffer
949 received, if there is more then one packet they will be
950 chained using vOSS buffers.
951
952 RETURN VALUE
953 The result code associated with performing the operation
954
955 VOS_STATUS_E_INVAL: Input parameters are invalid
956 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
957 page fault
958 VOS_STATUS_SUCCESS: Everything is good :)
959
960 SIDE EFFECTS
961
962============================================================================*/
963VOS_STATUS
964WLANTL_RxCachedFrames
965(
966 WLANTL_CbType* pTLCb,
967 v_U8_t ucSTAId,
968 vos_pkt_t* vosDataBuff
969);
970
971/*==========================================================================
972 FUNCTION WLANTL_ResourceCB
973
974 DESCRIPTION
975 Called by the TL when it has packets available for transmission.
976
977 DEPENDENCIES
978 The TL must be registered with BAL before this function can be called.
979
980 PARAMETERS
981
982 IN
983 pAdapter: pointer to the global adapter context; a handle to TL's
984 or BAL's control block can be extracted from its context
985 uCount: avail resource count obtained from hw
986
987 RETURN VALUE
988 The result code associated with performing the operation
989
990 SIDE EFFECTS
991
992============================================================================*/
993VOS_STATUS
994WLANTL_ResourceCB
995(
996 v_PVOID_t pAdapter,
997 v_U32_t uCount
998);
999
1000
1001/*==========================================================================
1002 FUNCTION WLANTL_ProcessMainMessage
1003
1004 DESCRIPTION
1005 Called by VOSS when a message was serialized for TL through the
1006 main thread/task.
1007
1008 DEPENDENCIES
1009 The TL must be initialized before this function can be called.
1010
1011 PARAMETERS
1012
1013 IN
1014 pAdapter: pointer to the global adapter context; a handle to TL's
1015 control block can be extracted from its context
1016 message: type and content of the message
1017
1018
1019 RETURN VALUE
1020 The result code associated with performing the operation
1021
1022 SIDE EFFECTS
1023
1024============================================================================*/
1025VOS_STATUS
1026WLANTL_ProcessMainMessage
1027(
1028 v_PVOID_t pAdapter,
1029 vos_msg_t* message
1030);
1031
1032/*==========================================================================
1033 FUNCTION WLANTL_ProcessTxMessage
1034
1035 DESCRIPTION
1036 Called by VOSS when a message was serialized for TL through the
1037 tx thread/task.
1038
1039 DEPENDENCIES
1040 The TL must be initialized before this function can be called.
1041
1042 PARAMETERS
1043
1044 IN
1045 pAdapter: pointer to the global adapter context; a handle to TL's
1046 control block can be extracted from its context
1047 message: type and content of the message
1048
1049
1050 RETURN VALUE
1051
1052 The result code associated with performing the operation
1053 VOS_STATUS_SUCCESS: Everything is good :)
1054
1055
1056 SIDE EFFECTS
1057
1058============================================================================*/
1059VOS_STATUS
1060WLANTL_ProcessTxMessage
1061(
1062 v_PVOID_t pAdapter,
1063 vos_msg_t* message
1064);
1065
1066/*==========================================================================
1067 FUNCTION WLAN_TLGetNextTxIds
1068
1069 DESCRIPTION
1070 Gets the next station and next AC in the list
1071
1072 DEPENDENCIES
1073
1074 PARAMETERS
1075
1076 OUT
1077 pucSTAId: STAtion ID
1078
1079 RETURN VALUE
1080 The result code associated with performing the operation
1081
1082 SIDE EFFECTS
1083
1084============================================================================*/
1085VOS_STATUS
1086WLAN_TLGetNextTxIds
1087(
1088 v_PVOID_t pAdapter,
1089 v_U8_t* pucSTAId
1090);
1091
1092/*==========================================================================
1093
1094 FUNCTION WLANTL_CleanCb
1095
1096 DESCRIPTION
1097 Cleans TL control block
1098
1099 DEPENDENCIES
1100
1101 PARAMETERS
1102
1103 IN
1104 pTLCb: pointer to TL's control block
1105 ucEmpty: set if TL has to clean up the queues and release pedning pkts
1106
1107 RETURN VALUE
1108 The result code associated with performing the operation
1109
1110 SIDE EFFECTS
1111
1112============================================================================*/
1113VOS_STATUS
1114WLANTL_CleanCB
1115(
1116 WLANTL_CbType* pTLCb,
1117 v_U8_t ucEmpty
1118);
1119
1120/*==========================================================================
1121
1122 FUNCTION WLANTL_CleanSTA
1123
1124 DESCRIPTION
1125 Cleans a station control block.
1126
1127 DEPENDENCIES
1128
1129 PARAMETERS
1130
1131 IN
1132 pAdapter: pointer to the global adapter context; a handle to TL's
1133 control block can be extracted from its context
1134 ucEmpty: if set the queues and pending pkts will be emptyed
1135
1136 RETURN VALUE
1137 The result code associated with performing the operation
1138
1139 SIDE EFFECTS
1140
1141============================================================================*/
1142VOS_STATUS
1143WLANTL_CleanSTA
1144(
1145 WLANTL_STAClientType* ptlSTAClient,
1146 v_U8_t ucEmpty
1147);
1148
1149/*==========================================================================
1150 FUNCTION WLANTL_GetTxResourcesCB
1151
1152 DESCRIPTION
1153 Processing function for Resource needed signal. A request will be issued
1154 to BAL to get mor tx resources.
1155
1156 DEPENDENCIES
1157 The TL must be initialized before this function can be called.
1158
1159 PARAMETERS
1160
1161 IN
1162 pvosGCtx: pointer to the global vos context; a handle to TL's
1163 control block can be extracted from its context
1164
1165
1166 RETURN VALUE
1167 The result code associated with performing the operation
1168
1169 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
1170 page fault
1171 VOS_STATUS_SUCCESS: Everything is good :)
1172
1173 Other values can be returned as a result of a function call, please check
1174 corresponding API for more info.
1175 SIDE EFFECTS
1176
1177============================================================================*/
1178VOS_STATUS
1179WLANTL_GetTxResourcesCB
1180(
1181 v_PVOID_t pvosGCtx
1182);
1183
1184/*==========================================================================
1185 FUNCTION WLANTL_PrepareBDHeader
1186
1187 DESCRIPTION
1188 Callback function for serializing Suspend signal through Tx thread
1189
1190 DEPENDENCIES
1191 Just notify HAL that suspend in TL is complete.
1192
1193 PARAMETERS
1194
1195 IN
1196 pAdapter: pointer to the global adapter context; a handle to TL's
1197 control block can be extracted from its context
1198 pUserData: user data sent with the callback
1199
1200 RETURN VALUE
1201 The result code associated with performing the operation
1202
1203 SIDE EFFECTS
1204
1205============================================================================*/
1206void
1207WLANTL_PrepareBDHeader
1208(
1209 vos_pkt_t* vosDataBuff,
1210 v_PVOID_t* ppvBDHeader,
1211 v_MACADDR_t* pvDestMacAdddr,
1212 v_U8_t ucDisableFrmXtl,
1213 VOS_STATUS* pvosSTAtus,
1214 v_U16_t* usPktLen,
1215 v_U8_t ucQosEnabled,
1216 v_U8_t ucWDSEnabled,
1217 v_U8_t extraHeadSpace
1218);
1219
1220/*==========================================================================
1221 FUNCTION WLANTL_Translate8023To80211Header
1222
1223 DESCRIPTION
1224 Inline function for translating and 802.3 header into an 802.11 header.
1225
1226 DEPENDENCIES
1227
1228
1229 PARAMETERS
1230
1231 IN
1232 pTLCb: TL control block
1233 ucStaId: station ID
1234
1235 IN/OUT
1236 vosDataBuff: vos data buffer, will contain the new header on output
1237
1238 OUT
1239 pvosStatus: status of the operation
1240
1241 RETURN VALUE
1242 No return.
1243
1244 SIDE EFFECTS
1245
1246============================================================================*/
1247VOS_STATUS
1248WLANTL_Translate8023To80211Header
1249(
1250 vos_pkt_t* vosDataBuff,
1251 VOS_STATUS* pvosStatus,
1252 WLANTL_CbType* pTLCb,
1253 v_U8_t ucStaId,
1254 v_U8_t ucUP,
1255 v_U8_t *ucWDSEnabled,
1256 v_U8_t *extraHeadSpace
1257);
1258
1259/*==========================================================================
1260 FUNCTION WLANTL_Translate80211To8023Header
1261
1262 DESCRIPTION
1263 Inline function for translating and 802.11 header into an 802.3 header.
1264
1265 DEPENDENCIES
1266
1267
1268 PARAMETERS
1269
1270 IN
1271 pTLCb: TL control block
1272 ucStaId: station ID
1273 ucHeaderLen: Length of the header from BD
1274 ucActualHLen: Length of header including padding or any other trailers
1275
1276 IN/OUT
1277 vosDataBuff: vos data buffer, will contain the new header on output
1278
1279 OUT
1280 pvosStatus: status of the operation
1281
1282 RETURN VALUE
1283 Status of the operation
1284
1285 SIDE EFFECTS
1286
1287============================================================================*/
1288VOS_STATUS
1289WLANTL_Translate80211To8023Header
1290(
1291 vos_pkt_t* vosDataBuff,
1292 VOS_STATUS* pvosStatus,
1293 v_U16_t usActualHLen,
1294 v_U8_t ucHeaderLen,
1295 WLANTL_CbType* pTLCb,
1296 v_U8_t ucSTAId
1297);
1298
1299/*==========================================================================
1300
1301 FUNCTION WLANTL_MgmtFrmRxDefaultCb
1302
1303 DESCRIPTION
1304 Default Mgmt Frm rx callback: asserts all the time. If this function gets
1305 called it means there is no registered rx cb pointer for Mgmt Frm.
1306
1307 DEPENDENCIES
1308
1309 PARAMETERS
1310
1311 Not used.
1312
1313 RETURN VALUE
1314 Always FAILURE.
1315
1316============================================================================*/
1317VOS_STATUS
1318WLANTL_MgmtFrmRxDefaultCb
1319(
1320 v_PVOID_t pAdapter,
1321 v_PVOID_t vosBuff
1322);
1323
1324/*==========================================================================
1325
1326 FUNCTION WLANTL_STARxDefaultCb
1327
1328 DESCRIPTION
1329 Default BAP rx callback: asserts all the time. If this function gets
1330 called it means there is no registered rx cb pointer for BAP.
1331
1332 DEPENDENCIES
1333
1334 PARAMETERS
1335
1336 Not used.
1337
1338 RETURN VALUE
1339 Always FAILURE.
1340
1341============================================================================*/
1342VOS_STATUS
1343WLANTL_BAPRxDefaultCb
1344(
1345 v_PVOID_t pAdapter,
1346 vos_pkt_t* vosDataBuff,
1347 WLANTL_BAPFrameEnumType frameType
1348);
1349
1350/*==========================================================================
1351
1352 FUNCTION WLANTL_STARxDefaultCb
1353
1354 DESCRIPTION
1355 Default STA rx callback: asserts all the time. If this function gets
1356 called it means there is no registered rx cb pointer for station.
1357 (Mem corruption most likely, it should never happen)
1358
1359 DEPENDENCIES
1360
1361 PARAMETERS
1362
1363 Not used.
1364
1365 RETURN VALUE
1366 Always FAILURE.
1367
1368============================================================================*/
1369VOS_STATUS
1370WLANTL_STARxDefaultCb
1371(
1372 v_PVOID_t pAdapter,
1373 vos_pkt_t* vosDataBuff,
1374 v_U8_t ucSTAId,
1375 WLANTL_RxMetaInfoType* pRxMetaInfo
1376);
1377
1378/*==========================================================================
1379
1380 FUNCTION WLANTL_STAFetchPktDefaultCb
1381
1382 DESCRIPTION
1383 Default fetch callback: asserts all the time. If this function gets
1384 called it means there is no registered fetch cb pointer for station.
1385 (Mem corruption most likely, it should never happen)
1386
1387 DEPENDENCIES
1388
1389 PARAMETERS
1390
1391 Not used.
1392
1393 RETURN VALUE
1394 Always FAILURE.
1395
1396============================================================================*/
1397VOS_STATUS
1398WLANTL_STAFetchPktDefaultCb
1399(
1400 v_PVOID_t pAdapter,
1401 v_U8_t* pucSTAId,
1402 WLANTL_ACEnumType ucAC,
1403 vos_pkt_t** vosDataBuff,
1404 WLANTL_MetaInfoType* tlMetaInfo
1405);
1406
1407/*==========================================================================
1408
1409 FUNCTION WLANTL_TxCompDefaultCb
1410
1411 DESCRIPTION
1412 Default tx complete handler. It will release the completed pkt to
1413 prevent memory leaks.
1414
1415 PARAMETERS
1416
1417 IN
1418 pAdapter: pointer to the global adapter context; a handle to
1419 TL/HAL/PE/BAP/HDD control block can be extracted from
1420 its context
1421 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1422 wTxSTAtus: status of the transmission
1423
1424
1425 RETURN VALUE
1426 The result code associated with performing the operation; please
1427 check vos_pkt_return_pkt for possible error codes.
1428
1429============================================================================*/
1430VOS_STATUS
1431WLANTL_TxCompDefaultCb
1432(
1433 v_PVOID_t pAdapter,
1434 vos_pkt_t* vosDataBuff,
1435 VOS_STATUS wTxSTAtus
1436);
1437
1438/*==========================================================================
1439
1440 FUNCTION WLANTL_PackUpTriggerFrame
1441
1442 DESCRIPTION
1443 Packs up a trigger frame and places it in TL's cache for tx and notifies
1444 BAL
1445
1446 DEPENDENCIES
1447
1448 PARAMETERS
1449
1450 IN
1451 pTLCb: pointer to the TL control block
1452 pfnSTATxComp: Tx Complete Cb to be used when frame is received
1453 ucSTAId: station id
1454 ucAC: access category
1455
1456 RETURN VALUE
1457 None
1458
1459 SIDE EFFECTS
1460
1461============================================================================*/
1462VOS_STATUS
1463WLANTL_PackUpTriggerFrame
1464(
1465 WLANTL_CbType* pTLCb,
1466 WLANTL_TxCompCBType pfnSTATxComp,
1467 v_U8_t ucSTAId,
1468 WLANTL_ACEnumType ucAC
1469);
1470
1471/*==========================================================================
1472
1473 FUNCTION WLANTL_TxCompTriggFrameSI
1474
1475 DESCRIPTION
1476 Tx complete handler for the service interval trigger frame.
1477 It will restart the SI timer.
1478
1479 PARAMETERS
1480
1481 IN
1482 pvosGCtx: pointer to the global vos context; a handle to
1483 TL/HAL/PE/BAP/HDD control block can be extracted from
1484 its context
1485 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1486 wTxSTAtus: status of the transmission
1487
1488
1489 RETURN VALUE
1490 The result code associated with performing the operation
1491
1492 ============================================================================*/
1493VOS_STATUS
1494WLANTL_TxCompTriggFrameSI
1495(
1496 v_PVOID_t pvosGCtx,
1497 vos_pkt_t* vosDataBuff,
1498 VOS_STATUS wTxSTAtus
1499);
1500
1501/*==========================================================================
1502
1503 FUNCTION WLANTL_TxCompTriggFrameSI
1504
1505 DESCRIPTION
1506 Tx complete handler for the service interval trigger frame.
1507 It will restart the SI timer.
1508
1509 PARAMETERS
1510
1511 IN
1512 pvosGCtx: pointer to the global vos context; a handle to
1513 TL/HAL/PE/BAP/HDD control block can be extracted from
1514 its context
1515 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1516 wTxSTAtus: status of the transmission
1517
1518
1519 RETURN VALUE
1520 The result code associated with performing the operation
1521
1522============================================================================*/
1523VOS_STATUS
1524WLANTL_TxCompTriggFrameDI
1525(
1526 v_PVOID_t pvosGCtx,
1527 vos_pkt_t* vosDataBuff,
1528 VOS_STATUS wTxSTAtus
1529);
1530
1531/*==========================================================================
1532
1533 FUNCTION
1534
1535 DESCRIPTION Read RSSI value out of a RX BD
1536
1537 PARAMETERS: Caller must validate all parameters
1538
1539 RETURN VALUE
1540
1541============================================================================*/
1542VOS_STATUS WLANTL_ReadRSSI
1543(
1544 v_PVOID_t pAdapter,
1545 v_PVOID_t pBDHeader,
1546 v_U8_t STAid
1547);
1548
1549
1550
1551void WLANTL_PowerStateChangedCB
1552(
1553 v_PVOID_t pAdapter,
1554 tPmcState newState
1555);
1556
1557#ifdef WLAN_SOFTAP_FEATURE
1558/*==========================================================================
1559 FUNCTION WLANTL_FwdPktToHDD
1560
1561 DESCRIPTION
1562 Determine the Destation Station ID and route the Frame to Upper Layer
1563
1564 DEPENDENCIES
1565
1566 PARAMETERS
1567
1568 IN
1569 pvosGCtx: pointer to the global vos context; a handle to TL's
1570 control block can be extracted from its context
1571 ucSTAId: identifier of the station being processed
1572 vosDataBuff: pointer to the rx vos buffer
1573
1574 RETURN VALUE
1575 The result code associated with performing the operation
1576
1577 VOS_STATUS_E_INVAL: invalid input parameters
1578 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
1579 page fault
1580 VOS_STATUS_SUCCESS: Everything is good :)
1581
1582 SIDE EFFECTS
1583
1584============================================================================*/
1585
1586VOS_STATUS
1587WLANTL_FwdPktToHDD
1588(
1589 v_PVOID_t pvosGCtx,
1590 vos_pkt_t* pvosDataBuff,
1591 v_U8_t ucSTAId
1592);
1593
1594#endif /* #ifdef WLANTL_SOFTAP_FEATURE */
1595#endif /* #ifndef WLAN_QCT_TLI_H */