blob: 465946ebae84bc95b985f4723fc9ee0b22bda494 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Abhishek Singh7cd040e2016-01-07 10:51:04 +05302 * Copyright (c) 2012-2014, 2016 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080026 */
Kiet Lam1ed83fc2014-02-19 01:15:45 -080027
28
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031#ifndef WLAN_QCT_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
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530123#ifdef WLAN_FEATURE_RMC
124#define WDI_RMC_REQUESTED_MASK 0x100
125#endif
Chandrasekaran Manishekar7218fa22014-06-26 10:34:25 +0530126
Hanumantha Reddy Pothulaee001fc2015-05-26 15:21:53 +0530127#define WDI_USE_BD_RATE_1_MASK 0x1000
128#define WDI_USE_BD_RATE_2_MASK 0x2000
129#define WDI_USE_BD_RATE_3_MASK 0x4000
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530130#define WDI_USE_FW_IN_TX_PATH 0x200 //bit 9 used to route the frames to Work Queue 5
131
Jeff Johnson295189b2012-06-20 16:38:30 -0700132/*Macro for getting the size of the TX BD*/
133#define WDI_TX_BD_HEADER_SIZE sizeof(WDI_TxBdType)
134
135/*Macro for getting the size of the RX BD*/
136#define WDI_RX_BD_HEADER_SIZE sizeof(WDI_RxBdType)
137
138#define WDI_RX_BD_HEADER_OFFSET 0
139
140#define WDI_DPU_FEEDBACK_OFFSET 1
141
Sushant Kaushik33200572015-08-05 16:46:20 +0530142#define WDI_MAC_LLC_HEADER_SIZE 8
143
144
Jeff Johnson295189b2012-06-20 16:38:30 -0700145// Frame Type definitions
146
147#define WDI_MAC_MGMT_FRAME 0x0
148#define WDI_MAC_CTRL_FRAME 0x1
149#define WDI_MAC_DATA_FRAME 0x2
150
151// Data frame subtype definitions
152#define WDI_MAC_DATA_DATA 0
153#define WDI_MAC_DATA_DATA_ACK 1
154#define WDI_MAC_DATA_DATA_POLL 2
155#define WDI_MAC_DATA_DATA_ACK_POLL 3
156#define WDI_MAC_DATA_NULL 4
157#define WDI_MAC_DATA_NULL_ACK 5
158#define WDI_MAC_DATA_NULL_POLL 6
159#define WDI_MAC_DATA_NULL_ACK_POLL 7
160#define WDI_MAC_DATA_QOS_DATA 8
161#define WDI_MAC_DATA_QOS_DATA_ACK 9
162#define WDI_MAC_DATA_QOS_DATA_POLL 10
163#define WDI_MAC_DATA_QOS_DATA_ACK_POLL 11
164#define WDI_MAC_DATA_QOS_NULL 12
165#define WDI_MAC_DATA_QOS_NULL_ACK 13
166#define WDI_MAC_DATA_QOS_NULL_POLL 14
167#define WDI_MAC_DATA_QOS_NULL_ACK_POLL 15
168
169#define WDI_MAC_FRAME_SUBTYPE_START 0
170#define WDI_MAC_FRAME_SUBTYPE_END 16
171
172#define WDI_MAC_DATA_QOS_MASK 8
173#define WDI_MAC_DATA_NULL_MASK 4
174#define WDI_MAC_DATA_POLL_MASK 2
175#define WDI_MAC_DATA_ACK_MASK 1
176
177// Management frame subtype definitions
178
179#define WDI_MAC_MGMT_ASSOC_REQ 0x0
180#define WDI_MAC_MGMT_ASSOC_RSP 0x1
181#define WDI_MAC_MGMT_REASSOC_REQ 0x2
182#define WDI_MAC_MGMT_REASSOC_RSP 0x3
183#define WDI_MAC_MGMT_PROBE_REQ 0x4
184#define WDI_MAC_MGMT_PROBE_RSP 0x5
185#define WDI_MAC_MGMT_BEACON 0x8
186#define WDI_MAC_MGMT_ATIM 0x9
187#define WDI_MAC_MGMT_DISASSOC 0xA
188#define WDI_MAC_MGMT_AUTH 0xB
189#define WDI_MAC_MGMT_DEAUTH 0xC
190#define WDI_MAC_MGMT_ACTION 0xD
191#define WDI_MAC_MGMT_RESERVED15 0xF
192
193// Action frame categories
194
195#define WDI_MAC_ACTION_SPECTRUM_MGMT 0
196#define WDI_MAC_ACTION_QOS_MGMT 1
197#define WDI_MAC_ACTION_DLP 2
198#define WDI_MAC_ACTION_BLKACK 3
199#define WDI_MAC_ACTION_HT 7
200#define WDI_MAC_ACTION_WME 17
201
202// QoS management action codes
203
204#define WDI_MAC_QOS_ADD_TS_REQ 0
205#define WDI_MAC_QOS_ADD_TS_RSP 1
206#define WDI_MAC_QOS_DEL_TS_REQ 2
207#define WDI_MAC_QOS_SCHEDULE 3
208// and these are proprietary
209#define WDI_MAC_QOS_DEF_BA_REQ 4
210#define WDI_MAC_QOS_DEF_BA_RSP 5
211#define WDI_MAC_QOS_DEL_BA_REQ 6
212#define WDI_MAC_QOS_DEL_BA_RSP 7
213
214#ifdef WLAN_PERF
215/* TxBD signature fields
216 * serial(8): a monotonically increasing serial # whenever there is a Add/Del STA or Add/Del Key event
217 * macHash(16): Hash value of DA
218 * tid(4): TID
219 * ucast(1): Unicast or Broadcast data frame
220 */
221#define WDI_TXBD_SIG_SERIAL_OFFSET 0
222#define WDI_TXBD_SIG_TID_OFFSET 8
223#define WDI_TXBD_SIG_UCAST_DATA_OFFSET 9
224#define WDI_TXBD_SIG_MACADDR_HASH_OFFSET 16
225#define WDI_TXBD_SIG_MGMT_MAGIC 0xbdbdbdbd
226
227#endif
228
229/*--------------------------------------------------------------------------
230 BD header macros - used by the data path to get or set various values
231 inside the packet BD
232--------------------------------------------------------------------------*/
233#define WDI_RX_BD_GET_MPDU_H_OFFSET( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduHeaderOffset)
234
235#define WDI_RX_BD_GET_MPDU_D_OFFSET( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduDataOffset)
236
237#define WDI_RX_BD_GET_MPDU_LEN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduLength)
238
239#define WDI_RX_BD_GET_MPDU_H_LEN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mpduHeaderLength)
240
Jeff Johnson295189b2012-06-20 16:38:30 -0700241#define WDI_RX_BD_GET_FT( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->ft)
242
243#define WDI_RX_BD_GET_DPU_FEEDBACK( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuFeedback)
244
245#define WDI_RX_BD_GET_RX_CHANNEL( _pvBDHeader ) \
246 (( (((WDI_RxBdType*)_pvBDHeader)->reserved0) << 4) | (((WDI_RxBdType*)_pvBDHeader)->rxChannel))
247
248#define WDI_FRAME_TYPE_MASK 0x30
249#define WDI_FRAME_TYPE_OFFSET 0x4
250#define WDI_FRAME_SUBTYPE_MASK 0x0F
251
252#define WDI_RX_BD_GET_SUBTYPE( _pvBDHeader ) ((((WDI_RxBdType*)_pvBDHeader)->frameTypeSubtype) & WDI_FRAME_SUBTYPE_MASK)
253
Madan Mohan Koyyalamudic0d1b3f2012-11-13 10:41:07 -0800254#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 -0700255
256#define WDI_RX_BD_GET_RTSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rtsf)
257
258#define WDI_RX_BD_GET_BSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->bsf)
259
260#define WDI_RX_BD_GET_SCAN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->scanLearn)
261
262#define WDI_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuSignature)
263
264#define WDI_RX_BD_GET_NE( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuNE)
265
Jeff Johnsone7245742012-09-05 17:12:55 -0700266#define WDI_RX_BD_GET_LLCR( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->llcr)
Jeff Johnson295189b2012-06-20 16:38:30 -0700267
268#define WDI_RX_BD_GET_TIMESTAMP( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->mclkRxTimestamp)
269
270#define WDI_RX_BD_GET_RXPFLAGS( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rxpFlags)
271
272#define WDI_RX_BD_GET_RATEINDEX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rateIndex)
273
274#define WDI_RX_BD_GET_AMSDU_SIZE( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->totalMsduSize)
275
276#define WDI_RX_BD_GET_LLC( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->llc)
277
278#define WDI_RX_BD_GET_TID( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->tid)
279
Kiran Kumar Lokere79540f92013-04-25 17:32:16 -0700280#define WDI_RX_BD_GET_RFBAND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rfBand)
281
Jeff Johnson295189b2012-06-20 16:38:30 -0700282#define WDI_RX_BD_GET_ASF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->asf)
283
284#define WDI_RX_BD_GET_AEF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->aef)
285
286#define WDI_RX_BD_GET_LSF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->lsf)
287
288#define WDI_RX_BD_GET_ESF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->esf)
289
290#define WDI_RX_BD_GET_STA_ID( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr2Index)
291#define WDI_RX_BD_GET_UB( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->ub)
292#define WDI_RX_BD_GET_ADDR3_IDX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr3Index)
293#define WDI_RX_BD_GET_ADDR1_IDX( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->addr1Index)
294
295#define WDI_TX_BD_GET_TID( _pvBDHeader ) (((WDI_TxBdType*)_pvBDHeader)->tid)
296#define WDI_TX_BD_GET_STA_ID( _pvBDHeader ) (((WDI_TxBdType*)_pvBDHeader)->staIndex)
297
298#define WDI_RX_BD_GET_DPU_SIG( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->dpuSignature)
299
300//flow control related.
301#define WDI_RX_FC_BD_GET_STA_TX_DISABLED_BITMAP( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fcStaTxDisabledBitmap)
302#define WDI_RX_FC_BD_GET_FC( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fc)
303#define WDI_RX_FC_BD_GET_STA_VALID_MASK( _pvBDHeader ) (((WDI_FcRxBdType*)_pvBDHeader)->fcSTAValidMask)
304
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700305#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
306//LFR scan related
307#define WDI_RX_BD_GET_OFFLOADSCANLEARN( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->offloadScanLearn)
308#define WDI_RX_BD_GET_ROAMCANDIDATEIND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->roamCandidateInd)
Kapil Guptab3a981b2016-06-26 13:36:51 +0530309#define WDI_RX_BD_GET_PER_ROAMCANDIDATEIND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->perRoamCndInd)
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700310#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530311#ifdef WLAN_FEATURE_EXTSCAN
312#define WDI_RX_BD_GET_EXTSCANFULLSCANRESIND( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->extscanBuffer)
313#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700314
315/*------------ RSSI and SNR Information extraction -------------*/
316#define WDI_RX_BD_GET_RSSI0( _pvBDHeader ) \
317 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 24) & 0xff)
318#define WDI_RX_BD_GET_RSSI1( _pvBDHeader ) \
319 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 16) & 0xff)
320#define WDI_RX_BD_GET_RSSI2( _pvBDHeader ) \
321 (((((WDI_RxBdType*)_pvBDHeader)->phyStats0) >> 0) & 0xff)
322#define WDI_RX_BD_GET_RSSI3( _pvBDHeader ) \
323 ((((WDI_RxBdType*)_pvBDHeader)->phyStats0) & 0xff)
324
325// Get the average of the 4 values.
326#define WDI_GET_RSSI_AVERAGE( _pvBDHeader ) \
327 (((WDI_RX_BD_GET_RSSI0(_pvBDHeader)) + \
328 (WDI_RX_BD_GET_RSSI1(_pvBDHeader)) + \
329 (WDI_RX_BD_GET_RSSI2(_pvBDHeader)) + \
330 (WDI_RX_BD_GET_RSSI3(_pvBDHeader))) / 4)
331
332// Get the SNR value from PHY Stats
333#define WDI_RX_BD_GET_SNR( _pvBDHeader ) \
334 (((((WDI_RxBdType*)_pvBDHeader)->phyStats1) >> 24) & 0xff)
335/*-----------------------------------------------------------------*/
336
337#define WDI_TX_BD_SET_MPDU_DATA_OFFSET( _bd, _off ) (((WDI_TxBdType*)_bd)->mpduDataOffset = _off)
338
339#define WDI_TX_BD_SET_MPDU_HEADER_OFFSET( _bd, _off ) (((WDI_TxBdType*)_bd)->mpduHeaderOffset = _off)
340
341#define WDI_TX_BD_SET_MPDU_HEADER_LEN( _bd, _len ) (((WDI_TxBdType*)_bd)->mpduHeaderLength = _len)
342
Sushant Kaushik33200572015-08-05 16:46:20 +0530343#define WDI_TX_BD_GET_MPDU_HEADER_LEN( _bd ) (((WDI_TxBdType*)_bd)->mpduHeaderLength)
344
345
Jeff Johnson295189b2012-06-20 16:38:30 -0700346#define WDI_TX_BD_SET_MPDU_LEN( _bd, _len ) (((WDI_TxBdType*)_bd)->mpduLength = _len)
347
348#define WDI_RX_BD_GET_BA_OPCODE(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderOpcode)
349
350#define WDI_RX_BD_GET_BA_FI(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderFwdIdx)
351
352#define WDI_RX_BD_GET_BA_SI(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->reorderSlotIdx)
353
354#define WDI_RX_BD_GET_BA_CSN(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->currentPktSeqNo)
355
356#define WDI_RX_BD_GET_BA_ESN(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->expectedPktSeqNo)
357
358#define WDI_RX_BD_GET_RXP_FLAGS(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->rxpFlags)
359
360#define WDI_RX_BD_GET_PMICMD_20TO23(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->pmiCmd4to23[4])
361
362#define WDI_RX_BD_GET_PMICMD_24TO25(_pvBDHeader) (((WDI_RxBdType*)_pvBDHeader)->pmiCmd24to25)
363
Chet Lanctot186b5732013-03-18 10:26:30 -0700364#ifdef WLAN_FEATURE_11W
365#define WDI_RX_BD_GET_RMF( _pvBDHeader ) (((WDI_RxBdType*)_pvBDHeader)->rmf)
366#endif
367
Jeff Johnson295189b2012-06-20 16:38:30 -0700368#define WDI_RX_BD_ASF_SET 1 /*The value of the field when set and pkt is AMSDU*/
369
370#define WDI_RX_BD_FSF_SET 1
371
372#define WDI_RX_BD_LSF_SET 1
373
374#define WDI_RX_BD_AEF_SET 1
375
376
377#define WDI_RX_BD_LLC_PRESENT 0 /*The value of the field when LLC is present*/
378
379#define WDI_RX_BD_FT_DONE 1 /* The value of the field when frame xtl was done*/
380
381/*=========================================================================
382 API Definition
383=========================================================================*/
384
385
386/**
387 @brief WDI_RxBD_GetFrameTypeSubType - Called by the data path
388 to retrieve the type/subtype of the received frame.
389
390 @param pvBDHeader: Void pointer to the RxBD buffer.
391 usFrmCtrl: the frame ctrl of the 802.11 header
392
393 @return A byte which contains both type and subtype info. LSB four bytes
394 (b0 to b3)is subtype and b5-b6 is type info.
395*/
396
397wpt_uint8
398WDI_RxBD_GetFrameTypeSubType
399(
400 void* _pvBDHeader,
401 wpt_uint16 usFrmCtrl
402);
403
404
405/**
406 @brief WDI_FillTxBd - Called by the data path to fill the TX BD
407
408 @param pWDICtx: Context to the WDI
409 ucTypeSubtype: of the frame
410 pDestMacAddr: destination MAC address
411 pTid: pointer to the TID (in/out value in case DAL Ctrl causes
412 a TID downgrade - not done for now)
413 ucDisableFrmXtl: set to 1 if this frame is not to be translated by HW
414 pTxBd: pointer to the TX BD
415 ucTxFlag: can have appropriate bit setting as required
Chet Lanctot4b088622013-05-22 16:09:22 -0700416 ucProtMgmtFrame: for management frames, whether the frame is
417 protected (protect bit is set in FC)
Jeff Johnson295189b2012-06-20 16:38:30 -0700418 uTimestamp: pkt timestamp
419
420
421 @return success or not
422*/
423
424WDI_Status
425WDI_FillTxBd
426(
427 WDI_ControlBlockType* pWDICtx,
428 wpt_uint8 ucTypeSubtype,
429 void* pDestMacAddr,
430 void* pAddr2,
431 wpt_uint8* pTid,
432 wpt_uint8 ucDisableFrmXtl,
433 void* pTxBd,
Chandrasekaran Manishekar7218fa22014-06-26 10:34:25 +0530434 wpt_uint32 ucTxFlag,
Chet Lanctot4b088622013-05-22 16:09:22 -0700435 wpt_uint8 ucProtMgmtFrame,
Jeff Johnson295189b2012-06-20 16:38:30 -0700436 wpt_uint32 uTimeStamp,
Kiet Lam9b11b012013-10-24 11:43:30 +0530437 wpt_uint8 isEapol,
Ganesh Kondabattini10e67352015-03-16 17:41:57 +0530438 wpt_uint8* staIndex,
439 wpt_uint32 txBdToken
Jeff Johnson295189b2012-06-20 16:38:30 -0700440);
441
442/**
443 @brief WDI_SwapRxBd swaps the RX BD.
444
445
446 @param pBd - pointer to the BD (in/out)
447
448 @return None
449*/
450void
451WDI_SwapRxBd
452(
453 wpt_uint8 *pBd
454);
455
456/**
457 @brief WDI_SwapTxBd - Swaps the TX BD
458
459 @param pBd - pointer to the BD (in/out)
460
461 @return none
462*/
463void
464WDI_SwapTxBd
465(
466 wpt_uint8 *pBd
467);
468
469/**
470 @brief WDI_RxAmsduBdFix - fix for HW issue for AMSDU
471
472
473 @param pWDICtx: Context to the WDI
474 pBDHeader - pointer to the BD header
475
476 @return None
477*/
478void
479WDI_RxAmsduBdFix
480(
481 WDI_ControlBlockType* pWDICtx,
482 void* pBDHeader
483);
484
485#ifdef WLAN_PERF
486/**
487 @brief WDI_TxBdFastFwd - evaluates if a frame can be fast
488 forwarded
489
490 @param pWDICtx: Context to the WDI
491 pDestMac: Destination MAC
492 ucTid: packet TID pBDHeader
493 ucUnicastDst: is packet unicast
494 pTxBd: pointer to the BD header
495 usMpduLength: len
496
497 @return 1 - if the frame can be fast fwd-ed ; 0 if not
498*/
499wpt_uint32
500WDI_TxBdFastFwd
501(
502 WDI_ControlBlockType* pWDICtx,
503 wpt_uint8* pDestMac,
504 wpt_uint8 ucTid,
505 wpt_uint8 ucUnicastDst,
506 void* pTxBd,
507 wpt_uint16 usMpduLength);
508#endif /*WLAN_PERF*/
509
510/**
511 @brief WDI_DP_UtilsInit - Intializes the parameters required to
512 interact with the data path
513
514 @param pWDICtx: pointer to the main WDI Ctrl Block
515
516 @return success always
517*/
518WDI_Status
519WDI_DP_UtilsInit
520(
521 WDI_ControlBlockType* pWDICtx
522);
523
524/**
525 @brief WDI_DP_UtilsExit - Clears the parameters required to
526 interact with the data path
527
528 @param pWDICtx: pointer to the main WDI Ctrl Block
529
530 @return success always
531*/
532WDI_Status
533WDI_DP_UtilsExit
534(
535 WDI_ControlBlockType* pWDICtx
536);
537
538#endif /*WLAN_QCT_WDI_DP_H*/
539