blob: 254122fd5dfb5b075cd40b830adc987676b369f7 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Abhishek Singh00b71972016-01-07 10:51:04 +05302 * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
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/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080026 */
Kiet Lam1ed83fc2014-02-19 01:15:45 -080027
28
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031#ifndef WLAN_QCT_TLI_H
32#define WLAN_QCT_TLI_H
33
34/*===========================================================================
35
36 W L A N T R A N S P O R T L A Y E R
37 I N T E R N A L A P I
38
39
40DESCRIPTION
41 This file contains the internal declarations used within wlan transport
42 layer module.
43
Jeff Johnson295189b2012-06-20 16:38:30 -070044===========================================================================*/
45
46
47/*===========================================================================
48
49 EDIT HISTORY FOR FILE
50
51
52 This section contains comments describing changes made to the module.
53 Notice that changes are listed in reverse chronological order.
54
55
56 $Header:$ $DateTime: $ $Author: $
57
58
59when who what, where, why
60-------- --- ----------------------------------------------------------
Abhishek Singh00b71972016-01-07 10:51:04 +05306108/19/13 rajekuma Added RMC support in TL
Jeff Johnson295189b2012-06-20 16:38:30 -07006202/19/10 bad Fixed 802.11 to 802.3 ft issues with WAPI
6301/14/10 rnair Fixed the byte order for the WAI packet type.
6401/08/10 lti Added TL Data Caching
6510/09/09 rnair Add support for WAPI
6602/02/09 sch Add Handoff support
6712/09/08 lti Fixes for AMSS compilation
6812/02/08 lti Fix fo trigger frame generation
6910/31/08 lti Fix fo TL tx suspend
7010/01/08 lti Merged in fixes from reordering
7109/05/08 lti Fixes following QOS unit testing
7208/06/08 lti Added QOS support
7307/18/08 lti Fixes following integration
74 Added frame translation
7506/26/08 lti Fixes following unit testing
7605/05/08 lti Created module.
77
78===========================================================================*/
79
80
81
82/*===========================================================================
83
84 INCLUDE FILES FOR MODULE
85
86===========================================================================*/
87
88/*----------------------------------------------------------------------------
89 * Include Files
90 * -------------------------------------------------------------------------*/
91#include "vos_packet.h"
92#include "vos_api.h"
93#include "vos_timer.h"
94#include "vos_mq.h"
95#include "vos_list.h"
96#include "wlan_qct_tl.h"
97#include "pmcApi.h"
98#include "wlan_qct_hal.h"
99
100
101#define STATIC static
Jeff Johnson295189b2012-06-20 16:38:30 -0700102/*----------------------------------------------------------------------------
103 * Preprocessor Definitions and Constants
104 * -------------------------------------------------------------------------*/
105
106/*Maximum number of TIDs */
107#define WLAN_MAX_TID 8
108
Jeff Johnson295189b2012-06-20 16:38:30 -0700109/*Offset of the OUI field inside the LLC/SNAP header*/
110#define WLANTL_LLC_OUI_OFFSET 3
111
112/*Size of the OUI type field inside the LLC/SNAP header*/
113#define WLANTL_LLC_OUI_SIZE 3
114
115/*Offset of the protocol type field inside the LLC/SNAP header*/
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800116#define WLANTL_LLC_PROTO_TYPE_OFFSET (WLANTL_LLC_OUI_OFFSET + WLANTL_LLC_OUI_SIZE)
Jeff Johnson295189b2012-06-20 16:38:30 -0700117
118/*Size of the protocol type field inside the LLC/SNAP header*/
119#define WLANTL_LLC_PROTO_TYPE_SIZE 2
120
121/*802.1x protocol type */
122#define WLANTL_LLC_8021X_TYPE 0x888E
123
124/*WAPI protocol type */
125#define WLANTL_LLC_WAI_TYPE 0x88b4
Hanumantha Reddy Pothulaee001fc2015-05-26 15:21:53 +0530126#define WLANTL_ETHERTYPE_ARP 0x0806
Jeff Johnson295189b2012-06-20 16:38:30 -0700127
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#ifdef FEATURE_WLAN_TDLS
129#define WLANTL_LLC_TDLS_TYPE 0x890d
130#endif
131
Jeff Johnson295189b2012-06-20 16:38:30 -0700132/*Length offset inside the AMSDU sub-frame header*/
133#define WLANTL_AMSDU_SUBFRAME_LEN_OFFSET 12
134
135/*802.3 header definitions*/
136#define WLANTL_802_3_HEADER_LEN 14
137
138/* Offset of DA field in a 802.3 header*/
139#define WLANTL_802_3_HEADER_DA_OFFSET 0
140
141/*802.11 header definitions - header len without QOS ctrl field*/
142#define WLANTL_802_11_HEADER_LEN 24
143
144/*802.11 header length + QOS ctrl field*/
145#define WLANTL_MPDU_HEADER_LEN 32
146
147/*802.11 header definitions*/
148#define WLANTL_802_11_MAX_HEADER_LEN 40
149
150/*802.11 header definitions - qos ctrl field len*/
151#define WLANTL_802_11_HEADER_QOS_CTL 2
152
153/*802.11 header definitions - ht ctrl field len*/
154#define WLANTL_802_11_HEADER_HT_CTL 4
155
156/* Offset of Addr1 field in a 802.11 header*/
157#define WLANTL_802_11_HEADER_ADDR1_OFFSET 4
158
159/*802.11 ADDR4 MAC addr field len */
160#define WLANTL_802_11_HEADER_ADDR4_LEN VOS_MAC_ADDR_SIZE
161
162/* Length of an AMSDU sub-frame */
163#define TL_AMSDU_SUBFRM_HEADER_LEN 14
164
165/* Length of the LLC header*/
166#define WLANTL_LLC_HEADER_LEN 8
167
168/*As per 802.11 spec */
169#define WLANTL_MGMT_FRAME_TYPE 0x00
170#define WLANTL_CTRL_FRAME_TYPE 0x10
171#define WLANTL_DATA_FRAME_TYPE 0x20
172
Siddharth Bhal4551b102014-10-09 21:36:36 +0530173#define WLANTL_MGMT_PROBE_REQ_FRAME_TYPE 0x04
174
Jeff Johnson295189b2012-06-20 16:38:30 -0700175/*Value of the data type field in the 802.11 frame */
176#define WLANTL_80211_DATA_TYPE 0x02
177#define WLANTL_80211_DATA_QOS_SUBTYPE 0x08
178#define WLANTL_80211_NULL_QOS_SUBTYPE 0x0C
Dino Mycle3b9536d2014-07-09 22:05:24 +0530179#define WLANTL_80211_MGMT_ACTION_SUBTYPE 0x0D
180#define WLANTL_80211_MGMT_ACTION_NO_ACK_SUBTYPE 0x0E
Jeff Johnson295189b2012-06-20 16:38:30 -0700181
Madan Mohan Koyyalamudia148e1e2012-11-30 14:52:59 -0800182/*Defines for internal utility functions */
183#define WLANTL_FRAME_TYPE_BCAST 0xff
184#define WLANTL_FRAME_TYPE_MCAST 0x01
185#define WLANTL_FRAME_TYPE_UCAST 0x00
186
Dino Mycle3b9536d2014-07-09 22:05:24 +0530187#define WLANTL_FRAME_TYPESUBTYPE_MASK 0x3F
Jeff Johnson295189b2012-06-20 16:38:30 -0700188
Abhishek Singh00b71972016-01-07 10:51:04 +0530189#ifdef WLAN_FEATURE_RMC
190#define WLANTL_RMC_HASH_TABLE_SIZE (32)
191#endif
192
Sravan Kumar Kairam60b8cf02016-12-12 16:22:09 +0530193#define WLANTL_SAMPLE_INTERVAL 50
194#define WLANTL_SAMPLE_COUNT 2
195
Jeff Johnson295189b2012-06-20 16:38:30 -0700196/*-------------------------------------------------------------------------
197 BT-AMP related definition - !!! should probably be moved to BT-AMP header
198---------------------------------------------------------------------------*/
199
200/*-------------------------------------------------------------------------
201 Helper macros
202---------------------------------------------------------------------------*/
203 /*Checks STA index validity*/
204#define WLANTL_STA_ID_INVALID( _staid )( _staid >= WLAN_MAX_STA_COUNT )
205
206/*As per Libra behavior */
207#define WLANTL_STA_ID_BCAST 0xFF
208
209/*Checks TID validity*/
210#define WLANTL_TID_INVALID( _tid ) ( _tid >= WLAN_MAX_TID )
211
212/*Checks AC validity*/
213#define WLANTL_AC_INVALID( _tid ) ( _tid >= WLANTL_MAX_AC )
214
215/*Determines the addr field offset based on the frame xtl bit*/
216#define WLANTL_MAC_ADDR_ALIGN( _dxtl ) \
217 ( ( 0 == _dxtl ) ? \
218 WLANTL_802_3_HEADER_DA_OFFSET: WLANTL_802_11_HEADER_ADDR1_OFFSET )
219
220/*Determines the header len based on the disable xtl field*/
221#define WLANTL_MAC_HEADER_LEN( _dxtl) \
222 ( ( 0 == _dxtl )? \
223 WLANTL_802_3_HEADER_LEN:WLANTL_802_11_HEADER_LEN )
224
225/*Determines the necesary length of the BD header - in case
226 UMA translation is enabled enough room needs to be left in front of the
227 packet for the 802.11 header to be inserted*/
228#define WLANTL_BD_HEADER_LEN( _dxtl ) \
229 ( ( 0 == _dxtl )? \
230 (WLANHAL_TX_BD_HEADER_SIZE+WLANTL_802_11_MAX_HEADER_LEN): WLANHAL_TX_BD_HEADER_SIZE )
231
232
233#define WLAN_TL_CEIL( _a, _b) (( 0 != (_a)%(_b))? (_a)/(_b) + 1: (_a)/(_b))
234
235/*get TL control block from vos global context */
236#define VOS_GET_TL_CB(_pvosGCtx) \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800237 ((WLANTL_CbType*)vos_get_context( VOS_MODULE_ID_TL, _pvosGCtx))
Jeff Johnson295189b2012-06-20 16:38:30 -0700238
239/* Check whether Rx frame is LS or EAPOL packet (other than data) */
240#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800241 ((WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
242 (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType))
Jeff Johnson295189b2012-06-20 16:38:30 -0700243
244/*get RSSI0 from a RX BD*/
245/* 7 bits in phystats represent -100dBm to +27dBm */
246#define WLAN_TL_RSSI_CORRECTION 100
247#define WLANTL_GETRSSI0(pBD) (WDA_GETRSSI0(pBD) - WLAN_TL_RSSI_CORRECTION)
248
249/*get RSSI1 from a RX BD*/
250#define WLANTL_GETRSSI1(pBD) (WDA_GETRSSI1(pBD) - WLAN_TL_RSSI_CORRECTION)
251
Madan Mohan Koyyalamudid9383fd2013-08-13 09:27:30 +0530252#define WLANTL_GETSNR(pBD) WDA_GET_RX_SNR(pBD)
253
Jeff Johnson295189b2012-06-20 16:38:30 -0700254/* Check whether Rx frame is LS or EAPOL packet (other than data) */
255#define WLANTL_BAP_IS_NON_DATA_PKT_TYPE(usType) \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800256 ((WLANTL_BT_AMP_TYPE_AR == usType) || (WLANTL_BT_AMP_TYPE_SEC == usType) || \
257 (WLANTL_BT_AMP_TYPE_LS_REQ == usType) || (WLANTL_BT_AMP_TYPE_LS_REP == usType))
Jeff Johnson295189b2012-06-20 16:38:30 -0700258
Mihir Sheteb7337272014-04-11 15:53:08 +0530259#define WLANTL_CACHE_TRACE_WATERMARK 100
Jeff Johnson295189b2012-06-20 16:38:30 -0700260/*---------------------------------------------------------------------------
261 TL signals for TX thread
262---------------------------------------------------------------------------*/
263typedef enum
264{
265 /*Suspend signal - following serialization of a HAL suspend request*/
266 WLANTL_TX_SIG_SUSPEND = 0,
267
268 /*Res need signal - triggered when all pending TxComp have been received
269 and TL is low on resources*/
270 WLANTL_TX_RES_NEEDED = 1,
271
Katya Nigam664f5032014-05-05 12:24:32 +0530272 /* Forwarding RX cached frames. This is not used anymore as it is
273 replaced by WLANTL_RX_FWD_CACHED in RX thread*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 WLANTL_TX_FWD_CACHED = 2,
275
276 /* Serialized STAID AC Indication */
277 WLANTL_TX_STAID_AC_IND = 3,
278
279 /* Serialzie TX transmit request */
280 WLANTL_TX_START_XMIT = 4,
281
282 /* Serialzie Finish UL Authentication request */
283 WLANTL_FINISH_ULA = 5,
284
Madan Mohan Koyyalamudia96f5442013-05-10 11:32:06 +0530285 /* Serialized Snapshot request indication */
286 WLANTL_TX_SNAPSHOT = 6,
287
Mihir Shetefd62d9d2014-08-06 15:08:21 +0530288 /* Detected a fatal error issue SSR */
289 WLANTL_TX_FATAL_ERROR = 7,
290
Mihir Shete327c2ab2014-11-13 15:17:02 +0530291 WLANTL_TX_FW_DEBUG = 8,
292
Sravan Kumar Kairame9d186c2015-11-27 23:37:02 +0530293 WLANTL_TX_KICKDXE = 9,
294
Jeff Johnson295189b2012-06-20 16:38:30 -0700295 WLANTL_TX_MAX
296}WLANTL_TxSignalsType;
297
Katya Nigam664f5032014-05-05 12:24:32 +0530298
299/*---------------------------------------------------------------------------
300 TL signals for RX thread
301---------------------------------------------------------------------------*/
302typedef enum
303{
304
305 /* Forwarding RX cached frames */
306 WLANTL_RX_FWD_CACHED = 0,
307
308}WLANTL_RxSignalsType;
309
Jeff Johnson295189b2012-06-20 16:38:30 -0700310/*---------------------------------------------------------------------------
311 STA Event type
312---------------------------------------------------------------------------*/
313typedef enum
314{
315 /* Transmit frame event */
316 WLANTL_TX_EVENT = 0,
317
318 /* Receive frame event */
319 WLANTL_RX_EVENT = 1,
320
321 WLANTL_MAX_EVENT
322}WLANTL_STAEventType;
323
324/*---------------------------------------------------------------------------
325
326 DESCRIPTION
327 State machine used by transport layer for receiving or transmitting
328 packets.
329
330 PARAMETERS
331
332 IN
333 pAdapter: pointer to the global adapter context; a handle to TL's
334 control block can be extracted from its context
335 ucSTAId: identifier of the station being processed
336 vosDataBuff: pointer to the tx/rx vos buffer
337
338 RETURN VALUE
339 The result code associated with performing the operation
340
341---------------------------------------------------------------------------*/
342typedef VOS_STATUS (*WLANTL_STAFuncType)( v_PVOID_t pAdapter,
343 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700344 vos_pkt_t** pvosDataBuff,
345 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700346
347/*---------------------------------------------------------------------------
348 STA FSM Entry type
349---------------------------------------------------------------------------*/
350typedef struct
351{
352 WLANTL_STAFuncType pfnSTATbl[WLANTL_MAX_EVENT];
353} WLANTL_STAFsmEntryType;
354
355/* Receive in connected state - only EAPOL or WAI*/
356VOS_STATUS WLANTL_STARxConn( v_PVOID_t pAdapter,
357 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700358 vos_pkt_t** pvosDataBuff,
359 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700360
361/* Transmit in connected state - only EAPOL or WAI*/
362VOS_STATUS WLANTL_STATxConn( v_PVOID_t pAdapter,
363 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700364 vos_pkt_t** pvosDataBuff,
365 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700366
367/* Receive in authenticated state - all data allowed*/
368VOS_STATUS WLANTL_STARxAuth( v_PVOID_t pAdapter,
369 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700370 vos_pkt_t** pvosDataBuff,
371 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700372
373/* Transmit in authenticated state - all data allowed*/
374VOS_STATUS WLANTL_STATxAuth( v_PVOID_t pAdapter,
375 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700376 vos_pkt_t** pvosDataBuff,
377 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700378
379/* Receive in disconnected state - no data allowed*/
380VOS_STATUS WLANTL_STARxDisc( v_PVOID_t pAdapter,
381 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700382 vos_pkt_t** pvosDataBuff,
383 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700384
385/* Transmit in disconnected state - no data allowed*/
386VOS_STATUS WLANTL_STATxDisc( v_PVOID_t pAdapter,
387 v_U8_t ucSTAId,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700388 vos_pkt_t** pvosDataBuff,
389 v_BOOL_t bForwardIAPPwithLLC);
Jeff Johnson295189b2012-06-20 16:38:30 -0700390
391/* TL State Machine */
392STATIC const WLANTL_STAFsmEntryType tlSTAFsm[WLANTL_STA_MAX_STATE] =
393{
394 /* WLANTL_STA_INIT */
395 { {
396 NULL, /* WLANTL_TX_EVENT - no packets should get transmitted*/
397 NULL, /* WLANTL_RX_EVENT - no packets should be received - drop*/
398 } },
399
400 /* WLANTL_STA_CONNECTED */
401 { {
402 WLANTL_STATxConn, /* WLANTL_TX_EVENT - only EAPoL or WAI frames are allowed*/
403 WLANTL_STARxConn, /* WLANTL_RX_EVENT - only EAPoL or WAI frames can be rx*/
404 } },
405
406 /* WLANTL_STA_AUTHENTICATED */
407 { {
408 WLANTL_STATxAuth, /* WLANTL_TX_EVENT - all data frames allowed*/
409 WLANTL_STARxAuth, /* WLANTL_RX_EVENT - all data frames can be rx */
410 } },
411
412 /* WLANTL_STA_DISCONNECTED */
413 { {
414 WLANTL_STATxDisc, /* WLANTL_TX_EVENT - do nothing */
415 WLANTL_STARxDisc, /* WLANTL_RX_EVENT - frames will still be fwd-ed*/
416 } }
417};
418
419/*---------------------------------------------------------------------------
420 Reordering information
421---------------------------------------------------------------------------*/
422
423#define WLANTL_MAX_WINSIZE 64
424#define WLANTL_MAX_BA_SESSION 40
425
426typedef struct
427{
428 v_BOOL_t isAvailable;
Jeff Johnson295189b2012-06-20 16:38:30 -0700429 v_U64_t ullReplayCounter[WLANTL_MAX_WINSIZE];
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 v_PVOID_t arrayBuffer[WLANTL_MAX_WINSIZE];
431} WLANTL_REORDER_BUFFER_T;
432
433
434/* To handle Frame Q aging, timer is needed
435 * After timer expired, Qed frames have to be routed to upper layer
436 * WLANTL_TIMER_EXPIER_UDATA_T is user data type for timer callback
437 */
438typedef struct
439{
440 /* Global contect, HAL, HDD need this */
441 v_PVOID_t pAdapter;
442
443 /* TL context handle */
444 v_PVOID_t pTLHandle;
445
446 /* Current STAID, to know STA context */
447 v_U32_t STAID;
448
449 v_U8_t TID;
450} WLANTL_TIMER_EXPIER_UDATA_T;
451
452typedef struct
453{
454 /*specifies if re-order session exists*/
455 v_U8_t ucExists;
456
457 /* Current Index */
458 v_U32_t ucCIndex;
459
460 /* Count of the total packets in list*/
461 v_U16_t usCount;
462
463 /* vos ttimer to handle Qed frames aging */
464 vos_timer_t agingTimer;
465
466 /* Q windoe size */
467 v_U32_t winSize;
468
469 /* Available RX frame buffer size */
470 v_U32_t bufferSize;
471
472 /* Start Sequence number */
473 v_U32_t SSN;
474
475 /* BA session ID, generate by HAL */
476 v_U32_t sessionID;
477
478 v_U32_t currentESN;
479
480 v_U32_t pendingFramesCount;
481
482 vos_lock_t reorderLock;
483
484 /* Aging timer callback user data */
485 WLANTL_TIMER_EXPIER_UDATA_T timerUdata;
486
487 WLANTL_REORDER_BUFFER_T *reorderBuffer;
Madan Mohan Koyyalamudi31e4cad2013-08-21 20:21:14 +0530488
489 v_U16_t LastSN;
Sravan Kumar Kairama97e2372016-11-11 17:20:03 +0530490 bool set_data_filter;
Jeff Johnson295189b2012-06-20 16:38:30 -0700491}WLANTL_BAReorderType;
492
493
494/*---------------------------------------------------------------------------
495 UAPSD information
496---------------------------------------------------------------------------*/
497typedef struct
498{
499 /* flag set when a UAPSD session with triggers generated in fw is being set*/
500 v_U8_t ucSet;
501}WLANTL_UAPSDInfoType;
502
Abhishek Singh00b71972016-01-07 10:51:04 +0530503#ifdef WLAN_FEATURE_RMC
504struct tTL_RMCList
505{
506 struct tTL_RMCList *next;
507 v_MACADDR_t rmcAddr;
508 v_U16_t mcSeqCtl;
509 v_U32_t rxMCDupcnt;
510};
511
512typedef struct tTL_RMCList WLANTL_RMC_SESSION;
513#endif
514
Jeff Johnson295189b2012-06-20 16:38:30 -0700515/*---------------------------------------------------------------------------
Mihir Sheteb7337272014-04-11 15:53:08 +0530516 per-STA cache info
517---------------------------------------------------------------------------*/
518typedef struct
519{
520 v_U16_t cacheSize;
521 v_TIME_t cacheInitTime;
522 v_TIME_t cacheDoneTime;
523 v_TIME_t cacheClearTime;
524}WLANTL_CacheInfoType;
525
Dino Mycle3b9536d2014-07-09 22:05:24 +0530526
Mihir Sheteb7337272014-04-11 15:53:08 +0530527/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 STA Client type
529---------------------------------------------------------------------------*/
530typedef struct
531{
532 /* Flag that keeps track of registration; only one STA with unique
533 ID allowed */
534 v_U8_t ucExists;
535
Jeff Johnson295189b2012-06-20 16:38:30 -0700536 /* Function pointer to the receive packet handler from HDD */
537 WLANTL_STARxCBType pfnSTARx;
538
539 /* Function pointer to the transmit complete confirmation handler
540 from HDD */
541 WLANTL_TxCompCBType pfnSTATxComp;
542
543 /* Function pointer to the packet retrieval routine in HDD */
544 WLANTL_STAFetchPktCBType pfnSTAFetchPkt;
545
546 /* Reordering information for the STA */
547 WLANTL_BAReorderType atlBAReorderInfo[WLAN_MAX_TID];
548
549 /* STA Descriptor, contains information related to the new added STA */
550 WLAN_STADescType wSTADesc;
551
552 /* Current connectivity state of the STA */
553 WLANTL_STAStateType tlState;
554
555 /* Station priority */
556 WLANTL_STAPriorityType tlPri;
557
558 /* Value of the averaged RSSI for this station */
559 v_S7_t rssiAvg;
560
561 /* Value of the averaged RSSI for this station in BMPS */
562 v_S7_t rssiAvgBmps;
563
Shailender Karmuchi13c0d082013-03-26 14:41:39 -0700564 /* Value of the Alpha to calculate RSSI average */
565 v_S7_t rssiAlpha;
566
Jeff Johnson295189b2012-06-20 16:38:30 -0700567 /* Value of the averaged RSSI for this station */
568 v_U32_t uLinkQualityAvg;
569
Madan Mohan Koyyalamudid9383fd2013-08-13 09:27:30 +0530570 /* Sum of SNR for snrIdx number of consecutive frames */
571 v_U32_t snrSum;
572
573 /* Number of consecutive frames over which snrSum is calculated */
574 v_S7_t snrIdx;
575
576 /* Average SNR of previous 20 frames */
577 v_S7_t prevSnrAvg;
578
579 /* Average SNR returned by fw */
580 v_S7_t snrAvgBmps;
581
Jeff Johnson295189b2012-06-20 16:38:30 -0700582 /* Tx packet count per station per TID */
583 v_U32_t auTxCount[WLAN_MAX_TID];
584
585 /* Rx packet count per station per TID */
586 v_U32_t auRxCount[WLAN_MAX_TID];
587
588 /* Suspend flag */
589 v_U8_t ucTxSuspended;
590
591 /* Pointer to the AMSDU chain maintained by the AMSDU de-aggregation
592 completion sub-module */
593 vos_pkt_t* vosAMSDUChainRoot;
594
595 /* Pointer to the root of the chain */
596 vos_pkt_t* vosAMSDUChain;
597
598 /* Used for saving/restoring frame header for 802.3/11 AMSDU sub-frames */
599 v_U8_t aucMPDUHeader[WLANTL_MPDU_HEADER_LEN];
600
601 /* length of the header */
602 v_U8_t ucMPDUHeaderLen;
603
604 /* Enabled ACs currently serviced by TL (automatic setup in TL)*/
Kanchanapally, Vidyullathaed969c62015-02-18 11:39:11 +0530605 v_U8_t aucACMask[WLANTL_NUM_TX_QUEUES];
Jeff Johnson295189b2012-06-20 16:38:30 -0700606
607 /* Current AC to be retrieved */
608 WLANTL_ACEnumType ucCurrentAC;
609
610 /*Packet pending flag - set if tx is pending for the station*/
611 v_U8_t ucPktPending;
Jeff Johnson017fdc32013-02-27 09:22:30 -0800612
Madan Mohan Koyyalamudi1541a5b2012-10-29 16:18:21 -0700613 /*EAPOL Packet pending flag - set if EAPOL packet is pending for the station*/
614 v_U8_t ucEapolPktPending;
615
Jeff Johnson017fdc32013-02-27 09:22:30 -0800616 /*used on tx packet to signal when there is no more data to tx for the
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 moment=> packets can be passed to BAL */
618 v_U8_t ucNoMoreData;
619
620 /* Last serviced AC to be retrieved */
621 WLANTL_ACEnumType ucServicedAC;
622
623 /* Current weight for the AC */
624 v_U8_t ucCurrentWeight;
625
626 /* Info used for UAPSD trigger frame generation */
627 WLANTL_UAPSDInfoType wUAPSDInfo[WLANTL_MAX_AC];
628
629 /* flag to signal if a trigger frames is pending */
630 v_U8_t ucPendingTrigFrm;
631
632 WLANTL_TRANSFER_STA_TYPE trafficStatistics;
633
634 /*Members needed for packet caching in TL*/
635 /*Begining of the cached packets chain*/
636 vos_pkt_t* vosBegCachedFrame;
637
638 /*Begining of the cached packets chain*/
639 vos_pkt_t* vosEndCachedFrame;
640
Mihir Sheteb7337272014-04-11 15:53:08 +0530641 WLANTL_CacheInfoType tlCacheInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* LWM related fields */
643
Katya Nigam63902932014-06-26 19:04:23 +0530644 v_BOOL_t enableCaching;
645
Jeff Johnson295189b2012-06-20 16:38:30 -0700646 //current station is slow. LWM mode is enabled.
647 v_BOOL_t ucLwmModeEnabled;
648 //LWM events is reported when LWM mode is on. Able to send more traffic
649 //under the constraints of uBuffThresholdMax
650 v_BOOL_t ucLwmEventReported;
651
652 //v_U8_t uLwmEventReported;
653
654 /* Flow control fields */
655 //memory used in previous round
656 v_U8_t bmuMemConsumed;
657
658 //the number packets injected in this round
659 v_U32_t uIngress_length;
660
661 //number of packets allowed in current round beforing receiving new FW memory updates
662 v_U32_t uBuffThresholdMax;
663
664
665 // v_U32_t uEgress_length;
666
667 // v_U32_t uIngress_length;
668
669 // v_U32_t uBuffThresholdMax;
670
671 // v_U32_t uBuffThresholdUsed;
672
673 /* Value used to set LWM in FW. Initialized to 1/3* WLAN_STA_BMU_THRESHOLD_MAX
674 In the future, it can be dynamically adjusted if we find the reason to implement
675 such algorithm. */
676 v_U32_t uLwmThreshold;
677
678 //tx disable forced by Riva software
679 v_U16_t fcStaTxDisabled;
680
681 /** HDD buffer status for packet scheduling. Once HDD
682 * stores a new packet in a previously empty queue, it
683 * will call TL interface to set the fields. The fields
684 * will be cleaned by TL when TL can't fetch more packets
685 * from the queue. */
686 // the fields are ucPktPending and ucACMask;
687
688 /* Queue to keep unicast station management frame */
689 vos_list_t pStaManageQ;
Jeff Johnson295189b2012-06-20 16:38:30 -0700690
Jeff Johnson295189b2012-06-20 16:38:30 -0700691 /* 1 means replay check is needed for the station,
692 * 0 means replay check is not needed for the station*/
693 v_BOOL_t ucIsReplayCheckValid;
694
695 /* It contains 48-bit replay counter per TID*/
696 v_U64_t ullReplayCounter[WLANTL_MAX_TID];
697
698 /* It contains no of replay packets found per STA.
699 It is for debugging purpose only.*/
700 v_U32_t ulTotalReplayPacketsDetected;
Jeff Johnson295189b2012-06-20 16:38:30 -0700701
Gopichand Nakkala8b54e912013-03-11 10:44:21 +0530702 /* Set when pairwise key is installed, if ptkInstalled is
703 1 then we have to encrypt the data irrespective of TL
704 state (CONNECTED/AUTHENTICATED) */
705 v_U8_t ptkInstalled;
Gopichand Nakkala8a2b1442013-05-29 15:33:14 +0530706
707 v_U32_t linkCapacity;
Dino Mycle3b9536d2014-07-09 22:05:24 +0530708
Abhishek Singh00b71972016-01-07 10:51:04 +0530709#ifdef WLAN_FEATURE_RMC
710 WLANTL_RMC_SESSION *mcastSession[WLANTL_RMC_HASH_TABLE_SIZE];
711 vos_lock_t mcLock;
712#endif
713
Dino Mycle3b9536d2014-07-09 22:05:24 +0530714#ifdef WLAN_FEATURE_LINK_LAYER_STATS
715
716 /* Value of the averaged Data RSSI for this station */
717 v_S7_t rssiDataAvg;
718
719 /* Value of the averaged Data RSSI for this station in BMPS */
720 v_S7_t rssiDataAvgBmps;
721
722 /* Value of the Alpha to calculate Data RSSI average */
723 v_S7_t rssiDataAlpha;
724
725 WLANTL_InterfaceStatsType interfaceStats;
726#endif
Hanumantha Reddy Pothulaee001fc2015-05-26 15:21:53 +0530727 /* BD Rate for transmitting ARP packets */
728 v_U8_t arpRate;
Hanumantha Reddy Pothulae5ab23d2015-09-14 18:08:24 +0530729 v_BOOL_t arpOnWQ5;
Bhargav Shahfbaeca22016-07-13 10:27:35 +0530730
731 /* Disassoc in progress */
732 v_BOOL_t disassoc_progress;
Sravan Kumar Kairam60b8cf02016-12-12 16:22:09 +0530733
734 /* sample timer Tx frames */
735 uint64_t tx_frames;
736 uint32_t tx_sample[WLANTL_SAMPLE_COUNT];
737 uint64_t tx_samples_sum;
738
Sravan Kumar Kairamb0edc612016-10-26 13:55:24 +0530739 /* flow control */
740 uint8_t weight;
741 uint8_t weight_count;
742 uint8_t per;
743 uint8_t set_flag;
744 uint16_t queue;
745 uint16_t trate;
746
Jeff Johnson295189b2012-06-20 16:38:30 -0700747}WLANTL_STAClientType;
748
749/*---------------------------------------------------------------------------
750 BAP Client type
751---------------------------------------------------------------------------*/
752typedef struct
753{
754 /* flag that keeps track of registration; only one non-data BT-AMP client
755 allowed */
756 v_U8_t ucExists;
757
758 /* pointer to the receive processing routine for non-data BT-AMP frames */
759 WLANTL_BAPRxCBType pfnTlBAPRx;
760
761 /* pointer to the flush call back complete function */
762 WLANTL_FlushOpCompCBType pfnFlushOpCompleteCb;
763
764 /* pointer to the non-data BT-AMP frame pending transmission */
765 vos_pkt_t* vosPendingDataBuff;
766
767 /* BAP station ID */
768 v_U8_t ucBAPSTAId;
769}WLANTL_BAPClientType;
770
771
772/*---------------------------------------------------------------------------
773 Management Frame Client type
774---------------------------------------------------------------------------*/
775typedef struct
776{
777 /* flag that keeps track of registration; only one management frame
778 client allowed */
779 v_U8_t ucExists;
780
781 /* pointer to the receive processing routine for management frames */
782 WLANTL_MgmtFrmRxCBType pfnTlMgmtFrmRx;
783
784 /* pointer to the management frame pending transmission */
785 vos_pkt_t* vosPendingDataBuff;
786}WLANTL_MgmtFrmClientType;
787
788typedef struct
789{
790 WLANTL_TrafficStatusChangedCBType trafficCB;
791 WLANTL_HO_TRAFFIC_STATUS_TYPE trafficStatus;
792 v_U32_t idleThreshold;
793 v_U32_t measurePeriod;
794 v_U32_t rtRXFrameCount;
795 v_U32_t rtTXFrameCount;
796 v_U32_t nrtRXFrameCount;
797 v_U32_t nrtTXFrameCount;
798 vos_timer_t trafficTimer;
799 v_PVOID_t usrCtxt;
800} WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE;
801
802typedef struct
803{
804 v_S7_t rssiValue;
805 v_U8_t triggerEvent[WLANTL_HS_NUM_CLIENT];
806 v_PVOID_t usrCtxt[WLANTL_HS_NUM_CLIENT];
807 v_U8_t whoIsClient[WLANTL_HS_NUM_CLIENT];
808 WLANTL_RSSICrossThresholdCBType crossCBFunction[WLANTL_HS_NUM_CLIENT];
809 v_U8_t numClient;
810} WLANTL_HO_RSSI_INDICATION_TYPE;
811
812typedef struct
813{
814 v_U8_t numThreshold;
815 v_U8_t regionNumber;
816 v_S7_t historyRSSI;
817 v_U8_t alpha;
818 v_U32_t sampleTime;
819 v_U32_t fwNotification;
820} WLANTL_CURRENT_HO_STATE_TYPE;
821
822typedef struct
823{
824 WLANTL_HO_RSSI_INDICATION_TYPE registeredInd[WLANTL_MAX_AVAIL_THRESHOLD];
825 WLANTL_CURRENT_HO_STATE_TYPE currentHOState;
826 WLANTL_HO_TRAFFIC_STATUS_HANDLE_TYPE currentTraffic;
827 v_PVOID_t macCtxt;
828 vos_lock_t hosLock;
829} WLANTL_HO_SUPPORT_TYPE;
830
Sravan Kumar Kairamb0edc612016-10-26 13:55:24 +0530831typedef struct {
832 uint8 sta_id;
833 uint8 avg_per;
834 uint16 queue_len;
835 uint16_t rate;
836 uint16_t reserved;
837} WLANTL_PerStaFlowControlParam;
838
839typedef struct {
840 uint8 num_stas;
841 WLANTL_PerStaFlowControlParam *sta_fc_info;
842} WLANTL_FlowControlInfo;
843
Kapil Guptad90b3862016-06-25 00:42:49 +0530844#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
845#define ROAM_MAX_INDEX_NUM 50
846#define ROAM_PER_INDEX_TIME 500 /* (msec) */
847#define MIN_PKTS_TO_START_MONTIOR 10
848
849typedef struct
850{
851 v_U64_t lowRateRxPacketsRcvd;
852 v_U64_t totalPktRcvd;
853 v_U64_t time;
854}WLANTL_RoamTrafficStatsType;
855
856typedef struct {
857 v_U8_t running;
858 v_U8_t staId;
859 v_S7_t index;
860 v_U8_t intialPktToStart;
861 v_U8_t minPercentage;
862 v_U16_t minRate;
863 v_U16_t maxRate;
864 v_U32_t minPktRequired;
865 v_U64_t totalPkt;
866 v_U64_t timeToWait;
867 v_U64_t lowRatePkt;
868 v_U64_t lastTriggerTime;
869 WLANTL_RoamTrafficStatsType rxRoamStats[ROAM_MAX_INDEX_NUM];
870 void (*triggerRoamScanfn) (void *, v_U8_t);
871 void *hHal;
872}WLANTL_RoamMonitorType;
873#endif
874
Jeff Johnson295189b2012-06-20 16:38:30 -0700875/*---------------------------------------------------------------------------
876 TL control block type
877---------------------------------------------------------------------------*/
878typedef struct
879{
880 /* TL configuration information */
881 WLANTL_ConfigInfoType tlConfigInfo;
882
883 /* list of the active stations */
Madan Mohan Koyylamudi3b8400c2013-01-24 17:47:01 +0530884 WLANTL_STAClientType* atlSTAClients[WLAN_MAX_STA_COUNT];
885
Jeff Johnson295189b2012-06-20 16:38:30 -0700886
887 /* information on the management frame client */
888 WLANTL_MgmtFrmClientType tlMgmtFrmClient;
889
890 /* information on the BT AMP client */
891 WLANTL_BAPClientType tlBAPClient;
892
893 /* number of packets sent to BAL waiting for tx complete confirmation */
894 v_U16_t usPendingTxCompleteCount;
895
896 /* global suspend flag */
897 v_U8_t ucTxSuspended;
898
899 /* resource flag */
900 v_U32_t uResCount;
901
902 /* dummy vos buffer - used for chains */
903 vos_pkt_t* vosDummyBuf;
904
905 /* temporary buffer for storing the packet that no longer fits */
906 vos_pkt_t* vosTempBuf;
907
908 /* The value of the station id and AC for the cached buffer */
909 v_U8_t ucCachedSTAId;
910 v_U8_t ucCachedAC;
911
912 /* Last registered STA - until multiple sta support is added this will
913 be used always for tx */
914 v_U8_t ucRegisteredStaId;
915
916 /*Current TL STA used for TX*/
917 v_U8_t ucCurrentSTA;
918
919 WLANTL_REORDER_BUFFER_T *reorderBufferPool; /* Allocate memory for [WLANTL_MAX_BA_SESSION] sessions */
920
921 WLANTL_HO_SUPPORT_TYPE hoSupport;
922
923 v_BOOL_t bUrgent;
924
Jeff Johnson295189b2012-06-20 16:38:30 -0700925
926 /* resource flag */
927 v_U32_t bd_pduResCount;
928
929 /* time interval to evaluate LWM mode*/
930 //vos_timer_t tThresholdSamplingTimer;
931
932#if 0
933 //information fields for flow control
934 tFcTxParams_type tlFCInfo;
935#endif
936
937 vos_pkt_t* vosTxFCBuf;
938
939 /* LWM mode is enabled or not for each station. Bit-wise operation.32 station maximum. */
940 // v_U32_t uStaLwmMask;
941
942 /* LWM event is reported by FW. */
943 // v_U32_t uStaLwmEventReported;
944
945 /** Multiple Station Scheduling and TL queue management.
946 4 HDD BC/MC data packet queue status is specified as Station 0's status. Weights used
947 in WFQ algorith are initialized in WLANTL_OPEN and contained in tlConfigInfo field.
948 Each station has fields of ucPktPending and AC mask to tell whether a AC has traffic
949 or not.
950
951 Stations are served in a round-robin fashion from highest priority to lowest priority.
952 The number of round-robin times of each prioirty equals to the WFQ weights and differetiates
953 the traffic of different prioirty. As such, stations can not provide low priority packets if
954 high priority packets are all served.
955 */
956
957 /* Currently served station id. Reuse ucCurrentSTA field. */
958 //v_U8_t uCurStaId;
959
960 /* Current served station ID in round-robin method to traverse all stations.*/
961 WLANTL_ACEnumType uCurServedAC;
962
Siddharth Bhal4551b102014-10-09 21:36:36 +0530963 WLANTL_SpoofMacAddr spoofMacAddr;
964
Jeff Johnson295189b2012-06-20 16:38:30 -0700965 /* How many weights have not been served in current AC. */
966 v_U8_t ucCurLeftWeight;
967
968 /* BC/MC management queue. Current implementation uses queue size 1. Will check whether
969 size N is supported. */
970 vos_list_t pMCBCManageQ;
971
972 v_U32_t sendFCFrame;
973
974 v_U8_t done_once;
975 v_U8_t uFramesProcThres;
Sunil Ravid5406f22013-01-22 00:18:31 -0800976#ifdef FEATURE_WLAN_TDLS
977 /*number of total TDLS peers registered to TL
978 Incremented at WLANTL_RegisterSTAClient(staType == WLAN_STA_TDLS)
979 Decremented at WLANTL_ClearSTAClient(staType == WLAN_STA_TDLS) */
980 v_U8_t ucTdlsPeerCount;
981#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700982 /*whether we are in BMPS/UAPSD/WOWL mode, since the latter 2 need to be BMPS first*/
983 v_BOOL_t isBMPS;
Gopichand Nakkala11acd112012-12-31 16:04:04 -0800984 /* Whether WDA_DS_TX_START_XMIT msg is pending or not */
985 v_BOOL_t isTxTranmitMsgPending;
Abhishek Singh00b71972016-01-07 10:51:04 +0530986
987#ifdef WLAN_FEATURE_RMC
988 WLANTL_RMC_SESSION *rmcSession[WLANTL_RMC_HASH_TABLE_SIZE];
989 vos_lock_t rmcLock;
990 v_U8_t multicastDuplicateDetectionEnabled;
991 v_U8_t rmcDataPathEnabled;
992 v_U32_t mcastDupCnt;
993#endif
Katya Nigame7b69a82015-04-28 15:24:06 +0530994 WLANTL_MonRxCBType pfnMonRx;
995 v_BOOL_t isConversionReq;
Kapil Guptad90b3862016-06-25 00:42:49 +0530996#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
997 WLANTL_RoamMonitorType gDsRxRoamStats;
998#endif
Katya Nigame7b69a82015-04-28 15:24:06 +0530999
Sravan Kumar Kairam60b8cf02016-12-12 16:22:09 +05301000 /* TX sample data timer */
1001 vos_timer_t tx_frames_timer;
1002 uint8_t sample_count;
1003
Jeff Johnson295189b2012-06-20 16:38:30 -07001004}WLANTL_CbType;
1005
Kapil Guptad90b3862016-06-25 00:42:49 +05301006
Jeff Johnson295189b2012-06-20 16:38:30 -07001007/*==========================================================================
1008
1009 FUNCTION WLANTL_GetFrames
1010
1011 DESCRIPTION
1012
1013 BAL calls this function at the request of the lower bus interface.
1014 When this request is being received TL will retrieve packets from HDD
1015 in accordance with the priority rules and the count supplied by BAL.
1016
1017 DEPENDENCIES
1018
1019 HDD must have registered with TL at least one STA before this function
1020 can be called.
1021
1022 PARAMETERS
1023
1024 IN
1025 pAdapter: pointer to the global adapter context; a handle to TL's
1026 or BAL's control block can be extracted from its context
1027 uSize: maximum size accepted by the lower layer
Jeff Johnson017fdc32013-02-27 09:22:30 -08001028 uFlowMask TX flow control mask. Each bit is defined as
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 WDA_TXFlowEnumType
1030
1031 OUT
1032 vosDataBuff: it will contain a pointer to the first buffer supplied
1033 by TL, if there is more than one packet supplied, TL
1034 will chain them through vOSS buffers
1035
1036 RETURN VALUE
1037
1038 The result code associated with performing the operation
1039
1040 1 or more: number of required resources if there are still frames to fetch
1041 For Volans, it's BD/PDU numbers. For Prima, it's free DXE descriptors.
1042 0 : error or HDD queues are drained
1043
1044 SIDE EFFECTS
1045
1046============================================================================*/
1047v_U32_t
1048WLANTL_GetFrames
1049(
1050 v_PVOID_t pAdapter,
1051 vos_pkt_t **ppFrameDataBuff,
1052 v_U32_t uSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07001053 v_U8_t uFlowMask,
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 v_BOOL_t* pbUrgent
1055);
1056
1057/*==========================================================================
1058
1059 FUNCTION WLANTL_TxComp
1060
1061 DESCRIPTION
1062 It is being called by BAL upon asynchronous notification of the packet
1063 or packets being sent over the bus.
1064
1065 DEPENDENCIES
1066 Tx complete cannot be called without a previous transmit.
1067
1068 PARAMETERS
1069
1070 IN
1071 pAdapter: pointer to the global adapter context; a handle to TL's
1072 or BAL's control block can be extracted from its context
1073 vosDataBuff: it will contain a pointer to the first buffer for which
1074 the BAL report is being made, if there is more then one
1075 packet they will be chained using vOSS buffers.
1076 wTxSTAtus: the status of the transmitted packet, see above chapter
1077 on HDD interaction for a list of possible values
1078
1079 RETURN VALUE
1080 The result code associated with performing the operation
1081
1082 SIDE EFFECTS
1083
1084============================================================================*/
1085VOS_STATUS
1086WLANTL_TxComp
1087(
1088 v_PVOID_t pAdapter,
1089 vos_pkt_t *pFrameDataBuff,
1090 VOS_STATUS wTxStatus
1091);
1092
1093/*==========================================================================
1094
1095 FUNCTION WLANTL_RxFrames
1096
1097 DESCRIPTION
1098 Callback registered by TL and called by BAL when a packet is received
1099 over the bus. Upon the call of this function TL will make the necessary
1100 decision with regards to the forwarding or queuing of this packet and
1101 the layer it needs to be delivered to.
1102
1103 DEPENDENCIES
1104 TL must be initiailized before this function gets called.
1105 If the frame carried is a data frame then the station for which it is
1106 destined to must have been previously registered with TL.
1107
1108 PARAMETERS
1109
1110 IN
1111 pAdapter: pointer to the global adapter context; a handle to TL's
1112 or BAL's control block can be extracted from its context
1113
1114 vosDataBuff: it will contain a pointer to the first buffer received,
1115 if there is more then one packet they will be chained
1116 using vOSS buffers.
1117
1118 RETURN VALUE
1119 The result code associated with performing the operation
1120
1121 SIDE EFFECTS
1122
1123============================================================================*/
1124VOS_STATUS
1125WLANTL_RxFrames
1126(
1127 v_PVOID_t pAdapter,
1128 vos_pkt_t *pFrameDataBuff
1129);
1130
1131/*==========================================================================
1132
1133 FUNCTION WLANTL_RxCachedFrames
1134
1135 DESCRIPTION
1136 Utility function used by TL to forward the cached frames to a particular
1137 station;
1138
1139 DEPENDENCIES
1140 TL must be initiailized before this function gets called.
1141 If the frame carried is a data frame then the station for which it is
1142 destined to must have been previously registered with TL.
1143
1144 PARAMETERS
1145
1146 IN
1147 pTLCb: pointer to TL handle
1148
1149 ucSTAId: station for which we need to forward the packets
1150
1151 vosDataBuff: it will contain a pointer to the first cached buffer
1152 received, if there is more then one packet they will be
1153 chained using vOSS buffers.
1154
1155 RETURN VALUE
1156 The result code associated with performing the operation
1157
1158 VOS_STATUS_E_INVAL: Input parameters are invalid
1159 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
1160 page fault
1161 VOS_STATUS_SUCCESS: Everything is good :)
1162
1163 SIDE EFFECTS
1164
1165============================================================================*/
1166VOS_STATUS
1167WLANTL_RxCachedFrames
1168(
1169 WLANTL_CbType* pTLCb,
1170 v_U8_t ucSTAId,
1171 vos_pkt_t* vosDataBuff
1172);
1173
1174/*==========================================================================
1175 FUNCTION WLANTL_ResourceCB
1176
1177 DESCRIPTION
1178 Called by the TL when it has packets available for transmission.
1179
1180 DEPENDENCIES
1181 The TL must be registered with BAL before this function can be called.
1182
1183 PARAMETERS
1184
1185 IN
1186 pAdapter: pointer to the global adapter context; a handle to TL's
1187 or BAL's control block can be extracted from its context
1188 uCount: avail resource count obtained from hw
1189
1190 RETURN VALUE
1191 The result code associated with performing the operation
1192
1193 SIDE EFFECTS
1194
1195============================================================================*/
1196VOS_STATUS
1197WLANTL_ResourceCB
1198(
1199 v_PVOID_t pAdapter,
1200 v_U32_t uCount
1201);
1202
1203
1204/*==========================================================================
1205 FUNCTION WLANTL_ProcessMainMessage
1206
1207 DESCRIPTION
1208 Called by VOSS when a message was serialized for TL through the
1209 main thread/task.
1210
1211 DEPENDENCIES
1212 The TL must be initialized before this function can be called.
1213
1214 PARAMETERS
1215
1216 IN
1217 pAdapter: pointer to the global adapter context; a handle to TL's
1218 control block can be extracted from its context
1219 message: type and content of the message
1220
1221
1222 RETURN VALUE
1223 The result code associated with performing the operation
1224
1225 SIDE EFFECTS
1226
1227============================================================================*/
1228VOS_STATUS
1229WLANTL_ProcessMainMessage
1230(
1231 v_PVOID_t pAdapter,
1232 vos_msg_t* message
1233);
1234
1235/*==========================================================================
1236 FUNCTION WLANTL_ProcessTxMessage
1237
1238 DESCRIPTION
1239 Called by VOSS when a message was serialized for TL through the
1240 tx thread/task.
1241
1242 DEPENDENCIES
1243 The TL must be initialized before this function can be called.
1244
1245 PARAMETERS
1246
1247 IN
1248 pAdapter: pointer to the global adapter context; a handle to TL's
1249 control block can be extracted from its context
1250 message: type and content of the message
1251
1252
1253 RETURN VALUE
1254
1255 The result code associated with performing the operation
1256 VOS_STATUS_SUCCESS: Everything is good :)
1257
1258
1259 SIDE EFFECTS
1260
1261============================================================================*/
1262VOS_STATUS
1263WLANTL_ProcessTxMessage
1264(
1265 v_PVOID_t pAdapter,
1266 vos_msg_t* message
1267);
1268
1269/*==========================================================================
1270 FUNCTION WLAN_TLGetNextTxIds
1271
1272 DESCRIPTION
1273 Gets the next station and next AC in the list
1274
1275 DEPENDENCIES
1276
1277 PARAMETERS
1278
1279 OUT
1280 pucSTAId: STAtion ID
1281
1282 RETURN VALUE
1283 The result code associated with performing the operation
1284
1285 SIDE EFFECTS
1286
1287============================================================================*/
1288VOS_STATUS
1289WLAN_TLGetNextTxIds
1290(
1291 v_PVOID_t pAdapter,
1292 v_U8_t* pucSTAId
1293);
1294
1295/*==========================================================================
1296
1297 FUNCTION WLANTL_CleanCb
1298
1299 DESCRIPTION
1300 Cleans TL control block
1301
1302 DEPENDENCIES
1303
1304 PARAMETERS
1305
1306 IN
1307 pTLCb: pointer to TL's control block
1308 ucEmpty: set if TL has to clean up the queues and release pedning pkts
1309
1310 RETURN VALUE
1311 The result code associated with performing the operation
1312
1313 SIDE EFFECTS
1314
1315============================================================================*/
1316VOS_STATUS
1317WLANTL_CleanCB
1318(
1319 WLANTL_CbType* pTLCb,
1320 v_U8_t ucEmpty
1321);
1322
1323/*==========================================================================
1324
1325 FUNCTION WLANTL_CleanSTA
1326
1327 DESCRIPTION
1328 Cleans a station control block.
1329
1330 DEPENDENCIES
1331
1332 PARAMETERS
1333
1334 IN
1335 pAdapter: pointer to the global adapter context; a handle to TL's
1336 control block can be extracted from its context
1337 ucEmpty: if set the queues and pending pkts will be emptyed
1338
1339 RETURN VALUE
1340 The result code associated with performing the operation
1341
1342 SIDE EFFECTS
1343
1344============================================================================*/
1345VOS_STATUS
1346WLANTL_CleanSTA
1347(
1348 WLANTL_STAClientType* ptlSTAClient,
1349 v_U8_t ucEmpty
1350);
1351
1352/*==========================================================================
1353 FUNCTION WLANTL_GetTxResourcesCB
1354
1355 DESCRIPTION
1356 Processing function for Resource needed signal. A request will be issued
1357 to BAL to get mor tx resources.
1358
1359 DEPENDENCIES
1360 The TL must be initialized before this function can be called.
1361
1362 PARAMETERS
1363
1364 IN
1365 pvosGCtx: pointer to the global vos context; a handle to TL's
1366 control block can be extracted from its context
1367
1368
1369 RETURN VALUE
1370 The result code associated with performing the operation
1371
1372 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
1373 page fault
1374 VOS_STATUS_SUCCESS: Everything is good :)
1375
1376 Other values can be returned as a result of a function call, please check
1377 corresponding API for more info.
1378 SIDE EFFECTS
1379
1380============================================================================*/
1381VOS_STATUS
1382WLANTL_GetTxResourcesCB
1383(
1384 v_PVOID_t pvosGCtx
1385);
1386
1387/*==========================================================================
1388 FUNCTION WLANTL_PrepareBDHeader
1389
1390 DESCRIPTION
1391 Callback function for serializing Suspend signal through Tx thread
1392
1393 DEPENDENCIES
1394 Just notify HAL that suspend in TL is complete.
1395
1396 PARAMETERS
1397
1398 IN
1399 pAdapter: pointer to the global adapter context; a handle to TL's
1400 control block can be extracted from its context
1401 pUserData: user data sent with the callback
1402
1403 RETURN VALUE
1404 The result code associated with performing the operation
1405
1406 SIDE EFFECTS
1407
1408============================================================================*/
1409void
1410WLANTL_PrepareBDHeader
1411(
1412 vos_pkt_t* vosDataBuff,
1413 v_PVOID_t* ppvBDHeader,
1414 v_MACADDR_t* pvDestMacAdddr,
1415 v_U8_t ucDisableFrmXtl,
1416 VOS_STATUS* pvosSTAtus,
1417 v_U16_t* usPktLen,
1418 v_U8_t ucQosEnabled,
1419 v_U8_t ucWDSEnabled,
1420 v_U8_t extraHeadSpace
1421);
1422
1423/*==========================================================================
1424 FUNCTION WLANTL_Translate8023To80211Header
1425
1426 DESCRIPTION
1427 Inline function for translating and 802.3 header into an 802.11 header.
1428
1429 DEPENDENCIES
1430
1431
1432 PARAMETERS
1433
1434 IN
1435 pTLCb: TL control block
Kiran Venkatappaa044eb92012-12-17 15:48:49 -08001436
1437 *pucStaId Station ID. In case of TDLS, this return the actual
1438 station index used to transmit.
Jeff Johnson295189b2012-06-20 16:38:30 -07001439
1440 IN/OUT
1441 vosDataBuff: vos data buffer, will contain the new header on output
1442
1443 OUT
1444 pvosStatus: status of the operation
1445
1446 RETURN VALUE
1447 No return.
1448
1449 SIDE EFFECTS
1450
1451============================================================================*/
Kiran Venkatappacab0d352012-12-17 13:09:22 -08001452VOS_STATUS
1453WLANTL_Translate8023To80211Header
1454(
1455 vos_pkt_t* vosDataBuff,
1456 VOS_STATUS* pvosStatus,
1457 WLANTL_CbType* pTLCb,
1458 v_U8_t *pucStaId,
Ravi Joshid0699502013-07-08 15:48:47 -07001459 WLANTL_MetaInfoType* pTlMetaInfo,
Kiran Venkatappacab0d352012-12-17 13:09:22 -08001460 v_U8_t *ucWDSEnabled,
1461 v_U8_t *extraHeadSpace
1462);
Jeff Johnson295189b2012-06-20 16:38:30 -07001463/*==========================================================================
1464 FUNCTION WLANTL_Translate80211To8023Header
1465
1466 DESCRIPTION
1467 Inline function for translating and 802.11 header into an 802.3 header.
1468
1469 DEPENDENCIES
1470
1471
1472 PARAMETERS
1473
1474 IN
1475 pTLCb: TL control block
1476 ucStaId: station ID
1477 ucHeaderLen: Length of the header from BD
1478 ucActualHLen: Length of header including padding or any other trailers
1479
1480 IN/OUT
1481 vosDataBuff: vos data buffer, will contain the new header on output
1482
1483 OUT
1484 pvosStatus: status of the operation
1485
1486 RETURN VALUE
1487 Status of the operation
1488
1489 SIDE EFFECTS
1490
1491============================================================================*/
1492VOS_STATUS
1493WLANTL_Translate80211To8023Header
1494(
1495 vos_pkt_t* vosDataBuff,
1496 VOS_STATUS* pvosStatus,
Jeff Johnson017fdc32013-02-27 09:22:30 -08001497 v_U16_t usActualHLen,
Jeff Johnson295189b2012-06-20 16:38:30 -07001498 v_U8_t ucHeaderLen,
1499 WLANTL_CbType* pTLCb,
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07001500 v_U8_t ucSTAId,
Katya Nigame7b69a82015-04-28 15:24:06 +05301501 v_BOOL_t bForwardIAPPwithLLC
Jeff Johnson295189b2012-06-20 16:38:30 -07001502);
1503
Katya Nigame7b69a82015-04-28 15:24:06 +05301504VOS_STATUS
1505WLANTL_MonTranslate80211To8023Header
1506(
1507 vos_pkt_t* vosDataBuff,
1508 WLANTL_CbType* pTLCb
1509);
Jeff Johnson295189b2012-06-20 16:38:30 -07001510/*==========================================================================
Madan Mohan Koyyalamudia148e1e2012-11-30 14:52:59 -08001511 FUNCTION WLANTL_FindFrameTypeBcMcUc
1512
1513 DESCRIPTION
1514 Utility function to find whether received frame is broadcast, multicast
1515 or unicast.
1516
1517 DEPENDENCIES
1518 The STA must be registered with TL before this function can be called.
1519
1520 PARAMETERS
1521
1522 IN
1523 pTLCb: pointer to the TL's control block
1524 ucSTAId: identifier of the station being processed
1525 vosDataBuff: pointer to the vos buffer
1526
1527 IN/OUT
1528 pucBcMcUc: pointer to buffer, will contain frame type on return
1529
1530 RETURN VALUE
1531 The result code associated with performing the operation
1532
1533 VOS_STATUS_E_INVAL: invalid input parameters
1534 VOS_STATUS_E_BADMSG: failed to extract info from data buffer
1535 VOS_STATUS_SUCCESS: success
1536
1537 SIDE EFFECTS
1538 None.
1539============================================================================*/
1540VOS_STATUS
1541WLANTL_FindFrameTypeBcMcUc
1542(
1543 WLANTL_CbType *pTLCb,
1544 v_U8_t ucSTAId,
1545 vos_pkt_t *vosDataBuff,
1546 v_U8_t *pucBcMcUc
1547);
1548
1549/*==========================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -07001550
1551 FUNCTION WLANTL_MgmtFrmRxDefaultCb
1552
1553 DESCRIPTION
1554 Default Mgmt Frm rx callback: asserts all the time. If this function gets
1555 called it means there is no registered rx cb pointer for Mgmt Frm.
1556
1557 DEPENDENCIES
1558
1559 PARAMETERS
1560
1561 Not used.
1562
1563 RETURN VALUE
1564 Always FAILURE.
1565
1566============================================================================*/
1567VOS_STATUS
1568WLANTL_MgmtFrmRxDefaultCb
1569(
1570 v_PVOID_t pAdapter,
1571 v_PVOID_t vosBuff
1572);
1573
1574/*==========================================================================
1575
1576 FUNCTION WLANTL_STARxDefaultCb
1577
1578 DESCRIPTION
1579 Default BAP rx callback: asserts all the time. If this function gets
1580 called it means there is no registered rx cb pointer for BAP.
1581
1582 DEPENDENCIES
1583
1584 PARAMETERS
1585
1586 Not used.
1587
1588 RETURN VALUE
1589 Always FAILURE.
1590
1591============================================================================*/
1592VOS_STATUS
1593WLANTL_BAPRxDefaultCb
1594(
1595 v_PVOID_t pAdapter,
1596 vos_pkt_t* vosDataBuff,
1597 WLANTL_BAPFrameEnumType frameType
1598);
1599
1600/*==========================================================================
1601
1602 FUNCTION WLANTL_STARxDefaultCb
1603
1604 DESCRIPTION
1605 Default STA rx callback: asserts all the time. If this function gets
1606 called it means there is no registered rx cb pointer for station.
1607 (Mem corruption most likely, it should never happen)
1608
1609 DEPENDENCIES
1610
1611 PARAMETERS
1612
1613 Not used.
1614
1615 RETURN VALUE
1616 Always FAILURE.
1617
1618============================================================================*/
1619VOS_STATUS
1620WLANTL_STARxDefaultCb
1621(
1622 v_PVOID_t pAdapter,
1623 vos_pkt_t* vosDataBuff,
1624 v_U8_t ucSTAId,
1625 WLANTL_RxMetaInfoType* pRxMetaInfo
1626);
1627
1628/*==========================================================================
1629
1630 FUNCTION WLANTL_STAFetchPktDefaultCb
1631
1632 DESCRIPTION
1633 Default fetch callback: asserts all the time. If this function gets
1634 called it means there is no registered fetch cb pointer for station.
1635 (Mem corruption most likely, it should never happen)
1636
1637 DEPENDENCIES
1638
1639 PARAMETERS
1640
1641 Not used.
1642
1643 RETURN VALUE
1644 Always FAILURE.
1645
1646============================================================================*/
1647VOS_STATUS
1648WLANTL_STAFetchPktDefaultCb
1649(
1650 v_PVOID_t pAdapter,
1651 v_U8_t* pucSTAId,
1652 WLANTL_ACEnumType ucAC,
1653 vos_pkt_t** vosDataBuff,
1654 WLANTL_MetaInfoType* tlMetaInfo
1655);
1656
1657/*==========================================================================
1658
1659 FUNCTION WLANTL_TxCompDefaultCb
1660
1661 DESCRIPTION
1662 Default tx complete handler. It will release the completed pkt to
1663 prevent memory leaks.
1664
1665 PARAMETERS
1666
1667 IN
1668 pAdapter: pointer to the global adapter context; a handle to
1669 TL/HAL/PE/BAP/HDD control block can be extracted from
1670 its context
1671 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1672 wTxSTAtus: status of the transmission
1673
1674
1675 RETURN VALUE
1676 The result code associated with performing the operation; please
1677 check vos_pkt_return_pkt for possible error codes.
1678
1679============================================================================*/
1680VOS_STATUS
1681WLANTL_TxCompDefaultCb
1682(
1683 v_PVOID_t pAdapter,
1684 vos_pkt_t* vosDataBuff,
1685 VOS_STATUS wTxSTAtus
1686);
1687
1688/*==========================================================================
1689
1690 FUNCTION WLANTL_PackUpTriggerFrame
1691
1692 DESCRIPTION
1693 Packs up a trigger frame and places it in TL's cache for tx and notifies
1694 BAL
1695
1696 DEPENDENCIES
1697
1698 PARAMETERS
1699
1700 IN
1701 pTLCb: pointer to the TL control block
1702 pfnSTATxComp: Tx Complete Cb to be used when frame is received
1703 ucSTAId: station id
1704 ucAC: access category
1705
1706 RETURN VALUE
1707 None
1708
1709 SIDE EFFECTS
1710
1711============================================================================*/
1712VOS_STATUS
1713WLANTL_PackUpTriggerFrame
1714(
1715 WLANTL_CbType* pTLCb,
1716 WLANTL_TxCompCBType pfnSTATxComp,
1717 v_U8_t ucSTAId,
1718 WLANTL_ACEnumType ucAC
1719);
1720
1721/*==========================================================================
1722
1723 FUNCTION WLANTL_TxCompTriggFrameSI
1724
1725 DESCRIPTION
1726 Tx complete handler for the service interval trigger frame.
1727 It will restart the SI timer.
1728
1729 PARAMETERS
1730
1731 IN
1732 pvosGCtx: pointer to the global vos context; a handle to
1733 TL/HAL/PE/BAP/HDD control block can be extracted from
1734 its context
1735 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1736 wTxSTAtus: status of the transmission
1737
1738
1739 RETURN VALUE
1740 The result code associated with performing the operation
1741
1742 ============================================================================*/
1743VOS_STATUS
1744WLANTL_TxCompTriggFrameSI
1745(
1746 v_PVOID_t pvosGCtx,
1747 vos_pkt_t* vosDataBuff,
1748 VOS_STATUS wTxSTAtus
1749);
1750
1751/*==========================================================================
1752
1753 FUNCTION WLANTL_TxCompTriggFrameSI
1754
1755 DESCRIPTION
1756 Tx complete handler for the service interval trigger frame.
1757 It will restart the SI timer.
1758
1759 PARAMETERS
1760
1761 IN
1762 pvosGCtx: pointer to the global vos context; a handle to
1763 TL/HAL/PE/BAP/HDD control block can be extracted from
1764 its context
1765 vosDataBuff: pointer to the VOSS data buffer that was transmitted
1766 wTxSTAtus: status of the transmission
1767
1768
1769 RETURN VALUE
1770 The result code associated with performing the operation
1771
1772============================================================================*/
1773VOS_STATUS
1774WLANTL_TxCompTriggFrameDI
1775(
1776 v_PVOID_t pvosGCtx,
1777 vos_pkt_t* vosDataBuff,
1778 VOS_STATUS wTxSTAtus
1779);
1780
1781/*==========================================================================
1782
1783 FUNCTION
1784
1785 DESCRIPTION Read RSSI value out of a RX BD
1786
1787 PARAMETERS: Caller must validate all parameters
1788
1789 RETURN VALUE
1790
1791============================================================================*/
1792VOS_STATUS WLANTL_ReadRSSI
1793(
1794 v_PVOID_t pAdapter,
1795 v_PVOID_t pBDHeader,
1796 v_U8_t STAid
1797);
1798
Madan Mohan Koyyalamudid9383fd2013-08-13 09:27:30 +05301799/*==========================================================================
1800
1801 FUNCTION
1802
1803 DESCRIPTION Read SNR value out of a RX BD
1804
1805 PARAMETERS: Caller must validate all parameters
1806
1807 RETURN VALUE
1808
1809============================================================================*/
1810VOS_STATUS WLANTL_ReadSNR
1811(
1812 v_PVOID_t pAdapter,
1813 v_PVOID_t pBDHeader,
1814 v_U8_t STAid
1815);
Jeff Johnson295189b2012-06-20 16:38:30 -07001816
1817
1818void WLANTL_PowerStateChangedCB
1819(
1820 v_PVOID_t pAdapter,
1821 tPmcState newState
1822);
1823
Jeff Johnson295189b2012-06-20 16:38:30 -07001824/*==========================================================================
Jeff Johnson017fdc32013-02-27 09:22:30 -08001825 FUNCTION WLANTL_FwdPktToHDD
Jeff Johnson295189b2012-06-20 16:38:30 -07001826
1827 DESCRIPTION
1828 Determine the Destation Station ID and route the Frame to Upper Layer
1829
1830 DEPENDENCIES
1831
1832 PARAMETERS
1833
1834 IN
1835 pvosGCtx: pointer to the global vos context; a handle to TL's
1836 control block can be extracted from its context
1837 ucSTAId: identifier of the station being processed
1838 vosDataBuff: pointer to the rx vos buffer
1839
1840 RETURN VALUE
1841 The result code associated with performing the operation
1842
1843 VOS_STATUS_E_INVAL: invalid input parameters
1844 VOS_STATUS_E_FAULT: pointer to TL cb is NULL ; access would cause a
1845 page fault
1846 VOS_STATUS_SUCCESS: Everything is good :)
1847
1848 SIDE EFFECTS
1849
1850============================================================================*/
1851
1852VOS_STATUS
1853WLANTL_FwdPktToHDD
1854(
1855 v_PVOID_t pvosGCtx,
1856 vos_pkt_t* pvosDataBuff,
1857 v_U8_t ucSTAId
1858);
1859
Abhishek Singh00b71972016-01-07 10:51:04 +05301860#ifdef WLAN_FEATURE_RMC
1861VOS_STATUS WLANTL_RmcInit
1862(
1863 v_PVOID_t pAdapter
1864);
1865
1866VOS_STATUS WLANTL_RmcDeInit
1867(
1868 v_PVOID_t pAdapter
1869);
1870
1871
1872tANI_U8 WLANTL_RmcHashRmcSession ( v_MACADDR_t *pMcastAddr );
1873
1874
1875WLANTL_RMC_SESSION *WLANTL_RmcLookUpRmcSession
1876(
1877 WLANTL_RMC_SESSION *rmcSession[],
1878 v_MACADDR_t *pMcastAddr
1879);
1880
1881WLANTL_RMC_SESSION *WLANTL_RmcAddRmcSession
1882(
1883 WLANTL_RMC_SESSION *rmcSession[],
1884 v_MACADDR_t *pMcastAddr
1885);
1886
1887tANI_U8
1888WLANTL_RmcDeleteRmcSession
1889(
1890 WLANTL_RMC_SESSION *rmcSession[],
1891 v_MACADDR_t *pMcastAddr
1892);
1893
1894VOS_STATUS
1895WLANTL_ProcessRmcCommand
1896(
1897 WLANTL_CbType* pTLCb,
1898 v_MACADDR_t *pMcastAddr,
1899 tANI_U32 command
1900);
1901
1902/*=============================================================================
1903 FUNCTION WLANTL_IsDuplicateMcastFrm
1904
1905 DESCRIPTION
1906 This function checks for duplicast multicast frames and drops them.
1907
1908 DEPENDENCIES
1909
1910 PARAMETERS
1911
1912 IN
1913
1914 pClientSTA : Pointer to WLANTL_STAClientType
1915 aucBDHeader : Pointer to BD header
1916
1917 RETURN VALUE
1918
1919 VOS_FALSE: This frame is not a duplicate
1920
1921 VOS_TRUE: This frame is a duplicate
1922
1923==============================================================================*/
1924v_U8_t
1925WLANTL_IsDuplicateMcastFrm
1926(
1927 WLANTL_STAClientType *pClientSTA,
1928 vos_pkt_t* vosDataBuff
1929);
1930
1931/*=============================================================================
1932 FUNCTION WLANTL_McastDeleteAllEntries
1933
1934 DESCRIPTION
1935 This function removes all multicast entries used for duplicate detection
1936
1937 DEPENDENCIES
1938
1939 PARAMETERS
1940
1941 IN
1942
1943 pClientSTA : Pointer to WLANTL_STAClientType
1944
1945 RETURN VALUE
1946
1947 None
1948
1949==============================================================================*/
1950void
1951WLANTL_McastDeleteAllEntries(WLANTL_STAClientType * pClientSTA);
1952
1953#endif /*WLAN_FEATURE_RMC*/
1954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955#endif /* #ifndef WLAN_QCT_TLI_H */