blob: 0daad70ebb6fb7001123236a5834221e45e949b0 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
2 * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * Airgo Networks, Inc proprietary. All rights reserved.
24 * This file sirApi.h contains definitions exported by
25 * Sirius software.
26 * Author: Chandra Modumudi
27 * Date: 04/16/2002
28 * History:-
29 * Date Modified by Modification Information
30 * --------------------------------------------------------------------
31 */
32
33#ifndef __SIR_API_H
34#define __SIR_API_H
35
36#include "sirTypes.h"
37#include "sirMacProtDef.h"
38#include "aniSystemDefs.h"
39
40#ifdef FEATURE_WLAN_CCX
41#include "ccxGlobal.h"
42#endif
43
44/// Maximum number of STAs allowed in the BSS
45#define SIR_MAX_NUM_STA 256
46
47/// Maximum number of Neighbors reported by STA for LB feature
48#define SIR_MAX_NUM_NEIGHBOR_BSS 3
49
50/// Maximum number of Neighbors reported by STA for LB feature
51#define SIR_MAX_NUM_ALTERNATE_RADIOS 5
52
53/// Maximum size of SCAN_RSP message
54#define SIR_MAX_SCAN_RSP_MSG_LENGTH 2600
55
56/// Start of Sirius software/Host driver message types
57#define SIR_HAL_HOST_MSG_START 0x1000
58
59/// Power save level definitions
60#define SIR_MAX_POWER_SAVE 3
61#define SIR_INTERMEDIATE_POWER_SAVE 4
62#define SIR_NO_POWER_SAVE 5
63
64/// Max supported channel list
65#define SIR_MAX_SUPPORTED_CHANNEL_LIST 96
66
67/// Maximum DTIM Factor
68#define SIR_MAX_DTIM_FACTOR 32
69
70#define SIR_MDIE_SIZE 3
71
72
73
74#define SIR_NUM_11B_RATES 4 //1,2,5.5,11
75#define SIR_NUM_11A_RATES 8 //6,9,12,18,24,36,48,54
76#define SIR_NUM_POLARIS_RATES 3 //72,96,108
77#define SIR_NUM_TITAN_RATES 26
78#define SIR_NUM_TAURUS_RATES 4 //136.5, 151.7,283.5,315
79#define SIR_NUM_PROP_RATES (SIR_NUM_TITAN_RATES + SIR_NUM_TAURUS_RATES)
80
81#define SIR_11N_PROP_RATE_136_5 (1<<28)
82#define SIR_11N_PROP_RATE_151_7 (1<<29)
83#define SIR_11N_PROP_RATE_283_5 (1<<30)
84#define SIR_11N_PROP_RATE_315 (1<<31)
85#define SIR_11N_PROP_RATE_BITMAP 0x80000000 //only 315MBPS rate is supported today
86//Taurus is going to support 26 Titan Rates(no ESF/concat Rates will be supported)
87//First 26 bits are reserved for Titan and last 4 bits for Taurus, 2(27 and 28) bits are reserved.
88//#define SIR_TITAN_PROP_RATE_BITMAP 0x03FFFFFF
89//Disable all Titan rates
90#define SIR_TITAN_PROP_RATE_BITMAP 0
91#define SIR_CONVERT_2_U32_BITMAP(nRates) ((nRates + 31)/32)
92
93/* #tANI_U32's needed for a bitmap representation for all prop rates */
94#define SIR_NUM_U32_MAP_RATES SIR_CONVERT_2_U32_BITMAP(SIR_NUM_PROP_RATES)
95
96
97#define SIR_PM_SLEEP_MODE 0
98#define SIR_PM_ACTIVE_MODE 1
99
100// Used by various modules to load ALL CFG's
101#define ANI_IGNORE_CFG_ID 0xFFFF
102
103//hidden SSID options
104#define SIR_SCAN_NO_HIDDEN_SSID 0
105#define SIR_SCAN_HIDDEN_SSID_PE_DECISION 1
106#define SIR_SCAN_HIDDEN_SSID 2
107
108#define SIR_MAC_ADDR_LEN 6
109#define SIR_IPV4_ADDR_LEN 4
110
111typedef tANI_U8 tSirIpv4Addr[SIR_IPV4_ADDR_LEN];
112
113#define SIR_VERSION_STRING_LEN 64
114typedef tANI_U8 tSirVersionString[SIR_VERSION_STRING_LEN];
115
116enum eSirHostMsgTypes
117{
118 SIR_HAL_APP_SETUP_NTF = SIR_HAL_HOST_MSG_START,
119 SIR_HAL_INITIAL_CAL_FAILED_NTF,
120 SIR_HAL_NIC_OPER_NTF,
121 SIR_HAL_INIT_START_REQ,
122 SIR_HAL_SHUTDOWN_REQ,
123 SIR_HAL_SHUTDOWN_CNF,
124 SIR_HAL_RESET_REQ,
125 SIR_HAL_RADIO_ON_OFF_IND,
126 SIR_HAL_RESET_CNF,
127 SIR_WRITE_TO_TD,
128 SIR_HAL_HDD_ADDBA_REQ, // MAC -> HDD
129 SIR_HAL_HDD_ADDBA_RSP, // HDD -> HAL
130 SIR_HAL_DELETEBA_IND, // MAC -> HDD
131 SIR_HAL_BA_FAIL_IND, // HDD -> MAC
132 SIR_TL_HAL_FLUSH_AC_REQ,
133 SIR_HAL_TL_FLUSH_AC_RSP
134};
135
136
137
138/**
139 * Module ID definitions.
140 */
141enum {
142 SIR_BOOT_MODULE_ID = 1,
143 SIR_HAL_MODULE_ID = 0x10,
144 SIR_CFG_MODULE_ID,
145 SIR_LIM_MODULE_ID,
146 SIR_ARQ_MODULE_ID,
147 SIR_SCH_MODULE_ID,
148 SIR_PMM_MODULE_ID,
149 SIR_MNT_MODULE_ID,
150 SIR_DBG_MODULE_ID,
151 SIR_DPH_MODULE_ID,
152 SIR_SYS_MODULE_ID,
153 SIR_SMS_MODULE_ID,
154
155 SIR_PHY_MODULE_ID = 0x20,
156
157
158 // Add any modules above this line
159 SIR_DVT_MODULE_ID
160};
161
162#define SIR_WDA_MODULE_ID SIR_HAL_MODULE_ID
163
164/**
165 * First and last module definition for logging utility
166 *
167 * NOTE: The following definitions need to be updated if
168 * the above list is changed.
169 */
170#define SIR_FIRST_MODULE_ID SIR_HAL_MODULE_ID
171#define SIR_LAST_MODULE_ID SIR_DVT_MODULE_ID
172
173
174// Type declarations used by Firmware and Host software
175
176// Scan type enum used in scan request
177typedef enum eSirScanType
178{
179 eSIR_PASSIVE_SCAN,
180 eSIR_ACTIVE_SCAN,
181} tSirScanType;
182
183/// Result codes Firmware return to Host SW
184typedef enum eSirResultCodes
185{
186 eSIR_SME_SUCCESS,
187
188 eSIR_EOF_SOF_EXCEPTION,
189 eSIR_BMU_EXCEPTION,
190 eSIR_LOW_PDU_EXCEPTION,
191 eSIR_USER_TRIG_RESET,
192 eSIR_LOGP_EXCEPTION,
193 eSIR_CP_EXCEPTION,
194 eSIR_STOP_BSS,
195 eSIR_AHB_HANG_EXCEPTION,
196 eSIR_DPU_EXCEPTION,
197 eSIR_RPE_EXCEPTION,
198 eSIR_TPE_EXCEPTION,
199 eSIR_DXE_EXCEPTION,
200 eSIR_RXP_EXCEPTION,
201 eSIR_MCPU_EXCEPTION,
202 eSIR_MCU_EXCEPTION,
203 eSIR_MTU_EXCEPTION,
204 eSIR_MIF_EXCEPTION,
205 eSIR_FW_EXCEPTION,
206 eSIR_PS_MUTEX_READ_EXCEPTION,
207 eSIR_PHY_HANG_EXCEPTION,
208 eSIR_MAILBOX_SANITY_CHK_FAILED,
209 eSIR_RADIO_HW_SWITCH_STATUS_IS_OFF, // Only where this switch is present
210 eSIR_CFB_FLAG_STUCK_EXCEPTION,
211
212 eSIR_SME_BASIC_RATES_NOT_SUPPORTED_STATUS=30,
213
214 eSIR_SME_INVALID_PARAMETERS=500,
215 eSIR_SME_UNEXPECTED_REQ_RESULT_CODE,
216 eSIR_SME_RESOURCES_UNAVAILABLE,
217 eSIR_SME_SCAN_FAILED, // Unable to find a BssDescription
218 // matching requested scan criteria
219 eSIR_SME_BSS_ALREADY_STARTED_OR_JOINED,
220 eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE,
221 eSIR_SME_REFUSED,
222 eSIR_SME_JOIN_TIMEOUT_RESULT_CODE,
223 eSIR_SME_AUTH_TIMEOUT_RESULT_CODE,
224 eSIR_SME_ASSOC_TIMEOUT_RESULT_CODE,
225 eSIR_SME_REASSOC_TIMEOUT_RESULT_CODE,
226 eSIR_SME_MAX_NUM_OF_PRE_AUTH_REACHED,
227 eSIR_SME_AUTH_REFUSED,
228 eSIR_SME_INVALID_WEP_DEFAULT_KEY,
229 eSIR_SME_NO_KEY_MAPPING_KEY_FOR_PEER,
230 eSIR_SME_ASSOC_REFUSED,
231 eSIR_SME_REASSOC_REFUSED,
232 eSIR_SME_DEAUTH_WHILE_JOIN, //Received Deauth while joining or pre-auhtentication.
233 eSIR_SME_DISASSOC_WHILE_JOIN, //Received Disassociation while joining.
234 eSIR_SME_DEAUTH_WHILE_REASSOC, //Received Deauth while ReAssociate.
235 eSIR_SME_DISASSOC_WHILE_REASSOC, //Received Disassociation while ReAssociate
236 eSIR_SME_STA_NOT_AUTHENTICATED,
237 eSIR_SME_STA_NOT_ASSOCIATED,
238 eSIR_SME_STA_DISASSOCIATED,
239 eSIR_SME_ALREADY_JOINED_A_BSS,
240 eSIR_ULA_COMPLETED,
241 eSIR_ULA_FAILURE,
242 eSIR_SME_LINK_ESTABLISHED,
243 eSIR_SME_UNABLE_TO_PERFORM_MEASUREMENTS,
244 eSIR_SME_UNABLE_TO_PERFORM_DFS,
245 eSIR_SME_DFS_FAILED,
246 eSIR_SME_TRANSFER_STA, // To be used when STA need to be LB'ed
247 eSIR_SME_INVALID_LINK_TEST_PARAMETERS,// Given in LINK_TEST_START_RSP
248 eSIR_SME_LINK_TEST_MAX_EXCEEDED, // Given in LINK_TEST_START_RSP
249 eSIR_SME_UNSUPPORTED_RATE, // Given in LINK_TEST_RSP if peer does
250 // support requested rate in
251 // LINK_TEST_REQ
252 eSIR_SME_LINK_TEST_TIMEOUT, // Given in LINK_TEST_IND if peer does
253 // not respond before next test packet
254 // is sent
255 eSIR_SME_LINK_TEST_COMPLETE, // Given in LINK_TEST_IND at the end
256 // of link test
257 eSIR_SME_LINK_TEST_INVALID_STATE, // Given in LINK_TEST_START_RSP
258 eSIR_SME_LINK_TEST_TERMINATE, // Given in LINK_TEST_START_RSP
259 eSIR_SME_LINK_TEST_INVALID_ADDRESS, // Given in LINK_TEST_STOP_RSP
260 eSIR_SME_POLARIS_RESET, // Given in SME_STOP_BSS_REQ
261 eSIR_SME_SETCONTEXT_FAILED, // Given in SME_SETCONTEXT_REQ when
262 // unable to plumb down keys
263 eSIR_SME_BSS_RESTART, // Given in SME_STOP_BSS_REQ
264
265 eSIR_SME_MORE_SCAN_RESULTS_FOLLOW, // Given in SME_SCAN_RSP message
266 // that more SME_SCAN_RSP
267 // messages are following.
268 // SME_SCAN_RSP message with
269 // eSIR_SME_SUCCESS status
270 // code is the last one.
271 eSIR_SME_INVALID_ASSOC_RSP_RXED, // Sent in SME_JOIN/REASSOC_RSP
272 // messages upon receiving
273 // invalid Re/Assoc Rsp frame.
274 eSIR_SME_MIC_COUNTER_MEASURES, // STOP BSS triggered by MIC failures: MAC software to disassoc all stations
275 // with MIC_FAILURE reason code and perform the stop bss operation
276 eSIR_SME_ADDTS_RSP_TIMEOUT, // didn't get response from peer within
277 // timeout interval
278 eSIR_SME_ADDTS_RSP_FAILED, // didn't get success response from HAL
279 eSIR_SME_RECEIVED,
280 // TBA - TSPEC related Result Codes
281
282 eSIR_SME_CHANNEL_SWITCH_FAIL, // failed to send out Channel Switch Action Frame
283 eSIR_SME_INVALID_STA_ROLE,
284 eSIR_SME_INVALID_STATE,
285#ifdef GEN4_SCAN
286 eSIR_SME_CHANNEL_SWITCH_DISABLED, // either 11h is disabled or channelSwitch is currently active
287 eSIR_SME_HAL_SCAN_INIT_FAILED, // SIR_HAL_SIR_HAL_INIT_SCAN_RSP returned failed status
288 eSIR_SME_HAL_SCAN_START_FAILED, // SIR_HAL_START_SCAN_RSP returned failed status
289 eSIR_SME_HAL_SCAN_END_FAILED, // SIR_HAL_END_SCAN_RSP returned failed status
290 eSIR_SME_HAL_SCAN_FINISH_FAILED, // SIR_HAL_FINISH_SCAN_RSP returned failed status
291 eSIR_SME_HAL_SEND_MESSAGE_FAIL, // Failed to send a message to HAL
292#else // GEN4_SCAN
293 eSIR_SME_CHANNEL_SWITCH_DISABLED, // either 11h is disabled or channelSwitch is currently active
294 eSIR_SME_HAL_SEND_MESSAGE_FAIL, // Failed to send a message to HAL
295#endif // GEN4_SCAN
296 eSIR_SME_STOP_BSS_FAILURE, // Failed to stop the bss
297 eSIR_SME_STA_ASSOCIATED,
298 eSIR_SME_INVALID_PMM_STATE,
299 eSIR_SME_CANNOT_ENTER_IMPS,
300 eSIR_SME_IMPS_REQ_FAILED,
301 eSIR_SME_BMPS_REQ_FAILED,
302 eSIR_SME_UAPSD_REQ_FAILED,
303 eSIR_SME_WOWL_ENTER_REQ_FAILED,
304 eSIR_SME_WOWL_EXIT_REQ_FAILED,
305#if defined WLAN_FEATURE_VOWIFI_11R
306 eSIR_SME_FT_REASSOC_TIMEOUT_FAILURE,
307 eSIR_SME_FT_REASSOC_FAILURE,
308#endif
309#ifdef WLAN_FEATURE_P2P
310 eSIR_SME_SEND_ACTION_FAIL,
311#endif
312#ifdef WLAN_FEATURE_PACKET_FILTERING
313 eSIR_SME_PC_FILTER_MATCH_COUNT_REQ_FAILED,
314#endif // WLAN_FEATURE_PACKET_FILTERING
315
316#ifdef WLAN_FEATURE_GTK_OFFLOAD
317 eSIR_SME_GTK_OFFLOAD_GETINFO_REQ_FAILED,
318#endif // WLAN_FEATURE_GTK_OFFLOAD
319 eSIR_DONOT_USE_RESULT_CODE = SIR_MAX_ENUM_SIZE
320} tSirResultCodes;
321
322//
323// Enumerated constants to identify
324// 1) the operating state of Channel Bonding
325// 2) the secondary CB channel to be used
326//
327typedef enum eAniCBSecondaryMode
328{
329 eANI_CB_SECONDARY_NONE,
330 eANI_CB_SECONDARY_DOWN,
331 eANI_CB_SECONDARY_UP,
332 eANI_DONOT_USE_SECONDARY_MODE = SIR_MAX_ENUM_SIZE
333} tAniCBSecondaryMode;
334
335
336
337
338/* each station added has a rate mode which specifies the sta attributes */
339typedef enum eStaRateMode {
340 eSTA_TAURUS = 0,
341 eSTA_TITAN,
342 eSTA_POLARIS,
343 eSTA_11b,
344 eSTA_11bg,
345 eSTA_11a,
346 eSTA_11n,
347 eSTA_INVALID_RATE_MODE
348} tStaRateMode, *tpStaRateMode;
349
350//although in tSirSupportedRates each IE is 16bit but PE only passes IEs in 8 bits with MSB=1 for basic rates.
351//change the mask for bit0-7 only so HAL gets correct basic rates for setting response rates.
352#define IERATE_BASICRATE_MASK 0x80
353#define IERATE_RATE_MASK 0x7f
354#define IERATE_IS_BASICRATE(x) ((x) & IERATE_BASICRATE_MASK)
355#define ANIENHANCED_TAURUS_RATEMAP_BITOFFSET_START 28
356
357typedef struct sSirSupportedRates {
358 /*
359 * For Self STA Entry: this represents Self Mode.
360 * For Peer Stations, this represents the mode of the peer.
361 * On Station:
362 * --this mode is updated when PE adds the Self Entry.
363 * -- OR when PE sends 'ADD_BSS' message and station context in BSS is used to indicate the mode of the AP.
364 * ON AP:
365 * -- this mode is updated when PE sends 'ADD_BSS' and Sta entry for that BSS is used
366 * to indicate the self mode of the AP.
367 * -- OR when a station is associated, PE sends 'ADD_STA' message with this mode updated.
368 */
369
370 tStaRateMode opRateMode;
371 // 11b, 11a and aniLegacyRates are IE rates which gives rate in unit of 500Kbps
372 tANI_U16 llbRates[SIR_NUM_11B_RATES];
373 tANI_U16 llaRates[SIR_NUM_11A_RATES];
374 tANI_U16 aniLegacyRates[SIR_NUM_POLARIS_RATES];
375
376 //Taurus only supports 26 Titan Rates(no ESF/concat Rates will be supported)
377 //First 26 bits are reserved for those Titan rates and
378 //the last 4 bits(bit28-31) for Taurus, 2(bit26-27) bits are reserved.
379 tANI_U32 aniEnhancedRateBitmap; //Titan and Taurus Rates
380
381 /*
382 * 0-76 bits used, remaining reserved
383 * bits 0-15 and 32 should be set.
384 */
385 tANI_U8 supportedMCSSet[SIR_MAC_MAX_SUPPORTED_MCS_SET];
386
387 /*
388 * RX Highest Supported Data Rate defines the highest data
389 * rate that the STA is able to receive, in unites of 1Mbps.
390 * This value is derived from "Supported MCS Set field" inside
391 * the HT capability element.
392 */
393 tANI_U16 rxHighestDataRate;
394
395} tSirSupportedRates, *tpSirSupportedRates;
396
397
398typedef enum eSirRFBand
399{
400 SIR_BAND_UNKNOWN,
401 SIR_BAND_2_4_GHZ,
402 SIR_BAND_5_GHZ,
403} tSirRFBand;
404
405
406/*
407* Specifies which beacons are to be indicated upto the host driver when
408* Station is in power save mode.
409*/
410typedef enum eBeaconForwarding
411{
412 ePM_BEACON_FWD_NTH,
413 ePM_BEACON_FWD_TIM,
414 ePM_BEACON_FWD_DTIM,
415 ePM_BEACON_FWD_NONE
416} tBeaconForwarding;
417
418
419#ifdef WLAN_FEATURE_P2P
420typedef struct sSirRemainOnChnReq
421{
422 tANI_U16 messageType;
423 tANI_U16 length;
424 tANI_U8 sessionId;
425 tSirMacAddr selfMacAddr;
426 tANI_U8 chnNum;
427 tANI_U8 phyMode;
428 tANI_U32 duration;
429 tANI_U8 probeRspIe[1];
430}tSirRemainOnChnReq, *tpSirRemainOnChnReq;
431
432typedef struct sSirRegisterMgmtFrame
433{
434 tANI_U16 messageType;
435 tANI_U16 length;
436 tANI_U8 sessionId;
437 tANI_BOOLEAN registerFrame;
438 tANI_U16 frameType;
439 tANI_U16 matchLen;
440 tANI_U8 matchData[1];
441}tSirRegisterMgmtFrame, *tpSirRegisterMgmtFrame;
442#endif
443
444//
445// A bit-encoding, identifying the new TITAN capabilities
446// and state information. The capabilities being exposed
447// are -
448// Concatenation
449// Compression
450//FIXME_CBMODE: need to seperate out HT and TITAN CB mode fields.
451// Channel Bonding - Only this filed is used for HT also.
452// Reverse FCS
453//
454// The bitfield encoding is as follows -
455//
456// b7 b6 b5 b4 b3 b2 b1 b0
457// --------------------------------------
458// | X | X |CB/O|CB/O|CB/A|RFCS| CP | CC |
459// --------------------------------------
460// where,
461// CC - Concatenation: 1 - ON, 0 - OFF
462// CP - Compression: 1 - ON, 0 - OFF
463// RFCS - Reverse FCS Support: 1 - ON, 0 - OFF
464// CB/A - Channel Bonding "Admin" state: 1 - ON, 0 - OFF
465// CB/O - Channel Bonding "Oper" state:
466// 00 - CB Oper state OFF
467// 01 - CB Secondary channel DOWN
468// 10 - CB Secondary channel UP
469// 11 - Reserved
470// X - Don't care
471//
472// This enumerated data type is used for IPC between the
473// LIM and SME (WSM/HDD) for the following northbound
474// interfaces -
475// LIM -> WSM
476// tSirNeighborBssInfo,
477// tSirSmeAssocInd,
478// tSirSmeReassocInd
479//
480// LIM -> HDD/Roaming
481// tSirBssDescription
482//
483typedef tANI_U8 tAniTitanHtCapabilityInfo;
484
485//
486// Identifies the neighbor BSS' that was(were) detected
487// by an STA and reported to the AP
488//
489typedef struct sAniTitanCBNeighborInfo
490{
491 // A BSS was found on the Primary
492 tANI_U8 cbBssFoundPri;
493
494 // A BSS was found on the adjacent Upper Secondary
495 tANI_U8 cbBssFoundSecUp;
496
497 // A BSS was found on the adjacent Lower Secondary
498 tANI_U8 cbBssFoundSecDown;
499
500} tAniTitanCBNeighborInfo, *tpAniTitanCBNeighborInfo;
501
502//
503// MACRO's to extract info from tAniTitanHtCapabilityInfo
504//
505#define SME_GET_CONCAT_STATE(titanHtCaps) \
506 (titanHtCaps & 0x01)
507#define SME_SET_CONCAT_STATE(titanHtCaps,state) \
508 (((state) == eHAL_CLEAR)? \
509 ((titanHtCaps) = (titanHtCaps) & (0x3E)): \
510 ((titanHtCaps) = (titanHtCaps) | (0x01)))
511
512#define SME_GET_COMPRESSION_STATE(titanHtCaps) \
513 ((titanHtCaps & 0x02) >> 1)
514#define SME_SET_COMPRESSION_STATE(titanHtCaps,state) \
515 (((state) == eHAL_CLEAR)? \
516 ((titanHtCaps) = (titanHtCaps) & (0x3D)): \
517 ((titanHtCaps) = (titanHtCaps) | (0x02)))
518
519#define SME_GET_RFCS_STATE(titanHtCaps) \
520 ((titanHtCaps & 0x04) >> 2)
521#define SME_SET_RFCS_STATE(titanHtCaps,state) \
522 (((state) == eHAL_CLEAR)? \
523 ((titanHtCaps) = (titanHtCaps) & (0x3B)): \
524 ((titanHtCaps) = (titanHtCaps) | (0x04)))
525
526#define SME_GET_CB_ADMIN_STATE(titanHtCaps) \
527 ((titanHtCaps & 0x08) >> 3)
528#define SME_SET_CB_ADMIN_STATE(titanHtCaps,state) \
529 (((state) == eHAL_CLEAR)? \
530 ((titanHtCaps) = (titanHtCaps) & (0x37)): \
531 ((titanHtCaps) = (titanHtCaps) | (0x08)))
532
533// NOTE - The value returned by this MACRO, SME_GET_CB_OPER_STATE,
534// can be used along with the enumerated type,
535// tAniCBSecondaryMode, to identify the Admin/Oper state of CB
536#define SME_GET_CB_OPER_STATE(titanHtCaps) \
537 ((titanHtCaps & 0x30) >> 4)
538#define SME_SET_CB_OPER_STATE(titanHtCaps,state) \
539 ((titanHtCaps) = (tANI_U8)(((titanHtCaps) & (0x0F)) | ((state) << 4)))
540
541/// Generic type for sending a response message
542/// with result code to host software
543typedef struct sSirSmeRsp
544{
545 tANI_U16 messageType; // eWNI_SME_*_RSP
546 tANI_U16 length;
547 tANI_U8 sessionId; // To support BT-AMP
548 tANI_U16 transactionId; // To support BT-AMP
549 tSirResultCodes statusCode;
550} tSirSmeRsp, *tpSirSmeRsp;
551
552/// Definition for kick starting Firmware on STA
553typedef struct sSirSmeStartReq
554{
555 tANI_U16 messageType; // eWNI_SME_START_REQ
556 tANI_U16 length;
557 tANI_U8 sessionId; //Added for BT-AMP Support
558 tANI_U16 transcationId; //Added for BT-AMP Support
559 tSirMacAddr bssId; //Added For BT-AMP Support
560 tANI_U32 roamingAtPolaris;
561#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA) || defined(ANI_AP_CLIENT_SDK)
562 tANI_U32 sendNewBssInd;
563#endif
564} tSirSmeStartReq, *tpSirSmeStartReq;
565
566/// Definition for indicating all modules ready on STA
567typedef struct sSirSmeReadyReq
568{
569 tANI_U16 messageType; // eWNI_SME_SYS_READY_IND
570 tANI_U16 length;
571 tANI_U16 transactionId;
572} tSirSmeReadyReq, *tpSirSmeReadyReq;
573
574/// Definition for response message to previously issued start request
575typedef struct sSirSmeStartRsp
576{
577 tANI_U16 messageType; // eWNI_SME_START_RSP
578 tANI_U16 length;
579 tSirResultCodes statusCode;
580 tANI_U16 transactionId;
581} tSirSmeStartRsp, *tpSirSmeStartRsp;
582
583#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
584/**
585 * Trigger Type
586 */
587typedef enum {
588 // During Initialization and NM triggers only
589 eSIR_TRIGGER_INIT_NM,
590
591 // During Initialization, NM triggers and Periodic evaluation
592 eSIR_TRIGGER_INIT_NM_PERIODIC
593}tSirDfsTrigType;
594#endif
595
596/// Definition for Load structure
597typedef struct sSirLoad
598{
599 tANI_U16 numStas;
600 tANI_U16 channelUtilization;
601} tSirLoad, *tpSirLoad;
602
603/// BSS type enum used in while scanning/joining etc
604typedef enum eSirBssType
605{
606 eSIR_INFRASTRUCTURE_MODE,
607#ifdef WLAN_SOFTAP_FEATURE
608 eSIR_INFRA_AP_MODE, //Added for softAP support
609#endif
610 eSIR_IBSS_MODE,
611 eSIR_BTAMP_STA_MODE, //Added for BT-AMP support
612 eSIR_BTAMP_AP_MODE, //Added for BT-AMP support
613 eSIR_AUTO_MODE,
614 eSIR_DONOT_USE_BSS_TYPE = SIR_MAX_ENUM_SIZE
615} tSirBssType;
616
617/// Definition for WDS Information
618typedef struct sSirWdsInfo
619{
620 tANI_U16 wdsLength;
621 tANI_U8 wdsBytes[ANI_WDS_INFO_MAX_LENGTH];
622} tSirWdsInfo, *tpSirWdsInfo;
623
624/// Power Capability info used in 11H
625typedef struct sSirMacPowerCapInfo
626{
627 tANI_U8 minTxPower;
628 tANI_U8 maxTxPower;
629} tSirMacPowerCapInfo, *tpSirMacPowerCapInfo;
630
631/// Supported Channel info used in 11H
632typedef struct sSirSupChnl
633{
634 tANI_U8 numChnl;
635 tANI_U8 channelList[SIR_MAX_SUPPORTED_CHANNEL_LIST];
636} tSirSupChnl, *tpSirSupChnl;
637
638typedef enum eSirNwType
639{
640 eSIR_11A_NW_TYPE,
641 eSIR_11B_NW_TYPE,
642 eSIR_11G_NW_TYPE,
643 eSIR_11N_NW_TYPE,
644 eSIR_DONOT_USE_NW_TYPE = SIR_MAX_ENUM_SIZE
645} tSirNwType;
646
647/// Definition for new iBss peer info
648typedef struct sSirNewIbssPeerInfo
649{
650 tSirMacAddr peerAddr;
651 tANI_U16 aid;
652} tSirNewIbssPeerInfo, *tpSirNewIbssPeerInfo;
653
654/// Definition for Alternate BSS info
655typedef struct sSirAlternateRadioInfo
656{
657 tSirMacAddr bssId;
658 tANI_U8 channelId;
659} tSirAlternateRadioInfo, *tpSirAlternateRadioInfo;
660
661/// Definition for Alternate BSS list
662typedef struct sSirAlternateRadioList
663{
664 tANI_U8 numBss;
665 tSirAlternateRadioInfo alternateRadio[1];
666} tSirAlternateRadioList, *tpSirAlternateRadioList;
667
668/// Definition for kick starting BSS
669/// ---> MAC
670/**
671 * Usage of ssId, numSSID & ssIdList:
672 * ---------------------------------
673 * 1. ssId.length of zero indicates that Broadcast/Suppress SSID
674 * feature is enabled.
675 * 2. If ssId.length is zero, MAC SW will advertise NULL SSID
676 * and interpret the SSID list from numSSID & ssIdList.
677 * 3. If ssId.length is non-zero, MAC SW will advertise the SSID
678 * specified in the ssId field and it is expected that
679 * application will set numSSID to one (only one SSID present
680 * in the list) and SSID in the list is same as ssId field.
681 * 4. Application will always set numSSID >= 1.
682 */
683//*****NOTE: Please make sure all codes are updated if inserting field into this structure..**********
684typedef struct sSirSmeStartBssReq
685{
686 tANI_U16 messageType; // eWNI_SME_START_BSS_REQ
687 tANI_U16 length;
688 tANI_U8 sessionId; //Added for BT-AMP Support
689 tANI_U16 transactionId; //Added for BT-AMP Support
690 tSirMacAddr bssId; //Added for BT-AMP Support
691 tSirMacAddr selfMacAddr; //Added for BT-AMP Support
692 tANI_U16 beaconInterval; //Added for BT-AMP Support
693 tANI_U8 dot11mode;
694 tSirBssType bssType;
695 tSirMacSSid ssId;
696 tANI_U8 channelId;
697 tAniCBSecondaryMode cbMode;
698#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
699 tSirAlternateRadioList alternateRadioList;
700 tANI_S8 powerLevel;
701 tSirWdsInfo wdsInfo;
702#endif
703
704#ifdef WLAN_SOFTAP_FEATURE
705 tANI_U8 privacy;
706 tANI_U8 apUapsdEnable;
707 tANI_U8 ssidHidden;
708 tANI_BOOLEAN fwdWPSPBCProbeReq;
709 tANI_BOOLEAN protEnabled;
710 tANI_BOOLEAN obssProtEnabled;
711 tANI_U16 ht_capab;
712 tAniAuthType authType;
713 tANI_U32 dtimPeriod;
714 tANI_U8 wps_state;
715#endif
716 tVOS_CON_MODE bssPersona;
717
718 tSirRSNie rsnIE; // RSN IE to be sent in
719 // Beacon and Probe
720 // Response frames
721 tSirNwType nwType; // Indicates 11a/b/g
722 tSirMacRateSet operationalRateSet;// Has 11a or 11b rates
723 tSirMacRateSet extendedRateSet; // Has 11g rates
724
725#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
726 tANI_U8 numSSID;
727 tSirMacSSid ssIdList[ANI_MAX_NUM_OF_SSIDS];
728#endif
729} tSirSmeStartBssReq, *tpSirSmeStartBssReq;
730
731#define GET_IE_LEN_IN_BSS(lenInBss) ( lenInBss + sizeof(lenInBss) - \
732 ((int) OFFSET_OF( tSirBssDescription, ieFields)))
733
734#define WSCIE_PROBE_RSP_LEN (317 + 2)
735
736typedef struct sSirBssDescription
737{
738 //offset of the ieFields from bssId.
739 tANI_U16 length;
740 tSirMacAddr bssId;
741 v_TIME_t scanSysTimeMsec;
742 tANI_U32 timeStamp[2];
743 tANI_U16 beaconInterval;
744 tANI_U16 capabilityInfo;
745 tSirNwType nwType; // Indicates 11a/b/g
746 tANI_U8 aniIndicator;
747 tANI_S8 rssi;
748 tANI_S8 sinr;
749 //channelId what peer sent in beacon/probersp.
750 tANI_U8 channelId;
751 //channelId on which we are parked at.
752 //used only in scan case.
753 tANI_U8 channelIdSelf;
754 tANI_U8 sSirBssDescriptionRsvd[3];
755 //
756 // FIXME - This structure is not packed!
757 // Thus, the fields should be aligned at DWORD boundaries
758 // Elsewhere, titanHtCaps is of type tAniTitanHtCapabilityInfo
759 //
760 tANI_U32 titanHtCaps;
761 tANI_TIMESTAMP nReceivedTime; //base on a tick count. It is a time stamp, not a relative time.
762#if defined WLAN_FEATURE_VOWIFI
763 tANI_U32 parentTSF;
764 tANI_U32 startTSF[2];
765#endif
766#ifdef WLAN_FEATURE_VOWIFI_11R
767 tANI_U8 mdiePresent;
768 tANI_U8 mdie[SIR_MDIE_SIZE]; // MDIE for 11r, picked from the beacons
769#endif
770#ifdef FEATURE_WLAN_CCX
771 tANI_U16 QBSSLoad_present;
772 tANI_U16 QBSSLoad_avail;
773#endif
774 // Please keep the structure 4 bytes aligned above the ieFields
775
776 tANI_U8 fProbeRsp; //whether it is from a probe rsp
777 tANI_U32 WscIeLen;
778 tANI_U8 WscIeProbeRsp[WSCIE_PROBE_RSP_LEN];
779
780 tANI_U32 ieFields[1];
781} tSirBssDescription, *tpSirBssDescription;
782
783/// Definition for response message to previously
784/// issued start BSS request
785/// MAC --->
786typedef struct sSirSmeStartBssRsp
787{
788 tANI_U16 messageType; // eWNI_SME_START_BSS_RSP
789 tANI_U16 length;
790 tANI_U8 sessionId;
791 tANI_U16 transactionId;//transaction ID for cmd
792 tSirResultCodes statusCode;
793 tSirBssType bssType;//Add new type for WDS mode
794 tANI_U16 beaconInterval;//Beacon Interval for both type
795 tANI_U32 staId;//Staion ID for Self
796 tSirBssDescription bssDescription;//Peer BSS description
797} tSirSmeStartBssRsp, *tpSirSmeStartBssRsp;
798
799#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
800typedef struct sSirMeasControl
801{
802 // Periodic Measurements enabled flag
803 tAniBool periodicMeasEnabled;
804 // Indicates whether to involve STAs in measurements or not
805 tAniBool involveSTAs;
806 // Basic or enhanced measurement metrics
807 // 0 - for basic, 1 - for enhanced
808 tANI_U8 metricsType;
809 // Indicates active or passive scanning
810 tSirScanType scanType;
811 // Following indicates how often measurements
812 // on each channel are made for long-scan-duration
813 tANI_U8 longChannelScanPeriodicity;
814 //
815 // Channel Bonding plus 11H related scan control
816 // 0 - CB and/or 11H is disabled
817 // 1 - CB and 11H is enabled
818 //
819 tANI_BOOLEAN cb11hEnabled;
820} tSirMeasControl, *tpSirMeasControl;
821
822typedef struct sSirMeasDuration
823{
824 // Following indicates time duration over which
825 // all channels in the channelList to be measured once
826 tANI_U32 shortTermPeriod;
827 // Following indicates time duration over which
828 // cached DFS measurements are averaged
829 tANI_U32 averagingPeriod;
830 // Following indicates time duration for making
831 // DFS measurements on each channel
832 tANI_U32 shortChannelScanDuration;
833 // Following indicates time duration for making
834 // DFS measurements on each channel for long term measurements
835 tANI_U32 longChannelScanDuration;
836} tSirMeasDuration, *tpSirMeasDuration;
837#endif
838
839typedef struct sSirChannelList
840{
841 tANI_U8 numChannels;
842 tANI_U8 channelNumber[1];
843} tSirChannelList, *tpSirChannelList;
844
845#ifdef FEATURE_WLAN_CCX
846typedef struct sTspecInfo {
847 tANI_U8 valid;
848 tSirMacTspecIE tspec;
849} tTspecInfo;
850
851#define SIR_CCX_MAX_TSPEC_IES 4
852typedef struct sCCXTspecTspecInfo {
853 tANI_U8 numTspecs;
854 tTspecInfo tspec[SIR_CCX_MAX_TSPEC_IES];
855} tCCXTspecInfo;
856#endif
857
858#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
859/// Definition for Neighbor BSS info
860typedef struct sSirNeighborBssInfo
861{
862 tSirMacAddr bssId;
863 tANI_U8 channelId;
864 tAniTitanHtCapabilityInfo titanHtCaps;
865 tAniBool wniIndicator;
866 tSirBssType bssType;
867 tANI_U8 sinr;
868 tANI_S8 rssi;
869 tSirLoad load;
870 tAniSSID ssId;
871 tAniApName apName;
872 tSirRSNie rsnIE;
873#if 0
874 tDot11fIEHTCaps HTCaps;
875 tDot11fIEHTInfo HTInfo;
876#endif
877 tSirNwType nwType; // Indicates 11a/b/g
878 tANI_U16 capabilityInfo;
879 tSirMacRateSet operationalRateSet; // Has 11a or 11b rates
880 tSirMacRateSet extendedRateSet; // Has 11g rates
881 tANI_U16 beaconInterval;
882 tANI_U8 dtimPeriod;
883 tANI_U8 HTCapsPresent;
884 tANI_U8 HTInfoPresent;
885 tANI_U8 wmeInfoPresent;
886 tANI_U8 wmeEdcaPresent;
887 tANI_U8 wsmCapablePresent;
888 tANI_U8 hcfEnabled;
889 tANI_U16 propIECapability;
890 tANI_U32 localPowerConstraints;
891 tANI_S32 aggrRssi;
892 tANI_U32 dataCount;
893 tANI_U32 totalPackets;
894} tSirNeighborBssInfo, *tpSirNeighborBssInfo;
895
896
897/// Definition for Neighbor BSS with WDS info
898typedef struct sSirNeighborBssWdsInfo
899{
900 tSirNeighborBssInfo neighborBssInfo;
901 tSirWdsInfo wdsInfo;
902} tSirNeighborBssWdsInfo, *tpSirNeighborBssWdsInfo;
903
904/// Definition for Neighbor BSS list
905typedef struct sSirNeighborBssList
906{
907 tANI_U32 numBss;
908 tSirNeighborBssInfo bssList[1];
909} tSirNeighborBssList, *tpSirNeighborBssList;
910
911/// Definition for Neighbor BSS list with WDS info
912typedef struct sSirNeighborBssWdsList
913{
914 tANI_U32 numBssWds;
915 tSirNeighborBssWdsInfo bssWdsList[1];
916} tSirNeighborBssWdsList, *tpSirNeighborBssWdsList;
917
918#if (WNI_POLARIS_FW_PRODUCT == AP)
919/// Definition for kick starting measurements
920/// ---> MAC
921typedef struct sSirSmeMeasurementReq
922{
923 tANI_U16 messageType; // eWNI_SME_MEASUREMENT_REQ
924 tANI_U16 length;
925 tSirMeasControl measControl;
926 tSirMeasDuration measDuration;
927 // This indicates how often SME_MEASUREMENT_IND message
928 // is sent to host
929 tANI_U32 measIndPeriod;
930 // This channel list will have current channel also
931 tSirChannelList channelList;
932} tSirSmeMeasurementReq, *tpSirSmeMeasurementReq;
933
934/// Definition for response message to previously
935/// issued Measurement request
936/// MAC --->
937typedef struct sSirSmeMeasurementRsp
938{
939 tANI_U16 messageType; // eWNI_SME_MEASUREMENT_RSP
940 tANI_U16 length;
941 tSirResultCodes statusCode;
942 tANI_U16 transactionId; // Transaction ID for cmd
943} tSirSmeMeasurementRsp, *tpSirSmeMeasurementRsp;
944
945/// Definition for Measurement Matrix info
946// NOTE: This should include current channel measurements
947typedef struct sSirMeasMatrixInfo
948{
949 tANI_U8 channelNumber;
950 tANI_S8 compositeRssi;
951 tANI_S32 aggrRssi; // Due to all packets in this channel
952 tANI_U32 totalPackets;
953} tSirMeasMatrixInfo, *tpSirMeasMatrixInfo;
954
955/// Definition for Measurement Matrix List
956typedef struct sSirMeasMatrixList
957{
958 tANI_U8 numChannels;
959 tSirMeasMatrixInfo measMatrixList[1];
960} tSirMeasMatrixList, *tpSirMeasMatrixList;
961/// Definition for Measurement indication
962/// MAC --->
963/// Note : This is only sent when there was prior
964/// SME_MEASUREMENT_REQ received by MAC
965typedef struct sSirSmeMeasurementInd
966{
967 tANI_U16 messageType; // eWNI_SME_MEASUREMENT_IND
968 tANI_U16 length;
969 tANI_U32 duration;
970 tSirLoad currentLoad; // on this AP radio
971 tSirMeasMatrixList measMatrixList;
972 tSirNeighborBssWdsList neighborBssWdsList;
973} tSirSmeMeasurementInd, *tpSirSmeMeasurementInd;
974
975/// Definition for Backhaul Link status change Indication
976/// MAC --->
977typedef struct sSirSmeWdsInfoInd
978{
979 tANI_U16 messageType; // eWNI_SME_WDS_INFO_IND
980 tANI_U16 length;
981 tSirWdsInfo wdsInfo;
982} tSirSmeWdsInfoInd, *tpSirSmeWdsInfoInd;
983
984/// Definition for Backhaul Link Info Set Request
985/// ---> MAC
986typedef struct sSirSmeSetWdsInfoReq
987{
988 tANI_U16 messageType; // eWNI_SME_SET_WDS_INFO_REQ
989 tANI_U16 length;
990 tANI_U16 transactionId;
991 tSirWdsInfo wdsInfo;
992} tSirSmeSetWdsInfoReq, *tpSirSmeSetWdsInfoReq;
993
994/// Definition for Backhaul Link Lnfo Set Response
995/// MAC --->
996typedef struct sSirSmeSetWdsInfoRsp
997{
998 tANI_U16 messageType; // eWNI_SME_SET_WDS_INFO_RSP
999 tANI_U16 length;
1000 tSirResultCodes statusCode;
1001 tANI_U16 transactionId;
1002} tSirSmeSetWdsInfoRsp, *tpSirSmeSetWdsInfoRsp;
1003#endif
1004#endif
1005
1006/// Definition for Radar Info
1007typedef struct sSirRadarInfo
1008{
1009 tANI_U8 channelNumber;
1010 tANI_U16 radarPulseWidth; // in usecond
1011 tANI_U16 numRadarPulse;
1012} tSirRadarInfo, *tpSirRadarInfo;
1013
1014#define SIR_RADAR_INFO_SIZE (sizeof(tANI_U8) + 2 *sizeof(tANI_U16))
1015
1016/// Two Background Scan mode
1017typedef enum eSirBackgroundScanMode
1018{
1019 eSIR_AGGRESSIVE_BACKGROUND_SCAN = 0,
1020 eSIR_NORMAL_BACKGROUND_SCAN = 1
1021} tSirBackgroundScanMode;
1022
1023/// Two types of traffic check
1024typedef enum eSirLinkTrafficCheck
1025{
1026 eSIR_DONT_CHECK_LINK_TRAFFIC_BEFORE_SCAN = 0,
1027 eSIR_CHECK_LINK_TRAFFIC_BEFORE_SCAN = 1
1028} tSirLinkTrafficCheck;
1029
1030#define SIR_BG_SCAN_RETURN_CACHED_RESULTS 0x0
1031#define SIR_BG_SCAN_PURGE_RESUTLS 0x80
1032#define SIR_BG_SCAN_RETURN_FRESH_RESULTS 0x01
1033#define SIR_SCAN_MAX_NUM_SSID 0x09
1034
1035/// Definition for scan request
1036typedef struct sSirSmeScanReq
1037{
1038 tANI_U16 messageType; // eWNI_SME_SCAN_REQ
1039 tANI_U16 length;
1040 tANI_U8 sessionId; // Session ID
1041 tANI_U16 transactionId; // Transaction ID for cmd
1042 tSirMacAddr bssId;
1043 tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
1044 tSirMacAddr selfMacAddr; //Added For BT-AMP Support
1045 tSirBssType bssType;
1046 tANI_U8 dot11mode;
1047 tSirScanType scanType;
1048 /**
1049 * minChannelTime. Not used if scanType is passive.
1050 * 0x0 - Dont Use min channel timer. Only max channel timeout will used.
1051 * 11k measurements set this to zero to user only single duration for scan.
1052 * <valid timeout> - Timeout value used for min channel timeout.
1053 */
1054 tANI_U32 minChannelTime;
1055 /**
1056 * maxChannelTime.
1057 * 0x0 - Invalid. In case of active scan.
1058 * In case of passive scan, MAX( maxChannelTime, WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME) is used.
1059 *
1060 */
1061 tANI_U32 maxChannelTime;
1062 /**
1063 * returnAfterFirstMatch can take following values:
1064 * 0x00 - Return SCAN_RSP message after complete channel scan
1065 * 0x01 - Return SCAN_RSP message after collecting BSS description
1066 * that matches scan criteria.
1067 * 0xC0 - Return after collecting first 11d IE from 2.4 GHz &
1068 * 5 GHz band channels
1069 * 0x80 - Return after collecting first 11d IE from 5 GHz band
1070 * channels
1071 * 0x40 - Return after collecting first 11d IE from 2.4 GHz
1072 * band channels
1073 *
1074 * Values of 0xC0, 0x80 & 0x40 are to be used by
1075 * Roaming/application when 11d is enabled.
1076 */
1077 tANI_U8 returnAfterFirstMatch;
1078
1079 /**
1080 * returnUniqueResults can take following values:
1081 * 0 - Collect & report all received BSS descriptions from same BSS.
1082 * 1 - Collect & report unique BSS description from same BSS.
1083 */
1084 tANI_U8 returnUniqueResults;
1085
1086 /**
1087 * returnFreshResults can take following values:
1088 * 0x00 - Return background scan results.
1089 * 0x80 - Return & purge background scan results
1090 * 0x01 - Trigger fresh scan instead of returning background scan
1091 * results.
1092 * 0x81 - Trigger fresh scan instead of returning background scan
1093 * results and purge background scan results.
1094 */
1095 tANI_U8 returnFreshResults;
1096
1097 /* backgroundScanMode can take following values:
1098 * 0x0 - agressive scan
1099 * 0x1 - normal scan where HAL will check for link traffic
1100 * prior to proceeding with the scan
1101 */
1102 tSirBackgroundScanMode backgroundScanMode;
1103
1104 tANI_U8 hiddenSsid;
1105
1106 /* Number of SSIDs to scan */
1107 tANI_U8 numSsid;
1108
1109 //channelList has to be the last member of this structure. Check tSirChannelList for the reason.
1110 /* This MUST be the last field of the structure */
1111
1112
1113#ifdef WLAN_FEATURE_P2P
1114 tANI_BOOLEAN p2pSearch;
1115#endif
1116 tANI_U16 uIEFieldLen;
1117 tANI_U16 uIEFieldOffset;
1118
1119 //channelList MUST be the last field of this structure
1120 tSirChannelList channelList;
1121 /*-----------------------------
1122 tSirSmeScanReq....
1123 -----------------------------
1124 uIEFiledLen
1125 -----------------------------
1126 uIEFiledOffset ----+
1127 ----------------------------- |
1128 channelList.numChannels |
1129 ----------------------------- |
1130 ... variable size up to |
1131 channelNumber[numChannels-1] |
1132 This can be zero, if |
1133 numChannel is zero. |
1134 ----------------------------- <--+
1135 ... variable size uIEFiled
1136 up to uIEFieldLen (can be 0)
1137 -----------------------------*/
1138} tSirSmeScanReq, *tpSirSmeScanReq;
1139
1140
1141/// Definition for response message to previously issued scan request
1142typedef struct sSirSmeScanRsp
1143{
1144 tANI_U16 messageType; // eWNI_SME_SCAN_RSP
1145 tANI_U16 length;
1146 tANI_U8 sessionId;
1147 tSirResultCodes statusCode;
1148 tANI_U16 transcationId;
1149 tSirBssDescription bssDescription[1];
1150} tSirSmeScanRsp, *tpSirSmeScanRsp;
1151
1152/// Sme Req message to set the Background Scan mode
1153typedef struct sSirSmeBackgroundScanModeReq
1154{
1155 tANI_U16 messageType; // eWNI_SME_BACKGROUND_SCAN_MODE_REQ
1156 tANI_U16 length;
1157 tSirBackgroundScanMode mode;
1158} tSirSmeBackgroundScanModeReq, *tpSirSmeBackgroundScanModeReq;
1159
1160/// Background Scan Statisics
1161typedef struct sSirBackgroundScanInfo {
1162 tANI_U32 numOfScanSuccess;
1163 tANI_U32 numOfScanFailure;
1164 tANI_U32 reserved;
1165} tSirBackgroundScanInfo, *tpSirBackgroundScanInfo;
1166
1167#define SIR_BACKGROUND_SCAN_INFO_SIZE (3 * sizeof(tANI_U32))
1168
1169/// Definition for Authentication request
1170typedef struct sSirSmeAuthReq
1171{
1172 tANI_U16 messageType; // eWNI_SME_AUTH_REQ
1173 tANI_U16 length;
1174 tANI_U8 sessionId; // Session ID
1175 tANI_U16 transactionId; // Transaction ID for cmd
1176 tSirMacAddr bssId; // Self BSSID
1177 tSirMacAddr peerMacAddr;
1178 tAniAuthType authType;
1179 tANI_U8 channelNumber;
1180} tSirSmeAuthReq, *tpSirSmeAuthReq;
1181
1182/// Definition for reponse message to previously issued Auth request
1183typedef struct sSirSmeAuthRsp
1184{
1185 tANI_U16 messageType; // eWNI_SME_AUTH_RSP
1186 tANI_U16 length;
1187 tANI_U8 sessionId; // Session ID
1188 tANI_U16 transactionId; // Transaction ID for cmd
1189 tSirMacAddr peerMacAddr;
1190 tAniAuthType authType;
1191 tSirResultCodes statusCode;
1192 tANI_U16 protStatusCode; //It holds reasonCode when Pre-Auth fails due to deauth frame.
1193 //Otherwise it holds status code.
1194} tSirSmeAuthRsp, *tpSirSmeAuthRsp;
1195
1196#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1197/// Association type
1198typedef enum eSirAssocType
1199{
1200 eSIR_NORMAL,
1201 eSIR_TRANSFERRED,
1202 eSIR_DONOT_USE_ASSOC_TYPE = SIR_MAX_ENUM_SIZE
1203} tSirAssocType;
1204#endif
1205
1206#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1207typedef enum eSirBpIndicatorType
1208{
1209 eSIR_WIRELESS_BP,
1210 eSIR_WIRED_BP
1211} tSirBpIndicatorType;
1212
1213#endif
1214
1215#ifdef FEATURE_WLAN_INTEGRATED_SOC
1216/// Definition for Join/Reassoc info - Reshmi: need to check if this is a def which moved from elsehwere.
1217typedef struct sJoinReassocInfo
1218{
1219 tAniTitanCBNeighborInfo cbNeighbors;
1220 tAniBool spectrumMgtIndicator;
1221 tSirMacPowerCapInfo powerCap;
1222 tSirSupChnl supportedChannels;
1223} tJoinReassocInfo, *tpJoinReassocInfo;
1224#endif
1225
1226/// Definition for join request
1227/// ---> MAC
1228/// WARNING! If you add a field in JOIN REQ.
1229/// Make sure to add it in REASSOC REQ
1230/// The Serdes function is the same and its
1231/// shared with REASSOC. So if we add a field
1232// here and dont add it in REASSOC REQ. It will BREAK!!! REASSOC.
1233typedef struct sSirSmeJoinReq
1234{
1235 tANI_U16 messageType; // eWNI_SME_JOIN_REQ
1236 tANI_U16 length;
1237 tANI_U8 sessionId;
1238 tANI_U16 transactionId;
1239 tSirMacSSid ssId;
1240 tSirMacAddr selfMacAddr; // self Mac address
1241 tSirBssType bsstype; // add new type for BT -AMP STA and AP Modules
1242 tANI_U8 dot11mode; // to support BT-AMP
1243 tVOS_CON_MODE staPersona; //Persona
1244
1245 /*This contains the UAPSD Flag for all 4 AC
1246 * B0: AC_VO UAPSD FLAG
1247 * B1: AC_VI UAPSD FLAG
1248 * B2: AC_BK UAPSD FLAG
1249 * B3: AC_BE UASPD FLAG
1250 */
1251 tANI_U8 uapsdPerAcBitmask;
1252
1253#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1254 tSirAssocType assocType; // Indicates whether STA is
1255 // sending (Re) Association
1256 // due to load balance or not
1257#endif
1258 tSirMacRateSet operationalRateSet;// Has 11a or 11b rates
1259 tSirMacRateSet extendedRateSet; // Has 11g rates
1260 tSirRSNie rsnIE; // RSN IE to be sent in
1261 // (Re) Association Request
1262#ifdef FEATURE_WLAN_CCX
1263 tSirCCKMie cckmIE; // CCMK IE to be included as handler for join and reassoc is
1264 // the same. The join will never carry cckm, but will be set to
1265 // 0.
1266#endif
1267
1268 tSirAddie addIEScan; // Additional IE to be sent in
1269 // (unicast) Probe Request at the time of join
1270
1271 tSirAddie addIEAssoc; // Additional IE to be sent in
1272 // (Re) Association Request
1273
1274 tAniEdType UCEncryptionType;
1275
1276 tAniEdType MCEncryptionType;
1277#ifdef WLAN_FEATURE_VOWIFI_11R
1278 tAniBool is11Rconnection;
1279#endif
1280#ifdef FEATURE_WLAN_CCX
1281 tAniBool isCCXconnection;
1282 tCCXTspecInfo ccxTspecInfo;
1283#endif
1284
1285#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX
1286 tAniBool isFastTransitionEnabled;
1287#endif
1288
1289#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
1290 tAniBool bpIndicator;
1291 tSirBpIndicatorType bpType;
1292 tSirNeighborBssList neighborBssList; // TBD Move this outside 'AP'
1293 // flag
1294#endif
1295 tAniTitanCBNeighborInfo cbNeighbors;
1296 tAniBool spectrumMgtIndicator;
1297 tSirMacPowerCapInfo powerCap;
1298 tSirSupChnl supportedChannels;
1299//#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA )
1300 tSirBssDescription bssDescription;
1301//#endif
1302
1303} tSirSmeJoinReq, *tpSirSmeJoinReq;
1304
1305/// Definition for reponse message to previously issued join request
1306/// MAC --->
1307typedef struct sSirSmeJoinRsp
1308{
1309 tANI_U16 messageType; // eWNI_SME_JOIN_RSP
1310 tANI_U16 length;
1311 tANI_U8 sessionId; // Session ID
1312 tANI_U16 transactionId; // Transaction ID for cmd
1313 tSirResultCodes statusCode;
1314#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA)
1315 tAniAuthType authType;
1316// tANI_U16 staId; // Station ID for peer
1317#endif
1318#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1319 // Following are needed for Roaming algorithm
1320 // to 'associate' with an alternate BSS.
1321 tSirMacAddr alternateBssId;
1322 tANI_U8 alternateChannelId;
1323#endif
1324 tANI_U16 protStatusCode; //It holds reasonCode when join fails due to deauth/disassoc frame.
1325 //Otherwise it holds status code.
1326 tANI_U16 aid;
1327 tANI_U32 beaconLength;
1328 tANI_U32 assocReqLength;
1329 tANI_U32 assocRspLength;
1330#ifdef WLAN_FEATURE_VOWIFI_11R
1331 tANI_U32 parsedRicRspLen;
1332#endif
1333#ifdef FEATURE_WLAN_CCX
1334 tANI_U32 tspecIeLen;
1335#endif
1336 tANI_U32 staId;//Station ID for peer
1337
1338 /*The DPU signatures will be sent eventually to TL to help it determine the
1339 association to which a packet belongs to*/
1340 /*Unicast DPU signature*/
1341 tANI_U8 ucastSig;
1342
1343 /*Broadcast DPU signature*/
1344 tANI_U8 bcastSig;
1345
1346 tANI_U8 frames[ 1 ];
1347} tSirSmeJoinRsp, *tpSirSmeJoinRsp;
1348
1349/// Definition for Authentication indication from peer
1350typedef struct sSirSmeAuthInd
1351{
1352 tANI_U16 messageType; // eWNI_SME_AUTH_IND
1353 tANI_U16 length;
1354 tANI_U8 sessionId;
1355 tSirMacAddr bssId; // Self BSSID
1356 tSirMacAddr peerMacAddr;
1357 tAniAuthType authType;
1358} tSirSmeAuthInd, *tpSirSmeAuthInd;
1359
1360/// probereq from peer, when wsc is enabled
1361typedef struct sSirSmeProbereq
1362{
1363 tANI_U16 messageType; // eWNI_SME_PROBE_REQ
1364 tANI_U16 length;
1365 tANI_U8 sessionId;
1366 tSirMacAddr peerMacAddr;
1367 tANI_U16 devicePasswdId;
1368} tSirSmeProbeReq, *tpSirSmeProbeReq;
1369
1370/// Definition for Association indication from peer
1371/// MAC --->
1372typedef struct sSirSmeAssocInd
1373{
1374 tANI_U16 messageType; // eWNI_SME_ASSOC_IND
1375 tANI_U16 length;
1376 tANI_U8 sessionId;
1377 tSirMacAddr peerMacAddr;
1378 tANI_U16 aid;
1379 tSirMacAddr bssId; // Self BSSID
1380 tANI_U16 staId; // Station ID for peer
1381 tANI_U8 uniSig; // DPU signature for unicast packets
1382 tANI_U8 bcastSig; // DPU signature for broadcast packets
1383 tAniAuthType authType;
1384 tAniSSID ssId; // SSID used by STA to associate
1385 tSirRSNie rsnIE;// RSN IE received from peer
1386 tSirAddie addIE;// Additional IE received from peer, which possibly include WSC IE and/or P2P IE
1387
1388#if defined (ANI_PRODUCT_TYPE_AP)
1389 tANI_U16 seqNum;
1390 tAniBool wniIndicator;
1391 tAniBool bpIndicator;
1392 tSirBpIndicatorType bpType;
1393 tSirAssocType assocType; // Indicates whether STA is LB'ed or not
1394 tSirLoad load; // Current load on the radio for LB
1395 tSirNeighborBssList neighborList; // List received from STA
1396 tANI_U16 capabilityInfo; // STA capability
1397 tSirNwType nwType; // Indicates 11a/b/g
1398#endif
1399 tAniTitanHtCapabilityInfo titanHtCaps;
1400 // powerCap & supportedChannels are present only when
1401 // spectrumMgtIndicator flag is set
1402 tAniBool spectrumMgtIndicator;
1403 tSirMacPowerCapInfo powerCap;
1404 tSirSupChnl supportedChannels;
1405#ifdef WLAN_SOFTAP_FEATURE
1406 tAniBool wmmEnabledSta; /* if present - STA is WMM enabled */
1407 tAniBool reassocReq;
1408 // Required for indicating the frames to upper layer
1409 tANI_U32 beaconLength;
1410 tANI_U8* beaconPtr;
1411 tANI_U32 assocReqLength;
1412 tANI_U8* assocReqPtr;
1413#endif
1414} tSirSmeAssocInd, *tpSirSmeAssocInd;
1415
1416
1417/// Definition for Association confirm
1418/// ---> MAC
1419typedef struct sSirSmeAssocCnf
1420{
1421 tANI_U16 messageType; // eWNI_SME_ASSOC_CNF
1422 tANI_U16 length;
1423 tSirResultCodes statusCode;
1424 tSirMacAddr bssId; // Self BSSID
1425 tSirMacAddr peerMacAddr;
1426 tANI_U16 aid;
1427 tSirMacAddr alternateBssId;
1428 tANI_U8 alternateChannelId;
1429} tSirSmeAssocCnf, *tpSirSmeAssocCnf;
1430
1431/// Definition for Reassociation request
1432/// ---> MAC
1433/// WARNING! If you add a field in REASSOC REQ.
1434/// Make sure to add it in JOIN REQ
1435/// The Serdes function is the same and its
1436/// shared with REASSOC. So if we add a field
1437// here and dont add it in JOIN REQ. It will BREAK!!! JOIN.
1438typedef struct sSirSmeReassocReq
1439{
1440 tANI_U16 messageType; // eWNI_SME_REASSOC_REQ
1441 tANI_U16 length;
1442 tANI_U8 sessionId;
1443 tANI_U16 transactionId;
1444 tSirMacSSid ssId;
1445 tSirMacAddr selfMacAddr; // self Mac address
1446 tSirBssType bsstype; // add new type for BT -AMP STA and AP Modules
1447 tANI_U8 dot11mode; // to support BT-AMP
1448 tVOS_CON_MODE staPersona; //Persona
1449
1450 /*This contains the UAPSD Flag for all 4 AC
1451 * B0: AC_VO UAPSD FLAG
1452 * B1: AC_VI UAPSD FLAG
1453 * B2: AC_BK UAPSD FLAG
1454 * B3: AC_BE UASPD FLAG
1455 */
1456 tANI_U8 uapsdPerAcBitmask;
1457
1458#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1459 tSirAssocType assocType; // Indicates whether STA is
1460 // sending (Re) Association
1461 // due to load balance or not
1462#endif
1463
1464 tSirMacRateSet operationalRateSet;// Has 11a or 11b rates
1465 tSirMacRateSet extendedRateSet; // Has 11g rates
1466
1467 tSirRSNie rsnIE; // RSN IE to be sent in
1468 // (Re) Association Request
1469
1470#ifdef FEATURE_WLAN_CCX
1471 tSirCCKMie cckmIE; // CCMK IE to be included in ReAssoc if length != 0.
1472#endif
1473 tSirAddie addIEScan; // Addtional IE to be sent in
1474 // (unicast) Probe Request at the time of join
1475
1476 tSirAddie addIEAssoc; // Additional IE to be sent in
1477 // (Re) Association Request
1478
1479 tAniEdType UCEncryptionType;
1480 tAniEdType MCEncryptionType;
1481#ifdef WLAN_FEATURE_VOWIFI_11R
1482 tAniBool is11Rconnection;
1483#endif
1484#ifdef FEATURE_WLAN_CCX
1485 tAniBool isCCXconnection;
1486 tCCXTspecInfo ccxTspecInfo;
1487#endif
1488#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX
1489 tAniBool isFastTransitionEnabled;
1490#endif
1491
1492#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
1493 tAniBool bpIndicator;
1494 tSirBpIndicatorType bpType;
1495 tSirNeighborBssList neighborBssList;
1496#endif
1497 tAniTitanCBNeighborInfo cbNeighbors;
1498 tAniBool spectrumMgtIndicator;
1499 tSirMacPowerCapInfo powerCap;
1500 tSirSupChnl supportedChannels;
1501//#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA )
1502 tSirBssDescription bssDescription;
1503//#endif
1504} tSirSmeReassocReq, *tpSirSmeReassocReq;
1505
1506/// Definition for reponse message to previously issued
1507/// Reassociation request
1508typedef struct sSirSmeReassocRsp
1509{
1510 tANI_U16 messageType; // eWNI_SME_REASSOC_RSP
1511 tANI_U16 length;
1512 tANI_U8 sessionId; // Session ID
1513 tANI_U16 transactionId; // Transaction ID for cmd
1514 tSirResultCodes statusCode;
1515 tANI_U8 staId; // Station ID for peer
1516#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA)
1517 tAniAuthType authType;
1518#endif
1519#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1520 tSirMacAddr alternateBssId;
1521 tANI_U8 alternateChannelId;
1522#endif
1523} tSirSmeReassocRsp, *tpSirSmeReassocRsp;
1524
1525/// Definition for Reassociation indication from peer
1526typedef struct sSirSmeReassocInd
1527{
1528 tANI_U16 messageType; // eWNI_SME_REASSOC_IND
1529 tANI_U16 length;
1530 tANI_U8 sessionId; // Session ID
1531 tSirMacAddr peerMacAddr;
1532 tSirMacAddr oldMacAddr;
1533 tANI_U16 aid;
1534 tSirMacAddr bssId; // Self BSSID
1535 tANI_U16 staId; // Station ID for peer
1536 tAniAuthType authType;
1537 tAniSSID ssId; // SSID used by STA to reassociate
1538 tSirRSNie rsnIE; // RSN IE received from peer
1539
1540 tSirAddie addIE; // Additional IE received from peer
1541
1542#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1543 tANI_U16 seqNum;
1544 tAniBool wniIndicator;
1545 tAniBool bpIndicator;
1546 tSirBpIndicatorType bpType;
1547 tSirAssocType reassocType; // Indicates whether STA is LB'ed or not
1548 tSirLoad load; // Current load on the radio for LB
1549 tSirNeighborBssList neighborList; // List received from STA
1550 tANI_U16 capabilityInfo; // STA capability
1551 tSirNwType nwType; // Indicates 11a/b/g
1552#endif
1553 tAniTitanHtCapabilityInfo titanHtCaps;
1554 // powerCap & supportedChannels are present only when
1555 // spectrumMgtIndicator flag is set
1556 tAniBool spectrumMgtIndicator;
1557 tSirMacPowerCapInfo powerCap;
1558 tSirSupChnl supportedChannels;
1559#ifdef WLAN_SOFTAP_FEATURE
1560 // Required for indicating the frames to upper layer
1561 // TODO: use the appropriate names to distinguish between the other similar names used above for station mode of operation
1562 tANI_U32 beaconLength;
1563 tANI_U8* beaconPtr;
1564 tANI_U32 assocReqLength;
1565 tANI_U8* assocReqPtr;
1566#endif
1567} tSirSmeReassocInd, *tpSirSmeReassocInd;
1568
1569/// Definition for Reassociation confirm
1570/// ---> MAC
1571typedef struct sSirSmeReassocCnf
1572{
1573 tANI_U16 messageType; // eWNI_SME_REASSOC_CNF
1574 tANI_U16 length;
1575 tSirResultCodes statusCode;
1576 tSirMacAddr bssId; // Self BSSID
1577 tSirMacAddr peerMacAddr;
1578 tANI_U16 aid;
1579 tSirMacAddr alternateBssId;
1580 tANI_U8 alternateChannelId;
1581} tSirSmeReassocCnf, *tpSirSmeReassocCnf;
1582
1583#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
1584typedef enum {
1585 // Based on Periodic evaluation
1586 eSIR_PERIODIC_EVALATION,
1587
1588 // Dectection of primary users such as RADARs
1589 eSIR_DETECTION_OF_RADAR,
1590
1591 // Degradation in system performance (eg. Triggered by
1592 // increase in PER beyond a certain threshold)
1593 eSIR_PERFORMANCE_DEGRADATION,
1594
1595 // Frequency changed due to previously issued SWITCH_CHANNEL_REQ
1596 eSIR_UPPER_LAYER_TRIGGERED
1597}tSirFreqChangeReason;
1598#endif
1599
1600/// Enum definition for Wireless medium status change codes
1601typedef enum eSirSmeStatusChangeCode
1602{
1603 eSIR_SME_DEAUTH_FROM_PEER,
1604 eSIR_SME_DISASSOC_FROM_PEER,
1605 eSIR_SME_LOST_LINK_WITH_PEER,
1606 eSIR_SME_CHANNEL_SWITCH,
1607 eSIR_SME_JOINED_NEW_BSS,
1608 eSIR_SME_LEAVING_BSS,
1609 eSIR_SME_IBSS_ACTIVE,
1610 eSIR_SME_IBSS_INACTIVE,
1611 eSIR_SME_IBSS_PEER_DEPARTED,
1612 eSIR_SME_RADAR_DETECTED,
1613 eSIR_SME_IBSS_NEW_PEER,
1614 eSIR_SME_AP_CAPS_CHANGED,
1615 eSIR_SME_BACKGROUND_SCAN_FAIL,
1616 eSIR_SME_CB_LEGACY_BSS_FOUND_BY_AP,
1617 eSIR_SME_CB_LEGACY_BSS_FOUND_BY_STA
1618} tSirSmeStatusChangeCode;
1619
1620typedef struct sSirSmeNewBssInfo
1621{
1622 tSirMacAddr bssId;
1623 tANI_U8 channelNumber;
1624 tANI_U8 reserved;
1625 tSirMacSSid ssId;
1626} tSirSmeNewBssInfo, *tpSirSmeNewBssInfo;
1627
1628typedef struct sSirSmeApNewCaps
1629{
1630 tANI_U16 capabilityInfo;
1631 tSirMacAddr bssId;
1632 tANI_U8 channelId;
1633 tANI_U8 reserved[3];
1634 tSirMacSSid ssId;
1635} tSirSmeApNewCaps, *tpSirSmeApNewCaps;
1636
1637/**
1638 * Table below indicates what information is passed for each of
1639 * the Wireless Media status change notifications:
1640 *
1641 * Status Change code Status change info
1642 * ----------------------------------------------------------------------
1643 * eSIR_SME_DEAUTH_FROM_PEER Reason code received in DEAUTH frame
1644 * eSIR_SME_DISASSOC_FROM_PEER Reason code received in DISASSOC frame
1645 * eSIR_SME_LOST_LINK_WITH_PEER None
1646 * eSIR_SME_CHANNEL_SWITCH New channel number
1647 * eSIR_SME_JOINED_NEW_BSS BSSID, SSID and channel number
1648 * eSIR_SME_LEAVING_BSS None
1649 * eSIR_SME_IBSS_ACTIVE Indicates that another STA joined
1650 * IBSS apart from this STA that
1651 * started IBSS
1652 * eSIR_SME_IBSS_INACTIVE Indicates that only this STA is left
1653 * in IBSS
1654 * eSIR_SME_RADAR_DETECTED Indicates that radar is detected
1655 * eSIR_SME_IBSS_NEW_PEER Indicates that a new peer is detected
1656 * eSIR_SME_AP_CAPS_CHANGED Indicates that capabilities of the AP
1657 * that STA is currently associated with
1658 * have changed.
1659 * eSIR_SME_BACKGROUND_SCAN_FAIL Indicates background scan failure
1660 */
1661
1662/// Definition for Wireless medium status change notification
1663typedef struct sSirSmeWmStatusChangeNtf
1664{
1665 tANI_U16 messageType; // eWNI_SME_WM_STATUS_CHANGE_NTF
1666 tANI_U16 length;
1667 tANI_U8 sessionId; // Session ID
1668 tSirSmeStatusChangeCode statusChangeCode;
1669 tSirMacAddr bssId; // Self BSSID
1670 union
1671 {
1672 tANI_U16 deAuthReasonCode; // eSIR_SME_DEAUTH_FROM_PEER
1673 tANI_U16 disassocReasonCode; // eSIR_SME_DISASSOC_FROM_PEER
1674 // none for eSIR_SME_LOST_LINK_WITH_PEER
1675 tANI_U8 newChannelId; // eSIR_SME_CHANNEL_SWITCH
1676 tSirSmeNewBssInfo newBssInfo; // eSIR_SME_JOINED_NEW_BSS
1677 // none for eSIR_SME_LEAVING_BSS
1678 // none for eSIR_SME_IBSS_ACTIVE
1679 // none for eSIR_SME_IBSS_INACTIVE
1680#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
1681 tSirRadarInfo radarInfo; // eSIR_SME_RADAR_DETECTED
1682#endif
1683 tSirNewIbssPeerInfo newIbssPeerInfo; // eSIR_SME_IBSS_NEW_PEER
1684 tSirSmeApNewCaps apNewCaps; // eSIR_SME_AP_CAPS_CHANGED
1685 tSirBackgroundScanInfo bkgndScanInfo; // eSIR_SME_BACKGROUND_SCAN_FAIL
1686 tAniTitanCBNeighborInfo cbNeighbors; // eSIR_SME_CB_LEGACY_BSS_FOUND_BY_STA
1687#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1688 tSirNeighborBssWdsInfo neighborWdsInfo; // eSIR_SME_CB_LEGACY_BSS_FOUND_BY_AP
1689#endif
1690 } statusChangeInfo;
1691} tSirSmeWmStatusChangeNtf, *tpSirSmeWmStatusChangeNtf;
1692
1693/// Definition for Disassociation request
1694typedef
1695#ifdef WLAN_SOFTAP_FEATURE
1696__ani_attr_pre_packed
1697#endif
1698struct sSirSmeDisassocReq
1699{
1700 tANI_U16 messageType; // eWNI_SME_DISASSOC_REQ
1701 tANI_U16 length;
1702 tANI_U8 sessionId; // Session ID
1703 tANI_U16 transactionId; // Transaction ID for cmd
1704 tSirMacAddr bssId; // Peer BSSID
1705 tSirMacAddr peerMacAddr;
1706 tANI_U16 reasonCode;
1707 tANI_U8 doNotSendOverTheAir; //This flag tells LIM whether to send the disassoc OTA or not
1708 //This will be set in while handing off from one AP to other
1709#if (WNI_POLARIS_FW_PRODUCT == AP)
1710 tANI_U16 aid;
1711#if (WNI_POLARIS_FW_PACKAGE == ADVANCED)
1712 tANI_U16 seqNum;
1713#endif
1714#endif
1715}
1716#ifdef WLAN_SOFTAP_FEATURE
1717__ani_attr_packed
1718#endif
1719tSirSmeDisassocReq, *tpSirSmeDisassocReq;
1720
1721/// Definition for Tkip countermeasures request
1722#ifdef WLAN_SOFTAP_FEATURE
1723typedef __ani_attr_pre_packed struct sSirSmeTkipCntrMeasReq
1724{
1725 tANI_U16 messageType; // eWNI_SME_DISASSOC_REQ
1726 tANI_U16 length;
1727 tANI_U8 sessionId; // Session ID
1728 tANI_U16 transactionId; // Transaction ID for cmd
1729 tSirMacAddr bssId; // Peer BSSID
1730 tANI_BOOLEAN bEnable; // Start/stop countermeasures
1731} __ani_attr_packed tSirSmeTkipCntrMeasReq, *tpSirSmeTkipCntrMeasReq;
1732#endif
1733
1734typedef struct sAni64BitCounters
1735{
1736 tANI_U32 Hi;
1737 tANI_U32 Lo;
1738}tAni64BitCounters, *tpAni64BitCounters;
1739
1740typedef struct sAniSecurityStat
1741{
1742 tAni64BitCounters txBlks;
1743 tAni64BitCounters rxBlks;
1744 tAni64BitCounters formatErrorCnt;
1745 tAni64BitCounters decryptErr;
1746 tAni64BitCounters protExclCnt;
1747 tAni64BitCounters unDecryptableCnt;
1748 tAni64BitCounters decryptOkCnt;
1749
1750}tAniSecurityStat, *tpAniSecurityStat;
1751
1752typedef struct sAniTxRxCounters
1753{
1754 tANI_U32 txFrames; // Incremented for every packet tx
1755 tANI_U32 rxFrames;
1756 tANI_U32 nRcvBytes;
1757 tANI_U32 nXmitBytes;
1758}tAniTxRxCounters, *tpAniTxRxCounters;
1759
1760typedef struct sAniTxRxStats
1761{
1762 tAni64BitCounters txFrames;
1763 tAni64BitCounters rxFrames;
1764 tAni64BitCounters nRcvBytes;
1765 tAni64BitCounters nXmitBytes;
1766
1767}tAniTxRxStats,*tpAniTxRxStats;
1768
1769typedef struct sAniSecStats
1770{
1771 tAniSecurityStat aes;
1772 tAni64BitCounters aesReplays;
1773 tAniSecurityStat tkip;
1774 tAni64BitCounters tkipReplays;
1775 tAni64BitCounters tkipMicError;
1776
1777 tAniSecurityStat wep;
1778#if defined(FEATURE_WLAN_WAPI) && !defined(LIBRA_WAPI_SUPPORT)
1779 tAniSecurityStat wpi;
1780 tAni64BitCounters wpiReplays;
1781 tAni64BitCounters wpiMicError;
1782#endif
1783}tAniSecStats, *tpAniSecStats;
1784
1785#define SIR_MAX_RX_CHAINS 3
1786
1787typedef struct sAniStaStatStruct
1788{
1789 /* following statistic elements till expandPktRxCntLo are not filled with valid data.
1790 * These are kept as it is, since WSM is using this structure.
1791 * These elements can be removed whenever WSM is updated.
1792 * Phystats is used to hold phystats from BD.
1793 */
1794 tANI_U32 sentAesBlksUcastHi;
1795 tANI_U32 sentAesBlksUcastLo;
1796 tANI_U32 recvAesBlksUcastHi;
1797 tANI_U32 recvAesBlksUcastLo;
1798 tANI_U32 aesFormatErrorUcastCnts;
1799 tANI_U32 aesReplaysUcast;
1800 tANI_U32 aesDecryptErrUcast;
1801 tANI_U32 singleRetryPkts;
1802 tANI_U32 failedTxPkts;
1803 tANI_U32 ackTimeouts;
1804 tANI_U32 multiRetryPkts;
1805 tANI_U32 fragTxCntsHi;
1806 tANI_U32 fragTxCntsLo;
1807 tANI_U32 transmittedPktsHi;
1808 tANI_U32 transmittedPktsLo;
1809 tANI_U32 phyStatHi; //These are used to fill in the phystats.
1810 tANI_U32 phyStatLo; //This is only for private use.
1811
1812 tANI_U32 uplinkRssi;
1813 tANI_U32 uplinkSinr;
1814 tANI_U32 uplinkRate;
1815 tANI_U32 downlinkRssi;
1816 tANI_U32 downlinkSinr;
1817 tANI_U32 downlinkRate;
1818 tANI_U32 nRcvBytes;
1819 tANI_U32 nXmitBytes;
1820
1821 // titan 3c stats
1822 tANI_U32 chunksTxCntHi; // Number of Chunks Transmitted
1823 tANI_U32 chunksTxCntLo;
1824 tANI_U32 compPktRxCntHi; // Number of Packets Received that were actually compressed
1825 tANI_U32 compPktRxCntLo;
1826 tANI_U32 expanPktRxCntHi; // Number of Packets Received that got expanded
1827 tANI_U32 expanPktRxCntLo;
1828
1829
1830 /* Following elements are valid and filled in correctly. They have valid values.
1831 */
1832
1833 //Unicast frames and bytes.
1834 tAniTxRxStats ucStats;
1835
1836 //Broadcast frames and bytes.
1837 tAniTxRxStats bcStats;
1838
1839 //Multicast frames and bytes.
1840 tAniTxRxStats mcStats;
1841
1842 tANI_U32 currentTxRate;
1843 tANI_U32 currentRxRate; //Rate in 100Kbps
1844
1845 tANI_U32 maxTxRate;
1846 tANI_U32 maxRxRate;
1847
1848 tANI_S8 rssi[SIR_MAX_RX_CHAINS];
1849
1850
1851 tAniSecStats securityStats;
1852
1853 tANI_U8 currentRxRateIdx; //This the softmac rate Index.
1854 tANI_U8 currentTxRateIdx;
1855
1856} tAniStaStatStruct, *tpAniStaStatStruct;
1857
1858//Statistics that are not maintained per stations.
1859typedef struct sAniGlobalStatStruct
1860{
1861 tAni64BitCounters txError;
1862 tAni64BitCounters rxError;
1863 tAni64BitCounters rxDropNoBuffer;
1864 tAni64BitCounters rxDropDup;
1865 tAni64BitCounters rxCRCError;
1866
1867 tAni64BitCounters singleRetryPkts;
1868 tAni64BitCounters failedTxPkts;
1869 tAni64BitCounters ackTimeouts;
1870 tAni64BitCounters multiRetryPkts;
1871 tAni64BitCounters fragTxCnts;
1872 tAni64BitCounters fragRxCnts;
1873
1874 tAni64BitCounters txRTSSuccess;
1875 tAni64BitCounters txCTSSuccess;
1876 tAni64BitCounters rxRTSSuccess;
1877 tAni64BitCounters rxCTSSuccess;
1878
1879 tAniSecStats securityStats;
1880
1881 tAniTxRxStats mcStats;
1882 tAniTxRxStats bcStats;
1883
1884}tAniGlobalStatStruct,*tpAniGlobalStatStruct;
1885
1886typedef enum sPacketType
1887{
1888 ePACKET_TYPE_UNKNOWN,
1889 ePACKET_TYPE_11A,
1890 ePACKET_TYPE_11G,
1891 ePACKET_TYPE_11B,
1892 ePACKET_TYPE_11N
1893
1894}tPacketType, *tpPacketType;
1895
1896typedef struct sAniStatSummaryStruct
1897{
1898 tAniTxRxStats uc; //Unicast counters.
1899 tAniTxRxStats bc; //Broadcast counters.
1900 tAniTxRxStats mc; //Multicast counters.
1901 tAni64BitCounters txError;
1902 tAni64BitCounters rxError;
1903 tANI_S8 rssi[SIR_MAX_RX_CHAINS]; //For each chain.
1904 tANI_U32 rxRate; // Rx rate of the last received packet.
1905 tANI_U32 txRate;
1906 tANI_U16 rxMCSId; //MCS index is valid only when packet type is ePACKET_TYPE_11N
1907 tANI_U16 txMCSId;
1908 tPacketType rxPacketType;
1909 tPacketType txPacketType;
1910 tSirMacAddr macAddr; //Mac Address of the station from which above RSSI and rate is from.
1911}tAniStatSummaryStruct,*tpAniStatSummaryStruct;
1912
1913#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA)
1914//structure for stats that may be reset, like the ones in sta descriptor
1915//The stats are saved into here before reset. It should be tANI_U32 aligned.
1916typedef struct _sPermStaStats
1917{
1918 //tANI_U32 sentAesBlksUcastHi;
1919 //tANI_U32 sentAesBlksUcastLo;
1920 //tANI_U32 recvAesBlksUcastHi;
1921 //tANI_U32 recvAesBlksUcastLo;
1922 tANI_U32 aesFormatErrorUcastCnts;
1923 tANI_U32 aesReplaysUcast;
1924 tANI_U32 aesDecryptErrUcast;
1925 tANI_U32 singleRetryPkts;
1926 tANI_U32 failedTxPkts;
1927 tANI_U32 ackTimeouts;
1928 tANI_U32 multiRetryPkts;
1929 tANI_U32 fragTxCntsHi;
1930 tANI_U32 fragTxCntsLo;
1931 tANI_U32 transmittedPktsHi;
1932 tANI_U32 transmittedPktsLo;
1933
1934 // titan 3c stats
1935 tANI_U32 chunksTxCntHi; // Number of Chunks Transmitted
1936 tANI_U32 chunksTxCntLo;
1937 tANI_U32 compPktRxCntHi; // Number of Packets Received that were actually compressed
1938 tANI_U32 compPktRxCntLo;
1939 tANI_U32 expanPktRxCntHi; // Number of Packets Received that got expanded
1940 tANI_U32 expanPktRxCntLo;
1941}tPermanentStaStats;
1942
1943#endif//#if (WNI_POLARIS_FW_PRODUCT == WLAN_STA)
1944
1945
1946
1947/// Definition for Disassociation response
1948typedef struct sSirSmeDisassocRsp
1949{
1950 tANI_U16 messageType; // eWNI_SME_DISASSOC_RSP
1951 tANI_U16 length;
1952 tANI_U8 sessionId; // Session ID
1953 tANI_U16 transactionId; // Transaction ID for cmd
1954 tSirResultCodes statusCode;
1955 tSirMacAddr peerMacAddr;
1956#if (WNI_POLARIS_FW_PRODUCT == AP)
1957 tANI_U16 aid;
1958#endif
1959 tAniStaStatStruct perStaStats; // STA stats
1960#ifdef WLAN_SOFTAP_FEATURE
1961 tANI_U16 staId;
1962#endif
1963}
1964#ifdef WLAN_SOFTAP_FEATURE
1965__ani_attr_packed
1966#endif
1967 tSirSmeDisassocRsp, *tpSirSmeDisassocRsp;
1968
1969/// Definition for Disassociation indication from peer
1970typedef struct sSirSmeDisassocInd
1971{
1972 tANI_U16 messageType; // eWNI_SME_DISASSOC_IND
1973 tANI_U16 length;
1974 tANI_U8 sessionId; // Session Identifier
1975 tANI_U16 transactionId; // Transaction Identifier with PE
1976 tSirResultCodes statusCode;
1977 tSirMacAddr bssId;
1978 tSirMacAddr peerMacAddr;
1979#if (WNI_POLARIS_FW_PRODUCT == AP)
1980 tANI_U16 aid;
1981#endif
1982 tAniStaStatStruct perStaStats; // STA stats
1983#ifdef WLAN_SOFTAP_FEATURE
1984 tANI_U16 staId;
1985#endif
1986} tSirSmeDisassocInd, *tpSirSmeDisassocInd;
1987
1988/// Definition for Disassociation confirm
1989/// MAC --->
1990typedef struct sSirSmeDisassocCnf
1991{
1992 tANI_U16 messageType; // eWNI_SME_DISASSOC_CNF
1993 tANI_U16 length;
1994 tSirResultCodes statusCode;
1995 tSirMacAddr bssId;
1996 tSirMacAddr peerMacAddr;
1997#if (WNI_POLARIS_FW_PRODUCT == AP)
1998 tANI_U16 aid;
1999#endif
2000} tSirSmeDisassocCnf, *tpSirSmeDisassocCnf;
2001
2002/// Definition for Deauthetication request
2003typedef struct sSirSmeDeauthReq
2004{
2005 tANI_U16 messageType; // eWNI_SME_DEAUTH_REQ
2006 tANI_U16 length;
2007 tANI_U8 sessionId; // Session ID
2008 tANI_U16 transactionId; // Transaction ID for cmd
2009 tSirMacAddr bssId; // AP BSSID
2010 tSirMacAddr peerMacAddr;
2011 tANI_U16 reasonCode;
2012#if (WNI_POLARIS_FW_PRODUCT == AP)
2013 tANI_U16 aid;
2014#endif
2015} tSirSmeDeauthReq, *tpSirSmeDeauthReq;
2016
2017/// Definition for Deauthetication response
2018typedef struct sSirSmeDeauthRsp
2019{
2020 tANI_U16 messageType; // eWNI_SME_DEAUTH_RSP
2021 tANI_U16 length;
2022 tANI_U8 sessionId; // Session ID
2023 tANI_U16 transactionId; // Transaction ID for cmd
2024 tSirResultCodes statusCode;
2025 tSirMacAddr peerMacAddr;
2026#if (WNI_POLARIS_FW_PRODUCT == AP)
2027 tANI_U16 aid;
2028#endif
2029} tSirSmeDeauthRsp, *tpSirSmeDeauthRsp;
2030
2031/// Definition for Deauthetication indication from peer
2032typedef struct sSirSmeDeauthInd
2033{
2034 tANI_U16 messageType; // eWNI_SME_DEAUTH_IND
2035 tANI_U16 length;
2036 tANI_U8 sessionId; //Added for BT-AMP
2037 tANI_U16 transactionId; //Added for BT-AMP
2038 tSirResultCodes statusCode;
2039 tSirMacAddr bssId;// AP BSSID
2040 tSirMacAddr peerMacAddr;
2041#if (WNI_POLARIS_FW_PRODUCT == AP)
2042 tANI_U16 aid;
2043#endif
2044
2045#ifdef WLAN_SOFTAP_FEATURE
2046 tANI_U16 staId;
2047#endif
2048} tSirSmeDeauthInd, *tpSirSmeDeauthInd;
2049
2050/// Definition for Deauthentication confirm
2051/// MAC --->
2052typedef struct sSirSmeDeauthCnf
2053{
2054 tANI_U16 messageType; // eWNI_SME_DEAUTH_CNF
2055 tANI_U16 length;
2056 tSirResultCodes statusCode;
2057 tSirMacAddr bssId; // AP BSSID
2058 tSirMacAddr peerMacAddr;
2059#if (WNI_POLARIS_FW_PRODUCT == AP)
2060 tANI_U16 aid;
2061#endif
2062} tSirSmeDeauthCnf, *tpSirSmeDeauthCnf;
2063
2064/// Definition for stop BSS request message
2065typedef struct sSirSmeStopBssReq
2066{
2067 tANI_U16 messageType; // eWNI_SME_STOP_BSS_REQ
2068 tANI_U16 length;
2069 tANI_U8 sessionId; //Session ID
2070 tANI_U16 transactionId; //tranSaction ID for cmd
2071 tSirResultCodes reasonCode;
2072 tSirMacAddr bssId; //Self BSSID
2073} tSirSmeStopBssReq, *tpSirSmeStopBssReq;
2074
2075/// Definition for stop BSS response message
2076typedef struct sSirSmeStopBssRsp
2077{
2078 tANI_U16 messageType; // eWNI_SME_STOP_BSS_RSP
2079 tANI_U16 length;
2080 tSirResultCodes statusCode;
2081 tANI_U8 sessionId; // Session ID
2082 tANI_U16 transactionId; // Transaction ID for cmd
2083} tSirSmeStopBssRsp, *tpSirSmeStopBssRsp;
2084
2085#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
2086/// Definition for Channel Select request
2087/// ---> MAC
2088typedef struct sSirSmeSelectChannelReq
2089{
2090 tANI_U16 messageType; // eWNI_SME_SELECT_CHL_REQ
2091 tANI_U16 length;
2092 tANI_U16 transactionId; // Transaction ID for cmd
2093 tANI_U8 channelId;
2094} tSirSmeSelectChannelReq, *tpSirSmeSelectChannelReq;
2095
2096/// Definition for Channel Select response
2097/// MAC --->
2098typedef struct sSirSmeSelectChannelRsp
2099{
2100 tANI_U16 messageType; // eWNI_SME_SELECT_CHL_RSP
2101 tANI_U16 length;
2102 tSirResultCodes statusCode;
2103 tANI_U16 transactionId; // Transaction ID for cmd
2104} tSirSmeSelectChannelRsp, *tpSirSmeSelectChannelRsp;
2105
2106/// Definition for Channel Switch request
2107/// ---> MAC
2108typedef struct sSirSmeSwitchChannelReq
2109{
2110 // eWNI_SME_SWITCH_CHL_REQ,
2111 // eWNI_SME_SWITCH_CHL_CB_PRIMARY_REQ,
2112 // eWNI_SME_SWITCH_CHL_CB_SECONDARY_REQ
2113 tANI_U16 messageType;
2114
2115 tANI_U16 length;
2116 tANI_U16 transactionId; // Transaction ID for cmd
2117 tANI_U8 channelId;
2118 //
2119 // The cbMode field is applicable to TITAN only.
2120 // This indicates as to how the CB secondary
2121 // channel will be used (if at all).
2122 //
2123 // In a non-CB environment, with 11H enabled,
2124 // this field will be ignored
2125 //
2126 tAniCBSecondaryMode cbMode;
2127
2128 // dtimFactor indicates the number of DTIM
2129 // Beacon before LIM switches channel
2130 tANI_U32 dtimFactor;
2131} tSirSmeSwitchChannelReq, *tpSirSmeSwitchChannelReq;
2132
2133/// Definition for Channel Switch response
2134/// MAC --->
2135typedef struct sSirSmeSwitchChannelRsp
2136{
2137 tANI_U16 messageType; // eWNI_SME_SWITCH_CHL_RSP
2138 tANI_U16 length;
2139 tSirResultCodes statusCode;
2140 tANI_U16 transactionId; // Transaction ID for cmd
2141} tSirSmeSwitchChannelRsp, *tpSirSmeSwitchChannelRsp;
2142
2143#endif
2144
2145
2146/// Definition for Channel Switch indication for station
2147/// MAC --->
2148typedef struct sSirSmeSwitchChannelInd
2149{
2150 tANI_U16 messageType; // eWNI_SME_SWITCH_CHL_REQ
2151 tANI_U16 length;
2152 tANI_U8 sessionId;
2153 tANI_U16 newChannelId;
2154 tSirMacAddr bssId; // BSSID
2155} tSirSmeSwitchChannelInd, *tpSirSmeSwitchChannelInd;
2156
2157/// Definition for ULA complete indication message
2158typedef struct sirUlaCompleteInd
2159{
2160 tANI_U16 messageType; // eWNI_ULA_COMPLETE_IND
2161 tANI_U16 length;
2162 tSirResultCodes statusCode;
2163 tSirMacAddr peerMacAddr;
2164#if (WNI_POLARIS_FW_PRODUCT == AP)
2165 tANI_U16 aid;
2166#endif
2167} tSirUlaCompleteInd, *tpSirUlaCompleteInd;
2168
2169/// Definition for ULA complete confirmation message
2170typedef struct sirUlaCompleteCnf
2171{
2172 tANI_U16 messageType; // eWNI_ULA_COMPLETE_CNF
2173 tANI_U16 length;
2174 tSirResultCodes statusCode;
2175 tSirMacAddr peerMacAddr;
2176#if (WNI_POLARIS_FW_PRODUCT == AP)
2177 tANI_U16 aid;
2178#endif
2179} tSirUlaCompleteCnf, *tpSirUlaCompleteCnf;
2180
2181/// Definition for Neighbor BSS indication
2182/// MAC --->
2183/// MAC reports this each time a new I/BSS is detected
2184typedef struct sSirSmeNeighborBssInd
2185{
2186 tANI_U16 messageType; // eWNI_SME_NEIGHBOR_BSS_IND
2187 tANI_U16 length;
2188 tANI_U8 sessionId;
2189#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
2190 tSirNeighborBssInfo neighborInfo;
2191 tSirWdsInfo wdsInfo;
2192#else
2193 tSirBssDescription bssDescription[1];
2194#endif
2195} tSirSmeNeighborBssInd, *tpSirSmeNeighborBssInd;
2196
2197/// Definition for MIC failure indication
2198/// MAC --->
2199/// MAC reports this each time a MIC failure occures on Rx TKIP packet
2200typedef struct sSirSmeMicFailureInd
2201{
2202 tANI_U16 messageType; // eWNI_SME_MIC_FAILURE_IND
2203 tANI_U16 length;
2204 tANI_U8 sessionId;
2205 tSirMacAddr bssId; // BSSID
2206 tSirMicFailureInfo info;
2207} tSirSmeMicFailureInd, *tpSirSmeMicFailureInd;
2208
2209
2210/// Definition for Set Context request
2211/// ---> MAC
2212typedef struct sSirSmeSetContextReq
2213{
2214 tANI_U16 messageType; // eWNI_SME_SET_CONTEXT_REQ
2215 tANI_U16 length;
2216 tANI_U8 sessionId; //Session ID
2217 tANI_U16 transactionId; //Transaction ID for cmd
2218 tSirMacAddr peerMacAddr;
2219 tSirMacAddr bssId; // BSSID
2220#if (WNI_POLARIS_FW_PRODUCT == AP)
2221 tANI_U16 aid;
2222#endif
2223 // TBD Following QOS fields to be uncommented
2224 //tAniBool qosInfoPresent;
2225 //tSirQos qos;
2226 tSirKeyMaterial keyMaterial;
2227} tSirSmeSetContextReq, *tpSirSmeSetContextReq;
2228
2229/// Definition for Set Context response
2230/// MAC --->
2231typedef struct sSirSmeSetContextRsp
2232{
2233 tANI_U16 messageType; // eWNI_SME_SET_CONTEXT_RSP
2234 tANI_U16 length;
2235 tANI_U8 sessionId; // Session ID
2236 tANI_U16 transactionId; // Transaction ID for cmd
2237 tSirResultCodes statusCode;
2238 tSirMacAddr peerMacAddr;
2239#if (WNI_POLARIS_FW_PRODUCT == AP)
2240 tANI_U16 aid;
2241#endif
2242} tSirSmeSetContextRsp, *tpSirSmeSetContextRsp;
2243
2244/// Definition for Remove Key Context request
2245/// ---> MAC
2246typedef struct sSirSmeRemoveKeyReq
2247{
2248 tANI_U16 messageType; // eWNI_SME_REMOVE_KEY_REQ
2249 tANI_U16 length;
2250 tANI_U8 sessionId; // Session ID
2251 tANI_U16 transactionId; // Transaction ID for cmd
2252 tSirMacAddr bssId; // BSSID
2253 tSirMacAddr peerMacAddr;
2254#if (WNI_POLARIS_FW_PRODUCT == AP)
2255 tANI_U16 aid;
2256#endif
2257 tANI_U8 edType;
2258 tANI_U8 wepType;
2259 tANI_U8 keyId;
2260 tANI_BOOLEAN unicast;
2261} tSirSmeRemoveKeyReq, *tpSirSmeRemoveKeyReq;
2262
2263/// Definition for Remove Key Context response
2264/// MAC --->
2265typedef struct sSirSmeRemoveKeyRsp
2266{
2267 tANI_U16 messageType; // eWNI_SME_REMOVE_KEY_RSP
2268 tANI_U16 length;
2269 tANI_U8 sessionId; // Session ID
2270 tANI_U16 transactionId; // Transaction ID for cmd
2271 tSirResultCodes statusCode;
2272 tSirMacAddr peerMacAddr;
2273#if (WNI_POLARIS_FW_PRODUCT == AP)
2274 tANI_U16 aid;
2275#endif
2276} tSirSmeRemoveKeyRsp, *tpSirSmeRemoveKeyRsp;
2277
2278/// Definition for Set Power request
2279/// ---> MAC
2280typedef struct sSirSmeSetPowerReq
2281{
2282 tANI_U16 messageType; // eWNI_SME_SET_POWER_REQ
2283 tANI_U16 length;
2284 tANI_U16 transactionId; // Transaction ID for cmd
2285 tANI_S8 powerLevel;
2286} tSirSmeSetPowerReq, *tpSirSmeSetPowerReq;
2287
2288/// Definition for Set Power response
2289/// MAC --->
2290typedef struct sSirSmeSetPowerRsp
2291{
2292 tANI_U16 messageType; // eWNI_SME_SET_POWER_RSP
2293 tANI_U16 length;
2294 tSirResultCodes statusCode;
2295 tANI_U16 transactionId; // Transaction ID for cmd
2296} tSirSmeSetPowerRsp, *tpSirSmeSetPowerRsp;
2297
2298#if (WNI_POLARIS_FW_PACKAGE == ADVANCED) && (WNI_POLARIS_FW_PRODUCT == AP)
2299/// Definition for Client Side Load Balancing request
2300/// ---> MAC
2301typedef struct sSirSmeSetClientLoadBalanceReq
2302{
2303 tANI_U16 messageType; // eWNI_SME_CLIENT_LOAD_BALANCE_REQ
2304 tANI_U16 length;
2305 tANI_U16 transactionId; // Transaction ID for cmd
2306 tSirMacAddr alternateBssId;
2307 tANI_U8 alternateChannelId;
2308 tANI_U8 numberStas;
2309} tSirSmeClientLoadBalanceReq, *tpSirSmeClientLoadBalanceReq;
2310
2311/// Definition for Client Side Load Balancing response
2312/// MAC --->
2313typedef struct sSirSmeSetClientLoadBalanceRsp
2314{
2315 tANI_U16 messageType; // eWNI_SME_CLIENT_LOAD_BALANCE_RSP
2316 tANI_U16 length;
2317 tANI_U16 transactionId; // Transaction ID for cmd
2318 tSirResultCodes statusCode;
2319} tSirSmeClientLoadBalanceRsp, *tpSirSmeClientLoadBalanceRsp;
2320#endif
2321
2322/// Definition for Link Test Start response
2323/// MAC --->
2324typedef struct sSirSmeLinkTestStartRsp
2325{
2326 tANI_U16 messageType; // eWNI_SME_LINK_TEST_START_RSP
2327 tANI_U16 length;
2328 tSirMacAddr peerMacAddr;
2329 tSirResultCodes statusCode;
2330#if (WNI_POLARIS_FW_PRODUCT == AP)
2331 tANI_U16 aid;
2332#endif
2333} tSirSmeLinkTestStartRsp, *tpSirSmeLinkTestStartRsp;
2334
2335/// Definition for Link Test Stop response
2336/// WSM ---> MAC
2337typedef struct sSirSmeLinkTestStopRsp
2338{
2339 tANI_U16 messageType; // eWNI_SME_LINK_TEST_STOP_RSP
2340 tANI_U16 length;
2341 tSirMacAddr peerMacAddr;
2342 tSirResultCodes statusCode;
2343#if (WNI_POLARIS_FW_PRODUCT == AP)
2344 tANI_U16 aid;
2345#endif
2346} tSirSmeLinkTestStopRsp, *tpSirSmeLinkTestStopRsp;
2347
2348/// Definition for kick starting DFS measurements
2349typedef struct sSirSmeDFSreq
2350{
2351 tANI_U16 messageType; // eWNI_SME_DFS_REQ
2352 tANI_U16 length;
2353 tANI_U16 transactionId; // Transaction ID for cmd
2354} tSirSmeDFSrequest, *tpSirSmeDFSrequest;
2355
2356/// Definition for response message to previously
2357/// issued DFS request
2358typedef struct sSirSmeDFSrsp
2359{
2360 tANI_U16 messageType; // eWNI_SME_DFS_RSP
2361 tANI_U16 length;
2362 tSirResultCodes statusCode;
2363 tANI_U16 transactionId; // Transaction ID for cmd
2364 tANI_U32 dfsReport[1];
2365} tSirSmeDFSrsp, *tpSirSmeDFSrsp;
2366
2367/// Statistic definitions
2368//=============================================================
2369// Per STA statistic structure; This same struct will be used for Aggregate
2370// STA stats as well.
2371
2372// Clear radio stats and clear per sta stats
2373typedef enum
2374{
2375 eANI_CLEAR_ALL_STATS, // Clears all stats
2376 eANI_CLEAR_RX_STATS, // Clears RX statistics of the radio interface
2377 eANI_CLEAR_TX_STATS, // Clears TX statistics of the radio interface
2378 eANI_CLEAR_RADIO_STATS, // Clears all the radio stats
2379 eANI_CLEAR_PER_STA_STATS, // Clears Per STA stats
2380 eANI_CLEAR_AGGR_PER_STA_STATS, // Clears aggregate stats
2381
2382 // Used to distinguish between per sta to security stats.
2383 // Used only by AP, FW just returns the same parameter as it received.
2384 eANI_LINK_STATS, // Get Per STA stats
2385 eANI_SECURITY_STATS, // Get Per STA security stats
2386
2387 eANI_CLEAR_STAT_TYPES_END
2388} tAniStatSubTypes;
2389
2390typedef struct sAniTxCtrs
2391{
2392 // add the rate counters here
2393 tANI_U32 tx1Mbps;
2394 tANI_U32 tx2Mbps;
2395 tANI_U32 tx5_5Mbps;
2396 tANI_U32 tx6Mbps;
2397 tANI_U32 tx9Mbps;
2398 tANI_U32 tx11Mbps;
2399 tANI_U32 tx12Mbps;
2400 tANI_U32 tx18Mbps;
2401 tANI_U32 tx24Mbps;
2402 tANI_U32 tx36Mbps;
2403 tANI_U32 tx48Mbps;
2404 tANI_U32 tx54Mbps;
2405 tANI_U32 tx72Mbps;
2406 tANI_U32 tx96Mbps;
2407 tANI_U32 tx108Mbps;
2408
2409 // tx path radio counts
2410 tANI_U32 txFragHi;
2411 tANI_U32 txFragLo;
2412 tANI_U32 txFrameHi;
2413 tANI_U32 txFrameLo;
2414 tANI_U32 txMulticastFrameHi;
2415 tANI_U32 txMulticastFrameLo;
2416 tANI_U32 txFailedHi;
2417 tANI_U32 txFailedLo;
2418 tANI_U32 multipleRetryHi;
2419 tANI_U32 multipleRetryLo;
2420 tANI_U32 singleRetryHi;
2421 tANI_U32 singleRetryLo;
2422 tANI_U32 ackFailureHi;
2423 tANI_U32 ackFailureLo;
2424 tANI_U32 xmitBeacons;
2425
2426 // titan 3c stats
2427 tANI_U32 txCbEscPktCntHi; // Total Number of Channel Bonded/Escort Packet Transmitted
2428 tANI_U32 txCbEscPktCntLo;
2429 tANI_U32 txChunksCntHi; // Total Number of Chunks Transmitted
2430 tANI_U32 txChunksCntLo;
2431 tANI_U32 txCompPktCntHi; // Total Number of Compresssed Packet Transmitted
2432 tANI_U32 txCompPktCntLo;
2433 tANI_U32 tx50PerCompPktCntHi; // Total Number of Packets with 50% or more compression
2434 tANI_U32 tx50PerCompPktCntLo;
2435 tANI_U32 txExpanPktCntHi; // Total Number of Packets Transmitted that got expanded
2436 tANI_U32 txExpanPktCntLo;
2437} tAniTxCtrs, *tpAniTxCtrs;
2438
2439typedef struct sAniRxCtrs
2440{
2441 // receive frame rate counters
2442 tANI_U32 rx1Mbps;
2443 tANI_U32 rx2Mbps;
2444 tANI_U32 rx5_5Mbps;
2445 tANI_U32 rx6Mbps;
2446 tANI_U32 rx9Mbps;
2447 tANI_U32 rx11Mbps;
2448 tANI_U32 rx12Mbps;
2449 tANI_U32 rx18Mbps;
2450 tANI_U32 rx24Mbps;
2451 tANI_U32 rx36Mbps;
2452 tANI_U32 rx48Mbps;
2453 tANI_U32 rx54Mbps;
2454 tANI_U32 rx72Mbps;
2455 tANI_U32 rx96Mbps;
2456 tANI_U32 rx108Mbps;
2457
2458 // receive size counters; 'Lte' = Less than or equal to
2459 tANI_U32 rxLte64;
2460 tANI_U32 rxLte128Gt64;
2461 tANI_U32 rxLte256Gt128;
2462 tANI_U32 rxLte512Gt256;
2463 tANI_U32 rxLte1kGt512;
2464 tANI_U32 rxLte1518Gt1k;
2465 tANI_U32 rxLte2kGt1518;
2466 tANI_U32 rxLte4kGt2k;
2467
2468 // rx radio stats
2469 tANI_U32 rxFrag;
2470 tANI_U32 rxFrame;
2471 tANI_U32 fcsError;
2472 tANI_U32 rxMulticast;
2473 tANI_U32 duplicate;
2474 tANI_U32 rtsSuccess;
2475 tANI_U32 rtsFailed;
2476 tANI_U32 wepUndecryptables;
2477 tANI_U32 drops;
2478 tANI_U32 aesFormatErrorUcastCnts;
2479 tANI_U32 aesReplaysUcast;
2480 tANI_U32 aesDecryptErrUcast;
2481
2482 // titan 3c stats
2483 tANI_U32 rxDecompPktCntHi; // Total Number of Packets that got decompressed
2484 tANI_U32 rxDecompPktCntLo;
2485 tANI_U32 rxCompPktCntHi; // Total Number of Packets received that were actually compressed
2486 tANI_U32 rxCompPktCntLo;
2487 tANI_U32 rxExpanPktCntHi; // Total Number of Packets received that got expanded
2488 tANI_U32 rxExpanPktCntLo;
2489} tAniRxCtrs, *tpAniRxCtrs;
2490
2491// Radio stats
2492typedef struct sAniRadioStats
2493{
2494 tAniTxCtrs tx;
2495 tAniRxCtrs rx;
2496} tAniRadioStats, *tpAniRadioStats;
2497
2498// Get Radio Stats request structure
2499// This structure shall be used for both Radio stats and Aggregate stats
2500// A valid request must contain entire structure with/without valid fields.
2501// Based on the request type, the valid fields will be checked.
2502typedef struct sAniGetStatsReq
2503{
2504 // Common for all types are requests
2505 tANI_U16 msgType; // message type is same as the request type
2506 tANI_U16 msgLen; // length of the entire request
2507 tANI_U8 sessionId; //Session ID
2508 tANI_U16 transactionId;
2509 tSirMacAddr bssId; //BSSID
2510 // only used for clear stats and per sta stats clear
2511 tAniStatSubTypes stat; // Clears the stats of the described types.
2512 tANI_U32 staId; // Per STA stats request must contain valid
2513 // values
2514 tANI_U8 macAddr[6];
2515} tAniGetStatsReq, *tpAniGetStatsReq;
2516
2517// Get Radio Stats response struct
2518typedef struct sAniGetRadioStatsRsp
2519{
2520 tANI_U16 type; // message type is same as the request type
2521 tANI_U16 msgLen; // length of the entire request
2522 tANI_U32 rc;
2523 tANI_U16 transactionId;
2524 tAniRadioStats radio;
2525} tAniGetRadioStatsRsp, *tpAniGetRadioStatsRsp;
2526
2527// Per Sta stats response struct
2528typedef struct sAniGetPerStaStatsRsp
2529{
2530 tANI_U16 type; // message type is same as the request type
2531 tANI_U16 msgLen; // length of the entire request
2532 tANI_U32 rc;
2533 tANI_U16 transactionId;
2534 tAniStatSubTypes stat; // Sub type needed by AP. Returns the same value
2535 tAniStaStatStruct sta;
2536 tANI_U32 staId;
2537 tANI_U8 macAddr[6];
2538} tAniGetPerStaStatsRsp, *tpAniGetPerStaStatsRsp;
2539
2540// Get Aggregate stats
2541typedef struct sAniGetAggrStaStatsRsp
2542{
2543 tANI_U16 type; // message type is same as the request type
2544 tANI_U16 msgLen; // length of the entire request
2545 tANI_U32 rc;
2546 tANI_U16 transactionId;
2547 tAniStaStatStruct sta;
2548} tAniGetAggrStaStatsRsp, *tpAniGetAggrStaStatsRsp;
2549
2550// Clear stats request and response structure. 'rc' field is unused in
2551// request and this field is used in response field.
2552typedef struct sAniClearStatsRsp
2553{
2554 tANI_U16 type; // message type is same as the request type
2555 tANI_U16 msgLen; // length of the entire request
2556 tANI_U32 rc; // return code - will be filled by FW on
2557 // response.
2558 // Same transaction ID will be returned by the FW
2559 tANI_U16 transactionId;
2560 tAniStatSubTypes stat; // Clears the stats of the described types.
2561 tANI_U32 staId; // Applicable only to PER STA stats clearing
2562 tANI_U8 macAddr[6]; // Applicable only to PER STA stats clearing
2563} tAniClearStatsRsp, *tpAniClearStatsRsp;
2564
2565typedef struct sAniGetGlobalStatsRsp
2566{
2567 tANI_U16 type; // message type is same as the request type
2568 tANI_U16 msgLen; // length of the entire request
2569 tANI_U32 rc;
2570 tANI_U16 transactionId;
2571 tAniGlobalStatStruct global;
2572} tAniGetGlobalStatsRsp, *tpAniGetGlobalStatsRsp;
2573
2574typedef struct sAniGetStatSummaryRsp
2575{
2576 tANI_U16 type; // message type is same as the request type
2577 tANI_U16 msgLen; // length of the entire request --Why?
2578 tANI_U32 rc;
2579 tANI_U16 transactionId;
2580 tAniStatSummaryStruct stat;
2581} tAniGetStatSummaryRsp, *tpAniGetStatSummaryRsp;
2582
2583//***************************************************************
2584
2585
2586/*******************PE Statistics*************************/
2587typedef enum
2588{
2589 PE_SUMMARY_STATS_INFO = 0x00000001,
2590 PE_GLOBAL_CLASS_A_STATS_INFO = 0x00000002,
2591 PE_GLOBAL_CLASS_B_STATS_INFO = 0x00000004,
2592 PE_GLOBAL_CLASS_C_STATS_INFO = 0x00000008,
2593 PE_GLOBAL_CLASS_D_STATS_INFO = 0x00000010,
2594 PE_PER_STA_STATS_INFO = 0x00000020
2595}ePEStatsMask;
2596
2597/*
2598 * tpAniGetPEStatsReq is tied to
2599 * for SME ==> PE eWNI_SME_GET_STATISTICS_REQ msgId and
2600 * for PE ==> HAL SIR_HAL_GET_STATISTICS_REQ msgId
2601 */
2602typedef struct sAniGetPEStatsReq
2603{
2604 // Common for all types are requests
2605 tANI_U16 msgType; // message type is same as the request type
2606 tANI_U16 msgLen; // length of the entire request
2607 tANI_U32 staId; // Per STA stats request must contain valid
2608 tANI_U32 statsMask; // categories of stats requested. look at ePEStatsMask
2609} tAniGetPEStatsReq, *tpAniGetPEStatsReq;
2610
2611/*
2612 * tpAniGetPEStatsRsp is tied to
2613 * for PE ==> SME eWNI_SME_GET_STATISTICS_RSP msgId and
2614 * for HAL ==> PE SIR_HAL_GET_STATISTICS_RSP msgId
2615 */
2616typedef struct sAniGetPEStatsRsp
2617{
2618 // Common for all types are responses
2619 tANI_U16 msgType; // message type is same as the request type
2620 tANI_U16 msgLen; // length of the entire request, includes the pStatsBuf length too
2621 tANI_U8 sessionId;
2622 tANI_U32 rc; //success/failure
2623 tANI_U32 staId; // Per STA stats request must contain valid
2624 tANI_U32 statsMask; // categories of stats requested. look at ePEStatsMask
2625/**********************************************************************************************
2626 //void *pStatsBuf;
2627 The Stats buffer starts here and can be an aggregate of more than one statistics
2628 structure depending on statsMask.The void pointer "pStatsBuf" is commented out
2629 intentionally and the src code that uses this structure should take that into account.
2630**********************************************************************************************/
2631} tAniGetPEStatsRsp, *tpAniGetPEStatsRsp;
2632
2633typedef struct sAniGetRssiReq
2634{
2635 // Common for all types are requests
2636 tANI_U16 msgType; // message type is same as the request type
2637 tANI_U16 msgLen; // length of the entire request
2638 tANI_U8 sessionId;
2639 tANI_U8 staId;
2640 void *rssiCallback;
2641 void *pDevContext; //device context
2642 void *pVosContext; //voss context
2643
2644} tAniGetRssiReq, *tpAniGetRssiReq;
2645
2646/* Change country code request MSG structure */
2647typedef struct sAniChangeCountryCodeReq
2648{
2649 // Common for all types are requests
2650 tANI_U16 msgType; // message type is same as the request type
2651 tANI_U16 msgLen; // length of the entire request
2652 tANI_U8 countryCode[WNI_CFG_COUNTRY_CODE_LEN]; //3 char country code
2653 void *changeCCCallback;
2654 void *pDevContext; //device context
2655 void *pVosContext; //voss context
2656
2657} tAniChangeCountryCodeReq, *tpAniChangeCountryCodeReq;
2658
2659typedef struct sAniSummaryStatsInfo
2660{
2661 tANI_U32 retry_cnt[4]; //Total number of packets(per AC) that were successfully transmitted with retries
2662 tANI_U32 multiple_retry_cnt[4];//The number of MSDU packets and MMPDU frames per AC that the 802.11
2663 // station successfully transmitted after more than one retransmission attempt
2664
2665 tANI_U32 tx_frm_cnt[4]; //Total number of packets(per AC) that were successfully transmitted
2666 //(with and without retries, including multi-cast, broadcast)
2667 //tANI_U32 tx_fail_cnt;
2668 //tANI_U32 num_rx_frm_crc_err; //Total number of received frames with CRC Error
2669 //tANI_U32 num_rx_frm_crc_ok; //Total number of successfully received frames with out CRC Error
2670 tANI_U32 rx_frm_cnt; //Total number of packets that were successfully received
2671 //(after appropriate filter rules including multi-cast, broadcast)
2672 tANI_U32 frm_dup_cnt; //Total number of duplicate frames received successfully
2673 tANI_U32 fail_cnt[4]; //Total number packets(per AC) failed to transmit
2674 tANI_U32 rts_fail_cnt; //Total number of RTS/CTS sequence failures for transmission of a packet
2675 tANI_U32 ack_fail_cnt; //Total number packets failed transmit because of no ACK from the remote entity
2676 tANI_U32 rts_succ_cnt; //Total number of RTS/CTS sequence success for transmission of a packet
2677 tANI_U32 rx_discard_cnt; //The sum of the receive error count and dropped-receive-buffer error count.
2678 //HAL will provide this as a sum of (FCS error) + (Fail get BD/PDU in HW)
2679 tANI_U32 rx_error_cnt; //The receive error count. HAL will provide the RxP FCS error global counter.
2680 tANI_U32 tx_byte_cnt; //The sum of the transmit-directed byte count, transmit-multicast byte count
2681 //and transmit-broadcast byte count. HAL will sum TPE UC/MC/BCAST global counters
2682 //to provide this.
2683#if 0
2684 //providing the following stats, in case of wrap around for tx_byte_cnt
2685 tANI_U32 tx_unicast_lower_byte_cnt;
2686 tANI_U32 tx_unicast_upper_byte_cnt;
2687 tANI_U32 tx_multicast_lower_byte_cnt;
2688 tANI_U32 tx_multicast_upper_byte_cnt;
2689 tANI_U32 tx_broadcast_lower_byte_cnt;
2690 tANI_U32 tx_broadcast_upper_byte_cnt;
2691#endif
2692
2693}tAniSummaryStatsInfo, *tpAniSummaryStatsInfo;
2694
2695typedef enum eTxRateInfo
2696{
2697 eHAL_TX_RATE_LEGACY = 0x1, /* Legacy rates */
2698 eHAL_TX_RATE_HT20 = 0x2, /* HT20 rates */
2699 eHAL_TX_RATE_HT40 = 0x4, /* HT40 rates */
2700 eHAL_TX_RATE_SGI = 0x8, /* Rate with Short guard interval */
2701 eHAL_TX_RATE_LGI = 0x10 /* Rate with Long guard interval */
2702} tTxrateinfoflags;
2703
2704typedef struct sAniGlobalClassAStatsInfo
2705{
2706 tANI_U32 rx_frag_cnt; //The number of MPDU frames received by the 802.11 station for MSDU packets
2707 //or MMPDU frames
2708 tANI_U32 promiscuous_rx_frag_cnt; //The number of MPDU frames received by the 802.11 station for MSDU packets
2709 //or MMPDU frames when a promiscuous packet filter was enabled
2710 //tANI_U32 rx_fcs_err; //The number of MPDU frames that the 802.11 station received with FCS errors
2711 tANI_U32 rx_input_sensitivity; //The receiver input sensitivity referenced to a FER of 8% at an MPDU length
2712 //of 1024 bytes at the antenna connector. Each element of the array shall correspond
2713 //to a supported rate and the order shall be the same as the supporteRates parameter.
2714 tANI_U32 max_pwr; //The maximum transmit power in dBm upto one decimal.
2715 //for eg: if it is 10.5dBm, the value would be 105
2716 //tANI_U32 default_pwr; //The nominal transmit level used after normal power on sequence
2717 tANI_U32 sync_fail_cnt; //Number of times the receiver failed to synchronize with the incoming signal
2718 //after detecting the sync in the preamble of the transmitted PLCP protocol data unit.
2719 tANI_U32 tx_rate; //Legacy transmit rate, in units of
2720 //500 kbit/sec, for the most
2721 //recently transmitted frame
2722 tANI_U32 mcs_index; //mcs index for HT20 and HT40 rates
2723 tANI_U32 tx_rate_flags; //to differentiate between HT20 and
2724 //HT40 rates; short and long guard interval
2725
2726}tAniGlobalClassAStatsInfo, *tpAniGlobalClassAStatsInfo;
2727
2728
2729typedef struct sAniGlobalSecurityStats
2730{
2731 tANI_U32 rx_wep_unencrypted_frm_cnt; //The number of unencrypted received MPDU frames that the MAC layer discarded when
2732 //the IEEE 802.11 dot11ExcludeUnencrypted management information base (MIB) object
2733 //is enabled
2734 tANI_U32 rx_mic_fail_cnt; //The number of received MSDU packets that that the 802.11 station discarded
2735 //because of MIC failures
2736 tANI_U32 tkip_icv_err; //The number of encrypted MPDU frames that the 802.11 station failed to decrypt
2737 //because of a TKIP ICV error
2738 tANI_U32 aes_ccmp_format_err; //The number of received MPDU frames that the 802.11 discarded because of an
2739 //invalid AES-CCMP format
2740 tANI_U32 aes_ccmp_replay_cnt; //The number of received MPDU frames that the 802.11 station discarded because of
2741 //the AES-CCMP replay protection procedure
2742 tANI_U32 aes_ccmp_decrpt_err; //The number of received MPDU frames that the 802.11 station discarded because of
2743 //errors detected by the AES-CCMP decryption algorithm
2744 tANI_U32 wep_undecryptable_cnt; //The number of encrypted MPDU frames received for which a WEP decryption key was
2745 //not available on the 802.11 station
2746 tANI_U32 wep_icv_err; //The number of encrypted MPDU frames that the 802.11 station failed to decrypt
2747 //because of a WEP ICV error
2748 tANI_U32 rx_decrypt_succ_cnt; //The number of received encrypted packets that the 802.11 station successfully
2749 //decrypted
2750 tANI_U32 rx_decrypt_fail_cnt; //The number of encrypted packets that the 802.11 station failed to decrypt
2751
2752}tAniGlobalSecurityStats, *tpAniGlobalSecurityStats;
2753
2754typedef struct sAniGlobalClassBStatsInfo
2755{
2756 tAniGlobalSecurityStats ucStats;
2757 tAniGlobalSecurityStats mcbcStats;
2758}tAniGlobalClassBStatsInfo, *tpAniGlobalClassBStatsInfo;
2759
2760typedef struct sAniGlobalClassCStatsInfo
2761{
2762 tANI_U32 rx_amsdu_cnt; //This counter shall be incremented for a received A-MSDU frame with the stations
2763 //MAC address in the address 1 field or an A-MSDU frame with a group address in the
2764 //address 1 field
2765 tANI_U32 rx_ampdu_cnt; //This counter shall be incremented when the MAC receives an AMPDU from the PHY
2766 tANI_U32 tx_20_frm_cnt; //This counter shall be incremented when a Frame is transmitted only on the
2767 //primary channel
2768 tANI_U32 rx_20_frm_cnt; //This counter shall be incremented when a Frame is received only on the primary channel
2769 tANI_U32 rx_mpdu_in_ampdu_cnt; //This counter shall be incremented by the number of MPDUs received in the A-MPDU
2770 //when an A-MPDU is received
2771 tANI_U32 ampdu_delimiter_crc_err;//This counter shall be incremented when an MPDU delimiter has a CRC error when this
2772 //is the first CRC error in the received AMPDU or when the previous delimiter has been
2773 //decoded correctly
2774
2775}tAniGlobalClassCStatsInfo, *tpAniGlobalClassCStatsInfo;
2776
2777typedef struct sAniPerStaStatsInfo
2778{
2779 tANI_U32 tx_frag_cnt[4]; //The number of MPDU frames that the 802.11 station transmitted and acknowledged
2780 //through a received 802.11 ACK frame
2781 tANI_U32 tx_ampdu_cnt; //This counter shall be incremented when an A-MPDU is transmitted
2782 tANI_U32 tx_mpdu_in_ampdu_cnt; //This counter shall increment by the number of MPDUs in the AMPDU when an A-MPDU
2783 //is transmitted
2784
2785}tAniPerStaStatsInfo, *tpAniPerStaStatsInfo;
2786
2787/**********************PE Statistics end*************************/
2788
2789
2790
2791typedef struct sSirRSSIThresholds
2792{
2793#ifdef ANI_BIG_BYTE_ENDIAN
2794 tANI_S8 ucRssiThreshold1 : 8;
2795 tANI_S8 ucRssiThreshold2 : 8;
2796 tANI_S8 ucRssiThreshold3 : 8;
2797 tANI_U8 bRssiThres1PosNotify : 1;
2798 tANI_U8 bRssiThres1NegNotify : 1;
2799 tANI_U8 bRssiThres2PosNotify : 1;
2800 tANI_U8 bRssiThres2NegNotify : 1;
2801 tANI_U8 bRssiThres3PosNotify : 1;
2802 tANI_U8 bRssiThres3NegNotify : 1;
2803 tANI_U8 bReserved10 : 2;
2804#else
2805 tANI_U8 bReserved10 : 2;
2806 tANI_U8 bRssiThres3NegNotify : 1;
2807 tANI_U8 bRssiThres3PosNotify : 1;
2808 tANI_U8 bRssiThres2NegNotify : 1;
2809 tANI_U8 bRssiThres2PosNotify : 1;
2810 tANI_U8 bRssiThres1NegNotify : 1;
2811 tANI_U8 bRssiThres1PosNotify : 1;
2812 tANI_S8 ucRssiThreshold3 : 8;
2813 tANI_S8 ucRssiThreshold2 : 8;
2814 tANI_S8 ucRssiThreshold1 : 8;
2815#endif
2816
2817}tSirRSSIThresholds, *tpSirRSSIThresholds;
2818
2819typedef struct sSirRSSINotification
2820{
2821#ifdef ANI_BIG_BYTE_ENDIAN
2822 tANI_U32 bRssiThres1PosCross : 1;
2823 tANI_U32 bRssiThres1NegCross : 1;
2824 tANI_U32 bRssiThres2PosCross : 1;
2825 tANI_U32 bRssiThres2NegCross : 1;
2826 tANI_U32 bRssiThres3PosCross : 1;
2827 tANI_U32 bRssiThres3NegCross : 1;
2828 tANI_U32 bReserved : 26;
2829#else
2830 tANI_U32 bReserved : 26;
2831 tANI_U32 bRssiThres3NegCross : 1;
2832 tANI_U32 bRssiThres3PosCross : 1;
2833 tANI_U32 bRssiThres2NegCross : 1;
2834 tANI_U32 bRssiThres2PosCross : 1;
2835 tANI_U32 bRssiThres1NegCross : 1;
2836 tANI_U32 bRssiThres1PosCross : 1;
2837#endif
2838
2839}tSirRSSINotification, *tpSirRSSINotification;
2840
2841#ifdef WLAN_FEATURE_P2P
2842typedef struct sSirP2PNoaAttr
2843{
2844#ifdef ANI_BIG_BYTE_ENDIAN
2845 tANI_U32 index :8;
2846 tANI_U32 oppPsFlag :1;
2847 tANI_U32 ctWin :7;
2848 tANI_U32 rsvd1: 16;
2849#else
2850 tANI_U32 rsvd1: 16;
2851 tANI_U32 ctWin :7;
2852 tANI_U32 oppPsFlag :1;
2853 tANI_U32 index :8;
2854#endif
2855
2856#ifdef ANI_BIG_BYTE_ENDIAN
2857 tANI_U32 uNoa1IntervalCnt:8;
2858 tANI_U32 rsvd2:24;
2859#else
2860 tANI_U32 rsvd2:24;
2861 tANI_U32 uNoa1IntervalCnt:8;
2862#endif
2863 tANI_U32 uNoa1Duration;
2864 tANI_U32 uNoa1Interval;
2865 tANI_U32 uNoa1StartTime;
2866
2867#ifdef ANI_BIG_BYTE_ENDIAN
2868 tANI_U32 uNoa2IntervalCnt:8;
2869 tANI_U32 rsvd3:24;
2870#else
2871 tANI_U32 rsvd3:24;
2872 tANI_U32 uNoa2IntervalCnt:8;
2873#endif
2874 tANI_U32 uNoa2Duration;
2875 tANI_U32 uNoa2Interval;
2876 tANI_U32 uNoa2StartTime;
2877} tSirP2PNoaAttr, *tpSirP2PNoaAttr;
2878#endif
2879
2880typedef __ani_attr_pre_packed struct sSirTclasInfo
2881{
2882 tSirMacTclasIE tclas;
2883 tANI_U8 version; // applies only for classifier type ip
2884 __ani_attr_pre_packed union {
2885 tSirMacTclasParamEthernet eth;
2886 tSirMacTclasParamIPv4 ipv4;
2887 tSirMacTclasParamIPv6 ipv6;
2888 tSirMacTclasParam8021dq t8021dq;
2889 }__ani_attr_packed tclasParams;
2890} __ani_attr_packed tSirTclasInfo;
2891
2892typedef struct sSirAddtsReqInfo
2893{
2894 tANI_U8 dialogToken;
2895 tSirMacTspecIE tspec;
2896
2897 tANI_U8 numTclas; // number of Tclas elements
2898 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
2899 tANI_U8 tclasProc;
2900#ifdef FEATURE_WLAN_CCX
2901 tSirMacCCXTSRSIE tsrsIE;
2902 tANI_U8 tsrsPresent:1;
2903#endif
2904 tANI_U8 wmeTspecPresent:1;
2905 tANI_U8 wsmTspecPresent:1;
2906 tANI_U8 lleTspecPresent:1;
2907 tANI_U8 tclasProcPresent:1;
2908} tSirAddtsReqInfo, *tpSirAddtsReqInfo;
2909
2910typedef struct sSirAddtsRspInfo
2911{
2912 tANI_U8 dialogToken;
2913 tSirMacStatusCodes status;
2914 tSirMacTsDelayIE delay;
2915
2916 tSirMacTspecIE tspec;
2917 tANI_U8 numTclas; // number of Tclas elements
2918 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
2919 tANI_U8 tclasProc;
2920 tSirMacScheduleIE schedule;
2921#ifdef FEATURE_WLAN_CCX
2922 tSirMacCCXTSMIE tsmIE;
2923 tANI_U8 tsmPresent:1;
2924#endif
2925 tANI_U8 wmeTspecPresent:1;
2926 tANI_U8 wsmTspecPresent:1;
2927 tANI_U8 lleTspecPresent:1;
2928 tANI_U8 tclasProcPresent:1;
2929 tANI_U8 schedulePresent:1;
2930} tSirAddtsRspInfo, *tpSirAddtsRspInfo;
2931
2932typedef struct sSirDeltsReqInfo
2933{
2934 tSirMacTSInfo tsinfo;
2935 tSirMacTspecIE tspec;
2936 tANI_U8 wmeTspecPresent:1;
2937 tANI_U8 wsmTspecPresent:1;
2938 tANI_U8 lleTspecPresent:1;
2939} tSirDeltsReqInfo, *tpSirDeltsReqInfo;
2940
2941/// Add a tspec as defined
2942typedef struct sSirAddtsReq
2943{
2944 tANI_U16 messageType; // eWNI_SME_ADDTS_REQ
2945 tANI_U16 length;
2946 tANI_U8 sessionId; //Session ID
2947 tANI_U16 transactionId;
2948 tSirMacAddr bssId; //BSSID
2949 tANI_U32 timeout; // in ms
2950 tANI_U8 rspReqd;
2951 tSirAddtsReqInfo req;
2952} tSirAddtsReq, *tpSirAddtsReq;
2953
2954typedef struct sSirAddtsRsp
2955{
2956 tANI_U16 messageType; // eWNI_SME_ADDTS_RSP
2957 tANI_U16 length;
2958 tANI_U8 sessionId; // sme sessionId Added for BT-AMP support
2959 tANI_U16 transactionId; //sme transaction Id Added for BT-AMP Support
2960 tANI_U32 rc; // return code
2961 tSirAddtsRspInfo rsp;
2962} tSirAddtsRsp, *tpSirAddtsRsp;
2963
2964typedef struct sSirDeltsReq
2965{
2966 tANI_U16 messageType; // eWNI_SME_DELTS_REQ
2967 tANI_U16 length;
2968 tANI_U8 sessionId;//Session ID
2969 tANI_U16 transactionId;
2970 tSirMacAddr bssId; //BSSID
2971 tANI_U16 aid; // use 0 if macAddr is being specified
2972 tANI_U8 macAddr[6]; // only on AP to specify the STA
2973 tANI_U8 rspReqd;
2974 tSirDeltsReqInfo req;
2975} tSirDeltsReq, *tpSirDeltsReq;
2976
2977typedef struct sSirDeltsRsp
2978{
2979 tANI_U16 messageType; // eWNI_SME_DELTS_RSP
2980 tANI_U16 length;
2981 tANI_U8 sessionId; // sme sessionId Added for BT-AMP support
2982 tANI_U16 transactionId; //sme transaction Id Added for BT-AMP Support
2983 tANI_U32 rc;
2984 tANI_U16 aid; // use 0 if macAddr is being specified
2985 tANI_U8 macAddr[6]; // only on AP to specify the STA
2986 tSirDeltsReqInfo rsp;
2987} tSirDeltsRsp, *tpSirDeltsRsp;
2988
2989#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX
2990
2991#define SIR_QOS_NUM_TSPEC_MAX 2
2992#define SIR_QOS_NUM_AC_MAX 4
2993
2994typedef struct sSirAggrQosReqInfo
2995{
2996 tANI_U16 tspecIdx;
2997 tSirAddtsReqInfo aggrAddTsInfo[SIR_QOS_NUM_AC_MAX];
2998}tSirAggrQosReqInfo, *tpSirAggrQosReqInfo;
2999
3000typedef struct sSirAggrQosReq
3001{
3002 tANI_U16 messageType; // eWNI_SME_ADDTS_REQ
3003 tANI_U16 length;
3004 tANI_U8 sessionId; //Session ID
3005 tANI_U16 transactionId;
3006 tSirMacAddr bssId; //BSSID
3007 tANI_U32 timeout; // in ms
3008 tANI_U8 rspReqd;
3009 tSirAggrQosReqInfo aggrInfo;
3010}tSirAggrQosReq, *tpSirAggrQosReq;
3011
3012typedef struct sSirAggrQosRspInfo
3013{
3014 tANI_U16 tspecIdx;
3015 tSirAddtsRspInfo aggrRsp[SIR_QOS_NUM_AC_MAX];
3016} tSirAggrQosRspInfo, *tpSirAggrQosRspInfo;
3017
3018typedef struct sSirAggrQosRsp
3019{
3020 tANI_U16 messageType;
3021 tANI_U16 length;
3022 tANI_U8 sessionId;
3023 tSirAggrQosRspInfo aggrInfo;
3024} tSirAggrQosRsp, *tpSirAggrQosRsp;
3025
3026#endif/*WLAN_FEATURE_VOWIFI_11R || FEATURE_WLAN_CCX*/
3027
3028typedef struct sSirSetTxPowerReq
3029{
3030 tANI_U16 messageType;
3031 tANI_U16 length;
3032 tANI_U32 txPower;
3033} tSirSetTxPowerReq, *tpSirSetTxPowerReq;
3034
3035typedef struct sSirSetTxPowerRsp
3036{
3037 tANI_U16 messageType;
3038 tANI_U16 length;
3039 tANI_U32 status;
3040} tSirSetTxPowerRsp, *tpSirSetTxPowerRsp;
3041
3042typedef struct sSirGetTxPowerReq
3043{
3044 tANI_U16 messageType;
3045 tANI_U16 length;
3046 tANI_U16 staid;
3047} tSirGetTxPowerReq, *tpSirGetTxPowerReq;
3048
3049typedef struct sSirGetTxPowerRsp
3050{
3051 tANI_U16 messageType;
3052 tANI_U16 length; // length of the entire request
3053 tANI_U32 power; // units of milliwatts
3054 tANI_U32 status;
3055} tSirGetTxPowerRsp, *tpSirGetTxPowerRsp;
3056
3057
3058typedef tANI_U32 tSirMacNoise[3];
3059
3060typedef struct sSirGetNoiseRsp
3061{
3062 tANI_U16 messageType;
3063 tANI_U16 length;
3064 tSirMacNoise noise;
3065} tSirGetNoiseRsp, *tpSirGetNoiseRsp;
3066
3067
3068//
3069// PMC --> PE --> HAL
3070// Power save configuration parameters
3071//
3072typedef struct sSirPowerSaveCfg
3073{
3074 tANI_U16 listenInterval;
3075
3076 /* Number of consecutive missed beacons before
3077 * hardware generates an interrupt to wake up
3078 * the host. In units of listen interval.
3079 */
3080 tANI_U32 HeartBeatCount;
3081
3082 /* specifies which beacons are to be forwarded
3083 * to host when beacon filtering is enabled.
3084 * In units of listen interval.
3085 */
3086 tANI_U32 nthBeaconFilter;
3087
3088 /* Maximum number of PS-Poll send before
3089 * firmware sends data null with PM set to 0.
3090 */
3091 tANI_U32 maxPsPoll;
3092
3093 /* If the average RSSI value falls below the
3094 * minRssiThreshold, then FW will send an
3095 * interrupt to wake up the host.
3096 */
3097 tANI_U32 minRssiThreshold;
3098
3099 /* Number of beacons for which firmware will
3100 * collect the RSSI values and compute the average.
3101 */
3102 tANI_U8 numBeaconPerRssiAverage;
3103
3104 /* FW collects the RSSI stats for this period
3105 * in BMPS mode.
3106 */
3107 tANI_U8 rssiFilterPeriod;
3108
3109 // Enabling/disabling broadcast frame filter feature
3110 tANI_U8 broadcastFrameFilter;
3111
3112 // Enabling/disabling the ignore DTIM feature
3113 tANI_U8 ignoreDtim;
3114
3115 /* The following configuration parameters are kept
3116 * in order to be backward compatible for Gen5.
3117 * These will NOT be used for Gen6 Libra chip
3118 */
3119 tBeaconForwarding beaconFwd;
3120 tANI_U16 nthBeaconFwd;
3121 tANI_U8 fEnablePwrSaveImmediately;
3122 tANI_U8 fPSPoll;
3123
3124 // Enabling/disabling Beacon Early Termination feature
3125 tANI_U8 fEnableBeaconEarlyTermination;
3126 tANI_U8 bcnEarlyTermWakeInterval;
3127
3128}tSirPowerSaveCfg, *tpSirPowerSaveCfg;
3129
3130/* Reason code for requesting Full Power. This reason code is used by
3131 any module requesting full power from PMC and also by PE when it
3132 sends the eWNI_PMC_EXIT_BMPS_IND to PMC*/
3133typedef enum eRequestFullPowerReason
3134{
3135 eSME_MISSED_BEACON_IND_RCVD, /* PE received a MAX_MISSED_BEACON_IND */
3136 eSME_BMPS_STATUS_IND_RCVD, /* PE received a SIR_HAL_BMPS_STATUS_IND */
3137 eSME_BMPS_MODE_DISABLED, /* BMPS mode was disabled by HDD in SME */
3138 eSME_LINK_DISCONNECTED_BY_HDD, /* Link has been disconnected requested by HDD */
3139 eSME_LINK_DISCONNECTED_BY_OTHER,/* Disconnect due to linklost or requested by peer */
3140 eSME_FULL_PWR_NEEDED_BY_HDD, /* HDD request full power for some reason */
3141 eSME_FULL_PWR_NEEDED_BY_BAP, /* BAP request full power for BT_AMP */
3142 eSME_FULL_PWR_NEEDED_BY_CSR, /* CSR requests full power */
3143 eSME_FULL_PWR_NEEDED_BY_QOS, /* QOS requests full power */
3144 eSME_FULL_PWR_NEEDED_BY_CHANNEL_SWITCH, /* channel switch request full power*/
3145 eSME_REASON_OTHER /* No specific reason. General reason code */
3146} tRequestFullPowerReason, tExitBmpsReason;
3147
3148
3149
3150//This is sent alongwith eWNI_PMC_EXIT_BMPS_REQ message
3151typedef struct sExitBmpsInfo
3152{
3153 tExitBmpsReason exitBmpsReason; /*Reason for exiting BMPS */
3154}tExitBmpsInfo, *tpExitBmpsInfo;
3155
3156
3157// MAC SW --> SME
3158// Message indicating to SME to exit BMPS sleep mode
3159typedef struct sSirSmeExitBmpsInd
3160{
3161 tANI_U16 mesgType; /* eWNI_PMC_EXIT_BMPS_IND */
3162 tANI_U16 mesgLen;
3163 tSirResultCodes statusCode;
3164 tExitBmpsReason exitBmpsReason; /*Reason for exiting BMPS */
3165
3166} tSirSmeExitBmpsInd, *tpSirSmeExitBmpsInd;
3167
3168
3169//
3170// HDD -> LIM
3171// tSirMsgQ.type = eWNI_SME_DEL_BA_PEER_IND
3172// tSirMsgQ.reserved = 0
3173// tSirMsgQ.body = instance of tDelBAParams
3174//
3175typedef struct sSmeDelBAPeerInd
3176{
3177 // Message Type
3178 tANI_U16 mesgType;
3179
3180 tSirMacAddr bssId;//BSSID
3181
3182 // Message Length
3183 tANI_U16 mesgLen;
3184
3185 // Station Index
3186 tANI_U16 staIdx;
3187
3188 // TID for which the BA session is being deleted
3189 tANI_U8 baTID;
3190
3191 // DELBA direction
3192 // eBA_INITIATOR - Originator
3193 // eBA_RECEIPIENT - Recipient
3194 tANI_U8 baDirection;
3195} tSmeDelBAPeerInd, *tpSmeDelBAPeerInd;
3196
3197typedef struct sSmeIbssPeerInd
3198{
3199 tANI_U16 mesgType;
3200 tANI_U16 mesgLen;
3201 tANI_U8 sessionId;
3202
3203 tSirMacAddr peerAddr;
3204 tANI_U16 staId;
3205
3206 /*The DPU signatures will be sent eventually to TL to help it determine the
3207 association to which a packet belongs to*/
3208 /*Unicast DPU signature*/
3209 tANI_U8 ucastSig;
3210
3211 /*Broadcast DPU signature*/
3212 tANI_U8 bcastSig;
3213
3214 //Beacon will be appended for new Peer indication.
3215}tSmeIbssPeerInd, *tpSmeIbssPeerInd;
3216
3217typedef struct sLimScanChn
3218{
3219 tANI_U16 numTimeScan; //how many time this channel is scan
3220 tANI_U8 channelId;
3221}tLimScanChn;
3222
3223typedef struct sSmeGetScanChnRsp
3224{
3225 // Message Type
3226 tANI_U16 mesgType;
3227 // Message Length
3228 tANI_U16 mesgLen;
3229 tANI_U8 sessionId;
3230 tANI_U8 numChn;
3231 tLimScanChn scanChn[1];
3232} tSmeGetScanChnRsp, *tpSmeGetScanChnRsp;
3233
3234typedef struct sLimScanChnInfo
3235{
3236 tANI_U8 numChnInfo; //number of channels in scanChn
3237 tLimScanChn scanChn[SIR_MAX_SUPPORTED_CHANNEL_LIST];
3238}tLimScanChnInfo;
3239
3240#ifdef WLAN_SOFTAP_FEATURE
3241typedef struct sSirSmeGetAssocSTAsReq
3242{
3243 tANI_U16 messageType; // eWNI_SME_GET_ASSOC_STAS_REQ
3244 tANI_U16 length;
3245 tSirMacAddr bssId; // BSSID
3246 tANI_U16 modId;
3247 void *pUsrContext;
3248 void *pSapEventCallback;
3249 void *pAssocStasArray;// Pointer to allocated memory passed in WLANSAP_GetAssocStations API
3250} tSirSmeGetAssocSTAsReq, *tpSirSmeGetAssocSTAsReq;
3251#endif
3252
3253typedef struct sSmeMaxAssocInd
3254{
3255 tANI_U16 mesgType; // eWNI_SME_MAX_ASSOC_EXCEEDED
3256 tANI_U16 mesgLen;
3257 tANI_U8 sessionId;
3258 tSirMacAddr peerMac; // the new peer that got rejected due to softap max assoc limit reached
3259} tSmeMaxAssocInd, *tpSmeMaxAssocInd;
3260
3261/*--------------------------------------------------------------------*/
3262/* BootLoader message definition */
3263/*--------------------------------------------------------------------*/
3264
3265/*--------------------------------------------------------------------*/
3266/* FW image size */
3267/*--------------------------------------------------------------------*/
3268#define SIR_FW_IMAGE_SIZE 146332
3269
3270
3271#define SIR_BOOT_MODULE_ID 1
3272
3273#define SIR_BOOT_SETUP_IND ((SIR_BOOT_MODULE_ID << 8) | 0x11)
3274#define SIR_BOOT_POST_RESULT_IND ((SIR_BOOT_MODULE_ID << 8) | 0x12)
3275#define SIR_BOOT_DNLD_RESULT_IND ((SIR_BOOT_MODULE_ID << 8) | 0x13)
3276#define SIR_BOOT_DNLD_DEV_REQ ((SIR_BOOT_MODULE_ID << 8) | 0x41)
3277#define SIR_BOOT_DNLD_DEV_RSP ((SIR_BOOT_MODULE_ID << 8) | 0x81)
3278#define SIR_BOOT_DNLD_REQ ((SIR_BOOT_MODULE_ID << 8) | 0x42)
3279#define SIR_BOOT_DNLD_RSP ((SIR_BOOT_MODULE_ID << 8) | 0x82)
3280
3281/*--------------------------------------------------------------------*/
3282/* Bootloader message syntax */
3283/*--------------------------------------------------------------------*/
3284
3285// Message header
3286#define SIR_BOOT_MB_HEADER 0
3287#define SIR_BOOT_MB_HEADER2 1
3288
3289#define SIR_BOOT_MSG_HDR_MASK 0xffff0000
3290#define SIR_BOOT_MSG_LEN_MASK 0x0000ffff
3291
3292// BOOT_SETUP_IND parameter indices
3293#define SIR_BOOT_SETUP_IND_MBADDR 2
3294#define SIR_BOOT_SETUP_IND_MBSIZE 3
3295#define SIR_BOOT_SETUP_IND_MEMOPT 4
3296#define SIR_BOOT_SETUP_IND_LEN \
3297 ((SIR_BOOT_SETUP_IND_MEMOPT+1)<<2)
3298
3299// BOOT_POST_RESULT_IND parameter indices
3300#define SIR_BOOT_POST_RESULT_IND_RES 2
3301#define SIR_BOOT_POST_RESULT_IND_LEN \
3302 ((SIR_BOOT_POST_RESULT_IND_RES+1)<<2)
3303
3304#define SIR_BOOT_POST_RESULT_IND_SUCCESS 1
3305#define SIR_BOOT_POST_RESULT_IND_MB_FAILED 2
3306#define SIR_BOOT_POST_RESULT_IND_SDRAM_FAILED 3
3307#define SIR_BOOT_POST_RESULT_IND_ESRAM_FAILED 4
3308
3309
3310// BOOT_DNLD_RESULT_IND parameter indices
3311#define SIR_BOOT_DNLD_RESULT_IND_RES 2
3312#define SIR_BOOT_DNLD_RESULT_IND_LEN \
3313 ((SIR_BOOT_DNLD_RESULT_IND_RES+1)<<2)
3314
3315#define SIR_BOOT_DNLD_RESULT_IND_SUCCESS 1
3316#define SIR_BOOT_DNLD_RESULT_IND_HDR_ERR 2
3317#define SIR_BOOT_DNLD_RESULT_IND_ERR 3
3318
3319// BOOT_DNLD_DEV_REQ
3320#define SIR_BOOT_DNLD_DEV_REQ_SDRAMSIZE 2
3321#define SIR_BOOT_DNLD_DEV_REQ_FLASHSIZE 3
3322#define SIR_BOOT_DNLD_DEV_REQ_LEN \
3323 ((SIR_BOOT_DNLD_DEV_REQ_FLASHSIZE+1)<<2)
3324
3325// BOOT_DNLD_DEV_RSP
3326#define SIR_BOOT_DNLD_DEV_RSP_DEVTYPE 2
3327#define SIR_BOOT_DNLD_DEV_RSP_LEN \
3328 ((SIR_BOOT_DNLD_DEV_RSP_DEVTYPE+1)<<2)
3329
3330#define SIR_BOOT_DNLD_DEV_RSP_SRAM 1
3331#define SIR_BOOT_DNLD_DEV_RSP_FLASH 2
3332
3333// BOOT_DNLD_REQ
3334#define SIR_BOOT_DNLD_REQ_OFFSET 2
3335#define SIR_BOOT_DNLD_REQ_WRADDR 3
3336#define SIR_BOOT_DNLD_REQ_SIZE 4
3337#define SIR_BOOT_DNLD_REQ_LEN ((SIR_BOOT_DNLD_REQ_SIZE+1)<<2)
3338
3339// BOOT_DNLD_RSP
3340#define SIR_BOOT_DNLD_RSP_SIZE 2
3341#define SIR_BOOT_DNLD_RSP_LEN ((SIR_BOOT_DNLD_RSP_SIZE+1)<<2)
3342
3343#if defined(ANI_OS_TYPE_RTAI_LINUX)
3344// RTAI WRAPPER definition - Buffer block control entry
3345// the new block Control entry is initialized by HDD
3346// memory buffers (blkPool) are allocated by HDD
3347// The table resides in plmac_rtai.c
3348#define BLOCK_ALLOCATED_BY_HDD 1
3349#define RED_ZONE 16 // 16 bytes between buffers
3350#define NUM_POOL 16 // NUM_POOL defined here for now, not
3351 // so good
3352typedef struct
3353{
3354 tANI_U16 blkSize;
3355 tANI_U16 blkNum;
3356 void *blkPool; // pointer to memory buffer
3357
3358} t_mac_block_table;
3359
3360#endif
3361
3362// board capabilities fields are defined here.
3363typedef __ani_attr_pre_packed struct sSirBoardCapabilities
3364{
3365#ifndef ANI_LITTLE_BIT_ENDIAN
3366 tANI_U32 concat:1; // 0 - Concat is not supported, 1 - Concat is supported
3367 tANI_U32 compression:1; // 0 - Compression is not supported, 1 - Compression is supported
3368 tANI_U32 chnlBonding:1; // 0 - Channel Bonding is not supported, 1 - Channel Bonding is supported
3369 tANI_U32 reverseFCS:1; // 0 - Reverse FCS is not supported, 1 - Reverse FCS is supported
3370 tANI_U32 rsvd1:2;
3371 // (productId derives sub-category in the following three families)
3372 tANI_U32 cbFamily:1; // 0 - Not CB family, 1 - Cardbus
3373 tANI_U32 apFamily:1; // 0 - Not AP family, 1 - AP
3374 tANI_U32 mpciFamily:1; // 0 - Not MPCI family, 1 - MPCI
3375 tANI_U32 bgOnly:1; // 0 - default a/b/g; 1 - b/g only
3376 tANI_U32 bbChipVer:4; // Baseband chip version
3377 tANI_U32 loType:2; // 0 = no LO, 1 = SILABS, 2 = ORION
3378 tANI_U32 radioOn:2; // Not supported is 3 or 2, 0 = Off and 1 = On
3379 tANI_U32 nReceivers:2; // 0 based.
3380 tANI_U32 nTransmitters:1; // 0 = 1 transmitter, 1 = 2 transmitters
3381 tANI_U32 sdram:1; // 0 = no SDRAM, 1 = SDRAM
3382 tANI_U32 rsvd:1;
3383 tANI_U32 extVsIntAnt:1; // 0 = ext antenna, 1 = internal antenna
3384#else
3385
3386 tANI_U32 extVsIntAnt:1; // 0 = ext antenna, 1 = internal antenna
3387 tANI_U32 rsvd:1;
3388 tANI_U32 sdram:1; // 0 = no SDRAM, 1 = SDRAM
3389 tANI_U32 nTransmitters:1; // 0 = 1 transmitter, 1 = 2 transmitters
3390 tANI_U32 nReceivers:2; // 0 based.
3391 tANI_U32 radioOn:2; // Not supported is 3 or 2, 0 = Off and 1 = On
3392 tANI_U32 loType:2; // 0 = no LO, 1 = SILABS, 2 = ORION
3393 tANI_U32 bbChipVer:4; // Baseband chip version
3394 tANI_U32 bgOnly:1; // 0 - default a/b/g; 1 - b/g only
3395 // (productId derives sub-category in the following three families)
3396 tANI_U32 mpciFamily:1; // 0 - Not MPCI family, 1 - MPCI
3397 tANI_U32 apFamily:1; // 0 - Not AP family, 1 - AP
3398 tANI_U32 cbFamily:1; // 0 - Not CB family, 1 - Cardbus
3399 tANI_U32 rsvd1:2;
3400 tANI_U32 reverseFCS:1; // 0 - Reverse FCS is not supported, 1 - Reverse FCS is supported
3401 tANI_U32 chnlBonding:1; // 0 - Channel Bonding is not supported, 1 - Channel Bonding is supported
3402 tANI_U32 compression:1; // 0 - Compression is not supported, 1 - Compression is supported
3403 tANI_U32 concat:1; // 0 - Concat is not supported, 1 - Concat is supported
3404#endif
3405} __ani_attr_packed tSirBoardCapabilities, *tpSirBoardCapabilities;
3406
3407# define ANI_BCAP_EXT_VS_INT_ANT_MASK 0x1
3408# define ANI_BCAP_EXT_VS_INT_ANT_OFFSET 0
3409
3410# define ANI_BCAP_GAL_ON_BOARD_MASK 0x2
3411# define ANI_BCAP_GAL_ON_BOARD_OFFSET 1
3412
3413# define ANI_BCAP_SDRAM_MASK 0x4
3414# define ANI_BCAP_SDRAM_OFFSET 2
3415
3416# define ANI_BCAP_NUM_TRANSMITTERS_MASK 0x8
3417# define ANI_BCAP_NUM_TRANSMITTERS_OFFSET 3
3418
3419# define ANI_BCAP_NUM_RECEIVERS_MASK 0x30
3420# define ANI_BCAP_NUM_RECEIVERS_OFFSET 4
3421
3422# define ANI_BCAP_RADIO_ON_MASK 0xC0
3423# define ANI_BCAP_RADIO_ON_OFFSET 6
3424
3425# define ANI_BCAP_LO_TYPE_MASK 0x300
3426# define ANI_BCAP_LO_TYPE_OFFSET 8
3427
3428# define ANI_BCAP_BB_CHIP_VER_MASK 0xC00
3429# define ANI_BCAP_BB_CHIP_VER_OFFSET 10
3430
3431# define ANI_BCAP_CYG_DATE_CODE_MASK 0xFF000
3432# define ANI_BCAP_CYG_DATE_CODE_OFFSET 12
3433
3434# define ANI_BCAP_RADIO_OFF 0
3435# define ANI_BCAP_RADIO_ON 1
3436# define ANI_BCAP_RADIO_ON_NOT_SUPPORTED 3
3437
3438
3439/// WOW related structures
3440// SME -> PE <-> HAL
3441#define SIR_WOWL_BCAST_PATTERN_MAX_SIZE 128
3442#define SIR_WOWL_BCAST_MAX_NUM_PATTERNS 16
3443
3444// SME -> PE -> HAL - This is to add WOWL BCAST wake-up pattern.
3445// SME/HDD maintains the list of the BCAST wake-up patterns.
3446// This is a pass through message for PE
3447typedef struct sSirWowlAddBcastPtrn
3448{
3449 tANI_U8 ucPatternId; // Pattern ID
3450 // Pattern byte offset from beginning of the 802.11 packet to start of the
3451 // wake-up pattern
3452 tANI_U8 ucPatternByteOffset;
3453 tANI_U8 ucPatternSize; // Non-Zero Pattern size
3454 tANI_U8 ucPattern[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Pattern
3455 tANI_U8 ucPatternMaskSize; // Non-zero pattern mask size
3456 tANI_U8 ucPatternMask[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Pattern mask
3457 // Extra pattern data beyond 128 bytes
3458 tANI_U8 ucPatternExt[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Extra Pattern
3459 tANI_U8 ucPatternMaskExt[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Extra Pattern mask
3460} tSirWowlAddBcastPtrn, *tpSirWowlAddBcastPtrn;
3461
3462
3463// SME -> PE -> HAL - This is to delete WOWL BCAST wake-up pattern.
3464// SME/HDD maintains the list of the BCAST wake-up patterns.
3465// This is a pass through message for PE
3466typedef struct sSirWowlDelBcastPtrn
3467{
3468 /* Pattern ID of the wakeup pattern to be deleted */
3469 tANI_U8 ucPatternId;
3470}tSirWowlDelBcastPtrn, *tpSirWowlDelBcastPtrn;
3471
3472
3473// SME->PE: Enter WOWLAN parameters
3474typedef struct sSirSmeWowlEnterParams
3475{
3476 /* Enables/disables magic packet filtering */
3477 tANI_U8 ucMagicPktEnable;
3478
3479 /* Magic pattern */
3480 tSirMacAddr magicPtrn;
3481
3482 /* Enables/disables packet pattern filtering */
3483 tANI_U8 ucPatternFilteringEnable;
3484
3485#ifdef WLAN_WAKEUP_EVENTS
3486 /* This configuration directs the WoW packet filtering to look for EAP-ID
3487 * requests embedded in EAPOL frames and use this as a wake source.
3488 */
3489 tANI_U8 ucWoWEAPIDRequestEnable;
3490
3491 /* This configuration directs the WoW packet filtering to look for EAPOL-4WAY
3492 * requests and use this as a wake source.
3493 */
3494 tANI_U8 ucWoWEAPOL4WayEnable;
3495
3496 /* This configuration allows a host wakeup on an network scan offload match.
3497 */
3498 tANI_U8 ucWowNetScanOffloadMatch;
3499
3500 /* This configuration allows a host wakeup on any GTK rekeying error.
3501 */
3502 tANI_U8 ucWowGTKRekeyError;
3503
3504 /* This configuration allows a host wakeup on BSS connection loss.
3505 */
3506 tANI_U8 ucWoWBSSConnLoss;
3507#endif // WLAN_WAKEUP_EVENTS
3508
3509} tSirSmeWowlEnterParams, *tpSirSmeWowlEnterParams;
3510
3511
3512// PE<->HAL: Enter WOWLAN parameters
3513typedef struct sSirHalWowlEnterParams
3514{
3515 /* Enables/disables magic packet filtering */
3516 tANI_U8 ucMagicPktEnable;
3517
3518 /* Magic pattern */
3519 tSirMacAddr magicPtrn;
3520
3521 /* Enables/disables packet pattern filtering in firmware.
3522 Enabling this flag enables broadcast pattern matching
3523 in Firmware. If unicast pattern matching is also desired,
3524 ucUcastPatternFilteringEnable flag must be set tot true
3525 as well
3526 */
3527 tANI_U8 ucPatternFilteringEnable;
3528
3529 /* Enables/disables unicast packet pattern filtering.
3530 This flag specifies whether we want to do pattern match
3531 on unicast packets as well and not just broadcast packets.
3532 This flag has no effect if the ucPatternFilteringEnable
3533 (main controlling flag) is set to false
3534 */
3535 tANI_U8 ucUcastPatternFilteringEnable;
3536
3537 /* This configuration is valid only when magicPktEnable=1.
3538 * It requests hardware to wake up when it receives the
3539 * Channel Switch Action Frame.
3540 */
3541 tANI_U8 ucWowChnlSwitchRcv;
3542
3543 /* This configuration is valid only when magicPktEnable=1.
3544 * It requests hardware to wake up when it receives the
3545 * Deauthentication Frame.
3546 */
3547 tANI_U8 ucWowDeauthRcv;
3548
3549 /* This configuration is valid only when magicPktEnable=1.
3550 * It requests hardware to wake up when it receives the
3551 * Disassociation Frame.
3552 */
3553 tANI_U8 ucWowDisassocRcv;
3554
3555 /* This configuration is valid only when magicPktEnable=1.
3556 * It requests hardware to wake up when it has missed
3557 * consecutive beacons. This is a hardware register
3558 * configuration (NOT a firmware configuration).
3559 */
3560 tANI_U8 ucWowMaxMissedBeacons;
3561
3562 /* This configuration is valid only when magicPktEnable=1.
3563 * This is a timeout value in units of microsec. It requests
3564 * hardware to unconditionally wake up after it has stayed
3565 * in WoWLAN mode for some time. Set 0 to disable this feature.
3566 */
3567 tANI_U8 ucWowMaxSleepUsec;
3568
3569#ifdef WLAN_WAKEUP_EVENTS
3570 /* This configuration directs the WoW packet filtering to look for EAP-ID
3571 * requests embedded in EAPOL frames and use this as a wake source.
3572 */
3573 tANI_U8 ucWoWEAPIDRequestEnable;
3574
3575 /* This configuration directs the WoW packet filtering to look for EAPOL-4WAY
3576 * requests and use this as a wake source.
3577 */
3578 tANI_U8 ucWoWEAPOL4WayEnable;
3579
3580 /* This configuration allows a host wakeup on an network scan offload match.
3581 */
3582 tANI_U8 ucWowNetScanOffloadMatch;
3583
3584 /* This configuration allows a host wakeup on any GTK rekeying error.
3585 */
3586 tANI_U8 ucWowGTKRekeyError;
3587
3588 /* This configuration allows a host wakeup on BSS connection loss.
3589 */
3590 tANI_U8 ucWoWBSSConnLoss;
3591#endif // WLAN_WAKEUP_EVENTS
3592
3593 /* Status code to be filled by HAL when it sends
3594 * SIR_HAL_WOWL_ENTER_RSP to PE.
3595 */
3596 eHalStatus status;
3597} tSirHalWowlEnterParams, *tpSirHalWowlEnterParams;
3598
3599#ifdef WLAN_SOFTAP_FEATURE
3600
3601#define SIR_MAX_NAME_SIZE 64
3602#define SIR_MAX_TEXT_SIZE 32
3603
3604typedef struct sSirName {
3605 v_U8_t num_name;
3606 v_U8_t name[SIR_MAX_NAME_SIZE];
3607} tSirName;
3608
3609typedef struct sSirText {
3610 v_U8_t num_text;
3611 v_U8_t text[SIR_MAX_TEXT_SIZE];
3612} tSirText;
3613
3614
3615#define SIR_WPS_PROBRSP_VER_PRESENT 0x00000001
3616#define SIR_WPS_PROBRSP_STATE_PRESENT 0x00000002
3617#define SIR_WPS_PROBRSP_APSETUPLOCK_PRESENT 0x00000004
3618#define SIR_WPS_PROBRSP_SELECTEDREGISTRA_PRESENT 0x00000008
3619#define SIR_WPS_PROBRSP_DEVICEPASSWORDID_PRESENT 0x00000010
3620#define SIR_WPS_PROBRSP_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020
3621#define SIR_WPS_PROBRSP_RESPONSETYPE_PRESENT 0x00000040
3622#define SIR_WPS_PROBRSP_UUIDE_PRESENT 0x00000080
3623#define SIR_WPS_PROBRSP_MANUFACTURE_PRESENT 0x00000100
3624#define SIR_WPS_PROBRSP_MODELNAME_PRESENT 0x00000200
3625#define SIR_WPS_PROBRSP_MODELNUMBER_PRESENT 0x00000400
3626#define SIR_WPS_PROBRSP_SERIALNUMBER_PRESENT 0x00000800
3627#define SIR_WPS_PROBRSP_PRIMARYDEVICETYPE_PRESENT 0x00001000
3628#define SIR_WPS_PROBRSP_DEVICENAME_PRESENT 0x00002000
3629#define SIR_WPS_PROBRSP_CONFIGMETHODS_PRESENT 0x00004000
3630#define SIR_WPS_PROBRSP_RF_BANDS_PRESENT 0x00008000
3631
3632
3633typedef struct sSirWPSProbeRspIE {
3634 v_U32_t FieldPresent;
3635 v_U32_t Version; // Version. 0x10 = version 1.0, 0x11 = etc.
3636 v_U32_t wpsState; // 1 = unconfigured, 2 = configured.
3637 v_BOOL_t APSetupLocked; // Must be included if value is TRUE
3638 v_BOOL_t SelectedRegistra; //BOOL: indicates if the user has recently activated a Registrar to add an Enrollee.
3639 v_U16_t DevicePasswordID; // Device Password ID
3640 v_U16_t SelectedRegistraCfgMethod; // Selected Registrar config method
3641 v_U8_t ResponseType; // Response type
3642 v_U8_t UUID_E[16]; // Unique identifier of the AP.
3643 tSirName Manufacture;
3644 tSirText ModelName;
3645 tSirText ModelNumber;
3646 tSirText SerialNumber;
3647 v_U32_t PrimaryDeviceCategory ; // Device Category ID: 1Computer, 2Input Device, ...
3648 v_U8_t PrimaryDeviceOUI[4] ; // Vendor specific OUI for Device Sub Category
3649 v_U32_t DeviceSubCategory ; // Device Sub Category ID: 1-PC, 2-Server if Device Category ID is computer
3650 tSirText DeviceName;
3651 v_U16_t ConfigMethod; // Configuaration method
3652 v_U8_t RFBand; // RF bands available on the AP
3653} tSirWPSProbeRspIE;
3654
3655#define SIR_WPS_BEACON_VER_PRESENT 0x00000001
3656#define SIR_WPS_BEACON_STATE_PRESENT 0x00000002
3657#define SIR_WPS_BEACON_APSETUPLOCK_PRESENT 0x00000004
3658#define SIR_WPS_BEACON_SELECTEDREGISTRA_PRESENT 0x00000008
3659#define SIR_WPS_BEACON_DEVICEPASSWORDID_PRESENT 0x00000010
3660#define SIR_WPS_BEACON_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020
3661#define SIR_WPS_BEACON_UUIDE_PRESENT 0x00000080
3662#define SIR_WPS_BEACON_RF_BANDS_PRESENT 0x00000100
3663
3664typedef struct sSirWPSBeaconIE {
3665 v_U32_t FieldPresent;
3666 v_U32_t Version; // Version. 0x10 = version 1.0, 0x11 = etc.
3667 v_U32_t wpsState; // 1 = unconfigured, 2 = configured.
3668 v_BOOL_t APSetupLocked; // Must be included if value is TRUE
3669 v_BOOL_t SelectedRegistra; //BOOL: indicates if the user has recently activated a Registrar to add an Enrollee.
3670 v_U16_t DevicePasswordID; // Device Password ID
3671 v_U16_t SelectedRegistraCfgMethod; // Selected Registrar config method
3672 v_U8_t UUID_E[16]; // Unique identifier of the AP.
3673 v_U8_t RFBand; // RF bands available on the AP
3674} tSirWPSBeaconIE;
3675
3676#define SIR_WPS_ASSOCRSP_VER_PRESENT 0x00000001
3677#define SIR_WPS_ASSOCRSP_RESPONSETYPE_PRESENT 0x00000002
3678
3679typedef struct sSirWPSAssocRspIE {
3680 v_U32_t FieldPresent;
3681 v_U32_t Version;
3682 v_U8_t ResposeType;
3683} tSirWPSAssocRspIE;
3684
3685typedef struct sSirAPWPSIEs {
3686 tSirWPSProbeRspIE SirWPSProbeRspIE; /*WPS Set Probe Respose IE*/
3687 tSirWPSBeaconIE SirWPSBeaconIE; /*WPS Set Beacon IE*/
3688 tSirWPSAssocRspIE SirWPSAssocRspIE; /*WPS Set Assoc Response IE*/
3689} tSirAPWPSIEs, *tpSiriAPWPSIEs;
3690
3691typedef struct sSirUpdateAPWPSIEsReq
3692{
3693 tANI_U16 messageType; // eWNI_SME_UPDATE_APWPSIE_REQ
3694 tANI_U16 length;
3695 tANI_U16 transactionId; //Transaction ID for cmd
3696 tSirMacAddr bssId; // BSSID
3697 tANI_U8 sessionId; //Session ID
3698 tSirAPWPSIEs APWPSIEs;
3699} tSirUpdateAPWPSIEsReq, *tpSirUpdateAPWPSIEsReq;
3700
3701typedef struct sSirUpdateParams
3702{
3703 tANI_U16 messageType;
3704 tANI_U16 length;
3705 tANI_U8 sessionId; // Session ID
3706 tANI_U8 ssidHidden; // Hide SSID
3707} tSirUpdateParams, *tpSirUpdateParams;
3708
3709#define SIR_WPS_UUID_LEN 16
3710#define SIR_WPS_PBC_WALK_TIME 120 // 120 Second
3711
3712typedef struct sSirWPSPBCSession {
3713 struct sSirWPSPBCSession *next;
3714 tSirMacAddr addr;
3715 tANI_U8 uuid_e[SIR_WPS_UUID_LEN];
3716 tANI_TIMESTAMP timestamp;
3717} tSirWPSPBCSession;
3718
3719typedef struct sSirSmeGetWPSPBCSessionsReq
3720{
3721 tANI_U16 messageType; // eWNI_SME_GET_WPSPBC_SESSION_REQ
3722 tANI_U16 length;
3723 void *pUsrContext;
3724 void *pSapEventCallback;
3725 tSirMacAddr bssId; // BSSID
3726 tSirMacAddr pRemoveMac; // MAC Address of STA in WPS Session to be removed
3727} tSirSmeGetWPSPBCSessionsReq, *tpSirSmeGetWPSPBCSessionsReq;
3728
3729typedef struct sSirWPSPBCProbeReq
3730{
3731 tSirMacAddr peerMacAddr;
3732 tANI_U16 probeReqIELen;
3733 tANI_U8 probeReqIE[512];
3734} tSirWPSPBCProbeReq, *tpSirWPSPBCProbeReq;
3735
3736// probereq from peer, when wsc is enabled
3737typedef struct sSirSmeProbeReqInd
3738{
3739 tANI_U16 messageType; // eWNI_SME_WPS_PBC_PROBE_REQ_IND
3740 tANI_U16 length;
3741 tANI_U8 sessionId;
3742 tSirMacAddr bssId;
3743 tSirWPSPBCProbeReq WPSPBCProbeReq;
3744} tSirSmeProbeReqInd, *tpSirSmeProbeReqInd;
3745
3746typedef struct sSirUpdateAPWPARSNIEsReq
3747{
3748 tANI_U16 messageType; // eWNI_SME_SET_APWPARSNIEs_REQ
3749 tANI_U16 length;
3750 tANI_U16 transactionId; //Transaction ID for cmd
3751 tSirMacAddr bssId; // BSSID
3752 tANI_U8 sessionId; //Session ID
3753 tSirRSNie APWPARSNIEs;
3754} tSirUpdateAPWPARSNIEsReq, *tpSirUpdateAPWPARSNIEsReq;
3755
3756#endif
3757
3758// SME -> HAL - This is the host offload request.
3759#define SIR_IPV4_ARP_REPLY_OFFLOAD 0
3760#define SIR_IPV6_NEIGHBOR_DISCOVERY_OFFLOAD 1
3761#define SIR_IPV6_NS_OFFLOAD 2
3762#define SIR_OFFLOAD_DISABLE 0
3763#define SIR_OFFLOAD_ENABLE 1
3764#define SIR_OFFLOAD_BCAST_FILTER_ENABLE 0x2
3765#define SIR_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE (SIR_OFFLOAD_ENABLE|SIR_OFFLOAD_BCAST_FILTER_ENABLE)
3766
3767#ifdef WLAN_NS_OFFLOAD
3768typedef struct sSirNsOffloadReq
3769{
3770 tANI_U8 srcIPv6Addr[16];
3771 tANI_U8 selfIPv6Addr[16];
3772 //Only support 2 possible Network Advertisement IPv6 address
3773 tANI_U8 targetIPv6Addr[SIR_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][16];
3774 tANI_U8 selfMacAddr[6];
3775 tANI_U8 srcIPv6AddrValid;
3776 tANI_U8 targetIPv6AddrValid[SIR_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA];
3777} tSirNsOffloadReq, *tpSirNsOffloadReq;
3778#endif //WLAN_NS_OFFLOAD
3779
3780typedef struct sSirHostOffloadReq
3781{
3782 tANI_U8 offloadType;
3783 tANI_U8 enableOrDisable;
3784 union
3785 {
3786 tANI_U8 hostIpv4Addr [4];
3787 tANI_U8 hostIpv6Addr [16];
3788 } params;
3789#ifdef WLAN_NS_OFFLOAD
3790 tSirNsOffloadReq nsOffloadInfo;
3791#endif //WLAN_NS_OFFLOAD
3792} tSirHostOffloadReq, *tpSirHostOffloadReq;
3793
3794/* Packet Types. */
3795#define SIR_KEEP_ALIVE_NULL_PKT 1
3796#define SIR_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2
3797
3798/* Enable or disable offload. */
3799#define SIR_KEEP_ALIVE_DISABLE 0
3800#define SIR_KEEP_ALIVE_ENABLE 1
3801
3802/* Keep Alive request. */
3803typedef struct sSirKeepAliveReq
3804{
3805 v_U8_t packetType;
3806 v_U32_t timePeriod;
3807 tSirIpv4Addr hostIpv4Addr;
3808 tSirIpv4Addr destIpv4Addr;
3809 tSirMacAddr destMacAddr;
3810
3811} tSirKeepAliveReq, *tpSirKeepAliveReq;
3812
3813typedef struct sSirSmeAddStaSelfReq
3814{
3815 tANI_U16 mesgType;
3816 tANI_U16 mesgLen;
3817 tSirMacAddr selfMacAddr;
3818}tSirSmeAddStaSelfReq, *tpSirSmeAddStaSelfReq;
3819
3820typedef struct sSirSmeDelStaSelfReq
3821{
3822 tANI_U16 mesgType;
3823 tANI_U16 mesgLen;
3824 tSirMacAddr selfMacAddr;
3825}tSirSmeDelStaSelfReq, *tpSirSmeDelStaSelfReq;
3826
3827typedef struct sSirSmeAddStaSelfRsp
3828{
3829 tANI_U16 mesgType;
3830 tANI_U16 mesgLen;
3831 tANI_U16 status;
3832 tSirMacAddr selfMacAddr;
3833}tSirSmeAddStaSelfRsp, *tpSirSmeAddStaSelfRsp;
3834
3835typedef struct sSirSmeDelStaSelfRsp
3836{
3837 tANI_U16 mesgType;
3838 tANI_U16 mesgLen;
3839 tANI_U16 status;
3840 tSirMacAddr selfMacAddr;
3841}tSirSmeDelStaSelfRsp, *tpSirSmeDelStaSelfRsp;
3842
3843/* Coex Indication defines -
3844 should match WLAN_COEX_IND_DATA_SIZE
3845 should match WLAN_COEX_IND_TYPE_DISABLE_HB_MONITOR
3846 should match WLAN_COEX_IND_TYPE_ENABLE_HB_MONITOR */
3847#define SIR_COEX_IND_DATA_SIZE (4)
3848#define SIR_COEX_IND_TYPE_DISABLE_HB_MONITOR (0)
3849#define SIR_COEX_IND_TYPE_ENABLE_HB_MONITOR (1)
3850
3851typedef struct sSirSmeCoexInd
3852{
3853 tANI_U16 mesgType;
3854 tANI_U16 mesgLen;
3855 tANI_U32 coexIndType;
3856 tANI_U32 coexIndData[SIR_COEX_IND_DATA_SIZE];
3857}tSirSmeCoexInd, *tpSirSmeCoexInd;
3858
3859#ifdef WLAN_FEATURE_P2P
3860typedef struct sSirSmeMgmtFrameInd
3861{
3862 tANI_U16 mesgType;
3863 tANI_U16 mesgLen;
3864 tANI_U8 sessionId;
3865 tANI_U8 frameType;
3866 tANI_U32 rxChan;
3867 tANI_U8 frameBuf[1]; //variable
3868}tSirSmeMgmtFrameInd, *tpSirSmeMgmtFrameInd;
3869#endif
3870
3871#define SIR_IS_FULL_POWER_REASON_DISCONNECTED(eReason) \
3872 ( ( eSME_LINK_DISCONNECTED_BY_HDD == (eReason) ) || \
3873 ( eSME_LINK_DISCONNECTED_BY_OTHER == (eReason) ) || \
3874 (eSME_FULL_PWR_NEEDED_BY_CHANNEL_SWITCH == (eReason)))
3875#define SIR_IS_FULL_POWER_NEEDED_BY_HDD(eReason) \
3876 ( ( eSME_LINK_DISCONNECTED_BY_HDD == (eReason) ) || ( eSME_FULL_PWR_NEEDED_BY_HDD == (eReason) ) )
3877
3878/* P2P Power Save Related */
3879#ifdef WLAN_FEATURE_P2P
3880typedef struct sSirNoAParam
3881{
3882 tANI_U8 ctWindow:7;
3883 tANI_U8 OppPS:1;
3884 tANI_U8 count;
3885 tANI_U32 duration;
3886 tANI_U32 interval;
3887 tANI_U32 singleNoADuration;
3888 tANI_U8 psSelection;
3889}tSirNoAParam, *tpSirNoAParam;
3890#endif
3891
3892#ifdef FEATURE_WLAN_INTEGRATED_SOC
3893typedef struct sSirWlanSuspendParam
3894{
3895 tANI_U8 configuredMcstBcstFilterSetting;
3896}tSirWlanSuspendParam,*tpSirWlanSuspendParam;
3897
3898typedef struct sSirWlanResumeParam
3899{
3900 tANI_U8 configuredMcstBcstFilterSetting;
3901}tSirWlanResumeParam,*tpSirWlanResumeParam;
3902
3903typedef struct sSirWlanSetRxpFilters
3904{
3905 tANI_U8 configuredMcstBcstFilterSetting;
3906 tANI_U8 setMcstBcstFilter;
3907}tSirWlanSetRxpFilters,*tpSirWlanSetRxpFilters;
3908#endif
3909
3910
3911#ifdef FEATURE_WLAN_SCAN_PNO
3912//
3913// PNO Messages
3914//
3915
3916// Set PNO
3917#define SIR_PNO_MAX_NETW_CHANNELS 26
3918#define SIR_PNO_MAX_SUPP_NETWORKS 16
3919#define SIR_PNO_MAX_SCAN_TIMERS 10
3920
3921/*size based of dot11 declaration without extra IEs as we will not carry those for PNO*/
3922#define SIR_PNO_MAX_PB_REQ_SIZE 450
3923
3924#define SIR_PNO_24G_DEFAULT_CH 1
3925#define SIR_PNO_5G_DEFAULT_CH 36
3926
3927typedef enum
3928{
3929 SIR_PNO_MODE_IMMEDIATE,
3930 SIR_PNO_MODE_ON_SUSPEND,
3931 SIR_PNO_MODE_ON_RESUME,
3932 SIR_PNO_MODE_MAX
3933} eSirPNOMode;
3934
3935typedef struct
3936{
3937 tSirMacSSid ssId;
3938 tANI_U32 authentication;
3939 tANI_U32 encryption;
3940 tANI_U32 bcastNetwType;
3941 tANI_U8 ucChannelCount;
3942 tANI_U8 aChannels[SIR_PNO_MAX_NETW_CHANNELS];
3943 tANI_U8 rssiThreshold;
3944} tSirNetworkType;
3945
3946typedef struct
3947{
3948 tANI_U32 uTimerValue;
3949 tANI_U32 uTimerRepeat;
3950}tSirScanTimer;
3951
3952typedef struct
3953{
3954 tANI_U8 ucScanTimersCount;
3955 tSirScanTimer aTimerValues[SIR_PNO_MAX_SCAN_TIMERS];
3956} tSirScanTimersType;
3957
3958typedef struct sSirPNOScanReq
3959{
3960 tANI_U8 enable;
3961 eSirPNOMode modePNO;
3962 tANI_U8 ucNetworksCount;
3963 tSirNetworkType aNetworks[SIR_PNO_MAX_SUPP_NETWORKS];
3964 tSirScanTimersType scanTimers;
3965
3966 /*added by SME*/
3967 tANI_U16 us24GProbeTemplateLen;
3968 tANI_U8 p24GProbeTemplate[SIR_PNO_MAX_PB_REQ_SIZE];
3969 tANI_U16 us5GProbeTemplateLen;
3970 tANI_U8 p5GProbeTemplate[SIR_PNO_MAX_PB_REQ_SIZE];
3971} tSirPNOScanReq, *tpSirPNOScanReq;
3972
3973typedef struct sSirSetRSSIFilterReq
3974{
3975 tANI_U8 rssiThreshold;
3976} tSirSetRSSIFilterReq, *tpSirSetRSSIFilterReq;
3977
3978
3979// Update Scan Params
3980typedef struct {
3981 tANI_U8 b11dEnabled;
3982 tANI_U8 b11dResolved;
3983 tANI_U8 ucChannelCount;
3984 tANI_U8 aChannels[SIR_PNO_MAX_NETW_CHANNELS];
3985 tANI_U16 usPassiveMinChTime;
3986 tANI_U16 usPassiveMaxChTime;
3987 tANI_U16 usActiveMinChTime;
3988 tANI_U16 usActiveMaxChTime;
3989 tANI_U8 ucCBState;
3990} tSirUpdateScanParams, * tpSirUpdateScanParams;
3991
3992// Preferred Network Found Indication
3993typedef struct
3994{
3995 tANI_U16 mesgType;
3996 tANI_U16 mesgLen;
3997 /* Network that was found with the highest RSSI*/
3998 tSirMacSSid ssId;
3999 /* Indicates the RSSI */
4000 tANI_U8 rssi;
4001} tSirPrefNetworkFoundInd, *tpSirPrefNetworkFoundInd;
4002#endif // FEATURE_WLAN_SCAN_PNO
4003
4004#define SIR_NOCHANGE_POWER_VALUE 0xFFFFFFFF
4005
4006//Power Parameters Type
4007typedef enum
4008{
4009 eSIR_IGNORE_DTIM = 1,
4010 eSIR_LISTEN_INTERVAL = 2,
4011 eSIR_MCAST_BCAST_FILTER = 3,
4012 eSIR_ENABLE_BET = 4,
4013 eSIR_BET_INTERVAL = 5
4014}tPowerParamType;
4015
4016//Power Parameters Value s
4017typedef struct
4018{
4019 /* Ignore DTIM */
4020 tANI_U32 uIgnoreDTIM;
4021
4022 /* DTIM Period */
4023 tANI_U32 uDTIMPeriod;
4024
4025 /* Listen Interval */
4026 tANI_U32 uListenInterval;
4027
4028 /* Broadcast Multicas Filter */
4029 tANI_U32 uBcastMcastFilter;
4030
4031 /* Beacon Early Termination */
4032 tANI_U32 uEnableBET;
4033
4034 /* Beacon Early Termination Interval */
4035 tANI_U32 uBETInterval;
4036
4037}tSirSetPowerParamsReq, *tpSirSetPowerParamsReq;
4038
4039typedef struct sSirTxPerTrackingParam
4040{
4041 tANI_U8 ucTxPerTrackingEnable; /* 0: disable, 1:enable */
4042 tANI_U8 ucTxPerTrackingPeriod; /* Check period, unit is sec. Once tx_stat_chk enable, firmware will check PER in this period periodically */
4043 tANI_U8 ucTxPerTrackingRatio; /* (Fail TX packet)/(Total TX packet) ratio, the unit is 10%. for example, 5 means 50% TX failed rate, default is 5. If current TX packet failed rate bigger than this ratio then firmware send WLC_E_TX_STAT_ERROR event to driver */
4044 tANI_U32 uTxPerTrackingWatermark; /* A watermark of check number, once the tx packet exceed this number, we do the check, default is 5 */
4045}tSirTxPerTrackingParam, *tpSirTxPerTrackingParam;
4046
4047#ifdef WLAN_FEATURE_PACKET_FILTERING
4048/*---------------------------------------------------------------------------
4049 Packet Filtering Parameters
4050---------------------------------------------------------------------------*/
4051#define SIR_IPV4_ADDR_LEN 4
4052#define SIR_MAC_ADDR_LEN 6
4053#define SIR_MAX_FILTER_TEST_DATA_LEN 8
4054#define SIR_MAX_NUM_MULTICAST_ADDRESS 240
4055#define SIR_MAX_NUM_FILTERS 20
4056#define SIR_MAX_NUM_TESTS_PER_FILTER 10
4057
4058//
4059// Receive Filter Parameters
4060//
4061typedef enum
4062{
4063 SIR_RCV_FILTER_TYPE_INVALID,
4064 SIR_RCV_FILTER_TYPE_FILTER_PKT,
4065 SIR_RCV_FILTER_TYPE_BUFFER_PKT,
4066 SIR_RCV_FILTER_TYPE_MAX_ENUM_SIZE
4067}eSirReceivePacketFilterType;
4068
4069typedef enum
4070{
4071 SIR_FILTER_HDR_TYPE_INVALID,
4072 SIR_FILTER_HDR_TYPE_MAC,
4073 SIR_FILTER_HDR_TYPE_ARP,
4074 SIR_FILTER_HDR_TYPE_IPV4,
4075 SIR_FILTER_HDR_TYPE_IPV6,
4076 SIR_FILTER_HDR_TYPE_UDP,
4077 SIR_FILTER_HDR_TYPE_MAX
4078}eSirRcvPktFltProtocolType;
4079
4080typedef enum
4081{
4082 SIR_FILTER_CMP_TYPE_INVALID,
4083 SIR_FILTER_CMP_TYPE_EQUAL,
4084 SIR_FILTER_CMP_TYPE_MASK_EQUAL,
4085 SIR_FILTER_CMP_TYPE_NOT_EQUAL,
4086 SIR_FILTER_CMP_TYPE_MASK_NOT_EQUAL,
4087 SIR_FILTER_CMP_TYPE_MAX
4088}eSirRcvPktFltCmpFlagType;
4089
4090typedef struct sSirRcvPktFilterFieldParams
4091{
4092 eSirRcvPktFltProtocolType protocolLayer;
4093 eSirRcvPktFltCmpFlagType cmpFlag;
4094 /* Length of the data to compare */
4095 tANI_U16 dataLength;
4096 /* from start of the respective frame header */
4097 tANI_U8 dataOffset;
4098 /* Reserved field */
4099 tANI_U8 reserved;
4100 /* Data to compare */
4101 tANI_U8 compareData[SIR_MAX_FILTER_TEST_DATA_LEN];
4102 /* Mask to be applied on the received packet data before compare */
4103 tANI_U8 dataMask[SIR_MAX_FILTER_TEST_DATA_LEN];
4104}tSirRcvPktFilterFieldParams, *tpSirRcvPktFilterFieldParams;
4105
4106typedef struct sSirRcvPktFilterCfg
4107{
4108 tANI_U8 filterId;
4109 eSirReceivePacketFilterType filterType;
4110 tANI_U32 numFieldParams;
4111 tANI_U32 coalesceTime;
4112 tSirRcvPktFilterFieldParams paramsData[SIR_MAX_NUM_TESTS_PER_FILTER];
4113}tSirRcvPktFilterCfgType, *tpSirRcvPktFilterCfgType;
4114
4115//
4116// Filter Packet Match Count Parameters
4117//
4118typedef struct sSirRcvFltPktMatchCnt
4119{
4120 tANI_U8 filterId;
4121 tANI_U32 matchCnt;
4122} tSirRcvFltPktMatchCnt, tpSirRcvFltPktMatchCnt;
4123
4124typedef struct sSirRcvFltPktMatchRsp
4125{
4126 tANI_U16 mesgType;
4127 tANI_U16 mesgLen;
4128
4129 /* Success or Failure */
4130 tANI_U32 status;
4131 tSirRcvFltPktMatchCnt filterMatchCnt[SIR_MAX_NUM_FILTERS];
4132} tSirRcvFltPktMatchRsp, *tpSirRcvFltPktMatchRsp;
4133
4134//
4135// Receive Filter Clear Parameters
4136//
4137typedef struct sSirRcvFltPktClearParam
4138{
4139 tANI_U32 status; /* only valid for response message */
4140 tANI_U8 filterId;
4141}tSirRcvFltPktClearParam, *tpSirRcvFltPktClearParam;
4142
4143//
4144// Multicast Address List Parameters
4145//
4146typedef struct sSirRcvFltMcAddrList
4147{
4148 tANI_U32 ulMulticastAddrCnt;
4149 tSirMacAddr multicastAddr[SIR_MAX_NUM_MULTICAST_ADDRESS];
4150} tSirRcvFltMcAddrList, *tpSirRcvFltMcAddrList;
4151#endif // WLAN_FEATURE_PACKET_FILTERING
4152
4153//
4154// Generic version information
4155//
4156typedef struct
4157{
4158 tANI_U8 revision;
4159 tANI_U8 version;
4160 tANI_U8 minor;
4161 tANI_U8 major;
4162} tSirVersionType;
4163
4164typedef struct sAniBtAmpLogLinkReq
4165{
4166 // Common for all types are requests
4167 tANI_U16 msgType; // message type is same as the request type
4168 tANI_U16 msgLen; // length of the entire request
4169 tANI_U8 sessionId; //sme Session Id
4170 void *btampHandle; //AMP context
4171
4172} tAniBtAmpLogLinkReq, *tpAniBtAmpLogLinkReq;
4173
4174#ifdef WLAN_FEATURE_GTK_OFFLOAD
4175/*---------------------------------------------------------------------------
4176* WDA_GTK_OFFLOAD_REQ
4177*--------------------------------------------------------------------------*/
4178typedef struct
4179{
4180 tANI_U32 ulFlags; /* optional flags */
4181 tANI_U8 aKCK[16]; /* Key confirmation key */
4182 tANI_U8 aKEK[16]; /* key encryption key */
4183 tANI_U64 ullKeyReplayCounter; /* replay counter */
4184} tSirGtkOffloadParams, *tpSirGtkOffloadParams;
4185
4186/*---------------------------------------------------------------------------
4187* WDA_GTK_OFFLOAD_GETINFO_REQ
4188*--------------------------------------------------------------------------*/
4189typedef struct
4190{
4191 tANI_U16 mesgType;
4192 tANI_U16 mesgLen;
4193
4194 tANI_U32 ulStatus; /* success or failure */
4195 tANI_U64 ullKeyReplayCounter; /* current replay counter value */
4196 tANI_U32 ulTotalRekeyCount; /* total rekey attempts */
4197 tANI_U32 ulGTKRekeyCount; /* successful GTK rekeys */
4198 tANI_U32 ulIGTKRekeyCount; /* successful iGTK rekeys */
4199} tSirGtkOffloadGetInfoRspParams, *tpSirGtkOffloadGetInfoRspParams;
4200#endif // WLAN_FEATURE_GTK_OFFLOAD
4201
4202#ifdef WLAN_WAKEUP_EVENTS
4203/*---------------------------------------------------------------------------
4204 tSirWakeReasonInd
4205---------------------------------------------------------------------------*/
4206typedef struct
4207{
4208 tANI_U16 mesgType;
4209 tANI_U16 mesgLen;
4210 tANI_U32 ulReason; /* see tWakeReasonType */
4211 tANI_U32 ulReasonArg; /* argument specific to the reason type */
4212 tANI_U32 ulStoredDataLen; /* length of optional data stored in this message, in case
4213 HAL truncates the data (i.e. data packets) this length
4214 will be less than the actual length */
4215 tANI_U32 ulActualDataLen; /* actual length of data */
4216 tANI_U8 aDataStart[1]; /* variable length start of data (length == storedDataLen)
4217 see specific wake type */
4218} tSirWakeReasonInd, *tpSirWakeReasonInd;
4219#endif // WLAN_WAKEUP_EVENTS
4220
4221/*---------------------------------------------------------------------------
4222 sAniSetTmLevelReq
4223---------------------------------------------------------------------------*/
4224typedef struct sAniSetTmLevelReq
4225{
4226 tANI_U16 tmMode;
4227 tANI_U16 newTmLevel;
4228} tAniSetTmLevelReq, *tpAniSetTmLevelReq;
4229
4230#endif /* __SIR_API_H */