blob: 6afb526112e8e18d154105a1c337a34fff3b8583 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002 * Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
3 * All Rights Reserved.
4 * Qualcomm Atheros Confidential and Proprietary.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -08005 */
Jeff Johnson295189b2012-06-20 16:38:30 -07006#ifndef WLAN_QCT_WDI_DP_H
7#define WLAN_QCT_WDI_DP_H
8
9/*===========================================================================
10
11 W L A N D E V I C E A B S T R A C T I O N L A Y E R
12 I N T E R N A L A P I F O R T H E
13 D A T A P A T H
14
15
16DESCRIPTION
17 This file contains the internal API exposed by the DAL Control Path Core
18 module to be used by the DAL Data Path Core.
19
20
Kiet Lamaa8e15a2014-02-11 23:30:06 -080021 Copyright (c) 2010 QUALCOMM Incorporated. All Rights Reserved.
22 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070023===========================================================================*/
24
25
26/*===========================================================================
27
28 EDIT HISTORY FOR FILE
29
30
31 This section contains comments describing changes made to the module.
32 Notice that changes are listed in reverse chronological order.
33
34
35 $Header:$ $DateTime: $ $Author: $
36
37
38when who what, where, why
39-------- --- ----------------------------------------------------------
4008/19/10 lti Created module.
41
42===========================================================================*/
43
44#include "wlan_qct_pal_type.h"
45#include "wlan_qct_wdi_i.h"
46#include "wlan_qct_wdi_bd.h"
47
48/*=========================================================================
49 BD Macro Defines
50=========================================================================*/
51
52/*--------------------------------------------------------------------------
53 BD Definitions used by the DAL data path
54--------------------------------------------------------------------------*/
55#define WDI_TXBD_BDRATE_DEFAULT 0
56#define WDI_TXBD_BDRATE_FIRST 1
57#define WDI_TXBD_BDRATE_SECOND 2
58#define WDI_TXBD_BDRATE_THIRD 3
59
60#define WDI_FRAME_TYPE_MASK 0x30
61#define WDI_FRAME_TYPE_OFFSET 0x4
62#define WDI_FRAME_SUBTYPE_MASK 0x0F
63
64#define WDI_TXBD_BD_SSN_FILL_HOST 0
65#define WDI_TXBD_BD_SSN_FILL_DPU_NON_QOS 1
66#define WDI_TXBD_BD_SSN_FILL_DPU_QOS 2
67
68#define WDI_ACKPOLICY_ACK_REQUIRED 0
69#define WDI_ACKPOLICY_ACK_NOTREQUIRED 1
70
71#define WDI_BDRATE_BCDATA_FRAME 1
72#define WDI_BDRATE_BCMGMT_FRAME 2
73#define WDI_BDRATE_CTRL_FRAME 3
74
75/* Default values for FillTx BD */
76#define WDI_DEFAULT_UNICAST_ENABLED 1
77#define WDI_RMF_DISABLED 0
78#define WDI_RMF_ENABLED 1
79#define WDI_NO_ENCRYPTION_DISABLED 0
80#define WDI_NO_ENCRYPTION_ENABLED 1
81
82#define WDI_RX_BD_ADDR3_SELF_IDX 0
83
84#define WDI_TXCOMP_REQUESTED_MASK 0x1 //bit 0 for TxComp intr requested.
85#define WDI_USE_SELF_STA_REQUESTED_MASK 0x2 //bit 1 for STA overwrite with selfSta Requested.
86#define WDI_TX_NO_ENCRYPTION_MASK 0x4 //bit 2. If set, the frame is not to be encrypted
87#if defined(LIBRA_WAPI_SUPPORT)
88#define WDI_WAPI_STA_MASK 0x8 //bit 3. If set, this frame is for WAPI station
89#endif
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#define WDI_TRIGGER_ENABLED_AC_MASK 0x10 //bit 4 for data frames belonging to trigger enabled AC
Jeff Johnson295189b2012-06-20 16:38:30 -070092#define WDI_USE_NO_ACK_REQUESTED_MASK 0x20
93
94#define WDI_USE_BD_RATE2_FOR_MANAGEMENT_FRAME 0x40 // Bit 6 will be used to control BD rate for Management frames
95
96
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +053097#define WDI_USE_FW_IN_TX_PATH 0x200 //bit 9 used to route the frames to Work Queue 5
98
Jeff Johnson295189b2012-06-20 16:38:30 -070099/*Macro for getting the size of the TX BD*/
100#define WDI_TX_BD_HEADER_SIZE sizeof(WDI_TxBdType)
101
102/*Macro for getting the size of the RX BD*/
103#define WDI_RX_BD_HEADER_SIZE sizeof(WDI_RxBdType)
104
105#define WDI_RX_BD_HEADER_OFFSET 0
106
107#define WDI_DPU_FEEDBACK_OFFSET 1
108
109// Frame Type definitions
110
111#define WDI_MAC_MGMT_FRAME 0x0
112#define WDI_MAC_CTRL_FRAME 0x1
113#define WDI_MAC_DATA_FRAME 0x2
114
115// Data frame subtype definitions
116#define WDI_MAC_DATA_DATA 0
117#define WDI_MAC_DATA_DATA_ACK 1
118#define WDI_MAC_DATA_DATA_POLL 2
119#define WDI_MAC_DATA_DATA_ACK_POLL 3
120#define WDI_MAC_DATA_NULL 4
121#define WDI_MAC_DATA_NULL_ACK 5
122#define WDI_MAC_DATA_NULL_POLL 6
123#define WDI_MAC_DATA_NULL_ACK_POLL 7
124#define WDI_MAC_DATA_QOS_DATA 8
125#define WDI_MAC_DATA_QOS_DATA_ACK 9
126#define WDI_MAC_DATA_QOS_DATA_POLL 10
127#define WDI_MAC_DATA_QOS_DATA_ACK_POLL 11
128#define WDI_MAC_DATA_QOS_NULL 12
129#define WDI_MAC_DATA_QOS_NULL_ACK 13
130#define WDI_MAC_DATA_QOS_NULL_POLL 14
131#define WDI_MAC_DATA_QOS_NULL_ACK_POLL 15
132
133#define WDI_MAC_FRAME_SUBTYPE_START 0
134#define WDI_MAC_FRAME_SUBTYPE_END 16
135
136#define WDI_MAC_DATA_QOS_MASK 8
137#define WDI_MAC_DATA_NULL_MASK 4
138#define WDI_MAC_DATA_POLL_MASK 2
139#define WDI_MAC_DATA_ACK_MASK 1
140
141// Management frame subtype definitions
142
143#define WDI_MAC_MGMT_ASSOC_REQ 0x0
144#define WDI_MAC_MGMT_ASSOC_RSP 0x1
145#define WDI_MAC_MGMT_REASSOC_REQ 0x2
146#define WDI_MAC_MGMT_REASSOC_RSP 0x3
147#define WDI_MAC_MGMT_PROBE_REQ 0x4
148#define WDI_MAC_MGMT_PROBE_RSP 0x5
149#define WDI_MAC_MGMT_BEACON 0x8
150#define WDI_MAC_MGMT_ATIM 0x9
151#define WDI_MAC_MGMT_DISASSOC 0xA
152#define WDI_MAC_MGMT_AUTH 0xB
153#define WDI_MAC_MGMT_DEAUTH 0xC
154#define WDI_MAC_MGMT_ACTION 0xD
155#define WDI_MAC_MGMT_RESERVED15 0xF
156
157// Action frame categories
158
159#define WDI_MAC_ACTION_SPECTRUM_MGMT 0
160#define WDI_MAC_ACTION_QOS_MGMT 1
161#define WDI_MAC_ACTION_DLP 2
162#define WDI_MAC_ACTION_BLKACK 3
163#define WDI_MAC_ACTION_HT 7
164#define WDI_MAC_ACTION_WME 17
165
166// QoS management action codes
167
168#define WDI_MAC_QOS_ADD_TS_REQ 0
169#define WDI_MAC_QOS_ADD_TS_RSP 1
170#define WDI_MAC_QOS_DEL_TS_REQ 2
171#define WDI_MAC_QOS_SCHEDULE 3
172// and these are proprietary
173#define WDI_MAC_QOS_DEF_BA_REQ 4
174#define WDI_MAC_QOS_DEF_BA_RSP 5
175#define WDI_MAC_QOS_DEL_BA_REQ 6
176#define WDI_MAC_QOS_DEL_BA_RSP 7
177
178#ifdef WLAN_PERF
179/* TxBD signature fields
180 * serial(8): a monotonically increasing serial # whenever there is a Add/Del STA or Add/Del Key event
181 * macHash(16): Hash value of DA
182 * tid(4): TID
183 * ucast(1): Unicast or Broadcast data frame
184 */
185#define WDI_TXBD_SIG_SERIAL_OFFSET 0
186#define WDI_TXBD_SIG_TID_OFFSET 8
187#define WDI_TXBD_SIG_UCAST_DATA_OFFSET 9
188#define WDI_TXBD_SIG_MACADDR_HASH_OFFSET 16
189#define WDI_TXBD_SIG_MGMT_MAGIC 0xbdbdbdbd
190
191#endif
192
193/*--------------------------------------------------------------------------
194 BD header macros - used by the data path to get or set various values
195 inside the packet BD
196--------------------------------------------------------------------------*/
197#define WDI_RX_BD_GET_MPDU_H_OFFSET( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduHeaderOffset)
198
199#define WDI_RX_BD_GET_MPDU_D_OFFSET( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduDataOffset)
200
201#define WDI_RX_BD_GET_MPDU_LEN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduLength)
202
203#define WDI_RX_BD_GET_MPDU_H_LEN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduHeaderLength)
204
Jeff Johnson295189b2012-06-20 16:38:30 -0700205#define WDI_RX_BD_GET_FT( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->ft)
206
207#define WDI_RX_BD_GET_DPU_FEEDBACK( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuFeedback)
208
209#define WDI_RX_BD_GET_RX_CHANNEL( _pvBDHeader ) \
210 (( (((WDI_RxBdType*)_pvBDHeader)->reserved0) << 4) | (((WDI_RxBdType*)_pvBDHeader)->rxChannel))
211
212#define WDI_FRAME_TYPE_MASK 0x30
213#define WDI_FRAME_TYPE_OFFSET 0x4
214#define WDI_FRAME_SUBTYPE_MASK 0x0F
215
216#define WDI_RX_BD_GET_SUBTYPE( _pvBDHeader ) ((((WDI_RxBdType*)_pvBDHeader)->frameTypeSubtype) & WDI_FRAME_SUBTYPE_MASK)
217
Madan Mohan Koyyalamudic0d1b3f2012-11-13 10:41:07 -0800218#define WDI_RX_BD_GET_TYPE( _pvBDHeader ) (((((WDI_RxBdType*)_pvBDHeader)->frameTypeSubtype) & WDI_FRAME_TYPE_MASK) >> WDI_FRAME_TYPE_OFFSET)
Jeff Johnson295189b2012-06-20 16:38:30 -0700219
220#define WDI_RX_BD_GET_RTSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rtsf)
221
222#define WDI_RX_BD_GET_BSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->bsf)
223
224#define WDI_RX_BD_GET_SCAN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->scanLearn)
225
226#define WDI_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuSignature)
227
228#define WDI_RX_BD_GET_NE( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuNE)
229
Jeff Johnsone7245742012-09-05 17:12:55 -0700230#define WDI_RX_BD_GET_LLCR( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->llcr)
Jeff Johnson295189b2012-06-20 16:38:30 -0700231
232#define WDI_RX_BD_GET_TIMESTAMP( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mclkRxTimestamp)
233
234#define WDI_RX_BD_GET_RXPFLAGS( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rxpFlags)
235
236#define WDI_RX_BD_GET_RATEINDEX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rateIndex)
237
238#define WDI_RX_BD_GET_AMSDU_SIZE( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->totalMsduSize)
239
240#define WDI_RX_BD_GET_LLC( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->llc)
241
242#define WDI_RX_BD_GET_TID( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->tid)
243
Kiran Kumar Lokere79540f92013-04-25 17:32:16 -0700244#define WDI_RX_BD_GET_RFBAND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rfBand)
245
Jeff Johnson295189b2012-06-20 16:38:30 -0700246#define WDI_RX_BD_GET_ASF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->asf)
247
248#define WDI_RX_BD_GET_AEF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->aef)
249
250#define WDI_RX_BD_GET_LSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->lsf)
251
252#define WDI_RX_BD_GET_ESF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->esf)
253
254#define WDI_RX_BD_GET_STA_ID( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr2Index)
255#define WDI_RX_BD_GET_UB( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->ub)
256#define WDI_RX_BD_GET_ADDR3_IDX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr3Index)
257#define WDI_RX_BD_GET_ADDR1_IDX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr1Index)
258
259#define WDI_TX_BD_GET_TID( _pvBDHeader ) (((WDI_TxBdType*)_pvBDHeader)->tid)
260#define WDI_TX_BD_GET_STA_ID( _pvBDHeader ) (((WDI_TxBdType*)_pvBDHeader)->staIndex)
261
262#define WDI_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuSignature)
263
264//flow control related.
265#define WDI_RX_FC_BD_GET_STA_TX_DISABLED_BITMAP( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fcStaTxDisabledBitmap)
266#define WDI_RX_FC_BD_GET_FC( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fc)
267#define WDI_RX_FC_BD_GET_STA_VALID_MASK( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fcSTAValidMask)
268
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700269#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
270//LFR scan related
271#define WDI_RX_BD_GET_OFFLOADSCANLEARN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->offloadScanLearn)
272#define WDI_RX_BD_GET_ROAMCANDIDATEIND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->roamCandidateInd)
273#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700274
275/*------------ RSSI and SNR Information extraction -------------*/
276#define WDI_RX_BD_GET_RSSI0( _pvBDHeader ) \
277 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 24) & 0xff)
278#define WDI_RX_BD_GET_RSSI1( _pvBDHeader ) \
279 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 16) & 0xff)
280#define WDI_RX_BD_GET_RSSI2( _pvBDHeader ) \
281 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 0) & 0xff)
282#define WDI_RX_BD_GET_RSSI3( _pvBDHeader ) \
283 ((((WDI_RxBdType*)_pvBDHeader)->phyStats0) & 0xff)
284
285// Get the average of the 4 values.
286#define WDI_GET_RSSI_AVERAGE( _pvBDHeader ) \
287 (((WDI_RX_BD_GET_RSSI0(_pvBDHeader)) + \
288 (WDI_RX_BD_GET_RSSI1(_pvBDHeader)) + \
289 (WDI_RX_BD_GET_RSSI2(_pvBDHeader)) + \
290 (WDI_RX_BD_GET_RSSI3(_pvBDHeader))) / 4)
291
292// Get the SNR value from PHY Stats
293#define WDI_RX_BD_GET_SNR( _pvBDHeader ) \
294 (((((WDI_RxBdType*)_pvBDHeader)->phyStats1) >> 24) & 0xff)
295/*-----------------------------------------------------------------*/
296
297#define WDI_TX_BD_SET_MPDU_DATA_OFFSET( _bd, _off ) (((WDI_TxBdType*)_bd)->mpduDataOffset = _off)
298
299#define WDI_TX_BD_SET_MPDU_HEADER_OFFSET( _bd, _off ) (((WDI_TxBdType*)_bd)->mpduHeaderOffset = _off)
300
301#define WDI_TX_BD_SET_MPDU_HEADER_LEN( _bd, _len ) (((WDI_TxBdType*)_bd)->mpduHeaderLength = _len)
302
303#define WDI_TX_BD_SET_MPDU_LEN( _bd, _len ) (((WDI_TxBdType*)_bd)->mpduLength = _len)
304
305#define WDI_RX_BD_GET_BA_OPCODE(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderOpcode)
306
307#define WDI_RX_BD_GET_BA_FI(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderFwdIdx)
308
309#define WDI_RX_BD_GET_BA_SI(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderSlotIdx)
310
311#define WDI_RX_BD_GET_BA_CSN(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->currentPktSeqNo)
312
313#define WDI_RX_BD_GET_BA_ESN(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->expectedPktSeqNo)
314
315#define WDI_RX_BD_GET_RXP_FLAGS(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->rxpFlags)
316
317#define WDI_RX_BD_GET_PMICMD_20TO23(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->pmiCmd4to23[4])
318
319#define WDI_RX_BD_GET_PMICMD_24TO25(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->pmiCmd24to25)
320
Chet Lanctot186b5732013-03-18 10:26:30 -0700321#ifdef WLAN_FEATURE_11W
322#define WDI_RX_BD_GET_RMF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rmf)
323#endif
324
Jeff Johnson295189b2012-06-20 16:38:30 -0700325#define WDI_RX_BD_ASF_SET 1 /*The value of the field when set and pkt is AMSDU*/
326
327#define WDI_RX_BD_FSF_SET 1
328
329#define WDI_RX_BD_LSF_SET 1
330
331#define WDI_RX_BD_AEF_SET 1
332
333
334#define WDI_RX_BD_LLC_PRESENT 0 /*The value of the field when LLC is present*/
335
336#define WDI_RX_BD_FT_DONE 1 /* The value of the field when frame xtl was done*/
337
338/*=========================================================================
339 API Definition
340=========================================================================*/
341
342
343/**
344 @brief WDI_RxBD_GetFrameTypeSubType - Called by the data path
345 to retrieve the type/subtype of the received frame.
346
347 @param pvBDHeader: Void pointer to the RxBD buffer.
348 usFrmCtrl: the frame ctrl of the 802.11 header
349
350 @return A byte which contains both type and subtype info. LSB four bytes
351 (b0 to b3)is subtype and b5-b6 is type info.
352*/
353
354wpt_uint8
355WDI_RxBD_GetFrameTypeSubType
356(
357 void* _pvBDHeader,
358 wpt_uint16 usFrmCtrl
359);
360
361
362/**
363 @brief WDI_FillTxBd - Called by the data path to fill the TX BD
364
365 @param pWDICtx: Context to the WDI
366 ucTypeSubtype: of the frame
367 pDestMacAddr: destination MAC address
368 pTid: pointer to the TID (in/out value in case DAL Ctrl causes
369 a TID downgrade - not done for now)
370 ucDisableFrmXtl: set to 1 if this frame is not to be translated by HW
371 pTxBd: pointer to the TX BD
372 ucTxFlag: can have appropriate bit setting as required
Chet Lanctot4b088622013-05-22 16:09:22 -0700373 ucProtMgmtFrame: for management frames, whether the frame is
374 protected (protect bit is set in FC)
Jeff Johnson295189b2012-06-20 16:38:30 -0700375 uTimestamp: pkt timestamp
376
377
378 @return success or not
379*/
380
381WDI_Status
382WDI_FillTxBd
383(
384 WDI_ControlBlockType* pWDICtx,
385 wpt_uint8 ucTypeSubtype,
386 void* pDestMacAddr,
387 void* pAddr2,
388 wpt_uint8* pTid,
389 wpt_uint8 ucDisableFrmXtl,
390 void* pTxBd,
391 wpt_uint8 ucTxFlag,
Chet Lanctot4b088622013-05-22 16:09:22 -0700392 wpt_uint8 ucProtMgmtFrame,
Jeff Johnson295189b2012-06-20 16:38:30 -0700393 wpt_uint32 uTimeStamp,
Kiet Lam9b11b012013-10-24 11:43:30 +0530394 wpt_uint8 isEapol,
Jeff Johnson295189b2012-06-20 16:38:30 -0700395 wpt_uint8* staIndex
396);
397
398/**
399 @brief WDI_SwapRxBd swaps the RX BD.
400
401
402 @param pBd - pointer to the BD (in/out)
403
404 @return None
405*/
406void
407WDI_SwapRxBd
408(
409 wpt_uint8 *pBd
410);
411
412/**
413 @brief WDI_SwapTxBd - Swaps the TX BD
414
415 @param pBd - pointer to the BD (in/out)
416
417 @return none
418*/
419void
420WDI_SwapTxBd
421(
422 wpt_uint8 *pBd
423);
424
425/**
426 @brief WDI_RxAmsduBdFix - fix for HW issue for AMSDU
427
428
429 @param pWDICtx: Context to the WDI
430 pBDHeader - pointer to the BD header
431
432 @return None
433*/
434void
435WDI_RxAmsduBdFix
436(
437 WDI_ControlBlockType* pWDICtx,
438 void* pBDHeader
439);
440
441#ifdef WLAN_PERF
442/**
443 @brief WDI_TxBdFastFwd - evaluates if a frame can be fast
444 forwarded
445
446 @param pWDICtx: Context to the WDI
447 pDestMac: Destination MAC
448 ucTid: packet TID pBDHeader
449 ucUnicastDst: is packet unicast
450 pTxBd: pointer to the BD header
451 usMpduLength: len
452
453 @return 1 - if the frame can be fast fwd-ed ; 0 if not
454*/
455wpt_uint32
456WDI_TxBdFastFwd
457(
458 WDI_ControlBlockType* pWDICtx,
459 wpt_uint8* pDestMac,
460 wpt_uint8 ucTid,
461 wpt_uint8 ucUnicastDst,
462 void* pTxBd,
463 wpt_uint16 usMpduLength);
464#endif /*WLAN_PERF*/
465
466/**
467 @brief WDI_DP_UtilsInit - Intializes the parameters required to
468 interact with the data path
469
470 @param pWDICtx: pointer to the main WDI Ctrl Block
471
472 @return success always
473*/
474WDI_Status
475WDI_DP_UtilsInit
476(
477 WDI_ControlBlockType* pWDICtx
478);
479
480/**
481 @brief WDI_DP_UtilsExit - Clears the parameters required to
482 interact with the data path
483
484 @param pWDICtx: pointer to the main WDI Ctrl Block
485
486 @return success always
487*/
488WDI_Status
489WDI_DP_UtilsExit
490(
491 WDI_ControlBlockType* pWDICtx
492);
493
494#endif /*WLAN_QCT_WDI_DP_H*/
495