blob: 109f66ff621e03fe991363381e54c5fec6014283 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
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/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42#ifndef WLAN_QCT_WDA_H
43#define WLAN_QCT_WDA_H
44
45/*===========================================================================
46
47 W L A N DEVICE ADAPTATION L A Y E R
48 E X T E R N A L A P I
49
50
51DESCRIPTION
52 This file contains the external API exposed by the wlan adaptation layer for Prima
53 and Volans.
54
55 For Volans this layer is actually a thin layer that maps all WDA messages and
56 functions to equivalent HAL messages and functions. The reason this layer was introduced
57 was to keep the UMAC identical across Prima and Volans. This layer provides the glue
58 between SME, PE , TL and HAL.
59
60 Copyright (c) 2008 QUALCOMM Incorporated. All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64
65/*===========================================================================
66
67 EDIT HISTORY FOR FILE
68
69
70 This section contains comments describing changes made to the module.
71 Notice that changes are listed in reverse chronological order.
72
73
74 $Header:$ $DateTime: $ $Author: $
75
76
77when who what, where, why
78-------- --- ----------------------------------------------
7910/05/2011 haparna Adding support for Keep Alive Feature
8001/27/2011 rnair Adding WDA support for Volans.
8112/08/2010 seokyoun Move down HAL interfaces from TL to WDA
82 for UMAC convergence btween Volans/Libra and Prima
8308/25/2010 adwivedi WDA Context and exposed API's
84=========================================================================== */
85
86#include "aniGlobal.h"
87
88#if defined( FEATURE_WLAN_INTEGRATED_SOC )
89
90# include "wlan_qct_wdi_ds.h"
91
92#else
93
94# include "sirParams.h"
95# include "limGlobal.h"
96# include "halTypes.h"
97# include "wlan_qct_bal.h"
98# include "wlan_qct_hal.h"
99/* This header is for ADD and remove BA session */
100# include "halCommonApi.h"
101
102#endif
103
104/* Add Include */
105
106typedef enum
107{
108 WDA_INIT_STATE,
109 WDA_START_STATE,
110 WDA_READY_STATE,
111 WDA_PRE_ASSOC_STATE,
112 WDA_BA_UPDATE_TL_STATE,
113 WDA_BA_UPDATE_LIM_STATE,
114 WDA_STOP_STATE,
115 WDA_CLOSE_STATE
116}WDA_state;
117
118typedef enum
119{
120 WDA_PROCESS_SET_LINK_STATE,
121 WDA_IGNORE_SET_LINK_STATE
122}WDA_processSetLinkStateStatus;
123
124typedef enum
125{
126 WDA_DISABLE_BA,
127 WDA_ENABLE_BA
128}WDA_BaEnableFlags;
129
130typedef enum
131{
132 WDA_INVALID_STA_INDEX,
133 WDA_VALID_STA_INDEX
134}WDA_ValidStaIndex;
135
136#if defined( FEATURE_WLAN_NON_INTEGRATED_SOC )
137#if !defined( VOS_MQ_ID_WDA )
138#define VOS_MQ_ID_WDA VOS_MQ_ID_HAL
139#endif
140#endif
141/*--------------------------------------------------------------------------
142 Utilities
143 --------------------------------------------------------------------------*/
144
145#define WDA_TLI_CEIL( _a, _b) (( 0 != (_a)%(_b))? (_a)/(_b) + 1: (_a)/(_b))
146
147/*
148 * Check the version number and find if MCC feature is supported or not
149 */
150#define IS_MCC_SUPPORTED (WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual( 0, 1, 1, 0))
Viral Modid86bde22012-12-10 13:09:21 -0800151#define IS_FEATURE_SUPPORTED_BY_FW(featEnumValue) (!!WDA_getFwWlanFeatCaps(featEnumValue))
Jeff Johnson295189b2012-06-20 16:38:30 -0700152
Yathish9f22e662012-12-10 14:21:35 -0800153#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
154#define IS_ACTIVEMODE_OFFLOAD_FEATURE_ENABLE ((WDA_getFwWlanFeatCaps(WLANACTIVE_OFFLOAD)) & (WDI_getHostWlanFeatCaps(WLANACTIVE_OFFLOAD)))
155#else
156#define IS_ACTIVEMODE_OFFLOAD_FEATURE_ENABLE 0
157#endif
158
159
Jeff Johnson295189b2012-06-20 16:38:30 -0700160/*--------------------------------------------------------------------------
161 Definitions for Data path APIs
162 --------------------------------------------------------------------------*/
163
164/*As per 802.11 spec */
165#define WDA_TLI_MGMT_FRAME_TYPE 0x00
166#define WDA_TLI_CTRL_FRAME_TYPE 0x10
167#define WDA_TLI_DATA_FRAME_TYPE 0x20
168
169/*802.3 header definitions*/
170#define WDA_TLI_802_3_HEADER_LEN 14
171/*802.11 header definitions - header len without QOS ctrl field*/
172#define WDA_TLI_802_11_HEADER_LEN 24
173
174/*Determines the header len based on the disable xtl field*/
175#define WDA_TLI_MAC_HEADER_LEN( _dxtl) \
176 ( ( 0 == _dxtl )? \
177 WDA_TLI_802_3_HEADER_LEN:WDA_TLI_802_11_HEADER_LEN )
178
179/* TX channel enum type:
180
181 We have five types of TX packets so far and want to block/unblock each
182 traffic individually according to, for example, low resouce condition.
183 Define five TX channels for UMAC here. WDA can map these logical
184 channels to physical DXE channels if needed.
185*/
186typedef enum
187{
188 WDA_TXFLOW_AC_BK = 0,
189 WDA_TXFLOW_AC_BE = 1,
190 WDA_TXFLOW_AC_VI = 2,
191 WDA_TXFLOW_AC_VO = 3,
192 WDA_TXFLOW_MGMT = 4,
193 WDA_TXFLOW_BAP = 1, /* BAP is sent as BE */
194 WDA_TXFLOW_FC = 1, /* FC is sent as BE */
195 WDA_TXFLOW_MAX
196} WDA_TXFlowEnumType;
197
198#define WDA_TXFLOWMASK 0x1F /* 1~4bit:low priority ch / 5bit: high */
199
200/* ---------------------------------------------------------------------
201 Libra and Volans specifics
202
203 TODO Consider refactoring it and put it into two separate headers,
204 one for Prima and one for Volans
205
206 feturized with FEATURE_WLAN_INTEGRATED_SOC for Prima
207 ----------------------------------------------------------------------*/
208
209/* For backward compatability with SDIO. It's BAL header size for SDIO
210 interface. It's nothing for integrated SOC */
211#if defined( FEATURE_WLAN_INTEGRATED_SOC )
212#define WDA_DXE_HEADER_SIZE 0
213#else /* FEATURE_WLAN_INTEGRATED_SOC */
214#define WDA_DXE_HEADER_SIZE WLAN_BAL_DXE_HEADER_SIZE
215#endif /* FEATURE_WLAN_INTEGRATED_SOC */
216
217#if defined( FEATURE_WLAN_INTEGRATED_SOC )
218#else /* FEATURE_WLAN_INTEGRATED_SOC */
219/*Libra PDU size*/
220#define WDA_TLI_PDU_RES_SIZE 124
221#endif /* FEATURE_WLAN_INTEGRATED_SOC */
222
223/*Minimum resources needed - arbitrary*/
224
225/*DXE + SD*/
226#if defined( FEATURE_WLAN_INTEGRATED_SOC )
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800227#define WDA_WLAN_LIBRA_HEADER_LEN (20 + 8)
Jeff Johnson295189b2012-06-20 16:38:30 -0700228#else /* FEATURE_WLAN_INTEGRATED_SOC */
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800229#define WLAN_LIBRA_HEADER_LEN (20 + 8)
Jeff Johnson295189b2012-06-20 16:38:30 -0700230#endif /* FEATURE_WLAN_INTEGRATED_SOC */
231
232#if defined( FEATURE_WLAN_INTEGRATED_SOC )
233#define WDA_TLI_BD_PDU_RESERVE_THRESHOLD 10
234#else /* FEATURE_WLAN_INTEGRATED_SOC */
235#define WDA_TLI_BD_PDU_RESERVE_THRESHOLD 150
236#endif /* FEATURE_WLAN_INTEGRATED_SOC */
237
238
239#if defined( FEATURE_WLAN_INTEGRATED_SOC )
240# define WDA_TLI_MIN_RES_MF 1
241# define WDA_TLI_MIN_RES_BAP 2
242# define WDA_TLI_MIN_RES_DATA 3
243#else
244# define WDA_TLI_MIN_RES_MF 13 /*Keeping for MF*/
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800245# define WDA_TLI_MIN_RES_BAP (WDA_TLI_MIN_RES_MF + 13) /*Another for BAP*/
246# define WDA_TLI_MIN_RES_DATA (WDA_TLI_MIN_RES_BAP + 13) /*Min 12 for data*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700247# define WLANTL_TH_RES_DATA 254
248#endif
249
250#if defined( FEATURE_WLAN_INTEGRATED_SOC )
251# define WDA_NUM_STA 8
252#else
253# define WDA_NUM_STA HAL_NUM_STA
254#endif
255
256/* For backward compatability with SDIO.
257
258 For SDIO interface, calculate the TX frame length and number of PDU
259 to transfter the frame.
260
261 _vosBuff: IN VOS pakcet buffer pointer
262 _usPktLen: OUT VOS packet length in bytes
263 _uResLen: OUT Number of PDU to hold this VOS packet
264 _uTotalPktLen: OUT Totoal packet length including BAL header size
265
266 For integrated SOC, _usPktLen and _uTotalPktLen is VOS pakcet length
267 which does include BD header length. _uResLen is hardcoded 2.
268 */
269#if defined( FEATURE_WLAN_INTEGRATED_SOC )
270
271#ifdef WINDOWS_DT
272#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
273 _uResLen, _uTotalPktLen) \
274 do \
275 { \
276 _usPktLen = wpalPacketGetFragCount((wpt_packet*)_vosBuff) + 1/*BD*/;\
277 _uResLen = _usPktLen; \
278 _uTotalPktLen = _usPktLen; \
279 } \
280 while ( 0 )
281#else /* WINDOWS_DT */
282#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
283 _uResLen, _uTotalPktLen) \
284 do \
285 { \
286 _usPktLen = 2; /* Need 1 descriptor per a packet + packet*/ \
287 _uResLen = 2; /* Assume that we spends two DXE descriptor */ \
288 _uTotalPktLen = _usPktLen; \
289 } \
290 while ( 0 )
291#endif /* WINDOWS_DT */
292
293#else /* FEATURE_WLAN_INTEGRATED_SOC */
294
295#define WLANTL_PDU_RES_SIZE 124 /*Libra PDU size*/
296#define WLAN_LIBRA_BD_HEADER_LEN 128 /*The lenght of the tx BD header*/
297
298/*Minimum resources needed - arbitrary*/
299
300/*DXE + SD*/
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800301#define WLAN_LIBRA_HEADER_LEN (20 + 8)
Jeff Johnson295189b2012-06-20 16:38:30 -0700302
303#define WLANTL_MAX_MSDU 1538
304
305#define WDA_TLI_PROCESS_FRAME_LEN( _vosBuff, _usPktLen, \
306 _uResLen, _uTotalPktLen) \
307 do \
308 { \
309 vos_pkt_get_packet_length( _vosBuff, &_usPktLen ); \
310 _uResLen = WDA_TLI_CEIL( (_usPktLen - WLAN_LIBRA_BD_HEADER_LEN), \
311 WLANTL_PDU_RES_SIZE ) + 1/*The BD*/; \
312 _uTotalPktLen = _usPktLen + WLAN_BAL_DXE_HEADER_SIZE; \
313 } \
314 while ( 0 )
315#endif /* FEATURE_WLAN_INTEGRATED_SOC */
316
317
318/*--------------------------------------------------------------------------
319 Message Definitions
320 --------------------------------------------------------------------------*/
321
322/* TX Tranmit request message. It serializes TX request to TX thread.
323 The message is processed in TL.
324*/
325#define WDA_DS_TX_START_XMIT WLANTL_TX_START_XMIT
326#define WDA_DS_FINISH_ULA WLANTL_FINISH_ULA
327
328
329#define WDA_TX_PACKET_FREED 0X0
330
Jeff Johnson43971f52012-07-17 12:26:56 -0700331/* Approximate amount of time to wait for WDA to stop WDI considering 1 pendig req too*/
332#define WDA_STOP_TIMEOUT ( (WDI_RESPONSE_TIMEOUT * 2) + WDI_SET_POWER_STATE_TIMEOUT + 5)
Jeff Johnson295189b2012-06-20 16:38:30 -0700333/*--------------------------------------------------------------------------
334 Functions
335 --------------------------------------------------------------------------*/
336
337/* For data client */
338typedef VOS_STATUS (*WDA_DS_TxCompleteCallback) ( v_PVOID_t pContext, vos_pkt_t *pFrameDataBuff, VOS_STATUS txStatus );
339typedef VOS_STATUS (*WDA_DS_RxPacketCallback) ( v_PVOID_t pContext, vos_pkt_t *pFrameDataBuff );
340typedef v_U32_t (*WDA_DS_TxPacketCallback) ( v_PVOID_t pContext,
341 vos_pkt_t **ppFrameDataBuff,
342 v_U32_t uSize,
343#if defined( FEATURE_WLAN_INTEGRATED_SOC )
344 v_U8_t uFlowMask,
345#endif
346 v_BOOL_t *pbUrgent );
347typedef VOS_STATUS (*WDA_DS_ResourceCB) ( v_PVOID_t pContext, v_U32_t uCount );
348
349
350#if defined( FEATURE_WLAN_INTEGRATED_SOC )
351/* For management client */
352typedef VOS_STATUS (*WDA_DS_TxCompleteCb)( v_PVOID_t pContext, wpt_packet *pFrame );
353typedef VOS_STATUS (*WDA_DS_RxCompleteCb)( v_PVOID_t pContext, wpt_packet *pFrame );
354typedef VOS_STATUS (*WDA_DS_TxFlowControlCb)( v_PVOID_t pContext, v_U8_t acMask );
355typedef void (*pWDATxRxCompFunc)( v_PVOID_t pContext, void *pData );
356
357//callback function for TX complete
358//parameter 1 - global pMac pointer
359//parameter 2 - txComplete status : 1- success, 0 - failure.
360typedef eHalStatus (*pWDAAckFnTxComp)(tpAniSirGlobal, tANI_U32);
361
362typedef struct
363{
364 tANI_U16 ucValidStaIndex ;
365 /*
366 * each bit in ucUseBaBitmap represent BA is enabled or not for this tid
367 * tid0 ..bit0, tid1..bit1 and so on..
368 */
369 tANI_U8 ucUseBaBitmap ;
370 tANI_U8 bssIdx;
371 tANI_U32 framesTxed[STACFG_MAX_TC];
372}tWdaStaInfo, *tpWdaStaInfo ;
373
374/* group all the WDA timers into this structure */
375typedef struct
376{
377 /* BA activity check timer */
378 TX_TIMER baActivityChkTmr ;
379
380 /* Tx Complete Timeout timer */
381 TX_TIMER TxCompleteTimer ;
382}tWdaTimers ;
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800383#ifdef WLAN_SOFTAP_VSTA_FEATURE
384#define WDA_MAX_STA (38)
385#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700386#define WDA_MAX_STA (16)
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800387#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700388typedef struct
389{
390 v_PVOID_t pVosContext; /* global VOSS context*/
391 v_PVOID_t pWdiContext; /* WDI context */
392 WDA_state wdaState ; /* WDA state tracking */
Jeff Johnson295189b2012-06-20 16:38:30 -0700393 v_PVOID_t wdaWdiCfgApiMsgParam ; /* WDI API paramter tracking */
394 vos_event_t wdaWdiEvent; /* WDI API sync event */
395
396 /* Event to wait for tx completion */
397 vos_event_t txFrameEvent;
398
399 /* call back function for tx complete*/
400 pWDATxRxCompFunc pTxCbFunc;
401 /* call back function for tx packet ack */
402 pWDAAckFnTxComp pAckTxCbFunc;
403 tANI_U32 frameTransRequired;
404 tSirMacAddr macBSSID; /*BSSID of the network */
405 tSirMacAddr macSTASelf; /*Self STA MAC*/
406
407 /* TX channel mask for flow control */
408 v_U8_t uTxFlowMask;
409 /* TL's TX resource callback */
410 WDA_DS_ResourceCB pfnTxResourceCB;
411 /* TL's TX complete callback */
412 WDA_DS_TxCompleteCallback pfnTxCompleteCallback;
413
414 tWdaStaInfo wdaStaInfo[WDA_MAX_STA];
415
416 tANI_U8 wdaMaxSta;
417 tWdaTimers wdaTimers;
418
419 /* STA, AP, IBSS, MULTI-BSS etc.*/
420 tBssSystemRole wdaGlobalSystemRole;
421
422 /* driver mode, PRODUCTION or FTM */
423 tDriverType driverMode;
424
425#ifdef ANI_MANF_DIAG
426 /* FTM Command Request tracking */
427 v_PVOID_t wdaFTMCmdReq;
428#endif /* ANI_MANF_DIAG */
429
430 /* Event to wait for suspend data tx*/
431 vos_event_t suspendDataTxEvent;
432 /* Status frm TL after suspend/resume Tx */
433 tANI_U8 txStatus;
434 /* Flag set to true when TL suspend timesout.*/
435 tANI_U8 txSuspendTimedOut;
436
437 vos_event_t waitOnWdiIndicationCallBack;
438
439 /* version information */
440 tSirVersionType wcnssWlanCompiledVersion;
441 tSirVersionType wcnssWlanReportedVersion;
442 tSirVersionString wcnssSoftwareVersionString;
443 tSirVersionString wcnssHardwareVersionString;
444
445
446 tSirLinkState linkState;
447 /* set, when BT AMP session is going on */
448 v_BOOL_t wdaAmpSessionOn;
449 v_U32_t VosPacketToFree;
Jeff Johnsone7245742012-09-05 17:12:55 -0700450 v_BOOL_t needShutdown;
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700451 v_BOOL_t wdiFailed;
Madan Mohan Koyyalamudid57ae632012-11-06 18:42:48 -0800452 v_BOOL_t wdaTimersCreated;
Jeff Johnson295189b2012-06-20 16:38:30 -0700453} tWDA_CbContext ;
454
455typedef struct
456{
457 v_PVOID_t pWdaContext; /* pointer to WDA context*/
458 v_PVOID_t wdaMsgParam; /* PE parameter tracking */
459 v_PVOID_t wdaWdiApiMsgParam; /* WDI API paramter tracking */
460} tWDA_ReqParams;
461
462/*
463 * FUNCTION: WDA_open
464 * open WDA context
465 */
466
467VOS_STATUS WDA_open(v_PVOID_t pVosContext, v_PVOID_t pOSContext,
468 tMacOpenParameters *pMacParams ) ;
469
470/*
471 * FUNCTION: WDA_preStart
472 * Trigger DAL-AL to start CFG download
473 */
474VOS_STATUS WDA_start(v_PVOID_t pVosContext) ;
475
476VOS_STATUS WDA_NVDownload_Start(v_PVOID_t pVosContext);
477
478/*
479 * FUNCTION: WDA_preStart
480 * Trigger WDA to start CFG download
481 */
482VOS_STATUS WDA_preStart(v_PVOID_t pVosContext) ;
483/*
484 * FUNCTION: WDA_stop
485 * stop WDA
486 */
487VOS_STATUS WDA_stop(v_PVOID_t pVosContext,tANI_U8 reason);
488
489/*
490 * FUNCTION: WDA_close
491 * close WDA context
492 */
493VOS_STATUS WDA_close(v_PVOID_t pVosContext);
494/*
495 * FUNCTION: WDA_shutdown
496 * Shutdown will not close the control transport, added by SSR
497 */
498VOS_STATUS WDA_shutdown(v_PVOID_t pVosContext, wpt_boolean closeTransport);
499
500/*
Madan Mohan Koyyalamudi9d7a27f2012-11-28 15:55:25 -0800501 * FUNCTION: WDA_setNeedShutdown
502 * WDA stop failed or WDA NV Download failed
Jeff Johnsone7245742012-09-05 17:12:55 -0700503 */
Madan Mohan Koyyalamudi9d7a27f2012-11-28 15:55:25 -0800504void WDA_setNeedShutdown(v_PVOID_t pVosContext);
Jeff Johnsone7245742012-09-05 17:12:55 -0700505/*
506 * FUNCTION: WDA_needShutdown
507 * WDA requires a shutdown rather than a close
508 */
509v_BOOL_t WDA_needShutdown(v_PVOID_t pVosContext);
510
511/*
Jeff Johnson295189b2012-06-20 16:38:30 -0700512 * FUNCTION: WDA_McProcessMsg
513 * DAL-AL message processing entry function
514 */
515
516VOS_STATUS WDA_McProcessMsg( v_CONTEXT_t pVosContext, vos_msg_t *pMsg ) ;
517
518/* -----------------------------------------------------------------
519 * WDA data path API's
520 * ----------------------------------------------------------------*/
521/*
522 * FUNCTION: WDA_MgmtDSRegister
523 * Send Message back to PE
524 */
525
526VOS_STATUS WDA_MgmtDSRegister(tWDA_CbContext *pWDA,
527 WDA_DS_TxCompleteCb WDA_TxCompleteCallback,
528 WDA_DS_RxCompleteCb WDA_RxCompleteCallback,
529 WDA_DS_TxFlowControlCb WDA_TxFlowCtrlCallback
530 ) ;
531/*
532 * FUNCTION: WDA_MgmtDSTxPacket
533 * Forward TX management frame to WDI
534 */
535
536VOS_STATUS WDA_TxPacket(tWDA_CbContext *pWDA,
537 void *pFrmBuf,
538 tANI_U16 frmLen,
539 eFrameType frmType,
540 eFrameTxDir txDir,
541 tANI_U8 tid,
542 pWDATxRxCompFunc pCompFunc,
543 void *pData,
544 pWDAAckFnTxComp pAckTxComp,
545 tANI_U8 txFlag);
546
547/*
548 * FUNCTION: WDA_PostMsgApi
549 * API fpr PE to post Message to WDA
550 */
551VOS_STATUS WDA_PostMsgApi(tpAniSirGlobal pMac, tSirMsgQ *pMsg) ;
552
553/* ---------------------------------------------------------
554 * FUNCTION: wdaGetGlobalSystemRole()
555 *
556 * Get the global HAL system role.
557 * ---------------------------------------------------------
558 */
559tBssSystemRole wdaGetGlobalSystemRole(tpAniSirGlobal pMac);
560
561/* maximum wait time for WDA complete event (correct value has to be derived)
562 * for now giving the value 1000 ms */
563#define WDA_WDI_COMPLETION_TIME_OUT 30000 /* in ms */
564
565#define WDA_TL_TX_FRAME_TIMEOUT 10000 /* in msec a very high upper limit of 5,000 msec */
566#define WDA_TL_SUSPEND_TIMEOUT 2000 /* in ms unit */
567
568/*Tag used by WDA to mark a timed out frame*/
569#define WDA_TL_TX_MGMT_TIMED_OUT 0xDEAD
570
571#define WDA_TL_TX_SUSPEND_SUCCESS 0
572#define WDA_TL_TX_SUSPEND_FAILURE 1
573
574// FIXME Temporary value for R33D integaration
575//#define WDA_TL_TX_FRAME_TIMEOUT 20000 /* in msec a very high upper limit */
576
577#endif /* FEATURE_WLAN_INTEGRATED_SOC */
578
579#if defined( FEATURE_WLAN_NON_INTEGRATED_SOC )
580#if !defined( wdaGetGlobalSystemRole )
581#define wdaGetGlobalSystemRole halGetGlobalSystemRole
582#endif
583#endif
584
585/* ---------------------------------------------------------------------------
586
587 RX Meta info access for Integrated SOC
588 RX BD header access for NON Integrated SOC
589
590 These MACRO are for RX frames that are on flat buffers
591
592 ---------------------------------------------------------------------------*/
593
594/* WDA_GET_RX_MAC_HEADER *****************************************************/
595#if defined( FEATURE_WLAN_INTEGRATED_SOC )
596# define WDA_GET_RX_MAC_HEADER(pRxMeta) \
597 (tpSirMacMgmtHdr)( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderPtr )
598#else
599# define WDA_GET_RX_MAC_HEADER(bdHd) SIR_MAC_BD_TO_MPDUHEADER(bdHd)
600#endif
601
602/* WDA_GET_RX_MPDUHEADER3A ****************************************************/
603#if defined( FEATURE_WLAN_INTEGRATED_SOC )
604# define WDA_GET_RX_MPDUHEADER3A(pRxMeta) \
605 (tpSirMacDataHdr3a)( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderPtr )
606#else
607# define WDA_GET_RX_MPDUHEADER3A(bdHd) SIR_MAC_BD_TO_MPDUHEADER3A(bdHd)
608#endif
609
610/* WDA_GET_RX_MPDU_HEADER_LEN *************************************************/
611#if defined( FEATURE_WLAN_INTEGRATED_SOC )
612# define WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta) \
613 ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduHeaderLength )
614#else
615# define WDA_GET_RX_MPDU_HEADER_LEN(bdHd) WLANHAL_RX_BD_GET_MPDU_H_LEN(bdHd)
616#endif
617
618/* WDA_GET_RX_MPDU_LEN ********************************************************/
619#if defined( FEATURE_WLAN_INTEGRATED_SOC )
620# define WDA_GET_RX_MPDU_LEN(pRxMeta) \
621 ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduLength )
622#else
623# define WDA_GET_RX_MPDU_LEN(bdHd) WLANHAL_RX_BD_GET_MPDU_LEN(bdHd)
624#endif
625
626/* WDA_GET_RX_PAYLOAD_LEN ****************************************************/
627#if defined( FEATURE_WLAN_INTEGRATED_SOC )
628# define WDA_GET_RX_PAYLOAD_LEN(pRxMeta) \
629 ( WDA_GET_RX_MPDU_LEN(pRxMeta) - WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta) )
630#else
631# define WDA_GET_RX_PAYLOAD_LEN(bdHd) SIR_MAC_BD_TO_PAYLOAD_LEN(bdHd)
632#endif
633
634/* WDA_GET_RX_MAC_RATE_IDX ***************************************************/
635#if defined( FEATURE_WLAN_INTEGRATED_SOC )
636# define WDA_GET_RX_MAC_RATE_IDX(pRxMeta) \
637 ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->rateIndex )
638#else
639# define WDA_GET_RX_MAC_RATE_IDX(bdHd) SIR_MAC_BD_TO_RATE_INDEX(bdHd)
640#endif
641
642/* WDA_GET_RX_MPDU_DATA ******************************************************/
643#if defined( FEATURE_WLAN_INTEGRATED_SOC )
644# define WDA_GET_RX_MPDU_DATA(pRxMeta) \
645 ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->mpduDataPtr )
646#else
647# define WDA_GET_RX_MPDU_DATA(bdHd) SIR_MAC_BD_TO_MPDUDATA(bdHd)
648#endif
649
650/* WDA_GET_RX_MPDU_DATA_OFFSET ***********************************************/
651// For Integrated SOC: When UMAC receive the packet. BD is already stripped off.
652// Data offset is the MPDU header length
653#if defined( FEATURE_WLAN_INTEGRATED_SOC )
654# define WDA_GET_RX_MPDU_DATA_OFFSET(pRxMeta) WDA_GET_RX_MPDU_HEADER_LEN(pRxMeta)
655#else
656# define WDA_GET_RX_MPDU_DATA_OFFSET(bdHd) \
657 WLANHAL_RX_BD_GET_MPDU_D_OFFSET(bdHd)
658#endif
659
660/* WDA_GET_RX_MPDU_HEADER_OFFSET *********************************************/
661// For Integrated SOC: We UMAC receive the frame,
662// BD is gone and MAC header at offset 0
663#if defined( FEATURE_WLAN_INTEGRATED_SOC )
664# define WDA_GET_RX_MPDU_HEADER_OFFSET(pRxMeta) 0
665#else
666# define WDA_GET_RX_MPDU_HEADER_OFFSET(bdHd) WLANHAL_RX_BD_GET_MPDU_H_OFFSET(bdHd)
667#endif
668
669/* WDA_GET_RX_UNKNOWN_UCAST **************************************************/
670#if defined( FEATURE_WLAN_INTEGRATED_SOC )
671# define WDA_GET_RX_UNKNOWN_UCAST(pRxMeta) \
672 ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->unknownUcastPkt )
673#else
674# define WDA_GET_RX_UNKNOWN_UCAST(bdHd) SIR_MAC_BD_IS_UNKNOWN_UCAST_FRAME(bdHd)
675#endif
676
677/* WDA_GET_RX_TID ************************************************************/
678#if defined( FEATURE_WLAN_INTEGRATED_SOC )
679# define WDA_GET_RX_TID(pRxMeta) ( ((WDI_DS_RxMetaInfoType *)(pRxMeta))->tid )
680#else
681# define WDA_GET_RX_TID(bdHd) WLANHAL_RX_BD_GET_TID(bdHd)
682#endif
683
684/* WDA_GET_RX_STAID **********************************************************/
685#if defined( FEATURE_WLAN_INTEGRATED_SOC )
686# define WDA_GET_RX_STAID(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->staId)
687#else
688# define WDA_GET_RX_STAID(bdHd) WLANHAL_RX_BD_GET_STA_ID(bdHd)
689#endif
690
691/* WDA_GET_RX_ADDR3_IDX ******************************************************/
692#if defined( FEATURE_WLAN_INTEGRATED_SOC )
693# define WDA_GET_RX_ADDR3_IDX(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->addr3Idx)
694#else
695# define WDA_GET_RX_ADDR3_IDX(bdHd) WLANHAL_RX_BD_GET_ADDR3_IDX(bdHd)
696#endif
697
698/* WDA_GET_RX_CH *************************************************************/
699#if defined( FEATURE_WLAN_INTEGRATED_SOC )
700# define WDA_GET_RX_CH(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxChannel)
701#else
702# define WDA_GET_RX_CH(bdHd) SIR_MAC_BD_TO_RX_CHANNEL(bdHd)
703#endif
704
705/* WDA_GET_RX_DPUSIG *********************************************************/
706#if defined( FEATURE_WLAN_INTEGRATED_SOC )
707# define WDA_GET_RX_DPUSIG(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->dpuSig)
708#else
709# define WDA_GET_RX_DPUSIG(bdHd) WLANHAL_RX_BD_GET_DPU_SIG(bdHd)
710#endif
711
712/* WDA_IS_RX_BCAST ***********************************************************/
713#if defined( FEATURE_WLAN_INTEGRATED_SOC )
714# define WDA_IS_RX_BCAST(pRxMeta) \
715 ( (1 == ((WDI_DS_RxMetaInfoType*)(pRxMeta))->bcast) ? VOS_TRUE : VOS_FALSE )
716#else
717# define WDA_IS_RX_BCAST(bdHd) \
718 ( ( 0xFF == WLANHAL_RX_BD_GET_ADDR1_IDX(bdHd)) ? VOS_TRUE : VOS_FALSE )
719#endif
720
721/* WDA_GET_RX_FT_DONE ********************************************************/
722#if defined( FEATURE_WLAN_INTEGRATED_SOC )
723# define WDA_GET_RX_FT_DONE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ft)
724#else
725# define WDA_GET_RX_FT_DONE(bdHd) WLANHAL_RX_BD_GET_FT(bdHd)
726#endif
727
728/* WDA_GET_RX_DPU_FEEDBACK **************************************************/
729#if defined( FEATURE_WLAN_INTEGRATED_SOC )
730# define WDA_GET_RX_DPU_FEEDBACK(pRxMeta) \
731 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->dpuFeedback)
732#endif
733
734/* WDA_GET_RX_ASF ************************************************************/
735#if defined( FEATURE_WLAN_INTEGRATED_SOC )
736# define WDA_GET_RX_ASF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_asf)
737#else
738# define WDA_GET_RX_ASF(bdHd) WLANHAL_RX_BD_GET_ASF(bdHd)
739#endif
740
741/* WDA_GET_RX_AEF ************************************************************/
742#if defined( FEATURE_WLAN_INTEGRATED_SOC )
743# define WDA_GET_RX_AEF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_aef)
744#else
745# define WDA_GET_RX_AEF(bdHd) WLANHAL_RX_BD_GET_AEF(bdHd)
746#endif
747
748/* WDA_GET_RX_ESF ************************************************************/
749#if defined( FEATURE_WLAN_INTEGRATED_SOC )
750# define WDA_GET_RX_ESF(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->amsdu_esf)
751#else
752# define WDA_GET_RX_ESF(bdHd) WLANHAL_RX_BD_GET_ESF(bdHd)
753#endif
754
755/* WDA_GET_RX_BEACON_SENT ****************************************************/
756#if defined( FEATURE_WLAN_INTEGRATED_SOC )
757# define WDA_GET_RX_BEACON_SENT(pRxMeta) \
758 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->bsf)
759#else
760# define WDA_GET_RX_BEACON_SENT(bdHd) SIR_MAC_BD_TO_IBSS_BCN_SENT(bdHd)
761#endif
762
763/* WDA_GET_RX_TSF_LATER *****************************************************/
764#if defined( FEATURE_WLAN_INTEGRATED_SOC )
765# define WDA_GET_RX_TSF_LATER(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rtsf)
766#else
767# define WDA_GET_RX_TSF_LATER(bdHd) SIR_MAC_BD_TO_IBSS_TSF_LATER(bdHd)
768#endif
769
770/* WDA_GET_RX_TYPE ***********************************************************/
771#if defined( FEATURE_WLAN_INTEGRATED_SOC )
772# define WDA_GET_RX_TYPE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->type)
773#else
774# define WDA_GET_RX_TYPE(bdHd) \
775 ( ( WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd) & 0x30 ) >> 4 )
776#endif
777
778/* WDA_GET_RX_SUBTYPE ********************************************************/
779#if defined( FEATURE_WLAN_INTEGRATED_SOC )
780# define WDA_GET_RX_SUBTYPE(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->subtype)
781#else
782# define WDA_GET_RX_SUBTYPE(bdHd) ( WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd) & 0x0F )
783#endif
784
785/* WDA_GET_RX_TYPE_SUBTYPE ****************************************************/
786#if defined( FEATURE_WLAN_INTEGRATED_SOC )
787# define WDA_GET_RX_TYPE_SUBTYPE(pRxMeta) \
788 ((WDA_GET_RX_TYPE(pRxMeta)<<4)|WDA_GET_RX_SUBTYPE(pRxMeta))
789#else
790# define WDA_GET_RX_TYPE_SUBTYPE(bdHd) WLANHAL_RX_BD_GET_TYPE_SUBTYPE(bdHd)
791#endif
792
793/* WDA_GET_RX_REORDER_OPCODE : For MSDU reorder *******************************/
794#if defined( FEATURE_WLAN_INTEGRATED_SOC )
795# define WDA_GET_RX_REORDER_OPCODE(pRxMeta) \
796 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderOpcode)
797#else
798# define WDA_GET_RX_REORDER_OPCODE(bdHd) WLANHAL_RX_BD_GET_BA_OPCODE(bdHd)
799#endif
800
801/* WDA_GET_RX_REORDER_SLOT_IDX : For MSDU reorder ****************************/
802#if defined( FEATURE_WLAN_INTEGRATED_SOC )
803# define WDA_GET_RX_REORDER_SLOT_IDX(pRxMeta) \
804 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderSlotIdx)
805#else
806# define WDA_GET_RX_REORDER_SLOT_IDX(bdHd) WLANHAL_RX_BD_GET_BA_SI(bdHd)
807#endif
808
809/* WDA_GET_RX_REORDER_FWD_IDX : For MSDU reorder *****************************/
810#if defined( FEATURE_WLAN_INTEGRATED_SOC )
811# define WDA_GET_RX_REORDER_FWD_IDX(pRxMeta) \
812 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->ampdu_reorderFwdIdx)
813#else
814# define WDA_GET_RX_REORDER_FWD_IDX(bdHd) WLANHAL_RX_BD_GET_BA_FI(bdHd)
815#endif
816
817/* WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO : Fro MSDU reorder **********************/
818#if defined( FEATURE_WLAN_INTEGRATED_SOC )
819# define WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO(pRxMeta) \
820 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->currentPktSeqNo)
821#else
822# define WDA_GET_RX_REORDER_CUR_PKT_SEQ_NO(bdHd) \
823 WLANHAL_RX_BD_GET_BA_CSN(bdHd)
824#endif
825
826/* WDA_IS_RX_LLC_PRESENT *****************************************************/
827#if defined( FEATURE_WLAN_INTEGRATED_SOC )
828# define WDA_IS_RX_LLC_PRESENT(pRxMeta) \
829 ( (0 == ((WDI_DS_RxMetaInfoType*)(pRxMeta))->llcr) ? VOS_TRUE : VOS_FALSE )
830#else
831# define WDA_IS_RX_LLC_PRESENT(bdHd) \
832 ( (0 == (v_U8_t)WLANHAL_RX_BD_GET_LLC(bdHd) ) ? VOS_TRUE : VOS_FALSE )
833#endif
834
835#define WLANWDA_HO_IS_AN_AMPDU 0x4000
836#define WLANWDA_HO_LAST_MPDU_OF_AMPDU 0x400
837
838/* WDA_IS_RX_AN_AMPDU ********************************************************/
839#if defined( FEATURE_WLAN_INTEGRATED_SOC )
840# define WDA_IS_RX_AN_AMPDU(pRxMeta) \
841 ( ((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxpFlags & WLANWDA_HO_IS_AN_AMPDU )
842#else
843# define WDA_IS_RX_AN_AMPDU(bdHd) WLAN_HAL_IS_AN_AMPDU(bdHd)
844#endif
845
846/* WDA_IS_RX_LAST_MPDU *******************************************************/
847#if defined( FEATURE_WLAN_INTEGRATED_SOC )
848# define WDA_IS_RX_LAST_MPDU(pRxMeta) \
849 ( ((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxpFlags & WLANWDA_HO_LAST_MPDU_OF_AMPDU )
850#else
851# define WDA_IS_RX_LAST_MPDU(bdHd) WLAN_HAL_IS_LAST_MPDU(bdHd)
852#endif
853
854/* WDA_GET_RX_TIMESTAMP *****************************************************/
855#if defined( FEATURE_WLAN_INTEGRATED_SOC )
856# define WDA_GET_RX_TIMESTAMP(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->mclkRxTimestamp)
857#else
858# define WDA_GET_RX_TIMESTAMP(bdHd) SIR_MAC_BD_RX_TIMESTAMP(bdHd)
859#endif
860
861/* WDA_IS_RX_IN_SCAN *********************************************************/
862#if defined( FEATURE_WLAN_INTEGRATED_SOC )
863# define WDA_IS_RX_IN_SCAN(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->scan)
864#else
865# define WDA_IS_RX_IN_SCAN(bdHd) SIR_MAC_BD_TO_SCAN_LEARN(bdHd)
866#endif
867
868/* WDA_GET_RX_RSSI_DB ********************************************************/
869#if defined( FEATURE_WLAN_INTEGRATED_SOC )
870// Volans RF
871# define WDA_RSSI_OFFSET 100
872# define WDA_GET_RSSI0_DB(rssi0) (rssi0 - WDA_RSSI_OFFSET)
873# define WDA_GET_RSSI1_DB(rssi0) (0 - WDA_RSSI_OFFSET)
874# define WDA_MAX_OF_TWO(val1, val2) ( ((val1) > (val2)) ? (val1) : (val2))
875# define WDA_GET_RSSI_DB(rssi0) \
876 WDA_MAX_OF_TWO(WDA_GET_RSSI0_DB(rssi0), WDA_GET_RSSI1_DB(rssi0))
877# define WDA_GET_RX_RSSI_DB(pRxMeta) \
878 WDA_GET_RSSI_DB((((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi0))
879#else
880# define WDA_GET_RX_RSSI_DB(bdHd) SIR_MAC_BD_TO_RSSI_DB(bdHd)
881#endif
882
883/* WDA_GET_RX_SNR ************************************************************/
884#if defined( FEATURE_WLAN_INTEGRATED_SOC )
885# define WDA_GET_RX_SNR(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->snr)
886#else
887# define WDA_GET_RX_SNR(bdHd) WLANHAL_RX_BD_GET_SNR(bdHd)
888#endif
889
890/* WDA_IS_RX_FC **************************************************************/
891// Flow control frames
892#if defined( FEATURE_WLAN_INTEGRATED_SOC )
893/* FIXME WDA should provide the meta info which indicates FC frame
894 In the meantime, use hardcoded FALSE, since we don't support FC yet */
895# define WDA_IS_RX_FC(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fc)
896#else
897# define WDA_IS_RX_FC(bdHd) WLANHAL_RX_BD_GET_FC(bdHd)
898#endif
899
900/* WDA_GET_RX_FC_VALID_STA_MASK **********************************************/
901#if defined( FEATURE_WLAN_INTEGRATED_SOC )
902# define WDA_GET_RX_FC_VALID_STA_MASK(pRxMeta) \
903 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAValidMask)
904#else
905# define WDA_GET_RX_FC_VALID_STA_MASK(bdHd) \
906 WLANHAL_RX_BD_GET_STA_VALID_MASK(bdHd)
907#endif
908
909/* WDA_GET_RX_FC_PWRSAVE_STA_MASK ********************************************/
910#if defined( FEATURE_WLAN_INTEGRATED_SOC )
911# define WDA_GET_RX_FC_PWRSAVE_STA_MASK(pRxMeta) \
912 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAPwrSaveStateMask)
913#else
914# define WDA_GET_RX_FC_PWRSAVE_STA_MASK(bdHd) \
915 WLANHAL_RX_BD_GET_STA_PS_STATE(bdHd)
916#endif
917
918/* WDA_GET_RX_FC_STA_THRD_IND_MASK ********************************************/
919#if defined( FEATURE_WLAN_INTEGRATED_SOC )
920# define WDA_GET_RX_FC_STA_THRD_IND_MASK(pRxMeta) \
921 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTAThreshIndMask)
922#else
923# define WDA_GET_RX_FC_STA_THRD_IND_MASK(bdHd) \
924 WLANHAL_RX_BD_GET_STA_TH_IND(bdHd)
925#endif
926
927/* WDA_GET_RX_FC_FORCED_STA_TX_DISABLED_BITMAP ********************************************/
928# define WDA_GET_RX_FC_STA_TX_DISABLED_BITMAP(pRxMeta) \
929 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcStaTxDisabledBitmap)
930
931/* WDA_GET_RX_FC_STA_TXQ_LEN *************************************************/
932#if defined( FEATURE_WLAN_INTEGRATED_SOC )
933# define WDA_GET_RX_FC_STA_TXQ_LEN(pRxMeta, staId) \
934 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTATxQLen[(staId)])
935#else
936# define WDA_GET_RX_FC_STA_TXQ_LEN(bdHd, staId) \
937 WLANHAL_RX_BD_GET_STA_TXQ_LEN( _pvBDHeader, staId )
938#endif
939
940/* WDA_GET_RX_FC_STA_CUR_TXRATE **********************************************/
941#if defined( FEATURE_WLAN_INTEGRATED_SOC )
942# define WDA_GET_RX_FC_STA_CUR_TXRATE(pRxMeta, staId) \
943 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->fcSTACurTxRate[(staId)])
944#else
945# define WDA_GET_RX_FC_STA_CUR_TXRATE(bdHd, staId) \
946 WLANHAL_RX_BD_GET_STA_CUR_TX_RATE( bdHd, staIdx )
947#endif
948
949/* WDA_GET_RX_REPLAY_COUNT ***************************************************/
950#if defined( FEATURE_WLAN_INTEGRATED_SOC )
951# define WDA_GET_RX_REPLAY_COUNT(pRxMeta) \
952 (((WDI_DS_RxMetaInfoType*)(pRxMeta))->replayCount)
953#endif
954
955/* WDA_GETRSSI0 ***************************************************************/
956#if defined( FEATURE_WLAN_INTEGRATED_SOC )
957# define WDA_GETRSSI0(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi0)
958#else
959# define WDA_GETRSSI0(bdHd) (v_S7_t)(HAL_GET_RSSI0_DB(SIR_MAC_BD_TO_PHY_STATS0(bdHd)))
960#endif
961
962/* WDA_GETRSSI1 ***************************************************************/
963#if defined( FEATURE_WLAN_INTEGRATED_SOC )
964# define WDA_GETRSSI1(pRxMeta) (((WDI_DS_RxMetaInfoType*)(pRxMeta))->rssi1)
965#else
966# define WDA_GETRSSI1(bdHd) (v_S7_t)(HAL_GET_RSSI1_DB(SIR_MAC_BD_TO_PHY_STATS0(bdHd)))
967#endif
968
969
970
971/* --------------------------------------------------------------------*/
972
973#if defined( FEATURE_WLAN_INTEGRATED_SOC )
974uint8 WDA_IsWcnssWlanCompiledVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
975uint8 WDA_IsWcnssWlanReportedVersionGreaterThanOrEqual(uint8 major, uint8 minor, uint8 version, uint8 revision);
976
977
978VOS_STATUS WDA_GetWcnssWlanCompiledVersion(v_PVOID_t pvosGCtx,
979 tSirVersionType *pVersion);
980VOS_STATUS WDA_GetWcnssWlanReportedVersion(v_PVOID_t pvosGCtx,
981 tSirVersionType *pVersion);
982VOS_STATUS WDA_GetWcnssSoftwareVersion(v_PVOID_t pvosGCtx,
983 tANI_U8 *pVersion,
984 tANI_U32 versionBufferSize);
985VOS_STATUS WDA_GetWcnssHardwareVersion(v_PVOID_t pvosGCtx,
986 tANI_U8 *pVersion,
987 tANI_U32 versionBufferSize);
988
989VOS_STATUS WDA_SetUapsdAcParamsReq(v_PVOID_t , v_U8_t , tUapsdInfo *);
990VOS_STATUS WDA_ClearUapsdAcParamsReq(v_PVOID_t , v_U8_t , wpt_uint8 );
991VOS_STATUS WDA_SetRSSIThresholdsReq(tpAniSirGlobal , tSirRSSIThresholds *);
992// Just declare the function extern here and save some time.
993extern tSirRetStatus halMmhForwardMBmsg(void*, tSirMbMsg*);
994tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb);
995#else
996# define uMacPostCtrlMsg(hal, msg) halMmhForwardMBmsg(hal, msg)
997#endif
998
999
1000#if defined(FEATURE_WLAN_NON_INTEGRATED_SOC) || defined(FEATURE_WLAN_INTEGRATED_SOC)
1001#define WDA_MAX_TXPOWER_INVALID HAL_MAX_TXPOWER_INVALID
1002
1003//WDA Messages to HAL messages Mapping
1004#if 0
1005//Required by SME
1006//#define WDA_SIGNAL_BT_EVENT SIR_HAL_SIGNAL_BT_EVENT - this is defined in sirParams.h
1007//#define WDA_BTC_SET_CFG SIR_HAL_BTC_SET_CFG
1008
1009//Required by PE
1010#define WDA_HOST_MSG_START SIR_HAL_HOST_MSG_START
1011#define WDA_INITIAL_CAL_FAILED_NTF SIR_HAL_INITIAL_CAL_FAILED_NTF
1012#define WDA_SHUTDOWN_REQ SIR_HAL_SHUTDOWN_REQ
1013#define WDA_SHUTDOWN_CNF SIR_HAL_SHUTDOWN_CNF
1014#define WDA_RADIO_ON_OFF_IND SIR_HAL_RADIO_ON_OFF_IND
1015#define WDA_RESET_CNF SIR_HAL_RESET_CNF
1016#define WDA_SetRegDomain \
Madan Mohan Koyyalamudic0d1b3f2012-11-13 10:41:07 -08001017 (eHalStatus halPhySetRegDomain(tHalHandle hHal, eRegDomainId regDomain))
Jeff Johnson295189b2012-06-20 16:38:30 -07001018#endif
1019
1020#define WDA_APP_SETUP_NTF SIR_HAL_APP_SETUP_NTF
1021#define WDA_NIC_OPER_NTF SIR_HAL_NIC_OPER_NTF
1022#define WDA_INIT_START_REQ SIR_HAL_INIT_START_REQ
1023#define WDA_RESET_REQ SIR_HAL_RESET_REQ
1024#define WDA_HDD_ADDBA_REQ SIR_HAL_HDD_ADDBA_REQ
1025#define WDA_HDD_ADDBA_RSP SIR_HAL_HDD_ADDBA_RSP
1026#define WDA_DELETEBA_IND SIR_HAL_DELETEBA_IND
1027#define WDA_BA_FAIL_IND SIR_HAL_BA_FAIL_IND
1028#define WDA_TL_FLUSH_AC_REQ SIR_TL_HAL_FLUSH_AC_REQ
1029#define WDA_TL_FLUSH_AC_RSP SIR_HAL_TL_FLUSH_AC_RSP
1030
1031#define WDA_MSG_TYPES_BEGIN SIR_HAL_MSG_TYPES_BEGIN
1032#define WDA_ITC_MSG_TYPES_BEGIN SIR_HAL_ITC_MSG_TYPES_BEGIN
1033#define WDA_RADAR_DETECTED_IND SIR_HAL_RADAR_DETECTED_IND
1034#define WDA_WDT_KAM_RSP SIR_HAL_WDT_KAM_RSP
1035#define WDA_TIMER_TEMP_MEAS_REQ SIR_HAL_TIMER_TEMP_MEAS_REQ
1036#define WDA_TIMER_PERIODIC_STATS_COLLECT_REQ SIR_HAL_TIMER_PERIODIC_STATS_COLLECT_REQ
1037#define WDA_CAL_REQ_NTF SIR_HAL_CAL_REQ_NTF
1038#define WDA_MNT_OPEN_TPC_TEMP_MEAS_REQ SIR_HAL_MNT_OPEN_TPC_TEMP_MEAS_REQ
1039#define WDA_CCA_MONITOR_INTERVAL_TO SIR_HAL_CCA_MONITOR_INTERVAL_TO
1040#define WDA_CCA_MONITOR_DURATION_TO SIR_HAL_CCA_MONITOR_DURATION_TO
1041#define WDA_CCA_MONITOR_START SIR_HAL_CCA_MONITOR_START
1042#define WDA_CCA_MONITOR_STOP SIR_HAL_CCA_MONITOR_STOP
1043#define WDA_CCA_CHANGE_MODE SIR_HAL_CCA_CHANGE_MODE
1044#define WDA_TIMER_WRAP_AROUND_STATS_COLLECT_REQ SIR_HAL_TIMER_WRAP_AROUND_STATS_COLLECT_REQ
1045
1046/*
1047 * New Taurus related messages
1048 */
1049#define WDA_ADD_STA_REQ SIR_HAL_ADD_STA_REQ
1050#define WDA_ADD_STA_RSP SIR_HAL_ADD_STA_RSP
1051#define WDA_ADD_STA_SELF_RSP SIR_HAL_ADD_STA_SELF_RSP
1052#define WDA_DEL_STA_SELF_RSP SIR_HAL_DEL_STA_SELF_RSP
1053#define WDA_DELETE_STA_REQ SIR_HAL_DELETE_STA_REQ
1054#define WDA_DELETE_STA_RSP SIR_HAL_DELETE_STA_RSP
1055#define WDA_ADD_BSS_REQ SIR_HAL_ADD_BSS_REQ
1056#define WDA_ADD_BSS_RSP SIR_HAL_ADD_BSS_RSP
1057#define WDA_DELETE_BSS_REQ SIR_HAL_DELETE_BSS_REQ
1058#define WDA_DELETE_BSS_RSP SIR_HAL_DELETE_BSS_RSP
1059#define WDA_INIT_SCAN_REQ SIR_HAL_INIT_SCAN_REQ
1060#define WDA_INIT_SCAN_RSP SIR_HAL_INIT_SCAN_RSP
1061#define WDA_START_SCAN_REQ SIR_HAL_START_SCAN_REQ
1062#define WDA_START_SCAN_RSP SIR_HAL_START_SCAN_RSP
1063#define WDA_END_SCAN_REQ SIR_HAL_END_SCAN_REQ
1064#define WDA_END_SCAN_RSP SIR_HAL_END_SCAN_RSP
1065#define WDA_FINISH_SCAN_REQ SIR_HAL_FINISH_SCAN_REQ
1066#define WDA_FINISH_SCAN_RSP SIR_HAL_FINISH_SCAN_RSP
1067#define WDA_SEND_BEACON_REQ SIR_HAL_SEND_BEACON_REQ
1068#define WDA_SEND_BEACON_RSP SIR_HAL_SEND_BEACON_RSP
1069
1070#define WDA_INIT_CFG_REQ SIR_HAL_INIT_CFG_REQ
1071#define WDA_INIT_CFG_RSP SIR_HAL_INIT_CFG_RSP
1072
1073#define WDA_INIT_WM_CFG_REQ SIR_HAL_INIT_WM_CFG_REQ
1074#define WDA_INIT_WM_CFG_RSP SIR_HAL_INIT_WM_CFG_RSP
1075
1076#define WDA_SET_BSSKEY_REQ SIR_HAL_SET_BSSKEY_REQ
1077#define WDA_SET_BSSKEY_RSP SIR_HAL_SET_BSSKEY_RSP
1078#define WDA_SET_STAKEY_REQ SIR_HAL_SET_STAKEY_REQ
1079#define WDA_SET_STAKEY_RSP SIR_HAL_SET_STAKEY_RSP
1080#define WDA_DPU_STATS_REQ SIR_HAL_DPU_STATS_REQ
1081#define WDA_DPU_STATS_RSP SIR_HAL_DPU_STATS_RSP
1082#define WDA_GET_DPUINFO_REQ SIR_HAL_GET_DPUINFO_REQ
1083#define WDA_GET_DPUINFO_RSP SIR_HAL_GET_DPUINFO_RSP
1084
1085#define WDA_UPDATE_EDCA_PROFILE_IND SIR_HAL_UPDATE_EDCA_PROFILE_IND
1086
1087#define WDA_UPDATE_STARATEINFO_REQ SIR_HAL_UPDATE_STARATEINFO_REQ
1088#define WDA_UPDATE_STARATEINFO_RSP SIR_HAL_UPDATE_STARATEINFO_RSP
1089
1090#define WDA_UPDATE_BEACON_IND SIR_HAL_UPDATE_BEACON_IND
1091#define WDA_UPDATE_CF_IND SIR_HAL_UPDATE_CF_IND
1092#define WDA_CHNL_SWITCH_REQ SIR_HAL_CHNL_SWITCH_REQ
1093#define WDA_ADD_TS_REQ SIR_HAL_ADD_TS_REQ
1094#define WDA_DEL_TS_REQ SIR_HAL_DEL_TS_REQ
1095#define WDA_SOFTMAC_TXSTAT_REPORT SIR_HAL_SOFTMAC_TXSTAT_REPORT
1096
1097#define WDA_MBOX_SENDMSG_COMPLETE_IND SIR_HAL_MBOX_SENDMSG_COMPLETE_IND
1098#define WDA_EXIT_BMPS_REQ SIR_HAL_EXIT_BMPS_REQ
1099#define WDA_EXIT_BMPS_RSP SIR_HAL_EXIT_BMPS_RSP
1100#define WDA_EXIT_BMPS_IND SIR_HAL_EXIT_BMPS_IND
1101#define WDA_ENTER_BMPS_REQ SIR_HAL_ENTER_BMPS_REQ
1102#define WDA_ENTER_BMPS_RSP SIR_HAL_ENTER_BMPS_RSP
1103#define WDA_BMPS_STATUS_IND SIR_HAL_BMPS_STATUS_IND
1104#define WDA_MISSED_BEACON_IND SIR_HAL_MISSED_BEACON_IND
1105
1106#define WDA_CFG_RXP_FILTER_REQ SIR_HAL_CFG_RXP_FILTER_REQ
1107#define WDA_CFG_RXP_FILTER_RSP SIR_HAL_CFG_RXP_FILTER_RSP
1108
1109#define WDA_SWITCH_CHANNEL_RSP SIR_HAL_SWITCH_CHANNEL_RSP
1110#define WDA_P2P_NOA_ATTR_IND SIR_HAL_P2P_NOA_ATTR_IND
Viral Modid86bde22012-12-10 13:09:21 -08001111#define WDA_P2P_NOA_START_IND SIR_HAL_P2P_NOA_START_IND
Jeff Johnson295189b2012-06-20 16:38:30 -07001112#define WDA_PWR_SAVE_CFG SIR_HAL_PWR_SAVE_CFG
1113
1114#define WDA_REGISTER_PE_CALLBACK SIR_HAL_REGISTER_PE_CALLBACK
1115#define WDA_SOFTMAC_MEM_READREQUEST SIR_HAL_SOFTMAC_MEM_READREQUEST
1116#define WDA_SOFTMAC_MEM_WRITEREQUEST SIR_HAL_SOFTMAC_MEM_WRITEREQUEST
1117
1118#define WDA_SOFTMAC_MEM_READRESPONSE SIR_HAL_SOFTMAC_MEM_READRESPONSE
1119#define WDA_SOFTMAC_BULKREGWRITE_CONFIRM SIR_HAL_SOFTMAC_BULKREGWRITE_CONFIRM
1120#define WDA_SOFTMAC_BULKREGREAD_RESPONSE SIR_HAL_SOFTMAC_BULKREGREAD_RESPONSE
1121#define WDA_SOFTMAC_HOSTMESG_MSGPROCESSRESULT SIR_HAL_SOFTMAC_HOSTMESG_MSGPROCESSRESULT
1122
1123#define WDA_ADDBA_REQ SIR_HAL_ADDBA_REQ
1124#define WDA_ADDBA_RSP SIR_HAL_ADDBA_RSP
1125#define WDA_DELBA_IND SIR_HAL_DELBA_IND
1126#define WDA_DEL_BA_IND SIR_HAL_DEL_BA_IND
1127#define WDA_MIC_FAILURE_IND SIR_HAL_MIC_FAILURE_IND
1128
1129//message from sme to initiate delete block ack session.
1130#define WDA_DELBA_REQ SIR_HAL_DELBA_REQ
1131#define WDA_IBSS_STA_ADD SIR_HAL_IBSS_STA_ADD
1132#define WDA_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND SIR_HAL_TIMER_ADJUST_ADAPTIVE_THRESHOLD_IND
1133#define WDA_SET_LINK_STATE SIR_HAL_SET_LINK_STATE
1134#define WDA_SET_LINK_STATE_RSP SIR_HAL_SET_LINK_STATE_RSP
1135#define WDA_ENTER_IMPS_REQ SIR_HAL_ENTER_IMPS_REQ
1136#define WDA_ENTER_IMPS_RSP SIR_HAL_ENTER_IMPS_RSP
1137#define WDA_EXIT_IMPS_RSP SIR_HAL_EXIT_IMPS_RSP
1138#define WDA_EXIT_IMPS_REQ SIR_HAL_EXIT_IMPS_REQ
1139#define WDA_SOFTMAC_HOSTMESG_PS_STATUS_IND SIR_HAL_SOFTMAC_HOSTMESG_PS_STATUS_IND
1140#define WDA_POSTPONE_ENTER_IMPS_RSP SIR_HAL_POSTPONE_ENTER_IMPS_RSP
1141#define WDA_STA_STAT_REQ SIR_HAL_STA_STAT_REQ
1142#define WDA_GLOBAL_STAT_REQ SIR_HAL_GLOBAL_STAT_REQ
1143#define WDA_AGGR_STAT_REQ SIR_HAL_AGGR_STAT_REQ
1144#define WDA_STA_STAT_RSP SIR_HAL_STA_STAT_RSP
1145#define WDA_GLOBAL_STAT_RSP SIR_HAL_GLOBAL_STAT_RSP
1146#define WDA_AGGR_STAT_RSP SIR_HAL_AGGR_STAT_RSP
1147#define WDA_STAT_SUMM_REQ SIR_HAL_STAT_SUMM_REQ
1148#define WDA_STAT_SUMM_RSP SIR_HAL_STAT_SUMM_RSP
1149#define WDA_REMOVE_BSSKEY_REQ SIR_HAL_REMOVE_BSSKEY_REQ
1150#define WDA_REMOVE_BSSKEY_RSP SIR_HAL_REMOVE_BSSKEY_RSP
1151#define WDA_REMOVE_STAKEY_REQ SIR_HAL_REMOVE_STAKEY_REQ
1152#define WDA_REMOVE_STAKEY_RSP SIR_HAL_REMOVE_STAKEY_RSP
1153#define WDA_SET_STA_BCASTKEY_REQ SIR_HAL_SET_STA_BCASTKEY_REQ
1154#define WDA_SET_STA_BCASTKEY_RSP SIR_HAL_SET_STA_BCASTKEY_RSP
1155#define WDA_REMOVE_STA_BCASTKEY_REQ SIR_HAL_REMOVE_STA_BCASTKEY_REQ
1156#define WDA_REMOVE_STA_BCASTKEY_RSP SIR_HAL_REMOVE_STA_BCASTKEY_RSP
1157#define WDA_ADD_TS_RSP SIR_HAL_ADD_TS_RSP
1158#define WDA_DPU_MIC_ERROR SIR_HAL_DPU_MIC_ERROR
1159#define WDA_TIMER_BA_ACTIVITY_REQ SIR_HAL_TIMER_BA_ACTIVITY_REQ
1160#define WDA_TIMER_CHIP_MONITOR_TIMEOUT SIR_HAL_TIMER_CHIP_MONITOR_TIMEOUT
1161#define WDA_TIMER_TRAFFIC_ACTIVITY_REQ SIR_HAL_TIMER_TRAFFIC_ACTIVITY_REQ
1162#define WDA_TIMER_ADC_RSSI_STATS SIR_HAL_TIMER_ADC_RSSI_STATS
1163
1164#ifdef FEATURE_WLAN_CCX
1165#define WDA_TSM_STATS_REQ SIR_HAL_TSM_STATS_REQ
1166#define WDA_TSM_STATS_RSP SIR_HAL_TSM_STATS_RSP
1167#endif
1168#ifdef WLAN_SOFTAP_FEATURE
1169#define WDA_UPDATE_PROBE_RSP_IE_BITMAP_IND SIR_HAL_UPDATE_PROBE_RSP_IE_BITMAP_IND
1170#define WDA_UPDATE_UAPSD_IND SIR_HAL_UPDATE_UAPSD_IND
1171#endif
1172
1173#define WDA_SET_MIMOPS_REQ SIR_HAL_SET_MIMOPS_REQ
1174#define WDA_SET_MIMOPS_RSP SIR_HAL_SET_MIMOPS_RSP
1175#define WDA_SYS_READY_IND SIR_HAL_SYS_READY_IND
1176#define WDA_SET_TX_POWER_REQ SIR_HAL_SET_TX_POWER_REQ
1177#define WDA_SET_TX_POWER_RSP SIR_HAL_SET_TX_POWER_RSP
1178#define WDA_GET_TX_POWER_REQ SIR_HAL_GET_TX_POWER_REQ
1179#define WDA_GET_TX_POWER_RSP SIR_HAL_GET_TX_POWER_RSP
1180#define WDA_GET_NOISE_REQ SIR_HAL_GET_NOISE_REQ
1181#define WDA_GET_NOISE_RSP SIR_HAL_GET_NOISE_RSP
1182#define WDA_SET_TX_PER_TRACKING_REQ SIR_HAL_SET_TX_PER_TRACKING_REQ
1183
1184/* Messages to support transmit_halt and transmit_resume */
1185#define WDA_TRANSMISSION_CONTROL_IND SIR_HAL_TRANSMISSION_CONTROL_IND
1186/* Indication from LIM to HAL to Initialize radar interrupt */
1187#define WDA_INIT_RADAR_IND SIR_HAL_INIT_RADAR_IND
1188/* Messages to support transmit_halt and transmit_resume */
1189
1190
1191#define WDA_BEACON_PRE_IND SIR_HAL_BEACON_PRE_IND
1192#define WDA_ENTER_UAPSD_REQ SIR_HAL_ENTER_UAPSD_REQ
1193#define WDA_ENTER_UAPSD_RSP SIR_HAL_ENTER_UAPSD_RSP
1194#define WDA_EXIT_UAPSD_REQ SIR_HAL_EXIT_UAPSD_REQ
1195#define WDA_EXIT_UAPSD_RSP SIR_HAL_EXIT_UAPSD_RSP
1196#define WDA_LOW_RSSI_IND SIR_HAL_LOW_RSSI_IND
1197#define WDA_BEACON_FILTER_IND SIR_HAL_BEACON_FILTER_IND
1198/// PE <-> HAL WOWL messages
1199#define WDA_WOWL_ADD_BCAST_PTRN SIR_HAL_WOWL_ADD_BCAST_PTRN
1200#define WDA_WOWL_DEL_BCAST_PTRN SIR_HAL_WOWL_DEL_BCAST_PTRN
1201#define WDA_WOWL_ENTER_REQ SIR_HAL_WOWL_ENTER_REQ
1202#define WDA_WOWL_ENTER_RSP SIR_HAL_WOWL_ENTER_RSP
1203#define WDA_WOWL_EXIT_REQ SIR_HAL_WOWL_EXIT_REQ
1204#define WDA_WOWL_EXIT_RSP SIR_HAL_WOWL_EXIT_RSP
1205#define WDA_TX_COMPLETE_IND SIR_HAL_TX_COMPLETE_IND
1206#define WDA_TIMER_RA_COLLECT_AND_ADAPT SIR_HAL_TIMER_RA_COLLECT_AND_ADAPT
1207/// PE <-> HAL statistics messages
1208#define WDA_GET_STATISTICS_REQ SIR_HAL_GET_STATISTICS_REQ
1209#define WDA_GET_STATISTICS_RSP SIR_HAL_GET_STATISTICS_RSP
1210#define WDA_SET_KEY_DONE SIR_HAL_SET_KEY_DONE
1211
1212/// PE <-> HAL BTC messages
1213#define WDA_BTC_SET_CFG SIR_HAL_BTC_SET_CFG
1214#define WDA_SIGNAL_BT_EVENT SIR_HAL_SIGNAL_BT_EVENT
1215#define WDA_HANDLE_FW_MBOX_RSP SIR_HAL_HANDLE_FW_MBOX_RSP
1216#define WDA_UPDATE_PROBE_RSP_TEMPLATE_IND SIR_HAL_UPDATE_PROBE_RSP_TEMPLATE_IND
1217#define WDA_SIGNAL_BTAMP_EVENT SIR_HAL_SIGNAL_BTAMP_EVENT
1218
1219#ifdef ANI_CHIPSET_VOLANS
Jeff Johnsone7245742012-09-05 17:12:55 -07001220#ifdef FEATURE_OEM_DATA_SUPPORT
1221/* PE <-> HAL OEM_DATA RELATED MESSAGES */
1222#define WDA_START_OEM_DATA_REQ SIR_HAL_START_OEM_DATA_REQ
1223#define WDA_START_OEM_DATA_RSP SIR_HAL_START_OEM_DATA_RSP
1224#define WDA_FINISH_OEM_DATA_REQ SIR_HAL_FINISH_OEM_DATA_REQ
1225#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001226#endif
1227
1228#define WDA_SET_MAX_TX_POWER_REQ SIR_HAL_SET_MAX_TX_POWER_REQ
1229#define WDA_SET_MAX_TX_POWER_RSP SIR_HAL_SET_MAX_TX_POWER_RSP
1230
1231#define WDA_SEND_MSG_COMPLETE SIR_HAL_SEND_MSG_COMPLETE
1232
1233/// PE <-> HAL Host Offload message
1234#define WDA_SET_HOST_OFFLOAD SIR_HAL_SET_HOST_OFFLOAD
1235
1236/// PE <-> HAL Keep Alive message
1237#define WDA_SET_KEEP_ALIVE SIR_HAL_SET_KEEP_ALIVE
1238
1239#ifdef WLAN_NS_OFFLOAD
1240#define WDA_SET_NS_OFFLOAD SIR_HAL_SET_NS_OFFLOAD
1241#endif //WLAN_NS_OFFLOAD
1242#define WDA_ADD_STA_SELF_REQ SIR_HAL_ADD_STA_SELF_REQ
1243#define WDA_DEL_STA_SELF_REQ SIR_HAL_DEL_STA_SELF_REQ
1244
1245#ifdef WLAN_FEATURE_P2P
1246#define WDA_SET_P2P_GO_NOA_REQ SIR_HAL_SET_P2P_GO_NOA_REQ
1247#endif
1248
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -08001249#define WDA_TX_COMPLETE_TIMEOUT_IND (WDA_MSG_TYPES_END - 1)
Jeff Johnson295189b2012-06-20 16:38:30 -07001250#define WDA_WLAN_SUSPEND_IND SIR_HAL_WLAN_SUSPEND_IND
1251#define WDA_WLAN_RESUME_REQ SIR_HAL_WLAN_RESUME_REQ
1252#define WDA_MSG_TYPES_END SIR_HAL_MSG_TYPES_END
1253
Jeff Johnson295189b2012-06-20 16:38:30 -07001254#define WDA_MMH_TXMB_READY_EVT SIR_HAL_MMH_TXMB_READY_EVT
1255#define WDA_MMH_RXMB_DONE_EVT SIR_HAL_MMH_RXMB_DONE_EVT
1256#define WDA_MMH_MSGQ_NE_EVT SIR_HAL_MMH_MSGQ_NE_EVT
1257#endif
1258
1259#ifdef WLAN_FEATURE_VOWIFI_11R
1260#define WDA_AGGR_QOS_REQ SIR_HAL_AGGR_QOS_REQ
1261#define WDA_AGGR_QOS_RSP SIR_HAL_AGGR_QOS_RSP
1262#endif /* WLAN_FEATURE_VOWIFI_11R */
1263
1264#ifdef ANI_MANF_DIAG
1265/* FTM CMD MSG */
1266#define WDA_FTM_CMD_REQ SIR_PTT_MSG_TYPES_BEGIN
1267#define WDA_FTM_CMD_RSP SIR_PTT_MSG_TYPES_END
1268#endif /* ANI_MANF_DIAG */
1269
1270#ifdef FEATURE_WLAN_SCAN_PNO
1271/*Requests sent to lower driver*/
1272#define WDA_SET_PNO_REQ SIR_HAL_SET_PNO_REQ
1273#define WDA_SET_RSSI_FILTER_REQ SIR_HAL_SET_RSSI_FILTER_REQ
1274#define WDA_UPDATE_SCAN_PARAMS_REQ SIR_HAL_UPDATE_SCAN_PARAMS
1275
1276/*Indication comming from lower driver*/
1277#define WDA_SET_PNO_CHANGED_IND SIR_HAL_SET_PNO_CHANGED_IND
1278#endif // FEATURE_WLAN_SCAN_PNO
1279
1280#ifdef WLAN_WAKEUP_EVENTS
1281#define WDA_WAKE_REASON_IND SIR_HAL_WAKE_REASON_IND
1282#endif // WLAN_WAKEUP_EVENTS
1283
1284#ifdef WLAN_FEATURE_PACKET_FILTERING
1285#define WDA_8023_MULTICAST_LIST_REQ SIR_HAL_8023_MULTICAST_LIST_REQ
1286#define WDA_RECEIVE_FILTER_SET_FILTER_REQ SIR_HAL_RECEIVE_FILTER_SET_FILTER_REQ
1287#define WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ SIR_HAL_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ
1288#define WDA_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP SIR_HAL_PACKET_COALESCING_FILTER_MATCH_COUNT_RSP
1289#define WDA_RECEIVE_FILTER_CLEAR_FILTER_REQ SIR_HAL_RECEIVE_FILTER_CLEAR_FILTER_REQ
1290#endif // WLAN_FEATURE_PACKET_FILTERING
1291
1292#define WDA_SET_POWER_PARAMS_REQ SIR_HAL_SET_POWER_PARAMS_REQ
1293
1294#ifdef WLAN_FEATURE_GTK_OFFLOAD
1295#define WDA_GTK_OFFLOAD_REQ SIR_HAL_GTK_OFFLOAD_REQ
1296#define WDA_GTK_OFFLOAD_GETINFO_REQ SIR_HAL_GTK_OFFLOAD_GETINFO_REQ
1297#define WDA_GTK_OFFLOAD_GETINFO_RSP SIR_HAL_GTK_OFFLOAD_GETINFO_RSP
1298#endif //WLAN_FEATURE_GTK_OFFLOAD
1299
1300#define WDA_SET_TM_LEVEL_REQ SIR_HAL_SET_TM_LEVEL_REQ
1301
Mohit Khanna4a70d262012-09-11 16:30:12 -07001302#ifdef WLAN_FEATURE_11AC
1303#define WDA_UPDATE_OP_MODE SIR_HAL_UPDATE_OP_MODE
1304#endif
1305
Jeff Johnson295189b2012-06-20 16:38:30 -07001306#ifdef FEATURE_WLAN_INTEGRATED_SOC
1307tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
1308#endif
1309
1310#if defined(FEATURE_WLAN_NON_INTEGRATED_SOC)
1311#define VOS_MODULE_ID_WDA VOS_MODULE_ID_HAL
1312
1313//Required by TL
1314
1315//WDA Functions to HAL functions Mapping
1316//Required by SME and PE
1317#define WDA_SetRegDomain halPhySetRegDomain
1318#define wdaPostCtrlMsg halPostMsgApi
1319#else
1320eHalStatus WDA_SetRegDomain(void * clientCtxt, v_REGDOMAIN_t regId);
1321#endif //FEATURE_WLAN_NON_INTEGRATED_SOC
1322
1323#define HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 // Bit 6 will be used to control BD rate for Management frames
1324
1325#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1326#define halTxFrame(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, txFlag) \
1327 (eHalStatus)( WDA_TxPacket(\
1328 vos_get_context(VOS_MODULE_ID_WDA, vos_get_global_context(VOS_MODULE_ID_WDA, (hHal))),\
1329 (pFrmBuf),\
1330 (frmLen),\
1331 (frmType),\
1332 (txDir),\
1333 (tid),\
1334 (pCompFunc),\
1335 (pData),\
1336 (NULL), \
1337 (txFlag)) )
1338
1339#define halTxFrameWithTxComplete(hHal, pFrmBuf, frmLen, frmType, txDir, tid, pCompFunc, pData, pCBackFnTxComp, txFlag) \
1340 (eHalStatus)( WDA_TxPacket(\
1341 vos_get_context(VOS_MODULE_ID_WDA, vos_get_global_context(VOS_MODULE_ID_WDA, (hHal))),\
1342 (pFrmBuf),\
1343 (frmLen),\
1344 (frmType),\
1345 (txDir),\
1346 (tid),\
1347 (pCompFunc),\
1348 (pData),\
1349 (pCBackFnTxComp), \
1350 (txFlag)) )
1351#endif
1352
1353/* -----------------------------------------------------------------
1354 WDA data path API's for TL
1355 -------------------------------------------------------------------*/
1356
1357#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1358v_BOOL_t WDA_IsHwFrameTxTranslationCapable(v_PVOID_t pVosGCtx,
1359 tANI_U8 staIdx);
1360#else
1361# define WDA_IsHwFrameTxTranslationCapable(vosGCtx, staId) \
1362 WLANHAL_IsHwFrameTxTranslationCapable(vosGCtx, staId)
1363#endif
1364
1365#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1366# define WDA_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo) \
1367 WDA_SetUapsdAcParamsReq(vosGCtx, staId, uapsdInfo)
1368#else
1369# define WDA_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo) \
1370 WLANHAL_EnableUapsdAcParams(vosGCtx, staId, uapsdInfo)
1371#endif
1372
1373#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1374# define WDA_DisableUapsdAcParams(vosGCtx, staId, ac) \
1375 WDA_ClearUapsdAcParamsReq(vosGCtx, staId, ac)
1376#else
1377# define WDA_DisableUapsdAcParams(vosGCtx, staId, ac) \
1378 WLANHAL_DisableUapsdAcParams(vosGCtx, staId, ac)
1379#endif
1380
1381#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1382# define WDA_SetRSSIThresholds(pMac, pThresholds) \
1383 WDA_SetRSSIThresholdsReq(pMac, pThresholds)
1384#else
1385# define WDA_SetRSSIThresholds(pMac, pThresholds) \
1386 halPS_SetRSSIThresholds(pMac, pThresholds)
1387#endif
1388
1389#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1390#define WDA_UpdateRssiBmps(pvosGCtx, staId, rssi) \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -08001391 WLANTL_UpdateRssiBmps(pvosGCtx, staId, rssi)
Jeff Johnson295189b2012-06-20 16:38:30 -07001392#endif
1393
1394#ifdef WLAN_PERF
1395/*==========================================================================
1396 FUNCTION WDA_TLI_FastHwFwdDataFrame
1397
1398 DESCRIPTION
1399 For NON integrated SOC, this function is called by TL.
1400
1401 Fast path function to quickly forward a data frame if HAL determines BD
1402 signature computed here matches the signature inside current VOSS packet.
1403 If there is a match, HAL and TL fills in the swapped packet length into
1404 BD header and DxE header, respectively. Otherwise, packet goes back to
1405 normal (slow) path and a new BD signature would be tagged into BD in this
1406 VOSS packet later by the WLANHAL_FillTxBd() function.
1407
1408 TODO For integrated SOC, this function does nothing yet. Pima SLM/HAL
1409 should provide the equivelant functionality.
1410
1411 DEPENDENCIES
1412
1413 PARAMETERS
1414
1415 IN
1416 pvosGCtx VOS context
1417 vosDataBuff Ptr to VOSS packet
1418 pMetaInfo For getting frame's TID
1419 pStaInfo For checking STA type
1420
1421 OUT
1422 pvosStatus returned status
1423 puFastFwdOK Flag to indicate whether frame could be fast forwarded
1424
1425 RETURN VALUE
1426 No return.
1427
1428 SIDE EFFECTS
1429
1430============================================================================*/
1431void WDA_TLI_FastHwFwdDataFrame
1432(
1433 v_PVOID_t pvosGCtx,
1434 vos_pkt_t* vosDataBuff,
1435 VOS_STATUS* pvosStatus,
1436 v_U32_t* puFastFwdOK,
1437 WLANTL_MetaInfoType* pMetaInfo,
1438 WLAN_STADescType* pStaInfo
1439);
1440#endif /* WLAN_PERF */
1441
1442/*==========================================================================
1443 FUNCTION WDA_DS_Register
1444
1445 DESCRIPTION
1446 Register TL client to WDA. This function registers TL RX/TX functions
1447 to WDI by calling WDI_DS_Register.
1448
1449
1450 For NON integrated SOC, this function calls WLANBAL_RegTlCbFunctions
1451 to register TL's RX/TX functions to BAL
1452
1453 TODO
1454 For Prima, pfnResourceCB gets called in WDTS_OOResourceNotification.
1455 The uCount parameter is AC mask. It should be redefined to use the
1456 same resource callback function.
1457
1458 DEPENDENCIES
1459
1460 PARAMETERS
1461
1462 IN
1463 pvosGCtx VOS context
1464 pfnTxCompleteCallback TX complete callback upon TX completion
1465 pfnRxPacketCallback RX callback
1466 pfnResourceCB gets called when updating TX PDU number
1467 uResTheshold minimum TX PDU size for a packet
1468 pCallbackContext WDI calls callback function with it
1469 VOS global context pointer
1470 OUT
1471 uAvailableTxBuf available TX PDU numbder.
1472 BAL returns it for NON integrated SOC
1473
1474 RETURN VALUE
1475 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1476 VOS_STATUS_SUCCESS: Everything is good :)
1477
1478 SIDE EFFECTS
1479
1480============================================================================*/
1481VOS_STATUS
1482WDA_DS_Register
1483(
1484 v_PVOID_t pvosGCtx,
1485 WDA_DS_TxCompleteCallback pfnTxCompleteCallback,
1486 WDA_DS_RxPacketCallback pfnRxPacketCallback,
1487 WDA_DS_TxPacketCallback pfnTxPacketCallback,
1488 WDA_DS_ResourceCB pfnResourceCB,
1489 v_U32_t uResTheshold,
1490 v_PVOID_t pCallbackContext,
1491 v_U32_t *uAvailableTxBuf
1492);
1493
1494/*==========================================================================
1495 FUNCTION WDA_DS_StartXmit
1496
1497 DESCRIPTION
1498 Serialize TX transmit reques to TX thread.
1499
1500 TODO This sends TX transmit request to TL. It should send to WDI for
1501 abstraction.
1502
1503 For NON integrated SOC, this function calls WLANBAL_StartXmit
1504
1505 DEPENDENCIES
1506
1507 PARAMETERS
1508
1509 IN
1510 pvosGCtx VOS context
1511
1512 RETURN VALUE
1513 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1514 VOS_STATUS_SUCCESS: Everything is good :)
1515
1516 SIDE EFFECTS
1517
1518============================================================================*/
1519VOS_STATUS
1520WDA_DS_StartXmit
1521(
1522 v_PVOID_t pvosGCtx
1523);
1524
1525/*==========================================================================
1526 FUNCTION WDA_DS_FinishULA
1527
1528 DESCRIPTION
1529 Serialize Finish Upper Level Authentication reques to TX thread.
1530
1531 DEPENDENCIES
1532
1533 PARAMETERS
1534
1535 IN
1536 callbackRoutine routine to be called in TX thread
1537 callbackContext user data for the above routine
1538
1539 RETURN VALUE
1540 please see vos_tx_mq_serialize
1541
1542 SIDE EFFECTS
1543
1544============================================================================*/
1545VOS_STATUS
1546WDA_DS_FinishULA
1547(
1548 void (*callbackRoutine) (void *callbackContext),
Gopichand Nakkala96237bc2013-01-04 12:20:29 -08001549 void *callbackContext,
1550 v_U8_t staId
Jeff Johnson295189b2012-06-20 16:38:30 -07001551);
1552
1553/*==========================================================================
1554 FUNCTION WDA_DS_BuildTxPacketInfo
1555
1556 DESCRIPTION
1557 Build TX meta info for integrated SOC.
1558
1559 Same function calls HAL for reserve BD header space into VOS packet and
1560 HAL function to fill it.
1561
1562 DEPENDENCIES
1563
1564 PARAMETERS
1565
1566 IN
1567 pvosGCtx VOS context
1568 vosDataBuff vos data buffer
1569 pvDestMacAddr destination MAC address ponter
1570 ucDisableFrmXtl Is frame xtl disabled?
1571 ucQosEnabled Is QoS enabled?
1572 ucWDSEnabled Is WDS enabled?
1573 extraHeadSpace Extra head bytes. If it's not 0 due to 4 bytes align
1574 of BD header.
1575 typeSubtype typeSubtype from MAC header or TX metainfo/BD
1576 pAddr2 address 2
1577 uTid tid
1578 txFlag
1579 timeStamp
1580 ucIsEapol
1581 ucUP
1582
1583 OUT
1584 *pusPktLen Packet length
1585
1586 RETURN VALUE
1587 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1588 VOS_STATUS_SUCCESS: Everything is good :)
1589
1590 SIDE EFFECTS
1591
1592============================================================================*/
1593VOS_STATUS
1594WDA_DS_BuildTxPacketInfo
1595(
1596 v_PVOID_t pvosGCtx,
1597 vos_pkt_t* vosDataBuff,
1598 v_MACADDR_t* pvDestMacAddr,
1599 v_U8_t ucDisableFrmXtl,
1600 v_U16_t* pusPktLen,
1601 v_U8_t ucQosEnabled,
1602 v_U8_t ucWDSEnabled,
1603 v_U8_t extraHeadSpace,
1604 v_U8_t typeSubtype,
1605 v_PVOID_t pAddr2,
1606 v_U8_t uTid,
1607 v_U8_t txFlag,
1608 v_U32_t timeStamp,
1609 v_U8_t ucIsEapol,
1610 v_U8_t ucUP
1611);
1612
1613/*==========================================================================
1614 FUNCTION WDA_DS_PeekRxPacketInfo
1615
1616 DESCRIPTION
1617 Return RX metainfo pointer for for integrated SOC.
1618
1619 Same function will return BD header pointer.
1620
1621 DEPENDENCIES
1622
1623 PARAMETERS
1624
1625 IN
1626 vosDataBuff vos data buffer
1627
1628 pvDestMacAddr destination MAC address ponter
1629 bSwap Want to swap BD header? For backward compatability
1630 It does nothing for integrated SOC
1631 OUT
1632 *ppRxHeader RX metainfo pointer
1633
1634 RETURN VALUE
1635 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1636 VOS_STATUS_SUCCESS: Everything is good :)
1637
1638 SIDE EFFECTS
1639
1640============================================================================*/
1641VOS_STATUS
1642WDA_DS_PeekRxPacketInfo
1643(
1644 vos_pkt_t *vosDataBuff,
1645 v_PVOID_t *ppRxHeader,
1646 v_BOOL_t bSwap
1647);
1648
1649/*==========================================================================
1650 FUNCTION WDA_DS_TrimRxPacketInfo
1651
1652 DESCRIPTION
1653 Trim/Remove RX BD header for NON integrated SOC.
1654 It does nothing for integrated SOC.
1655
1656 DEPENDENCIES
1657
1658 PARAMETERS
1659
1660 IN
1661 vosDataBuff vos data buffer
1662
1663 RETURN VALUE
1664 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1665 VOS_STATUS_SUCCESS: Everything is good :)
1666
1667 SIDE EFFECTS
1668
1669============================================================================*/
1670VOS_STATUS
1671WDA_DS_TrimRxPacketInfo
1672(
1673 vos_pkt_t *vosDataBuff
1674);
1675
1676/*==========================================================================
1677 FUNCTION WDA_DS_GetTxResources
1678
1679 DESCRIPTION
1680 It does return hardcoded value for Prima. It should bigger number than 0.
1681 Returning 0 will put TL in out-of-resource condition for TX.
1682
1683 Return current PDU resources from BAL for NON integrated SOC.
1684
1685 DEPENDENCIES
1686
1687 PARAMETERS
1688
1689 IN
1690 vosDataBuff vos data buffer
1691
1692 OUT
1693 puResCount available PDU number for TX
1694
1695 RETURN VALUE
1696 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1697 VOS_STATUS_SUCCESS: Everything is good :)
1698
1699 SIDE EFFECTS
1700
1701============================================================================*/
1702VOS_STATUS
1703WDA_DS_GetTxResources
1704(
1705 v_PVOID_t pvosGCtx,
1706 v_U32_t* puResCount
1707);
1708
1709/*==========================================================================
1710 FUNCTION WDA_DS_GetRssi
1711
1712 DESCRIPTION
1713 Get RSSI
1714
1715 TODO It returns hardcoded value in the meantime since WDA/WDI does nothing
1716 support it yet for Prima.
1717
1718 DEPENDENCIES
1719
1720 PARAMETERS
1721
1722 IN
1723 vosDataBuff vos data buffer
1724
1725 OUT
1726 puRssi RSSI
1727
1728 RETURN VALUE
1729 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1730 VOS_STATUS_SUCCESS: Everything is good :)
1731
1732 SIDE EFFECTS
1733
1734============================================================================*/
1735VOS_STATUS
1736WDA_DS_GetRssi
1737(
1738 v_PVOID_t pvosGCtx,
1739 v_S7_t* puRssi
1740);
1741
1742/*==========================================================================
1743 FUNCTION WDA_DS_RxAmsduBdFix
1744
1745 DESCRIPTION
1746 For backward compatability with Libra/Volans. Need to call HAL function
1747 for HW BD bug fix
1748
1749 It does nothing for integrated SOC.
1750
1751 DEPENDENCIES
1752
1753 PARAMETERS
1754
1755 IN
1756 pvosGCtx VOS context
1757 pvBDHeader BD header pointer
1758
1759 OUT
1760
1761 RETURN VALUE
1762 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1763 VOS_STATUS_SUCCESS: Everything is good :)
1764
1765 SIDE EFFECTS
1766
1767============================================================================*/
1768VOS_STATUS
1769WDA_DS_RxAmsduBdFix
1770(
1771 v_PVOID_t pvosGCtx,
1772 v_PVOID_t pvBDHeader
1773);
1774
1775/*==========================================================================
1776 FUNCTION WDA_DS_GetFrameTypeSubType
1777
1778 DESCRIPTION
1779 Get typeSubtype from the packet. The BD header should have this.
1780 But some reason, Libra/Volans read it from 802.11 header and save it
1781 back to BD header. So for NON integrated SOC, this function does
1782 the same.
1783
1784 For integrated SOC, WDI does the same, not TL.
1785 It does return typeSubtype from RX meta info for integrated SOC.
1786
1787 DEPENDENCIES
1788
1789 PARAMETERS
1790
1791 IN
1792 pvosGCtx VOS context
1793 vosDataBuff vos data buffer
1794 pRxHeader RX meta info or BD header pointer
1795
1796 OUT
1797 ucTypeSubtype typeSubtype
1798
1799 RETURN VALUE
1800 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1801 VOS_STATUS_SUCCESS: Everything is good :)
1802
1803 SIDE EFFECTS
1804
1805============================================================================*/
1806VOS_STATUS
1807WDA_DS_GetFrameTypeSubType
1808(
1809 v_PVOID_t pvosGCtx,
1810 vos_pkt_t *vosDataBuff,
1811 v_PVOID_t pRxHeader,
1812 v_U8_t *ucTypeSubtype
1813);
1814
1815/*==========================================================================
1816 FUNCTION WDA_DS_GetReplayCounter
1817
1818 DESCRIPTION
1819 Return replay counter from BD header or RX meta info
1820
1821 DEPENDENCIES
1822
1823 PARAMETERS
1824
1825 IN
1826 pRxHeader RX meta info or BD header pointer
1827
1828 OUT
1829
1830 RETURN VALUE
1831 Replay Counter
1832
1833 SIDE EFFECTS
1834
1835============================================================================*/
1836v_U64_t
1837WDA_DS_GetReplayCounter
1838(
1839 v_PVOID_t pRxHeader
1840);
1841
1842/*==========================================================================
1843 FUNCTION WDA_DS_GetReplayCounter
1844
1845 DESCRIPTION
1846 HO support. Set RSSI threshold via HAL function for NON integrated SOC
1847
1848 TODO
1849 Same function should be provided by WDA/WDI for Prima.
1850
1851 DEPENDENCIES
1852
1853 PARAMETERS
1854
1855 IN
1856 pMac MAC global pointer
1857 pThresholds pointer of threshold structure to set.
1858
1859 OUT
1860
1861 RETURN VALUE
1862 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1863 VOS_STATUS_SUCCESS: Everything is good :)
1864
1865 SIDE EFFECTS
1866
1867============================================================================*/
1868VOS_STATUS
1869WDA_DS_SetRSSIThresholds
1870(
1871 tpAniSirGlobal pMac,
1872 tpSirRSSIThresholds pThresholds
1873);
1874
1875#if defined( FEATURE_WLAN_INTEGRATED_SOC )
1876/*==========================================================================
1877 FUNCTION WDA_DS_TxFrames
1878
1879 DESCRIPTION
1880 Pull packets from TL and push them to WDI. It gets invoked upon
1881 WDA_DS_TX_START_XMIT.
1882
1883 This function is equivelant of WLANSSC_Transmit in Libra/Volans.
1884
1885 TODO
1886 This function should be implemented and moved in WDI.
1887
1888 DEPENDENCIES
1889
1890 PARAMETERS
1891
1892 IN
1893 pvosGCtx VOS context
1894
1895 OUT
1896
1897 RETURN VALUE
1898 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1899 VOS_STATUS_SUCCESS: Everything is good :)
1900
1901 SIDE EFFECTS
1902
1903============================================================================*/
1904VOS_STATUS
1905WDA_DS_TxFrames
1906(
1907 v_PVOID_t pvosGCtx
1908);
1909#endif
1910
1911/*==========================================================================
1912 FUNCTION WDA_DS_TxFlowControlCallback
1913
1914 DESCRIPTION
1915 Invoked by WDI to control TX flow.
1916
1917 DEPENDENCIES
1918
1919 PARAMETERS
1920
1921 IN
1922 pvosGCtx VOS context
1923 uFlowMask TX channel mask for flow control
1924 Defined in WDA_TXFlowEnumType
1925
1926 OUT
1927
1928 RETURN VALUE
1929
1930 SIDE EFFECTS
1931
1932============================================================================*/
1933v_VOID_t
1934WDA_DS_TxFlowControlCallback
1935(
1936 v_PVOID_t pvosGCtx,
1937 v_U8_t uFlowMask
1938);
1939
1940/*==========================================================================
1941 FUNCTION WDA_DS_GetTxFlowMask
1942
1943 DESCRIPTION
1944 return TX flow mask control value
1945
1946 DEPENDENCIES
1947
1948 PARAMETERS
1949
1950 IN
1951 pvosGCtx VOS context
1952
1953 OUT
1954 uFlowMask TX channel mask for flow control
1955 Defined in WDA_TXFlowEnumType
1956
1957 RETURN VALUE
1958 VOS_STATUS_E_INVAL: pointer is NULL and other errors
1959 VOS_STATUS_SUCCESS: Everything is good :)
1960
1961 SIDE EFFECTS
1962
1963============================================================================*/
1964VOS_STATUS
1965WDA_DS_GetTxFlowMask
1966(
1967 v_PVOID_t pvosGCtx,
1968 v_U8_t* puFlowMask
1969);
1970
1971/*==========================================================================
1972 FUNCTION WDA_HALDumpCmdReq
1973
1974 DESCRIPTION
1975 Send Dump commandsto WDI
1976
1977 DEPENDENCIES
1978
1979 PARAMETERS
1980
1981 IN
1982 pMac MAC global pointer
1983 cmd Hal dump command
1984 arg1 Dump command argument 1
1985 arg2 Dump command argument 2
1986 arg3 Dump command argument 3
1987 arg4 Dump command argument 4
1988
1989 OUT
1990 pBuffer Dump command Response buffer
1991
1992 RETURN VALUE
1993 VOS_STATUS_E_FAULT: pointer is NULL and other errors
1994 VOS_STATUS_SUCCESS: Everything is good :)
1995
1996 SIDE EFFECTS
1997
1998============================================================================*/
1999VOS_STATUS WDA_HALDumpCmdReq(tpAniSirGlobal pMac,tANI_U32 cmd,
2000 tANI_U32 arg1, tANI_U32 arg2, tANI_U32 arg3,
2001 tANI_U32 arg4, tANI_U8 *pBuffer);
2002
2003/*==========================================================================
2004 FUNCTION WDA_featureCapsExchange
2005
2006 DESCRIPTION
2007 WDA API to invoke capability exchange between host and FW
2008
2009 DEPENDENCIES
2010
2011 PARAMETERS
2012
2013 IN
2014 pVosContext VOS context
2015
2016 OUT
2017 NONE
2018
2019 RETURN VALUE
2020 NONE
2021
2022 SIDE EFFECTS
2023============================================================================*/
2024void WDA_featureCapsExchange(v_PVOID_t pVosContext);
2025
Yathish9f22e662012-12-10 14:21:35 -08002026void WDA_disableCapablityFeature(tANI_U8 feature_index);
Jeff Johnson295189b2012-06-20 16:38:30 -07002027/*==========================================================================
2028 FUNCTION WDA_getHostWlanFeatCaps
2029
2030 DESCRIPTION
2031 Wrapper for WDI API, that will return if the feature (enum value).passed
2032 to this API is supported or not in Host
2033
2034 DEPENDENCIES
2035
2036 PARAMETERS
2037
2038 IN
2039 featEnumValue enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
2040
2041 OUT
2042 NONE
2043
2044 RETURN VALUE
2045 0 - implies feature is NOT Supported
2046 any non zero value - implies feature is SUPPORTED
2047
2048 SIDE EFFECTS
2049============================================================================*/
2050tANI_U8 WDA_getHostWlanFeatCaps(tANI_U8 featEnumValue);
2051
2052/*==========================================================================
2053 FUNCTION WDA_getFwWlanFeatCaps
2054
2055 DESCRIPTION
2056 Wrapper for WDI API, that will return if the feature (enum value).passed
2057 to this API is supported or not in FW
2058
2059 DEPENDENCIES
2060
2061 PARAMETERS
2062
2063 IN
2064 featEnumValue enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
2065
2066 OUT
2067 NONE
2068
2069 RETURN VALUE
2070 0 - implies feature is NOT Supported
2071 any non zero value - implies feature is SUPPORTED
2072
2073 SIDE EFFECTS
2074============================================================================*/
2075tANI_U8 WDA_getFwWlanFeatCaps(tANI_U8 featEnumValue);
2076
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -07002077/*==========================================================================
2078 FUNCTION WDA_TransportChannelDebug
2079
2080 DESCRIPTION
2081 Display Transport Channel debugging information
2082 User may request to display DXE channel snapshot
2083 Or if host driver detects any abnormal stcuk may display
2084
2085 PARAMETERS
Jeff Johnsonb88db982012-12-10 13:34:59 -08002086 displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -07002087 enableStallDetect : Enable stall detect feature
2088 This feature will take effect to data performance
2089 Not integrate till fully verification
2090
2091 RETURN VALUE
2092 NONE
2093
2094===========================================================================*/
2095void WDA_TransportChannelDebug
2096(
2097 v_BOOL_t displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -07002098 v_BOOL_t toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -07002099);
Jeff Johnson295189b2012-06-20 16:38:30 -07002100#endif