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