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