blob: 934f2499ea925a85e95899ad3896f497c84fbec1 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05302 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
Jeff Johnson295189b2012-06-20 16:38:30 -070021
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam842dad02014-02-18 18:44:02 -080026 */
27
28
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Kiet Lam842dad02014-02-18 18:44:02 -080031/*
Jeff Johnson295189b2012-06-20 16:38:30 -070032 * This file sirApi.h contains definitions exported by
33 * Sirius software.
34 * Author: Chandra Modumudi
35 * Date: 04/16/2002
36 * History:-
37 * Date Modified by Modification Information
38 * --------------------------------------------------------------------
39 */
40
41#ifndef __SIR_API_H
42#define __SIR_API_H
43
44#include "sirTypes.h"
45#include "sirMacProtDef.h"
46#include "aniSystemDefs.h"
Jeff Johnsone7245742012-09-05 17:12:55 -070047#include "sirParams.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070048
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080049#if defined(FEATURE_WLAN_ESE) && !defined(FEATURE_WLAN_ESE_UPLOAD)
50#include "eseGlobal.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070051#endif
52
53/// Maximum number of STAs allowed in the BSS
54#define SIR_MAX_NUM_STA 256
55
56/// Maximum number of Neighbors reported by STA for LB feature
57#define SIR_MAX_NUM_NEIGHBOR_BSS 3
58
59/// Maximum number of Neighbors reported by STA for LB feature
60#define SIR_MAX_NUM_ALTERNATE_RADIOS 5
61
62/// Maximum size of SCAN_RSP message
63#define SIR_MAX_SCAN_RSP_MSG_LENGTH 2600
64
65/// Start of Sirius software/Host driver message types
66#define SIR_HAL_HOST_MSG_START 0x1000
67
68/// Power save level definitions
69#define SIR_MAX_POWER_SAVE 3
70#define SIR_INTERMEDIATE_POWER_SAVE 4
71#define SIR_NO_POWER_SAVE 5
72
73/// Max supported channel list
74#define SIR_MAX_SUPPORTED_CHANNEL_LIST 96
75
76/// Maximum DTIM Factor
77#define SIR_MAX_DTIM_FACTOR 32
78
79#define SIR_MDIE_SIZE 3
80
Gopichand Nakkalad492d202013-05-10 02:50:47 +053081/* Max number of channels are 165, but to access 165th element of array,
82 *array of 166 is required.
83 */
84#define SIR_MAX_24G_5G_CHANNEL_RANGE 166
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -080085#define SIR_BCN_REPORT_MAX_BSS_DESC 4
Gopichand Nakkalad492d202013-05-10 02:50:47 +053086
Jeff Johnson295189b2012-06-20 16:38:30 -070087
Rajeev79dbe4c2013-10-05 11:03:42 +053088#ifdef FEATURE_WLAN_BATCH_SCAN
89#define SIR_MAX_SSID_SIZE (32)
90#endif
91
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#define SIR_NUM_11B_RATES 4 //1,2,5.5,11
94#define SIR_NUM_11A_RATES 8 //6,9,12,18,24,36,48,54
95#define SIR_NUM_POLARIS_RATES 3 //72,96,108
96#define SIR_NUM_TITAN_RATES 26
97#define SIR_NUM_TAURUS_RATES 4 //136.5, 151.7,283.5,315
98#define SIR_NUM_PROP_RATES (SIR_NUM_TITAN_RATES + SIR_NUM_TAURUS_RATES)
99
100#define SIR_11N_PROP_RATE_136_5 (1<<28)
101#define SIR_11N_PROP_RATE_151_7 (1<<29)
102#define SIR_11N_PROP_RATE_283_5 (1<<30)
103#define SIR_11N_PROP_RATE_315 (1<<31)
104#define SIR_11N_PROP_RATE_BITMAP 0x80000000 //only 315MBPS rate is supported today
105//Taurus is going to support 26 Titan Rates(no ESF/concat Rates will be supported)
106//First 26 bits are reserved for Titan and last 4 bits for Taurus, 2(27 and 28) bits are reserved.
107//#define SIR_TITAN_PROP_RATE_BITMAP 0x03FFFFFF
108//Disable all Titan rates
109#define SIR_TITAN_PROP_RATE_BITMAP 0
110#define SIR_CONVERT_2_U32_BITMAP(nRates) ((nRates + 31)/32)
111
112/* #tANI_U32's needed for a bitmap representation for all prop rates */
113#define SIR_NUM_U32_MAP_RATES SIR_CONVERT_2_U32_BITMAP(SIR_NUM_PROP_RATES)
114
115
116#define SIR_PM_SLEEP_MODE 0
117#define SIR_PM_ACTIVE_MODE 1
118
119// Used by various modules to load ALL CFG's
120#define ANI_IGNORE_CFG_ID 0xFFFF
121
122//hidden SSID options
123#define SIR_SCAN_NO_HIDDEN_SSID 0
124#define SIR_SCAN_HIDDEN_SSID_PE_DECISION 1
125#define SIR_SCAN_HIDDEN_SSID 2
126
127#define SIR_MAC_ADDR_LEN 6
128#define SIR_IPV4_ADDR_LEN 4
129
130typedef tANI_U8 tSirIpv4Addr[SIR_IPV4_ADDR_LEN];
131
132#define SIR_VERSION_STRING_LEN 64
133typedef tANI_U8 tSirVersionString[SIR_VERSION_STRING_LEN];
134
Yue Mab9c86f42013-08-14 15:59:08 -0700135/* Periodic Tx pattern offload feature */
136#define PERIODIC_TX_PTRN_MAX_SIZE 1536
137#define MAXNUM_PERIODIC_TX_PTRNS 6
138
Dino Mycle2c198072014-06-10 10:15:52 +0530139
140#ifdef WLAN_FEATURE_EXTSCAN
141
142#define WLAN_EXTSCAN_MAX_CHANNELS 16
143#define WLAN_EXTSCAN_MAX_BUCKETS 16
144#define WLAN_EXTSCAN_MAX_HOTLIST_APS 128
145#define WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64
146#define WLAN_EXTSCAN_MAX_RSSI_SAMPLE_SIZE 8
147#endif /* WLAN_FEATURE_EXTSCAN */
148
Srinivas Dasarib8fdd422014-11-27 10:44:20 +0530149#define WLAN_DISA_MAX_PAYLOAD_SIZE 1600
150
Jeff Johnson295189b2012-06-20 16:38:30 -0700151enum eSirHostMsgTypes
152{
153 SIR_HAL_APP_SETUP_NTF = SIR_HAL_HOST_MSG_START,
154 SIR_HAL_INITIAL_CAL_FAILED_NTF,
155 SIR_HAL_NIC_OPER_NTF,
156 SIR_HAL_INIT_START_REQ,
157 SIR_HAL_SHUTDOWN_REQ,
158 SIR_HAL_SHUTDOWN_CNF,
159 SIR_HAL_RESET_REQ,
160 SIR_HAL_RADIO_ON_OFF_IND,
161 SIR_HAL_RESET_CNF,
162 SIR_WRITE_TO_TD,
163 SIR_HAL_HDD_ADDBA_REQ, // MAC -> HDD
164 SIR_HAL_HDD_ADDBA_RSP, // HDD -> HAL
165 SIR_HAL_DELETEBA_IND, // MAC -> HDD
166 SIR_HAL_BA_FAIL_IND, // HDD -> MAC
167 SIR_TL_HAL_FLUSH_AC_REQ,
168 SIR_HAL_TL_FLUSH_AC_RSP
169};
170
171
172
173/**
174 * Module ID definitions.
175 */
176enum {
177 SIR_BOOT_MODULE_ID = 1,
178 SIR_HAL_MODULE_ID = 0x10,
Siddharth Bhal64246172015-02-27 01:04:37 +0530179 SIR_HAL_EXT_MODULE_ID = 0x11,
Leela Venkata Kiran Kumar Reddy Chirala45f184c2014-02-14 15:08:21 -0800180 SIR_CFG_MODULE_ID = 0x12,
Jeff Johnson295189b2012-06-20 16:38:30 -0700181 SIR_LIM_MODULE_ID,
182 SIR_ARQ_MODULE_ID,
183 SIR_SCH_MODULE_ID,
184 SIR_PMM_MODULE_ID,
185 SIR_MNT_MODULE_ID,
186 SIR_DBG_MODULE_ID,
187 SIR_DPH_MODULE_ID,
188 SIR_SYS_MODULE_ID,
189 SIR_SMS_MODULE_ID,
190
191 SIR_PHY_MODULE_ID = 0x20,
192
193
194 // Add any modules above this line
195 SIR_DVT_MODULE_ID
196};
197
198#define SIR_WDA_MODULE_ID SIR_HAL_MODULE_ID
199
200/**
201 * First and last module definition for logging utility
202 *
203 * NOTE: The following definitions need to be updated if
204 * the above list is changed.
205 */
206#define SIR_FIRST_MODULE_ID SIR_HAL_MODULE_ID
207#define SIR_LAST_MODULE_ID SIR_DVT_MODULE_ID
208
209
210// Type declarations used by Firmware and Host software
211
212// Scan type enum used in scan request
213typedef enum eSirScanType
214{
215 eSIR_PASSIVE_SCAN,
216 eSIR_ACTIVE_SCAN,
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800217 eSIR_BEACON_TABLE,
Jeff Johnson295189b2012-06-20 16:38:30 -0700218} tSirScanType;
219
Jeff Johnson295189b2012-06-20 16:38:30 -0700220typedef enum eSirResultCodes
221{
222 eSIR_SME_SUCCESS,
223
224 eSIR_EOF_SOF_EXCEPTION,
225 eSIR_BMU_EXCEPTION,
226 eSIR_LOW_PDU_EXCEPTION,
227 eSIR_USER_TRIG_RESET,
228 eSIR_LOGP_EXCEPTION,
229 eSIR_CP_EXCEPTION,
230 eSIR_STOP_BSS,
231 eSIR_AHB_HANG_EXCEPTION,
232 eSIR_DPU_EXCEPTION,
233 eSIR_RPE_EXCEPTION,
234 eSIR_TPE_EXCEPTION,
235 eSIR_DXE_EXCEPTION,
236 eSIR_RXP_EXCEPTION,
237 eSIR_MCPU_EXCEPTION,
238 eSIR_MCU_EXCEPTION,
239 eSIR_MTU_EXCEPTION,
240 eSIR_MIF_EXCEPTION,
241 eSIR_FW_EXCEPTION,
242 eSIR_PS_MUTEX_READ_EXCEPTION,
243 eSIR_PHY_HANG_EXCEPTION,
244 eSIR_MAILBOX_SANITY_CHK_FAILED,
245 eSIR_RADIO_HW_SWITCH_STATUS_IS_OFF, // Only where this switch is present
246 eSIR_CFB_FLAG_STUCK_EXCEPTION,
247
248 eSIR_SME_BASIC_RATES_NOT_SUPPORTED_STATUS=30,
249
250 eSIR_SME_INVALID_PARAMETERS=500,
251 eSIR_SME_UNEXPECTED_REQ_RESULT_CODE,
252 eSIR_SME_RESOURCES_UNAVAILABLE,
253 eSIR_SME_SCAN_FAILED, // Unable to find a BssDescription
254 // matching requested scan criteria
255 eSIR_SME_BSS_ALREADY_STARTED_OR_JOINED,
256 eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE,
257 eSIR_SME_REFUSED,
c_hpothua9dc89c2014-03-22 19:22:31 +0530258 eSIR_SME_JOIN_DEAUTH_FROM_AP_DURING_ADD_STA,
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 eSIR_SME_JOIN_TIMEOUT_RESULT_CODE,
260 eSIR_SME_AUTH_TIMEOUT_RESULT_CODE,
261 eSIR_SME_ASSOC_TIMEOUT_RESULT_CODE,
262 eSIR_SME_REASSOC_TIMEOUT_RESULT_CODE,
263 eSIR_SME_MAX_NUM_OF_PRE_AUTH_REACHED,
264 eSIR_SME_AUTH_REFUSED,
265 eSIR_SME_INVALID_WEP_DEFAULT_KEY,
266 eSIR_SME_NO_KEY_MAPPING_KEY_FOR_PEER,
267 eSIR_SME_ASSOC_REFUSED,
268 eSIR_SME_REASSOC_REFUSED,
269 eSIR_SME_DEAUTH_WHILE_JOIN, //Received Deauth while joining or pre-auhtentication.
270 eSIR_SME_DISASSOC_WHILE_JOIN, //Received Disassociation while joining.
271 eSIR_SME_DEAUTH_WHILE_REASSOC, //Received Deauth while ReAssociate.
272 eSIR_SME_DISASSOC_WHILE_REASSOC, //Received Disassociation while ReAssociate
273 eSIR_SME_STA_NOT_AUTHENTICATED,
274 eSIR_SME_STA_NOT_ASSOCIATED,
275 eSIR_SME_STA_DISASSOCIATED,
276 eSIR_SME_ALREADY_JOINED_A_BSS,
277 eSIR_ULA_COMPLETED,
278 eSIR_ULA_FAILURE,
279 eSIR_SME_LINK_ESTABLISHED,
280 eSIR_SME_UNABLE_TO_PERFORM_MEASUREMENTS,
281 eSIR_SME_UNABLE_TO_PERFORM_DFS,
282 eSIR_SME_DFS_FAILED,
283 eSIR_SME_TRANSFER_STA, // To be used when STA need to be LB'ed
284 eSIR_SME_INVALID_LINK_TEST_PARAMETERS,// Given in LINK_TEST_START_RSP
285 eSIR_SME_LINK_TEST_MAX_EXCEEDED, // Given in LINK_TEST_START_RSP
286 eSIR_SME_UNSUPPORTED_RATE, // Given in LINK_TEST_RSP if peer does
287 // support requested rate in
288 // LINK_TEST_REQ
289 eSIR_SME_LINK_TEST_TIMEOUT, // Given in LINK_TEST_IND if peer does
290 // not respond before next test packet
291 // is sent
292 eSIR_SME_LINK_TEST_COMPLETE, // Given in LINK_TEST_IND at the end
293 // of link test
294 eSIR_SME_LINK_TEST_INVALID_STATE, // Given in LINK_TEST_START_RSP
295 eSIR_SME_LINK_TEST_TERMINATE, // Given in LINK_TEST_START_RSP
296 eSIR_SME_LINK_TEST_INVALID_ADDRESS, // Given in LINK_TEST_STOP_RSP
297 eSIR_SME_POLARIS_RESET, // Given in SME_STOP_BSS_REQ
298 eSIR_SME_SETCONTEXT_FAILED, // Given in SME_SETCONTEXT_REQ when
299 // unable to plumb down keys
300 eSIR_SME_BSS_RESTART, // Given in SME_STOP_BSS_REQ
301
302 eSIR_SME_MORE_SCAN_RESULTS_FOLLOW, // Given in SME_SCAN_RSP message
303 // that more SME_SCAN_RSP
304 // messages are following.
305 // SME_SCAN_RSP message with
306 // eSIR_SME_SUCCESS status
307 // code is the last one.
308 eSIR_SME_INVALID_ASSOC_RSP_RXED, // Sent in SME_JOIN/REASSOC_RSP
309 // messages upon receiving
310 // invalid Re/Assoc Rsp frame.
311 eSIR_SME_MIC_COUNTER_MEASURES, // STOP BSS triggered by MIC failures: MAC software to disassoc all stations
312 // with MIC_FAILURE reason code and perform the stop bss operation
313 eSIR_SME_ADDTS_RSP_TIMEOUT, // didn't get response from peer within
314 // timeout interval
315 eSIR_SME_ADDTS_RSP_FAILED, // didn't get success response from HAL
316 eSIR_SME_RECEIVED,
317 // TBA - TSPEC related Result Codes
318
319 eSIR_SME_CHANNEL_SWITCH_FAIL, // failed to send out Channel Switch Action Frame
320 eSIR_SME_INVALID_STA_ROLE,
321 eSIR_SME_INVALID_STATE,
322#ifdef GEN4_SCAN
323 eSIR_SME_CHANNEL_SWITCH_DISABLED, // either 11h is disabled or channelSwitch is currently active
324 eSIR_SME_HAL_SCAN_INIT_FAILED, // SIR_HAL_SIR_HAL_INIT_SCAN_RSP returned failed status
325 eSIR_SME_HAL_SCAN_START_FAILED, // SIR_HAL_START_SCAN_RSP returned failed status
326 eSIR_SME_HAL_SCAN_END_FAILED, // SIR_HAL_END_SCAN_RSP returned failed status
327 eSIR_SME_HAL_SCAN_FINISH_FAILED, // SIR_HAL_FINISH_SCAN_RSP returned failed status
328 eSIR_SME_HAL_SEND_MESSAGE_FAIL, // Failed to send a message to HAL
329#else // GEN4_SCAN
330 eSIR_SME_CHANNEL_SWITCH_DISABLED, // either 11h is disabled or channelSwitch is currently active
331 eSIR_SME_HAL_SEND_MESSAGE_FAIL, // Failed to send a message to HAL
332#endif // GEN4_SCAN
Jeff Johnsone7245742012-09-05 17:12:55 -0700333#ifdef FEATURE_OEM_DATA_SUPPORT
334 eSIR_SME_HAL_OEM_DATA_REQ_START_FAILED,
335#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700336 eSIR_SME_STOP_BSS_FAILURE, // Failed to stop the bss
337 eSIR_SME_STA_ASSOCIATED,
338 eSIR_SME_INVALID_PMM_STATE,
339 eSIR_SME_CANNOT_ENTER_IMPS,
340 eSIR_SME_IMPS_REQ_FAILED,
341 eSIR_SME_BMPS_REQ_FAILED,
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700342 eSIR_SME_BMPS_REQ_REJECT,
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 eSIR_SME_UAPSD_REQ_FAILED,
Kanchanapally, Vidyullatha2ed7bde2014-12-29 12:18:36 +0530344 eSIR_SME_UAPSD_REQ_INVALID,
Jeff Johnson295189b2012-06-20 16:38:30 -0700345 eSIR_SME_WOWL_ENTER_REQ_FAILED,
346 eSIR_SME_WOWL_EXIT_REQ_FAILED,
347#if defined WLAN_FEATURE_VOWIFI_11R
348 eSIR_SME_FT_REASSOC_TIMEOUT_FAILURE,
349 eSIR_SME_FT_REASSOC_FAILURE,
350#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 eSIR_SME_SEND_ACTION_FAIL,
Jeff Johnson295189b2012-06-20 16:38:30 -0700352#ifdef WLAN_FEATURE_PACKET_FILTERING
353 eSIR_SME_PC_FILTER_MATCH_COUNT_REQ_FAILED,
354#endif // WLAN_FEATURE_PACKET_FILTERING
355
356#ifdef WLAN_FEATURE_GTK_OFFLOAD
357 eSIR_SME_GTK_OFFLOAD_GETINFO_REQ_FAILED,
358#endif // WLAN_FEATURE_GTK_OFFLOAD
Leela Venkata Kiran Kumar Reddy Chirala56df73f2014-01-30 14:18:00 -0800359 eSIR_SME_DEAUTH_STATUS,
Jeff Johnson295189b2012-06-20 16:38:30 -0700360 eSIR_DONOT_USE_RESULT_CODE = SIR_MAX_ENUM_SIZE
361} tSirResultCodes;
362
Jeff Johnson295189b2012-06-20 16:38:30 -0700363/* each station added has a rate mode which specifies the sta attributes */
364typedef enum eStaRateMode {
365 eSTA_TAURUS = 0,
366 eSTA_TITAN,
367 eSTA_POLARIS,
368 eSTA_11b,
369 eSTA_11bg,
370 eSTA_11a,
371 eSTA_11n,
Jeff Johnsone7245742012-09-05 17:12:55 -0700372#ifdef WLAN_FEATURE_11AC
373 eSTA_11ac,
374#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700375 eSTA_INVALID_RATE_MODE
376} tStaRateMode, *tpStaRateMode;
377
378//although in tSirSupportedRates each IE is 16bit but PE only passes IEs in 8 bits with MSB=1 for basic rates.
379//change the mask for bit0-7 only so HAL gets correct basic rates for setting response rates.
380#define IERATE_BASICRATE_MASK 0x80
381#define IERATE_RATE_MASK 0x7f
382#define IERATE_IS_BASICRATE(x) ((x) & IERATE_BASICRATE_MASK)
383#define ANIENHANCED_TAURUS_RATEMAP_BITOFFSET_START 28
384
Sushant Kaushike0d2cce2014-04-10 14:36:07 +0530385const char * lim_BssTypetoString(const v_U8_t bssType);
386const char * lim_ScanTypetoString(const v_U8_t scanType);
387const char * lim_BackgroundScanModetoString(const v_U8_t mode);
Jeff Johnson295189b2012-06-20 16:38:30 -0700388typedef struct sSirSupportedRates {
389 /*
390 * For Self STA Entry: this represents Self Mode.
391 * For Peer Stations, this represents the mode of the peer.
392 * On Station:
393 * --this mode is updated when PE adds the Self Entry.
394 * -- OR when PE sends 'ADD_BSS' message and station context in BSS is used to indicate the mode of the AP.
395 * ON AP:
396 * -- this mode is updated when PE sends 'ADD_BSS' and Sta entry for that BSS is used
397 * to indicate the self mode of the AP.
398 * -- OR when a station is associated, PE sends 'ADD_STA' message with this mode updated.
399 */
400
401 tStaRateMode opRateMode;
402 // 11b, 11a and aniLegacyRates are IE rates which gives rate in unit of 500Kbps
403 tANI_U16 llbRates[SIR_NUM_11B_RATES];
404 tANI_U16 llaRates[SIR_NUM_11A_RATES];
405 tANI_U16 aniLegacyRates[SIR_NUM_POLARIS_RATES];
406
407 //Taurus only supports 26 Titan Rates(no ESF/concat Rates will be supported)
408 //First 26 bits are reserved for those Titan rates and
409 //the last 4 bits(bit28-31) for Taurus, 2(bit26-27) bits are reserved.
410 tANI_U32 aniEnhancedRateBitmap; //Titan and Taurus Rates
411
412 /*
413 * 0-76 bits used, remaining reserved
414 * bits 0-15 and 32 should be set.
415 */
416 tANI_U8 supportedMCSSet[SIR_MAC_MAX_SUPPORTED_MCS_SET];
417
418 /*
419 * RX Highest Supported Data Rate defines the highest data
420 * rate that the STA is able to receive, in unites of 1Mbps.
421 * This value is derived from "Supported MCS Set field" inside
422 * the HT capability element.
423 */
424 tANI_U16 rxHighestDataRate;
425
Jeff Johnsone7245742012-09-05 17:12:55 -0700426#ifdef WLAN_FEATURE_11AC
427 /*Indicates the Maximum MCS that can be received for each number
428 of spacial streams */
429 tANI_U16 vhtRxMCSMap;
430 /*Indicate the highest VHT data rate that the STA is able to receive*/
431 tANI_U16 vhtRxHighestDataRate;
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -0700432 /*Indicates the Maximum MCS that can be transmitted for each number
Jeff Johnsone7245742012-09-05 17:12:55 -0700433 of spacial streams */
434 tANI_U16 vhtTxMCSMap;
435 /*Indicate the highest VHT data rate that the STA is able to transmit*/
436 tANI_U16 vhtTxHighestDataRate;
437#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700438} tSirSupportedRates, *tpSirSupportedRates;
439
440
441typedef enum eSirRFBand
442{
443 SIR_BAND_UNKNOWN,
444 SIR_BAND_2_4_GHZ,
445 SIR_BAND_5_GHZ,
446} tSirRFBand;
447
448
449/*
450* Specifies which beacons are to be indicated upto the host driver when
451* Station is in power save mode.
452*/
453typedef enum eBeaconForwarding
454{
455 ePM_BEACON_FWD_NTH,
456 ePM_BEACON_FWD_TIM,
457 ePM_BEACON_FWD_DTIM,
458 ePM_BEACON_FWD_NONE
459} tBeaconForwarding;
460
461
Jeff Johnson295189b2012-06-20 16:38:30 -0700462typedef struct sSirRemainOnChnReq
463{
464 tANI_U16 messageType;
465 tANI_U16 length;
466 tANI_U8 sessionId;
467 tSirMacAddr selfMacAddr;
468 tANI_U8 chnNum;
469 tANI_U8 phyMode;
470 tANI_U32 duration;
Gopichand Nakkala924e4552013-05-08 19:18:14 +0530471 tANI_U8 isProbeRequestAllowed;
Jeff Johnson295189b2012-06-20 16:38:30 -0700472 tANI_U8 probeRspIe[1];
473}tSirRemainOnChnReq, *tpSirRemainOnChnReq;
474
Rashmi Ramannad3a03bf2013-12-31 18:33:24 +0530475/* Structure for vendor specific IE of debug marker frame
476 to debug remain on channel issues */
477typedef struct publicVendorSpecific
478{
479 tANI_U8 category;
480 tANI_U8 elementid;
481 tANI_U8 length;
482} publicVendorSpecific;
483
Jeff Johnson295189b2012-06-20 16:38:30 -0700484typedef struct sSirRegisterMgmtFrame
485{
486 tANI_U16 messageType;
487 tANI_U16 length;
488 tANI_U8 sessionId;
489 tANI_BOOLEAN registerFrame;
490 tANI_U16 frameType;
491 tANI_U16 matchLen;
492 tANI_U8 matchData[1];
493}tSirRegisterMgmtFrame, *tpSirRegisterMgmtFrame;
Jeff Johnson295189b2012-06-20 16:38:30 -0700494
495//
Jeff Johnson295189b2012-06-20 16:38:30 -0700496// Identifies the neighbor BSS' that was(were) detected
497// by an STA and reported to the AP
498//
499typedef struct sAniTitanCBNeighborInfo
500{
501 // A BSS was found on the Primary
502 tANI_U8 cbBssFoundPri;
503
504 // A BSS was found on the adjacent Upper Secondary
505 tANI_U8 cbBssFoundSecUp;
506
507 // A BSS was found on the adjacent Lower Secondary
508 tANI_U8 cbBssFoundSecDown;
509
510} tAniTitanCBNeighborInfo, *tpAniTitanCBNeighborInfo;
511
Jeff Johnson295189b2012-06-20 16:38:30 -0700512/// Generic type for sending a response message
513/// with result code to host software
514typedef struct sSirSmeRsp
515{
516 tANI_U16 messageType; // eWNI_SME_*_RSP
517 tANI_U16 length;
518 tANI_U8 sessionId; // To support BT-AMP
519 tANI_U16 transactionId; // To support BT-AMP
520 tSirResultCodes statusCode;
521} tSirSmeRsp, *tpSirSmeRsp;
522
523/// Definition for kick starting Firmware on STA
524typedef struct sSirSmeStartReq
525{
526 tANI_U16 messageType; // eWNI_SME_START_REQ
527 tANI_U16 length;
528 tANI_U8 sessionId; //Added for BT-AMP Support
529 tANI_U16 transcationId; //Added for BT-AMP Support
530 tSirMacAddr bssId; //Added For BT-AMP Support
531 tANI_U32 roamingAtPolaris;
Jeff Johnson295189b2012-06-20 16:38:30 -0700532 tANI_U32 sendNewBssInd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700533} tSirSmeStartReq, *tpSirSmeStartReq;
534
535/// Definition for indicating all modules ready on STA
536typedef struct sSirSmeReadyReq
537{
538 tANI_U16 messageType; // eWNI_SME_SYS_READY_IND
539 tANI_U16 length;
540 tANI_U16 transactionId;
541} tSirSmeReadyReq, *tpSirSmeReadyReq;
542
543/// Definition for response message to previously issued start request
544typedef struct sSirSmeStartRsp
545{
546 tANI_U16 messageType; // eWNI_SME_START_RSP
547 tANI_U16 length;
548 tSirResultCodes statusCode;
549 tANI_U16 transactionId;
550} tSirSmeStartRsp, *tpSirSmeStartRsp;
551
Jeff Johnson295189b2012-06-20 16:38:30 -0700552
553/// Definition for Load structure
554typedef struct sSirLoad
555{
556 tANI_U16 numStas;
557 tANI_U16 channelUtilization;
558} tSirLoad, *tpSirLoad;
559
560/// BSS type enum used in while scanning/joining etc
561typedef enum eSirBssType
562{
563 eSIR_INFRASTRUCTURE_MODE,
Jeff Johnson295189b2012-06-20 16:38:30 -0700564 eSIR_INFRA_AP_MODE, //Added for softAP support
Jeff Johnson295189b2012-06-20 16:38:30 -0700565 eSIR_IBSS_MODE,
566 eSIR_BTAMP_STA_MODE, //Added for BT-AMP support
567 eSIR_BTAMP_AP_MODE, //Added for BT-AMP support
568 eSIR_AUTO_MODE,
569 eSIR_DONOT_USE_BSS_TYPE = SIR_MAX_ENUM_SIZE
570} tSirBssType;
571
572/// Definition for WDS Information
573typedef struct sSirWdsInfo
574{
575 tANI_U16 wdsLength;
576 tANI_U8 wdsBytes[ANI_WDS_INFO_MAX_LENGTH];
577} tSirWdsInfo, *tpSirWdsInfo;
578
579/// Power Capability info used in 11H
580typedef struct sSirMacPowerCapInfo
581{
582 tANI_U8 minTxPower;
583 tANI_U8 maxTxPower;
584} tSirMacPowerCapInfo, *tpSirMacPowerCapInfo;
585
586/// Supported Channel info used in 11H
587typedef struct sSirSupChnl
588{
589 tANI_U8 numChnl;
590 tANI_U8 channelList[SIR_MAX_SUPPORTED_CHANNEL_LIST];
591} tSirSupChnl, *tpSirSupChnl;
592
593typedef enum eSirNwType
594{
595 eSIR_11A_NW_TYPE,
596 eSIR_11B_NW_TYPE,
597 eSIR_11G_NW_TYPE,
598 eSIR_11N_NW_TYPE,
Jeff Johnsone7245742012-09-05 17:12:55 -0700599#ifdef WLAN_FEATURE_11AC
600 eSIR_11AC_NW_TYPE,
601#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700602 eSIR_DONOT_USE_NW_TYPE = SIR_MAX_ENUM_SIZE
603} tSirNwType;
604
605/// Definition for new iBss peer info
606typedef struct sSirNewIbssPeerInfo
607{
608 tSirMacAddr peerAddr;
609 tANI_U16 aid;
610} tSirNewIbssPeerInfo, *tpSirNewIbssPeerInfo;
611
612/// Definition for Alternate BSS info
613typedef struct sSirAlternateRadioInfo
614{
615 tSirMacAddr bssId;
616 tANI_U8 channelId;
617} tSirAlternateRadioInfo, *tpSirAlternateRadioInfo;
618
619/// Definition for Alternate BSS list
620typedef struct sSirAlternateRadioList
621{
622 tANI_U8 numBss;
623 tSirAlternateRadioInfo alternateRadio[1];
624} tSirAlternateRadioList, *tpSirAlternateRadioList;
625
626/// Definition for kick starting BSS
627/// ---> MAC
628/**
629 * Usage of ssId, numSSID & ssIdList:
630 * ---------------------------------
631 * 1. ssId.length of zero indicates that Broadcast/Suppress SSID
632 * feature is enabled.
633 * 2. If ssId.length is zero, MAC SW will advertise NULL SSID
634 * and interpret the SSID list from numSSID & ssIdList.
635 * 3. If ssId.length is non-zero, MAC SW will advertise the SSID
636 * specified in the ssId field and it is expected that
637 * application will set numSSID to one (only one SSID present
638 * in the list) and SSID in the list is same as ssId field.
639 * 4. Application will always set numSSID >= 1.
640 */
641//*****NOTE: Please make sure all codes are updated if inserting field into this structure..**********
642typedef struct sSirSmeStartBssReq
643{
644 tANI_U16 messageType; // eWNI_SME_START_BSS_REQ
645 tANI_U16 length;
646 tANI_U8 sessionId; //Added for BT-AMP Support
647 tANI_U16 transactionId; //Added for BT-AMP Support
648 tSirMacAddr bssId; //Added for BT-AMP Support
649 tSirMacAddr selfMacAddr; //Added for BT-AMP Support
650 tANI_U16 beaconInterval; //Added for BT-AMP Support
651 tANI_U8 dot11mode;
652 tSirBssType bssType;
653 tSirMacSSid ssId;
654 tANI_U8 channelId;
Jeff Johnsone7245742012-09-05 17:12:55 -0700655 ePhyChanBondState cbMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700656
Jeff Johnson295189b2012-06-20 16:38:30 -0700657 tANI_U8 privacy;
658 tANI_U8 apUapsdEnable;
659 tANI_U8 ssidHidden;
660 tANI_BOOLEAN fwdWPSPBCProbeReq;
661 tANI_BOOLEAN protEnabled;
662 tANI_BOOLEAN obssProtEnabled;
663 tANI_U16 ht_capab;
664 tAniAuthType authType;
665 tANI_U32 dtimPeriod;
666 tANI_U8 wps_state;
krunal sonie9002db2013-11-25 14:24:17 -0800667 tANI_U8 isCoalesingInIBSSAllowed; //Coalesing on/off knob
Jeff Johnson295189b2012-06-20 16:38:30 -0700668 tVOS_CON_MODE bssPersona;
669
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -0800670 tANI_U8 txLdpcIniFeatureEnabled;
671
Jeff Johnson295189b2012-06-20 16:38:30 -0700672 tSirRSNie rsnIE; // RSN IE to be sent in
673 // Beacon and Probe
674 // Response frames
675 tSirNwType nwType; // Indicates 11a/b/g
676 tSirMacRateSet operationalRateSet;// Has 11a or 11b rates
677 tSirMacRateSet extendedRateSet; // Has 11g rates
678
Chet Lanctot8cecea22014-02-11 19:09:36 -0800679#ifdef WLAN_FEATURE_11W
680 tANI_BOOLEAN pmfCapable;
681 tANI_BOOLEAN pmfRequired;
682#endif
683
Hardik Kantilal Pateldd107952014-11-20 15:24:52 +0530684#ifdef WLAN_FEATURE_AP_HT40_24G
685 tANI_BOOLEAN apHT40_24GEnabled;
686#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700687} tSirSmeStartBssReq, *tpSirSmeStartBssReq;
688
689#define GET_IE_LEN_IN_BSS(lenInBss) ( lenInBss + sizeof(lenInBss) - \
krunal soni2a6a9062014-02-11 14:14:23 -0800690 ((uintptr_t)OFFSET_OF( tSirBssDescription, ieFields)))
Jeff Johnson295189b2012-06-20 16:38:30 -0700691
692#define WSCIE_PROBE_RSP_LEN (317 + 2)
693
694typedef struct sSirBssDescription
695{
696 //offset of the ieFields from bssId.
697 tANI_U16 length;
698 tSirMacAddr bssId;
699 v_TIME_t scanSysTimeMsec;
700 tANI_U32 timeStamp[2];
701 tANI_U16 beaconInterval;
702 tANI_U16 capabilityInfo;
703 tSirNwType nwType; // Indicates 11a/b/g
704 tANI_U8 aniIndicator;
705 tANI_S8 rssi;
706 tANI_S8 sinr;
707 //channelId what peer sent in beacon/probersp.
708 tANI_U8 channelId;
709 //channelId on which we are parked at.
710 //used only in scan case.
711 tANI_U8 channelIdSelf;
712 tANI_U8 sSirBssDescriptionRsvd[3];
Jeff Johnson295189b2012-06-20 16:38:30 -0700713 tANI_TIMESTAMP nReceivedTime; //base on a tick count. It is a time stamp, not a relative time.
714#if defined WLAN_FEATURE_VOWIFI
715 tANI_U32 parentTSF;
716 tANI_U32 startTSF[2];
717#endif
718#ifdef WLAN_FEATURE_VOWIFI_11R
719 tANI_U8 mdiePresent;
720 tANI_U8 mdie[SIR_MDIE_SIZE]; // MDIE for 11r, picked from the beacons
721#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800722#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700723 tANI_U16 QBSSLoad_present;
724 tANI_U16 QBSSLoad_avail;
725#endif
726 // Please keep the structure 4 bytes aligned above the ieFields
727
728 tANI_U8 fProbeRsp; //whether it is from a probe rsp
Madan Mohan Koyyalamudi2a6ba242012-10-31 17:06:19 -0700729 tANI_U8 reservedPadding1;
730 tANI_U8 reservedPadding2;
731 tANI_U8 reservedPadding3;
Jeff Johnson295189b2012-06-20 16:38:30 -0700732 tANI_U32 WscIeLen;
733 tANI_U8 WscIeProbeRsp[WSCIE_PROBE_RSP_LEN];
Madan Mohan Koyyalamudi2a6ba242012-10-31 17:06:19 -0700734 tANI_U8 reservedPadding4;
Prathyusha Kuntupalli7b8f6aa2012-12-10 13:17:35 -0800735
Jeff Johnson295189b2012-06-20 16:38:30 -0700736 tANI_U32 ieFields[1];
737} tSirBssDescription, *tpSirBssDescription;
738
739/// Definition for response message to previously
740/// issued start BSS request
741/// MAC --->
742typedef struct sSirSmeStartBssRsp
743{
744 tANI_U16 messageType; // eWNI_SME_START_BSS_RSP
745 tANI_U16 length;
746 tANI_U8 sessionId;
747 tANI_U16 transactionId;//transaction ID for cmd
748 tSirResultCodes statusCode;
749 tSirBssType bssType;//Add new type for WDS mode
750 tANI_U16 beaconInterval;//Beacon Interval for both type
751 tANI_U32 staId;//Staion ID for Self
752 tSirBssDescription bssDescription;//Peer BSS description
753} tSirSmeStartBssRsp, *tpSirSmeStartBssRsp;
754
Jeff Johnson295189b2012-06-20 16:38:30 -0700755
756typedef struct sSirChannelList
757{
758 tANI_U8 numChannels;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800759 tANI_U8 channelNumber[SIR_ESE_MAX_MEAS_IE_REQS];
Jeff Johnson295189b2012-06-20 16:38:30 -0700760} tSirChannelList, *tpSirChannelList;
761
Gopichand Nakkalad492d202013-05-10 02:50:47 +0530762typedef struct sSirDFSChannelList
763{
764 tANI_U32 timeStamp[SIR_MAX_24G_5G_CHANNEL_RANGE];
765
766} tSirDFSChannelList, *tpSirDFSChannelList;
767
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800768#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700769typedef struct sTspecInfo {
770 tANI_U8 valid;
771 tSirMacTspecIE tspec;
772} tTspecInfo;
773
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800774#define SIR_ESE_MAX_TSPEC_IES 4
775typedef struct sESETspecTspecInfo {
Jeff Johnson295189b2012-06-20 16:38:30 -0700776 tANI_U8 numTspecs;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800777 tTspecInfo tspec[SIR_ESE_MAX_TSPEC_IES];
778} tESETspecInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -0700779#endif
780
Jeff Johnson295189b2012-06-20 16:38:30 -0700781
782/// Definition for Radar Info
783typedef struct sSirRadarInfo
784{
785 tANI_U8 channelNumber;
786 tANI_U16 radarPulseWidth; // in usecond
787 tANI_U16 numRadarPulse;
788} tSirRadarInfo, *tpSirRadarInfo;
789
790#define SIR_RADAR_INFO_SIZE (sizeof(tANI_U8) + 2 *sizeof(tANI_U16))
791
792/// Two Background Scan mode
793typedef enum eSirBackgroundScanMode
794{
795 eSIR_AGGRESSIVE_BACKGROUND_SCAN = 0,
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -0700796 eSIR_NORMAL_BACKGROUND_SCAN = 1,
797 eSIR_ROAMING_SCAN = 2,
Jeff Johnson295189b2012-06-20 16:38:30 -0700798} tSirBackgroundScanMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700799typedef enum eSirLinkTrafficCheck
800{
801 eSIR_DONT_CHECK_LINK_TRAFFIC_BEFORE_SCAN = 0,
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -0700802 eSIR_CHECK_LINK_TRAFFIC_BEFORE_SCAN = 1,
803 eSIR_CHECK_ROAMING_SCAN = 2,
Jeff Johnson295189b2012-06-20 16:38:30 -0700804} tSirLinkTrafficCheck;
805
806#define SIR_BG_SCAN_RETURN_CACHED_RESULTS 0x0
807#define SIR_BG_SCAN_PURGE_RESUTLS 0x80
808#define SIR_BG_SCAN_RETURN_FRESH_RESULTS 0x01
809#define SIR_SCAN_MAX_NUM_SSID 0x09
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700810#define SIR_BG_SCAN_RETURN_LFR_CACHED_RESULTS 0x02
811#define SIR_BG_SCAN_PURGE_LFR_RESULTS 0x40
Jeff Johnson295189b2012-06-20 16:38:30 -0700812
813/// Definition for scan request
814typedef struct sSirSmeScanReq
815{
816 tANI_U16 messageType; // eWNI_SME_SCAN_REQ
817 tANI_U16 length;
818 tANI_U8 sessionId; // Session ID
819 tANI_U16 transactionId; // Transaction ID for cmd
820 tSirMacAddr bssId;
821 tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
822 tSirMacAddr selfMacAddr; //Added For BT-AMP Support
823 tSirBssType bssType;
824 tANI_U8 dot11mode;
825 tSirScanType scanType;
826 /**
827 * minChannelTime. Not used if scanType is passive.
828 * 0x0 - Dont Use min channel timer. Only max channel timeout will used.
829 * 11k measurements set this to zero to user only single duration for scan.
830 * <valid timeout> - Timeout value used for min channel timeout.
831 */
832 tANI_U32 minChannelTime;
833 /**
834 * maxChannelTime.
835 * 0x0 - Invalid. In case of active scan.
836 * In case of passive scan, MAX( maxChannelTime, WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME) is used.
837 *
838 */
839 tANI_U32 maxChannelTime;
840 /**
841 * returnAfterFirstMatch can take following values:
842 * 0x00 - Return SCAN_RSP message after complete channel scan
843 * 0x01 - Return SCAN_RSP message after collecting BSS description
844 * that matches scan criteria.
845 * 0xC0 - Return after collecting first 11d IE from 2.4 GHz &
846 * 5 GHz band channels
847 * 0x80 - Return after collecting first 11d IE from 5 GHz band
848 * channels
849 * 0x40 - Return after collecting first 11d IE from 2.4 GHz
850 * band channels
851 *
852 * Values of 0xC0, 0x80 & 0x40 are to be used by
853 * Roaming/application when 11d is enabled.
854 */
Kiran Kumar Lokere3527f0c2013-02-24 22:21:28 -0800855 tANI_U32 minChannelTimeBtc; //in units of milliseconds
856 tANI_U32 maxChannelTimeBtc; //in units of milliseconds
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 tANI_U8 returnAfterFirstMatch;
858
859 /**
860 * returnUniqueResults can take following values:
861 * 0 - Collect & report all received BSS descriptions from same BSS.
862 * 1 - Collect & report unique BSS description from same BSS.
863 */
864 tANI_U8 returnUniqueResults;
865
866 /**
867 * returnFreshResults can take following values:
868 * 0x00 - Return background scan results.
869 * 0x80 - Return & purge background scan results
870 * 0x01 - Trigger fresh scan instead of returning background scan
871 * results.
872 * 0x81 - Trigger fresh scan instead of returning background scan
873 * results and purge background scan results.
874 */
875 tANI_U8 returnFreshResults;
876
877 /* backgroundScanMode can take following values:
878 * 0x0 - agressive scan
879 * 0x1 - normal scan where HAL will check for link traffic
880 * prior to proceeding with the scan
881 */
882 tSirBackgroundScanMode backgroundScanMode;
883
884 tANI_U8 hiddenSsid;
885
886 /* Number of SSIDs to scan */
887 tANI_U8 numSsid;
888
889 //channelList has to be the last member of this structure. Check tSirChannelList for the reason.
890 /* This MUST be the last field of the structure */
891
892
Jeff Johnson295189b2012-06-20 16:38:30 -0700893 tANI_BOOLEAN p2pSearch;
Jeff Johnson295189b2012-06-20 16:38:30 -0700894 tANI_U16 uIEFieldLen;
895 tANI_U16 uIEFieldOffset;
896
897 //channelList MUST be the last field of this structure
898 tSirChannelList channelList;
899 /*-----------------------------
900 tSirSmeScanReq....
901 -----------------------------
902 uIEFiledLen
903 -----------------------------
904 uIEFiledOffset ----+
905 ----------------------------- |
906 channelList.numChannels |
907 ----------------------------- |
908 ... variable size up to |
909 channelNumber[numChannels-1] |
910 This can be zero, if |
911 numChannel is zero. |
912 ----------------------------- <--+
913 ... variable size uIEFiled
914 up to uIEFieldLen (can be 0)
915 -----------------------------*/
916} tSirSmeScanReq, *tpSirSmeScanReq;
917
Madan Mohan Koyyalamudiff3a7152013-06-13 14:47:55 +0530918typedef struct sSirSmeScanAbortReq
919{
920 tANI_U16 type;
921 tANI_U16 msgLen;
922 tANI_U8 sessionId;
923} tSirSmeScanAbortReq, *tpSirSmeScanAbortReq;
924
Madan Mohan Koyyalamudide1b5bc2013-07-12 00:56:04 +0530925typedef struct sSirSmeScanChanReq
926{
927 tANI_U16 type;
928 tANI_U16 msgLen;
929 tANI_U8 sessionId;
930 tANI_U16 transcationId;
931} tSirSmeGetScanChanReq, *tpSirSmeGetScanChanReq;
932
Jeff Johnsone7245742012-09-05 17:12:55 -0700933#ifdef FEATURE_OEM_DATA_SUPPORT
934
935#ifndef OEM_DATA_REQ_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800936#define OEM_DATA_REQ_SIZE 134
Jeff Johnsone7245742012-09-05 17:12:55 -0700937#endif
938#ifndef OEM_DATA_RSP_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800939#define OEM_DATA_RSP_SIZE 1968
Jeff Johnsone7245742012-09-05 17:12:55 -0700940#endif
941
942typedef struct sSirOemDataReq
943{
944 tANI_U16 messageType; //eWNI_SME_OEM_DATA_REQ
Siddharth Bhal88aa5322014-06-19 14:27:15 +0530945 tANI_U16 messageLen;
Jeff Johnsone7245742012-09-05 17:12:55 -0700946 tSirMacAddr selfMacAddr;
947 tANI_U8 oemDataReq[OEM_DATA_REQ_SIZE];
948} tSirOemDataReq, *tpSirOemDataReq;
949
950typedef struct sSirOemDataRsp
951{
952 tANI_U16 messageType;
953 tANI_U16 length;
954 tANI_U8 oemDataRsp[OEM_DATA_RSP_SIZE];
955} tSirOemDataRsp, *tpSirOemDataRsp;
956
957#endif //FEATURE_OEM_DATA_SUPPORT
Jeff Johnson295189b2012-06-20 16:38:30 -0700958
959/// Definition for response message to previously issued scan request
960typedef struct sSirSmeScanRsp
961{
962 tANI_U16 messageType; // eWNI_SME_SCAN_RSP
963 tANI_U16 length;
964 tANI_U8 sessionId;
965 tSirResultCodes statusCode;
966 tANI_U16 transcationId;
967 tSirBssDescription bssDescription[1];
968} tSirSmeScanRsp, *tpSirSmeScanRsp;
969
970/// Sme Req message to set the Background Scan mode
971typedef struct sSirSmeBackgroundScanModeReq
972{
973 tANI_U16 messageType; // eWNI_SME_BACKGROUND_SCAN_MODE_REQ
974 tANI_U16 length;
975 tSirBackgroundScanMode mode;
976} tSirSmeBackgroundScanModeReq, *tpSirSmeBackgroundScanModeReq;
977
978/// Background Scan Statisics
979typedef struct sSirBackgroundScanInfo {
980 tANI_U32 numOfScanSuccess;
981 tANI_U32 numOfScanFailure;
982 tANI_U32 reserved;
983} tSirBackgroundScanInfo, *tpSirBackgroundScanInfo;
984
985#define SIR_BACKGROUND_SCAN_INFO_SIZE (3 * sizeof(tANI_U32))
986
987/// Definition for Authentication request
988typedef struct sSirSmeAuthReq
989{
990 tANI_U16 messageType; // eWNI_SME_AUTH_REQ
991 tANI_U16 length;
992 tANI_U8 sessionId; // Session ID
993 tANI_U16 transactionId; // Transaction ID for cmd
994 tSirMacAddr bssId; // Self BSSID
995 tSirMacAddr peerMacAddr;
996 tAniAuthType authType;
997 tANI_U8 channelNumber;
998} tSirSmeAuthReq, *tpSirSmeAuthReq;
999
1000/// Definition for reponse message to previously issued Auth request
1001typedef struct sSirSmeAuthRsp
1002{
1003 tANI_U16 messageType; // eWNI_SME_AUTH_RSP
1004 tANI_U16 length;
1005 tANI_U8 sessionId; // Session ID
1006 tANI_U16 transactionId; // Transaction ID for cmd
1007 tSirMacAddr peerMacAddr;
1008 tAniAuthType authType;
1009 tSirResultCodes statusCode;
1010 tANI_U16 protStatusCode; //It holds reasonCode when Pre-Auth fails due to deauth frame.
1011 //Otherwise it holds status code.
1012} tSirSmeAuthRsp, *tpSirSmeAuthRsp;
1013
Jeff Johnson295189b2012-06-20 16:38:30 -07001014
Jeff Johnson295189b2012-06-20 16:38:30 -07001015
Jeff Johnson295189b2012-06-20 16:38:30 -07001016/// Definition for Join/Reassoc info - Reshmi: need to check if this is a def which moved from elsehwere.
1017typedef struct sJoinReassocInfo
1018{
1019 tAniTitanCBNeighborInfo cbNeighbors;
1020 tAniBool spectrumMgtIndicator;
1021 tSirMacPowerCapInfo powerCap;
1022 tSirSupChnl supportedChannels;
1023} tJoinReassocInfo, *tpJoinReassocInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -07001024
1025/// Definition for join request
1026/// ---> MAC
1027/// WARNING! If you add a field in JOIN REQ.
1028/// Make sure to add it in REASSOC REQ
1029/// The Serdes function is the same and its
1030/// shared with REASSOC. So if we add a field
1031// here and dont add it in REASSOC REQ. It will BREAK!!! REASSOC.
1032typedef struct sSirSmeJoinReq
1033{
1034 tANI_U16 messageType; // eWNI_SME_JOIN_REQ
1035 tANI_U16 length;
Jeff Johnsone7245742012-09-05 17:12:55 -07001036 tANI_U8 sessionId;
Jeff Johnson295189b2012-06-20 16:38:30 -07001037 tANI_U16 transactionId;
1038 tSirMacSSid ssId;
1039 tSirMacAddr selfMacAddr; // self Mac address
1040 tSirBssType bsstype; // add new type for BT -AMP STA and AP Modules
1041 tANI_U8 dot11mode; // to support BT-AMP
Jeff Johnsone7245742012-09-05 17:12:55 -07001042 tVOS_CON_MODE staPersona; //Persona
Sushant Kaushik74df8db2015-03-11 18:09:05 +05301043 tANI_BOOLEAN bOSENAssociation; //HS2.0
Jeff Johnsone7245742012-09-05 17:12:55 -07001044 ePhyChanBondState cbMode; // Pass CB mode value in Join.
Jeff Johnson295189b2012-06-20 16:38:30 -07001045
1046 /*This contains the UAPSD Flag for all 4 AC
1047 * B0: AC_VO UAPSD FLAG
1048 * B1: AC_VI UAPSD FLAG
1049 * B2: AC_BK UAPSD FLAG
1050 * B3: AC_BE UASPD FLAG
1051 */
1052 tANI_U8 uapsdPerAcBitmask;
1053
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 tSirMacRateSet operationalRateSet;// Has 11a or 11b rates
1055 tSirMacRateSet extendedRateSet; // Has 11g rates
Masti, Narayanraddi67ea5912015-01-08 12:34:05 +05301056 tANI_U16 rateBitMap;
Jeff Johnson295189b2012-06-20 16:38:30 -07001057 tSirRSNie rsnIE; // RSN IE to be sent in
1058 // (Re) Association Request
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08001059#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 tSirCCKMie cckmIE; // CCMK IE to be included as handler for join and reassoc is
1061 // the same. The join will never carry cckm, but will be set to
1062 // 0.
1063#endif
1064
1065 tSirAddie addIEScan; // Additional IE to be sent in
1066 // (unicast) Probe Request at the time of join
1067
1068 tSirAddie addIEAssoc; // Additional IE to be sent in
1069 // (Re) Association Request
1070
1071 tAniEdType UCEncryptionType;
1072
1073 tAniEdType MCEncryptionType;
Chet Lanctot186b5732013-03-18 10:26:30 -07001074
1075#ifdef WLAN_FEATURE_11W
1076 tAniEdType MgmtEncryptionType;
1077#endif
1078
Jeff Johnson295189b2012-06-20 16:38:30 -07001079#ifdef WLAN_FEATURE_VOWIFI_11R
1080 tAniBool is11Rconnection;
1081#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08001082#ifdef FEATURE_WLAN_ESE
1083 tAniBool isESEFeatureIniEnabled;
1084 tAniBool isESEconnection;
1085 tESETspecInfo eseTspecInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -07001086#endif
1087
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08001088#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 tAniBool isFastTransitionEnabled;
1090#endif
Jeff Johnson43971f52012-07-17 12:26:56 -07001091#ifdef FEATURE_WLAN_LFR
1092 tAniBool isFastRoamIniFeatureEnabled;
1093#endif
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -08001094
1095 tANI_U8 txLdpcIniFeatureEnabled;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -08001096#ifdef WLAN_FEATURE_11AC
1097 tANI_U8 txBFIniFeatureEnabled;
Shailender Karmuchicc3fe442013-02-16 18:18:33 -08001098 tANI_U8 txBFCsnValue;
Abhishek Singh6d5d29c2014-07-03 14:25:22 +05301099 tANI_U8 txMuBformee;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -08001100#endif
krunal soni5afa96c2013-09-06 22:19:02 -07001101 tANI_U8 isAmsduSupportInAMPDU;
Sandeep Puligillaaea98a22013-12-04 13:36:32 +05301102 tAniBool isWMEenabled;
1103 tAniBool isQosEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07001104 tAniTitanCBNeighborInfo cbNeighbors;
1105 tAniBool spectrumMgtIndicator;
1106 tSirMacPowerCapInfo powerCap;
1107 tSirSupChnl supportedChannels;
Jeff Johnson295189b2012-06-20 16:38:30 -07001108 tSirBssDescription bssDescription;
Jeff Johnson295189b2012-06-20 16:38:30 -07001109
1110} tSirSmeJoinReq, *tpSirSmeJoinReq;
1111
1112/// Definition for reponse message to previously issued join request
1113/// MAC --->
1114typedef struct sSirSmeJoinRsp
1115{
1116 tANI_U16 messageType; // eWNI_SME_JOIN_RSP
1117 tANI_U16 length;
1118 tANI_U8 sessionId; // Session ID
1119 tANI_U16 transactionId; // Transaction ID for cmd
1120 tSirResultCodes statusCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001121 tAniAuthType authType;
Jeff Johnson295189b2012-06-20 16:38:30 -07001122 tANI_U16 protStatusCode; //It holds reasonCode when join fails due to deauth/disassoc frame.
1123 //Otherwise it holds status code.
1124 tANI_U16 aid;
1125 tANI_U32 beaconLength;
1126 tANI_U32 assocReqLength;
1127 tANI_U32 assocRspLength;
1128#ifdef WLAN_FEATURE_VOWIFI_11R
1129 tANI_U32 parsedRicRspLen;
1130#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08001131#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07001132 tANI_U32 tspecIeLen;
1133#endif
1134 tANI_U32 staId;//Station ID for peer
1135
1136 /*The DPU signatures will be sent eventually to TL to help it determine the
1137 association to which a packet belongs to*/
1138 /*Unicast DPU signature*/
1139 tANI_U8 ucastSig;
1140
1141 /*Broadcast DPU signature*/
1142 tANI_U8 bcastSig;
1143
c_hpothu44ff4e02014-05-08 00:13:57 +05301144 /*to report MAX link-speed populate rate-flags from ASSOC RSP frame*/
1145 tANI_U32 maxRateFlags;
1146
Jeff Johnson295189b2012-06-20 16:38:30 -07001147 tANI_U8 frames[ 1 ];
1148} tSirSmeJoinRsp, *tpSirSmeJoinRsp;
1149
1150/// Definition for Authentication indication from peer
1151typedef struct sSirSmeAuthInd
1152{
1153 tANI_U16 messageType; // eWNI_SME_AUTH_IND
1154 tANI_U16 length;
1155 tANI_U8 sessionId;
1156 tSirMacAddr bssId; // Self BSSID
1157 tSirMacAddr peerMacAddr;
1158 tAniAuthType authType;
1159} tSirSmeAuthInd, *tpSirSmeAuthInd;
1160
1161/// probereq from peer, when wsc is enabled
1162typedef struct sSirSmeProbereq
1163{
1164 tANI_U16 messageType; // eWNI_SME_PROBE_REQ
1165 tANI_U16 length;
1166 tANI_U8 sessionId;
1167 tSirMacAddr peerMacAddr;
1168 tANI_U16 devicePasswdId;
1169} tSirSmeProbeReq, *tpSirSmeProbeReq;
1170
1171/// Definition for Association indication from peer
1172/// MAC --->
1173typedef struct sSirSmeAssocInd
1174{
1175 tANI_U16 messageType; // eWNI_SME_ASSOC_IND
1176 tANI_U16 length;
1177 tANI_U8 sessionId;
1178 tSirMacAddr peerMacAddr;
1179 tANI_U16 aid;
1180 tSirMacAddr bssId; // Self BSSID
1181 tANI_U16 staId; // Station ID for peer
1182 tANI_U8 uniSig; // DPU signature for unicast packets
1183 tANI_U8 bcastSig; // DPU signature for broadcast packets
1184 tAniAuthType authType;
1185 tAniSSID ssId; // SSID used by STA to associate
1186 tSirRSNie rsnIE;// RSN IE received from peer
1187 tSirAddie addIE;// Additional IE received from peer, which possibly include WSC IE and/or P2P IE
1188
Jeff Johnson295189b2012-06-20 16:38:30 -07001189 // powerCap & supportedChannels are present only when
1190 // spectrumMgtIndicator flag is set
1191 tAniBool spectrumMgtIndicator;
1192 tSirMacPowerCapInfo powerCap;
1193 tSirSupChnl supportedChannels;
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 tAniBool wmmEnabledSta; /* if present - STA is WMM enabled */
Hardik Kantilal Patel1ba630f2014-11-21 04:32:05 +05301195#ifdef WLAN_FEATURE_AP_HT40_24G
1196 tAniBool HT40MHzIntoEnabledSta; /* if present - STA Enable 40 MHz Intolerant */
1197#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001198 tAniBool reassocReq;
1199 // Required for indicating the frames to upper layer
1200 tANI_U32 beaconLength;
1201 tANI_U8* beaconPtr;
1202 tANI_U32 assocReqLength;
1203 tANI_U8* assocReqPtr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001204} tSirSmeAssocInd, *tpSirSmeAssocInd;
1205
1206
1207/// Definition for Association confirm
1208/// ---> MAC
1209typedef struct sSirSmeAssocCnf
1210{
1211 tANI_U16 messageType; // eWNI_SME_ASSOC_CNF
1212 tANI_U16 length;
1213 tSirResultCodes statusCode;
1214 tSirMacAddr bssId; // Self BSSID
1215 tSirMacAddr peerMacAddr;
1216 tANI_U16 aid;
1217 tSirMacAddr alternateBssId;
1218 tANI_U8 alternateChannelId;
1219} tSirSmeAssocCnf, *tpSirSmeAssocCnf;
1220
Jeff Johnson295189b2012-06-20 16:38:30 -07001221/// Definition for Reassociation indication from peer
1222typedef struct sSirSmeReassocInd
1223{
1224 tANI_U16 messageType; // eWNI_SME_REASSOC_IND
1225 tANI_U16 length;
1226 tANI_U8 sessionId; // Session ID
1227 tSirMacAddr peerMacAddr;
1228 tSirMacAddr oldMacAddr;
1229 tANI_U16 aid;
1230 tSirMacAddr bssId; // Self BSSID
1231 tANI_U16 staId; // Station ID for peer
1232 tAniAuthType authType;
1233 tAniSSID ssId; // SSID used by STA to reassociate
1234 tSirRSNie rsnIE; // RSN IE received from peer
1235
1236 tSirAddie addIE; // Additional IE received from peer
1237
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 // powerCap & supportedChannels are present only when
1239 // spectrumMgtIndicator flag is set
1240 tAniBool spectrumMgtIndicator;
1241 tSirMacPowerCapInfo powerCap;
1242 tSirSupChnl supportedChannels;
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 // Required for indicating the frames to upper layer
1244 // TODO: use the appropriate names to distinguish between the other similar names used above for station mode of operation
1245 tANI_U32 beaconLength;
1246 tANI_U8* beaconPtr;
1247 tANI_U32 assocReqLength;
1248 tANI_U8* assocReqPtr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001249} tSirSmeReassocInd, *tpSirSmeReassocInd;
1250
1251/// Definition for Reassociation confirm
1252/// ---> MAC
1253typedef struct sSirSmeReassocCnf
1254{
1255 tANI_U16 messageType; // eWNI_SME_REASSOC_CNF
1256 tANI_U16 length;
1257 tSirResultCodes statusCode;
1258 tSirMacAddr bssId; // Self BSSID
1259 tSirMacAddr peerMacAddr;
1260 tANI_U16 aid;
1261 tSirMacAddr alternateBssId;
1262 tANI_U8 alternateChannelId;
1263} tSirSmeReassocCnf, *tpSirSmeReassocCnf;
1264
Jeff Johnson295189b2012-06-20 16:38:30 -07001265
1266/// Enum definition for Wireless medium status change codes
1267typedef enum eSirSmeStatusChangeCode
1268{
1269 eSIR_SME_DEAUTH_FROM_PEER,
1270 eSIR_SME_DISASSOC_FROM_PEER,
1271 eSIR_SME_LOST_LINK_WITH_PEER,
1272 eSIR_SME_CHANNEL_SWITCH,
1273 eSIR_SME_JOINED_NEW_BSS,
1274 eSIR_SME_LEAVING_BSS,
1275 eSIR_SME_IBSS_ACTIVE,
1276 eSIR_SME_IBSS_INACTIVE,
1277 eSIR_SME_IBSS_PEER_DEPARTED,
1278 eSIR_SME_RADAR_DETECTED,
1279 eSIR_SME_IBSS_NEW_PEER,
1280 eSIR_SME_AP_CAPS_CHANGED,
1281 eSIR_SME_BACKGROUND_SCAN_FAIL,
1282 eSIR_SME_CB_LEGACY_BSS_FOUND_BY_AP,
1283 eSIR_SME_CB_LEGACY_BSS_FOUND_BY_STA
1284} tSirSmeStatusChangeCode;
1285
1286typedef struct sSirSmeNewBssInfo
1287{
1288 tSirMacAddr bssId;
1289 tANI_U8 channelNumber;
1290 tANI_U8 reserved;
1291 tSirMacSSid ssId;
1292} tSirSmeNewBssInfo, *tpSirSmeNewBssInfo;
1293
1294typedef struct sSirSmeApNewCaps
1295{
1296 tANI_U16 capabilityInfo;
1297 tSirMacAddr bssId;
1298 tANI_U8 channelId;
1299 tANI_U8 reserved[3];
1300 tSirMacSSid ssId;
1301} tSirSmeApNewCaps, *tpSirSmeApNewCaps;
1302
1303/**
1304 * Table below indicates what information is passed for each of
1305 * the Wireless Media status change notifications:
1306 *
1307 * Status Change code Status change info
1308 * ----------------------------------------------------------------------
1309 * eSIR_SME_DEAUTH_FROM_PEER Reason code received in DEAUTH frame
1310 * eSIR_SME_DISASSOC_FROM_PEER Reason code received in DISASSOC frame
1311 * eSIR_SME_LOST_LINK_WITH_PEER None
1312 * eSIR_SME_CHANNEL_SWITCH New channel number
1313 * eSIR_SME_JOINED_NEW_BSS BSSID, SSID and channel number
1314 * eSIR_SME_LEAVING_BSS None
1315 * eSIR_SME_IBSS_ACTIVE Indicates that another STA joined
1316 * IBSS apart from this STA that
1317 * started IBSS
1318 * eSIR_SME_IBSS_INACTIVE Indicates that only this STA is left
1319 * in IBSS
1320 * eSIR_SME_RADAR_DETECTED Indicates that radar is detected
1321 * eSIR_SME_IBSS_NEW_PEER Indicates that a new peer is detected
1322 * eSIR_SME_AP_CAPS_CHANGED Indicates that capabilities of the AP
1323 * that STA is currently associated with
1324 * have changed.
1325 * eSIR_SME_BACKGROUND_SCAN_FAIL Indicates background scan failure
1326 */
1327
1328/// Definition for Wireless medium status change notification
1329typedef struct sSirSmeWmStatusChangeNtf
1330{
1331 tANI_U16 messageType; // eWNI_SME_WM_STATUS_CHANGE_NTF
1332 tANI_U16 length;
1333 tANI_U8 sessionId; // Session ID
1334 tSirSmeStatusChangeCode statusChangeCode;
1335 tSirMacAddr bssId; // Self BSSID
1336 union
1337 {
1338 tANI_U16 deAuthReasonCode; // eSIR_SME_DEAUTH_FROM_PEER
1339 tANI_U16 disassocReasonCode; // eSIR_SME_DISASSOC_FROM_PEER
1340 // none for eSIR_SME_LOST_LINK_WITH_PEER
1341 tANI_U8 newChannelId; // eSIR_SME_CHANNEL_SWITCH
1342 tSirSmeNewBssInfo newBssInfo; // eSIR_SME_JOINED_NEW_BSS
1343 // none for eSIR_SME_LEAVING_BSS
1344 // none for eSIR_SME_IBSS_ACTIVE
1345 // none for eSIR_SME_IBSS_INACTIVE
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 tSirNewIbssPeerInfo newIbssPeerInfo; // eSIR_SME_IBSS_NEW_PEER
1347 tSirSmeApNewCaps apNewCaps; // eSIR_SME_AP_CAPS_CHANGED
1348 tSirBackgroundScanInfo bkgndScanInfo; // eSIR_SME_BACKGROUND_SCAN_FAIL
1349 tAniTitanCBNeighborInfo cbNeighbors; // eSIR_SME_CB_LEGACY_BSS_FOUND_BY_STA
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 } statusChangeInfo;
1351} tSirSmeWmStatusChangeNtf, *tpSirSmeWmStatusChangeNtf;
1352
1353/// Definition for Disassociation request
1354typedef
Jeff Johnson295189b2012-06-20 16:38:30 -07001355__ani_attr_pre_packed
Jeff Johnson295189b2012-06-20 16:38:30 -07001356struct sSirSmeDisassocReq
1357{
1358 tANI_U16 messageType; // eWNI_SME_DISASSOC_REQ
1359 tANI_U16 length;
1360 tANI_U8 sessionId; // Session ID
1361 tANI_U16 transactionId; // Transaction ID for cmd
1362 tSirMacAddr bssId; // Peer BSSID
1363 tSirMacAddr peerMacAddr;
1364 tANI_U16 reasonCode;
1365 tANI_U8 doNotSendOverTheAir; //This flag tells LIM whether to send the disassoc OTA or not
1366 //This will be set in while handing off from one AP to other
Jeff Johnson295189b2012-06-20 16:38:30 -07001367}
Jeff Johnson295189b2012-06-20 16:38:30 -07001368__ani_attr_packed
Jeff Johnson295189b2012-06-20 16:38:30 -07001369tSirSmeDisassocReq, *tpSirSmeDisassocReq;
1370
1371/// Definition for Tkip countermeasures request
Jeff Johnson295189b2012-06-20 16:38:30 -07001372typedef __ani_attr_pre_packed struct sSirSmeTkipCntrMeasReq
1373{
1374 tANI_U16 messageType; // eWNI_SME_DISASSOC_REQ
1375 tANI_U16 length;
1376 tANI_U8 sessionId; // Session ID
1377 tANI_U16 transactionId; // Transaction ID for cmd
1378 tSirMacAddr bssId; // Peer BSSID
1379 tANI_BOOLEAN bEnable; // Start/stop countermeasures
1380} __ani_attr_packed tSirSmeTkipCntrMeasReq, *tpSirSmeTkipCntrMeasReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07001381
1382typedef struct sAni64BitCounters
1383{
1384 tANI_U32 Hi;
1385 tANI_U32 Lo;
1386}tAni64BitCounters, *tpAni64BitCounters;
1387
1388typedef struct sAniSecurityStat
1389{
1390 tAni64BitCounters txBlks;
1391 tAni64BitCounters rxBlks;
1392 tAni64BitCounters formatErrorCnt;
1393 tAni64BitCounters decryptErr;
1394 tAni64BitCounters protExclCnt;
1395 tAni64BitCounters unDecryptableCnt;
1396 tAni64BitCounters decryptOkCnt;
1397
1398}tAniSecurityStat, *tpAniSecurityStat;
1399
1400typedef struct sAniTxRxCounters
1401{
1402 tANI_U32 txFrames; // Incremented for every packet tx
1403 tANI_U32 rxFrames;
1404 tANI_U32 nRcvBytes;
1405 tANI_U32 nXmitBytes;
1406}tAniTxRxCounters, *tpAniTxRxCounters;
1407
1408typedef struct sAniTxRxStats
1409{
1410 tAni64BitCounters txFrames;
1411 tAni64BitCounters rxFrames;
1412 tAni64BitCounters nRcvBytes;
1413 tAni64BitCounters nXmitBytes;
1414
1415}tAniTxRxStats,*tpAniTxRxStats;
1416
1417typedef struct sAniSecStats
1418{
1419 tAniSecurityStat aes;
1420 tAni64BitCounters aesReplays;
1421 tAniSecurityStat tkip;
1422 tAni64BitCounters tkipReplays;
1423 tAni64BitCounters tkipMicError;
1424
1425 tAniSecurityStat wep;
1426#if defined(FEATURE_WLAN_WAPI) && !defined(LIBRA_WAPI_SUPPORT)
1427 tAniSecurityStat wpi;
1428 tAni64BitCounters wpiReplays;
1429 tAni64BitCounters wpiMicError;
1430#endif
1431}tAniSecStats, *tpAniSecStats;
1432
1433#define SIR_MAX_RX_CHAINS 3
1434
1435typedef struct sAniStaStatStruct
1436{
1437 /* following statistic elements till expandPktRxCntLo are not filled with valid data.
1438 * These are kept as it is, since WSM is using this structure.
1439 * These elements can be removed whenever WSM is updated.
1440 * Phystats is used to hold phystats from BD.
1441 */
1442 tANI_U32 sentAesBlksUcastHi;
1443 tANI_U32 sentAesBlksUcastLo;
1444 tANI_U32 recvAesBlksUcastHi;
1445 tANI_U32 recvAesBlksUcastLo;
1446 tANI_U32 aesFormatErrorUcastCnts;
1447 tANI_U32 aesReplaysUcast;
1448 tANI_U32 aesDecryptErrUcast;
1449 tANI_U32 singleRetryPkts;
1450 tANI_U32 failedTxPkts;
1451 tANI_U32 ackTimeouts;
1452 tANI_U32 multiRetryPkts;
1453 tANI_U32 fragTxCntsHi;
1454 tANI_U32 fragTxCntsLo;
1455 tANI_U32 transmittedPktsHi;
1456 tANI_U32 transmittedPktsLo;
1457 tANI_U32 phyStatHi; //These are used to fill in the phystats.
1458 tANI_U32 phyStatLo; //This is only for private use.
1459
1460 tANI_U32 uplinkRssi;
1461 tANI_U32 uplinkSinr;
1462 tANI_U32 uplinkRate;
1463 tANI_U32 downlinkRssi;
1464 tANI_U32 downlinkSinr;
1465 tANI_U32 downlinkRate;
1466 tANI_U32 nRcvBytes;
1467 tANI_U32 nXmitBytes;
1468
1469 // titan 3c stats
1470 tANI_U32 chunksTxCntHi; // Number of Chunks Transmitted
1471 tANI_U32 chunksTxCntLo;
1472 tANI_U32 compPktRxCntHi; // Number of Packets Received that were actually compressed
1473 tANI_U32 compPktRxCntLo;
1474 tANI_U32 expanPktRxCntHi; // Number of Packets Received that got expanded
1475 tANI_U32 expanPktRxCntLo;
1476
1477
1478 /* Following elements are valid and filled in correctly. They have valid values.
1479 */
1480
1481 //Unicast frames and bytes.
1482 tAniTxRxStats ucStats;
1483
1484 //Broadcast frames and bytes.
1485 tAniTxRxStats bcStats;
1486
1487 //Multicast frames and bytes.
1488 tAniTxRxStats mcStats;
1489
1490 tANI_U32 currentTxRate;
1491 tANI_U32 currentRxRate; //Rate in 100Kbps
1492
1493 tANI_U32 maxTxRate;
1494 tANI_U32 maxRxRate;
1495
1496 tANI_S8 rssi[SIR_MAX_RX_CHAINS];
1497
1498
1499 tAniSecStats securityStats;
1500
1501 tANI_U8 currentRxRateIdx; //This the softmac rate Index.
1502 tANI_U8 currentTxRateIdx;
1503
1504} tAniStaStatStruct, *tpAniStaStatStruct;
1505
1506//Statistics that are not maintained per stations.
1507typedef struct sAniGlobalStatStruct
1508{
1509 tAni64BitCounters txError;
1510 tAni64BitCounters rxError;
1511 tAni64BitCounters rxDropNoBuffer;
1512 tAni64BitCounters rxDropDup;
1513 tAni64BitCounters rxCRCError;
1514
1515 tAni64BitCounters singleRetryPkts;
1516 tAni64BitCounters failedTxPkts;
1517 tAni64BitCounters ackTimeouts;
1518 tAni64BitCounters multiRetryPkts;
1519 tAni64BitCounters fragTxCnts;
1520 tAni64BitCounters fragRxCnts;
1521
1522 tAni64BitCounters txRTSSuccess;
1523 tAni64BitCounters txCTSSuccess;
1524 tAni64BitCounters rxRTSSuccess;
1525 tAni64BitCounters rxCTSSuccess;
1526
1527 tAniSecStats securityStats;
1528
1529 tAniTxRxStats mcStats;
1530 tAniTxRxStats bcStats;
1531
1532}tAniGlobalStatStruct,*tpAniGlobalStatStruct;
1533
1534typedef enum sPacketType
1535{
1536 ePACKET_TYPE_UNKNOWN,
1537 ePACKET_TYPE_11A,
1538 ePACKET_TYPE_11G,
1539 ePACKET_TYPE_11B,
1540 ePACKET_TYPE_11N
1541
1542}tPacketType, *tpPacketType;
1543
1544typedef struct sAniStatSummaryStruct
1545{
1546 tAniTxRxStats uc; //Unicast counters.
1547 tAniTxRxStats bc; //Broadcast counters.
1548 tAniTxRxStats mc; //Multicast counters.
1549 tAni64BitCounters txError;
1550 tAni64BitCounters rxError;
1551 tANI_S8 rssi[SIR_MAX_RX_CHAINS]; //For each chain.
1552 tANI_U32 rxRate; // Rx rate of the last received packet.
1553 tANI_U32 txRate;
1554 tANI_U16 rxMCSId; //MCS index is valid only when packet type is ePACKET_TYPE_11N
1555 tANI_U16 txMCSId;
1556 tPacketType rxPacketType;
1557 tPacketType txPacketType;
1558 tSirMacAddr macAddr; //Mac Address of the station from which above RSSI and rate is from.
1559}tAniStatSummaryStruct,*tpAniStatSummaryStruct;
1560
Jeff Johnson295189b2012-06-20 16:38:30 -07001561//structure for stats that may be reset, like the ones in sta descriptor
1562//The stats are saved into here before reset. It should be tANI_U32 aligned.
1563typedef struct _sPermStaStats
1564{
1565 //tANI_U32 sentAesBlksUcastHi;
1566 //tANI_U32 sentAesBlksUcastLo;
1567 //tANI_U32 recvAesBlksUcastHi;
1568 //tANI_U32 recvAesBlksUcastLo;
1569 tANI_U32 aesFormatErrorUcastCnts;
1570 tANI_U32 aesReplaysUcast;
1571 tANI_U32 aesDecryptErrUcast;
1572 tANI_U32 singleRetryPkts;
1573 tANI_U32 failedTxPkts;
1574 tANI_U32 ackTimeouts;
1575 tANI_U32 multiRetryPkts;
1576 tANI_U32 fragTxCntsHi;
1577 tANI_U32 fragTxCntsLo;
1578 tANI_U32 transmittedPktsHi;
1579 tANI_U32 transmittedPktsLo;
1580
1581 // titan 3c stats
1582 tANI_U32 chunksTxCntHi; // Number of Chunks Transmitted
1583 tANI_U32 chunksTxCntLo;
1584 tANI_U32 compPktRxCntHi; // Number of Packets Received that were actually compressed
1585 tANI_U32 compPktRxCntLo;
1586 tANI_U32 expanPktRxCntHi; // Number of Packets Received that got expanded
1587 tANI_U32 expanPktRxCntLo;
1588}tPermanentStaStats;
1589
Jeff Johnson295189b2012-06-20 16:38:30 -07001590
1591
1592
1593/// Definition for Disassociation response
1594typedef struct sSirSmeDisassocRsp
1595{
1596 tANI_U16 messageType; // eWNI_SME_DISASSOC_RSP
1597 tANI_U16 length;
1598 tANI_U8 sessionId; // Session ID
1599 tANI_U16 transactionId; // Transaction ID for cmd
1600 tSirResultCodes statusCode;
1601 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 tAniStaStatStruct perStaStats; // STA stats
Jeff Johnson295189b2012-06-20 16:38:30 -07001603 tANI_U16 staId;
Jeff Johnson295189b2012-06-20 16:38:30 -07001604}
Jeff Johnson295189b2012-06-20 16:38:30 -07001605__ani_attr_packed
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 tSirSmeDisassocRsp, *tpSirSmeDisassocRsp;
1607
1608/// Definition for Disassociation indication from peer
1609typedef struct sSirSmeDisassocInd
1610{
1611 tANI_U16 messageType; // eWNI_SME_DISASSOC_IND
1612 tANI_U16 length;
1613 tANI_U8 sessionId; // Session Identifier
1614 tANI_U16 transactionId; // Transaction Identifier with PE
1615 tSirResultCodes statusCode;
1616 tSirMacAddr bssId;
1617 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 tAniStaStatStruct perStaStats; // STA stats
Jeff Johnson295189b2012-06-20 16:38:30 -07001619 tANI_U16 staId;
Mohit Khanna99d5fd02012-09-11 14:51:20 -07001620 tANI_U32 reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001621} tSirSmeDisassocInd, *tpSirSmeDisassocInd;
1622
1623/// Definition for Disassociation confirm
1624/// MAC --->
1625typedef struct sSirSmeDisassocCnf
1626{
1627 tANI_U16 messageType; // eWNI_SME_DISASSOC_CNF
1628 tANI_U16 length;
1629 tSirResultCodes statusCode;
1630 tSirMacAddr bssId;
1631 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001632} tSirSmeDisassocCnf, *tpSirSmeDisassocCnf;
1633
1634/// Definition for Deauthetication request
1635typedef struct sSirSmeDeauthReq
1636{
1637 tANI_U16 messageType; // eWNI_SME_DEAUTH_REQ
1638 tANI_U16 length;
1639 tANI_U8 sessionId; // Session ID
1640 tANI_U16 transactionId; // Transaction ID for cmd
1641 tSirMacAddr bssId; // AP BSSID
1642 tSirMacAddr peerMacAddr;
1643 tANI_U16 reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001644} tSirSmeDeauthReq, *tpSirSmeDeauthReq;
1645
1646/// Definition for Deauthetication response
1647typedef struct sSirSmeDeauthRsp
1648{
1649 tANI_U16 messageType; // eWNI_SME_DEAUTH_RSP
1650 tANI_U16 length;
1651 tANI_U8 sessionId; // Session ID
1652 tANI_U16 transactionId; // Transaction ID for cmd
1653 tSirResultCodes statusCode;
1654 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001655} tSirSmeDeauthRsp, *tpSirSmeDeauthRsp;
1656
1657/// Definition for Deauthetication indication from peer
1658typedef struct sSirSmeDeauthInd
1659{
1660 tANI_U16 messageType; // eWNI_SME_DEAUTH_IND
1661 tANI_U16 length;
1662 tANI_U8 sessionId; //Added for BT-AMP
1663 tANI_U16 transactionId; //Added for BT-AMP
1664 tSirResultCodes statusCode;
1665 tSirMacAddr bssId;// AP BSSID
1666 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001667
Jeff Johnson295189b2012-06-20 16:38:30 -07001668 tANI_U16 staId;
Mohit Khanna99d5fd02012-09-11 14:51:20 -07001669 tANI_U32 reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001670} tSirSmeDeauthInd, *tpSirSmeDeauthInd;
1671
1672/// Definition for Deauthentication confirm
1673/// MAC --->
1674typedef struct sSirSmeDeauthCnf
1675{
1676 tANI_U16 messageType; // eWNI_SME_DEAUTH_CNF
1677 tANI_U16 length;
1678 tSirResultCodes statusCode;
1679 tSirMacAddr bssId; // AP BSSID
1680 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001681} tSirSmeDeauthCnf, *tpSirSmeDeauthCnf;
1682
1683/// Definition for stop BSS request message
1684typedef struct sSirSmeStopBssReq
1685{
1686 tANI_U16 messageType; // eWNI_SME_STOP_BSS_REQ
1687 tANI_U16 length;
1688 tANI_U8 sessionId; //Session ID
1689 tANI_U16 transactionId; //tranSaction ID for cmd
1690 tSirResultCodes reasonCode;
1691 tSirMacAddr bssId; //Self BSSID
1692} tSirSmeStopBssReq, *tpSirSmeStopBssReq;
1693
1694/// Definition for stop BSS response message
1695typedef struct sSirSmeStopBssRsp
1696{
1697 tANI_U16 messageType; // eWNI_SME_STOP_BSS_RSP
1698 tANI_U16 length;
1699 tSirResultCodes statusCode;
1700 tANI_U8 sessionId; // Session ID
1701 tANI_U16 transactionId; // Transaction ID for cmd
1702} tSirSmeStopBssRsp, *tpSirSmeStopBssRsp;
1703
Jeff Johnson295189b2012-06-20 16:38:30 -07001704
1705
1706/// Definition for Channel Switch indication for station
1707/// MAC --->
1708typedef struct sSirSmeSwitchChannelInd
1709{
1710 tANI_U16 messageType; // eWNI_SME_SWITCH_CHL_REQ
1711 tANI_U16 length;
1712 tANI_U8 sessionId;
1713 tANI_U16 newChannelId;
1714 tSirMacAddr bssId; // BSSID
1715} tSirSmeSwitchChannelInd, *tpSirSmeSwitchChannelInd;
1716
1717/// Definition for ULA complete indication message
1718typedef struct sirUlaCompleteInd
1719{
1720 tANI_U16 messageType; // eWNI_ULA_COMPLETE_IND
1721 tANI_U16 length;
1722 tSirResultCodes statusCode;
1723 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001724} tSirUlaCompleteInd, *tpSirUlaCompleteInd;
1725
1726/// Definition for ULA complete confirmation message
1727typedef struct sirUlaCompleteCnf
1728{
1729 tANI_U16 messageType; // eWNI_ULA_COMPLETE_CNF
1730 tANI_U16 length;
1731 tSirResultCodes statusCode;
1732 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001733} tSirUlaCompleteCnf, *tpSirUlaCompleteCnf;
1734
1735/// Definition for Neighbor BSS indication
1736/// MAC --->
1737/// MAC reports this each time a new I/BSS is detected
1738typedef struct sSirSmeNeighborBssInd
1739{
1740 tANI_U16 messageType; // eWNI_SME_NEIGHBOR_BSS_IND
1741 tANI_U16 length;
1742 tANI_U8 sessionId;
Jeff Johnson295189b2012-06-20 16:38:30 -07001743 tSirBssDescription bssDescription[1];
Jeff Johnson295189b2012-06-20 16:38:30 -07001744} tSirSmeNeighborBssInd, *tpSirSmeNeighborBssInd;
1745
1746/// Definition for MIC failure indication
1747/// MAC --->
1748/// MAC reports this each time a MIC failure occures on Rx TKIP packet
1749typedef struct sSirSmeMicFailureInd
1750{
1751 tANI_U16 messageType; // eWNI_SME_MIC_FAILURE_IND
1752 tANI_U16 length;
1753 tANI_U8 sessionId;
1754 tSirMacAddr bssId; // BSSID
1755 tSirMicFailureInfo info;
1756} tSirSmeMicFailureInd, *tpSirSmeMicFailureInd;
1757
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -08001758typedef struct sSirSmeMissedBeaconInd
1759{
1760 tANI_U16 messageType; // eWNI_SME_MISSED_BEACON_IND
1761 tANI_U16 length;
1762 tANI_U8 bssIdx;
1763} tSirSmeMissedBeaconInd, *tpSirSmeMissedBeaconInd;
Jeff Johnson295189b2012-06-20 16:38:30 -07001764
1765/// Definition for Set Context request
1766/// ---> MAC
1767typedef struct sSirSmeSetContextReq
1768{
1769 tANI_U16 messageType; // eWNI_SME_SET_CONTEXT_REQ
1770 tANI_U16 length;
1771 tANI_U8 sessionId; //Session ID
1772 tANI_U16 transactionId; //Transaction ID for cmd
1773 tSirMacAddr peerMacAddr;
1774 tSirMacAddr bssId; // BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 // TBD Following QOS fields to be uncommented
1776 //tAniBool qosInfoPresent;
1777 //tSirQos qos;
1778 tSirKeyMaterial keyMaterial;
1779} tSirSmeSetContextReq, *tpSirSmeSetContextReq;
1780
1781/// Definition for Set Context response
1782/// MAC --->
1783typedef struct sSirSmeSetContextRsp
1784{
1785 tANI_U16 messageType; // eWNI_SME_SET_CONTEXT_RSP
1786 tANI_U16 length;
1787 tANI_U8 sessionId; // Session ID
1788 tANI_U16 transactionId; // Transaction ID for cmd
1789 tSirResultCodes statusCode;
1790 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001791} tSirSmeSetContextRsp, *tpSirSmeSetContextRsp;
1792
1793/// Definition for Remove Key Context request
1794/// ---> MAC
1795typedef struct sSirSmeRemoveKeyReq
1796{
1797 tANI_U16 messageType; // eWNI_SME_REMOVE_KEY_REQ
1798 tANI_U16 length;
1799 tANI_U8 sessionId; // Session ID
1800 tANI_U16 transactionId; // Transaction ID for cmd
1801 tSirMacAddr bssId; // BSSID
1802 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 tANI_U8 edType;
1804 tANI_U8 wepType;
1805 tANI_U8 keyId;
1806 tANI_BOOLEAN unicast;
1807} tSirSmeRemoveKeyReq, *tpSirSmeRemoveKeyReq;
1808
1809/// Definition for Remove Key Context response
1810/// MAC --->
1811typedef struct sSirSmeRemoveKeyRsp
1812{
1813 tANI_U16 messageType; // eWNI_SME_REMOVE_KEY_RSP
1814 tANI_U16 length;
1815 tANI_U8 sessionId; // Session ID
1816 tANI_U16 transactionId; // Transaction ID for cmd
1817 tSirResultCodes statusCode;
1818 tSirMacAddr peerMacAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -07001819} tSirSmeRemoveKeyRsp, *tpSirSmeRemoveKeyRsp;
1820
1821/// Definition for Set Power request
1822/// ---> MAC
1823typedef struct sSirSmeSetPowerReq
1824{
1825 tANI_U16 messageType; // eWNI_SME_SET_POWER_REQ
1826 tANI_U16 length;
1827 tANI_U16 transactionId; // Transaction ID for cmd
1828 tANI_S8 powerLevel;
1829} tSirSmeSetPowerReq, *tpSirSmeSetPowerReq;
1830
1831/// Definition for Set Power response
1832/// MAC --->
1833typedef struct sSirSmeSetPowerRsp
1834{
1835 tANI_U16 messageType; // eWNI_SME_SET_POWER_RSP
1836 tANI_U16 length;
1837 tSirResultCodes statusCode;
1838 tANI_U16 transactionId; // Transaction ID for cmd
1839} tSirSmeSetPowerRsp, *tpSirSmeSetPowerRsp;
1840
Jeff Johnson295189b2012-06-20 16:38:30 -07001841
1842/// Definition for Link Test Start response
1843/// MAC --->
1844typedef struct sSirSmeLinkTestStartRsp
1845{
1846 tANI_U16 messageType; // eWNI_SME_LINK_TEST_START_RSP
1847 tANI_U16 length;
1848 tSirMacAddr peerMacAddr;
1849 tSirResultCodes statusCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001850} tSirSmeLinkTestStartRsp, *tpSirSmeLinkTestStartRsp;
1851
1852/// Definition for Link Test Stop response
1853/// WSM ---> MAC
1854typedef struct sSirSmeLinkTestStopRsp
1855{
1856 tANI_U16 messageType; // eWNI_SME_LINK_TEST_STOP_RSP
1857 tANI_U16 length;
1858 tSirMacAddr peerMacAddr;
1859 tSirResultCodes statusCode;
Jeff Johnson295189b2012-06-20 16:38:30 -07001860} tSirSmeLinkTestStopRsp, *tpSirSmeLinkTestStopRsp;
1861
1862/// Definition for kick starting DFS measurements
1863typedef struct sSirSmeDFSreq
1864{
1865 tANI_U16 messageType; // eWNI_SME_DFS_REQ
1866 tANI_U16 length;
1867 tANI_U16 transactionId; // Transaction ID for cmd
1868} tSirSmeDFSrequest, *tpSirSmeDFSrequest;
1869
1870/// Definition for response message to previously
1871/// issued DFS request
1872typedef struct sSirSmeDFSrsp
1873{
1874 tANI_U16 messageType; // eWNI_SME_DFS_RSP
1875 tANI_U16 length;
1876 tSirResultCodes statusCode;
1877 tANI_U16 transactionId; // Transaction ID for cmd
1878 tANI_U32 dfsReport[1];
1879} tSirSmeDFSrsp, *tpSirSmeDFSrsp;
1880
1881/// Statistic definitions
1882//=============================================================
1883// Per STA statistic structure; This same struct will be used for Aggregate
1884// STA stats as well.
1885
1886// Clear radio stats and clear per sta stats
1887typedef enum
1888{
1889 eANI_CLEAR_ALL_STATS, // Clears all stats
1890 eANI_CLEAR_RX_STATS, // Clears RX statistics of the radio interface
1891 eANI_CLEAR_TX_STATS, // Clears TX statistics of the radio interface
1892 eANI_CLEAR_RADIO_STATS, // Clears all the radio stats
1893 eANI_CLEAR_PER_STA_STATS, // Clears Per STA stats
1894 eANI_CLEAR_AGGR_PER_STA_STATS, // Clears aggregate stats
1895
1896 // Used to distinguish between per sta to security stats.
1897 // Used only by AP, FW just returns the same parameter as it received.
1898 eANI_LINK_STATS, // Get Per STA stats
1899 eANI_SECURITY_STATS, // Get Per STA security stats
1900
1901 eANI_CLEAR_STAT_TYPES_END
1902} tAniStatSubTypes;
1903
1904typedef struct sAniTxCtrs
1905{
1906 // add the rate counters here
1907 tANI_U32 tx1Mbps;
1908 tANI_U32 tx2Mbps;
1909 tANI_U32 tx5_5Mbps;
1910 tANI_U32 tx6Mbps;
1911 tANI_U32 tx9Mbps;
1912 tANI_U32 tx11Mbps;
1913 tANI_U32 tx12Mbps;
1914 tANI_U32 tx18Mbps;
1915 tANI_U32 tx24Mbps;
1916 tANI_U32 tx36Mbps;
1917 tANI_U32 tx48Mbps;
1918 tANI_U32 tx54Mbps;
1919 tANI_U32 tx72Mbps;
1920 tANI_U32 tx96Mbps;
1921 tANI_U32 tx108Mbps;
1922
1923 // tx path radio counts
1924 tANI_U32 txFragHi;
1925 tANI_U32 txFragLo;
1926 tANI_U32 txFrameHi;
1927 tANI_U32 txFrameLo;
1928 tANI_U32 txMulticastFrameHi;
1929 tANI_U32 txMulticastFrameLo;
1930 tANI_U32 txFailedHi;
1931 tANI_U32 txFailedLo;
1932 tANI_U32 multipleRetryHi;
1933 tANI_U32 multipleRetryLo;
1934 tANI_U32 singleRetryHi;
1935 tANI_U32 singleRetryLo;
1936 tANI_U32 ackFailureHi;
1937 tANI_U32 ackFailureLo;
1938 tANI_U32 xmitBeacons;
1939
1940 // titan 3c stats
1941 tANI_U32 txCbEscPktCntHi; // Total Number of Channel Bonded/Escort Packet Transmitted
1942 tANI_U32 txCbEscPktCntLo;
1943 tANI_U32 txChunksCntHi; // Total Number of Chunks Transmitted
1944 tANI_U32 txChunksCntLo;
1945 tANI_U32 txCompPktCntHi; // Total Number of Compresssed Packet Transmitted
1946 tANI_U32 txCompPktCntLo;
1947 tANI_U32 tx50PerCompPktCntHi; // Total Number of Packets with 50% or more compression
1948 tANI_U32 tx50PerCompPktCntLo;
1949 tANI_U32 txExpanPktCntHi; // Total Number of Packets Transmitted that got expanded
1950 tANI_U32 txExpanPktCntLo;
1951} tAniTxCtrs, *tpAniTxCtrs;
1952
1953typedef struct sAniRxCtrs
1954{
1955 // receive frame rate counters
1956 tANI_U32 rx1Mbps;
1957 tANI_U32 rx2Mbps;
1958 tANI_U32 rx5_5Mbps;
1959 tANI_U32 rx6Mbps;
1960 tANI_U32 rx9Mbps;
1961 tANI_U32 rx11Mbps;
1962 tANI_U32 rx12Mbps;
1963 tANI_U32 rx18Mbps;
1964 tANI_U32 rx24Mbps;
1965 tANI_U32 rx36Mbps;
1966 tANI_U32 rx48Mbps;
1967 tANI_U32 rx54Mbps;
1968 tANI_U32 rx72Mbps;
1969 tANI_U32 rx96Mbps;
1970 tANI_U32 rx108Mbps;
1971
1972 // receive size counters; 'Lte' = Less than or equal to
1973 tANI_U32 rxLte64;
1974 tANI_U32 rxLte128Gt64;
1975 tANI_U32 rxLte256Gt128;
1976 tANI_U32 rxLte512Gt256;
1977 tANI_U32 rxLte1kGt512;
1978 tANI_U32 rxLte1518Gt1k;
1979 tANI_U32 rxLte2kGt1518;
1980 tANI_U32 rxLte4kGt2k;
1981
1982 // rx radio stats
1983 tANI_U32 rxFrag;
1984 tANI_U32 rxFrame;
1985 tANI_U32 fcsError;
1986 tANI_U32 rxMulticast;
1987 tANI_U32 duplicate;
1988 tANI_U32 rtsSuccess;
1989 tANI_U32 rtsFailed;
1990 tANI_U32 wepUndecryptables;
1991 tANI_U32 drops;
1992 tANI_U32 aesFormatErrorUcastCnts;
1993 tANI_U32 aesReplaysUcast;
1994 tANI_U32 aesDecryptErrUcast;
1995
1996 // titan 3c stats
1997 tANI_U32 rxDecompPktCntHi; // Total Number of Packets that got decompressed
1998 tANI_U32 rxDecompPktCntLo;
1999 tANI_U32 rxCompPktCntHi; // Total Number of Packets received that were actually compressed
2000 tANI_U32 rxCompPktCntLo;
2001 tANI_U32 rxExpanPktCntHi; // Total Number of Packets received that got expanded
2002 tANI_U32 rxExpanPktCntLo;
2003} tAniRxCtrs, *tpAniRxCtrs;
2004
2005// Radio stats
2006typedef struct sAniRadioStats
2007{
2008 tAniTxCtrs tx;
2009 tAniRxCtrs rx;
2010} tAniRadioStats, *tpAniRadioStats;
2011
2012// Get Radio Stats request structure
2013// This structure shall be used for both Radio stats and Aggregate stats
2014// A valid request must contain entire structure with/without valid fields.
2015// Based on the request type, the valid fields will be checked.
2016typedef struct sAniGetStatsReq
2017{
2018 // Common for all types are requests
2019 tANI_U16 msgType; // message type is same as the request type
2020 tANI_U16 msgLen; // length of the entire request
2021 tANI_U8 sessionId; //Session ID
2022 tANI_U16 transactionId;
2023 tSirMacAddr bssId; //BSSID
2024 // only used for clear stats and per sta stats clear
2025 tAniStatSubTypes stat; // Clears the stats of the described types.
2026 tANI_U32 staId; // Per STA stats request must contain valid
2027 // values
2028 tANI_U8 macAddr[6];
2029} tAniGetStatsReq, *tpAniGetStatsReq;
2030
2031// Get Radio Stats response struct
2032typedef struct sAniGetRadioStatsRsp
2033{
2034 tANI_U16 type; // message type is same as the request type
2035 tANI_U16 msgLen; // length of the entire request
2036 tANI_U32 rc;
2037 tANI_U16 transactionId;
2038 tAniRadioStats radio;
2039} tAniGetRadioStatsRsp, *tpAniGetRadioStatsRsp;
2040
2041// Per Sta stats response struct
2042typedef struct sAniGetPerStaStatsRsp
2043{
2044 tANI_U16 type; // message type is same as the request type
2045 tANI_U16 msgLen; // length of the entire request
2046 tANI_U32 rc;
2047 tANI_U16 transactionId;
2048 tAniStatSubTypes stat; // Sub type needed by AP. Returns the same value
2049 tAniStaStatStruct sta;
2050 tANI_U32 staId;
2051 tANI_U8 macAddr[6];
2052} tAniGetPerStaStatsRsp, *tpAniGetPerStaStatsRsp;
2053
2054// Get Aggregate stats
2055typedef struct sAniGetAggrStaStatsRsp
2056{
2057 tANI_U16 type; // message type is same as the request type
2058 tANI_U16 msgLen; // length of the entire request
2059 tANI_U32 rc;
2060 tANI_U16 transactionId;
2061 tAniStaStatStruct sta;
2062} tAniGetAggrStaStatsRsp, *tpAniGetAggrStaStatsRsp;
2063
2064// Clear stats request and response structure. 'rc' field is unused in
2065// request and this field is used in response field.
2066typedef struct sAniClearStatsRsp
2067{
2068 tANI_U16 type; // message type is same as the request type
2069 tANI_U16 msgLen; // length of the entire request
2070 tANI_U32 rc; // return code - will be filled by FW on
2071 // response.
2072 // Same transaction ID will be returned by the FW
2073 tANI_U16 transactionId;
2074 tAniStatSubTypes stat; // Clears the stats of the described types.
2075 tANI_U32 staId; // Applicable only to PER STA stats clearing
2076 tANI_U8 macAddr[6]; // Applicable only to PER STA stats clearing
2077} tAniClearStatsRsp, *tpAniClearStatsRsp;
2078
2079typedef struct sAniGetGlobalStatsRsp
2080{
2081 tANI_U16 type; // message type is same as the request type
2082 tANI_U16 msgLen; // length of the entire request
2083 tANI_U32 rc;
2084 tANI_U16 transactionId;
2085 tAniGlobalStatStruct global;
2086} tAniGetGlobalStatsRsp, *tpAniGetGlobalStatsRsp;
2087
2088typedef struct sAniGetStatSummaryRsp
2089{
2090 tANI_U16 type; // message type is same as the request type
2091 tANI_U16 msgLen; // length of the entire request --Why?
2092 tANI_U32 rc;
2093 tANI_U16 transactionId;
2094 tAniStatSummaryStruct stat;
2095} tAniGetStatSummaryRsp, *tpAniGetStatSummaryRsp;
2096
2097//***************************************************************
2098
2099
2100/*******************PE Statistics*************************/
2101typedef enum
2102{
2103 PE_SUMMARY_STATS_INFO = 0x00000001,
2104 PE_GLOBAL_CLASS_A_STATS_INFO = 0x00000002,
2105 PE_GLOBAL_CLASS_B_STATS_INFO = 0x00000004,
2106 PE_GLOBAL_CLASS_C_STATS_INFO = 0x00000008,
2107 PE_GLOBAL_CLASS_D_STATS_INFO = 0x00000010,
2108 PE_PER_STA_STATS_INFO = 0x00000020
2109}ePEStatsMask;
2110
2111/*
2112 * tpAniGetPEStatsReq is tied to
2113 * for SME ==> PE eWNI_SME_GET_STATISTICS_REQ msgId and
2114 * for PE ==> HAL SIR_HAL_GET_STATISTICS_REQ msgId
2115 */
2116typedef struct sAniGetPEStatsReq
2117{
2118 // Common for all types are requests
2119 tANI_U16 msgType; // message type is same as the request type
2120 tANI_U16 msgLen; // length of the entire request
2121 tANI_U32 staId; // Per STA stats request must contain valid
2122 tANI_U32 statsMask; // categories of stats requested. look at ePEStatsMask
2123} tAniGetPEStatsReq, *tpAniGetPEStatsReq;
2124
2125/*
2126 * tpAniGetPEStatsRsp is tied to
2127 * for PE ==> SME eWNI_SME_GET_STATISTICS_RSP msgId and
2128 * for HAL ==> PE SIR_HAL_GET_STATISTICS_RSP msgId
2129 */
2130typedef struct sAniGetPEStatsRsp
2131{
2132 // Common for all types are responses
2133 tANI_U16 msgType; // message type is same as the request type
2134 tANI_U16 msgLen; // length of the entire request, includes the pStatsBuf length too
2135 tANI_U8 sessionId;
2136 tANI_U32 rc; //success/failure
2137 tANI_U32 staId; // Per STA stats request must contain valid
2138 tANI_U32 statsMask; // categories of stats requested. look at ePEStatsMask
2139/**********************************************************************************************
2140 //void *pStatsBuf;
2141 The Stats buffer starts here and can be an aggregate of more than one statistics
2142 structure depending on statsMask.The void pointer "pStatsBuf" is commented out
2143 intentionally and the src code that uses this structure should take that into account.
2144**********************************************************************************************/
2145} tAniGetPEStatsRsp, *tpAniGetPEStatsRsp;
2146
2147typedef struct sAniGetRssiReq
2148{
2149 // Common for all types are requests
2150 tANI_U16 msgType; // message type is same as the request type
2151 tANI_U16 msgLen; // length of the entire request
2152 tANI_U8 sessionId;
2153 tANI_U8 staId;
2154 void *rssiCallback;
2155 void *pDevContext; //device context
2156 void *pVosContext; //voss context
2157
2158} tAniGetRssiReq, *tpAniGetRssiReq;
2159
Madan Mohan Koyyalamudid9383fd2013-08-13 09:27:30 +05302160typedef struct sAniGetSnrReq
2161{
2162 // Common for all types are requests
2163 tANI_U16 msgType; // message type is same as the request type
2164 tANI_U16 msgLen; // length of the entire request
2165 tANI_U8 sessionId;
2166 tANI_U8 staId;
2167 void *snrCallback;
2168 void *pDevContext; //device context
2169} tAniGetSnrReq, *tpAniGetSnrReq;
2170
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002171#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08002172typedef struct sAniGetRoamRssiRsp
2173{
2174 // Common for all types are responses
2175 tANI_U16 msgType; // message type is same as the request type
2176 tANI_U16 msgLen; // length of the entire request, includes the pStatsBuf length too
2177 tANI_U8 sessionId;
2178 tANI_U32 rc; //success/failure
2179 tANI_U32 staId; // Per STA stats request must contain valid
2180 tANI_S8 rssi;
2181 void *rssiReq; //rssi request backup
2182
2183} tAniGetRoamRssiRsp, *tpAniGetRoamRssiRsp;
2184
2185#endif
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002186
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002187#if defined(FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_ESE_UPLOAD)
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002188
2189typedef struct sSirTsmIE
2190{
2191 tANI_U8 tsid;
2192 tANI_U8 state;
2193 tANI_U16 msmt_interval;
2194} tSirTsmIE, *tpSirTsmIE;
2195
2196typedef struct sSirSmeTsmIEInd
2197{
2198 tSirTsmIE tsmIe;
2199 tANI_U8 sessionId;
2200} tSirSmeTsmIEInd, *tpSirSmeTsmIEInd;
2201
2202
2203typedef struct sAniTrafStrmMetrics
2204{
2205 tANI_U16 UplinkPktQueueDly;
2206 tANI_U16 UplinkPktQueueDlyHist[4];
2207 tANI_U32 UplinkPktTxDly;
2208 tANI_U16 UplinkPktLoss;
2209 tANI_U16 UplinkPktCount;
2210 tANI_U8 RoamingCount;
2211 tANI_U16 RoamingDly;
2212} tAniTrafStrmMetrics, *tpAniTrafStrmMetrics;
2213
2214typedef struct sAniGetTsmStatsReq
2215{
2216 // Common for all types are requests
2217 tANI_U16 msgType; // message type is same as the request type
2218 tANI_U16 msgLen; // length of the entire request
2219 tANI_U8 staId;
2220 tANI_U8 tid; // traffic id
2221 tSirMacAddr bssId;
2222 void *tsmStatsCallback;
2223 void *pDevContext; //device context
2224 void *pVosContext; //voss context
2225} tAniGetTsmStatsReq, *tpAniGetTsmStatsReq;
2226
2227typedef struct sAniGetTsmStatsRsp
2228{
2229 // Common for all types are responses
2230 tANI_U16 msgType; // message type is same as the request type
2231 tANI_U16 msgLen; // length of the entire request, includes the pStatsBuf length too
2232 tANI_U8 sessionId;
2233 tANI_U32 rc; //success/failure
2234 tANI_U32 staId; // Per STA stats request must contain valid
2235 tAniTrafStrmMetrics tsmMetrics;
2236 void *tsmStatsReq; //tsm stats request backup
2237} tAniGetTsmStatsRsp, *tpAniGetTsmStatsRsp;
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08002238
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002239typedef struct sSirEseBcnReportBssInfo
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08002240{
2241 tBcnReportFields bcnReportFields;
2242 tANI_U8 ieLen;
2243 tANI_U8 *pBuf;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002244} tSirEseBcnReportBssInfo, *tpSirEseBcnReportBssInfo;
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08002245
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002246typedef struct sSirEseBcnReportRsp
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08002247{
2248 tANI_U16 measurementToken;
2249 tANI_U8 flag; /* Flag to report measurement done and more data */
2250 tANI_U8 numBss;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002251 tSirEseBcnReportBssInfo bcnRepBssInfo[SIR_BCN_REPORT_MAX_BSS_DESC];
2252} tSirEseBcnReportRsp, *tpSirEseBcnReportRsp;
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08002253
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002254#endif /* FEATURE_WLAN_ESE || FEATURE_WLAN_ESE_UPLOAD */
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256/* Change country code request MSG structure */
2257typedef struct sAniChangeCountryCodeReq
2258{
2259 // Common for all types are requests
2260 tANI_U16 msgType; // message type is same as the request type
2261 tANI_U16 msgLen; // length of the entire request
2262 tANI_U8 countryCode[WNI_CFG_COUNTRY_CODE_LEN]; //3 char country code
Gopichand Nakkalaacd94112013-05-29 21:37:47 +05302263 tAniBool countryFromUserSpace;
Abhishek Singha306a442013-11-07 18:39:01 +05302264 tAniBool sendRegHint; //TRUE if we want to send hint to NL80211
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 void *changeCCCallback;
2266 void *pDevContext; //device context
2267 void *pVosContext; //voss context
Amar Singhal0d15bd52013-10-12 23:13:13 -07002268
Jeff Johnson295189b2012-06-20 16:38:30 -07002269} tAniChangeCountryCodeReq, *tpAniChangeCountryCodeReq;
2270
Amar Singhal0d15bd52013-10-12 23:13:13 -07002271/* generic country code change request MSG structure */
2272typedef struct sAniGenericChangeCountryCodeReq
2273{
2274 // Common for all types are requests
2275 tANI_U16 msgType; // message type is same as the request type
2276 tANI_U16 msgLen; // length of the entire request
2277 tANI_U8 countryCode[WNI_CFG_COUNTRY_CODE_LEN]; //3 char country code
2278 tANI_U16 domain_index;
Amar Singhal0d15bd52013-10-12 23:13:13 -07002279} tAniGenericChangeCountryCodeReq, *tpAniGenericChangeCountryCodeReq;
2280
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +05302281typedef struct sAniDHCPStopInd
2282{
2283 tANI_U16 msgType; // message type is same as the request type
2284 tANI_U16 msgLen; // length of the entire request
2285 tANI_U8 device_mode; // Mode of the device(ex:STA, AP)
2286 tSirMacAddr macAddr;
2287
2288} tAniDHCPInd, *tpAniDHCPInd;
2289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290typedef struct sAniSummaryStatsInfo
2291{
2292 tANI_U32 retry_cnt[4]; //Total number of packets(per AC) that were successfully transmitted with retries
2293 tANI_U32 multiple_retry_cnt[4];//The number of MSDU packets and MMPDU frames per AC that the 802.11
2294 // station successfully transmitted after more than one retransmission attempt
2295
2296 tANI_U32 tx_frm_cnt[4]; //Total number of packets(per AC) that were successfully transmitted
2297 //(with and without retries, including multi-cast, broadcast)
2298 //tANI_U32 tx_fail_cnt;
2299 //tANI_U32 num_rx_frm_crc_err; //Total number of received frames with CRC Error
2300 //tANI_U32 num_rx_frm_crc_ok; //Total number of successfully received frames with out CRC Error
2301 tANI_U32 rx_frm_cnt; //Total number of packets that were successfully received
2302 //(after appropriate filter rules including multi-cast, broadcast)
2303 tANI_U32 frm_dup_cnt; //Total number of duplicate frames received successfully
2304 tANI_U32 fail_cnt[4]; //Total number packets(per AC) failed to transmit
2305 tANI_U32 rts_fail_cnt; //Total number of RTS/CTS sequence failures for transmission of a packet
2306 tANI_U32 ack_fail_cnt; //Total number packets failed transmit because of no ACK from the remote entity
2307 tANI_U32 rts_succ_cnt; //Total number of RTS/CTS sequence success for transmission of a packet
2308 tANI_U32 rx_discard_cnt; //The sum of the receive error count and dropped-receive-buffer error count.
2309 //HAL will provide this as a sum of (FCS error) + (Fail get BD/PDU in HW)
2310 tANI_U32 rx_error_cnt; //The receive error count. HAL will provide the RxP FCS error global counter.
2311 tANI_U32 tx_byte_cnt; //The sum of the transmit-directed byte count, transmit-multicast byte count
2312 //and transmit-broadcast byte count. HAL will sum TPE UC/MC/BCAST global counters
2313 //to provide this.
2314#if 0
2315 //providing the following stats, in case of wrap around for tx_byte_cnt
2316 tANI_U32 tx_unicast_lower_byte_cnt;
2317 tANI_U32 tx_unicast_upper_byte_cnt;
2318 tANI_U32 tx_multicast_lower_byte_cnt;
2319 tANI_U32 tx_multicast_upper_byte_cnt;
2320 tANI_U32 tx_broadcast_lower_byte_cnt;
2321 tANI_U32 tx_broadcast_upper_byte_cnt;
2322#endif
2323
2324}tAniSummaryStatsInfo, *tpAniSummaryStatsInfo;
2325
2326typedef enum eTxRateInfo
2327{
2328 eHAL_TX_RATE_LEGACY = 0x1, /* Legacy rates */
2329 eHAL_TX_RATE_HT20 = 0x2, /* HT20 rates */
2330 eHAL_TX_RATE_HT40 = 0x4, /* HT40 rates */
2331 eHAL_TX_RATE_SGI = 0x8, /* Rate with Short guard interval */
Leo Chang6f8870f2013-03-26 18:11:36 -07002332 eHAL_TX_RATE_LGI = 0x10, /* Rate with Long guard interval */
2333 eHAL_TX_RATE_VHT20 = 0x20, /* VHT 20 rates */
2334 eHAL_TX_RATE_VHT40 = 0x40, /* VHT 40 rates */
2335 eHAL_TX_RATE_VHT80 = 0x80 /* VHT 80 rates */
Jeff Johnson295189b2012-06-20 16:38:30 -07002336} tTxrateinfoflags;
2337
2338typedef struct sAniGlobalClassAStatsInfo
2339{
2340 tANI_U32 rx_frag_cnt; //The number of MPDU frames received by the 802.11 station for MSDU packets
2341 //or MMPDU frames
2342 tANI_U32 promiscuous_rx_frag_cnt; //The number of MPDU frames received by the 802.11 station for MSDU packets
2343 //or MMPDU frames when a promiscuous packet filter was enabled
2344 //tANI_U32 rx_fcs_err; //The number of MPDU frames that the 802.11 station received with FCS errors
2345 tANI_U32 rx_input_sensitivity; //The receiver input sensitivity referenced to a FER of 8% at an MPDU length
2346 //of 1024 bytes at the antenna connector. Each element of the array shall correspond
2347 //to a supported rate and the order shall be the same as the supporteRates parameter.
2348 tANI_U32 max_pwr; //The maximum transmit power in dBm upto one decimal.
2349 //for eg: if it is 10.5dBm, the value would be 105
2350 //tANI_U32 default_pwr; //The nominal transmit level used after normal power on sequence
2351 tANI_U32 sync_fail_cnt; //Number of times the receiver failed to synchronize with the incoming signal
2352 //after detecting the sync in the preamble of the transmitted PLCP protocol data unit.
2353 tANI_U32 tx_rate; //Legacy transmit rate, in units of
2354 //500 kbit/sec, for the most
2355 //recently transmitted frame
2356 tANI_U32 mcs_index; //mcs index for HT20 and HT40 rates
2357 tANI_U32 tx_rate_flags; //to differentiate between HT20 and
2358 //HT40 rates; short and long guard interval
2359
2360}tAniGlobalClassAStatsInfo, *tpAniGlobalClassAStatsInfo;
2361
2362
2363typedef struct sAniGlobalSecurityStats
2364{
2365 tANI_U32 rx_wep_unencrypted_frm_cnt; //The number of unencrypted received MPDU frames that the MAC layer discarded when
2366 //the IEEE 802.11 dot11ExcludeUnencrypted management information base (MIB) object
2367 //is enabled
2368 tANI_U32 rx_mic_fail_cnt; //The number of received MSDU packets that that the 802.11 station discarded
2369 //because of MIC failures
2370 tANI_U32 tkip_icv_err; //The number of encrypted MPDU frames that the 802.11 station failed to decrypt
2371 //because of a TKIP ICV error
2372 tANI_U32 aes_ccmp_format_err; //The number of received MPDU frames that the 802.11 discarded because of an
2373 //invalid AES-CCMP format
2374 tANI_U32 aes_ccmp_replay_cnt; //The number of received MPDU frames that the 802.11 station discarded because of
2375 //the AES-CCMP replay protection procedure
2376 tANI_U32 aes_ccmp_decrpt_err; //The number of received MPDU frames that the 802.11 station discarded because of
2377 //errors detected by the AES-CCMP decryption algorithm
2378 tANI_U32 wep_undecryptable_cnt; //The number of encrypted MPDU frames received for which a WEP decryption key was
2379 //not available on the 802.11 station
2380 tANI_U32 wep_icv_err; //The number of encrypted MPDU frames that the 802.11 station failed to decrypt
2381 //because of a WEP ICV error
2382 tANI_U32 rx_decrypt_succ_cnt; //The number of received encrypted packets that the 802.11 station successfully
2383 //decrypted
2384 tANI_U32 rx_decrypt_fail_cnt; //The number of encrypted packets that the 802.11 station failed to decrypt
2385
2386}tAniGlobalSecurityStats, *tpAniGlobalSecurityStats;
2387
2388typedef struct sAniGlobalClassBStatsInfo
2389{
2390 tAniGlobalSecurityStats ucStats;
2391 tAniGlobalSecurityStats mcbcStats;
2392}tAniGlobalClassBStatsInfo, *tpAniGlobalClassBStatsInfo;
2393
2394typedef struct sAniGlobalClassCStatsInfo
2395{
2396 tANI_U32 rx_amsdu_cnt; //This counter shall be incremented for a received A-MSDU frame with the stations
2397 //MAC address in the address 1 field or an A-MSDU frame with a group address in the
2398 //address 1 field
2399 tANI_U32 rx_ampdu_cnt; //This counter shall be incremented when the MAC receives an AMPDU from the PHY
2400 tANI_U32 tx_20_frm_cnt; //This counter shall be incremented when a Frame is transmitted only on the
2401 //primary channel
2402 tANI_U32 rx_20_frm_cnt; //This counter shall be incremented when a Frame is received only on the primary channel
2403 tANI_U32 rx_mpdu_in_ampdu_cnt; //This counter shall be incremented by the number of MPDUs received in the A-MPDU
2404 //when an A-MPDU is received
2405 tANI_U32 ampdu_delimiter_crc_err;//This counter shall be incremented when an MPDU delimiter has a CRC error when this
2406 //is the first CRC error in the received AMPDU or when the previous delimiter has been
2407 //decoded correctly
2408
2409}tAniGlobalClassCStatsInfo, *tpAniGlobalClassCStatsInfo;
2410
2411typedef struct sAniPerStaStatsInfo
2412{
2413 tANI_U32 tx_frag_cnt[4]; //The number of MPDU frames that the 802.11 station transmitted and acknowledged
2414 //through a received 802.11 ACK frame
2415 tANI_U32 tx_ampdu_cnt; //This counter shall be incremented when an A-MPDU is transmitted
2416 tANI_U32 tx_mpdu_in_ampdu_cnt; //This counter shall increment by the number of MPDUs in the AMPDU when an A-MPDU
2417 //is transmitted
2418
2419}tAniPerStaStatsInfo, *tpAniPerStaStatsInfo;
2420
2421/**********************PE Statistics end*************************/
2422
2423
2424
2425typedef struct sSirRSSIThresholds
2426{
2427#ifdef ANI_BIG_BYTE_ENDIAN
2428 tANI_S8 ucRssiThreshold1 : 8;
2429 tANI_S8 ucRssiThreshold2 : 8;
2430 tANI_S8 ucRssiThreshold3 : 8;
2431 tANI_U8 bRssiThres1PosNotify : 1;
2432 tANI_U8 bRssiThres1NegNotify : 1;
2433 tANI_U8 bRssiThres2PosNotify : 1;
2434 tANI_U8 bRssiThres2NegNotify : 1;
2435 tANI_U8 bRssiThres3PosNotify : 1;
2436 tANI_U8 bRssiThres3NegNotify : 1;
2437 tANI_U8 bReserved10 : 2;
2438#else
2439 tANI_U8 bReserved10 : 2;
2440 tANI_U8 bRssiThres3NegNotify : 1;
2441 tANI_U8 bRssiThres3PosNotify : 1;
2442 tANI_U8 bRssiThres2NegNotify : 1;
2443 tANI_U8 bRssiThres2PosNotify : 1;
2444 tANI_U8 bRssiThres1NegNotify : 1;
2445 tANI_U8 bRssiThres1PosNotify : 1;
2446 tANI_S8 ucRssiThreshold3 : 8;
2447 tANI_S8 ucRssiThreshold2 : 8;
2448 tANI_S8 ucRssiThreshold1 : 8;
2449#endif
2450
2451}tSirRSSIThresholds, *tpSirRSSIThresholds;
2452
2453typedef struct sSirRSSINotification
2454{
2455#ifdef ANI_BIG_BYTE_ENDIAN
2456 tANI_U32 bRssiThres1PosCross : 1;
2457 tANI_U32 bRssiThres1NegCross : 1;
2458 tANI_U32 bRssiThres2PosCross : 1;
2459 tANI_U32 bRssiThres2NegCross : 1;
2460 tANI_U32 bRssiThres3PosCross : 1;
2461 tANI_U32 bRssiThres3NegCross : 1;
Srinivasdaaec712012-12-12 15:59:44 -08002462 v_S7_t avgRssi : 8;
2463 tANI_U32 bReserved : 18;
Jeff Johnson295189b2012-06-20 16:38:30 -07002464#else
Srinivasdaaec712012-12-12 15:59:44 -08002465 tANI_U32 bReserved : 18;
2466 v_S7_t avgRssi : 8;
Jeff Johnson295189b2012-06-20 16:38:30 -07002467 tANI_U32 bRssiThres3NegCross : 1;
2468 tANI_U32 bRssiThres3PosCross : 1;
2469 tANI_U32 bRssiThres2NegCross : 1;
2470 tANI_U32 bRssiThres2PosCross : 1;
2471 tANI_U32 bRssiThres1NegCross : 1;
2472 tANI_U32 bRssiThres1PosCross : 1;
2473#endif
2474
2475}tSirRSSINotification, *tpSirRSSINotification;
2476
Viral Modid86bde22012-12-10 13:09:21 -08002477
2478typedef struct sSirP2PNoaStart
2479{
2480 tANI_U32 status;
2481 tANI_U32 bssIdx;
2482} tSirP2PNoaStart, *tpSirP2PNoaStart;
2483
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05302484typedef struct sSirTdlsInd
2485{
2486 tANI_U16 status;
2487 tANI_U16 assocId;
2488 tANI_U16 staIdx;
2489 tANI_U16 reasonCode;
2490} tSirTdlsInd, *tpSirTdlsInd;
2491
Jeff Johnson295189b2012-06-20 16:38:30 -07002492typedef struct sSirP2PNoaAttr
2493{
2494#ifdef ANI_BIG_BYTE_ENDIAN
2495 tANI_U32 index :8;
2496 tANI_U32 oppPsFlag :1;
2497 tANI_U32 ctWin :7;
2498 tANI_U32 rsvd1: 16;
2499#else
2500 tANI_U32 rsvd1: 16;
2501 tANI_U32 ctWin :7;
2502 tANI_U32 oppPsFlag :1;
2503 tANI_U32 index :8;
2504#endif
2505
2506#ifdef ANI_BIG_BYTE_ENDIAN
2507 tANI_U32 uNoa1IntervalCnt:8;
2508 tANI_U32 rsvd2:24;
2509#else
2510 tANI_U32 rsvd2:24;
2511 tANI_U32 uNoa1IntervalCnt:8;
2512#endif
2513 tANI_U32 uNoa1Duration;
2514 tANI_U32 uNoa1Interval;
2515 tANI_U32 uNoa1StartTime;
2516
2517#ifdef ANI_BIG_BYTE_ENDIAN
2518 tANI_U32 uNoa2IntervalCnt:8;
2519 tANI_U32 rsvd3:24;
2520#else
2521 tANI_U32 rsvd3:24;
2522 tANI_U32 uNoa2IntervalCnt:8;
2523#endif
2524 tANI_U32 uNoa2Duration;
2525 tANI_U32 uNoa2Interval;
2526 tANI_U32 uNoa2StartTime;
2527} tSirP2PNoaAttr, *tpSirP2PNoaAttr;
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529typedef __ani_attr_pre_packed struct sSirTclasInfo
2530{
2531 tSirMacTclasIE tclas;
2532 tANI_U8 version; // applies only for classifier type ip
2533 __ani_attr_pre_packed union {
2534 tSirMacTclasParamEthernet eth;
2535 tSirMacTclasParamIPv4 ipv4;
2536 tSirMacTclasParamIPv6 ipv6;
2537 tSirMacTclasParam8021dq t8021dq;
2538 }__ani_attr_packed tclasParams;
2539} __ani_attr_packed tSirTclasInfo;
2540
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002541
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002542#if defined(FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_ESE_UPLOAD)
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002543#define TSRS_11AG_RATE_6MBPS 0xC
2544#define TSRS_11B_RATE_5_5MBPS 0xB
2545
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002546typedef struct sSirMacESETSRSIE
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002547{
2548 tANI_U8 tsid;
2549 tANI_U8 rates[8];
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002550} tSirMacESETSRSIE;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002551
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002552typedef struct sSirMacESETSMIE
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002553{
2554 tANI_U8 tsid;
2555 tANI_U8 state;
2556 tANI_U16 msmt_interval;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002557} tSirMacESETSMIE;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002558
2559typedef struct sTSMStats
2560{
2561 tANI_U8 tid;
2562 tSirMacAddr bssId;
2563 tTrafStrmMetrics tsmMetrics;
2564} tTSMStats, *tpTSMStats;
2565
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002566typedef struct sEseTSMContext
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002567{
2568 tANI_U8 tid;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002569 tSirMacESETSMIE tsmInfo;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002570 tTrafStrmMetrics tsmMetrics;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002571} tEseTSMContext, *tpEseTSMContext;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002572
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002573typedef struct sEsePEContext
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002574{
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002575#if defined(FEATURE_WLAN_ESE) && !defined(FEATURE_WLAN_ESE_UPLOAD)
2576 tEseMeasReq curMeasReq;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002577#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002578 tEseTSMContext tsm;
2579} tEsePEContext, *tpEsePEContext;
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002580
2581
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002582#endif /* FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */
Srinivas Girigowda5cecb202013-10-08 09:13:25 -07002583
2584
Jeff Johnson295189b2012-06-20 16:38:30 -07002585typedef struct sSirAddtsReqInfo
2586{
2587 tANI_U8 dialogToken;
2588 tSirMacTspecIE tspec;
2589
2590 tANI_U8 numTclas; // number of Tclas elements
2591 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
2592 tANI_U8 tclasProc;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002593#if defined(FEATURE_WLAN_ESE)
2594 tSirMacESETSRSIE tsrsIE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 tANI_U8 tsrsPresent:1;
2596#endif
2597 tANI_U8 wmeTspecPresent:1;
2598 tANI_U8 wsmTspecPresent:1;
2599 tANI_U8 lleTspecPresent:1;
2600 tANI_U8 tclasProcPresent:1;
2601} tSirAddtsReqInfo, *tpSirAddtsReqInfo;
2602
2603typedef struct sSirAddtsRspInfo
2604{
2605 tANI_U8 dialogToken;
2606 tSirMacStatusCodes status;
2607 tSirMacTsDelayIE delay;
2608
2609 tSirMacTspecIE tspec;
2610 tANI_U8 numTclas; // number of Tclas elements
2611 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
2612 tANI_U8 tclasProc;
2613 tSirMacScheduleIE schedule;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002614#if defined(FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_ESE_UPLOAD)
2615 tSirMacESETSMIE tsmIE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 tANI_U8 tsmPresent:1;
2617#endif
2618 tANI_U8 wmeTspecPresent:1;
2619 tANI_U8 wsmTspecPresent:1;
2620 tANI_U8 lleTspecPresent:1;
2621 tANI_U8 tclasProcPresent:1;
2622 tANI_U8 schedulePresent:1;
2623} tSirAddtsRspInfo, *tpSirAddtsRspInfo;
2624
2625typedef struct sSirDeltsReqInfo
2626{
2627 tSirMacTSInfo tsinfo;
2628 tSirMacTspecIE tspec;
2629 tANI_U8 wmeTspecPresent:1;
2630 tANI_U8 wsmTspecPresent:1;
2631 tANI_U8 lleTspecPresent:1;
2632} tSirDeltsReqInfo, *tpSirDeltsReqInfo;
2633
2634/// Add a tspec as defined
2635typedef struct sSirAddtsReq
2636{
2637 tANI_U16 messageType; // eWNI_SME_ADDTS_REQ
2638 tANI_U16 length;
2639 tANI_U8 sessionId; //Session ID
2640 tANI_U16 transactionId;
2641 tSirMacAddr bssId; //BSSID
2642 tANI_U32 timeout; // in ms
2643 tANI_U8 rspReqd;
2644 tSirAddtsReqInfo req;
2645} tSirAddtsReq, *tpSirAddtsReq;
2646
2647typedef struct sSirAddtsRsp
2648{
2649 tANI_U16 messageType; // eWNI_SME_ADDTS_RSP
2650 tANI_U16 length;
2651 tANI_U8 sessionId; // sme sessionId Added for BT-AMP support
2652 tANI_U16 transactionId; //sme transaction Id Added for BT-AMP Support
2653 tANI_U32 rc; // return code
2654 tSirAddtsRspInfo rsp;
2655} tSirAddtsRsp, *tpSirAddtsRsp;
2656
2657typedef struct sSirDeltsReq
2658{
2659 tANI_U16 messageType; // eWNI_SME_DELTS_REQ
2660 tANI_U16 length;
2661 tANI_U8 sessionId;//Session ID
2662 tANI_U16 transactionId;
2663 tSirMacAddr bssId; //BSSID
2664 tANI_U16 aid; // use 0 if macAddr is being specified
2665 tANI_U8 macAddr[6]; // only on AP to specify the STA
2666 tANI_U8 rspReqd;
2667 tSirDeltsReqInfo req;
2668} tSirDeltsReq, *tpSirDeltsReq;
2669
2670typedef struct sSirDeltsRsp
2671{
2672 tANI_U16 messageType; // eWNI_SME_DELTS_RSP
2673 tANI_U16 length;
2674 tANI_U8 sessionId; // sme sessionId Added for BT-AMP support
2675 tANI_U16 transactionId; //sme transaction Id Added for BT-AMP Support
2676 tANI_U32 rc;
2677 tANI_U16 aid; // use 0 if macAddr is being specified
2678 tANI_U8 macAddr[6]; // only on AP to specify the STA
2679 tSirDeltsReqInfo rsp;
2680} tSirDeltsRsp, *tpSirDeltsRsp;
2681
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002682#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07002683
2684#define SIR_QOS_NUM_TSPEC_MAX 2
2685#define SIR_QOS_NUM_AC_MAX 4
2686
2687typedef struct sSirAggrQosReqInfo
2688{
2689 tANI_U16 tspecIdx;
2690 tSirAddtsReqInfo aggrAddTsInfo[SIR_QOS_NUM_AC_MAX];
2691}tSirAggrQosReqInfo, *tpSirAggrQosReqInfo;
2692
2693typedef struct sSirAggrQosReq
2694{
2695 tANI_U16 messageType; // eWNI_SME_ADDTS_REQ
2696 tANI_U16 length;
2697 tANI_U8 sessionId; //Session ID
2698 tANI_U16 transactionId;
2699 tSirMacAddr bssId; //BSSID
2700 tANI_U32 timeout; // in ms
2701 tANI_U8 rspReqd;
2702 tSirAggrQosReqInfo aggrInfo;
2703}tSirAggrQosReq, *tpSirAggrQosReq;
2704
2705typedef struct sSirAggrQosRspInfo
2706{
2707 tANI_U16 tspecIdx;
2708 tSirAddtsRspInfo aggrRsp[SIR_QOS_NUM_AC_MAX];
2709} tSirAggrQosRspInfo, *tpSirAggrQosRspInfo;
2710
2711typedef struct sSirAggrQosRsp
2712{
2713 tANI_U16 messageType;
2714 tANI_U16 length;
2715 tANI_U8 sessionId;
2716 tSirAggrQosRspInfo aggrInfo;
2717} tSirAggrQosRsp, *tpSirAggrQosRsp;
2718
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002719#endif/*WLAN_FEATURE_VOWIFI_11R || FEATURE_WLAN_ESE*/
Jeff Johnson295189b2012-06-20 16:38:30 -07002720
2721typedef struct sSirSetTxPowerReq
2722{
schang86c22c42013-03-13 18:41:24 -07002723 tANI_U16 messageType;
2724 tANI_U16 length;
2725 tSirMacAddr bssId;
2726 tANI_U8 mwPower;
2727 tANI_U8 bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07002728} tSirSetTxPowerReq, *tpSirSetTxPowerReq;
2729
2730typedef struct sSirSetTxPowerRsp
2731{
2732 tANI_U16 messageType;
2733 tANI_U16 length;
2734 tANI_U32 status;
2735} tSirSetTxPowerRsp, *tpSirSetTxPowerRsp;
2736
2737typedef struct sSirGetTxPowerReq
2738{
2739 tANI_U16 messageType;
2740 tANI_U16 length;
2741 tANI_U16 staid;
2742} tSirGetTxPowerReq, *tpSirGetTxPowerReq;
2743
2744typedef struct sSirGetTxPowerRsp
2745{
2746 tANI_U16 messageType;
2747 tANI_U16 length; // length of the entire request
2748 tANI_U32 power; // units of milliwatts
2749 tANI_U32 status;
2750} tSirGetTxPowerRsp, *tpSirGetTxPowerRsp;
2751
2752
2753typedef tANI_U32 tSirMacNoise[3];
2754
2755typedef struct sSirGetNoiseRsp
2756{
2757 tANI_U16 messageType;
2758 tANI_U16 length;
2759 tSirMacNoise noise;
2760} tSirGetNoiseRsp, *tpSirGetNoiseRsp;
2761
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07002762typedef struct sSirQosMapSet
2763{
2764 tANI_U8 present;
2765 tANI_U8 num_dscp_exceptions;
2766 tANI_U8 dscp_exceptions[21][2];
Leela Venkata Kiran Kumar Reddy Chiralafddf3552014-06-11 17:16:30 -07002767 tANI_U8 dscp_range[8][2];
Leela Venkata Kiran Kumar Reddy Chirala8e69fbc2013-10-30 18:51:13 -07002768} tSirQosMapSet, *tpSirQosMapSet;
Jeff Johnson295189b2012-06-20 16:38:30 -07002769
2770//
2771// PMC --> PE --> HAL
2772// Power save configuration parameters
2773//
2774typedef struct sSirPowerSaveCfg
2775{
2776 tANI_U16 listenInterval;
2777
2778 /* Number of consecutive missed beacons before
2779 * hardware generates an interrupt to wake up
2780 * the host. In units of listen interval.
2781 */
2782 tANI_U32 HeartBeatCount;
2783
2784 /* specifies which beacons are to be forwarded
2785 * to host when beacon filtering is enabled.
2786 * In units of listen interval.
2787 */
2788 tANI_U32 nthBeaconFilter;
2789
2790 /* Maximum number of PS-Poll send before
2791 * firmware sends data null with PM set to 0.
2792 */
2793 tANI_U32 maxPsPoll;
2794
2795 /* If the average RSSI value falls below the
2796 * minRssiThreshold, then FW will send an
2797 * interrupt to wake up the host.
2798 */
2799 tANI_U32 minRssiThreshold;
2800
2801 /* Number of beacons for which firmware will
2802 * collect the RSSI values and compute the average.
2803 */
2804 tANI_U8 numBeaconPerRssiAverage;
2805
2806 /* FW collects the RSSI stats for this period
2807 * in BMPS mode.
2808 */
2809 tANI_U8 rssiFilterPeriod;
2810
2811 // Enabling/disabling broadcast frame filter feature
2812 tANI_U8 broadcastFrameFilter;
2813
2814 // Enabling/disabling the ignore DTIM feature
2815 tANI_U8 ignoreDtim;
2816
2817 /* The following configuration parameters are kept
2818 * in order to be backward compatible for Gen5.
2819 * These will NOT be used for Gen6 Libra chip
2820 */
2821 tBeaconForwarding beaconFwd;
2822 tANI_U16 nthBeaconFwd;
2823 tANI_U8 fEnablePwrSaveImmediately;
2824 tANI_U8 fPSPoll;
2825
2826 // Enabling/disabling Beacon Early Termination feature
2827 tANI_U8 fEnableBeaconEarlyTermination;
2828 tANI_U8 bcnEarlyTermWakeInterval;
2829
2830}tSirPowerSaveCfg, *tpSirPowerSaveCfg;
2831
2832/* Reason code for requesting Full Power. This reason code is used by
2833 any module requesting full power from PMC and also by PE when it
2834 sends the eWNI_PMC_EXIT_BMPS_IND to PMC*/
2835typedef enum eRequestFullPowerReason
2836{
2837 eSME_MISSED_BEACON_IND_RCVD, /* PE received a MAX_MISSED_BEACON_IND */
2838 eSME_BMPS_STATUS_IND_RCVD, /* PE received a SIR_HAL_BMPS_STATUS_IND */
2839 eSME_BMPS_MODE_DISABLED, /* BMPS mode was disabled by HDD in SME */
2840 eSME_LINK_DISCONNECTED_BY_HDD, /* Link has been disconnected requested by HDD */
2841 eSME_LINK_DISCONNECTED_BY_OTHER,/* Disconnect due to linklost or requested by peer */
2842 eSME_FULL_PWR_NEEDED_BY_HDD, /* HDD request full power for some reason */
2843 eSME_FULL_PWR_NEEDED_BY_BAP, /* BAP request full power for BT_AMP */
2844 eSME_FULL_PWR_NEEDED_BY_CSR, /* CSR requests full power */
2845 eSME_FULL_PWR_NEEDED_BY_QOS, /* QOS requests full power */
2846 eSME_FULL_PWR_NEEDED_BY_CHANNEL_SWITCH, /* channel switch request full power*/
Mohit Khanna698ba2a2012-12-04 15:08:18 -08002847#ifdef FEATURE_WLAN_TDLS
2848 eSME_FULL_PWR_NEEDED_BY_TDLS_PEER_SETUP, /* TDLS peer setup*/
2849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 eSME_REASON_OTHER /* No specific reason. General reason code */
2851} tRequestFullPowerReason, tExitBmpsReason;
2852
2853
2854
2855//This is sent alongwith eWNI_PMC_EXIT_BMPS_REQ message
2856typedef struct sExitBmpsInfo
2857{
2858 tExitBmpsReason exitBmpsReason; /*Reason for exiting BMPS */
2859}tExitBmpsInfo, *tpExitBmpsInfo;
2860
2861
2862// MAC SW --> SME
2863// Message indicating to SME to exit BMPS sleep mode
2864typedef struct sSirSmeExitBmpsInd
2865{
2866 tANI_U16 mesgType; /* eWNI_PMC_EXIT_BMPS_IND */
2867 tANI_U16 mesgLen;
2868 tSirResultCodes statusCode;
2869 tExitBmpsReason exitBmpsReason; /*Reason for exiting BMPS */
2870
2871} tSirSmeExitBmpsInd, *tpSirSmeExitBmpsInd;
2872
2873
2874//
2875// HDD -> LIM
2876// tSirMsgQ.type = eWNI_SME_DEL_BA_PEER_IND
2877// tSirMsgQ.reserved = 0
2878// tSirMsgQ.body = instance of tDelBAParams
2879//
2880typedef struct sSmeDelBAPeerInd
2881{
2882 // Message Type
2883 tANI_U16 mesgType;
2884
2885 tSirMacAddr bssId;//BSSID
2886
2887 // Message Length
2888 tANI_U16 mesgLen;
2889
2890 // Station Index
2891 tANI_U16 staIdx;
2892
2893 // TID for which the BA session is being deleted
2894 tANI_U8 baTID;
2895
2896 // DELBA direction
2897 // eBA_INITIATOR - Originator
2898 // eBA_RECEIPIENT - Recipient
2899 tANI_U8 baDirection;
2900} tSmeDelBAPeerInd, *tpSmeDelBAPeerInd;
2901
2902typedef struct sSmeIbssPeerInd
2903{
2904 tANI_U16 mesgType;
2905 tANI_U16 mesgLen;
2906 tANI_U8 sessionId;
2907
2908 tSirMacAddr peerAddr;
2909 tANI_U16 staId;
2910
2911 /*The DPU signatures will be sent eventually to TL to help it determine the
2912 association to which a packet belongs to*/
2913 /*Unicast DPU signature*/
2914 tANI_U8 ucastSig;
2915
2916 /*Broadcast DPU signature*/
2917 tANI_U8 bcastSig;
2918
2919 //Beacon will be appended for new Peer indication.
2920}tSmeIbssPeerInd, *tpSmeIbssPeerInd;
2921
Ravi Joshid2ca7c42013-07-23 08:37:49 -07002922typedef struct sSirIbssPeerInactivityInd
2923{
2924 tANI_U8 bssIdx;
2925 tANI_U8 staIdx;
2926 tSirMacAddr peerAddr;
2927}tSirIbssPeerInactivityInd, *tpSirIbssPeerInactivityInd;
2928
2929
Jeff Johnson295189b2012-06-20 16:38:30 -07002930typedef struct sLimScanChn
2931{
2932 tANI_U16 numTimeScan; //how many time this channel is scan
2933 tANI_U8 channelId;
2934}tLimScanChn;
2935
2936typedef struct sSmeGetScanChnRsp
2937{
2938 // Message Type
2939 tANI_U16 mesgType;
2940 // Message Length
2941 tANI_U16 mesgLen;
2942 tANI_U8 sessionId;
2943 tANI_U8 numChn;
2944 tLimScanChn scanChn[1];
2945} tSmeGetScanChnRsp, *tpSmeGetScanChnRsp;
2946
2947typedef struct sLimScanChnInfo
2948{
2949 tANI_U8 numChnInfo; //number of channels in scanChn
2950 tLimScanChn scanChn[SIR_MAX_SUPPORTED_CHANNEL_LIST];
2951}tLimScanChnInfo;
2952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953typedef struct sSirSmeGetAssocSTAsReq
2954{
2955 tANI_U16 messageType; // eWNI_SME_GET_ASSOC_STAS_REQ
2956 tANI_U16 length;
2957 tSirMacAddr bssId; // BSSID
2958 tANI_U16 modId;
2959 void *pUsrContext;
2960 void *pSapEventCallback;
2961 void *pAssocStasArray;// Pointer to allocated memory passed in WLANSAP_GetAssocStations API
2962} tSirSmeGetAssocSTAsReq, *tpSirSmeGetAssocSTAsReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07002963
2964typedef struct sSmeMaxAssocInd
2965{
2966 tANI_U16 mesgType; // eWNI_SME_MAX_ASSOC_EXCEEDED
2967 tANI_U16 mesgLen;
2968 tANI_U8 sessionId;
2969 tSirMacAddr peerMac; // the new peer that got rejected due to softap max assoc limit reached
2970} tSmeMaxAssocInd, *tpSmeMaxAssocInd;
2971
2972/*--------------------------------------------------------------------*/
2973/* BootLoader message definition */
2974/*--------------------------------------------------------------------*/
2975
2976/*--------------------------------------------------------------------*/
2977/* FW image size */
2978/*--------------------------------------------------------------------*/
2979#define SIR_FW_IMAGE_SIZE 146332
2980
2981
2982#define SIR_BOOT_MODULE_ID 1
2983
2984#define SIR_BOOT_SETUP_IND ((SIR_BOOT_MODULE_ID << 8) | 0x11)
2985#define SIR_BOOT_POST_RESULT_IND ((SIR_BOOT_MODULE_ID << 8) | 0x12)
2986#define SIR_BOOT_DNLD_RESULT_IND ((SIR_BOOT_MODULE_ID << 8) | 0x13)
2987#define SIR_BOOT_DNLD_DEV_REQ ((SIR_BOOT_MODULE_ID << 8) | 0x41)
2988#define SIR_BOOT_DNLD_DEV_RSP ((SIR_BOOT_MODULE_ID << 8) | 0x81)
2989#define SIR_BOOT_DNLD_REQ ((SIR_BOOT_MODULE_ID << 8) | 0x42)
2990#define SIR_BOOT_DNLD_RSP ((SIR_BOOT_MODULE_ID << 8) | 0x82)
2991
2992/*--------------------------------------------------------------------*/
2993/* Bootloader message syntax */
2994/*--------------------------------------------------------------------*/
2995
2996// Message header
2997#define SIR_BOOT_MB_HEADER 0
2998#define SIR_BOOT_MB_HEADER2 1
2999
3000#define SIR_BOOT_MSG_HDR_MASK 0xffff0000
3001#define SIR_BOOT_MSG_LEN_MASK 0x0000ffff
3002
3003// BOOT_SETUP_IND parameter indices
3004#define SIR_BOOT_SETUP_IND_MBADDR 2
3005#define SIR_BOOT_SETUP_IND_MBSIZE 3
3006#define SIR_BOOT_SETUP_IND_MEMOPT 4
3007#define SIR_BOOT_SETUP_IND_LEN \
3008 ((SIR_BOOT_SETUP_IND_MEMOPT+1)<<2)
3009
3010// BOOT_POST_RESULT_IND parameter indices
3011#define SIR_BOOT_POST_RESULT_IND_RES 2
3012#define SIR_BOOT_POST_RESULT_IND_LEN \
3013 ((SIR_BOOT_POST_RESULT_IND_RES+1)<<2)
3014
3015#define SIR_BOOT_POST_RESULT_IND_SUCCESS 1
3016#define SIR_BOOT_POST_RESULT_IND_MB_FAILED 2
3017#define SIR_BOOT_POST_RESULT_IND_SDRAM_FAILED 3
3018#define SIR_BOOT_POST_RESULT_IND_ESRAM_FAILED 4
3019
3020
3021// BOOT_DNLD_RESULT_IND parameter indices
3022#define SIR_BOOT_DNLD_RESULT_IND_RES 2
3023#define SIR_BOOT_DNLD_RESULT_IND_LEN \
3024 ((SIR_BOOT_DNLD_RESULT_IND_RES+1)<<2)
3025
3026#define SIR_BOOT_DNLD_RESULT_IND_SUCCESS 1
3027#define SIR_BOOT_DNLD_RESULT_IND_HDR_ERR 2
3028#define SIR_BOOT_DNLD_RESULT_IND_ERR 3
3029
3030// BOOT_DNLD_DEV_REQ
3031#define SIR_BOOT_DNLD_DEV_REQ_SDRAMSIZE 2
3032#define SIR_BOOT_DNLD_DEV_REQ_FLASHSIZE 3
3033#define SIR_BOOT_DNLD_DEV_REQ_LEN \
3034 ((SIR_BOOT_DNLD_DEV_REQ_FLASHSIZE+1)<<2)
3035
3036// BOOT_DNLD_DEV_RSP
3037#define SIR_BOOT_DNLD_DEV_RSP_DEVTYPE 2
3038#define SIR_BOOT_DNLD_DEV_RSP_LEN \
3039 ((SIR_BOOT_DNLD_DEV_RSP_DEVTYPE+1)<<2)
3040
3041#define SIR_BOOT_DNLD_DEV_RSP_SRAM 1
3042#define SIR_BOOT_DNLD_DEV_RSP_FLASH 2
3043
3044// BOOT_DNLD_REQ
3045#define SIR_BOOT_DNLD_REQ_OFFSET 2
3046#define SIR_BOOT_DNLD_REQ_WRADDR 3
3047#define SIR_BOOT_DNLD_REQ_SIZE 4
3048#define SIR_BOOT_DNLD_REQ_LEN ((SIR_BOOT_DNLD_REQ_SIZE+1)<<2)
3049
3050// BOOT_DNLD_RSP
3051#define SIR_BOOT_DNLD_RSP_SIZE 2
3052#define SIR_BOOT_DNLD_RSP_LEN ((SIR_BOOT_DNLD_RSP_SIZE+1)<<2)
3053
Jeff Johnson295189b2012-06-20 16:38:30 -07003054
3055// board capabilities fields are defined here.
3056typedef __ani_attr_pre_packed struct sSirBoardCapabilities
3057{
3058#ifndef ANI_LITTLE_BIT_ENDIAN
3059 tANI_U32 concat:1; // 0 - Concat is not supported, 1 - Concat is supported
3060 tANI_U32 compression:1; // 0 - Compression is not supported, 1 - Compression is supported
3061 tANI_U32 chnlBonding:1; // 0 - Channel Bonding is not supported, 1 - Channel Bonding is supported
3062 tANI_U32 reverseFCS:1; // 0 - Reverse FCS is not supported, 1 - Reverse FCS is supported
3063 tANI_U32 rsvd1:2;
3064 // (productId derives sub-category in the following three families)
3065 tANI_U32 cbFamily:1; // 0 - Not CB family, 1 - Cardbus
3066 tANI_U32 apFamily:1; // 0 - Not AP family, 1 - AP
3067 tANI_U32 mpciFamily:1; // 0 - Not MPCI family, 1 - MPCI
3068 tANI_U32 bgOnly:1; // 0 - default a/b/g; 1 - b/g only
3069 tANI_U32 bbChipVer:4; // Baseband chip version
3070 tANI_U32 loType:2; // 0 = no LO, 1 = SILABS, 2 = ORION
3071 tANI_U32 radioOn:2; // Not supported is 3 or 2, 0 = Off and 1 = On
3072 tANI_U32 nReceivers:2; // 0 based.
3073 tANI_U32 nTransmitters:1; // 0 = 1 transmitter, 1 = 2 transmitters
3074 tANI_U32 sdram:1; // 0 = no SDRAM, 1 = SDRAM
3075 tANI_U32 rsvd:1;
3076 tANI_U32 extVsIntAnt:1; // 0 = ext antenna, 1 = internal antenna
3077#else
3078
3079 tANI_U32 extVsIntAnt:1; // 0 = ext antenna, 1 = internal antenna
3080 tANI_U32 rsvd:1;
3081 tANI_U32 sdram:1; // 0 = no SDRAM, 1 = SDRAM
3082 tANI_U32 nTransmitters:1; // 0 = 1 transmitter, 1 = 2 transmitters
3083 tANI_U32 nReceivers:2; // 0 based.
3084 tANI_U32 radioOn:2; // Not supported is 3 or 2, 0 = Off and 1 = On
3085 tANI_U32 loType:2; // 0 = no LO, 1 = SILABS, 2 = ORION
3086 tANI_U32 bbChipVer:4; // Baseband chip version
3087 tANI_U32 bgOnly:1; // 0 - default a/b/g; 1 - b/g only
3088 // (productId derives sub-category in the following three families)
3089 tANI_U32 mpciFamily:1; // 0 - Not MPCI family, 1 - MPCI
3090 tANI_U32 apFamily:1; // 0 - Not AP family, 1 - AP
3091 tANI_U32 cbFamily:1; // 0 - Not CB family, 1 - Cardbus
3092 tANI_U32 rsvd1:2;
3093 tANI_U32 reverseFCS:1; // 0 - Reverse FCS is not supported, 1 - Reverse FCS is supported
3094 tANI_U32 chnlBonding:1; // 0 - Channel Bonding is not supported, 1 - Channel Bonding is supported
3095 tANI_U32 compression:1; // 0 - Compression is not supported, 1 - Compression is supported
3096 tANI_U32 concat:1; // 0 - Concat is not supported, 1 - Concat is supported
3097#endif
3098} __ani_attr_packed tSirBoardCapabilities, *tpSirBoardCapabilities;
3099
3100# define ANI_BCAP_EXT_VS_INT_ANT_MASK 0x1
3101# define ANI_BCAP_EXT_VS_INT_ANT_OFFSET 0
3102
3103# define ANI_BCAP_GAL_ON_BOARD_MASK 0x2
3104# define ANI_BCAP_GAL_ON_BOARD_OFFSET 1
3105
3106# define ANI_BCAP_SDRAM_MASK 0x4
3107# define ANI_BCAP_SDRAM_OFFSET 2
3108
3109# define ANI_BCAP_NUM_TRANSMITTERS_MASK 0x8
3110# define ANI_BCAP_NUM_TRANSMITTERS_OFFSET 3
3111
3112# define ANI_BCAP_NUM_RECEIVERS_MASK 0x30
3113# define ANI_BCAP_NUM_RECEIVERS_OFFSET 4
3114
3115# define ANI_BCAP_RADIO_ON_MASK 0xC0
3116# define ANI_BCAP_RADIO_ON_OFFSET 6
3117
3118# define ANI_BCAP_LO_TYPE_MASK 0x300
3119# define ANI_BCAP_LO_TYPE_OFFSET 8
3120
3121# define ANI_BCAP_BB_CHIP_VER_MASK 0xC00
3122# define ANI_BCAP_BB_CHIP_VER_OFFSET 10
3123
3124# define ANI_BCAP_CYG_DATE_CODE_MASK 0xFF000
3125# define ANI_BCAP_CYG_DATE_CODE_OFFSET 12
3126
3127# define ANI_BCAP_RADIO_OFF 0
3128# define ANI_BCAP_RADIO_ON 1
3129# define ANI_BCAP_RADIO_ON_NOT_SUPPORTED 3
3130
3131
3132/// WOW related structures
3133// SME -> PE <-> HAL
3134#define SIR_WOWL_BCAST_PATTERN_MAX_SIZE 128
3135#define SIR_WOWL_BCAST_MAX_NUM_PATTERNS 16
3136
3137// SME -> PE -> HAL - This is to add WOWL BCAST wake-up pattern.
3138// SME/HDD maintains the list of the BCAST wake-up patterns.
3139// This is a pass through message for PE
3140typedef struct sSirWowlAddBcastPtrn
3141{
3142 tANI_U8 ucPatternId; // Pattern ID
3143 // Pattern byte offset from beginning of the 802.11 packet to start of the
3144 // wake-up pattern
3145 tANI_U8 ucPatternByteOffset;
3146 tANI_U8 ucPatternSize; // Non-Zero Pattern size
3147 tANI_U8 ucPattern[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Pattern
3148 tANI_U8 ucPatternMaskSize; // Non-zero pattern mask size
3149 tANI_U8 ucPatternMask[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Pattern mask
3150 // Extra pattern data beyond 128 bytes
3151 tANI_U8 ucPatternExt[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Extra Pattern
3152 tANI_U8 ucPatternMaskExt[SIR_WOWL_BCAST_PATTERN_MAX_SIZE]; // Extra Pattern mask
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003153 tSirMacAddr bssId; // BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -07003154} tSirWowlAddBcastPtrn, *tpSirWowlAddBcastPtrn;
3155
3156
3157// SME -> PE -> HAL - This is to delete WOWL BCAST wake-up pattern.
3158// SME/HDD maintains the list of the BCAST wake-up patterns.
3159// This is a pass through message for PE
3160typedef struct sSirWowlDelBcastPtrn
3161{
3162 /* Pattern ID of the wakeup pattern to be deleted */
3163 tANI_U8 ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003164 tSirMacAddr bssId; // BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -07003165}tSirWowlDelBcastPtrn, *tpSirWowlDelBcastPtrn;
3166
3167
3168// SME->PE: Enter WOWLAN parameters
3169typedef struct sSirSmeWowlEnterParams
3170{
3171 /* Enables/disables magic packet filtering */
3172 tANI_U8 ucMagicPktEnable;
3173
3174 /* Magic pattern */
3175 tSirMacAddr magicPtrn;
3176
3177 /* Enables/disables packet pattern filtering */
3178 tANI_U8 ucPatternFilteringEnable;
3179
3180#ifdef WLAN_WAKEUP_EVENTS
3181 /* This configuration directs the WoW packet filtering to look for EAP-ID
3182 * requests embedded in EAPOL frames and use this as a wake source.
3183 */
3184 tANI_U8 ucWoWEAPIDRequestEnable;
3185
3186 /* This configuration directs the WoW packet filtering to look for EAPOL-4WAY
3187 * requests and use this as a wake source.
3188 */
3189 tANI_U8 ucWoWEAPOL4WayEnable;
3190
3191 /* This configuration allows a host wakeup on an network scan offload match.
3192 */
3193 tANI_U8 ucWowNetScanOffloadMatch;
3194
3195 /* This configuration allows a host wakeup on any GTK rekeying error.
3196 */
3197 tANI_U8 ucWowGTKRekeyError;
3198
3199 /* This configuration allows a host wakeup on BSS connection loss.
3200 */
3201 tANI_U8 ucWoWBSSConnLoss;
3202#endif // WLAN_WAKEUP_EVENTS
3203
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003204 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07003205} tSirSmeWowlEnterParams, *tpSirSmeWowlEnterParams;
3206
3207
3208// PE<->HAL: Enter WOWLAN parameters
3209typedef struct sSirHalWowlEnterParams
3210{
3211 /* Enables/disables magic packet filtering */
3212 tANI_U8 ucMagicPktEnable;
3213
3214 /* Magic pattern */
3215 tSirMacAddr magicPtrn;
3216
3217 /* Enables/disables packet pattern filtering in firmware.
3218 Enabling this flag enables broadcast pattern matching
3219 in Firmware. If unicast pattern matching is also desired,
3220 ucUcastPatternFilteringEnable flag must be set tot true
3221 as well
3222 */
3223 tANI_U8 ucPatternFilteringEnable;
3224
3225 /* Enables/disables unicast packet pattern filtering.
3226 This flag specifies whether we want to do pattern match
3227 on unicast packets as well and not just broadcast packets.
3228 This flag has no effect if the ucPatternFilteringEnable
3229 (main controlling flag) is set to false
3230 */
3231 tANI_U8 ucUcastPatternFilteringEnable;
3232
3233 /* This configuration is valid only when magicPktEnable=1.
3234 * It requests hardware to wake up when it receives the
3235 * Channel Switch Action Frame.
3236 */
3237 tANI_U8 ucWowChnlSwitchRcv;
3238
3239 /* This configuration is valid only when magicPktEnable=1.
3240 * It requests hardware to wake up when it receives the
3241 * Deauthentication Frame.
3242 */
3243 tANI_U8 ucWowDeauthRcv;
3244
3245 /* This configuration is valid only when magicPktEnable=1.
3246 * It requests hardware to wake up when it receives the
3247 * Disassociation Frame.
3248 */
3249 tANI_U8 ucWowDisassocRcv;
3250
3251 /* This configuration is valid only when magicPktEnable=1.
3252 * It requests hardware to wake up when it has missed
3253 * consecutive beacons. This is a hardware register
3254 * configuration (NOT a firmware configuration).
3255 */
3256 tANI_U8 ucWowMaxMissedBeacons;
3257
3258 /* This configuration is valid only when magicPktEnable=1.
3259 * This is a timeout value in units of microsec. It requests
3260 * hardware to unconditionally wake up after it has stayed
3261 * in WoWLAN mode for some time. Set 0 to disable this feature.
3262 */
3263 tANI_U8 ucWowMaxSleepUsec;
3264
3265#ifdef WLAN_WAKEUP_EVENTS
3266 /* This configuration directs the WoW packet filtering to look for EAP-ID
3267 * requests embedded in EAPOL frames and use this as a wake source.
3268 */
3269 tANI_U8 ucWoWEAPIDRequestEnable;
3270
3271 /* This configuration directs the WoW packet filtering to look for EAPOL-4WAY
3272 * requests and use this as a wake source.
3273 */
3274 tANI_U8 ucWoWEAPOL4WayEnable;
3275
3276 /* This configuration allows a host wakeup on an network scan offload match.
3277 */
3278 tANI_U8 ucWowNetScanOffloadMatch;
3279
3280 /* This configuration allows a host wakeup on any GTK rekeying error.
3281 */
3282 tANI_U8 ucWowGTKRekeyError;
3283
3284 /* This configuration allows a host wakeup on BSS connection loss.
3285 */
3286 tANI_U8 ucWoWBSSConnLoss;
3287#endif // WLAN_WAKEUP_EVENTS
3288
3289 /* Status code to be filled by HAL when it sends
3290 * SIR_HAL_WOWL_ENTER_RSP to PE.
3291 */
3292 eHalStatus status;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003293
3294 /*BSSID to find the current session
3295 */
3296 tANI_U8 bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07003297} tSirHalWowlEnterParams, *tpSirHalWowlEnterParams;
3298
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003299// PE<->HAL: Exit WOWLAN parameters
3300typedef struct sSirHalWowlExitParams
3301{
3302 /* Status code to be filled by HAL when it sends
3303 * SIR_HAL_WOWL_EXIT_RSP to PE.
3304 */
3305 eHalStatus status;
3306
3307 /*BSSIDX to find the current session
3308 */
3309 tANI_U8 bssIdx;
3310} tSirHalWowlExitParams, *tpSirHalWowlExitParams;
3311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312
3313#define SIR_MAX_NAME_SIZE 64
3314#define SIR_MAX_TEXT_SIZE 32
3315
3316typedef struct sSirName {
3317 v_U8_t num_name;
3318 v_U8_t name[SIR_MAX_NAME_SIZE];
3319} tSirName;
3320
3321typedef struct sSirText {
3322 v_U8_t num_text;
3323 v_U8_t text[SIR_MAX_TEXT_SIZE];
3324} tSirText;
3325
3326
3327#define SIR_WPS_PROBRSP_VER_PRESENT 0x00000001
3328#define SIR_WPS_PROBRSP_STATE_PRESENT 0x00000002
3329#define SIR_WPS_PROBRSP_APSETUPLOCK_PRESENT 0x00000004
3330#define SIR_WPS_PROBRSP_SELECTEDREGISTRA_PRESENT 0x00000008
3331#define SIR_WPS_PROBRSP_DEVICEPASSWORDID_PRESENT 0x00000010
3332#define SIR_WPS_PROBRSP_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020
3333#define SIR_WPS_PROBRSP_RESPONSETYPE_PRESENT 0x00000040
3334#define SIR_WPS_PROBRSP_UUIDE_PRESENT 0x00000080
3335#define SIR_WPS_PROBRSP_MANUFACTURE_PRESENT 0x00000100
3336#define SIR_WPS_PROBRSP_MODELNAME_PRESENT 0x00000200
3337#define SIR_WPS_PROBRSP_MODELNUMBER_PRESENT 0x00000400
3338#define SIR_WPS_PROBRSP_SERIALNUMBER_PRESENT 0x00000800
3339#define SIR_WPS_PROBRSP_PRIMARYDEVICETYPE_PRESENT 0x00001000
3340#define SIR_WPS_PROBRSP_DEVICENAME_PRESENT 0x00002000
3341#define SIR_WPS_PROBRSP_CONFIGMETHODS_PRESENT 0x00004000
3342#define SIR_WPS_PROBRSP_RF_BANDS_PRESENT 0x00008000
3343
3344
3345typedef struct sSirWPSProbeRspIE {
3346 v_U32_t FieldPresent;
3347 v_U32_t Version; // Version. 0x10 = version 1.0, 0x11 = etc.
3348 v_U32_t wpsState; // 1 = unconfigured, 2 = configured.
3349 v_BOOL_t APSetupLocked; // Must be included if value is TRUE
3350 v_BOOL_t SelectedRegistra; //BOOL: indicates if the user has recently activated a Registrar to add an Enrollee.
3351 v_U16_t DevicePasswordID; // Device Password ID
3352 v_U16_t SelectedRegistraCfgMethod; // Selected Registrar config method
3353 v_U8_t ResponseType; // Response type
3354 v_U8_t UUID_E[16]; // Unique identifier of the AP.
3355 tSirName Manufacture;
3356 tSirText ModelName;
3357 tSirText ModelNumber;
3358 tSirText SerialNumber;
3359 v_U32_t PrimaryDeviceCategory ; // Device Category ID: 1Computer, 2Input Device, ...
3360 v_U8_t PrimaryDeviceOUI[4] ; // Vendor specific OUI for Device Sub Category
3361 v_U32_t DeviceSubCategory ; // Device Sub Category ID: 1-PC, 2-Server if Device Category ID is computer
3362 tSirText DeviceName;
3363 v_U16_t ConfigMethod; // Configuaration method
3364 v_U8_t RFBand; // RF bands available on the AP
3365} tSirWPSProbeRspIE;
3366
3367#define SIR_WPS_BEACON_VER_PRESENT 0x00000001
3368#define SIR_WPS_BEACON_STATE_PRESENT 0x00000002
3369#define SIR_WPS_BEACON_APSETUPLOCK_PRESENT 0x00000004
3370#define SIR_WPS_BEACON_SELECTEDREGISTRA_PRESENT 0x00000008
3371#define SIR_WPS_BEACON_DEVICEPASSWORDID_PRESENT 0x00000010
3372#define SIR_WPS_BEACON_SELECTEDREGISTRACFGMETHOD_PRESENT 0x00000020
3373#define SIR_WPS_BEACON_UUIDE_PRESENT 0x00000080
3374#define SIR_WPS_BEACON_RF_BANDS_PRESENT 0x00000100
3375
3376typedef struct sSirWPSBeaconIE {
3377 v_U32_t FieldPresent;
3378 v_U32_t Version; // Version. 0x10 = version 1.0, 0x11 = etc.
3379 v_U32_t wpsState; // 1 = unconfigured, 2 = configured.
3380 v_BOOL_t APSetupLocked; // Must be included if value is TRUE
3381 v_BOOL_t SelectedRegistra; //BOOL: indicates if the user has recently activated a Registrar to add an Enrollee.
3382 v_U16_t DevicePasswordID; // Device Password ID
3383 v_U16_t SelectedRegistraCfgMethod; // Selected Registrar config method
3384 v_U8_t UUID_E[16]; // Unique identifier of the AP.
3385 v_U8_t RFBand; // RF bands available on the AP
3386} tSirWPSBeaconIE;
3387
3388#define SIR_WPS_ASSOCRSP_VER_PRESENT 0x00000001
3389#define SIR_WPS_ASSOCRSP_RESPONSETYPE_PRESENT 0x00000002
3390
3391typedef struct sSirWPSAssocRspIE {
3392 v_U32_t FieldPresent;
3393 v_U32_t Version;
3394 v_U8_t ResposeType;
3395} tSirWPSAssocRspIE;
3396
3397typedef struct sSirAPWPSIEs {
3398 tSirWPSProbeRspIE SirWPSProbeRspIE; /*WPS Set Probe Respose IE*/
3399 tSirWPSBeaconIE SirWPSBeaconIE; /*WPS Set Beacon IE*/
3400 tSirWPSAssocRspIE SirWPSAssocRspIE; /*WPS Set Assoc Response IE*/
3401} tSirAPWPSIEs, *tpSiriAPWPSIEs;
3402
3403typedef struct sSirUpdateAPWPSIEsReq
3404{
3405 tANI_U16 messageType; // eWNI_SME_UPDATE_APWPSIE_REQ
3406 tANI_U16 length;
3407 tANI_U16 transactionId; //Transaction ID for cmd
3408 tSirMacAddr bssId; // BSSID
3409 tANI_U8 sessionId; //Session ID
3410 tSirAPWPSIEs APWPSIEs;
3411} tSirUpdateAPWPSIEsReq, *tpSirUpdateAPWPSIEsReq;
3412
3413typedef struct sSirUpdateParams
3414{
3415 tANI_U16 messageType;
3416 tANI_U16 length;
3417 tANI_U8 sessionId; // Session ID
3418 tANI_U8 ssidHidden; // Hide SSID
3419} tSirUpdateParams, *tpSirUpdateParams;
3420
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -08003421//Beacon Interval
3422typedef struct sSirChangeBIParams
3423{
3424 tANI_U16 messageType;
3425 tANI_U16 length;
3426 tANI_U16 beaconInterval; // Beacon Interval
3427 tSirMacAddr bssId;
3428 tANI_U8 sessionId; // Session ID
3429} tSirChangeBIParams, *tpSirChangeBIParams;
3430
Hardik Kantilal Patel62a3a762014-11-21 12:55:57 +05303431#ifdef WLAN_FEATURE_AP_HT40_24G
3432typedef struct sSirSetHT2040Mode
3433{
3434 tANI_U16 messageType;
3435 tANI_U16 length;
3436 tANI_U8 cbMode;
3437 tSirMacAddr bssId;
3438 tANI_U8 sessionId; // Session ID
3439} tSirSetHT2040Mode, *tpSirSetHT2040Mode;
Hardik Kantilal Patel81f76342014-11-14 12:45:26 -08003440
3441typedef struct sSirHT2040CoexInfoInd
3442{
3443 tANI_U16 messageType; // eWNI_SME_2040_COEX_IND
3444 tANI_U16 length;
3445 tANI_U8 sessionId;
3446 tANI_U8 HT40MHzIntolerant;
3447 tANI_U8 HT20MHzBssWidthReq;
3448 tANI_U8 channel_num;
3449 tANI_U8 HT2040BssIntoChanReport [1]; //variable
3450}tSirHT2040CoexInfoInd, *tpSirHT2040CoexInfoInd;
Hardik Kantilal Patel62a3a762014-11-21 12:55:57 +05303451#endif
3452
Sandeep Puligilla11d49a62014-01-30 12:05:16 +05303453typedef struct sSirOBSSHT40Param
3454{
3455 tANI_U16 OBSSScanPassiveDwellTime;
3456 tANI_U16 OBSSScanActiveDwellTime;
3457 tANI_U16 BSSChannelWidthTriggerScanInterval;
3458 tANI_U16 OBSSScanPassiveTotalPerChannel;
3459 tANI_U16 OBSSScanActiveTotalPerChannel;
3460 tANI_U16 BSSWidthChannelTransitionDelayFactor;
3461 tANI_U16 OBSSScanActivityThreshold;
3462}tSirOBSSHT40Param, *tpOBSSHT40Param;
3463
Jeff Johnson295189b2012-06-20 16:38:30 -07003464#define SIR_WPS_UUID_LEN 16
3465#define SIR_WPS_PBC_WALK_TIME 120 // 120 Second
3466
3467typedef struct sSirWPSPBCSession {
3468 struct sSirWPSPBCSession *next;
3469 tSirMacAddr addr;
3470 tANI_U8 uuid_e[SIR_WPS_UUID_LEN];
3471 tANI_TIMESTAMP timestamp;
3472} tSirWPSPBCSession;
3473
3474typedef struct sSirSmeGetWPSPBCSessionsReq
3475{
3476 tANI_U16 messageType; // eWNI_SME_GET_WPSPBC_SESSION_REQ
3477 tANI_U16 length;
3478 void *pUsrContext;
3479 void *pSapEventCallback;
3480 tSirMacAddr bssId; // BSSID
3481 tSirMacAddr pRemoveMac; // MAC Address of STA in WPS Session to be removed
3482} tSirSmeGetWPSPBCSessionsReq, *tpSirSmeGetWPSPBCSessionsReq;
3483
3484typedef struct sSirWPSPBCProbeReq
3485{
3486 tSirMacAddr peerMacAddr;
3487 tANI_U16 probeReqIELen;
3488 tANI_U8 probeReqIE[512];
3489} tSirWPSPBCProbeReq, *tpSirWPSPBCProbeReq;
3490
3491// probereq from peer, when wsc is enabled
3492typedef struct sSirSmeProbeReqInd
3493{
3494 tANI_U16 messageType; // eWNI_SME_WPS_PBC_PROBE_REQ_IND
3495 tANI_U16 length;
3496 tANI_U8 sessionId;
3497 tSirMacAddr bssId;
3498 tSirWPSPBCProbeReq WPSPBCProbeReq;
3499} tSirSmeProbeReqInd, *tpSirSmeProbeReqInd;
3500
3501typedef struct sSirUpdateAPWPARSNIEsReq
3502{
3503 tANI_U16 messageType; // eWNI_SME_SET_APWPARSNIEs_REQ
3504 tANI_U16 length;
3505 tANI_U16 transactionId; //Transaction ID for cmd
3506 tSirMacAddr bssId; // BSSID
3507 tANI_U8 sessionId; //Session ID
3508 tSirRSNie APWPARSNIEs;
3509} tSirUpdateAPWPARSNIEsReq, *tpSirUpdateAPWPARSNIEsReq;
3510
Manjunathappa Prakash4f1d5a52013-11-11 16:22:19 -08003511#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu52231ea2014-02-06 12:00:56 -08003512#define SIR_ROAM_MAX_CHANNELS 80
Manjunathappa Prakash4f1d5a52013-11-11 16:22:19 -08003513#define SIR_ROAM_SCAN_MAX_PB_REQ_SIZE 450
3514#define CHANNEL_LIST_STATIC 1 /* Occupied channel list remains static */
3515#define CHANNEL_LIST_DYNAMIC_INIT 2 /* Occupied channel list can be learnt after init */
3516#define CHANNEL_LIST_DYNAMIC_FLUSH 3 /* Occupied channel list can be learnt after flush */
3517#define CHANNEL_LIST_DYNAMIC_UPDATE 4 /* Occupied channel list can be learnt after update */
3518#define SIR_ROAM_SCAN_24G_DEFAULT_CH 1
3519#define SIR_ROAM_SCAN_5G_DEFAULT_CH 36
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -08003520
3521/*Adaptive Thresholds to be used for FW based scanning*/
3522#define LFR_SENSITIVITY_THR_1MBPS -89
3523#define LFR_LOOKUP_THR_1MBPS -78
3524#define LFR_SENSITIVITY_THR_2MBPS -87
3525#define LFR_LOOKUP_THR_2MBPS -78
3526#define LFR_SENSITIVITY_THR_5_5MBPS -86
3527#define LFR_LOOKUP_THR_5_5MBPS -77
3528#define LFR_SENSITIVITY_THR_11MBPS -85
3529#define LFR_LOOKUP_THR_11MBPS -76
3530#define LFR_SENSITIVITY_THR_6MBPS_2G -83
3531#define LFR_LOOKUP_THR_6MBPS_2G -78
3532#define LFR_SENSITIVITY_THR_6MBPS_5G -83
3533#define LFR_LOOKUP_THR_6MBPS_5G -78
3534#define LFR_SENSITIVITY_THR_12MBPS_2G -83
3535#define LFR_LOOKUP_THR_12MBPS_2G -78
3536#define LFR_SENSITIVITY_THR_12MBPS_5G -81
3537#define LFR_LOOKUP_THR_12MBPS_5G -76
3538#define LFR_SENSITIVITY_THR_24MBPS_2G -81
3539#define LFR_LOOKUP_THR_24MBPS_2G -76
3540#define LFR_SENSITIVITY_THR_24MBPS_5G -79
3541#define LFR_LOOKUP_THR_24MBPS_5G -74
3542#define LFR_SENSITIVITY_THR_DEFAULT 0
3543#define LFR_LOOKUP_THR_DEFAULT -78
Manjunathappa Prakash4f1d5a52013-11-11 16:22:19 -08003544#endif //WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Jeff Johnson295189b2012-06-20 16:38:30 -07003545
3546// SME -> HAL - This is the host offload request.
3547#define SIR_IPV4_ARP_REPLY_OFFLOAD 0
3548#define SIR_IPV6_NEIGHBOR_DISCOVERY_OFFLOAD 1
3549#define SIR_IPV6_NS_OFFLOAD 2
3550#define SIR_OFFLOAD_DISABLE 0
3551#define SIR_OFFLOAD_ENABLE 1
3552#define SIR_OFFLOAD_BCAST_FILTER_ENABLE 0x2
Madan Mohan Koyyalamudibadffe72013-09-11 13:09:14 +05303553#define SIR_OFFLOAD_MCAST_FILTER_ENABLE 0x4
Jeff Johnson295189b2012-06-20 16:38:30 -07003554#define SIR_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE (SIR_OFFLOAD_ENABLE|SIR_OFFLOAD_BCAST_FILTER_ENABLE)
Madan Mohan Koyyalamudibadffe72013-09-11 13:09:14 +05303555#define SIR_OFFLOAD_NS_AND_MCAST_FILTER_ENABLE (SIR_OFFLOAD_ENABLE|SIR_OFFLOAD_MCAST_FILTER_ENABLE)
Jeff Johnson295189b2012-06-20 16:38:30 -07003556
3557#ifdef WLAN_NS_OFFLOAD
3558typedef struct sSirNsOffloadReq
3559{
3560 tANI_U8 srcIPv6Addr[16];
3561 tANI_U8 selfIPv6Addr[16];
3562 //Only support 2 possible Network Advertisement IPv6 address
3563 tANI_U8 targetIPv6Addr[SIR_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][16];
3564 tANI_U8 selfMacAddr[6];
3565 tANI_U8 srcIPv6AddrValid;
3566 tANI_U8 targetIPv6AddrValid[SIR_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA];
Gopichand Nakkala746a9452013-06-11 12:45:54 +05303567 tANI_U8 slotIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568} tSirNsOffloadReq, *tpSirNsOffloadReq;
3569#endif //WLAN_NS_OFFLOAD
3570
3571typedef struct sSirHostOffloadReq
3572{
3573 tANI_U8 offloadType;
3574 tANI_U8 enableOrDisable;
3575 union
3576 {
3577 tANI_U8 hostIpv4Addr [4];
3578 tANI_U8 hostIpv6Addr [16];
3579 } params;
3580#ifdef WLAN_NS_OFFLOAD
3581 tSirNsOffloadReq nsOffloadInfo;
3582#endif //WLAN_NS_OFFLOAD
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003583 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07003584} tSirHostOffloadReq, *tpSirHostOffloadReq;
3585
3586/* Packet Types. */
3587#define SIR_KEEP_ALIVE_NULL_PKT 1
3588#define SIR_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2
3589
3590/* Enable or disable offload. */
3591#define SIR_KEEP_ALIVE_DISABLE 0
3592#define SIR_KEEP_ALIVE_ENABLE 1
3593
3594/* Keep Alive request. */
3595typedef struct sSirKeepAliveReq
3596{
3597 v_U8_t packetType;
3598 v_U32_t timePeriod;
3599 tSirIpv4Addr hostIpv4Addr;
3600 tSirIpv4Addr destIpv4Addr;
3601 tSirMacAddr destMacAddr;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003602 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07003603} tSirKeepAliveReq, *tpSirKeepAliveReq;
3604
3605typedef struct sSirSmeAddStaSelfReq
3606{
3607 tANI_U16 mesgType;
3608 tANI_U16 mesgLen;
3609 tSirMacAddr selfMacAddr;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -07003610 tVOS_CON_MODE currDeviceMode;
Jeff Johnson295189b2012-06-20 16:38:30 -07003611}tSirSmeAddStaSelfReq, *tpSirSmeAddStaSelfReq;
3612
3613typedef struct sSirSmeDelStaSelfReq
3614{
3615 tANI_U16 mesgType;
3616 tANI_U16 mesgLen;
3617 tSirMacAddr selfMacAddr;
3618}tSirSmeDelStaSelfReq, *tpSirSmeDelStaSelfReq;
3619
3620typedef struct sSirSmeAddStaSelfRsp
3621{
3622 tANI_U16 mesgType;
3623 tANI_U16 mesgLen;
3624 tANI_U16 status;
3625 tSirMacAddr selfMacAddr;
3626}tSirSmeAddStaSelfRsp, *tpSirSmeAddStaSelfRsp;
3627
3628typedef struct sSirSmeDelStaSelfRsp
3629{
3630 tANI_U16 mesgType;
3631 tANI_U16 mesgLen;
3632 tANI_U16 status;
3633 tSirMacAddr selfMacAddr;
3634}tSirSmeDelStaSelfRsp, *tpSirSmeDelStaSelfRsp;
3635
Padma, Santhosh Kumar778d8382015-03-04 17:41:22 +05303636typedef enum DFSChanScanType
3637{
3638 DFS_CHNL_SCAN_DISABLED,
3639 DFS_CHNL_SCAN_ENABLED_NORMAL,
3640 DFS_CHNL_SCAN_ENABLED_ACTIVE
3641}eDFSChanScanType;
3642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643/* Coex Indication defines -
3644 should match WLAN_COEX_IND_DATA_SIZE
3645 should match WLAN_COEX_IND_TYPE_DISABLE_HB_MONITOR
3646 should match WLAN_COEX_IND_TYPE_ENABLE_HB_MONITOR */
3647#define SIR_COEX_IND_DATA_SIZE (4)
3648#define SIR_COEX_IND_TYPE_DISABLE_HB_MONITOR (0)
3649#define SIR_COEX_IND_TYPE_ENABLE_HB_MONITOR (1)
Kiran Kumar Lokere3527f0c2013-02-24 22:21:28 -08003650#define SIR_COEX_IND_TYPE_SCAN_COMPROMISED (2)
3651#define SIR_COEX_IND_TYPE_SCAN_NOT_COMPROMISED (3)
Kiran Kumar Lokere458d7322013-05-29 14:29:43 -07003652#define SIR_COEX_IND_TYPE_DISABLE_AGGREGATION_IN_2p4 (4)
3653#define SIR_COEX_IND_TYPE_ENABLE_AGGREGATION_IN_2p4 (5)
Kanchanapally, Vidyullatha23cea3c2014-11-04 13:05:20 +05303654#define SIR_COEX_IND_TYPE_ENABLE_UAPSD (6)
3655#define SIR_COEX_IND_TYPE_DISABLE_UAPSD (7)
c_hpothub3458992014-09-19 19:58:57 +05303656#define SIR_COEX_IND_TYPE_CXM_FEATURES_NOTIFICATION (8)
Pradeep Reddy POTTETIf0569d72014-12-13 16:54:03 +05303657#define SIR_COEX_IND_TYPE_TDLS_ENABLE (6)
3658#define SIR_COEX_IND_TYPE_TDLS_DISABLE (7)
Jeff Johnson295189b2012-06-20 16:38:30 -07003659
3660typedef struct sSirSmeCoexInd
3661{
3662 tANI_U16 mesgType;
3663 tANI_U16 mesgLen;
3664 tANI_U32 coexIndType;
3665 tANI_U32 coexIndData[SIR_COEX_IND_DATA_SIZE];
3666}tSirSmeCoexInd, *tpSirSmeCoexInd;
3667
Jeff Johnson295189b2012-06-20 16:38:30 -07003668typedef struct sSirSmeMgmtFrameInd
3669{
3670 tANI_U16 mesgType;
3671 tANI_U16 mesgLen;
Chilam NG571c65a2013-01-19 12:27:36 +05303672 tANI_U32 rxChan;
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 tANI_U8 sessionId;
3674 tANI_U8 frameType;
Chilam NG571c65a2013-01-19 12:27:36 +05303675 tANI_S8 rxRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 tANI_U8 frameBuf[1]; //variable
3677}tSirSmeMgmtFrameInd, *tpSirSmeMgmtFrameInd;
Jeff Johnson295189b2012-06-20 16:38:30 -07003678
Chet Lanctot186b5732013-03-18 10:26:30 -07003679#ifdef WLAN_FEATURE_11W
3680typedef struct sSirSmeUnprotMgmtFrameInd
3681{
3682 tANI_U8 sessionId;
3683 tANI_U8 frameType;
3684 tANI_U8 frameLen;
3685 tANI_U8 frameBuf[1]; //variable
3686}tSirSmeUnprotMgmtFrameInd, *tpSirSmeUnprotMgmtFrameInd;
3687#endif
3688
Jeff Johnson295189b2012-06-20 16:38:30 -07003689#define SIR_IS_FULL_POWER_REASON_DISCONNECTED(eReason) \
3690 ( ( eSME_LINK_DISCONNECTED_BY_HDD == (eReason) ) || \
3691 ( eSME_LINK_DISCONNECTED_BY_OTHER == (eReason) ) || \
3692 (eSME_FULL_PWR_NEEDED_BY_CHANNEL_SWITCH == (eReason)))
3693#define SIR_IS_FULL_POWER_NEEDED_BY_HDD(eReason) \
3694 ( ( eSME_LINK_DISCONNECTED_BY_HDD == (eReason) ) || ( eSME_FULL_PWR_NEEDED_BY_HDD == (eReason) ) )
3695
3696/* P2P Power Save Related */
Jeff Johnson295189b2012-06-20 16:38:30 -07003697typedef struct sSirNoAParam
3698{
3699 tANI_U8 ctWindow:7;
3700 tANI_U8 OppPS:1;
3701 tANI_U8 count;
3702 tANI_U32 duration;
3703 tANI_U32 interval;
3704 tANI_U32 singleNoADuration;
3705 tANI_U8 psSelection;
3706}tSirNoAParam, *tpSirNoAParam;
Jeff Johnson295189b2012-06-20 16:38:30 -07003707
Jeff Johnson295189b2012-06-20 16:38:30 -07003708typedef struct sSirWlanSuspendParam
3709{
3710 tANI_U8 configuredMcstBcstFilterSetting;
3711}tSirWlanSuspendParam,*tpSirWlanSuspendParam;
3712
3713typedef struct sSirWlanResumeParam
3714{
3715 tANI_U8 configuredMcstBcstFilterSetting;
3716}tSirWlanResumeParam,*tpSirWlanResumeParam;
3717
3718typedef struct sSirWlanSetRxpFilters
3719{
3720 tANI_U8 configuredMcstBcstFilterSetting;
3721 tANI_U8 setMcstBcstFilter;
3722}tSirWlanSetRxpFilters,*tpSirWlanSetRxpFilters;
Jeff Johnson295189b2012-06-20 16:38:30 -07003723
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05303724typedef void(*MgmtLoggingInitReqCb)(void *mgmtlogInitCbContext,
3725 VOS_STATUS status);
Siddharth Bhal64246172015-02-27 01:04:37 +05303726typedef void ( *tGetFrameLogCallback) (void *pContext);
3727
3728typedef struct sAniGetFrameLogReq
3729{
3730 tANI_U16 msgType;
3731 tANI_U16 msgLen;
3732 tGetFrameLogCallback getFramelogCallback;
3733 void *pDevContext; //device context
3734 tANI_U8 getFrameLogCmdFlag;
3735 tANI_U32 rspStatus;
3736} tAniGetFrameLogReq, *tpAniGetFrameLogReq;
3737
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05303738
3739typedef struct sSirMgmtLoggingInitParam
3740{
3741 tANI_U8 enableFlag;
3742 tANI_U8 frameType;
3743 tANI_U8 frameSize;
3744 tANI_U8 bufferMode;
3745 MgmtLoggingInitReqCb mgmtlogInitCallback;
3746 void *mgmtlogInitCbContext;
3747}tSirMgmtLoggingInitParam,*tpSirMgmtLoggingInitParam;
Jeff Johnson295189b2012-06-20 16:38:30 -07003748
3749#ifdef FEATURE_WLAN_SCAN_PNO
3750//
3751// PNO Messages
3752//
3753
3754// Set PNO
3755#define SIR_PNO_MAX_NETW_CHANNELS 26
Pratik Bhalgatd4404592012-11-22 17:49:14 +05303756#define SIR_PNO_MAX_NETW_CHANNELS_EX 60
Jeff Johnson295189b2012-06-20 16:38:30 -07003757#define SIR_PNO_MAX_SUPP_NETWORKS 16
3758#define SIR_PNO_MAX_SCAN_TIMERS 10
3759
3760/*size based of dot11 declaration without extra IEs as we will not carry those for PNO*/
3761#define SIR_PNO_MAX_PB_REQ_SIZE 450
3762
3763#define SIR_PNO_24G_DEFAULT_CH 1
3764#define SIR_PNO_5G_DEFAULT_CH 36
3765
3766typedef enum
3767{
3768 SIR_PNO_MODE_IMMEDIATE,
3769 SIR_PNO_MODE_ON_SUSPEND,
3770 SIR_PNO_MODE_ON_RESUME,
3771 SIR_PNO_MODE_MAX
3772} eSirPNOMode;
3773
3774typedef struct
3775{
3776 tSirMacSSid ssId;
3777 tANI_U32 authentication;
3778 tANI_U32 encryption;
3779 tANI_U32 bcastNetwType;
3780 tANI_U8 ucChannelCount;
Gopichand Nakkala8e93fde2013-05-10 17:40:12 +05303781 tANI_U8 aChannels[SIR_PNO_MAX_NETW_CHANNELS_EX];
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 tANI_U8 rssiThreshold;
3783} tSirNetworkType;
3784
3785typedef struct
3786{
3787 tANI_U32 uTimerValue;
3788 tANI_U32 uTimerRepeat;
3789}tSirScanTimer;
3790
3791typedef struct
3792{
3793 tANI_U8 ucScanTimersCount;
3794 tSirScanTimer aTimerValues[SIR_PNO_MAX_SCAN_TIMERS];
3795} tSirScanTimersType;
3796
Vinay Krishna Erannaf0e523b2014-03-01 21:00:16 +05303797/*Pref Net Req status */
3798typedef void(*PNOReqStatusCb)(void *callbackContext, VOS_STATUS status);
3799
3800
Jeff Johnson295189b2012-06-20 16:38:30 -07003801typedef struct sSirPNOScanReq
3802{
3803 tANI_U8 enable;
Vinay Krishna Erannaf0e523b2014-03-01 21:00:16 +05303804 PNOReqStatusCb statusCallback;
3805 void *callbackContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 eSirPNOMode modePNO;
3807 tANI_U8 ucNetworksCount;
Hanumantha Reddy Pothulad769f3e2015-02-19 17:00:02 +05303808 tSirNetworkType *aNetworks;
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 tSirScanTimersType scanTimers;
3810
3811 /*added by SME*/
3812 tANI_U16 us24GProbeTemplateLen;
Hanumantha Reddy Pothulad769f3e2015-02-19 17:00:02 +05303813 tANI_U8 *p24GProbeTemplate;
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 tANI_U16 us5GProbeTemplateLen;
Hanumantha Reddy Pothulad769f3e2015-02-19 17:00:02 +05303815 tANI_U8 *p5GProbeTemplate;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816} tSirPNOScanReq, *tpSirPNOScanReq;
3817
Manjunathappa Prakash4f1d5a52013-11-11 16:22:19 -08003818typedef struct sSirSetRSSIFilterReq
3819{
3820 tANI_U8 rssiThreshold;
3821} tSirSetRSSIFilterReq, *tpSirSetRSSIFilterReq;
3822
3823
3824// Update Scan Params
3825typedef struct {
3826 tANI_U8 b11dEnabled;
3827 tANI_U8 b11dResolved;
3828 tANI_U8 ucChannelCount;
3829 tANI_U8 aChannels[SIR_PNO_MAX_NETW_CHANNELS_EX];
3830 tANI_U16 usPassiveMinChTime;
3831 tANI_U16 usPassiveMaxChTime;
3832 tANI_U16 usActiveMinChTime;
3833 tANI_U16 usActiveMaxChTime;
3834 tANI_U8 ucCBState;
3835} tSirUpdateScanParams, * tpSirUpdateScanParams;
3836
3837// Preferred Network Found Indication
3838typedef struct
3839{
3840 tANI_U16 mesgType;
3841 tANI_U16 mesgLen;
3842 /* Network that was found with the highest RSSI*/
3843 tSirMacSSid ssId;
3844 /* Indicates the RSSI */
3845 tANI_U8 rssi;
3846 /* Length of the beacon or probe response
3847 * corresponding to the candidate found by PNO */
3848 tANI_U32 frameLength;
3849 /* Index to memory location where the contents of
3850 * beacon or probe response frame will be copied */
3851 tANI_U8 data[1];
3852} tSirPrefNetworkFoundInd, *tpSirPrefNetworkFoundInd;
3853#endif //FEATURE_WLAN_SCAN_PNO
3854
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07003855#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
3856typedef struct
3857{
3858 tSirMacSSid ssId;
3859 tANI_U8 currAPbssid[WNI_CFG_BSSID_LEN];
3860 tANI_U32 authentication;
3861 tANI_U8 encryption;
3862 tANI_U8 mcencryption;
3863 tANI_U8 ChannelCount;
3864 tANI_U8 ChannelCache[SIR_ROAM_MAX_CHANNELS];
3865
3866} tSirRoamNetworkType;
3867
3868typedef struct SirMobilityDomainInfo
3869{
3870 tANI_U8 mdiePresent;
3871 tANI_U16 mobilityDomain;
3872} tSirMobilityDomainInfo;
3873
3874typedef struct sSirRoamOffloadScanReq
3875{
3876 eAniBoolean RoamScanOffloadEnabled;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -08003877 eAniBoolean MAWCEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07003878 tANI_S8 LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -08003879 tANI_S8 RxSensitivityThreshold;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07003880 tANI_U8 RoamRssiDiff;
3881 tANI_U8 ChannelCacheType;
3882 tANI_U8 Command;
3883 tANI_U8 StartScanReason;
3884 tANI_U16 NeighborScanTimerPeriod;
3885 tANI_U16 NeighborRoamScanRefreshPeriod;
3886 tANI_U16 NeighborScanChannelMinTime;
3887 tANI_U16 NeighborScanChannelMaxTime;
3888 tANI_U16 EmptyRefreshScanPeriod;
3889 tANI_U8 ValidChannelCount;
3890 tANI_U8 ValidChannelList[SIR_ROAM_MAX_CHANNELS];
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003891 eAniBoolean IsESEEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07003892 tANI_U16 us24GProbeTemplateLen;
3893 tANI_U8 p24GProbeTemplate[SIR_ROAM_SCAN_MAX_PB_REQ_SIZE];
3894 tANI_U16 us5GProbeTemplateLen;
3895 tANI_U8 p5GProbeTemplate[SIR_ROAM_SCAN_MAX_PB_REQ_SIZE];
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07003896 tANI_U8 nProbes;
3897 tANI_U16 HomeAwayTime;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07003898 tSirRoamNetworkType ConnectedNetwork;
3899 tSirMobilityDomainInfo MDID;
3900} tSirRoamOffloadScanReq, *tpSirRoamOffloadScanReq;
Manjunathappa Prakash4f1d5a52013-11-11 16:22:19 -08003901#endif //WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Jeff Johnson295189b2012-06-20 16:38:30 -07003902
3903#define SIR_NOCHANGE_POWER_VALUE 0xFFFFFFFF
3904
3905//Power Parameters Type
3906typedef enum
3907{
3908 eSIR_IGNORE_DTIM = 1,
3909 eSIR_LISTEN_INTERVAL = 2,
3910 eSIR_MCAST_BCAST_FILTER = 3,
3911 eSIR_ENABLE_BET = 4,
3912 eSIR_BET_INTERVAL = 5
3913}tPowerParamType;
3914
3915//Power Parameters Value s
3916typedef struct
3917{
3918 /* Ignore DTIM */
3919 tANI_U32 uIgnoreDTIM;
3920
3921 /* DTIM Period */
3922 tANI_U32 uDTIMPeriod;
3923
3924 /* Listen Interval */
3925 tANI_U32 uListenInterval;
3926
3927 /* Broadcast Multicas Filter */
3928 tANI_U32 uBcastMcastFilter;
3929
3930 /* Beacon Early Termination */
3931 tANI_U32 uEnableBET;
3932
3933 /* Beacon Early Termination Interval */
3934 tANI_U32 uBETInterval;
3935
Yue Mac24062f2013-05-13 17:01:29 -07003936 /* MAX LI for modulated DTIM */
3937 tANI_U32 uMaxLIModulatedDTIM;
3938
Jeff Johnson295189b2012-06-20 16:38:30 -07003939}tSirSetPowerParamsReq, *tpSirSetPowerParamsReq;
3940
3941typedef struct sSirTxPerTrackingParam
3942{
3943 tANI_U8 ucTxPerTrackingEnable; /* 0: disable, 1:enable */
3944 tANI_U8 ucTxPerTrackingPeriod; /* Check period, unit is sec. Once tx_stat_chk enable, firmware will check PER in this period periodically */
3945 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 */
3946 tANI_U32 uTxPerTrackingWatermark; /* A watermark of check number, once the tx packet exceed this number, we do the check, default is 5 */
3947}tSirTxPerTrackingParam, *tpSirTxPerTrackingParam;
3948
3949#ifdef WLAN_FEATURE_PACKET_FILTERING
3950/*---------------------------------------------------------------------------
3951 Packet Filtering Parameters
3952---------------------------------------------------------------------------*/
3953#define SIR_IPV4_ADDR_LEN 4
3954#define SIR_MAC_ADDR_LEN 6
3955#define SIR_MAX_FILTER_TEST_DATA_LEN 8
3956#define SIR_MAX_NUM_MULTICAST_ADDRESS 240
3957#define SIR_MAX_NUM_FILTERS 20
3958#define SIR_MAX_NUM_TESTS_PER_FILTER 10
3959
3960//
3961// Receive Filter Parameters
3962//
3963typedef enum
3964{
3965 SIR_RCV_FILTER_TYPE_INVALID,
3966 SIR_RCV_FILTER_TYPE_FILTER_PKT,
3967 SIR_RCV_FILTER_TYPE_BUFFER_PKT,
3968 SIR_RCV_FILTER_TYPE_MAX_ENUM_SIZE
3969}eSirReceivePacketFilterType;
3970
3971typedef enum
3972{
3973 SIR_FILTER_HDR_TYPE_INVALID,
3974 SIR_FILTER_HDR_TYPE_MAC,
3975 SIR_FILTER_HDR_TYPE_ARP,
3976 SIR_FILTER_HDR_TYPE_IPV4,
3977 SIR_FILTER_HDR_TYPE_IPV6,
3978 SIR_FILTER_HDR_TYPE_UDP,
3979 SIR_FILTER_HDR_TYPE_MAX
3980}eSirRcvPktFltProtocolType;
3981
3982typedef enum
3983{
3984 SIR_FILTER_CMP_TYPE_INVALID,
3985 SIR_FILTER_CMP_TYPE_EQUAL,
3986 SIR_FILTER_CMP_TYPE_MASK_EQUAL,
3987 SIR_FILTER_CMP_TYPE_NOT_EQUAL,
3988 SIR_FILTER_CMP_TYPE_MASK_NOT_EQUAL,
3989 SIR_FILTER_CMP_TYPE_MAX
3990}eSirRcvPktFltCmpFlagType;
3991
3992typedef struct sSirRcvPktFilterFieldParams
3993{
3994 eSirRcvPktFltProtocolType protocolLayer;
3995 eSirRcvPktFltCmpFlagType cmpFlag;
3996 /* Length of the data to compare */
3997 tANI_U16 dataLength;
3998 /* from start of the respective frame header */
3999 tANI_U8 dataOffset;
4000 /* Reserved field */
4001 tANI_U8 reserved;
4002 /* Data to compare */
4003 tANI_U8 compareData[SIR_MAX_FILTER_TEST_DATA_LEN];
4004 /* Mask to be applied on the received packet data before compare */
4005 tANI_U8 dataMask[SIR_MAX_FILTER_TEST_DATA_LEN];
4006}tSirRcvPktFilterFieldParams, *tpSirRcvPktFilterFieldParams;
4007
4008typedef struct sSirRcvPktFilterCfg
4009{
4010 tANI_U8 filterId;
4011 eSirReceivePacketFilterType filterType;
4012 tANI_U32 numFieldParams;
4013 tANI_U32 coalesceTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 tSirMacAddr selfMacAddr;
4015 tSirMacAddr bssId; //Bssid of the connected AP
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004016 tSirRcvPktFilterFieldParams paramsData[SIR_MAX_NUM_TESTS_PER_FILTER];
Jeff Johnson295189b2012-06-20 16:38:30 -07004017}tSirRcvPktFilterCfgType, *tpSirRcvPktFilterCfgType;
4018
4019//
4020// Filter Packet Match Count Parameters
4021//
4022typedef struct sSirRcvFltPktMatchCnt
4023{
4024 tANI_U8 filterId;
4025 tANI_U32 matchCnt;
4026} tSirRcvFltPktMatchCnt, tpSirRcvFltPktMatchCnt;
4027
4028typedef struct sSirRcvFltPktMatchRsp
4029{
4030 tANI_U16 mesgType;
4031 tANI_U16 mesgLen;
4032
4033 /* Success or Failure */
4034 tANI_U32 status;
4035 tSirRcvFltPktMatchCnt filterMatchCnt[SIR_MAX_NUM_FILTERS];
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004036 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037} tSirRcvFltPktMatchRsp, *tpSirRcvFltPktMatchRsp;
4038
4039//
4040// Receive Filter Clear Parameters
4041//
4042typedef struct sSirRcvFltPktClearParam
4043{
4044 tANI_U32 status; /* only valid for response message */
4045 tANI_U8 filterId;
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 tSirMacAddr selfMacAddr;
4047 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07004048}tSirRcvFltPktClearParam, *tpSirRcvFltPktClearParam;
4049
4050//
4051// Multicast Address List Parameters
4052//
4053typedef struct sSirRcvFltMcAddrList
4054{
4055 tANI_U32 ulMulticastAddrCnt;
4056 tSirMacAddr multicastAddr[SIR_MAX_NUM_MULTICAST_ADDRESS];
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 tSirMacAddr selfMacAddr;
4058 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07004059} tSirRcvFltMcAddrList, *tpSirRcvFltMcAddrList;
4060#endif // WLAN_FEATURE_PACKET_FILTERING
4061
4062//
4063// Generic version information
4064//
4065typedef struct
4066{
4067 tANI_U8 revision;
4068 tANI_U8 version;
4069 tANI_U8 minor;
4070 tANI_U8 major;
4071} tSirVersionType;
4072
4073typedef struct sAniBtAmpLogLinkReq
4074{
4075 // Common for all types are requests
4076 tANI_U16 msgType; // message type is same as the request type
4077 tANI_U16 msgLen; // length of the entire request
4078 tANI_U8 sessionId; //sme Session Id
4079 void *btampHandle; //AMP context
4080
4081} tAniBtAmpLogLinkReq, *tpAniBtAmpLogLinkReq;
4082
4083#ifdef WLAN_FEATURE_GTK_OFFLOAD
4084/*---------------------------------------------------------------------------
4085* WDA_GTK_OFFLOAD_REQ
4086*--------------------------------------------------------------------------*/
4087typedef struct
4088{
4089 tANI_U32 ulFlags; /* optional flags */
4090 tANI_U8 aKCK[16]; /* Key confirmation key */
4091 tANI_U8 aKEK[16]; /* key encryption key */
4092 tANI_U64 ullKeyReplayCounter; /* replay counter */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004093 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07004094} tSirGtkOffloadParams, *tpSirGtkOffloadParams;
4095
4096/*---------------------------------------------------------------------------
4097* WDA_GTK_OFFLOAD_GETINFO_REQ
4098*--------------------------------------------------------------------------*/
4099typedef struct
4100{
4101 tANI_U16 mesgType;
4102 tANI_U16 mesgLen;
4103
4104 tANI_U32 ulStatus; /* success or failure */
4105 tANI_U64 ullKeyReplayCounter; /* current replay counter value */
4106 tANI_U32 ulTotalRekeyCount; /* total rekey attempts */
4107 tANI_U32 ulGTKRekeyCount; /* successful GTK rekeys */
4108 tANI_U32 ulIGTKRekeyCount; /* successful iGTK rekeys */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004109 tSirMacAddr bssId;
Jeff Johnson295189b2012-06-20 16:38:30 -07004110} tSirGtkOffloadGetInfoRspParams, *tpSirGtkOffloadGetInfoRspParams;
4111#endif // WLAN_FEATURE_GTK_OFFLOAD
4112
4113#ifdef WLAN_WAKEUP_EVENTS
4114/*---------------------------------------------------------------------------
4115 tSirWakeReasonInd
4116---------------------------------------------------------------------------*/
4117typedef struct
4118{
4119 tANI_U16 mesgType;
4120 tANI_U16 mesgLen;
4121 tANI_U32 ulReason; /* see tWakeReasonType */
4122 tANI_U32 ulReasonArg; /* argument specific to the reason type */
4123 tANI_U32 ulStoredDataLen; /* length of optional data stored in this message, in case
4124 HAL truncates the data (i.e. data packets) this length
4125 will be less than the actual length */
4126 tANI_U32 ulActualDataLen; /* actual length of data */
4127 tANI_U8 aDataStart[1]; /* variable length start of data (length == storedDataLen)
4128 see specific wake type */
4129} tSirWakeReasonInd, *tpSirWakeReasonInd;
4130#endif // WLAN_WAKEUP_EVENTS
4131
4132/*---------------------------------------------------------------------------
4133 sAniSetTmLevelReq
4134---------------------------------------------------------------------------*/
4135typedef struct sAniSetTmLevelReq
4136{
4137 tANI_U16 tmMode;
4138 tANI_U16 newTmLevel;
4139} tAniSetTmLevelReq, *tpAniSetTmLevelReq;
4140
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004141#ifdef FEATURE_WLAN_TDLS
4142/* TDLS Request struct SME-->PE */
4143typedef struct sSirTdlsSendMgmtReq
4144{
4145 tANI_U16 messageType; // eWNI_SME_TDLS_DISCOVERY_START_REQ
4146 tANI_U16 length;
4147 tANI_U8 sessionId; // Session ID
4148 tANI_U16 transactionId; // Transaction ID for cmd
4149 tANI_U8 reqType;
4150 tANI_U8 dialog;
4151 tANI_U16 statusCode;
Hoonki Leea34dd892013-02-05 22:56:02 -08004152 tANI_U8 responder;
Pradeep Reddy POTTETIca171f82014-03-21 14:17:35 +05304153 tANI_U32 peerCapability;
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004154 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4155 tSirMacAddr peerMac;
4156 tANI_U8 addIe[1]; //Variable lenght. Dont add any field after this.
4157} tSirTdlsSendMgmtReq, *tpSirSmeTdlsSendMgmtReq ;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004158
4159typedef enum TdlsAddOper
4160{
4161 TDLS_OPER_NONE,
4162 TDLS_OPER_ADD,
4163 TDLS_OPER_UPDATE
4164} eTdlsAddOper;
4165
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004166/* TDLS Request struct SME-->PE */
4167typedef struct sSirTdlsAddStaReq
4168{
4169 tANI_U16 messageType; // eWNI_SME_TDLS_DISCOVERY_START_REQ
4170 tANI_U16 length;
4171 tANI_U8 sessionId; // Session ID
4172 tANI_U16 transactionId; // Transaction ID for cmd
4173 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004174 eTdlsAddOper tdlsAddOper;
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004175 tSirMacAddr peerMac;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004176 tANI_U16 capability;
4177 tANI_U8 extn_capability[SIR_MAC_MAX_EXTN_CAP];
4178 tANI_U8 supported_rates_length;
4179 tANI_U8 supported_rates[SIR_MAC_MAX_SUPP_RATES];
Hoonki Lee66b75f32013-04-16 18:30:07 -07004180 tANI_U8 htcap_present;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004181 tSirHTCap htCap;
Hoonki Lee66b75f32013-04-16 18:30:07 -07004182 tANI_U8 vhtcap_present;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004183 tSirVHTCap vhtCap;
4184 tANI_U8 uapsd_queues;
4185 tANI_U8 max_sp;
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004186} tSirTdlsAddStaReq, *tpSirSmeTdlsAddStaReq ;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004187
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004188/* TDLS Response struct PE-->SME */
4189typedef struct sSirTdlsAddStaRsp
4190{
4191 tANI_U16 messageType;
4192 tANI_U16 length;
4193 tSirResultCodes statusCode;
4194 tSirMacAddr peerMac;
4195 tANI_U8 sessionId; // Session ID
4196 tANI_U16 staId ;
4197 tANI_U16 staType ;
4198 tANI_U8 ucastSig;
4199 tANI_U8 bcastSig;
Gopichand Nakkala681989c2013-03-06 22:27:48 -08004200 eTdlsAddOper tdlsAddOper;
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004201} tSirTdlsAddStaRsp ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05304202
4203/* TDLS Request struct SME-->PE */
4204typedef struct
4205{
4206 tANI_U16 messageType; // eWNI_SME_TDLS_LINK_ESTABLISH_REQ
4207 tANI_U16 length;
4208 tANI_U8 sessionId; // Session ID
4209 tANI_U16 transactionId; // Transaction ID for cmd
4210 tANI_U8 uapsdQueues; // Peer's uapsd Queues Information
4211 tANI_U8 maxSp; // Peer's Supported Maximum Service Period
4212 tANI_U8 isBufSta; // Does Peer Support as Buffer Station.
Naresh Jayarambc62ba42014-02-12 21:39:14 +05304213 tANI_U8 isOffChannelSupported; // Does Peer Support as TDLS Off Channel.
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05304214 tANI_U8 isResponder; // Is Peer a responder.
4215 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4216 tSirMacAddr peerMac;
Naresh Jayarambc62ba42014-02-12 21:39:14 +05304217 tANI_U8 supportedChannelsLen;
4218 tANI_U8 supportedChannels[SIR_MAC_MAX_SUPP_CHANNELS];
4219 tANI_U8 supportedOperClassesLen;
4220 tANI_U8 supportedOperClasses[SIR_MAC_MAX_SUPP_OPER_CLASSES];
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05304221}tSirTdlsLinkEstablishReq, *tpSirTdlsLinkEstablishReq;
4222
4223/* TDLS Request struct SME-->PE */
4224typedef struct
4225{
4226 tANI_U16 messageType; // eWNI_SME_TDLS_LINK_ESTABLISH_RSP
4227 tANI_U16 length;
4228 tANI_U8 sessionId; // Session ID
4229 tANI_U16 transactionId; // Transaction ID for cmd
4230 tSirResultCodes statusCode;
4231 tSirMacAddr peerMac;
4232}tSirTdlsLinkEstablishReqRsp, *tpSirTdlsLinkEstablishReqRsp;
4233
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004234/* TDLS Request struct SME-->PE */
4235typedef struct sSirTdlsDelStaReq
4236{
4237 tANI_U16 messageType; // eWNI_SME_TDLS_DISCOVERY_START_REQ
4238 tANI_U16 length;
4239 tANI_U8 sessionId; // Session ID
4240 tANI_U16 transactionId; // Transaction ID for cmd
4241 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4242 tSirMacAddr peerMac;
4243} tSirTdlsDelStaReq, *tpSirSmeTdlsDelStaReq ;
4244/* TDLS Response struct PE-->SME */
4245typedef struct sSirTdlsDelStaRsp
4246{
4247 tANI_U16 messageType;
4248 tANI_U16 length;
4249 tANI_U8 sessionId; // Session ID
4250 tSirResultCodes statusCode;
4251 tSirMacAddr peerMac;
4252 tANI_U16 staId;
4253} tSirTdlsDelStaRsp, *tpSirTdlsDelStaRsp;
Hoonki Leee6bfe942013-02-05 15:01:19 -08004254/* TDLS Delete Indication struct PE-->SME */
4255typedef struct sSirTdlsDelStaInd
4256{
4257 tANI_U16 messageType;
4258 tANI_U16 length;
4259 tANI_U8 sessionId; // Session ID
4260 tSirMacAddr peerMac;
4261 tANI_U16 staId;
4262 tANI_U16 reasonCode;
4263} tSirTdlsDelStaInd, *tpSirTdlsDelStaInd;
Gopichand Nakkala2a0a1572013-02-10 21:39:16 -08004264typedef struct sSirTdlsDelAllPeerInd
4265{
4266 tANI_U16 messageType;
4267 tANI_U16 length;
4268 tANI_U8 sessionId; // Session ID
4269} tSirTdlsDelAllPeerInd, *tpSirTdlsDelAllPeerInd;
Gopichand Nakkalab977a972013-02-18 19:15:09 -08004270typedef struct sSirMgmtTxCompletionInd
4271{
4272 tANI_U16 messageType;
4273 tANI_U16 length;
4274 tANI_U8 sessionId; // Session ID
4275 tANI_U32 txCompleteStatus;
4276} tSirMgmtTxCompletionInd, *tpSirMgmtTxCompletionInd;
Atul Mittalc0f739f2014-07-31 13:47:47 +05304277
4278//tdlsoffchan
4279/* TDLS Channel Switch struct SME-->PE */
4280typedef struct
4281{
4282 tANI_U16 messageType; //eWNI_SME_TDLS_CHANNEL_SWITCH_REQ
4283 tANI_U16 length;
4284 tANI_U8 sessionId; // Session ID
4285 tANI_U16 transactionId; // Transaction ID for cmd
4286 tANI_U8 tdlsOffCh; // Target Off Channel
4287 tANI_U8 tdlsOffChBwOffset;// Target Off Channel Bandwidth offset
4288 tANI_U8 tdlsSwMode; // TDLS Off Channel Mode
4289 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4290 tSirMacAddr peerMac;
4291}tSirTdlsChanSwitch, *tpSirTdlsChanSwitch;
4292
Atul Mittal60bd4292014-08-14 12:19:27 +05304293/* TDLS Resp struct */
4294typedef struct
4295{
4296 tANI_U16 messageType; // eWNI_SME_TDLS_CHANNEL_SWITCH_RSP
4297 tANI_U16 length;
4298 tANI_U8 sessionId; // Session ID
4299 tANI_U16 transactionId; // Transaction ID for cmd
4300 tSirResultCodes statusCode;
4301 tSirMacAddr peerMac;
4302}tSirTdlsChanSwitchReqRsp, *tpSirTdlsChanSwitchReqRsp;
Mohit Khanna698ba2a2012-12-04 15:08:18 -08004303#endif /* FEATURE_WLAN_TDLS */
4304
4305#ifdef FEATURE_WLAN_TDLS_INTERNAL
4306typedef enum tdlsListType
4307{
4308 TDLS_DIS_LIST,
4309 TDLS_SETUP_LIST
4310}eTdlsListType ;
4311
4312typedef enum tdlsStates
4313{
4314 TDLS_LINK_IDLE_STATE,
4315 TDLS_LINK_DIS_INIT_STATE,
4316 TDLS_LINK_DIS_RSP_WAIT_STATE,
4317 TDLS_DIS_REQ_PROCESS_STATE,
4318 TDLS_DIS_RSP_SENT_WAIT_STATE,
4319 TDLS_DIS_RSP_SENT_DONE_STATE,
4320 TDLS_LINK_DIS_DONE_STATE,
4321 TDLS_LINK_SETUP_START_STATE,
4322 TDLS_LINK_SETUP_WAIT_STATE,
4323 TDLS_LINK_SETUP_RSP_WAIT_STATE,
4324 TDLS_LINK_SETUP_DONE_STATE,
4325 TDLS_LINK_TEARDOWN_START_STATE,
4326 TDLS_LINK_TEARDOWN_DONE_STATE,
4327 TDLS_LINK_SETUP_STATE
4328}eSirTdlsStates ;
4329
4330typedef struct sSirTdlsPeerInfo
4331{
4332 tSirMacAddr peerMac;
4333 tANI_U8 sessionId;
4334 tANI_U8 dialog ;
4335 tSirMacCapabilityInfo capabilityInfo ;
4336 tSirMacRateSet tdlsPeerSuppRates ;
4337 tSirMacRateSet tdlsPeerExtRates ;
4338 //tDot11fIEHTCaps tdlsPeerHtCaps ;
4339 tSirMacHTCapabilityInfo tdlsPeerHtCaps ;
4340 tSirMacHTParametersInfo tdlsPeerHtParams ;
4341 tSirMacExtendedHTCapabilityInfo tdlsPeerHtExtCaps ;
4342 tANI_U8 supportedMCSSet[SIZE_OF_SUPPORTED_MCS_SET];
4343
4344 //tDot11fIEExtCapability tdlsPeerExtenCaps ;
4345 tSirMacRsnInfo tdlsPeerRsn ;
4346 tANI_U16 tdlsPeerFtIe ;
4347 tANI_U16 tdlsPeerTimeoutIntvl ;
4348 tANI_U16 tdlsPeerSuppChan ;
4349 tANI_U16 tdlsPeerSuppReguClass ;
4350 tANI_S8 tdlsPeerRssi ;
4351 tANI_U16 tdlsPeerState ;
4352 /* flags to indicate optional IE's are in */
4353 tANI_U8 ExtRatesPresent ;
4354 tANI_U8 rsnIePresent ;
4355 tANI_U8 htCapPresent ;
4356 tANI_U8 delStaNeeded ;
4357
4358} tSirTdlsPeerInfo, *tpSirSmeTdlsPeerInfo ;
4359
4360/* TDLS Request struct SME-->PE */
4361typedef struct sSirTdlsDiscoveryReq
4362{
4363 tANI_U16 messageType; // eWNI_SME_TDLS_DISCOVERY_START_REQ
4364 tANI_U16 length;
4365 tANI_U8 sessionId; // Session ID
4366 tANI_U16 transactionId; // Transaction ID for cmd
4367 tANI_U8 reqType;
4368 tANI_U8 dialog;
4369 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4370 tSirMacAddr peerMac;
4371} tSirTdlsDisReq, *tpSirSmeTdlsDisReq ;
4372
4373typedef struct sSirTdlsLinkSetupReq
4374{
4375 tANI_U16 messageType; // eWNI_SME_TDLS_LINK_START_REQ
4376 tANI_U16 length;
4377 tANI_U8 sessionId; // Session ID
4378 tANI_U16 transactionId; // Transaction ID for cmd
4379 tANI_U8 dialog;
4380 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4381 tSirMacAddr peerMac;
4382} tSirTdlsSetupReq, *tpSirSmeTdlsSetupReq ;
4383
4384typedef struct sSirTdlsTeardownReq
4385{
4386 tANI_U16 messageType; // eWNI_SME_TDLS_TEARDOWN_REQ
4387 tANI_U16 length;
4388 tANI_U8 sessionId; // Session ID
4389 tANI_U16 transactionId; // Transaction ID for cmd
4390 tSirMacAddr bssid; // For multi-session, for PE to locate peSession ID
4391 tSirMacAddr peerMac;
4392} tSirTdlsTeardownReq, *tpSirSmeTdlsTeardownReq ;
4393
4394
4395/* TDLS response struct PE-->SME */
4396typedef struct sSirTdlsDiscoveryRsp
4397{
4398 tANI_U16 messageType;
4399 tANI_U16 length;
4400 tSirResultCodes statusCode;
4401 tANI_U16 numDisSta ;
4402 tSirTdlsPeerInfo tdlsDisPeerInfo[0];
4403} tSirTdlsDisRsp, *tpSirSmeTdlsDiscoveryRsp;
4404
4405typedef struct sSirTdlsLinkSetupRsp
4406{
4407 tANI_U16 messageType;
4408 tANI_U16 length;
4409 tSirResultCodes statusCode;
4410 tSirMacAddr peerMac;
4411} tSirTdlsLinksetupRsp ;
4412
4413typedef struct sSirTdlsLinkSetupInd
4414{
4415 tANI_U16 messageType;
4416 tANI_U16 length;
4417 tSirResultCodes statusCode;
4418 tSirMacAddr peerMac;
4419} tSirTdlsLinkSetupInd ;
4420
4421
4422typedef struct sSirTdlsTeardownRsp
4423{
4424 tANI_U16 messageType;
4425 tANI_U16 length;
4426 tSirResultCodes statusCode;
4427 tSirMacAddr peerMac;
4428} tSirTdlsTeardownRsp ;
4429
4430typedef struct sSirTdlsPeerInd
4431{
4432 tANI_U16 messageType;
4433 tANI_U16 length;
4434 tSirMacAddr peerMac;
4435 tANI_U8 sessionId; // Session ID
4436 tANI_U16 staId ;
4437 tANI_U16 staType ;
4438 tANI_U8 ucastSig;
4439 tANI_U8 bcastSig;
4440} tSirTdlsPeerInd ;
4441
4442typedef struct sSirTdlsLinkEstablishInd
4443{
4444 tANI_U16 messageType;
4445 tANI_U16 length;
4446 tANI_U8 bIsResponder; /* if this is 1, self is initiator and peer is reponder */
4447 tANI_U8 linkIdenOffset; /* offset of LinkIdentifierIE.bssid[0] from ptiTemplateBuf */
4448 tANI_U8 ptiBufStatusOffset; /* offset of BufferStatus from ptiTemplateBuf */
4449 tANI_U8 ptiTemplateLen;
4450 tANI_U8 ptiTemplateBuf[64];
4451 tANI_U8 extCapability[8];
4452/* This will be part of PTI template when sent by PE
4453 tANI_U8 linkIdentifier[20];
4454*/
4455} tSirTdlsLinkEstablishInd, *tpSirTdlsLinkEstablishInd;
4456
4457typedef struct sSirTdlsLinkTeardownInd
4458{
4459 tANI_U16 messageType;
4460 tANI_U16 length;
4461 tANI_U16 staId;
4462} tSirTdlsLinkTeardownInd, *tpSirTdlsLinkTeardownInd;
4463
4464#endif /* FEATURE_WLAN_TDLS_INTERNAL */
4465
Yathish9f22e662012-12-10 14:21:35 -08004466typedef struct sSirActiveModeSetBcnFilterReq
4467{
4468 tANI_U16 messageType;
4469 tANI_U16 length;
4470 tANI_U8 seesionId;
4471} tSirSetActiveModeSetBncFilterReq, *tpSirSetActiveModeSetBncFilterReq;
4472
Sandeep Puligilla11d49a62014-01-30 12:05:16 +05304473typedef enum
4474{
4475 HT40_OBSS_SCAN_PARAM_START,
4476 HT40_OBSS_SCAN_PARAM_UPDATE
4477}tHT40OBssScanCmdType;
4478
4479typedef struct sSirSmeHT40StopOBSSScanInd
4480{
4481 tANI_U16 messageType;
4482 tANI_U16 length;
4483 tANI_U8 seesionId;
4484} tSirSmeHT40OBSSStopScanInd, *tpSirSmeHT40OBSSStopScanInd;
4485
4486typedef struct sSirSmeHT40OBSSScanInd
4487{
4488 tANI_U16 messageType;
4489 tANI_U16 length;
Sandeep Puligilla9f384742014-04-11 02:27:04 +05304490 tSirMacAddr peerMacAddr;
Sandeep Puligilla11d49a62014-01-30 12:05:16 +05304491} tSirSmeHT40OBSSScanInd, *tpSirSmeHT40OBSSScanInd;
4492
4493typedef struct sSirHT40OBSSScanInd
4494{
4495 tHT40OBssScanCmdType cmdType;
4496 tSirScanType scanType;
4497 tANI_U16 OBSSScanPassiveDwellTime; // In TUs
4498 tANI_U16 OBSSScanActiveDwellTime; // In TUs
4499 tANI_U16 BSSChannelWidthTriggerScanInterval; // In seconds
4500 tANI_U16 OBSSScanPassiveTotalPerChannel; // In TU
4501 tANI_U16 OBSSScanActiveTotalPerChannel; // In TUs
4502 tANI_U16 BSSWidthChannelTransitionDelayFactor;
4503 tANI_U16 OBSSScanActivityThreshold;
4504 tANI_U8 selfStaIdx;
4505 tANI_U8 bssIdx;
4506 tANI_U8 fortyMHZIntolerent;
4507 tANI_U8 channelCount;
4508 tANI_U8 channels[SIR_ROAM_MAX_CHANNELS];
4509 tANI_U8 currentOperatingClass;
4510 tANI_U16 ieFieldLen;
4511 tANI_U8 ieField[SIR_ROAM_SCAN_MAX_PB_REQ_SIZE];
4512} tSirHT40OBSSScanInd, *tpSirHT40OBSSScanInd;
4513
4514
Gopichand Nakkalacca24d12013-03-07 17:05:07 +05304515//Reset AP Caps Changed
4516typedef struct sSirResetAPCapsChange
4517{
4518 tANI_U16 messageType;
4519 tANI_U16 length;
4520 tSirMacAddr bssId;
4521} tSirResetAPCapsChange, *tpSirResetAPCapsChange;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07004522/// Definition for Candidate found indication from FW
4523typedef struct sSirSmeCandidateFoundInd
4524{
4525 tANI_U16 messageType; // eWNI_SME_CANDIDATE_FOUND_IND
4526 tANI_U16 length;
4527 tANI_U8 sessionId; // Session Identifier
4528} tSirSmeCandidateFoundInd, *tpSirSmeCandidateFoundInd;
Yathish9f22e662012-12-10 14:21:35 -08004529
Chet Lanctot186b5732013-03-18 10:26:30 -07004530#ifdef WLAN_FEATURE_11W
4531typedef struct sSirWlanExcludeUnencryptParam
4532{
4533 tANI_BOOLEAN excludeUnencrypt;
4534 tSirMacAddr bssId;
4535}tSirWlanExcludeUnencryptParam,*tpSirWlanExcludeUnencryptParam;
4536#endif
4537
Varun Reddy Yeturucc661d22013-05-20 11:47:10 -07004538typedef struct sAniHandoffReq
4539{
4540 // Common for all types are requests
4541 tANI_U16 msgType; // message type is same as the request type
4542 tANI_U16 msgLen; // length of the entire request
4543 tANI_U8 sessionId;
4544 tANI_U8 bssid[WNI_CFG_BSSID_LEN];
4545 tANI_U8 channel;
4546} tAniHandoffReq, *tpAniHandoffReq;
4547
Ganesh Kondabattinif0fa07c2013-06-11 17:47:49 +05304548typedef struct sSirScanOffloadReq {
4549 tANI_U8 sessionId;
4550 tSirMacAddr bssId;
4551 tANI_U8 numSsid;
4552 tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
4553 tANI_U8 hiddenSsid;
4554 tSirMacAddr selfMacAddr;
4555 tSirBssType bssType;
4556 tANI_U8 dot11mode;
4557 tSirScanType scanType;
4558 tANI_U32 minChannelTime;
4559 tANI_U32 maxChannelTime;
4560 tANI_BOOLEAN p2pSearch;
4561 tANI_U16 uIEFieldLen;
4562 tANI_U16 uIEFieldOffset;
4563 tSirChannelList channelList;
4564 /*-----------------------------
4565 sSirScanOffloadReq....
4566 -----------------------------
4567 uIEFieldLen
4568 -----------------------------
4569 uIEFieldOffset ----+
4570 ----------------------------- |
4571 channelList.numChannels |
4572 ----------------------------- |
4573 ... variable size up to |
4574 channelNumber[numChannels-1] |
4575 This can be zero, if |
4576 numChannel is zero. |
4577 ----------------------------- <--+
4578 ... variable size uIEField
4579 up to uIEFieldLen (can be 0)
4580 -----------------------------*/
4581} tSirScanOffloadReq, *tpSirScanOffloadReq;
Gopichand Nakkala2c231c82013-06-11 17:49:16 +05304582
4583typedef enum sSirScanEventType {
4584 SCAN_EVENT_STARTED=0x1, /* Scan command accepted by FW */
4585 SCAN_EVENT_COMPLETED=0x2, /* Scan has been completed by FW */
4586 SCAN_EVENT_BSS_CHANNEL=0x4, /* FW is going to move to HOME channel */
4587 SCAN_EVENT_FOREIGN_CHANNEL = 0x8,/* FW is going to move to FORIEGN channel */
4588 SCAN_EVENT_DEQUEUED=0x10, /* scan request got dequeued */
4589 SCAN_EVENT_PREEMPTED=0x20, /* preempted by other high priority scan */
4590 SCAN_EVENT_START_FAILED=0x40, /* scan start failed */
4591 SCAN_EVENT_RESTARTED=0x80, /*scan restarted*/
4592 SCAN_EVENT_MAX=0x8000
4593} tSirScanEventType;
4594
4595typedef struct sSirScanOffloadEvent{
4596 tSirScanEventType event;
4597 tSirResultCodes reasonCode;
4598 tANI_U32 chanFreq;
4599 tANI_U32 requestor;
4600 tANI_U32 scanId;
4601} tSirScanOffloadEvent, *tpSirScanOffloadEvent;
4602
Gopichand Nakkalaf72a3872013-06-11 17:51:13 +05304603typedef struct sSirUpdateChanParam
4604{
4605 tANI_U8 chanId;
4606 tANI_U8 pwr;
Leela Venkata Kiran Kumar Reddy Chiralac6663f72014-02-03 21:04:58 -08004607 tANI_BOOLEAN dfsSet;
Gopichand Nakkalaf72a3872013-06-11 17:51:13 +05304608} tSirUpdateChanParam, *tpSirUpdateChanParam;
4609
4610typedef struct sSirUpdateChan
4611{
Sachin Ahujacb64fc82015-01-12 17:01:05 +05304612 tANI_U8 regId;
Gopichand Nakkalaf72a3872013-06-11 17:51:13 +05304613 tANI_U8 numChan;
4614 tSirUpdateChanParam chanParam[1];
4615} tSirUpdateChanList, *tpSirUpdateChanList;
4616
Leo Chang9056f462013-08-01 19:21:11 -07004617#ifdef FEATURE_WLAN_LPHB
4618#define SIR_LPHB_FILTER_LEN 64
4619
4620typedef enum
4621{
4622 LPHB_SET_EN_PARAMS_INDID,
4623 LPHB_SET_TCP_PARAMS_INDID,
4624 LPHB_SET_TCP_PKT_FILTER_INDID,
4625 LPHB_SET_UDP_PARAMS_INDID,
4626 LPHB_SET_UDP_PKT_FILTER_INDID,
4627 LPHB_SET_NETWORK_INFO_INDID,
4628} LPHBIndType;
4629
4630typedef struct sSirLPHBEnableStruct
4631{
4632 v_U8_t enable;
4633 v_U8_t item;
4634 v_U8_t session;
4635} tSirLPHBEnableStruct;
4636
4637typedef struct sSirLPHBTcpParamStruct
4638{
4639 v_U32_t srv_ip;
4640 v_U32_t dev_ip;
4641 v_U16_t src_port;
4642 v_U16_t dst_port;
4643 v_U16_t timeout;
4644 v_U8_t session;
4645 tSirMacAddr gateway_mac;
Leo Changd9df8aa2013-09-26 13:32:26 -07004646 uint16 timePeriodSec; // in seconds
4647 uint32 tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -07004648} tSirLPHBTcpParamStruct;
4649
4650typedef struct sSirLPHBTcpFilterStruct
4651{
4652 v_U16_t length;
4653 v_U8_t offset;
4654 v_U8_t session;
4655 v_U8_t filter[SIR_LPHB_FILTER_LEN];
4656} tSirLPHBTcpFilterStruct;
4657
4658typedef struct sSirLPHBUdpParamStruct
4659{
4660 v_U32_t srv_ip;
4661 v_U32_t dev_ip;
4662 v_U16_t src_port;
4663 v_U16_t dst_port;
4664 v_U16_t interval;
4665 v_U16_t timeout;
4666 v_U8_t session;
4667 tSirMacAddr gateway_mac;
4668} tSirLPHBUdpParamStruct;
4669
4670typedef struct sSirLPHBUdpFilterStruct
4671{
4672 v_U16_t length;
4673 v_U8_t offset;
4674 v_U8_t session;
4675 v_U8_t filter[SIR_LPHB_FILTER_LEN];
4676} tSirLPHBUdpFilterStruct;
4677
4678typedef struct sSirLPHBReq
4679{
4680 v_U16_t cmd;
4681 v_U16_t dummy;
4682 union
4683 {
4684 tSirLPHBEnableStruct lphbEnableReq;
4685 tSirLPHBTcpParamStruct lphbTcpParamReq;
4686 tSirLPHBTcpFilterStruct lphbTcpFilterReq;
4687 tSirLPHBUdpParamStruct lphbUdpParamReq;
4688 tSirLPHBUdpFilterStruct lphbUdpFilterReq;
4689 } params;
4690} tSirLPHBReq;
4691
Leo Changd9df8aa2013-09-26 13:32:26 -07004692typedef struct sSirLPHBInd
Leo Chang9056f462013-08-01 19:21:11 -07004693{
4694 v_U8_t sessionIdx;
4695 v_U8_t protocolType; /*TCP or UDP*/
4696 v_U8_t eventReason;
Leo Changd9df8aa2013-09-26 13:32:26 -07004697} tSirLPHBInd;
Leo Chang9056f462013-08-01 19:21:11 -07004698#endif /* FEATURE_WLAN_LPHB */
4699
Yue Mab9c86f42013-08-14 15:59:08 -07004700typedef struct sSirAddPeriodicTxPtrn
4701{
4702 /* MAC Address for the adapter */
4703 tSirMacAddr macAddress;
4704
4705 tANI_U8 ucPtrnId; // Pattern ID
4706 tANI_U16 ucPtrnSize; // Pattern size
4707 tANI_U32 usPtrnIntervalMs; // In msec
4708 tANI_U8 ucPattern[PERIODIC_TX_PTRN_MAX_SIZE]; // Pattern buffer
4709} tSirAddPeriodicTxPtrn, *tpSirAddPeriodicTxPtrn;
4710
4711typedef struct sSirDelPeriodicTxPtrn
4712{
4713 /* MAC Address for the adapter */
4714 tSirMacAddr macAddress;
4715
4716 /* Bitmap of pattern IDs that need to be deleted */
4717 tANI_U32 ucPatternIdBitmap;
4718} tSirDelPeriodicTxPtrn, *tpSirDelPeriodicTxPtrn;
4719
Chittajit Mitraf5413a42013-10-18 14:20:08 -07004720typedef struct sSirRateUpdateInd
4721{
4722 /* 0 implies RA, positive value implies fixed rate, -1 implies ignore this
4723 * param.
4724 */
4725 tANI_S32 ucastDataRate;
4726
4727 /* TX flag to differentiate between HT20, HT40 etc */
4728 tTxrateinfoflags ucastDataRateTxFlag;
4729
4730 /* BSSID - Optional. 00-00-00-00-00-00 implies apply to all BCAST STAs */
4731 tSirMacAddr bssid;
4732
4733 /*
4734 * 0 implies MCAST RA, positive value implies fixed rate,
4735 * -1 implies ignore this param
4736 */
4737 tANI_S32 reliableMcastDataRate;//unit Mbpsx10
4738
4739 /* TX flag to differentiate between HT20, HT40 etc */
4740 tTxrateinfoflags reliableMcastDataRateTxFlag;
4741
4742 /*
4743 * MCAST(or BCAST) fixed data rate in 2.4 GHz, unit Mbpsx10,
4744 * 0 implies ignore
4745 */
4746 tANI_U32 mcastDataRate24GHz;
4747
4748 /* TX flag to differentiate between HT20, HT40 etc */
4749 tTxrateinfoflags mcastDataRate24GHzTxFlag;
4750
4751 /*
4752 * MCAST(or BCAST) fixed data rate in 5 GHz,
4753 * unit Mbpsx10, 0 implies ignore
4754 */
4755 tANI_U32 mcastDataRate5GHz;
4756
4757 /* TX flag to differentiate between HT20, HT40 etc */
4758 tTxrateinfoflags mcastDataRate5GHzTxFlag;
4759
4760} tSirRateUpdateInd, *tpSirRateUpdateInd;
4761
Rajeev79dbe4c2013-10-05 11:03:42 +05304762#ifdef FEATURE_WLAN_BATCH_SCAN
4763// Set batch scan resposne from FW
4764typedef struct
4765{
4766 /*maximum number of scans which FW can cache*/
4767 tANI_U32 nScansToBatch;
4768} tSirSetBatchScanRsp, *tpSirSetBatchScanRsp;
4769
4770// Set batch scan request to FW
4771typedef struct
4772{
4773 tANI_U32 scanFrequency; /* how frequent to do scan - default 30Sec*/
4774 tANI_U32 numberOfScansToBatch; /* number of scans to batch */
4775 tANI_U32 bestNetwork; /* best networks in terms of rssi */
4776 tANI_U8 rfBand; /* band to scan :
4777 0 ->both Band, 1->2.4Ghz Only
4778 and 2-> 5GHz Only */
4779 tANI_U32 rtt; /* set if required to do RTT it is not
4780 supported in current version */
4781} tSirSetBatchScanReq, *tpSirSetBatchScanReq;
4782
4783
4784// Stop batch scan request to FW
4785typedef struct
4786{
4787 tANI_U32 param;
4788} tSirStopBatchScanInd, *tpSirStopBatchScanInd;
4789
4790// Trigger batch scan result indication to FW
4791typedef struct
4792{
4793 tANI_U32 param;
4794} tSirTriggerBatchScanResultInd, *tpSirTriggerBatchScanResultInd;
4795
4796// Batch scan result indication from FW
4797typedef PACKED_PRE struct PACKED_POST
4798{
4799 tANI_U8 bssid[6]; /* BSSID */
Rajeev Kumar1f7759a2014-01-23 15:21:47 -08004800 tANI_U8 ssid[33]; /* SSID */
Rajeev79dbe4c2013-10-05 11:03:42 +05304801 tANI_U8 ch; /* Channel */
c_hpothube955202014-05-22 18:07:00 +05304802 tANI_S8 rssi; /* RSSI or Level */
Rajeev79dbe4c2013-10-05 11:03:42 +05304803 /*Timestamp when Network was found. Used to calculate age based on timestamp
4804 in GET_RSP msg header */
4805 tANI_U32 timestamp;
4806} tSirBatchScanNetworkInfo, *tpSirBatchScanNetworkInfo;
4807
4808typedef PACKED_PRE struct PACKED_POST
4809{
4810 tANI_U32 scanId; /* Scan List ID. */
4811 /*No of AP in a Scan Result. Should be same as bestNetwork in SET_REQ msg*/
4812 tANI_U32 numNetworksInScanList;
4813 /*Variable data ptr: Number of AP in Scan List*/
4814 /*Following numNetworkInScanList is data of type tSirBatchScanNetworkInfo
4815 *of sizeof(tSirBatchScanNetworkInfo) * numNetworkInScanList */
4816 tANI_U8 scanList[1];
4817} tSirBatchScanList, *tpSirBatchScanList;
4818
4819typedef PACKED_PRE struct PACKED_POST
4820{
4821 tANI_U32 timestamp;
4822 tANI_U32 numScanLists;
4823 boolean isLastResult;
4824 /* Variable Data ptr: Number of Scan Lists*/
4825 /* following isLastResult is data of type tSirBatchScanList
4826 * of sizeof(tSirBatchScanList) * numScanLists*/
4827 tANI_U8 scanResults[1];
4828} tSirBatchScanResultIndParam, *tpSirBatchScanResultIndParam;
4829
4830#endif // FEATURE_WLAN_BATCH_SCAN
4831
Leo Chang0b0e45a2013-12-15 15:18:55 -08004832#ifdef FEATURE_WLAN_CH_AVOID
4833#define SIR_CH_AVOID_MAX_RANGE 4
4834
4835typedef struct sSirChAvoidFreqType
4836{
4837 tANI_U32 startFreq;
4838 tANI_U32 endFreq;
4839} tSirChAvoidFreqType;
4840
4841typedef struct sSirChAvoidIndType
4842{
4843 tANI_U32 avoidRangeCount;
4844 tSirChAvoidFreqType avoidFreqRange[SIR_CH_AVOID_MAX_RANGE];
4845} tSirChAvoidIndType;
4846#endif /* FEATURE_WLAN_CH_AVOID */
Rajeev79dbe4c2013-10-05 11:03:42 +05304847
c_hpothu92367912014-05-01 15:18:17 +05304848typedef void (*pGetBcnMissRateCB)( tANI_S32 bcnMissRate,
4849 VOS_STATUS status, void *data);
Abhishek Singh08aa7762014-12-16 13:59:03 +05304850typedef void (*tSirFWStatsCallback)(VOS_STATUS status,
4851 tSirFwStatsResult *fwStatsRsp, void *pContext);
c_hpothu92367912014-05-01 15:18:17 +05304852typedef PACKED_PRE struct PACKED_POST
4853{
4854 tANI_U32 msgLen;
4855 tANI_U8 bssid[WNI_CFG_BSSID_LEN];
4856 void *callback;
4857 void *data;
4858}tSirBcnMissRateReq;
4859
4860typedef PACKED_PRE struct PACKED_POST
4861{
4862 pGetBcnMissRateCB callback;
4863 void *data;
4864}tSirBcnMissRateInfo;
4865
Sunil Duttc69bccb2014-05-26 21:30:20 +05304866#ifdef WLAN_FEATURE_LINK_LAYER_STATS
4867
4868typedef struct
4869{
4870 u32 reqId;
Dino Mycled3d50022014-07-07 12:58:25 +05304871 tSirMacAddr macAddr;
Sunil Duttc69bccb2014-05-26 21:30:20 +05304872 u32 mpduSizeThreshold;
4873 u32 aggressiveStatisticsGathering;
4874}tSirLLStatsSetReq, *tpSirLLStatsSetReq;
4875
4876typedef struct
4877{
4878 u32 reqId;
Dino Mycled3d50022014-07-07 12:58:25 +05304879 tSirMacAddr macAddr;
Sunil Duttc69bccb2014-05-26 21:30:20 +05304880 u32 paramIdMask;
4881}tSirLLStatsGetReq, *tpSirLLStatsGetReq;
4882
4883typedef struct
4884{
4885 u32 reqId;
Dino Mycled3d50022014-07-07 12:58:25 +05304886 tSirMacAddr macAddr;
Sunil Duttc69bccb2014-05-26 21:30:20 +05304887 u32 statsClearReqMask;
4888 u8 stopReq;
4889}tSirLLStatsClearReq, *tpSirLLStatsClearReq;
4890
Abhishek Singh3ae443b2014-10-08 11:49:27 +05304891typedef PACKED_PRE struct PACKED_POST
4892{
4893 u32 stats;
4894 tSirFWStatsCallback callback;
4895 void *data;
4896}tSirFWStatsGetReq;
4897
4898typedef PACKED_PRE struct PACKED_POST
4899{
4900 tSirFWStatsCallback callback;
4901 void *data;
4902}tSirFWStatsInfo;
4903
Sunil Duttc69bccb2014-05-26 21:30:20 +05304904/*---------------------------------------------------------------------------
4905 WLAN_HAL_LL_NOTIFY_STATS
4906---------------------------------------------------------------------------*/
4907
4908
4909/******************************LINK LAYER Statistics**********************/
4910
4911typedef int tSirWifiRadio;
4912typedef int tSirWifiChannel;
4913typedef int tSirwifiTxRate;
4914
4915/* channel operating width */
4916typedef PACKED_PRE enum PACKED_POST
4917{
4918 WIFI_CHAN_WIDTH_20 = 0,
4919 WIFI_CHAN_WIDTH_40 = 1,
4920 WIFI_CHAN_WIDTH_80 = 2,
4921 WIFI_CHAN_WIDTH_160 = 3,
4922 WIFI_CHAN_WIDTH_80P80 = 4,
4923 WIFI_CHAN_WIDTH_5 = 5,
4924 WIFI_CHAN_WIDTH_10 = 6,
4925} tSirWifiChannelWidth;
4926
4927typedef PACKED_PRE enum PACKED_POST
4928{
4929 WIFI_DISCONNECTED = 0,
4930 WIFI_AUTHENTICATING = 1,
4931 WIFI_ASSOCIATING = 2,
4932 WIFI_ASSOCIATED = 3,
4933 WIFI_EAPOL_STARTED = 4, // if done by firmware/driver
4934 WIFI_EAPOL_COMPLETED = 5, // if done by firmware/driver
4935} tSirWifiConnectionState;
4936
4937typedef PACKED_PRE enum PACKED_POST
4938{
4939 WIFI_ROAMING_IDLE = 0,
4940 WIFI_ROAMING_ACTIVE = 1,
4941} tSirWifiRoamState;
4942
4943typedef PACKED_PRE enum PACKED_POST
4944{
Dino Myclec8f3f332014-07-21 16:48:27 +05304945 WIFI_INTERFACE_UNKNOWN = -1,
Sunil Duttc69bccb2014-05-26 21:30:20 +05304946 WIFI_INTERFACE_STA = 0,
4947 WIFI_INTERFACE_SOFTAP = 1,
4948 WIFI_INTERFACE_IBSS = 2,
4949 WIFI_INTERFACE_P2P_CLIENT = 3,
4950 WIFI_INTERFACE_P2P_GO = 4,
4951 WIFI_INTERFACE_NAN = 5,
4952 WIFI_INTERFACE_MESH = 6,
4953 } tSirWifiInterfaceMode;
4954
4955// set for QOS association
4956#define WIFI_CAPABILITY_QOS 0x00000001
4957// set for protected association (802.11 beacon frame control protected bit set)
4958#define WIFI_CAPABILITY_PROTECTED 0x00000002
4959// set if 802.11 Extended Capabilities element interworking bit is set
4960#define WIFI_CAPABILITY_INTERWORKING 0x00000004
4961// set for HS20 association
4962#define WIFI_CAPABILITY_HS20 0x00000008
4963// set is 802.11 Extended Capabilities element UTF-8 SSID bit is set
4964#define WIFI_CAPABILITY_SSID_UTF8 0x00000010
4965// set is 802.11 Country Element is present
4966#define WIFI_CAPABILITY_COUNTRY 0x00000020
4967
4968typedef PACKED_PRE struct PACKED_POST
4969{
4970 /*tSirWifiInterfaceMode*/
4971 // interface mode
Dino Myclec8f3f332014-07-21 16:48:27 +05304972 tANI_S8 mode;
Sunil Duttc69bccb2014-05-26 21:30:20 +05304973 // interface mac address (self)
4974 tSirMacAddr macAddr;
4975 /*tSirWifiConnectionState*/
4976 // connection state (valid for STA, CLI only)
4977 tANI_U8 state;
4978 /*tSirWifiRoamState*/
4979 // roaming state
4980 tANI_U8 roaming;
4981 // WIFI_CAPABILITY_XXX (self)
4982 tANI_U32 capabilities;
4983 // null terminated SSID
4984 tANI_U8 ssid[33];
4985 // bssid
4986 tSirMacAddr bssid;
4987 // country string advertised by AP
4988 tANI_U8 apCountryStr[WNI_CFG_COUNTRY_CODE_LEN];
4989 // country string for this association
4990 tANI_U8 countryStr[WNI_CFG_COUNTRY_CODE_LEN];
4991} tSirWifiInterfaceInfo, *tpSirWifiInterfaceInfo;
4992
4993/* channel information */
4994typedef PACKED_PRE struct PACKED_POST
4995{
4996 // channel width (20, 40, 80, 80+80, 160)
4997 tSirWifiChannelWidth width;
4998 // primary 20 MHz channel
4999 tSirWifiChannel centerFreq;
5000 // center frequency (MHz) first segment
5001 tSirWifiChannel centerFreq0;
5002 // center frequency (MHz) second segment
5003 tSirWifiChannel centerFreq1;
5004} tSirWifiChannelInfo, *tpSirWifiChannelInfo;
5005
5006/* wifi rate info */
5007typedef PACKED_PRE struct PACKED_POST
5008{
5009 // 0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved
5010 tANI_U32 preamble :3;
5011 // 0:1x1, 1:2x2, 3:3x3, 4:4x4
5012 tANI_U32 nss :2;
5013 // 0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz
5014 tANI_U32 bw :3;
5015 // OFDM/CCK rate code would be as per ieee std in the units of 0.5mbps
5016 // HT/VHT it would be mcs index
5017 tANI_U32 rateMcsIdx :8;
5018 // reserved
5019 tANI_U32 reserved :16;
5020 // units of 100 Kbps
5021 tANI_U32 bitrate;
5022} tSirWifiRate, *tpSirWifiRate;
5023
5024/* channel statistics */
5025typedef PACKED_PRE struct PACKED_POST
5026{
5027 // channel
5028 tSirWifiChannelInfo channel;
5029 // msecs the radio is awake (32 bits number accruing over time)
5030 tANI_U32 onTime;
5031 // msecs the CCA register is busy (32 bits number accruing over time)
5032 tANI_U32 ccaBusyTime;
5033} tSirWifiChannelStats, *tpSirWifiChannelStats;
5034
5035/* radio statistics */
5036typedef PACKED_PRE struct PACKED_POST
5037{
5038 // wifi radio (if multiple radio supported)
5039 tSirWifiRadio radio;
5040 // msecs the radio is awake (32 bits number accruing over time)
5041 tANI_U32 onTime;
5042 /* msecs the radio is transmitting
5043 * (32 bits number accruing over time)
5044 */
5045 tANI_U32 txTime;
5046 /* msecs the radio is in active receive
5047 *(32 bits number accruing over time)
5048 */
5049 tANI_U32 rxTime;
5050 /* msecs the radio is awake due to all scan
5051 * (32 bits number accruing over time)
5052 */
5053 tANI_U32 onTimeScan;
5054 /* msecs the radio is awake due to NAN
5055 * (32 bits number accruing over time)
5056 */
5057 tANI_U32 onTimeNbd;
Dino Mycle2c198072014-06-10 10:15:52 +05305058 /* msecs the radio is awake due to EXTScan
Sunil Duttc69bccb2014-05-26 21:30:20 +05305059 * (32 bits number accruing over time)
5060 */
Dino Mycle2c198072014-06-10 10:15:52 +05305061 tANI_U32 onTimeEXTScan;
Sunil Duttc69bccb2014-05-26 21:30:20 +05305062 /* msecs the radio is awake due to roam?scan
5063 * (32 bits number accruing over time)
5064 */
5065 tANI_U32 onTimeRoamScan;
5066 /* msecs the radio is awake due to PNO scan
5067 * (32 bits number accruing over time)
5068 */
5069 tANI_U32 onTimePnoScan;
5070 /* msecs the radio is awake due to HS2.0 scans and GAS exchange
5071 * (32 bits number accruing over time)
5072 */
5073 tANI_U32 onTimeHs20;
5074 // number of channels
5075 tANI_U32 numChannels;
5076 // channel statistics tSirWifiChannelStats
5077 tSirWifiChannelStats channels[1];
5078} tSirWifiRadioStat, *tpSirWifiRadioStat;
5079
5080/* per rate statistics */
5081typedef PACKED_PRE struct PACKED_POST
5082{
5083 // rate information
5084 tSirWifiRate rate;
5085 // number of successfully transmitted data pkts (ACK rcvd)
5086 tANI_U32 txMpdu;
5087 // number of received data pkts
5088 tANI_U32 rxMpdu;
5089 // number of data packet losses (no ACK)
5090 tANI_U32 mpduLost;
5091 // total number of data pkt retries *
5092 tANI_U32 retries;
5093 // number of short data pkt retries
5094 tANI_U32 retriesShort;
5095 // number of long data pkt retries
5096 tANI_U32 retriesLong;
5097} tSirWifiRateStat, *tpSirWifiRateStat;
5098
5099/* access categories */
5100typedef PACKED_PRE enum PACKED_POST
5101{
5102 WIFI_AC_VO = 0,
5103 WIFI_AC_VI = 1,
5104 WIFI_AC_BE = 2,
5105 WIFI_AC_BK = 3,
5106 WIFI_AC_MAX = 4,
5107} tSirWifiTrafficAc;
5108
5109/* wifi peer type */
5110typedef PACKED_PRE enum PACKED_POST
5111{
5112 WIFI_PEER_STA,
5113 WIFI_PEER_AP,
5114 WIFI_PEER_P2P_GO,
5115 WIFI_PEER_P2P_CLIENT,
5116 WIFI_PEER_NAN,
5117 WIFI_PEER_TDLS,
5118 WIFI_PEER_INVALID,
5119} tSirWifiPeerType;
5120
5121/* per peer statistics */
5122typedef PACKED_PRE struct PACKED_POST
5123{
5124 // peer type (AP, TDLS, GO etc.)
5125 tSirWifiPeerType type;
5126 // mac address
5127 tSirMacAddr peerMacAddress;
5128 // peer WIFI_CAPABILITY_XXX
5129 tANI_U32 capabilities;
5130 // number of rates
5131 tANI_U32 numRate;
5132 // per rate statistics, number of entries = num_rate
5133 tSirWifiRateStat rateStats[1];
5134} tSirWifiPeerInfo, *tpSirWifiPeerInfo;
5135
5136/* per access category statistics */
5137typedef PACKED_PRE struct PACKED_POST
5138{
5139 /*tSirWifiTrafficAc*/
5140 // access category (VI, VO, BE, BK)
5141 tANI_U8 ac;
5142 // number of successfully transmitted unicast data pkts (ACK rcvd)
5143 tANI_U32 txMpdu;
5144 // number of received unicast mpdus
5145 tANI_U32 rxMpdu;
5146 // number of succesfully transmitted multicast data packets
5147 // STA case: implies ACK received from AP for the unicast
5148 // packet in which mcast pkt was sent
5149 tANI_U32 txMcast;
5150 // number of received multicast data packets
5151 tANI_U32 rxMcast;
5152 // number of received unicast a-mpdus
5153 tANI_U32 rxAmpdu;
5154 // number of transmitted unicast a-mpdus
5155 tANI_U32 txAmpdu;
5156 // number of data pkt losses (no ACK)
5157 tANI_U32 mpduLost;
5158 // total number of data pkt retries
5159 tANI_U32 retries;
5160 // number of short data pkt retries
5161 tANI_U32 retriesShort;
5162 // number of long data pkt retries
5163 tANI_U32 retriesLong;
5164 // data pkt min contention time (usecs)
5165 tANI_U32 contentionTimeMin;
5166 // data pkt max contention time (usecs)
5167 tANI_U32 contentionTimeMax;
5168 // data pkt avg contention time (usecs)
5169 tANI_U32 contentionTimeAvg;
5170 // num of data pkts used for contention statistics
5171 tANI_U32 contentionNumSamples;
5172} tSirWifiWmmAcStat, *tpSirWifiWmmAcStat;
5173
5174/* Interface statistics - corresponding to 2nd most
5175 * LSB in wifi statistics bitmap for getting statistics
5176 */
5177typedef PACKED_PRE struct PACKED_POST
5178{
5179 // current state of the interface
5180 tSirWifiInterfaceInfo info;
5181 // access point beacon received count from connected AP
5182 tANI_U32 beaconRx;
5183 // access point mgmt frames received count from
5184 // connected AP (including Beacon)
5185 tANI_U32 mgmtRx;
5186 // action frames received count
5187 tANI_U32 mgmtActionRx;
5188 // action frames transmit count
5189 tANI_U32 mgmtActionTx;
5190 // access Point Beacon and Management frames RSSI (averaged)
Dino Mycle3b9536d2014-07-09 22:05:24 +05305191 tANI_S32 rssiMgmt;
Sunil Duttc69bccb2014-05-26 21:30:20 +05305192 // access Point Data Frames RSSI (averaged) from connected AP
Dino Mycle3b9536d2014-07-09 22:05:24 +05305193 tANI_S32 rssiData;
Sunil Duttc69bccb2014-05-26 21:30:20 +05305194 // access Point ACK RSSI (averaged) from connected AP
Dino Mycle3b9536d2014-07-09 22:05:24 +05305195 tANI_S32 rssiAck;
Sunil Duttc69bccb2014-05-26 21:30:20 +05305196 // per ac data packet statistics
5197 tSirWifiWmmAcStat AccessclassStats[WIFI_AC_MAX];
5198} tSirWifiIfaceStat, *tpSirWifiIfaceStat;
5199
5200/* Peer statistics - corresponding to 3rd most LSB in
5201 * wifi statistics bitmap for getting statistics
5202 */
5203typedef PACKED_PRE struct PACKED_POST
5204{
5205 // number of peers
5206 tANI_U32 numPeers;
5207 // per peer statistics
5208 tSirWifiPeerInfo peerInfo[1];
5209} tSirWifiPeerStat, *tpSirWifiPeerStat;
5210
5211/* wifi statistics bitmap for getting statistics */
5212#define WMI_LINK_STATS_RADIO 0x00000001
5213#define WMI_LINK_STATS_IFACE 0x00000002
5214#define WMI_LINK_STATS_ALL_PEER 0x00000004
5215#define WMI_LINK_STATS_PER_PEER 0x00000008
5216
5217/* wifi statistics bitmap for clearing statistics */
5218// all radio statistics
5219#define WIFI_STATS_RADIO 0x00000001
5220// cca_busy_time (within radio statistics)
5221#define WIFI_STATS_RADIO_CCA 0x00000002
5222// all channel statistics (within radio statistics)
5223#define WIFI_STATS_RADIO_CHANNELS 0x00000004
5224// all scan statistics (within radio statistics)
5225#define WIFI_STATS_RADIO_SCAN 0x00000008
5226// all interface statistics
5227#define WIFI_STATS_IFACE 0x00000010
5228// all tx rate statistics (within interface statistics)
5229#define WIFI_STATS_IFACE_TXRATE 0x00000020
5230// all ac statistics (within interface statistics)
5231#define WIFI_STATS_IFACE_AC 0x00000040
5232// all contention (min, max, avg) statistics (within ac statistics)
5233#define WIFI_STATS_IFACE_CONTENTION 0x00000080
5234
5235typedef PACKED_PRE struct PACKED_POST
5236{
5237 tANI_U32 paramId;
5238 tANI_U8 ifaceId;
5239 tANI_U32 respId;
5240 tANI_U32 moreResultToFollow;
5241 tANI_U8 result[1];
5242} tSirLLStatsResults, *tpSirLLStatsResults;
5243
5244#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
5245
Dino Mycle2c198072014-06-10 10:15:52 +05305246#ifdef WLAN_FEATURE_EXTSCAN
5247
5248typedef enum
5249{
5250 WIFI_BAND_UNSPECIFIED,
5251 WIFI_BAND_BG = 1, // 2.4 GHz
5252 WIFI_BAND_A = 2, // 5 GHz without DFS
5253 WIFI_BAND_ABG = 3, // 2.4 GHz + 5 GHz; no DFS
5254 WIFI_BAND_A_DFS_ONLY = 4, // 5 GHz DFS only
5255 // 5 is reserved
5256 WIFI_BAND_A_WITH_DFS = 6, // 5 GHz with DFS
5257 WIFI_BAND_ABG_WITH_DFS = 7, // 2.4 GHz + 5 GHz with DFS
5258
5259 /* Keep it last */
5260 WIFI_BAND_MAX
5261} tWifiBand;
5262
5263/* wifi scan related events */
5264typedef enum
5265{
5266 WIFI_SCAN_BUFFER_FULL,
5267 WIFI_SCAN_COMPLETE,
5268} tWifiScanEventType;
5269
5270typedef struct
5271{
5272 tSirMacAddr bssid; // AP BSSID
5273 tANI_S32 low; // low threshold
5274 tANI_S32 high; // high threshold
5275 tANI_U32 channel; // channel hint
5276} tSirAPThresholdParam, *tpSirAPThresholdParam;
5277
5278typedef struct
5279{
5280 tANI_U32 requestId;
5281 tANI_U8 sessionId;
5282} tSirGetEXTScanCapabilitiesReqParams, *tpSirGetEXTScanCapabilitiesReqParams;
5283
5284typedef struct
5285{
5286 tANI_U32 requestId;
5287 tANI_U32 status;
5288
5289 tANI_U32 scanCacheSize;
5290 tANI_U32 scanBuckets;
5291 tANI_U32 maxApPerScan;
5292 tANI_U32 maxRssiSampleSize;
5293 tANI_U32 maxScanReportingThreshold;
5294
5295 tANI_U32 maxHotlistAPs;
5296 tANI_U32 maxSignificantWifiChangeAPs;
5297
5298 tANI_U32 maxBsidHistoryEntries;
5299} tSirEXTScanCapabilitiesEvent, *tpSirEXTScanCapabilitiesEvent;
5300
5301/* WLAN_HAL_EXT_SCAN_RESULT_IND */
5302typedef struct
5303{
5304 tANI_U32 requestId;
5305 tANI_U8 sessionId;
5306
5307 /*
5308 * 1 return cached results and flush it
5309 * 0 return cached results and do not flush
5310 */
5311 tANI_BOOLEAN flush;
5312} tSirEXTScanGetCachedResultsReqParams, *tpSirEXTScanGetCachedResultsReqParams;
5313
5314typedef PACKED_PRE struct PACKED_POST
5315{
5316 tANI_U32 requestId;
5317 tANI_U32 status;
5318} tSirEXTScanGetCachedResultsRspParams, *tpSirEXTScanGetCachedResultsRspParams;
5319
5320typedef PACKED_PRE struct PACKED_POST
5321{
5322 tANI_U64 ts; // time of discovery
5323 tANI_U8 ssid[SIR_MAC_MAX_SSID_LENGTH + 1]; // null terminated SSID
5324 tSirMacAddr bssid; // BSSID
5325 tANI_U32 channel; // channel frequency in MHz
5326 tANI_S32 rssi; // RSSI in dBm
5327 tANI_U32 rtt; // RTT in nanoseconds
5328 tANI_U32 rtt_sd; // standard deviation in rtt
5329 tANI_U16 beaconPeriod; // period advertised in the beacon
5330 tANI_U16 capability; // capabilities advertised in the beacon
5331} tSirWifiScanResult, *tpSirWifiScanResult;
5332
5333/* WLAN_HAL_BSSID_HOTLIST_RESULT_IND */
5334
5335typedef PACKED_PRE struct PACKED_POST
5336{
5337 tANI_U32 requestId;
5338 tANI_U32 numOfAps; // numbers of APs
5339
5340 /*
5341 * 0 for last fragment
5342 * 1 still more fragment(s) coming
5343 */
5344 tANI_BOOLEAN moreData;
5345 tSirWifiScanResult ap[1];
5346} tSirWifiScanResultEvent, *tpSirWifiScanResultEvent;
5347
5348typedef PACKED_PRE struct PACKED_POST
5349{
5350 tANI_U8 elemId; // Element Identifier
5351 tANI_U8 ieLength; // length of IE data
5352 tANI_U8 *IEs; // IEs
5353} tSirInformationElement, *tpSirInformationElement;
5354
5355/* Reported when each probe response is received, if reportEvents
5356* enabled in tSirWifiScanCmdReqParams */
5357typedef struct
5358{
5359 tANI_U32 requestId;
5360
5361 /*
5362 * 0 for last fragment
5363 * 1 still more fragment(s) coming
5364 */
5365 tANI_BOOLEAN moreData;
5366 tSirWifiScanResult ap; // only 1 AP info for now
5367 tANI_U32 ieLength;
5368 tSirInformationElement *ie;
5369} tSirWifiFullScanResultEvent, *tpSirWifiFullScanResultEvent;
5370
5371
5372typedef struct
5373{
5374 tANI_U32 channel; // frequency
5375 tANI_U32 dwellTimeMs; // dwell time hint
5376 tANI_U8 passive; // 0 => active,
5377 // 1 => passive scan; ignored for DFS
5378 tANI_U8 chnlClass;
5379} tSirWifiScanChannelSpec, *tpSirWifiScanChannelSpec;
5380
5381typedef struct
5382{
5383 tANI_U8 bucket; // bucket index, 0 based
5384 tWifiBand band; // when UNSPECIFIED, use channel list
5385
5386 /*
5387 * desired period, in millisecond; if this is too
5388 * low, the firmware should choose to generate results as fast as
5389 * it can instead of failing the command byte
5390 */
5391 tANI_U32 period;
5392
5393 /*
5394 * 0 => normal reporting (reporting rssi history
5395 * only, when rssi history buffer is % full)
5396 * 1 => same as 0 + report a scan completion event after scanning
5397 * this bucket
5398 * 2 => same as 1 + forward scan results (beacons/probe responses + IEs)
5399 * in real time to HAL
5400 */
5401 tANI_U8 reportEvents;
5402
5403 tANI_U8 numChannels;
5404
5405 /*
5406 * channels to scan; these may include DFS channels
5407 */
5408 tSirWifiScanChannelSpec channels[WLAN_EXTSCAN_MAX_CHANNELS];
5409} tSirWifiScanBucketSpec, *tpSirWifiScanBucketSpec;
5410
5411typedef struct
5412{
5413 tANI_U32 requestId;
5414 tANI_U8 sessionId;
5415 tANI_U32 basePeriod; // base timer period
5416 tANI_U32 maxAPperScan;
5417
5418 /* in %, when buffer is this much full, wake up host */
5419 tANI_U32 reportThreshold;
5420
5421 tANI_U8 numBuckets;
5422 tSirWifiScanBucketSpec buckets[WLAN_EXTSCAN_MAX_BUCKETS];
5423} tSirEXTScanStartReqParams, *tpSirEXTScanStartReqParams;
5424
5425typedef PACKED_PRE struct PACKED_POST
5426{
5427 tANI_U32 requestId;
5428 tANI_U32 status;
5429} tSirEXTScanStartRspParams, *tpSirEXTScanStartRspParams;
5430
5431typedef struct
5432{
5433 tANI_U32 requestId;
5434 tANI_U8 sessionId;
5435} tSirEXTScanStopReqParams, *tpSirEXTScanStopReqParams;
5436
5437typedef PACKED_PRE struct PACKED_POST
5438{
5439 tANI_U32 requestId;
5440 tANI_U32 status;
5441} tSirEXTScanStopRspParams, *tpSirEXTScanStopRspParams;
5442
5443typedef struct
5444{
5445 tANI_U32 requestId;
5446 tANI_U8 sessionId; // session Id mapped to vdev_id
5447
5448 tANI_U32 numAp; // number of hotlist APs
5449 tSirAPThresholdParam ap[WLAN_EXTSCAN_MAX_HOTLIST_APS]; // hotlist APs
5450} tSirEXTScanSetBssidHotListReqParams, *tpSirEXTScanSetBssidHotListReqParams;
5451
5452typedef PACKED_PRE struct PACKED_POST
5453{
5454 tANI_U32 requestId;
5455 tANI_U32 status;
5456} tSirEXTScanSetBssidHotListRspParams, *tpSirEXTScanSetBssidHotListRspParams;
5457
5458typedef struct
5459{
5460 tANI_U32 requestId;
5461 tANI_U8 sessionId;
5462} tSirEXTScanResetBssidHotlistReqParams, *tpSirEXTScanResetBssidHotlistReqParams;
5463
5464typedef PACKED_PRE struct PACKED_POST
5465{
5466 tANI_U32 requestId;
5467 tANI_U32 status;
5468} tSirEXTScanResetBssidHotlistRspParams, *tpSirEXTScanResetBssidHotlistRspParams;
5469
5470typedef struct
5471{
5472 tANI_U32 requestId;
5473 tANI_U8 sessionId;
5474
5475 /* number of samples for averaging RSSI */
5476 tANI_U32 rssiSampleSize;
5477
5478 /* number of missed samples to confirm AP loss */
5479 tANI_U32 lostApSampleSize;
5480
5481 /* number of APs breaching threshold required for firmware
5482 * to generate event
5483 */
5484 tANI_U32 minBreaching;
5485
5486 tANI_U32 numAp;
5487 tSirAPThresholdParam ap[WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS];
5488} tSirEXTScanSetSignificantChangeReqParams,
5489 *tpSirEXTScanSetSignificantChangeReqParams;
5490
5491typedef PACKED_PRE struct PACKED_POST
5492{
5493 tANI_U32 requestId;
5494 tANI_U32 status;
5495} tSirEXTScanSetSignificantChangeRspParams,
5496 *tpSirEXTScanSetSignificantChangeRspParams;
5497
5498/*---------------------------------------------------------------------------
5499 * WLAN_HAL_SIG_RSSI_RESULT_IND
5500 *-------------------------------------------------------------------------*/
5501
5502typedef PACKED_PRE struct PACKED_POST
5503{
5504 tSirMacAddr bssid; // BSSID
5505 tANI_U32 channel; // channel frequency in MHz
5506 tANI_U8 numRssi; // number of rssi samples
5507 tANI_S32 rssi[WLAN_EXTSCAN_MAX_RSSI_SAMPLE_SIZE]; // RSSI history in db
5508} tSirSigRssiResultParams, *tpSirSigRssiResultParams;
5509
5510typedef PACKED_PRE struct PACKED_POST
5511{
5512 tANI_U32 requestId;
5513 tANI_U32 numSigRssiBss;
5514 tANI_BOOLEAN moreData;
5515 tSirSigRssiResultParams sigRssiResult[1];
5516} tSirWifiSignificantChangeEvent, *tpSirWifiSignificantChangeEvent;
5517
5518typedef struct
5519{
5520 tANI_U32 requestId;
5521 tANI_U8 sessionId;
5522} tSirEXTScanResetSignificantChangeReqParams,
5523 *tpSirEXTScanResetSignificantChangeReqParams;
5524
5525typedef PACKED_PRE struct PACKED_POST
5526{
5527 tANI_U32 requestId;
5528 tANI_U32 status;
5529} tSirEXTScanResetSignificantChangeRspParams,
5530 *tpSirEXTScanResetSignificantChangeRspParams;
5531
5532/*---------------------------------------------------------------------------
5533 * * WLAN_HAL_EXTSCAN_RESULT_AVAILABLE_IND
5534 * *-------------------------------------------------------------------------*/
5535typedef PACKED_PRE struct PACKED_POST
5536{
5537 tANI_U32 requestId;
5538 tANI_U32 numResultsAvailable;
5539} tSirEXTScanResultsAvailableIndParams,
5540 *tpSirEXTScanResultsAvailableIndParams;
5541
5542typedef PACKED_PRE struct PACKED_POST
5543{
5544 tANI_U8 scanEventType;
5545 tANI_U32 status;
5546} tSirEXTScanOnScanEventIndParams,
5547 *tpSirEXTScanOnScanEventIndParams;
5548
5549/*---------------------------------------------------------------------------
5550 * * WLAN_HAL_EXTSCAN_PROGRESS_IND
5551 * *-------------------------------------------------------------------------*/
5552
5553typedef PACKED_PRE enum PACKED_POST
5554{
5555 WLAN_HAL_EXTSCAN_BUFFER_FULL,
5556 WLAN_HAL_EXTSCAN_COMPLETE,
5557}tSirEXTScanProgressEventType;
5558
5559typedef PACKED_PRE struct PACKED_POST
5560{
5561 tANI_U32 requestId;
5562 tANI_U32 status;
5563 tSirEXTScanProgressEventType extScanEventType;
5564}tSirEXTScanProgressIndParams,
5565 *tpSirEXTScanProgressIndParams;
5566
5567
5568
5569#endif /* WLAN_FEATURE_EXTSCAN */
5570
Siddharth Bhal6af5d4e2014-09-29 21:11:16 +05305571typedef struct
5572{
5573 tANI_U16 messageType;
5574 tANI_U16 length;
5575 tSirMacAddr macAddr;
5576} tSirSpoofMacAddrReq, *tpSirSpoofMacAddrReq;
5577
Srinivas Dasarib8fdd422014-11-27 10:44:20 +05305578typedef struct
5579{
5580 //BIT order is most likely little endian.
5581 //This structure is for netowkr-order byte array (or big-endian byte order)
5582#ifndef WLAN_PAL_BIG_ENDIAN_BIT
5583 tANI_U8 protVer :2;
5584 tANI_U8 type :2;
5585 tANI_U8 subType :4;
5586
5587 tANI_U8 toDS :1;
5588 tANI_U8 fromDS :1;
5589 tANI_U8 moreFrag :1;
5590 tANI_U8 retry :1;
5591 tANI_U8 powerMgmt :1;
5592 tANI_U8 moreData :1;
5593 tANI_U8 wep :1;
5594 tANI_U8 order :1;
5595
5596#else
5597
5598 tANI_U8 subType :4;
5599 tANI_U8 type :2;
5600 tANI_U8 protVer :2;
5601
5602 tANI_U8 order :1;
5603 tANI_U8 wep :1;
5604 tANI_U8 moreData :1;
5605 tANI_U8 powerMgmt :1;
5606 tANI_U8 retry :1;
5607 tANI_U8 moreFrag :1;
5608 tANI_U8 fromDS :1;
5609 tANI_U8 toDS :1;
5610
5611#endif
5612
5613} tSirFC;
5614
5615typedef struct
5616{
5617 /* Frame control field */
5618 tSirFC frameCtrl;
5619 /* Duration ID */
5620 tANI_U16 usDurationId;
5621 /* Address 1 field */
5622 tSirMacAddr vA1;
5623 /* Address 2 field */
5624 tSirMacAddr vA2;
5625 /* Address 3 field */
5626 tSirMacAddr vA3;
5627 /* Sequence control field */
5628 tANI_U16 sSeqCtrl;
5629 /* Optional A4 address */
5630 tSirMacAddr optvA4;
5631 /* Optional QOS control field */
5632 tANI_U16 usQosCtrl;
5633}tSir80211Header;
5634// Definition for Encryption Keys
5635//typedef struct sSirKeys
5636typedef struct
5637{
5638 tANI_U8 keyId;
5639 tANI_U8 unicast; // 0 for multicast
5640 tAniKeyDirection keyDirection;
5641 tANI_U8 keyRsc[WLAN_MAX_KEY_RSC_LEN]; // Usage is unknown
5642 tANI_U8 paeRole; // =1 for authenticator,
5643 // =0 for supplicant
5644 tANI_U16 keyLength;
5645 tANI_U8 key[SIR_MAC_MAX_KEY_LENGTH];
5646} tMacKeys, *tpMacKeys;
5647
5648typedef enum
5649{
5650 eMAC_WEP_STATIC,
5651 eMAC_WEP_DYNAMIC,
5652} tMacWepType;
5653
5654/*
5655 * This is used by PE to configure the key information on a given station.
5656 * When the secType is WEP40 or WEP104, the defWEPIdx is used to locate
5657 * a preconfigured key from a BSS the station assoicated with; otherwise
5658 * a new key descriptor is created based on the key field.
5659 */
5660//typedef struct
5661typedef struct
5662{
5663 tANI_U16 staIdx;
5664 tAniEdType encType; // Encryption/Decryption type
5665 tMacWepType wepType; // valid only for WEP
5666 tANI_U8 defWEPIdx; // Default WEP key, valid only for static WEP, must between 0 and 3
5667 tMacKeys key[SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS]; // valid only for non-static WEP encyrptions
5668 tANI_U8 singleTidRc; // 1=Single TID based Replay Count, 0=Per TID based RC
5669 tANI_U8 sessionId; // PE session id for PE<->HAL interface
5670} tSirSetStaKeyParams, *tpSirSetStaKeyParams;
5671
5672//typedef struct
5673typedef struct
5674{
5675 tSirSetStaKeyParams keyParams;
5676 tANI_U8 pn[6];
5677}tSirencConfigParams;
5678
5679typedef struct
5680{
5681 tANI_U16 length;
5682 tANI_U8 data[WLAN_DISA_MAX_PAYLOAD_SIZE];
5683}tSirpayload;
5684
5685typedef struct
5686{
5687 tSir80211Header macHeader;
5688 tSirencConfigParams encParams;
5689 tSirpayload data;
5690}tSirpkt80211;
5691
5692typedef struct
5693{
5694 tANI_U32 status;
5695 tSirpayload encryptedPayload;
5696} tSetEncryptedDataRspParams, *tpSetEncryptedDataRspParams;
5697
5698typedef struct
5699{
5700 tANI_U16 mesgType;
5701 tANI_U16 mesgLen;
5702 tSetEncryptedDataRspParams encryptedDataRsp;
5703} tSirEncryptedDataRspParams, *tpSirEncryptedDataRspParams;
c_hpothua3d45d52015-01-05 14:11:17 +05305704
5705typedef enum eSirAbortScanStatus
5706{
5707 eSIR_ABORT_ACTIVE_SCAN_LIST_EMPTY,
5708 eSIR_ABORT_ACTIVE_SCAN_LIST_NOT_EMPTY,
5709 eSIR_ABORT_SCAN_FAILURE
5710}tSirAbortScanStatus;
5711
Masti, Narayanraddi4b359dd2015-02-03 15:49:29 +05305712/* Max number of rates allowed in Supported Rates IE */
5713#define MAX_NUM_SUPPORTED_RATES (8)
5714
Girish Gowlia95daca2015-02-04 20:31:31 +05305715typedef struct sSirSmeUpdateMaxRateParams
5716{
5717 tANI_U32 maxRateFlag;
5718 tANI_U8 smeSessionId;
5719}tSirSmeUpdateMaxRateParams, *tpSirSmeUpdateMaxRateParams;
5720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721#endif /* __SIR_API_H */