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