blob: 83d0267f8df5e66dbf39a2bac6903868c70d6e8f [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Agrawal Ashisha8e8a722016-10-18 19:07:45 +05302 * Copyright (c) 2011-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.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam1ed83fc2014-02-19 01:15:45 -080021
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080022/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -080023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28
Jeff Johnson295189b2012-06-20 16:38:30 -070029#ifndef _HALMSGAPI_H_
30#define _HALMSGAPI_H_
31
32#include "halTypes.h"
33#include "sirApi.h"
34#include "sirParams.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070035
36#define HAL_NUM_BSSID 2
37/* operMode in ADD BSS message */
38#define BSS_OPERATIONAL_MODE_AP 0
39#define BSS_OPERATIONAL_MODE_STA 1
40
41/* STA entry type in add sta message */
42#define STA_ENTRY_SELF 0
43#define STA_ENTRY_OTHER 1
44#define STA_ENTRY_BSSID 2
45#define STA_ENTRY_BCAST 3 //Special station id for transmitting broadcast frames.
46#define STA_ENTRY_PEER STA_ENTRY_OTHER
Mohit Khanna698ba2a2012-12-04 15:08:18 -080047#ifdef FEATURE_WLAN_TDLS
48#define STA_ENTRY_TDLS_PEER 4
49#endif /* FEATURE_WLAN_TDLS */
Jeff Johnson295189b2012-06-20 16:38:30 -070050
51#define STA_ENTRY_TRANSMITTER STA_ENTRY_SELF
52#define STA_ENTRY_RECEIVER STA_ENTRY_OTHER
53
54#define HAL_STA_INVALID_IDX 0xFF
55#define HAL_BSS_INVALID_IDX 0xFF
56
57#define HAL_BSSPERSONA_INVALID_IDX 0xFF
58
59#define WLAN_BSS_PROTECTION_ON 1
60#define WLAN_BSS_PROTECTION_OFF 0
61
62/* Station index allocation after Broadcast station */
63#define HAL_MAX_NUM_BCAST_STATIONS 1
64#define HAL_MIN_BCAST_STA_INDEX ((HAL_MAX_NUM_BCAST_STATIONS>0)?0:HAL_STA_INVALID_IDX)
65#define HAL_MAX_BCAST_STA_INDEX ((HAL_MAX_NUM_BCAST_STATIONS>0)?(HAL_MAX_NUM_BCAST_STATIONS - 1):HAL_STA_INVALID_IDX)
66#define HAL_MIN_STA_INDEX ((HAL_MAX_BCAST_STA_INDEX!=HAL_STA_INVALID_IDX)?(HAL_MAX_BCAST_STA_INDEX+1):0)
67#define HAL_MAX_STA_INDEX (HAL_NUM_STA)
68
69/* Compilation flags for enabling disabling selfSta and bcastSta per BSS */
70#define HAL_SELF_STA_PER_BSS 1
71#define HAL_BCAST_STA_PER_BSS 1
72
73//invalid channel id.
74#define HAL_INVALID_CHANNEL_ID 0
75
Agrawal Ashisha8e8a722016-10-18 19:07:45 +053076#ifdef SAP_AUTH_OFFLOAD
77#define MAX_CONNECT_REQ_LENGTH 512
78#endif
79
Jeff Johnson295189b2012-06-20 16:38:30 -070080/* BSS index used when no BSS is associated with the station. For example,
81 * driver creates only one self station without valid BSS while scanning.
82 * Then this index is used to tell softmac that BSS is not valid.
83 */
84#define BSSIDX_INVALID 254
85
86#define HAL_IS_VALID_BSS_INDEX(pMac, bssIdx) ((BSSIDX_INVALID != (bssIdx)) && ((bssIdx) < (pMac)->hal.memMap.maxBssids))
87
88// Beacon structure
89typedef __ani_attr_pre_packed struct sAniBeaconStruct
90{
91 tANI_U32 beaconLength; // Indicates the beacon length
92 tSirMacMgmtHdr macHdr; // MAC Header for beacon
93 // Beacon body follows here
94} __ani_attr_packed tAniBeaconStruct, *tpAniBeaconStruct;
95
96// probeRsp template structure
97typedef __ani_attr_pre_packed struct sAniProbeRspStruct
98{
99 tSirMacMgmtHdr macHdr; // MAC Header for probeRsp
100 // probeRsp body follows here
101} __ani_attr_packed tAniProbeRspStruct, *tpAniProbeRspStruct;
102
103
104// Per TC parameters
105typedef struct
106{
107 tANI_U8 disableTx;
108 tANI_U8 disableRx;
109 tANI_U8 rxCompBA; // 1: expect to see frames with compressed BA coming from this peer MAC
110 tANI_U8 rxBApolicy; // immediate ACK or delayed ACK for frames from this peer MAC
111 tANI_U8 txCompBA; // 1: using compressed BA to send to this peer MAC
112 tANI_U8 txBApolicy; // immediate ACK or delayed ACK for frames to this peer MAC
113 tANI_U8 rxUseBA;
114 tANI_U8 txUseBA;
115 tANI_U8 rxBufferSize;
116 tANI_U8 txBufferSize;
117 tANI_U16 txBAWaitTimeout;
118 tANI_U16 rxBAWaitTimeout;
119} tTCParams;
120
121
Jeff Johnson295189b2012-06-20 16:38:30 -0700122typedef struct
123{
124 // First two fields bssid and assocId are used to find staid for sta.
125 // BSSID of STA
126 tSirMacAddr bssId;
127
128 // ASSOC ID, as assigned by PE/LIM. This needs to be assigned
129 // on a per BSS basis
130 tANI_U16 assocId;
131
132 // Field to indicate if this is sta entry for itself STA adding entry for itself
133 // or remote (AP adding STA after successful association.
134 // This may or may not be required in production driver.
135 tANI_U8 staType; // 0 - Self, 1 other/remote, 2 - bssid
136
137 tANI_U8 shortPreambleSupported;
138
139 // MAC Address of STA
140 tSirMacAddr staMac;
141
142 // Listen interval.
143 tANI_U16 listenInterval;
144
145 // Support for 11e/WMM
146 tANI_U8 wmmEnabled;
147
148 //
149 // U-APSD Flags: 1b per AC
150 // Encoded as follows:
151 // b7 b6 b5 b4 b3 b2 b1 b0
152 // X X X X BE BK VI VO
153 //
154 tANI_U8 uAPSD;
155
156 // Max SP Length
157 tANI_U8 maxSPLen;
158
159 // 11n HT capable STA
160 tANI_U8 htCapable;
161
162 // 11n Green Field preamble support
163 // 0 - Not supported, 1 - Supported
164 // Add it to RA related fields of sta entry in HAL
165 tANI_U8 greenFieldCapable;
166
167 // TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
168 tANI_U8 txChannelWidthSet;
169
170 // MIMO Power Save
171 tSirMacHTMIMOPowerSaveState mimoPS;
172
173 // RIFS mode: 0 - NA, 1 - Allowed
174 tANI_U8 rifsMode;
175
176 // L-SIG TXOP Protection mechanism
177 // 0 - No Support, 1 - Supported
178 // SG - there is global field.
179 tANI_U8 lsigTxopProtection;
180
181 // delayed ba support
182 tANI_U8 delBASupport;
183 // delayed ba support... TBD
184
185#ifdef ANI_DVT_DEBUG
186 //These 6 fields are used only by DVT driver to pass selected
187 //rates to Softmac through HAL.
188 tANI_U8 primaryRateIndex, secondaryRateIndex, tertiaryRateIndex;
189 tANI_U8 primaryRateIndex40, secondaryRateIndex40, tertiaryRateIndex40;
190#endif
191
192 // FIXME
193 //Add these fields to message
194 tANI_U8 us32MaxAmpduDuration; //in units of 32 us.
195 tANI_U8 maxAmpduSize; // 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k
196 tANI_U8 maxAmpduDensity; // 3 : 0~7 : 2^(11nAMPDUdensity -4)
197 tANI_U8 maxAmsduSize; // 1 : 3839 bytes, 0 : 7935 bytes
198
199 // TC parameters
200 tTCParams staTCParams[STACFG_MAX_TC];
201
202 // Compression and Concat parameters for DPU
203 tANI_U16 deCompEnable;
204 tANI_U16 compEnable;
205 tANI_U16 concatSeqRmv;
206 tANI_U16 concatSeqIns;
207
208
209 //11n Parameters
210
211 /**
212 HT STA should set it to 1 if it is enabled in BSS
213 HT STA should set it to 0 if AP does not support it.
214 This indication is sent to HAL and HAL uses this flag
215 to pickup up appropriate 40Mhz rates.
216 */
217 tANI_U8 fDsssCckMode40Mhz;
218
219
220 //short GI support for 40Mhz packets
221 tANI_U8 fShortGI40Mhz;
222
223 //short GI support for 20Mhz packets
224 tANI_U8 fShortGI20Mhz;
225
226
227
228 /*
229 * All the legacy and airgo supported rates.
230 * These rates are the intersection of peer and self capabilities.
231 */
232 tSirSupportedRates supportedRates;
233
234
235
236
237
238 /*
239 * Following parameters are for returning status and station index from HAL to PE
240 * via response message. HAL does not read them.
241 */
242 // The return status of SIR_HAL_ADD_STA_REQ is reported here
243 eHalStatus status;
244 // Station index; valid only when 'status' field value is eHAL_STATUS_SUCCESS
245 tANI_U8 staIdx;
246
247 //BSSID of BSS to which the station is associated.
248 //This should be filled back in by HAL, and sent back to LIM as part of
249 //the response message, so LIM can cache it in the station entry of hash table.
250 //When station is deleted, LIM will make use of this bssIdx to delete
251 //BSS from hal tables and from softmac.
252 tANI_U8 bssIdx;
253
254 /* this requires change in testDbg. I will change it later after coordinating with Diag team.
255 tANI_U8 fFwdTrigerSOSPtoHost; //trigger to start service period
256 tANI_U8 fFwdTrigerEOSPtoHost; //trigger to end service period
257 */
258
259 //HAL should update the existing STA entry, if this flag is set.
260 //PE will set this flag in case of reassoc, where we want to resue the
261 //the old staID and still return success.
262 tANI_U8 updateSta;
263 //A flag to indicate to HAL if the response message is required.
264 tANI_U8 respReqd;
265
266 /* Robust Management Frame (RMF) enabled/disabled */
267 tANI_U8 rmfEnabled;
268
269 /* The unicast encryption type in the association */
270 tANI_U32 encryptType;
271
272 /*The DPU signatures will be sent eventually to TL to help it determine the
273 association to which a packet belongs to*/
274 /*Unicast DPU index*/
275 tANI_U8 ucUcastSig;
276
277 /*Broadcast DPU index*/
278 tANI_U8 ucBcastSig;
279
280 tANI_U8 sessionId; //PE session id for PE<->HAL interface
281 // HAL just sends back what it receives.
282
Jeff Johnson295189b2012-06-20 16:38:30 -0700283 /*if this is a P2P Capable Sta*/
284 tANI_U8 p2pCapableSta;
Abhishek Singhf08a82b2014-10-07 11:00:42 +0530285 tANI_U32 currentOperChan;
Jeff Johnsone7245742012-09-05 17:12:55 -0700286#ifdef WLAN_FEATURE_11AC
287 tANI_U8 vhtCapable;
288 tANI_U8 vhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -0800289 tANI_U8 vhtTxBFCapable;
Abhishek Singh6927fa02014-06-27 17:19:55 +0530290 tANI_U8 vhtTxMUBformeeCapable;
Jeff Johnsone7245742012-09-05 17:12:55 -0700291#endif
292
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -0800293 tANI_U8 htLdpcCapable;
294 tANI_U8 vhtLdpcCapable;
Agrawal Ashisha8e8a722016-10-18 19:07:45 +0530295#ifdef SAP_AUTH_OFFLOAD
296 tANI_U8 dpuIndex;
297 tANI_U8 bcastDpuIndex;
298 tANI_U8 bcastMgmtDpuIdx;
299 tANI_U8 ucMgmtSig;
300#endif
301
Jeff Johnson295189b2012-06-20 16:38:30 -0700302} tAddStaParams, *tpAddStaParams;
303
304
305typedef struct
306{
307 // Station index
308 tANI_U16 staIdx;
309 tANI_U16 templIdx;
310 tANI_U8 rateIdx;
311
312 // The return status of SIR_HAL_UPDATE_STARATEINFO_REQ is reported here
313 eHalStatus status;
314
315 //A flag to indicate to HAL if the response message is required.
316 tANI_U8 respReqd;
317
318} tUpdateTxCmdTemplParams, *tpUpdateTxCmdTemplParams;
319//FIXME: change the structure name
320
321
322
323
324
325
326
327
328typedef struct
329{
330 // index of STA to delete - this should be the same as the index returned
331 // as part of the AddSta
332 tANI_U16 staIdx;
333 tANI_U16 assocId;
334 eHalStatus status; // Status of SIR_HAL_DELETE_STA_REQ is reported here
335 tANI_U8 respReqd;
336 tANI_U8 sessionId; // PE session id for PE<->HAL interface
337 // PE session id now added to all HAL<->PE transacations
338 // HAL sends it back unmodified.
339} tDeleteStaParams, * tpDeleteStaParams;
340
341/*
342 * This is used by PE to configure the key information on a given station.
343 * When the secType is WEP40 or WEP104, the defWEPIdx is used to locate
344 * a preconfigured key from a BSS the station assoicated with; otherwise
345 * a new key descriptor is created based on the key field.
346 */
347typedef struct
348{
349 tANI_U16 staIdx;
350 tAniEdType encType; // Encryption/Decryption type
351 tAniWepType wepType; // valid only for WEP
352 tANI_U8 defWEPIdx; // Default WEP key, valid only for static WEP, must between 0 and 3
Jeff Johnson295189b2012-06-20 16:38:30 -0700353 tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS]; // valid only for non-static WEP encyrptions
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 tANI_U8 singleTidRc; // 1=Single TID based Replay Count, 0=Per TID based RC
355 /*
356 * Following parameter is for returning status
357 * via response message. HAL does not read them.
358 */
359 eHalStatus status; // status of SIR_HAL_SET_STAKEY_REQ is reported here
360 tANI_U8 sessionId; // PE session id for PE<->HAL interface
361
362 // PE session id now added to all HAL<->PE transacations
363 // HAL sends back response with no modification
364} tSetStaKeyParams, *tpSetStaKeyParams;
365
366//
367// Mesg header is used from tSirMsgQ
368// Mesg Type = SIR_HAL_ADD_BSS_REQ
369//
370typedef struct
371{
372 // MAC Address/BSSID
373 tSirMacAddr bssId;
374#ifdef HAL_SELF_STA_PER_BSS
375 // Self Mac Address
376 tSirMacAddr selfMacAddr;
377#endif
378 // BSS type
379 // FIXME - Is this reqd? Do we want to isolate BSS/IBSS parameters?
380 tSirBssType bssType;
381
382 // AP - 0; STA - 1 ;
383 tANI_U8 operMode;
384
385 // Network type - b/g/a/MixedMode/GreenField/Legacy
386 // TODO - This enum to be updated for HT support
387 // Review FIXME - Why is this needed?
388 tSirNwType nwType;
389
390 tANI_U8 shortSlotTimeSupported;
391 tANI_U8 llaCoexist;
392 tANI_U8 llbCoexist;
393 tANI_U8 llgCoexist;
394 tANI_U8 ht20Coexist;
395 tANI_U8 llnNonGFCoexist;
396 tANI_U8 fLsigTXOPProtectionFullSupport;
397 tANI_U8 fRIFSMode;
398
399 // Beacon Interval
400 tSirMacBeaconInterval beaconInterval;
401
402 // DTIM period
403 tANI_U8 dtimPeriod;
404
405 // CF Param Set
406 // Review FIXME - Does HAL need this?
407 tSirMacCfParamSet cfParamSet;
408
409 // MAC Rate Set
410 // Review FIXME - Does HAL need this?
411 tSirMacRateSet rateSet;
412
413 // 802.11n related HT parameters that are dynamic
414
415 // Enable/Disable HT capabilities
416 tANI_U8 htCapable;
417
418 // Enable/Disable OBSS protection
419 tANI_U8 obssProtEnabled;
420
421 // RMF enabled/disabled
422 tANI_U8 rmfEnabled;
423
424 // HT Operating Mode
425 // Review FIXME - Does HAL need this?
426 tSirMacHTOperatingMode htOperMode;
427
428 // Dual CTS Protection: 0 - Unused, 1 - Used
429 tANI_U8 dualCTSProtection;
430
431 // TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz
432 tANI_U8 txChannelWidthSet;
433
434 // Current Operating Channel
435 tANI_U8 currentOperChannel;
436
437 // Current Extension Channel, if applicable
438 tANI_U8 currentExtChannel;
439
440 // Add a STA entry for "itself" -
441 // On AP - Add the AP itself in an "STA context"
442 // On STA - Add the AP to which this STA is joining in an "STA context"
443 tAddStaParams staContext;
444
445 /*
446 * Following parameters are for returning status and station index from HAL to PE
447 * via response message. HAL does not read them.
448 */
449 // The return status of SIR_HAL_ADD_BSS_REQ is reported here
450 eHalStatus status;
451 // BSS index allocated by HAL.
452 // valid only when 'status' field is eHAL_STATUS_SUCCESS
453 tANI_U16 bssIdx;
454
455 // Broadcast DPU descriptor index allocated by HAL and used for broadcast/multicast packets.
456 // valid only when 'status' field is eHAL_STATUS_SUCCESS
457 tANI_U8 bcastDpuDescIndx;
458
459 // DPU signature to be used for broadcast/multicast packets
460 // valid only when 'status' field is eHAL_STATUS_SUCCESS
461 tANI_U8 bcastDpuSignature;
462
463 // DPU descriptor index allocated by HAL, used for bcast/mcast management packets
464 tANI_U8 mgmtDpuDescIndx;
465
466 // DPU signature to be used for bcast/mcast management packets
467 tANI_U8 mgmtDpuSignature;
468
469 //HAL should update the existing BSS entry, if this flag is set.
470 //PE will set this flag in case of reassoc, where we want to resue the
471 //the old bssID and still return success.
472 tANI_U8 updateBss;
473
474 // Add BSSID info for rxp filter in IBSS mode
475 tSirMacSSid ssId;
476
477 //HAL will send the response message to LIM only when this flag is set.
478 //LIM will set this flag, whereas DVT will not set this flag.
479 tANI_U8 respReqd;
480 tANI_U8 sessionId; // PE session id for PE<->HAL interface
481 // PE session id now added to all HAL<->PE transacations
482 // HAL Sends the sessionId unmodified.
483
484#if defined WLAN_FEATURE_VOWIFI
485 tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
486 tPowerdBm maxTxPower; //max power to be used after applying the power constraint, if any
487#endif
488
489#if defined WLAN_FEATURE_VOWIFI_11R
490 tANI_U8 extSetStaKeyParamValid; //Ext Bss Config Msg if set
491 tSetStaKeyParams extSetStaKeyParam; //SetStaKeyParams for ext bss msg
492#endif
493
494 tANI_U8 ucMaxProbeRespRetryLimit; //probe Response Max retries
495 tANI_U8 bHiddenSSIDEn; //To Enable Hidden ssid.
496 tANI_U8 bProxyProbeRespEn; //To Enable Disable FW Proxy Probe Resp
497 tANI_U8 halPersona; //Persona for the BSS can be STA,AP,GO,CLIENT value same as tVOS_CON_MODE
498
499 //Spectrum Management Capability, 1 - Enabled, 0 - Disabled.
500 tANI_U8 bSpectrumMgtEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -0700501#ifdef WLAN_FEATURE_11AC
502 tANI_U8 vhtCapable;
503 tANI_U8 vhtTxChannelWidthSet;
504#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700505} tAddBssParams, * tpAddBssParams;
506
507typedef struct
508{
509 tANI_U8 bssIdx;
510 // The return status of SIR_HAL_DELETE_BSS_REQ is reported here
511 eHalStatus status;
512 //HAL will send the response message to LIM only when this flag is set.
513 //LIM will set this flag, whereas DVT will not set this flag.
514 tANI_U8 respReqd;
515 tANI_U8 sessionId; // PE session id for PE<->HAL interface
516 // HAL sends it back unmodified.
517 tSirMacAddr bssid; // Will be removed for PE-HAL integration
518} tDeleteBssParams, * tpDeleteBssParams;
519
520//
521// UAPSD AC mask: 1b per AC
522// LSB 4 bits for delivery enabled setting. msb 4 bits for trigger enabled settings.
523// Encoded as follows:
524// b7 b6 b5 b4 b3 b2 b1 b0
525// BE BK VI VO BE BK VI VO
526
527typedef struct
528{
529 tANI_U8 staIdx;
530 tANI_U8 uapsdACMask;
531 tANI_U8 maxSpLen;
532} tUpdateUapsdParams, * tpUpdateUapsdParams;
533
534typedef struct sSirScanEntry
535{
536 tANI_U8 bssIdx[HAL_NUM_BSSID];
537 tANI_U8 activeBSScnt;
538}tSirScanEntry, *ptSirScanEntry;
539
540//
541// Mesg header is used from tSirMsgQ
542// Mesg Type = SIR_HAL_INIT_SCAN_REQ
543//
544typedef struct {
545
546 eHalSysMode scanMode;
547
548 tSirMacAddr bssid;
549
550 tANI_U8 notifyBss;
551
Jeff Johnson295189b2012-06-20 16:38:30 -0700552 tANI_U8 useNoA;
Jeff Johnson295189b2012-06-20 16:38:30 -0700553
554 // If this flag is set HAL notifies PE when SMAC returns status.
555 tANI_U8 notifyHost;
556
557 tANI_U8 frameLength;
558 tANI_U8 frameType; // Data NULL or CTS to self
559
560 // Indicates the scan duration (in ms)
561 tANI_U16 scanDuration;
562
563 // For creation of CTS-to-Self and Data-NULL MAC packets
564 tSirMacMgmtHdr macMgmtHdr;
565
566 tSirScanEntry scanEntry;
567
568 // when this flag is set, HAL should check for link traffic prior to scan
569 tSirLinkTrafficCheck checkLinkTraffic;
570
571 /*
572 * Following parameters are for returning status and station index from HAL to PE
573 * via response message. HAL does not read them.
574 */
575 // The return status of SIR_HAL_INIT_SCAN_REQ is reported here
576 eHalStatus status;
577
578} tInitScanParams, * tpInitScanParams;
579
Jeff Johnson295189b2012-06-20 16:38:30 -0700580typedef enum eDelStaReasonCode{
581 HAL_DEL_STA_REASON_CODE_KEEP_ALIVE = 0x1,
582 HAL_DEL_STA_REASON_CODE_TIM_BASED = 0x2,
583 HAL_DEL_STA_REASON_CODE_RA_BASED = 0x3,
584 HAL_DEL_STA_REASON_CODE_UNKNOWN_A2 = 0x4
585}tDelStaReasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700586
587//
588// Msg header is used from tSirMsgQ
589// Msg Type = SIR_LIM_DELETE_STA_CONTEXT_IND
590//
591typedef struct {
592 tANI_U16 assocId;
593 tANI_U16 staId;
594 tSirMacAddr bssId; // TO SUPPORT BT-AMP
595 // HAL copies bssid from the sta table.
Jeff Johnson295189b2012-06-20 16:38:30 -0700596 tSirMacAddr addr2; //
597 tANI_U16 reasonCode; // To unify the keepalive / unknown A2 / tim-based disa
Jeff Johnson295189b2012-06-20 16:38:30 -0700598} tDeleteStaContext, * tpDeleteStaContext;
599
600
601//
602// Mesg header is used from tSirMsgQ
603// Mesg Type = SIR_HAL_START_SCAN_REQ
604// FIXME - Can we just use tSirMsgQ directly, instead of using this structure?
605//
606typedef struct {
607
608 // Indicates the current scan channel
609 tANI_U8 scanChannel;
610
611 /*
612 * Following parameters are for returning status and station index from HAL to PE
613 * via response message. HAL does not read them.
614 */
615 // The return status of SIR_HAL_START_SCAN_REQ is reported here
616 eHalStatus status;
617
618#if defined WLAN_FEATURE_VOWIFI
619 tANI_U32 startTSF[2];
620 tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
621#endif
622} tStartScanParams, * tpStartScanParams;
623
624//
625// Mesg header is used from tSirMsgQ
626// Mesg Type = SIR_HAL_END_SCAN_REQ
627// FIXME - Can we just use tSirMsgQ directly, instead of using this structure?
628//
629typedef struct {
630
631 // Indicates the current scan channel
632 tANI_U8 scanChannel;
633
634 /*
635 * Following parameters are for returning status and station index from HAL to PE
636 * via response message. HAL does not read them.
637 */
638 // The return status of SIR_HAL_END_SCAN_REQ is reported here
639 eHalStatus status;
640
641} tEndScanParams, * tpEndScanParams;
642
643//
644// Mesg header is used from tSirMsgQ
645// Mesg Type = SIR_HAL_FINISH_SCAN_REQ
646//
647typedef struct {
648
649 // Identifies the operational state of the AP/STA.
650 // In case of the STA, only if the operState is non-zero will the rest of
651 // the parameters that follow be decoded
652 // In case of the AP, all parameters are valid
653 //
654 // 0 - Idle state, 1 - Link Established
655
656 eHalSysMode scanMode;
657
658 tSirMacAddr bssid;
659
660 // Current operating channel
661 tANI_U8 currentOperChannel;
662
663 // If 20/40 MHz is operational, this will indicate the 40 MHz extension
664 // channel in combination with the control channel
665 ePhyChanBondState cbState;
666
667 // For an STA, indicates if a Data NULL frame needs to be sent
668 // to the AP with FrameControl.PwrMgmt bit set to 0
669 tANI_U8 notifyBss;
670
671 tANI_U8 notifyHost;
672
673 tANI_U8 frameLength;
674 tANI_U8 frameType; // Data NULL or CTS to self
675
676 // For creation of CTS-to-Self and Data-NULL MAC packets
677 tSirMacMgmtHdr macMgmtHdr;
678
679 tSirScanEntry scanEntry;
680
681 /*
682 * Following parameters are for returning status and station index from HAL to PE
683 * via response message. HAL does not read them.
684 */
685 // The return status of SIR_HAL_FINISH_SCAN_REQ is reported here
686 eHalStatus status;
687
688} tFinishScanParams, * tpFinishScanParams;
689
Jeff Johnsone7245742012-09-05 17:12:55 -0700690#ifdef FEATURE_OEM_DATA_SUPPORT
691
692#ifndef OEM_DATA_REQ_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800693#define OEM_DATA_REQ_SIZE 134
Jeff Johnsone7245742012-09-05 17:12:55 -0700694#endif
695#ifndef OEM_DATA_RSP_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800696#define OEM_DATA_RSP_SIZE 1968
Jeff Johnsone7245742012-09-05 17:12:55 -0700697#endif
698
699typedef struct
700{
701 tSirMacAddr selfMacAddr;
702 eHalStatus status;
703 tANI_U8 oemDataReq[OEM_DATA_REQ_SIZE];
704} tStartOemDataReq, *tpStartOemDataReq;
705
706typedef struct
707{
708 tANI_U8 oemDataRsp[OEM_DATA_RSP_SIZE];
709} tStartOemDataRsp, *tpStartOemDataRsp;
710#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700711
712typedef struct sBeaconGenStaInfo {
713 tANI_U16 assocId;
714 tANI_U32 staTxAckCnt;
715}tBeaconGenStaInfo, *tpBeaconGenStaInfo;
716//
717// Mesg header is used from tSirMsgQ
718// Mesg Type = SIR_LIM_BEACON_GEN_IND
719//
720
721typedef struct sBeaconGenParams {
722 // Identifies the BSSID for which it is time to generate a beacon
723 tANI_U8 bssIdx;
724 tSirMacAddr bssId;
725#ifdef FIXME_VOLANS
726 tANI_U8 numOfSta; /* Number of stations in power save, who have data pending*/
727 tANI_U8 numOfStaWithoutData; /* Number of stations in power save, who don't have any data pending*/
728 tANI_U8 fBroadcastTrafficPending ;
729 tANI_U8 dtimCount;
730#endif
731 tANI_U8 rsvd[3]; /** Align the Structure to 4 bytes as unalligned access will happen if
732 the staInfo is being Accessed */
733/** NOTE: tBeaconGenStaInfo staInfo[xx]; Depending on the Number of STA in PS, Every time
734 this array is being allocated and piled up at the End*/
735} tBeaconGenParams, * tpBeaconGenParams;
736
737typedef struct {
738 tSirMacAddr bssId;
739 tANI_U8 *beacon; // Beacon data.
740 tANI_U32 beaconLength; //length of the template.
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 tANI_U32 timIeOffset; //TIM IE offset from the beginning of the template.
Jeff Johnson295189b2012-06-20 16:38:30 -0700742 tANI_U16 p2pIeOffset; //P2P IE offset from the begining of the template
Jeff Johnson295189b2012-06-20 16:38:30 -0700743} tSendbeaconParams, * tpSendbeaconParams;
744
Jeff Johnson295189b2012-06-20 16:38:30 -0700745typedef struct sSendProbeRespParams {
746 tSirMacAddr bssId;
747 tANI_U8 *pProbeRespTemplate;
748 tANI_U32 probeRespTemplateLen;
749 tANI_U32 ucProxyProbeReqValidIEBmap[8];
750} tSendProbeRespParams, * tpSendProbeRespParams;
Jeff Johnson295189b2012-06-20 16:38:30 -0700751
752/*
753 * This is used by PE to create a set of WEP keys for a given BSS.
754 */
755typedef struct
756{
757 tANI_U8 bssIdx;
758 tAniEdType encType;
759 tANI_U8 numKeys;
760 tSirKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS];
761 tANI_U8 singleTidRc; // 1=Single TID based Replay Count, 0=Per TID based RC
762 /*
763 * Following parameter is for returning status
764 * via response message. HAL does not read them.
765 */
766 eHalStatus status; // status of SIR_HAL_SET_BSSKEY_REQ is reported here
767 tANI_U8 sessionId; // PE session id for PE<->HAL interface
768 // HAL sends this unmodified in the response
769} tSetBssKeyParams, *tpSetBssKeyParams;
770
771/*
772 * This is used by PE to Remove the key information on a given station.
773 */
774typedef struct
775{
776 tANI_U16 staIdx;
777 tAniEdType encType; // Encryption/Decryption type
778 tANI_U8 keyId;
779 tANI_BOOLEAN unicast;
780 /*
781 * Following parameter is for returning status
782 * via response message. HAL does not read them.
783 */
784 eHalStatus status; // return status of SIR_HAL_REMOVE_STAKEY_REQ
785 tANI_U8 sessionId; // PE session id for PE<->HAL interface
786 // HAL Sends back the PE session
787 // id unmodified
788} tRemoveStaKeyParams, *tpRemoveStaKeyParams;
789
790/*
791 * This is used by PE to remove keys for a given BSS.
792 */
793typedef struct
794{
795 tANI_U8 bssIdx;
796 tAniEdType encType;
797 tANI_U8 keyId;
798 tANI_U8 wepType;
799 /*
800 * Following parameter is for returning status
801 * via response message. HAL does not read them.
802 */
803 eHalStatus status; // return status of SIR_HAL_REMOVE_BSSKEY_REQ
804 tANI_U8 sessionId; // PE session id for PE<->HAL interface
805 // HAL Sends back the PE session
806 // id unmodified
807} tRemoveBssKeyParams, *tpRemoveBssKeyParams;
808
809typedef struct
810{
811 // index of STA to get the statistics from
812 tANI_U16 staIdx;
813 tANI_U8 encMode;
814 // The return status of SIR_HAL_DPU_STATS_REQ is reported here
815 eHalStatus status;
816 // The return statistics
817 tANI_U32 sendBlocks;
818 tANI_U32 recvBlocks;
819 tANI_U32 replays;
820 tANI_U8 micErrorCnt;
821 tANI_U32 protExclCnt;
822 tANI_U16 formatErrCnt;
823 tANI_U16 unDecryptableCnt;
824 tANI_U32 decryptErrCnt;
825 tANI_U32 decryptOkCnt;
826
827} tDpuStatsParams, * tpDpuStatsParams;
828
829
830/*
831 * Get the DPU signature based on a given staId
832 */
833typedef struct
834{
835 tANI_U16 staIdx;
836 /*
837 * Following parameter is for returning status
838 * via response message. HAL does not read them.
839 */
840 // The return status of SIR_HAL_SET_BSSKEY_REQ is reported here
841 eHalStatus status;
842 tANI_U8 dpuDescIndx;
843 tANI_U8 dpuSignature;
844} tGetDpuParams, *tpGetDpuParams;
845
846
847
848//HAL MSG: SIR_HAL_UPDATE_BEACON_IND
849typedef struct
850{
851
852 tANI_U8 bssIdx;
853
854 //shortPreamble mode. HAL should update all the STA rates when it
855 //receives this message
856 tANI_U8 fShortPreamble;
857 //short Slot time.
858 tANI_U8 fShortSlotTime;
859 //Beacon Interval
860 tANI_U16 beaconInterval;
861 //Protection related
862 tANI_U8 llaCoexist;
863 tANI_U8 llbCoexist;
864 tANI_U8 llgCoexist;
865 tANI_U8 ht20MhzCoexist;
866 tANI_U8 llnNonGFCoexist;
867 tANI_U8 fLsigTXOPProtectionFullSupport;
868 tANI_U8 fRIFSMode;
869
870 tANI_U16 paramChangeBitmap;
871}tUpdateBeaconParams, *tpUpdateBeaconParams;
872
Mohit Khanna4a70d262012-09-11 16:30:12 -0700873typedef struct
874{
875 tANI_U16 opMode;
876 tANI_U16 staId;
877}tUpdateVHTOpMode, *tpUpdateVHTOpMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700878
879//HAL MSG: SIR_HAL_UPDATE_CF_IND
880typedef struct
881{
882
883 tANI_U8 bssIdx;
884
885 /*
886 * cfpCount indicates how many DTIMs (including the current frame) appear before the next CFP start.
887 * A CFPCount of 0 indicates that the current DTIM marks the start of the CFP.
888 */
889 tANI_U8 cfpCount;
890
891 /* cfpPeriod indicates the number of DTIM intervals between the start of CFPs. */
892 tANI_U8 cfpPeriod;
893
894}tUpdateCFParams, *tpUpdateCFParams;
895
896
897
898//HAL MSG: SIR_HAL_UPDATE_DTIM_IND
899//This message not required, as Softmac is supposed to read these values from the beacon.
900//PE should not look at TIM element
901
902/*
903typedef struct
904{
905 tANI_U8 bssIdx;
906
907
908 //The DTIM Count field indicates how many beacons (including the current frame) appear before the next
909 // DTIM. A DTIM Count of 0 indicates that the current TIM is a DTIM.
910 //
911 tANI_U8 dtimCount;
912
913
914 // The DTIM Period field indicates the number of Beacon intervals between successive DTIMs. If all TIMs are
915 // DTIMs, the DTIM Period field has the value 1. The DTIM Period value 0 is reserved.
916 //
917 tANI_U8 dtimPeriod;
918
919}tUpdateDtimParams, *tpUpdateDtimParams;
920*/
921
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800922typedef enum
923{
924 eHAL_CHANNEL_SWITCH_SOURCE_SCAN,
925 eHAL_CHANNEL_SWITCH_SOURCE_LISTEN,
926 eHAL_CHANNEL_SWITCH_SOURCE_MCC,
927 eHAL_CHANNEL_SWITCH_SOURCE_CSA,
928 eHAL_CHANNEL_SWITCH_SOURCE_MAX = 0x7fffffff
929} eHalChanSwitchSource;
930
Jeff Johnson295189b2012-06-20 16:38:30 -0700931
932//HAL MSG: SIR_HAL_CHNL_SWITCH_REQ
933typedef struct
934{
935 tANI_U8 channelNumber;
936#ifndef WLAN_FEATURE_VOWIFI
937 tANI_U8 localPowerConstraint;
938#endif /* WLAN_FEATURE_VOWIFI */
Jeff Johnsone7245742012-09-05 17:12:55 -0700939 ePhyChanBondState secondaryChannelOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -0700940 tANI_U8 peSessionId;
941#if defined WLAN_FEATURE_VOWIFI
942 tPowerdBm txMgmtPower; //HAL fills in the tx power used for mgmt frames in this field.
943 tPowerdBm maxTxPower;
944 tSirMacAddr selfStaMacAddr;
945 //the request has power constraints, this should be applied only to that session
946#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800947 eHalChanSwitchSource channelSwitchSrc;
948
Jeff Johnson295189b2012-06-20 16:38:30 -0700949 /* VO Wifi comment: BSSID is needed to identify which session issued this request. As the
950 request has power constraints, this should be applied only to that session */
951 /* V IMP: Keep bssId field at the end of this msg. It is used to mantain backward compatbility
952 * by way of ignoring if using new host/old FW or old host/new FW since it is at the end of this struct
953 */
954 tSirMacAddr bssId;
955
956 eHalStatus status;
957
958}tSwitchChannelParams, *tpSwitchChannelParams;
959
960typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam );
961
962typedef struct sLinkStateParams
963{
964 // SIR_HAL_SET_LINK_STATE
965 tSirMacAddr bssid;
966 tSirMacAddr selfMacAddr;
967 tSirLinkState state;
968 tpSetLinkStateCallback callback;
969 void *callbackArg;
970#ifdef WLAN_FEATURE_VOWIFI_11R
971 int ft;
972 void * session;
973#endif
974} tLinkStateParams, * tpLinkStateParams;
975
976
977typedef struct
978{
979 tANI_U16 staIdx;
980 tANI_U16 tspecIdx; //TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
981 tSirMacTspecIE tspec;
982 eHalStatus status;
983 tANI_U8 sessionId; //PE session id for PE<->HAL interface
984} tAddTsParams, *tpAddTsParams;
985
986typedef struct
987{
988 tANI_U16 staIdx;
989 tANI_U16 tspecIdx; //TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS
990 tSirMacAddr bssId; //TO SUPPORT BT-AMP
991
992} tDelTsParams, *tpDelTsParams;
993
994#ifdef WLAN_FEATURE_VOWIFI_11R
995
996#define HAL_QOS_NUM_TSPEC_MAX 2
997#define HAL_QOS_NUM_AC_MAX 4
998
999typedef struct
1000{
1001 tANI_U16 staIdx;
1002 tANI_U16 tspecIdx; //TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
1003 tSirMacTspecIE tspec[HAL_QOS_NUM_AC_MAX];
1004 eHalStatus status[HAL_QOS_NUM_AC_MAX];
1005 tANI_U8 sessionId; //PE session id for PE<->HAL interface
1006}tAggrAddTsParams, *tpAggrAddTsParams;
1007
1008#endif /* WLAN_FEATURE_VOWIFI_11R */
1009
1010
1011typedef tSirRetStatus (*tHalMsgCallback)(tpAniSirGlobal pMac, tANI_U32 mesgId, void *mesgParam );
1012
1013
1014typedef struct
1015{
1016 tANI_U16 bssIdx;
1017 tANI_BOOLEAN highPerformance;
1018 tSirMacEdcaParamRecord acbe; // best effort
1019 tSirMacEdcaParamRecord acbk; // background
1020 tSirMacEdcaParamRecord acvi; // video
1021 tSirMacEdcaParamRecord acvo; // voice
1022} tEdcaParams, *tpEdcaParams;
1023
1024/*
1025* Function Prototypes
1026*/
1027
1028eHalStatus halMsg_setPromiscMode(tpAniSirGlobal pMac);
1029
1030
1031//
1032// Mesg header is used from tSirMsgQ
1033// Mesg Type = SIR_HAL_ADDBA_REQ
1034//
1035typedef struct sAddBAParams
1036{
1037
1038 // Station Index
1039 tANI_U16 staIdx;
1040
1041 // Peer MAC Address
1042 tSirMacAddr peerMacAddr;
1043
1044 // ADDBA Action Frame dialog token
1045 // HAL will not interpret this object
1046 tANI_U8 baDialogToken;
1047
1048 // TID for which the BA is being setup
1049 // This identifies the TC or TS of interest
1050 tANI_U8 baTID;
1051
1052 // 0 - Delayed BA (Not supported)
1053 // 1 - Immediate BA
1054 tANI_U8 baPolicy;
1055
1056 // Indicates the number of buffers for this TID (baTID)
1057 // NOTE - This is the requested buffer size. When this
1058 // is processed by HAL and subsequently by HDD, it is
1059 // possible that HDD may change this buffer size. Any
1060 // change in the buffer size should be noted by PE and
1061 // advertized appropriately in the ADDBA response
1062 tANI_U16 baBufferSize;
1063
1064 // BA timeout in TU's
1065 // 0 means no timeout will occur
1066 tANI_U16 baTimeout;
1067
1068 // b0..b3 - Fragment Number - Always set to 0
1069 // b4..b15 - Starting Sequence Number of first MSDU
1070 // for which this BA is setup
1071 tANI_U16 baSSN;
1072
1073 // ADDBA direction
1074 // 1 - Originator
1075 // 0 - Recipient
1076 tANI_U8 baDirection;
1077
1078 //
1079 // Following parameters are for returning status from
1080 // HAL to PE via response message. HAL does not read them
1081 //
1082 // The return status of SIR_HAL_ADDBA_REQ is reported
1083 // in the SIR_HAL_ADDBA_RSP message
1084 eHalStatus status;
1085
1086 // Indicating to HAL whether a response message is required.
1087 tANI_U8 respReqd;
1088 tANI_U8 sessionId; // PE session id for PE<->HAL interface
1089 // HAL Sends back the PE session
1090 // id unmodified
1091
1092} tAddBAParams, * tpAddBAParams;
1093
1094
1095//
1096// Mesg header is used from tSirMsgQ
1097// Mesg Type = SIR_HAL_DELBA_IND
1098//
1099typedef struct sDelBAParams
1100{
1101
1102 // Station Index
1103 tANI_U16 staIdx;
1104
1105 // TID for which the BA session is being deleted
1106 tANI_U8 baTID;
1107
1108 // DELBA direction
1109 // 1 - Originator
1110 // 0 - Recipient
1111 tANI_U8 baDirection;
1112
1113 // FIXME - Do we need a response for this?
1114 // Maybe just the IND/REQ will suffice?
1115 //
1116 // Following parameters are for returning status from
1117 // HAL to PE via response message. HAL does not read them
1118 //
1119 // The return status of SIR_HAL_DELBA_REQ is reported
1120 // in the SIR_HAL_DELBA_RSP message
1121 //eHalStatus status;
1122
1123} tDelBAParams, * tpDelBAParams;
1124
1125
1126//
1127// Mesg header is used from tSirMsgQ
1128// Mesg Type = SIR_HAL_SET_MIMOPS_REQ
1129//
1130typedef struct sSet_MIMOPS
1131{
1132 // Station Index
1133 tANI_U16 staIdx;
1134
1135 // MIMO Power Save State
1136 tSirMacHTMIMOPowerSaveState htMIMOPSState;
1137 // The return status of SIR_HAL_SET_MIMOPS_REQ is reported
1138 // in the SIR_HAL_SET_MIMOPS_RSP message
1139 eHalStatus status;
1140 tANI_U8 fsendRsp;
1141
1142} tSetMIMOPS, * tpSetMIMOPS;
1143
1144
1145//
1146// Mesg header is used from tSirMsgQ
1147// Mesg Type = SIR_HAL_EXIT_BMPS_REQ
1148//
1149typedef struct sExitBmpsParams
1150{
1151 tANI_U8 sendDataNull;
1152 eHalStatus status;
Jeff Johnsone7245742012-09-05 17:12:55 -07001153 tANI_U8 bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07001154} tExitBmpsParams, *tpExitBmpsParams;
1155
1156//
1157// Mesg header is used from tSirMsgQ
1158// Mesg Type = SIR_HAL_ENTER_UAPSD_REQ
1159//
1160typedef struct sUapsdParams
1161{
1162 tANI_U8 bkDeliveryEnabled:1;
1163 tANI_U8 beDeliveryEnabled:1;
1164 tANI_U8 viDeliveryEnabled:1;
1165 tANI_U8 voDeliveryEnabled:1;
1166 tANI_U8 bkTriggerEnabled:1;
1167 tANI_U8 beTriggerEnabled:1;
1168 tANI_U8 viTriggerEnabled:1;
1169 tANI_U8 voTriggerEnabled:1;
1170 eHalStatus status;
Jeff Johnsone7245742012-09-05 17:12:55 -07001171 tANI_U8 bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07001172}tUapsdParams, *tpUapsdParams;
1173
1174//
1175// Mesg header is used from tSirMsgQ
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07001176// Mesg Type = SIR_HAL_EXIT_UAPSD_REQ
1177//
1178typedef struct sExitUapsdParams
1179{
1180 eHalStatus status;
1181 tANI_U8 bssIdx;
1182}tExitUapsdParams, *tpExitUapsdParams;
1183
1184//
1185// Mesg header is used from tSirMsgQ
Jeff Johnson295189b2012-06-20 16:38:30 -07001186// Mesg Type = SIR_LIM_DEL_BA_IND
1187//
1188typedef struct sBADeleteParams
1189{
1190
1191 // Station Index
1192 tANI_U16 staIdx;
1193
1194 // Peer MAC Address, whose BA session has timed out
1195 tSirMacAddr peerMacAddr;
1196
1197 // TID for which a BA session timeout is being triggered
1198 tANI_U8 baTID;
1199
1200 // DELBA direction
1201 // 1 - Originator
1202 // 0 - Recipient
1203 tANI_U8 baDirection;
1204
1205 tANI_U32 reasonCode;
1206
1207 tSirMacAddr bssId; // TO SUPPORT BT-AMP
1208 // HAL copies the sta bssid to this.
1209} tBADeleteParams, * tpBADeleteParams;
1210
1211
1212// Mesg Type = SIR_LIM_ADD_BA_IND
1213typedef struct sBaActivityInd
1214{
1215 tANI_U16 baCandidateCnt;
1216 //baCandidateCnt is followed by BA Candidate List ( tAddBaCandidate)
1217
1218 tSirMacAddr bssId; // TO SUPPORT BT-AMP
1219} tBaActivityInd, * tpBaActivityInd;
1220
1221
Ravi Joshid2ca7c42013-07-23 08:37:49 -07001222// Mesg Type = SIR_LIM_IBSS_PEER_INACTIVITY_IND
1223typedef struct sIbssPeerInactivityInd
1224{
1225 tANI_U8 bssIdx;
1226 tANI_U8 staIdx;
1227 tSirMacAddr staAddr;
1228}tIbssPeerInactivityInd, *tpIbssPeerInactivityInd;
1229
1230
Jeff Johnson295189b2012-06-20 16:38:30 -07001231typedef struct tHalIndCB
1232{
1233
1234 tHalMsgCallback pHalIndCB;
1235
1236}tHalIndCB,*tpHalIndCB;
1237
1238/** Max number of bytes required for stations bitmap aligned at 4 bytes boundary */
1239#define HALMSG_NUMBYTES_STATION_BITMAP(x) (((x / 32) + ((x % 32)?1:0)) * 4)
1240
1241typedef struct sControlTxParams
1242{
1243 tANI_BOOLEAN stopTx;
1244 /* Master flag to stop or resume all transmission, Once this flag is set,
1245 * softmac doesnt look for any other details.
1246 */
1247 tANI_U8 fCtrlGlobal;
1248 /* If this flag is set, staBitmap[] is valid */
1249 tANI_U8 ctrlSta;
1250 /* If this flag is set, bssBitmap and beaconBitmap is valid */
1251 tANI_U8 ctrlBss;
1252
1253 /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
1254 * stopped for resumed for transmission.
1255 * This is 32 bit bitmap, not array of bytes.
1256 */
1257 tANI_U32 bssBitmap;
1258 /* When ctrlBss is set, this bitmap contains bitmap of BSS indices to be
1259 * stopped for resumed for beacon transmission.
1260 */
1261 tANI_U32 beaconBitmap;
1262
1263 /**
1264 * Memory for the station bitmap will be allocated later based on
1265 * the number of station supported.
1266 */
1267} tTxControlParams, * tpTxControlParams;
1268
1269typedef struct sEnterBmpsParams
1270{
1271 //TBTT value derived from the last beacon
1272 tANI_U8 bssIdx;
1273 tANI_U64 tbtt;
1274 tANI_U8 dtimCount;
1275 //DTIM period given to HAL during association may not be valid,
1276 //if association is based on ProbeRsp instead of beacon.
1277 tANI_U8 dtimPeriod;
1278
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08001279 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 tANI_U8 bRssiFilterEnable;
1281 tANI_U32 rssiFilterPeriod;
1282 tANI_U32 numBeaconPerRssiAverage;
1283
1284 eHalStatus status;
1285 tANI_U8 respReqd;
1286}tEnterBmpsParams, *tpEnterBmpsParams;
1287
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07001288//BMPS response
1289typedef struct sEnterBmpsRspParams
1290{
1291 /* success or failure */
1292 tANI_U32 status;
1293 tANI_U8 bssIdx;
1294}tEnterBmpsRspParams, *tpEnterBmpsRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07001295//
1296// Mesg header is used from tSirMsgQ
1297// Mesg Type = SIR_HAL_SET_MAX_TX_POWER_REQ
1298//
1299typedef struct sMaxTxPowerParams
1300{
1301 tSirMacAddr bssId; // BSSID is needed to identify which session issued this request. As
1302 //the request has power constraints, this should be applied only to that session
1303 tSirMacAddr selfStaMacAddr;
1304 //In request,
1305 //power == MaxTx power to be used.
1306 //In response,
1307 //power == tx power used for management frames.
1308 tPowerdBm power;
1309}tMaxTxPowerParams, *tpMaxTxPowerParams;
1310
Arif Hussaina5ebce02013-08-09 15:09:58 -07001311typedef struct sMaxTxPowerPerBandParams
1312{
1313 eCsrBand bandInfo;
1314 tPowerdBm power;
1315}tMaxTxPowerPerBandParams, *tpMaxTxPowerPerBandParams;
1316
Jeff Johnson295189b2012-06-20 16:38:30 -07001317typedef struct sAddStaSelfParams
1318{
1319 tSirMacAddr selfMacAddr;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -07001320 tVOS_CON_MODE currDeviceMode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 tANI_U32 status;
1322}tAddStaSelfParams, *tpAddStaSelfParams;
1323
Madan Mohan Koyyalamudiff3a7152013-06-13 14:47:55 +05301324typedef struct sAbortScanParams
1325{
1326 tANI_U8 SessionId;
1327}tAbortScanParams, *tpAbortScanParams;
1328
Jeff Johnson295189b2012-06-20 16:38:30 -07001329typedef struct sDelStaSelfParams
1330{
1331 tSirMacAddr selfMacAddr;
1332
1333 tANI_U32 status;
1334}tDelStaSelfParams, *tpDelStaSelfParams;
1335
Siddharth Bhal171788a2014-09-29 21:02:40 +05301336typedef struct
1337{
1338 tSirMacAddr macAddr;
1339} tSpoofMacAddrReqParams, *tpSpoofMacAddrReqParams;
1340
Jeff Johnson295189b2012-06-20 16:38:30 -07001341typedef struct sP2pPsParams
1342{
1343 tANI_U8 opp_ps;
1344 tANI_U32 ctWindow;
1345 tANI_U8 count;
1346 tANI_U32 duration;
1347 tANI_U32 interval;
1348 tANI_U32 single_noa_duration;
1349 tANI_U8 psSelection;
1350}tP2pPsParams, *tpP2pPsParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07001351
Naresh Jayaramc7cbd782014-02-04 17:38:23 +05301352#define HAL_MAX_SUPP_CHANNELS 128
1353#define HAL_MAX_SUPP_OPER_CLASSES 32
1354
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301355typedef struct sTdlsLinkEstablishParams
1356{
Gopichand Nakkala574f6d12013-06-27 19:38:43 +05301357 tANI_U16 staIdx;
1358 tANI_U8 isResponder;
1359 tANI_U8 uapsdQueues;
1360 tANI_U8 maxSp;
1361 tANI_U8 isBufsta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +05301362 tANI_U8 isOffChannelSupported;
1363 tANI_U8 peerCurrOperClass;
1364 tANI_U8 selfCurrOperClass;
1365 tANI_U8 validChannelsLen;
1366 tANI_U8 validChannels[HAL_MAX_SUPP_CHANNELS];
1367 tANI_U8 validOperClassesLen;
1368 tANI_U8 validOperClasses[HAL_MAX_SUPP_OPER_CLASSES];
Gopichand Nakkala574f6d12013-06-27 19:38:43 +05301369 tANI_U32 status;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301370}tTdlsLinkEstablishParams, *tpTdlsLinkEstablishParams;
1371
Atul Mittalc0f739f2014-07-31 13:47:47 +05301372// tdlsoffchan
1373typedef struct sTdlsChanSwitchParams
1374{
1375 tANI_U16 staIdx;
1376 tANI_U8 tdlsOffCh; // Target Off Channel
1377 tANI_U8 tdlsOffChBwOffset;// Target Off Channel Bandwidth offset
1378 tANI_U8 tdlsSwMode; // TDLS Off Channel Mode
1379 tANI_U8 operClass; //Operating class corresponding to target channel
1380 tANI_U32 status;
1381}tTdlsChanSwitchParams, *tpTdlsChanSwitchParams;
1382
Jeff Johnson295189b2012-06-20 16:38:30 -07001383static inline void halGetTxTSFtimer(tpAniSirGlobal pMac,
1384 tSirMacTimeStamp *pTime)
1385{
1386}
1387
1388extern void SysProcessMmhMsg(tpAniSirGlobal pMac, tSirMsgQ* pMsg);
1389
1390/* Beacon Filtering data structures */
1391typedef __ani_attr_pre_packed struct sBeaconFilterMsg
1392{
1393 tANI_U16 capabilityInfo;
1394 tANI_U16 capabilityMask;
1395 tANI_U16 beaconInterval;
1396 tANI_U16 ieNum;
Madan Mohan Koyyalamudia84edda2012-10-15 14:58:25 -07001397 tANI_U8 bssIdx;
1398 tANI_U8 reserved;
Jeff Johnson295189b2012-06-20 16:38:30 -07001399} __ani_attr_packed tBeaconFilterMsg, *tpBeaconFilterMsg;
1400
1401typedef __ani_attr_pre_packed struct sEidByteInfo
1402{
1403 tANI_U8 offset;
1404 tANI_U8 value;
1405 tANI_U8 bitMask;
1406 tANI_U8 ref;
1407} __ani_attr_packed tEidByteInfo, *tpEidByteInfo;
1408
1409
1410/* The above structure would be followed by multiple of below mentioned
1411structure */
1412typedef __ani_attr_pre_packed struct sBeaconFilterIe
1413{
1414 tANI_U8 elementId;
1415 tANI_U8 checkIePresence;
1416 tEidByteInfo byte;
1417} __ani_attr_packed tBeaconFilterIe, *tpBeaconFilterIe;
1418
1419typedef __ani_attr_pre_packed struct sRemBeaconFilterMsg
1420{
1421 tANI_U8 ucIeCount;
1422 tANI_U8 ucRemIeId[1];
1423} __ani_attr_packed tRemBeaconFilterMsg, *tpRemBeaconFilterMsg;
1424
Srinivas Dasari030bad32015-02-18 23:23:54 +05301425typedef struct sNanRequest
1426{
1427 tANI_U16 request_data_len;
1428 tANI_U8 request_data[1];
1429} tNanRequest, *tpNanRequest;
1430
Agrawal Ashisha8e8a722016-10-18 19:07:45 +05301431
1432#ifdef SAP_AUTH_OFFLOAD
1433struct sap_offload_add_sta_req
1434{
1435 tANI_U32 assoc_id;
1436 tANI_U32 conn_req_len;
1437 tANI_U8 conn_req[MAX_CONNECT_REQ_LENGTH];
1438};
1439struct sap_offload_del_sta_req
1440{
1441 tANI_U32 assoc_id;
1442 tANI_U32 reason_code;
1443 tANI_U32 flags;
1444 tSirMacAddr sta_mac;
1445};
1446#endif /* SAP_AUTH_OFFLOAD */
1447
Jeff Johnson295189b2012-06-20 16:38:30 -07001448#endif /* _HALMSGAPI_H_ */
1449