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