blob: de49ab207ceb27d97e0eff65be6b0a5f433d941f [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
24 EDIT HISTORY FOR FILE
25
26
27 This section contains comments describing changes made to the module.
28 Notice that changes are listed in reverse chronological order.
29
30
31 $Header:$ $DateTime: $ $Author: $
32
33
34 when who what, where, why
35 -------- --- --------------------------------------------------------
36 07/27/09 kanand Created module.
37
38 ==========================================================================*/
39
40/*--------------------------------------------------------------------------
41 Include Files
42 ------------------------------------------------------------------------*/
43
44
45#include <linux/firmware.h>
46#include <linux/string.h>
47#include <wlan_hdd_includes.h>
48#include <wlan_hdd_main.h>
49#include <wlan_hdd_assoc.h>
50#include <wlan_hdd_cfg.h>
51#include <linux/string.h>
52#include <vos_types.h>
53#include <csrApi.h>
54#include <pmcApi.h>
55#include <wlan_hdd_misc.h>
56
Madan Mohan Koyyalamudi62b55b02012-12-03 16:45:39 -080057#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Madan Mohan Koyyalamudid5026072012-11-30 14:56:21 -080058static void cbNotifySetRoamPrefer5GHz(hdd_context_t *pHddCtx, unsigned long NotifyId)
59{
60 sme_UpdateRoamPrefer5GHz((tHalHandle)(pHddCtx->hHal), pHddCtx->cfg_ini->nRoamPrefer5GHz);
61}
Jeff Johnson295189b2012-06-20 16:38:30 -070062
Madan Mohan Koyyalamudi62b55b02012-12-03 16:45:39 -080063static void cbNotifySetImmediateRoamRssiDiff(hdd_context_t *pHddCtx, unsigned long NotifyId)
64{
65 sme_UpdateImmediateRoamRssiDiff((tHalHandle)(pHddCtx->hHal),
66 pHddCtx->cfg_ini->nImmediateRoamRssiDiff);
67}
68#endif
69
Jeff Johnson295189b2012-06-20 16:38:30 -070070REG_TABLE_ENTRY g_registry_table[] =
71{
72 REG_VARIABLE( CFG_RTS_THRESHOLD_NAME, WLAN_PARAM_Integer,
73 hdd_config_t, RTSThreshold,
74 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
75 CFG_RTS_THRESHOLD_DEFAULT,
76 CFG_RTS_THRESHOLD_MIN,
77 CFG_RTS_THRESHOLD_MAX ),
78
79 REG_VARIABLE( CFG_FRAG_THRESHOLD_NAME, WLAN_PARAM_Integer,
80 hdd_config_t, FragmentationThreshold,
81 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
82 CFG_FRAG_THRESHOLD_DEFAULT,
83 CFG_FRAG_THRESHOLD_MIN,
84 CFG_FRAG_THRESHOLD_MAX ),
85
86 REG_VARIABLE( CFG_CALIBRATION_NAME, WLAN_PARAM_Integer,
87 hdd_config_t, Calibration,
88 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
89 CFG_CALIBRATION_DEFAULT,
90 CFG_CALIBRATION_MIN,
91 CFG_CALIBRATION_MAX ),
92
93 REG_VARIABLE( CFG_CALIBRATION_PERIOD_NAME, WLAN_PARAM_Integer,
94 hdd_config_t, CalibrationPeriod,
95 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
96 CFG_CALIBRATION_PERIOD_DEFAULT,
97 CFG_CALIBRATION_PERIOD_MIN,
98 CFG_CALIBRATION_PERIOD_MAX ),
99
100 REG_VARIABLE( CFG_OPERATING_CHANNEL_NAME, WLAN_PARAM_Integer,
101 hdd_config_t, OperatingChannel,
102 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
103 CFG_OPERATING_CHANNEL_DEFAULT,
104 CFG_OPERATING_CHANNEL_MIN,
105 CFG_OPERATING_CHANNEL_MAX ),
106
107 REG_VARIABLE( CFG_SHORT_SLOT_TIME_ENABLED_NAME, WLAN_PARAM_Integer,
108 hdd_config_t, ShortSlotTimeEnabled,
109 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
110 CFG_SHORT_SLOT_TIME_ENABLED_DEFAULT,
111 CFG_SHORT_SLOT_TIME_ENABLED_MIN,
112 CFG_SHORT_SLOT_TIME_ENABLED_MAX ),
113
114 REG_VARIABLE( CFG_11D_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
115 hdd_config_t, Is11dSupportEnabled,
116 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
117 CFG_11D_SUPPORT_ENABLED_DEFAULT,
118 CFG_11D_SUPPORT_ENABLED_MIN,
119 CFG_11D_SUPPORT_ENABLED_MAX ),
120
121 REG_VARIABLE( CFG_ENFORCE_11D_CHANNELS_NAME, WLAN_PARAM_Integer,
122 hdd_config_t, fEnforce11dChannels,
123 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
124 CFG_ENFORCE_11D_CHANNELS_DEFAULT,
125 CFG_ENFORCE_11D_CHANNELS_MIN,
126 CFG_ENFORCE_11D_CHANNELS_MAX ),
127
128 REG_VARIABLE( CFG_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
129 hdd_config_t, fSupplicantCountryCodeHasPriority,
130 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
131 CFG_COUNTRY_CODE_PRIORITY_DEFAULT,
132 CFG_COUNTRY_CODE_PRIORITY_MIN,
133 CFG_COUNTRY_CODE_PRIORITY_MAX),
134
135 REG_VARIABLE( CFG_ENFORCE_COUNTRY_CODE_MATCH_NAME, WLAN_PARAM_Integer,
136 hdd_config_t, fEnforceCountryCodeMatch,
137 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
138 CFG_ENFORCE_COUNTRY_CODE_MATCH_DEFAULT,
139 CFG_ENFORCE_COUNTRY_CODE_MATCH_MIN,
140 CFG_ENFORCE_COUNTRY_CODE_MATCH_MAX ),
141
142 REG_VARIABLE( CFG_ENFORCE_DEFAULT_DOMAIN_NAME, WLAN_PARAM_Integer,
143 hdd_config_t, fEnforceDefaultDomain,
144 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
145 CFG_ENFORCE_DEFAULT_DOMAIN_DEFAULT,
146 CFG_ENFORCE_DEFAULT_DOMAIN_MIN,
147 CFG_ENFORCE_DEFAULT_DOMAIN_MAX ),
148
149 REG_VARIABLE( CFG_GENERIC_ID1_NAME, WLAN_PARAM_Integer,
150 hdd_config_t, Cfg1Id,
151 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
152 CFG_GENERIC_ID1_DEFAULT,
153 CFG_GENERIC_ID1_MIN,
154 CFG_GENERIC_ID1_MAX ),
155
156 REG_VARIABLE( CFG_GENERIC_ID2_NAME, WLAN_PARAM_Integer,
157 hdd_config_t, Cfg2Id,
158 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
159 CFG_GENERIC_ID2_DEFAULT,
160 CFG_GENERIC_ID2_MIN,
161 CFG_GENERIC_ID2_MAX ),
162
163 REG_VARIABLE( CFG_GENERIC_ID3_NAME, WLAN_PARAM_Integer,
164 hdd_config_t, Cfg3Id,
165 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
166 CFG_GENERIC_ID3_DEFAULT,
167 CFG_GENERIC_ID3_MIN,
168 CFG_GENERIC_ID3_MAX ),
169
170 REG_VARIABLE( CFG_GENERIC_ID4_NAME, WLAN_PARAM_Integer,
171 hdd_config_t, Cfg4Id,
172 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
173 CFG_GENERIC_ID4_DEFAULT,
174 CFG_GENERIC_ID4_MIN,
175 CFG_GENERIC_ID4_MAX ),
176
177 REG_VARIABLE( CFG_GENERIC_ID5_NAME, WLAN_PARAM_Integer,
178 hdd_config_t, Cfg5Id,
179 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
180 CFG_GENERIC_ID5_DEFAULT,
181 CFG_GENERIC_ID5_MIN,
182 CFG_GENERIC_ID5_MAX ),
183
184 REG_VARIABLE( CFG_GENERIC_VALUE1_NAME, WLAN_PARAM_Integer,
185 hdd_config_t, Cfg1Value,
186 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
187 CFG_GENERIC_VALUE1_DEFAULT,
188 CFG_GENERIC_VALUE1_MIN,
189 CFG_GENERIC_VALUE1_MAX ),
190
191 REG_VARIABLE( CFG_GENERIC_VALUE2_NAME, WLAN_PARAM_Integer,
192 hdd_config_t, Cfg2Value,
193 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
194 CFG_GENERIC_VALUE2_DEFAULT,
195 CFG_GENERIC_VALUE2_MIN,
196 CFG_GENERIC_VALUE2_MAX ),
197
198 REG_VARIABLE( CFG_GENERIC_VALUE3_NAME, WLAN_PARAM_Integer,
199 hdd_config_t, Cfg3Value,
200 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
201 CFG_GENERIC_VALUE3_DEFAULT,
202 CFG_GENERIC_VALUE3_MIN,
203 CFG_GENERIC_VALUE3_MAX ),
204
205 REG_VARIABLE( CFG_GENERIC_VALUE4_NAME, WLAN_PARAM_Integer,
206 hdd_config_t, Cfg4Value,
207 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
208 CFG_GENERIC_VALUE4_DEFAULT,
209 CFG_GENERIC_VALUE4_MIN,
210 CFG_GENERIC_VALUE4_MAX ),
211
212 REG_VARIABLE( CFG_GENERIC_VALUE5_NAME, WLAN_PARAM_Integer,
213 hdd_config_t, Cfg5Value,
214 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
215 CFG_GENERIC_VALUE5_DEFAULT,
216 CFG_GENERIC_VALUE5_MIN,
217 CFG_GENERIC_VALUE5_MAX ),
218
219 REG_VARIABLE( CFG_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
220 hdd_config_t, HeartbeatThresh24,
221 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
222 CFG_HEARTBEAT_THRESH_24_DEFAULT,
223 CFG_HEARTBEAT_THRESH_24_MIN,
224 CFG_HEARTBEAT_THRESH_24_MAX ),
225
226 REG_VARIABLE_STRING( CFG_POWER_USAGE_NAME, WLAN_PARAM_String,
227 hdd_config_t, PowerUsageControl,
228 VAR_FLAGS_OPTIONAL,
229 (void *)CFG_POWER_USAGE_DEFAULT ),
230
231 REG_VARIABLE( CFG_ENABLE_SUSPEND_NAME, WLAN_PARAM_Integer,
232 hdd_config_t, nEnableSuspend,
233 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
234 CFG_ENABLE_SUSPEND_DEFAULT,
235 CFG_ENABLE_SUSPEND_MIN,
236 CFG_ENABLE_SUSPEND_MAX ),
237
238 REG_VARIABLE( CFG_ENABLE_ENABLE_DRIVER_STOP_NAME, WLAN_PARAM_Integer,
239 hdd_config_t, nEnableDriverStop,
240 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
241 CFG_ENABLE_ENABLE_DRIVER_STOP_DEFAULT,
242 CFG_ENABLE_ENABLE_DRIVER_STOP_MIN,
243 CFG_ENABLE_ENABLE_DRIVER_STOP_MAX ),
244
245 REG_VARIABLE( CFG_ENABLE_IMPS_NAME, WLAN_PARAM_Integer,
246 hdd_config_t, fIsImpsEnabled,
247 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
248 CFG_ENABLE_IMPS_DEFAULT,
249 CFG_ENABLE_IMPS_MIN,
250 CFG_ENABLE_IMPS_MAX ),
251
252 REG_VARIABLE( CFG_ENABLE_LOGP_NAME, WLAN_PARAM_Integer,
253 hdd_config_t, fIsLogpEnabled,
254 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
255 CFG_ENABLE_LOGP_DEFAULT,
256 CFG_ENABLE_LOGP_MIN,
257 CFG_ENABLE_LOGP_MAX ),
258
259 REG_VARIABLE( CFG_IMPS_MINIMUM_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
260 hdd_config_t, nImpsMinSleepTime,
261 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
262 CFG_IMPS_MINIMUM_SLEEP_TIME_DEFAULT,
263 CFG_IMPS_MINIMUM_SLEEP_TIME_MIN,
264 CFG_IMPS_MINIMUM_SLEEP_TIME_MAX ),
265
266 REG_VARIABLE( CFG_IMPS_MAXIMUM_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
267 hdd_config_t, nImpsMaxSleepTime,
268 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
269 CFG_IMPS_MAXIMUM_SLEEP_TIME_DEFAULT,
270 CFG_IMPS_MAXIMUM_SLEEP_TIME_MIN,
271 CFG_IMPS_MAXIMUM_SLEEP_TIME_MAX ),
272
273 REG_VARIABLE( CFG_IMPS_MODERATE_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
274 hdd_config_t, nImpsModSleepTime,
275 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
276 CFG_IMPS_MODERATE_SLEEP_TIME_DEFAULT,
277 CFG_IMPS_MODERATE_SLEEP_TIME_MIN,
278 CFG_IMPS_MODERATE_SLEEP_TIME_MAX ),
279
280 REG_VARIABLE( CFG_ENABLE_BMPS_NAME, WLAN_PARAM_Integer,
281 hdd_config_t, fIsBmpsEnabled,
282 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
283 CFG_ENABLE_BMPS_DEFAULT,
284 CFG_ENABLE_BMPS_MIN,
285 CFG_ENABLE_BMPS_MAX ),
286
287 REG_VARIABLE( CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
288 hdd_config_t, nBmpsMinListenInterval,
289 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
290 CFG_BMPS_MINIMUM_LI_DEFAULT,
291 CFG_BMPS_MINIMUM_LI_MIN,
292 CFG_BMPS_MINIMUM_LI_MAX ),
293
294 REG_VARIABLE( CFG_BMPS_MAXIMUM_LI_NAME, WLAN_PARAM_Integer,
295 hdd_config_t, nBmpsMaxListenInterval,
296 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
297 CFG_BMPS_MAXIMUM_LI_DEFAULT,
298 CFG_BMPS_MAXIMUM_LI_MIN,
299 CFG_BMPS_MAXIMUM_LI_MAX ),
300
301 REG_VARIABLE( CFG_BMPS_MODERATE_LI_NAME, WLAN_PARAM_Integer,
302 hdd_config_t, nBmpsModListenInterval,
303 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
304 CFG_BMPS_MODERATE_LI_DEFAULT,
305 CFG_BMPS_MODERATE_LI_MIN,
306 CFG_BMPS_MODERATE_LI_MAX ),
307
308 REG_VARIABLE( CFG_ENABLE_AUTO_BMPS_TIMER_NAME, WLAN_PARAM_Integer,
309 hdd_config_t, fIsAutoBmpsTimerEnabled,
310 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
311 CFG_ENABLE_AUTO_BMPS_TIMER_DEFAULT,
312 CFG_ENABLE_AUTO_BMPS_TIMER_MIN,
313 CFG_ENABLE_AUTO_BMPS_TIMER_MAX ),
314
315 REG_VARIABLE( CFG_AUTO_BMPS_TIMER_VALUE_NAME, WLAN_PARAM_Integer,
316 hdd_config_t, nAutoBmpsTimerValue,
317 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
318 CFG_AUTO_BMPS_TIMER_VALUE_DEFAULT,
319 CFG_AUTO_BMPS_TIMER_VALUE_MIN,
320 CFG_AUTO_BMPS_TIMER_VALUE_MAX ),
321
322 REG_VARIABLE( CFG_DOT11_MODE_NAME, WLAN_PARAM_Integer,
323 hdd_config_t, dot11Mode,
324 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
325 CFG_DOT11_MODE_DEFAULT,
326 CFG_DOT11_MODE_MIN,
327 CFG_DOT11_MODE_MAX ),
328
329 REG_VARIABLE( CFG_CHANNEL_BONDING_MODE_24GHZ_NAME, WLAN_PARAM_Integer,
330 hdd_config_t, nChannelBondingMode24GHz,
331 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
332 CFG_CHANNEL_BONDING_MODE_DEFAULT,
333 CFG_CHANNEL_BONDING_MODE_MIN,
334 CFG_CHANNEL_BONDING_MODE_MAX),
335
336 REG_VARIABLE( CFG_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
337 hdd_config_t, nChannelBondingMode5GHz,
338 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
339 CFG_CHANNEL_BONDING_MODE_DEFAULT,
340 CFG_CHANNEL_BONDING_MODE_MIN,
341 CFG_CHANNEL_BONDING_MODE_MAX),
342
343 REG_VARIABLE( CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
344 hdd_config_t, MaxRxAmpduFactor,
345 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
346 CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
347 CFG_MAX_RX_AMPDU_FACTOR_MIN,
348 CFG_MAX_RX_AMPDU_FACTOR_MAX),
349
350 REG_VARIABLE( CFG_FIXED_RATE_NAME, WLAN_PARAM_Integer,
351 hdd_config_t, TxRate,
352 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
353 CFG_FIXED_RATE_DEFAULT,
354 CFG_FIXED_RATE_MIN,
355 CFG_FIXED_RATE_MAX ),
356
357 REG_VARIABLE( CFG_SHORT_GI_20MHZ_NAME, WLAN_PARAM_Integer,
358 hdd_config_t, ShortGI20MhzEnable,
359 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
360 CFG_SHORT_GI_20MHZ_DEFAULT,
361 CFG_SHORT_GI_20MHZ_MIN,
362 CFG_SHORT_GI_20MHZ_MAX ),
363
364 REG_VARIABLE( CFG_BLOCK_ACK_AUTO_SETUP_NAME, WLAN_PARAM_Integer,
365 hdd_config_t, BlockAckAutoSetup,
366 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
367 CFG_BLOCK_ACK_AUTO_SETUP_DEFAULT,
368 CFG_BLOCK_ACK_AUTO_SETUP_MIN,
369 CFG_BLOCK_ACK_AUTO_SETUP_MAX ),
370
371 REG_VARIABLE( CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
372 hdd_config_t, ScanResultAgeCount,
373 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
374 CFG_SCAN_RESULT_AGE_COUNT_DEFAULT,
375 CFG_SCAN_RESULT_AGE_COUNT_MIN,
376 CFG_SCAN_RESULT_AGE_COUNT_MAX ),
377
378 REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_NCNPS_NAME, WLAN_PARAM_Integer,
379 hdd_config_t, nScanAgeTimeNCNPS,
380 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
381 CFG_SCAN_RESULT_AGE_TIME_NCNPS_DEFAULT,
382 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MIN,
383 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MAX ),
384
385 REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_NCPS_NAME, WLAN_PARAM_Integer,
386 hdd_config_t, nScanAgeTimeNCPS,
387 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
388 CFG_SCAN_RESULT_AGE_TIME_NCPS_DEFAULT,
389 CFG_SCAN_RESULT_AGE_TIME_NCPS_MIN,
390 CFG_SCAN_RESULT_AGE_TIME_NCPS_MAX ),
391
392 REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_CNPS_NAME, WLAN_PARAM_Integer,
393 hdd_config_t, nScanAgeTimeCNPS,
394 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
395 CFG_SCAN_RESULT_AGE_TIME_CNPS_DEFAULT,
396 CFG_SCAN_RESULT_AGE_TIME_CNPS_MIN,
397 CFG_SCAN_RESULT_AGE_TIME_CNPS_MAX ),
398
399 REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_CPS_NAME, WLAN_PARAM_Integer,
400 hdd_config_t, nScanAgeTimeCPS,
401 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
402 CFG_SCAN_RESULT_AGE_TIME_CPS_DEFAULT,
403 CFG_SCAN_RESULT_AGE_TIME_CPS_MIN,
404 CFG_SCAN_RESULT_AGE_TIME_CPS_MAX ),
405
406 REG_VARIABLE( CFG_RSSI_CATEGORY_GAP_NAME, WLAN_PARAM_Integer,
407 hdd_config_t, nRssiCatGap,
408 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
409 CFG_RSSI_CATEGORY_GAP_DEFAULT,
410 CFG_RSSI_CATEGORY_GAP_MIN,
411 CFG_RSSI_CATEGORY_GAP_MAX ),
412
413 REG_VARIABLE( CFG_STAT_TIMER_INTERVAL_NAME, WLAN_PARAM_Integer,
414 hdd_config_t, nStatTimerInterval,
415 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
416 CFG_STAT_TIMER_INTERVAL_DEFAULT,
417 CFG_STAT_TIMER_INTERVAL_MIN,
418 CFG_STAT_TIMER_INTERVAL_MAX ),
419
420 REG_VARIABLE( CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
421 hdd_config_t, fIsShortPreamble,
422 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
423 CFG_SHORT_PREAMBLE_DEFAULT,
424 CFG_SHORT_PREAMBLE_MIN,
425 CFG_SHORT_PREAMBLE_MAX ),
426
427 REG_VARIABLE( CFG_IBSS_AUTO_BSSID_NAME, WLAN_PARAM_Integer,
428 hdd_config_t, fIsAutoIbssBssid,
429 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
430 CFG_IBSS_AUTO_BSSID_DEFAULT,
431 CFG_IBSS_AUTO_BSSID_MIN,
432 CFG_IBSS_AUTO_BSSID_MAX ),
433
434 REG_VARIABLE_STRING( CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
435 hdd_config_t, IbssBssid,
436 VAR_FLAGS_OPTIONAL,
437 (void *)CFG_IBSS_BSSID_DEFAULT ),
438
439 REG_VARIABLE_STRING( CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
440 hdd_config_t, intfMacAddr[0],
441 VAR_FLAGS_OPTIONAL,
442 (void *)CFG_INTF0_MAC_ADDR_DEFAULT ),
443
444 REG_VARIABLE_STRING( CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
445 hdd_config_t, intfMacAddr[1],
446 VAR_FLAGS_OPTIONAL,
447 (void *)CFG_INTF1_MAC_ADDR_DEFAULT ),
448
449 REG_VARIABLE_STRING( CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
450 hdd_config_t, intfMacAddr[2],
451 VAR_FLAGS_OPTIONAL,
452 (void *)CFG_INTF2_MAC_ADDR_DEFAULT ),
453
454 REG_VARIABLE_STRING( CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
455 hdd_config_t, intfMacAddr[3],
456 VAR_FLAGS_OPTIONAL,
457 (void *)CFG_INTF3_MAC_ADDR_DEFAULT ),
458
Madan Mohan Koyyalamudic3a240c2012-09-28 15:34:08 -0700459 REG_VARIABLE_STRING( CFG_CRDA_DEFAULT_COUNTRY_CODE, WLAN_PARAM_String,
460 hdd_config_t, crdaDefaultCountryCode,
461 VAR_FLAGS_OPTIONAL,
462 (void *)CFG_CRDA_DEFAULT_COUNTRY_CODE_DEFAULT ),
463
Jeff Johnson295189b2012-06-20 16:38:30 -0700464#ifdef WLAN_SOFTAP_FEATURE
465 REG_VARIABLE( CFG_AP_QOS_UAPSD_MODE_NAME , WLAN_PARAM_Integer,
466 hdd_config_t, apUapsdEnabled,
467 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
468 CFG_AP_QOS_UAPSD_MODE_DEFAULT,
469 CFG_AP_QOS_UAPSD_MODE_MIN,
470 CFG_AP_QOS_UAPSD_MODE_MAX ),
471
472 REG_VARIABLE_STRING( CFG_AP_COUNTRY_CODE, WLAN_PARAM_String,
473 hdd_config_t, apCntryCode,
474 VAR_FLAGS_OPTIONAL,
475 (void *)CFG_AP_COUNTRY_CODE_DEFAULT ),
476
Madan Mohan Koyyalamudi3ff2a0b2012-10-15 14:33:46 -0700477 REG_VARIABLE( CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
478 hdd_config_t, apRandomBssidEnabled,
479 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
480 CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT,
481 CFG_AP_ENABLE_RANDOM_BSSID_MIN,
482 CFG_AP_ENABLE_RANDOM_BSSID_MAX ),
483
Jeff Johnson295189b2012-06-20 16:38:30 -0700484 REG_VARIABLE( CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
485 hdd_config_t, apProtEnabled,
486 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
487 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
488 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
489 CFG_AP_ENABLE_PROTECTION_MODE_MAX ),
490
491 REG_VARIABLE( CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
492 hdd_config_t, apProtection,
493 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
494 CFG_AP_PROTECTION_MODE_DEFAULT,
495 CFG_AP_PROTECTION_MODE_MIN,
496 CFG_AP_PROTECTION_MODE_MAX ),
497
498 REG_VARIABLE( CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
499 hdd_config_t, apOBSSProtEnabled,
500 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
501 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
502 CFG_AP_OBSS_PROTECTION_MODE_MIN,
503 CFG_AP_OBSS_PROTECTION_MODE_MAX ),
504
505 REG_VARIABLE( CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
506 hdd_config_t, apDisableIntraBssFwd,
507 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
508 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
509 CFG_AP_STA_SECURITY_SEPERATION_MIN,
510 CFG_AP_STA_SECURITY_SEPERATION_MAX ),
511
512 REG_VARIABLE( CFG_FRAMES_PROCESSING_TH_MODE_NAME, WLAN_PARAM_Integer,
513 hdd_config_t, MinFramesProcThres,
514 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
515 CFG_FRAMES_PROCESSING_TH_DEFAULT,
516 CFG_FRAMES_PROCESSING_TH_MIN,
517 CFG_FRAMES_PROCESSING_TH_MAX ),
518
519 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_START_CHANNEL , WLAN_PARAM_Integer,
520 hdd_config_t, apStartChannelNum,
521 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
522 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_DEFAULT,
523 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MIN,
524 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MAX ),
525
526 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_END_CHANNEL , WLAN_PARAM_Integer,
527 hdd_config_t, apEndChannelNum,
528 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
529 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_DEFAULT,
530 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MIN,
531 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MAX ),
532
533 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_OPERATING_BAND , WLAN_PARAM_Integer,
534 hdd_config_t, apOperatingBand,
535 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
536 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_DEFAULT,
537 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MIN,
538 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MAX ),
539
540 REG_VARIABLE(CFG_SAP_AUTO_CHANNEL_SELECTION_NAME , WLAN_PARAM_Integer,
541 hdd_config_t, apAutoChannelSelection,
542 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
543 CFG_SAP_AUTO_CHANNEL_SELECTION_DEFAULT,
544 CFG_SAP_AUTO_CHANNEL_SELECTION_MIN,
545 CFG_SAP_AUTO_CHANNEL_SELECTION_MAX ),
546
547 REG_VARIABLE(CFG_ENABLE_LTE_COEX , WLAN_PARAM_Integer,
548 hdd_config_t, enableLTECoex,
549 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
550 CFG_ENABLE_LTE_COEX_DEFAULT,
551 CFG_ENABLE_LTE_COEX_MIN,
552 CFG_ENABLE_LTE_COEX_MAX ),
553
554 REG_VARIABLE( CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
555 hdd_config_t, apKeepAlivePeriod,
556 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
557 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
558 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
559 CFG_AP_KEEP_ALIVE_PERIOD_MAX),
560
561 REG_VARIABLE( CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
562 hdd_config_t, goKeepAlivePeriod,
563 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
564 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
565 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
566 CFG_GO_KEEP_ALIVE_PERIOD_MAX),
567
568#endif
569 REG_VARIABLE(CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer,
570 hdd_config_t, disablePacketFilter,
571 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
572 CFG_DISABLE_PACKET_FILTER_DEFAULT,
573 CFG_DISABLE_PACKET_FILTER_MIN,
574 CFG_DISABLE_PACKET_FILTER_MAX ),
575
576 REG_VARIABLE( CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
577 hdd_config_t, nBeaconInterval,
578 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
579 CFG_BEACON_INTERVAL_DEFAULT,
580 CFG_BEACON_INTERVAL_MIN,
581 CFG_BEACON_INTERVAL_MAX ),
582
583 REG_VARIABLE( CFG_ENABLE_HANDOFF_NAME, WLAN_PARAM_Integer,
584 hdd_config_t, fIsHandoffEnabled,
585 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
586 CFG_ENABLE_HANDOFF_DEFAULT,
587 CFG_ENABLE_HANDOFF_MIN,
588 CFG_ENABLE_HANDOFF_MAX ),
589
590
591 REG_VARIABLE( CFG_ENABLE_IDLE_SCAN_NAME , WLAN_PARAM_Integer,
592 hdd_config_t, nEnableIdleScan,
593 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
594 CFG_ENABLE_IDLE_SCAN_DEFAULT,
595 CFG_ENABLE_IDLE_SCAN_MIN,
596 CFG_ENABLE_IDLE_SCAN_MAX ),
597
598 REG_VARIABLE( CFG_ROAMING_TIME_NAME , WLAN_PARAM_Integer,
599 hdd_config_t, nRoamingTime,
600 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
601 CFG_ROAMING_TIME_DEFAULT,
602 CFG_ROAMING_TIME_MIN,
603 CFG_ROAMING_TIME_MAX ),
604
605 REG_VARIABLE( CFG_VCC_RSSI_TRIGGER_NAME , WLAN_PARAM_Integer,
606 hdd_config_t, nVccRssiTrigger,
607 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
608 CFG_VCC_RSSI_TRIGGER_DEFAULT,
609 CFG_VCC_RSSI_TRIGGER_MIN,
610 CFG_VCC_RSSI_TRIGGER_MAX ),
611
612 REG_VARIABLE( CFG_VCC_UL_MAC_LOSS_THRESH_NAME , WLAN_PARAM_Integer,
613 hdd_config_t, nVccUlMacLossThreshold,
614 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
615 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
616 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
617 CFG_VCC_UL_MAC_LOSS_THRESH_MAX ),
618
619 REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
620 hdd_config_t, nPassiveMaxChnTime,
621 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
622 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
623 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
624 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX ),
625
626 REG_VARIABLE( CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
627 hdd_config_t, nPassiveMinChnTime,
628 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
629 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
630 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
631 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX ),
632
633 REG_VARIABLE( CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
634 hdd_config_t, nActiveMaxChnTime,
635 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
636 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
637 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
638 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX ),
639
640 REG_VARIABLE( CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
641 hdd_config_t, nActiveMinChnTime,
642 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
643 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
644 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
645 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX ),
Madan Mohan Koyyalamudi4ff9cd62012-10-30 17:48:57 -0700646
647#ifdef WLAN_AP_STA_CONCURRENCY
648 REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
649 hdd_config_t, nPassiveMaxChnTimeConc,
650 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
651 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
652 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MIN,
653 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MAX ),
654
655 REG_VARIABLE( CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
656 hdd_config_t, nPassiveMinChnTimeConc,
657 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
658 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
659 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MIN,
660 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MAX ),
661
662 REG_VARIABLE( CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
663 hdd_config_t, nActiveMaxChnTimeConc,
664 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
665 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
666 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MIN,
667 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MAX ),
668
669 REG_VARIABLE( CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
670 hdd_config_t, nActiveMinChnTimeConc,
671 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
672 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
673 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MIN,
674 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MAX ),
675
676 REG_VARIABLE( CFG_REST_TIME_CONC_NAME, WLAN_PARAM_Integer,
677 hdd_config_t, nRestTimeConc,
678 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
679 CFG_REST_TIME_CONC_DEFAULT,
680 CFG_REST_TIME_CONC_MIN,
681 CFG_REST_TIME_CONC_MAX ),
682#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700683
684 REG_VARIABLE( CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
685 hdd_config_t, nMaxPsPoll,
686 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
687 CFG_MAX_PS_POLL_DEFAULT,
688 CFG_MAX_PS_POLL_MIN,
689 CFG_MAX_PS_POLL_MAX ),
690
691 REG_VARIABLE( CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
692 hdd_config_t, nTxPowerCap,
693 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
694 CFG_MAX_TX_POWER_DEFAULT,
695 CFG_MAX_TX_POWER_MIN,
696 CFG_MAX_TX_POWER_MAX ),
697
698 REG_VARIABLE( CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
699 hdd_config_t, fIsLowGainOverride,
700 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
701 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
702 CFG_LOW_GAIN_OVERRIDE_MIN,
703 CFG_LOW_GAIN_OVERRIDE_MAX ),
704
705 REG_VARIABLE( CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
706 hdd_config_t, nRssiFilterPeriod,
707 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
708 CFG_RSSI_FILTER_PERIOD_DEFAULT,
709 CFG_RSSI_FILTER_PERIOD_MIN,
710 CFG_RSSI_FILTER_PERIOD_MAX ),
711
712 REG_VARIABLE( CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
713 hdd_config_t, fIgnoreDtim,
714 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
715 CFG_IGNORE_DTIM_DEFAULT,
716 CFG_IGNORE_DTIM_MIN,
717 CFG_IGNORE_DTIM_MAX ),
718
719 REG_VARIABLE( CFG_RX_ANT_CONFIGURATION_NAME, WLAN_PARAM_Integer,
720 hdd_config_t, nRxAnt,
721 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
722 CFG_RX_ANT_CONFIGURATION_NAME_DEFAULT,
723 CFG_RX_ANT_CONFIGURATION_NAME_MIN,
724 CFG_RX_ANT_CONFIGURATION_NAME_MAX ),
725
726 REG_VARIABLE( CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
727 hdd_config_t, fEnableFwHeartBeatMonitoring,
728 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
729 CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
730 CFG_FW_HEART_BEAT_MONITORING_MIN,
731 CFG_FW_HEART_BEAT_MONITORING_MAX ),
732
733 REG_VARIABLE( CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
734 hdd_config_t, fEnableFwBeaconFiltering,
735 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
736 CFG_FW_BEACON_FILTERING_DEFAULT,
737 CFG_FW_BEACON_FILTERING_MIN,
738 CFG_FW_BEACON_FILTERING_MAX ),
739
740 REG_VARIABLE( CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
741 hdd_config_t, fEnableFwRssiMonitoring,
742 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
743 CFG_FW_RSSI_MONITORING_DEFAULT,
744 CFG_FW_RSSI_MONITORING_MIN,
745 CFG_FW_RSSI_MONITORING_MAX ),
746
747 REG_VARIABLE( CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
748 hdd_config_t, nDataInactivityTimeout,
749 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
750 CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
751 CFG_DATA_INACTIVITY_TIMEOUT_MIN,
752 CFG_DATA_INACTIVITY_TIMEOUT_MAX ),
753
754 REG_VARIABLE( CFG_NTH_BEACON_FILTER_NAME, WLAN_PARAM_Integer,
755 hdd_config_t, nthBeaconFilter,
756 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
757 CFG_NTH_BEACON_FILTER_DEFAULT,
758 CFG_NTH_BEACON_FILTER_MIN,
759 CFG_NTH_BEACON_FILTER_MAX ),
760
761 REG_VARIABLE( CFG_QOS_WMM_MODE_NAME , WLAN_PARAM_Integer,
762 hdd_config_t, WmmMode,
763 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
764 CFG_QOS_WMM_MODE_DEFAULT,
765 CFG_QOS_WMM_MODE_MIN,
766 CFG_QOS_WMM_MODE_MAX ),
767
768 REG_VARIABLE( CFG_QOS_WMM_80211E_ENABLED_NAME , WLAN_PARAM_Integer,
769 hdd_config_t, b80211eIsEnabled,
770 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
771 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
772 CFG_QOS_WMM_80211E_ENABLED_MIN,
773 CFG_QOS_WMM_80211E_ENABLED_MAX ),
774
775 REG_VARIABLE( CFG_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger,
776 hdd_config_t, UapsdMask,
777 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
778 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
779 CFG_QOS_WMM_UAPSD_MASK_MIN,
780 CFG_QOS_WMM_UAPSD_MASK_MAX ),
781
782 REG_VARIABLE( CFG_QOS_WMM_MAX_SP_LEN_NAME , WLAN_PARAM_Integer,
783 hdd_config_t, MaxSpLength,
784 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
785 CFG_QOS_WMM_MAX_SP_LEN_DEFAULT,
786 CFG_QOS_WMM_MAX_SP_LEN_MIN,
787 CFG_QOS_WMM_MAX_SP_LEN_MAX ),
788
789 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME , WLAN_PARAM_Integer,
790 hdd_config_t, InfraUapsdVoSrvIntv,
791 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
792 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
793 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
794 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX ),
795
796 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME , WLAN_PARAM_Integer,
797 hdd_config_t, InfraUapsdVoSuspIntv,
798 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
799 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
800 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
801 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX ),
802
803 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME , WLAN_PARAM_Integer,
804 hdd_config_t, InfraUapsdViSrvIntv,
805 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
806 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
807 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
808 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX ),
809
810 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME , WLAN_PARAM_Integer,
811 hdd_config_t, InfraUapsdViSuspIntv,
812 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
813 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
814 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
815 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX ),
816
817 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME , WLAN_PARAM_Integer,
818 hdd_config_t, InfraUapsdBeSrvIntv,
819 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
820 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
821 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
822 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX ),
823
824 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME , WLAN_PARAM_Integer,
825 hdd_config_t, InfraUapsdBeSuspIntv,
826 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
827 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
828 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
829 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX ),
830
831 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME , WLAN_PARAM_Integer,
832 hdd_config_t, InfraUapsdBkSrvIntv,
833 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
834 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
835 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
836 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX ),
837
838 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME , WLAN_PARAM_Integer,
839 hdd_config_t, InfraUapsdBkSuspIntv,
840 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
841 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
842 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
843 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX ),
844
845#ifdef FEATURE_WLAN_CCX
846 REG_VARIABLE( CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME, WLAN_PARAM_Integer,
847 hdd_config_t, InfraInactivityInterval,
848 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
849 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
850 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
851 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
852 REG_VARIABLE( CFG_CCX_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
853 hdd_config_t, isCcxIniFeatureEnabled,
854 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
855 CFG_CCX_FEATURE_ENABLED_DEFAULT,
856 CFG_CCX_FEATURE_ENABLED_MIN,
857 CFG_CCX_FEATURE_ENABLED_MAX),
858#endif // FEATURE_WLAN_CCX
859
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700860#ifdef FEATURE_WLAN_LFR
861 // flag to turn ON/OFF Legacy Fast Roaming
862 REG_VARIABLE( CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
863 hdd_config_t, isFastRoamIniFeatureEnabled,
864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
865 CFG_LFR_FEATURE_ENABLED_DEFAULT,
866 CFG_LFR_FEATURE_ENABLED_MIN,
867 CFG_LFR_FEATURE_ENABLED_MAX),
868#endif // FEATURE_WLAN_LFR
869
870#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -0700871 REG_VARIABLE( CFG_FT_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
872 hdd_config_t, FTRssiFilterPeriod,
873 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
874 CFG_FT_RSSI_FILTER_PERIOD_DEFAULT,
875 CFG_FT_RSSI_FILTER_PERIOD_MIN,
876 CFG_FT_RSSI_FILTER_PERIOD_MAX ),
877
878
879 // flag to turn ON/OFF 11r and CCX FastTransition
880 REG_VARIABLE( CFG_FAST_TRANSITION_ENABLED_NAME, WLAN_PARAM_Integer,
881 hdd_config_t, isFastTransitionEnabled,
882 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
883 CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
884 CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
885 CFG_FAST_TRANSITION_ENABLED_NAME_MAX),
Jeff Johnson43971f52012-07-17 12:26:56 -0700886
887 /* Variable to specify the delta/difference between the RSSI of current AP
888 * and roamable AP while roaming */
889 REG_VARIABLE( CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
890 hdd_config_t, RoamRssiDiff,
891 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
892 CFG_ROAM_RSSI_DIFF_DEFAULT,
893 CFG_ROAM_RSSI_DIFF_MIN,
894 CFG_ROAM_RSSI_DIFF_MAX),
Madan Mohan Koyyalamudi62b55b02012-12-03 16:45:39 -0800895
896 REG_DYNAMIC_VARIABLE( CFG_IMMEDIATE_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
897 hdd_config_t, nImmediateRoamRssiDiff,
898 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
899 CFG_IMMEDIATE_ROAM_RSSI_DIFF_DEFAULT,
900 CFG_IMMEDIATE_ROAM_RSSI_DIFF_MIN,
901 CFG_IMMEDIATE_ROAM_RSSI_DIFF_MAX,
902 cbNotifySetImmediateRoamRssiDiff, 0),
Jeff Johnson295189b2012-06-20 16:38:30 -0700903#endif
904
905 REG_VARIABLE( CFG_QOS_WMM_PKT_CLASSIFY_BASIS_NAME , WLAN_PARAM_Integer,
906 hdd_config_t, PktClassificationBasis,
907 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
908 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_DEFAULT,
909 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MIN,
910 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MAX ),
911
912 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME , WLAN_PARAM_Integer,
913 hdd_config_t, InfraDirAcVo,
914 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
915 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
916 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
917 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX ),
918
919 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME , WLAN_PARAM_HexInteger,
920 hdd_config_t, InfraNomMsduSizeAcVo,
921 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
922 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
923 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
924 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX ),
925
926 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
927 hdd_config_t, InfraMeanDataRateAcVo,
928 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
929 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
930 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
931 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX ),
932
933 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
934 hdd_config_t, InfraMinPhyRateAcVo,
935 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
936 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
937 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
938 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX ),
939
940 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME , WLAN_PARAM_HexInteger,
941 hdd_config_t, InfraSbaAcVo,
942 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
943 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
944 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
945 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX ),
946
947 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME , WLAN_PARAM_Integer,
948 hdd_config_t, InfraDirAcVi,
949 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
950 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
951 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
952 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX ),
953
954 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME , WLAN_PARAM_HexInteger,
955 hdd_config_t, InfraNomMsduSizeAcVi,
956 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
957 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
958 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
959 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX ),
960
961 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
962 hdd_config_t, InfraMeanDataRateAcVi,
963 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
964 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
965 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
966 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX ),
967
968 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
969 hdd_config_t, InfraMinPhyRateAcVi,
970 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
971 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
972 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
973 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX ),
974
975 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME , WLAN_PARAM_HexInteger,
976 hdd_config_t, InfraSbaAcVi,
977 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
978 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
979 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
980 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX ),
981
982 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME , WLAN_PARAM_Integer,
983 hdd_config_t, InfraDirAcBe,
984 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
985 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
986 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
987 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX ),
988
989 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME , WLAN_PARAM_HexInteger,
990 hdd_config_t, InfraNomMsduSizeAcBe,
991 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
992 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
993 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
994 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX ),
995
996 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
997 hdd_config_t, InfraMeanDataRateAcBe,
998 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
999 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
1000 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
1001 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX ),
1002
1003 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
1004 hdd_config_t, InfraMinPhyRateAcBe,
1005 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1006 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
1007 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
1008 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX ),
1009
1010 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME , WLAN_PARAM_HexInteger,
1011 hdd_config_t, InfraSbaAcBe,
1012 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1013 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
1014 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
1015 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX ),
1016
1017 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME , WLAN_PARAM_Integer,
1018 hdd_config_t, InfraDirAcBk,
1019 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1020 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
1021 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
1022 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX ),
1023
1024 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME , WLAN_PARAM_HexInteger,
1025 hdd_config_t, InfraNomMsduSizeAcBk,
1026 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1027 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
1028 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
1029 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX ),
1030
1031 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
1032 hdd_config_t, InfraMeanDataRateAcBk,
1033 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1034 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
1035 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
1036 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX ),
1037
1038 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
1039 hdd_config_t, InfraMinPhyRateAcBk,
1040 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1041 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
1042 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
1043 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX ),
1044
1045 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME , WLAN_PARAM_HexInteger,
1046 hdd_config_t, InfraSbaAcBk,
1047 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1048 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
1049 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
1050 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX ),
1051
1052 REG_VARIABLE( CFG_TL_WFQ_BK_WEIGHT_NAME , WLAN_PARAM_Integer,
1053 hdd_config_t, WfqBkWeight,
1054 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1055 CFG_TL_WFQ_BK_WEIGHT_DEFAULT,
1056 CFG_TL_WFQ_BK_WEIGHT_MIN,
1057 CFG_TL_WFQ_BK_WEIGHT_MAX ),
1058
1059 REG_VARIABLE( CFG_TL_WFQ_BE_WEIGHT_NAME , WLAN_PARAM_Integer,
1060 hdd_config_t, WfqBeWeight,
1061 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1062 CFG_TL_WFQ_BE_WEIGHT_DEFAULT,
1063 CFG_TL_WFQ_BE_WEIGHT_MIN,
1064 CFG_TL_WFQ_BE_WEIGHT_MAX ),
1065
1066 REG_VARIABLE( CFG_TL_WFQ_VI_WEIGHT_NAME , WLAN_PARAM_Integer,
1067 hdd_config_t, WfqViWeight,
1068 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1069 CFG_TL_WFQ_VI_WEIGHT_DEFAULT,
1070 CFG_TL_WFQ_VI_WEIGHT_MIN,
1071 CFG_TL_WFQ_VI_WEIGHT_MAX ),
1072
1073 REG_VARIABLE( CFG_TL_WFQ_VO_WEIGHT_NAME , WLAN_PARAM_Integer,
1074 hdd_config_t, WfqVoWeight,
1075 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1076 CFG_TL_WFQ_VO_WEIGHT_DEFAULT,
1077 CFG_TL_WFQ_VO_WEIGHT_MIN,
1078 CFG_TL_WFQ_VO_WEIGHT_MAX ),
1079
1080 REG_VARIABLE( CFG_TL_DELAYED_TRGR_FRM_INT_NAME , WLAN_PARAM_Integer,
1081 hdd_config_t, DelayedTriggerFrmInt,
1082 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1083 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
1084 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
1085 CFG_TL_DELAYED_TRGR_FRM_INT_MAX ),
1086
1087 REG_VARIABLE_STRING( CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
1088 hdd_config_t, wowlPattern,
1089 VAR_FLAGS_OPTIONAL,
1090 (void *)CFG_WOWL_PATTERN_DEFAULT ),
1091
1092 REG_VARIABLE( CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME , WLAN_PARAM_Integer,
1093 hdd_config_t, bImplicitQosEnabled,
1094 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1095 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
1096 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
1097 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX ),
1098
1099 REG_VARIABLE( CFG_19P2_MHZ_PMIC_CLK_ENABLED_NAME , WLAN_PARAM_Integer,
1100 hdd_config_t, b19p2MhzPmicClkEnabled,
1101 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1102 CFG_19P2_MHZ_PMIC_CLK_ENABLED_DEFAULT,
1103 CFG_19P2_MHZ_PMIC_CLK_ENABLED_MIN,
1104 CFG_19P2_MHZ_PMIC_CLK_ENABLED_MAX ),
1105
1106 REG_VARIABLE( CFG_BTC_EXECUTION_MODE_NAME , WLAN_PARAM_Integer,
1107 hdd_config_t, btcExecutionMode,
1108 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1109 CFG_BTC_EXECUTION_MODE_DEFAULT,
1110 CFG_BTC_EXECUTION_MODE_MIN,
1111 CFG_BTC_EXECUTION_MODE_MAX ),
1112
1113 REG_VARIABLE( CFG_BTC_DHCP_PROTECTION_NAME , WLAN_PARAM_Integer,
1114 hdd_config_t, btcConsBtSlotsToBlockDuringDhcp,
1115 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1116 CFG_BTC_DHCP_PROTECTION_DEFAULT,
1117 CFG_BTC_DHCP_PROTECTION_MIN,
1118 CFG_BTC_DHCP_PROTECTION_MAX ),
1119
1120 REG_VARIABLE( CFG_BTC_A2DP_DHCP_PROTECTION_NAME , WLAN_PARAM_Integer,
1121 hdd_config_t, btcA2DPBtSubIntervalsDuringDhcp,
1122 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1123 CFG_BTC_A2DP_DHCP_PROTECTION_DEFAULT,
1124 CFG_BTC_A2DP_DHCP_PROTECTION_MIN,
1125 CFG_BTC_A2DP_DHCP_PROTECTION_MAX ),
1126
Jeff Johnson32d95a32012-09-10 13:15:23 -07001127 REG_VARIABLE( CFG_BTC_STATIC_LEN_INQ_BT_NAME , WLAN_PARAM_Integer,
1128 hdd_config_t, btcStaticLenInqBt,
1129 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1130 CFG_BTC_STATIC_LEN_INQ_BT_DEFAULT,
1131 CFG_BTC_STATIC_LEN_INQ_BT_MIN,
1132 CFG_BTC_STATIC_LEN_INQ_BT_MAX ),
1133
1134 REG_VARIABLE( CFG_BTC_STATIC_LEN_PAGE_BT_NAME , WLAN_PARAM_Integer,
1135 hdd_config_t, btcStaticLenPageBt,
1136 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1137 CFG_BTC_STATIC_LEN_PAGE_BT_DEFAULT,
1138 CFG_BTC_STATIC_LEN_PAGE_BT_MIN,
1139 CFG_BTC_STATIC_LEN_PAGE_BT_MAX ),
1140
1141 REG_VARIABLE( CFG_BTC_STATIC_LEN_CONN_BT_NAME , WLAN_PARAM_Integer,
1142 hdd_config_t, btcStaticLenConnBt,
1143 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1144 CFG_BTC_STATIC_LEN_CONN_BT_DEFAULT,
1145 CFG_BTC_STATIC_LEN_CONN_BT_MIN,
1146 CFG_BTC_STATIC_LEN_CONN_BT_MAX ),
1147
1148 REG_VARIABLE( CFG_BTC_STATIC_LEN_LE_BT_NAME , WLAN_PARAM_Integer,
1149 hdd_config_t, btcStaticLenLeBt,
1150 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1151 CFG_BTC_STATIC_LEN_LE_BT_DEFAULT,
1152 CFG_BTC_STATIC_LEN_LE_BT_MIN,
1153 CFG_BTC_STATIC_LEN_LE_BT_MAX ),
1154
1155 REG_VARIABLE( CFG_BTC_STATIC_LEN_INQ_WLAN_NAME , WLAN_PARAM_Integer,
1156 hdd_config_t, btcStaticLenInqWlan,
1157 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1158 CFG_BTC_STATIC_LEN_INQ_WLAN_DEFAULT,
1159 CFG_BTC_STATIC_LEN_INQ_WLAN_MIN,
1160 CFG_BTC_STATIC_LEN_INQ_WLAN_MAX ),
1161
1162 REG_VARIABLE( CFG_BTC_STATIC_LEN_PAGE_WLAN_NAME , WLAN_PARAM_Integer,
1163 hdd_config_t, btcStaticLenPageWlan,
1164 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1165 CFG_BTC_STATIC_LEN_PAGE_WLAN_DEFAULT,
1166 CFG_BTC_STATIC_LEN_PAGE_WLAN_MIN,
1167 CFG_BTC_STATIC_LEN_PAGE_WLAN_MAX ),
1168
1169 REG_VARIABLE( CFG_BTC_STATIC_LEN_CONN_WLAN_NAME , WLAN_PARAM_Integer,
1170 hdd_config_t, btcStaticLenConnWlan,
1171 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1172 CFG_BTC_STATIC_LEN_CONN_WLAN_DEFAULT,
1173 CFG_BTC_STATIC_LEN_CONN_WLAN_MIN,
1174 CFG_BTC_STATIC_LEN_CONN_WLAN_MAX ),
1175
1176 REG_VARIABLE( CFG_BTC_STATIC_LEN_LE_WLAN_NAME , WLAN_PARAM_Integer,
1177 hdd_config_t, btcStaticLenLeWlan,
1178 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1179 CFG_BTC_STATIC_LEN_LE_WLAN_DEFAULT,
1180 CFG_BTC_STATIC_LEN_LE_WLAN_MIN,
1181 CFG_BTC_STATIC_LEN_LE_WLAN_MAX ),
1182
1183 REG_VARIABLE( CFG_BTC_DYN_MAX_LEN_BT_NAME , WLAN_PARAM_Integer,
1184 hdd_config_t, btcDynMaxLenBt,
1185 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1186 CFG_BTC_DYN_MAX_LEN_BT_DEFAULT,
1187 CFG_BTC_DYN_MAX_LEN_BT_MIN,
1188 CFG_BTC_DYN_MAX_LEN_BT_MAX ),
1189
1190 REG_VARIABLE( CFG_BTC_DYN_MAX_LEN_WLAN_NAME , WLAN_PARAM_Integer,
1191 hdd_config_t, btcDynMaxLenWlan,
1192 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1193 CFG_BTC_DYN_MAX_LEN_WLAN_DEFAULT,
1194 CFG_BTC_DYN_MAX_LEN_WLAN_MIN,
1195 CFG_BTC_DYN_MAX_LEN_WLAN_MAX ),
1196
1197 REG_VARIABLE( CFG_BTC_MAX_SCO_BLOCK_PERC_NAME , WLAN_PARAM_Integer,
1198 hdd_config_t, btcMaxScoBlockPerc,
1199 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1200 CFG_BTC_MAX_SCO_BLOCK_PERC_DEFAULT,
1201 CFG_BTC_MAX_SCO_BLOCK_PERC_MIN,
1202 CFG_BTC_MAX_SCO_BLOCK_PERC_MAX ),
1203
1204 REG_VARIABLE( CFG_BTC_DHCP_PROT_ON_A2DP_NAME , WLAN_PARAM_Integer,
1205 hdd_config_t, btcDhcpProtOnA2dp,
1206 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1207 CFG_BTC_DHCP_PROT_ON_A2DP_DEFAULT,
1208 CFG_BTC_DHCP_PROT_ON_A2DP_MIN,
1209 CFG_BTC_DHCP_PROT_ON_A2DP_MAX ),
1210
1211 REG_VARIABLE( CFG_BTC_DHCP_PROT_ON_SCO_NAME , WLAN_PARAM_Integer,
1212 hdd_config_t, btcDhcpProtOnSco,
1213 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1214 CFG_BTC_DHCP_PROT_ON_SCO_DEFAULT,
1215 CFG_BTC_DHCP_PROT_ON_SCO_MIN,
1216 CFG_BTC_DHCP_PROT_ON_SCO_MAX ),
1217
Jeff Johnson295189b2012-06-20 16:38:30 -07001218#ifdef WLAN_SOFTAP_FEATURE
1219 REG_VARIABLE( CFG_AP_LISTEN_MODE_NAME , WLAN_PARAM_Integer,
1220 hdd_config_t, nEnableListenMode,
1221 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1222 CFG_AP_LISTEN_MODE_DEFAULT,
1223 CFG_AP_LISTEN_MODE_MIN,
1224 CFG_AP_LISTEN_MODE_MAX ),
1225
1226 REG_VARIABLE( CFG_AP_AUTO_SHUT_OFF , WLAN_PARAM_Integer,
1227 hdd_config_t, nAPAutoShutOff,
1228 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1229 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
1230 CFG_AP_AUTO_SHUT_OFF_MIN,
1231 CFG_AP_AUTO_SHUT_OFF_MAX ),
1232#endif
1233
1234#if defined WLAN_FEATURE_VOWIFI
1235 REG_VARIABLE( CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
1236 hdd_config_t, fRrmEnable,
1237 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1238 CFG_RRM_ENABLE_DEFAULT,
1239 CFG_RRM_ENABLE_MIN,
1240 CFG_RRM_ENABLE_MAX ),
1241
1242 REG_VARIABLE( CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
1243 hdd_config_t, nInChanMeasMaxDuration,
1244 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1245 CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1246 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN,
1247 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX ),
1248
1249 REG_VARIABLE( CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
1250 hdd_config_t, nOutChanMeasMaxDuration,
1251 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1252 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1253 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN,
1254 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX ),
1255
1256 REG_VARIABLE( CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
1257 hdd_config_t, nRrmRandnIntvl,
1258 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1259 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
1260 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
1261 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX ),
1262#endif
1263
1264#ifdef WLAN_FEATURE_VOWIFI_11R
1265 REG_VARIABLE( CFG_FT_ENABLE_NAME, WLAN_PARAM_Integer,
1266 hdd_config_t, fFTEnable,
1267 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1268 CFG_FT_ENABLE_DEFAULT,
1269 CFG_FT_ENABLE_MIN,
1270 CFG_FT_ENABLE_MAX ),
1271
1272 REG_VARIABLE( CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
1273 hdd_config_t, fFTResourceReqSupported,
1274 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1275 CFG_FT_RESOURCE_REQ_DEFAULT,
1276 CFG_FT_RESOURCE_REQ_MIN,
1277 CFG_FT_RESOURCE_REQ_MAX ),
1278#endif
1279
1280#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
1281 REG_VARIABLE( CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME, WLAN_PARAM_Integer,
1282 hdd_config_t, nNeighborScanPeriod,
1283 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1284 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
1285 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
1286 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX ),
1287
1288 REG_VARIABLE( CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
1289 hdd_config_t, nNeighborReassocRssiThreshold,
1290 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1291 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_DEFAULT,
1292 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MIN,
1293 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MAX ),
1294
1295 REG_VARIABLE( CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
1296 hdd_config_t, nNeighborLookupRssiThreshold,
1297 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1298 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
1299 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
1300 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX ),
1301
1302 REG_VARIABLE_STRING( CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
1303 hdd_config_t, neighborScanChanList,
1304 VAR_FLAGS_OPTIONAL,
1305 (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT ),
1306
1307 REG_VARIABLE( CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME, WLAN_PARAM_Integer,
1308 hdd_config_t, nNeighborScanMinChanTime,
1309 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1310 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
1311 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
1312 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX ),
1313
1314 REG_VARIABLE( CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME, WLAN_PARAM_Integer,
1315 hdd_config_t, nNeighborScanMaxChanTime,
1316 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1317 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
1318 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
1319 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX ),
1320
1321 REG_VARIABLE( CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
1322 hdd_config_t, nMaxNeighborReqTries,
1323 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1324 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
1325 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
1326 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),
1327
1328 REG_VARIABLE( CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer,
1329 hdd_config_t, nNeighborResultsRefreshPeriod,
1330 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1331 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
1332 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
1333 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX ),
1334#endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */
1335
1336 REG_VARIABLE( CFG_QOS_WMM_BURST_SIZE_DEFN_NAME , WLAN_PARAM_Integer,
1337 hdd_config_t, burstSizeDefinition,
1338 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1339 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
1340 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
1341 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX ),
1342
1343 REG_VARIABLE( CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
1344 hdd_config_t, mcastBcastFilterSetting,
1345 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1346 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
1347 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
1348 CFG_MCAST_BCAST_FILTER_SETTING_MAX ),
1349
1350 REG_VARIABLE( CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
1351 hdd_config_t, fhostArpOffload,
1352 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1353 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
1354 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
1355 CFG_ENABLE_HOST_ARPOFFLOAD_MAX ),
1356
1357 REG_VARIABLE( CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME , WLAN_PARAM_HexInteger,
1358 hdd_config_t, tsInfoAckPolicy,
1359 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1360 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
1361 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
1362 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX ),
1363
1364 REG_VARIABLE( CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
1365 hdd_config_t, bSingleTidRc,
1366 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1367 CFG_SINGLE_TID_RC_DEFAULT,
1368 CFG_SINGLE_TID_RC_MIN,
1369 CFG_SINGLE_TID_RC_MAX),
1370
1371 REG_VARIABLE( CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
1372 hdd_config_t, dynamicPsPollValue,
1373 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1374 CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
1375 CFG_DYNAMIC_PSPOLL_VALUE_MIN,
1376 CFG_DYNAMIC_PSPOLL_VALUE_MAX ),
1377
1378 REG_VARIABLE( CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
1379 hdd_config_t, teleBcnWakeupEn,
1380 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1381 CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
1382 CFG_TELE_BCN_WAKEUP_EN_MIN,
1383 CFG_TELE_BCN_WAKEUP_EN_MAX ),
1384
1385 REG_VARIABLE( CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
1386 hdd_config_t, infraStaKeepAlivePeriod,
1387 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1388 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
1389 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
1390 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),
1391
1392 REG_VARIABLE( CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME , WLAN_PARAM_Integer,
1393 hdd_config_t, AddTSWhenACMIsOff,
1394 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1395 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
1396 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
1397 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX ),
1398
1399
1400 REG_VARIABLE( CFG_VALIDATE_SCAN_LIST_NAME , WLAN_PARAM_Integer,
1401 hdd_config_t, fValidateScanList,
1402 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1403 CFG_VALIDATE_SCAN_LIST_DEFAULT,
1404 CFG_VALIDATE_SCAN_LIST_MIN,
1405 CFG_VALIDATE_SCAN_LIST_MAX ),
1406
1407 REG_VARIABLE( CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
1408 hdd_config_t, nNullDataApRespTimeout,
1409 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1410 CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
1411 CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
1412 CFG_NULLDATA_AP_RESP_TIMEOUT_MAX ),
1413
1414 REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1415 hdd_config_t, apDataAvailPollPeriodInMs,
1416 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1417 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1418 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1419 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ),
1420
1421 REG_VARIABLE( CFG_ENABLE_BTAMP_NAME, WLAN_PARAM_Integer,
1422 hdd_config_t, enableBtAmp,
1423 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1424 CFG_ENABLE_BTAMP_DEFAULT,
1425 CFG_ENABLE_BTAMP_MIN,
1426 CFG_ENABLE_BTAMP_MAX ),
1427
1428#ifdef WLAN_BTAMP_FEATURE
1429 REG_VARIABLE( CFG_BT_AMP_PREFERRED_CHANNEL_NAME, WLAN_PARAM_Integer,
1430 hdd_config_t, preferredChannel,
1431 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1432 CFG_BT_AMP_PREFERRED_CHANNEL_DEFAULT,
1433 CFG_BT_AMP_PREFERRED_CHANNEL_MIN,
1434 CFG_BT_AMP_PREFERRED_CHANNEL_MAX ),
1435#endif //WLAN_BTAMP_FEATURE
1436 REG_VARIABLE( CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
1437 hdd_config_t, nBandCapability,
1438 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1439 CFG_BAND_CAPABILITY_DEFAULT,
1440 CFG_BAND_CAPABILITY_MIN,
1441 CFG_BAND_CAPABILITY_MAX ),
1442
1443 REG_VARIABLE( CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME, WLAN_PARAM_Integer,
1444 hdd_config_t, fEnableBeaconEarlyTermination,
1445 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1446 CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
1447 CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
1448 CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ),
1449
1450#ifdef FEATURE_WLAN_INTEGRATED_SOC
1451 /* note that since the default value is out of range we cannot
1452 enable range check, otherwise we get a system log message */
1453 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAL_NAME, WLAN_PARAM_Integer,
1454 hdd_config_t, wdiTraceEnableDAL,
1455 VAR_FLAGS_OPTIONAL,
1456 CFG_WDI_TRACE_ENABLE_DEFAULT,
1457 CFG_WDI_TRACE_ENABLE_MIN,
1458 CFG_WDI_TRACE_ENABLE_MAX ),
1459
1460 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_CTL_NAME, WLAN_PARAM_Integer,
1461 hdd_config_t, wdiTraceEnableCTL,
1462 VAR_FLAGS_OPTIONAL,
1463 CFG_WDI_TRACE_ENABLE_DEFAULT,
1464 CFG_WDI_TRACE_ENABLE_MIN,
1465 CFG_WDI_TRACE_ENABLE_MAX ),
1466
1467 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAT_NAME, WLAN_PARAM_Integer,
1468 hdd_config_t, wdiTraceEnableDAT,
1469 VAR_FLAGS_OPTIONAL,
1470 CFG_WDI_TRACE_ENABLE_DEFAULT,
1471 CFG_WDI_TRACE_ENABLE_MIN,
1472 CFG_WDI_TRACE_ENABLE_MAX ),
1473
1474 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_PAL_NAME, WLAN_PARAM_Integer,
1475 hdd_config_t, wdiTraceEnablePAL,
1476 VAR_FLAGS_OPTIONAL,
1477 CFG_WDI_TRACE_ENABLE_DEFAULT,
1478 CFG_WDI_TRACE_ENABLE_MIN,
1479 CFG_WDI_TRACE_ENABLE_MAX ),
1480#endif /* FEATURE_WLAN_INTEGRATED_SOC */
1481
1482 REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
1483 hdd_config_t, nTeleBcnTransListenInterval,
1484 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1485 CFG_TELE_BCN_TRANS_LI_DEFAULT,
1486 CFG_TELE_BCN_TRANS_LI_MIN,
1487 CFG_TELE_BCN_TRANS_LI_MAX ),
1488
1489 REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1490 hdd_config_t, nTeleBcnTransLiNumIdleBeacons,
1491 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1492 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
1493 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
1494 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX ),
1495
1496 REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
1497 hdd_config_t, nTeleBcnMaxListenInterval,
1498 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1499 CFG_TELE_BCN_MAX_LI_DEFAULT,
1500 CFG_TELE_BCN_MAX_LI_MIN,
1501 CFG_TELE_BCN_MAX_LI_MAX ),
1502
1503 REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1504 hdd_config_t, nTeleBcnMaxLiNumIdleBeacons,
1505 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1506 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
1507 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
1508 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX ),
1509
1510 REG_VARIABLE( CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer,
1511 hdd_config_t, bcnEarlyTermWakeInterval,
1512 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1513 CFG_BCN_EARLY_TERM_WAKE_DEFAULT,
1514 CFG_BCN_EARLY_TERM_WAKE_MIN,
1515 CFG_BCN_EARLY_TERM_WAKE_MAX ),
1516
1517 REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1518 hdd_config_t, apDataAvailPollPeriodInMs,
1519 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1520 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1521 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1522 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ),
1523
1524 REG_VARIABLE( CFG_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer,
1525 hdd_config_t, enableCloseLoop,
1526 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1527 CFG_ENABLE_CLOSE_LOOP_DEFAULT,
1528 CFG_ENABLE_CLOSE_LOOP_MIN,
1529 CFG_ENABLE_CLOSE_LOOP_MAX ),
1530
1531 REG_VARIABLE( CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
1532 hdd_config_t, enableBypass11d,
1533 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1534 CFG_ENABLE_BYPASS_11D_DEFAULT,
1535 CFG_ENABLE_BYPASS_11D_MIN,
1536 CFG_ENABLE_BYPASS_11D_MAX ),
1537
1538 REG_VARIABLE( CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1539 hdd_config_t, enableDFSChnlScan,
1540 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1541 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
1542 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
1543 CFG_ENABLE_DFS_CHNL_SCAN_MAX ),
1544
1545 REG_VARIABLE( CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
1546 hdd_config_t, enableDynamicDTIM,
1547 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1548 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
1549 CFG_ENABLE_DYNAMIC_DTIM_MIN,
1550 CFG_ENABLE_DYNAMIC_DTIM_MAX ),
1551
1552 REG_VARIABLE( CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME, WLAN_PARAM_Integer,
1553 hdd_config_t, enableAutomaticTxPowerControl,
1554 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1555 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT,
1556 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN,
1557 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX ),
1558
1559 REG_VARIABLE( CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
1560 hdd_config_t, ShortGI40MhzEnable,
1561 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1562 CFG_SHORT_GI_40MHZ_DEFAULT,
1563 CFG_SHORT_GI_40MHZ_MIN,
1564 CFG_SHORT_GI_40MHZ_MAX ),
1565
1566 REG_DYNAMIC_VARIABLE( CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
1567 hdd_config_t, reportMaxLinkSpeed,
1568 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1569 CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
1570 CFG_REPORT_MAX_LINK_SPEED_MIN,
1571 CFG_REPORT_MAX_LINK_SPEED_MAX,
1572 NULL, 0 ),
1573
1574 REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
1575 hdd_config_t, linkSpeedRssiHigh,
1576 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1577 CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
1578 CFG_LINK_SPEED_RSSI_HIGH_MIN,
1579 CFG_LINK_SPEED_RSSI_HIGH_MAX,
1580 NULL, 0 ),
1581
Madan Mohan Koyyalamudi8df78d52012-11-02 12:30:06 -07001582 REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger,
1583 hdd_config_t, linkSpeedRssiMid,
1584 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1585 CFG_LINK_SPEED_RSSI_MID_DEFAULT,
1586 CFG_LINK_SPEED_RSSI_MID_MIN,
1587 CFG_LINK_SPEED_RSSI_MID_MAX,
1588 NULL, 0 ),
1589
Jeff Johnson295189b2012-06-20 16:38:30 -07001590 REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
1591 hdd_config_t, linkSpeedRssiLow,
1592 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1593 CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
1594 CFG_LINK_SPEED_RSSI_LOW_MIN,
1595 CFG_LINK_SPEED_RSSI_LOW_MAX,
1596 NULL, 0 ),
1597
Madan Mohan Koyyalamudid5026072012-11-30 14:56:21 -08001598#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
1599 REG_DYNAMIC_VARIABLE( CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
1600 hdd_config_t, nRoamPrefer5GHz,
1601 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1602 CFG_ROAM_PREFER_5GHZ_DEFAULT,
1603 CFG_ROAM_PREFER_5GHZ_MIN,
1604 CFG_ROAM_PREFER_5GHZ_MAX,
1605 cbNotifySetRoamPrefer5GHz, 0 ),
1606#endif
1607
Jeff Johnson295189b2012-06-20 16:38:30 -07001608#ifdef WLAN_FEATURE_P2P
1609 REG_VARIABLE( CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME, WLAN_PARAM_Integer,
1610 hdd_config_t, isP2pDeviceAddrAdministrated,
1611 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1612 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
1613 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
1614 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX ),
1615#endif
1616
1617REG_VARIABLE( CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
1618 hdd_config_t, enableMCC,
1619 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1620 CFG_ENABLE_MCC_ENABLED_DEFAULT,
1621 CFG_ENABLE_MCC_ENABLED_MIN,
1622 CFG_ENABLE_MCC_ENABLED_MAX ),
1623
Mohit Khanna7ed53f02012-09-11 17:52:10 -07001624REG_VARIABLE( CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
1625 hdd_config_t, allowMCCGODiffBI,
1626 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1627 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
1628 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
Madan Mohan Koyyalamudi0d40e662012-12-07 14:24:14 -08001629 CFG_ALLOW_MCC_GO_DIFF_BI_MAX ),
Mohit Khanna7ed53f02012-09-11 17:52:10 -07001630
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -08001631REG_VARIABLE( CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 hdd_config_t, thermalMitigationEnable,
1633 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1634 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
1635 CFG_THERMAL_MIGRATION_ENABLE_MIN,
1636 CFG_THERMAL_MIGRATION_ENABLE_MAX ),
1637#ifdef WLAN_FEATURE_PACKET_FILTERING
1638 REG_VARIABLE( CFG_MC_ADDR_LIST_FILTER_NAME, WLAN_PARAM_Integer,
1639 hdd_config_t, isMcAddrListFilter,
1640 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1641 CFG_MC_ADDR_LIST_FILTER_DEFAULT,
1642 CFG_MC_ADDR_LIST_FILTER_MIN,
1643 CFG_MC_ADDR_LIST_FILTER_MAX ),
1644#endif
1645
1646REG_VARIABLE( CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
1647 hdd_config_t, enableModulatedDTIM,
1648 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1649 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
1650 CFG_ENABLE_MODULATED_DTIM_MIN,
1651 CFG_ENABLE_MODULATED_DTIM_MAX ),
1652
Jeff Johnsond13512a2012-07-17 11:42:19 -07001653 REG_VARIABLE( CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
1654 hdd_config_t, fEnableMCAddrList,
1655 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1656 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
1657 CFG_MC_ADDR_LIST_ENABLE_MIN,
1658 CFG_MC_ADDR_LIST_ENABLE_MAX ),
1659
Jeff Johnsone7245742012-09-05 17:12:55 -07001660#ifdef WLAN_FEATURE_11AC
1661REG_VARIABLE( CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
1662 hdd_config_t, vhtChannelWidth,
1663 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1664 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
1665 CFG_VHT_CHANNEL_WIDTH_MIN,
1666 CFG_VHT_CHANNEL_WIDTH_MAX),
1667
1668REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
1669 hdd_config_t, vhtRxMCS,
1670 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1671 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
1672 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
1673 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),
1674
1675REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
1676 hdd_config_t, vhtTxMCS,
1677 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1678 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
1679 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
1680 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),
1681#endif
1682
1683REG_VARIABLE( CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
1684 hdd_config_t, enableFirstScan2GOnly,
1685 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1686 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
1687 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
1688 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX ),
1689
1690REG_VARIABLE( CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
1691 hdd_config_t, skipDfsChnlInP2pSearch,
1692 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1693 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
1694 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
1695 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX ),
1696
1697REG_VARIABLE( CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME, WLAN_PARAM_Integer,
1698 hdd_config_t, ignoreDynamicDtimInP2pMode,
1699 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1700 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
1701 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
1702 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ),
1703
Madan Mohan Koyyalamudidd11eaf2012-11-02 16:04:21 -07001704REG_VARIABLE( CFG_NUM_BUFF_ADVERT_NAME, WLAN_PARAM_Integer,
1705 hdd_config_t,numBuffAdvert ,
1706 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1707 CFG_NUM_BUFF_ADVERT_DEFAULT,
1708 CFG_NUM_BUFF_ADVERT_MIN,
1709 CFG_NUM_BUFF_ADVERT_MAX ),
Madan Mohan Koyyalamudi3f65e312012-11-06 15:31:12 -08001710
1711 REG_VARIABLE( CFG_ENABLE_IGNORE_CHAN165, WLAN_PARAM_Integer,
1712 hdd_config_t, ignore_chan165,
1713 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1714 CFG_ENABLE_IGNORE_CHAN165_DEFAULT,
1715 CFG_ENABLE_IGNORE_CHAN165_MIN,
1716 CFG_ENABLE_IGNORE_CHAN165_MAX ),
Madan Mohan Koyyalamudid5f04ca2012-11-06 15:51:26 -08001717
1718REG_VARIABLE( CFG_MCC_CONFIG_PARAM_NAME, WLAN_PARAM_Integer,
1719 hdd_config_t, configMccParam,
1720 VAR_FLAGS_OPTIONAL,
1721 CFG_MCC_CONFIG_PARAM_DEFAULT,
1722 CFG_MCC_CONFIG_PARAM_MIN,
1723 CFG_MCC_CONFIG_PARAM_MAX ),
Pratik Bhalgat6bfd1422012-11-22 17:09:40 +05301724REG_VARIABLE( CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
1725 hdd_config_t, enableRxSTBC,
1726 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1727 CFG_ENABLE_RX_STBC_DEFAULT,
1728 CFG_ENABLE_RX_STBC_MIN,
1729 CFG_ENABLE_RX_STBC_MAX ),
Mohit Khanna698ba2a2012-12-04 15:08:18 -08001730#ifdef FEATURE_WLAN_TDLS
1731REG_VARIABLE( CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
1732 hdd_config_t, fEnableTDLSSupport,
1733 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1734 CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
1735 CFG_TDLS_SUPPORT_ENABLE_MIN,
1736 CFG_TDLS_SUPPORT_ENABLE_MAX ),
1737#endif
Madan Mohan Koyyalamudi0d40e662012-12-07 14:24:14 -08001738
1739REG_VARIABLE( CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
1740 hdd_config_t, enableLpwrImgTransition,
1741 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1742 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
1743 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
1744 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ),
1745
Jeff Johnson295189b2012-06-20 16:38:30 -07001746};
1747
1748/*
1749 * This function returns a pointer to the character after the occurence
1750 * of a new line character. It also modifies the original string by replacing
1751 * the '\n' character with the null character.
1752 * Function returns NULL if no new line character was found before end of
1753 * string was reached
1754 */
1755static char* get_next_line(char* str)
1756{
1757 char c;
1758
1759 if( str == NULL || *str == '\0') {
1760 return NULL;
1761 }
1762
1763 c = *str;
1764 while(c != '\n' && c != '\0' && c != 0xd) {
1765 str = str + 1;
1766 c = *str;
1767 }
1768
1769 if (c == '\0' ) {
1770 return NULL;
1771 }
1772 else
1773 {
1774 *str = '\0';
1775 return (str+1);
1776 }
1777
1778 return NULL;
1779}
1780
1781// look for space. Ascii values to look are -
1782// 0x09 == horizontal tab
1783// 0x0a == Newline ("\n")
1784// 0x0b == vertical tab
1785// 0x0c == Newpage or feed form.
1786// 0x0d == carriage return (CR or "\r")
1787// Null ('\0') should not considered as space.
1788#define i_isspace(ch) (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')
1789
1790/*
1791 * This function trims any leading and trailing white spaces
1792 */
1793static char *i_trim(char *str)
1794
1795{
1796 char *ptr;
1797
1798 if(*str == '\0') return str;
1799
1800 /* Find the first non white-space*/
1801 for (ptr = str; i_isspace(*ptr); ptr++);
1802 if (*ptr == '\0')
1803 return str;
1804
1805 /* This is the new start of the string*/
1806 str = ptr;
1807
1808 /* Find the last non white-space */
1809 ptr += strlen(ptr) - 1;
1810 for (; ptr != str && i_isspace(*ptr); ptr--);
1811 /* Null terminate the following character */
1812 ptr[1] = '\0';
1813
1814 return str;
1815}
1816
1817
1818//Structure to store each entry in qcom_cfg.ini file
1819typedef struct
1820{
1821 char *name;
1822 char *value;
1823}tCfgIniEntry;
1824
1825static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t * pHddCtx,
1826 tCfgIniEntry* iniTable, unsigned long entries);
1827
1828#ifdef WLAN_CFG_DEBUG
1829void dump_cfg_ini (tCfgIniEntry* iniTable, unsigned long entries)
1830{
1831 unsigned long i;
1832
1833 for (i = 0; i < entries; i++) {
1834 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "%s entry Name=[%s] value=[%s]",
1835 WLAN_INI_FILE, iniTable[i].name, iniTable[i].value);
1836 }
1837}
1838#endif
1839
1840/*
1841 * This function reads the qcom_cfg.ini file and
1842 * parses each 'Name=Value' pair in the ini file
1843 */
1844VOS_STATUS hdd_parse_config_ini(hdd_context_t* pHddCtx)
1845{
1846 int status, i=0;
1847 /** Pointer for firmware image data */
1848 const struct firmware *fw = NULL;
1849 char *buffer, *line,*pTemp;
1850 size_t size;
1851 char *name, *value;
Madan Mohan Koyyalamudi729972c2012-10-21 12:39:24 -07001852 /* cfgIniTable is static to avoid excess stack usage */
1853 static tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 VOS_STATUS vos_status = VOS_STATUS_SUCCESS;
1855
1856 memset(cfgIniTable, 0, sizeof(cfgIniTable));
1857
1858 status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
1859
1860 if(status)
1861 {
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001862 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d\n",__func__, status);
Jeff Johnson295189b2012-06-20 16:38:30 -07001863 return VOS_STATUS_E_FAILURE;
1864 }
1865 if(!fw || !fw->data || !fw->size)
1866 {
1867 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: %s download failed\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001868 __func__, WLAN_INI_FILE);
Jeff Johnson295189b2012-06-20 16:38:30 -07001869 return VOS_STATUS_E_FAILURE;
1870 }
1871
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001872 hddLog(LOG1, "%s: qcom_cfg.ini Size %d\n",__func__, fw->size);
Jeff Johnson295189b2012-06-20 16:38:30 -07001873
1874 buffer = (char*)vos_mem_malloc(fw->size);
1875
1876 if(NULL == buffer) {
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001877 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: kmalloc failure",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 release_firmware(fw);
1879 return VOS_STATUS_E_FAILURE;
1880 }
1881 pTemp = buffer;
1882
1883 vos_mem_copy((void*)buffer,(void *)fw->data, fw->size);
1884 size = fw->size;
1885
1886 while (buffer != NULL)
1887 {
1888 line = get_next_line(buffer);
1889 buffer = i_trim(buffer);
1890
1891 hddLog(LOG1, "%s: item", buffer);
1892
1893 if(strlen((char*)buffer) == 0 || *buffer == '#') {
1894 buffer = line;
1895 continue;
1896 }
1897 else if(strncmp(buffer, "END", 3) == 0 ) {
1898 break;
1899 }
1900 else
1901 {
1902 name = buffer;
1903 while(*buffer != '=' && *buffer != '\0')
1904 buffer++;
1905 if(*buffer != '\0') {
1906 *buffer++ = '\0';
1907 i_trim(name);
1908 if(strlen (name) != 0) {
1909 buffer = i_trim(buffer);
1910 if(strlen(buffer)>0) {
1911 value = buffer;
1912 while(!i_isspace(*buffer) && *buffer != '\0')
1913 buffer++;
1914 *buffer = '\0';
1915 cfgIniTable[i].name= name;
1916 cfgIniTable[i++].value= value;
1917 if(i >= MAX_CFG_INI_ITEMS) {
1918 hddLog(LOGE,"%s: Number of items in %s > %d \n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001919 __func__, WLAN_INI_FILE, MAX_CFG_INI_ITEMS);
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 break;
1921 }
1922 }
1923 }
1924 }
1925 }
1926 buffer = line;
1927 }
1928
1929 //Loop through the registry table and apply all these configs
1930 vos_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
1931
1932 release_firmware(fw);
1933 vos_mem_free(pTemp);
1934 return vos_status;
1935}
1936
1937
1938static void print_hdd_cfg(hdd_context_t *pHddCtx)
1939{
1940 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "*********Config values in HDD Adapter*******");
1941 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RTSThreshold] Value = %lu",pHddCtx->cfg_ini->RTSThreshold) ;
1942 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [OperatingChannel] Value = [%u]",pHddCtx->cfg_ini->OperatingChannel);
1943 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PowerUsageControl] Value = [%s]",pHddCtx->cfg_ini->PowerUsageControl);
1944 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fIsImpsEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsImpsEnabled);
1945 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [AutoBmpsTimerEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsAutoBmpsTimerEnabled);
1946 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nAutoBmpsTimerValue] Value = [%lu]",pHddCtx->cfg_ini->nAutoBmpsTimerValue);
1947 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nVccRssiTrigger] Value = [%u]",pHddCtx->cfg_ini->nVccRssiTrigger);
1948 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssBssid] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1949 pHddCtx->cfg_ini->IbssBssid.bytes[0],pHddCtx->cfg_ini->IbssBssid.bytes[1],
1950 pHddCtx->cfg_ini->IbssBssid.bytes[2],pHddCtx->cfg_ini->IbssBssid.bytes[3],
1951 pHddCtx->cfg_ini->IbssBssid.bytes[4],pHddCtx->cfg_ini->IbssBssid.bytes[5]);
1952
1953 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1954 "Name = [Intf0MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1955 pHddCtx->cfg_ini->intfMacAddr[0].bytes[0],
1956 pHddCtx->cfg_ini->intfMacAddr[0].bytes[1],
1957 pHddCtx->cfg_ini->intfMacAddr[0].bytes[2],
1958 pHddCtx->cfg_ini->intfMacAddr[0].bytes[3],
1959 pHddCtx->cfg_ini->intfMacAddr[0].bytes[4],
1960 pHddCtx->cfg_ini->intfMacAddr[0].bytes[5]);
1961
1962
1963 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1964 "Name = [Intf1MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1965 pHddCtx->cfg_ini->intfMacAddr[1].bytes[0],
1966 pHddCtx->cfg_ini->intfMacAddr[1].bytes[1],
1967 pHddCtx->cfg_ini->intfMacAddr[1].bytes[2],
1968 pHddCtx->cfg_ini->intfMacAddr[1].bytes[3],
1969 pHddCtx->cfg_ini->intfMacAddr[1].bytes[4],
1970 pHddCtx->cfg_ini->intfMacAddr[1].bytes[5]);
1971
1972 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1973 "Name = [Intf2MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1974 pHddCtx->cfg_ini->intfMacAddr[2].bytes[0],
1975 pHddCtx->cfg_ini->intfMacAddr[2].bytes[1],
1976 pHddCtx->cfg_ini->intfMacAddr[2].bytes[2],
1977 pHddCtx->cfg_ini->intfMacAddr[2].bytes[3],
1978 pHddCtx->cfg_ini->intfMacAddr[2].bytes[4],
1979 pHddCtx->cfg_ini->intfMacAddr[2].bytes[5]);
1980
1981 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1982 "Name = [Intf3MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1983 pHddCtx->cfg_ini->intfMacAddr[3].bytes[0],
1984 pHddCtx->cfg_ini->intfMacAddr[3].bytes[1],
1985 pHddCtx->cfg_ini->intfMacAddr[3].bytes[2],
1986 pHddCtx->cfg_ini->intfMacAddr[3].bytes[3],
1987 pHddCtx->cfg_ini->intfMacAddr[3].bytes[4],
1988 pHddCtx->cfg_ini->intfMacAddr[3].bytes[5]);
1989
1990#ifdef WLAN_SOFTAP_FEATURE
1991
1992 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApEnableUapsd] value = [%u]\n",pHddCtx->cfg_ini->apUapsdEnabled);
1993
1994 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPCntryCode] Value =[%c%c%c]\n",
1995 pHddCtx->cfg_ini->apCntryCode[0],pHddCtx->cfg_ini->apCntryCode[1],
1996 pHddCtx->cfg_ini->apCntryCode[2]);
1997 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApProt] value = [%u]", pHddCtx->cfg_ini->apProtEnabled);
1998 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPAutoShutOff] Value = [%u]\n", pHddCtx->cfg_ini->nAPAutoShutOff);
1999
2000 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableListenMode] Value = [%u]\n", pHddCtx->cfg_ini->nEnableListenMode);
2001 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApProtection] value = [%u]\n",pHddCtx->cfg_ini->apProtection);
2002 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApOBSSProt] value = [%u]\n",pHddCtx->cfg_ini->apOBSSProtEnabled);
2003 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApAutoChannelSelection] value = [%u]\n",pHddCtx->cfg_ini->apAutoChannelSelection);
2004#endif
2005
2006 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%lu]",pHddCtx->cfg_ini->nChannelBondingMode24GHz);
2007 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%lu]",pHddCtx->cfg_ini->nChannelBondingMode5GHz);
2008 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [dot11Mode] Value = [%lu]",pHddCtx->cfg_ini->dot11Mode);
2009 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WmmMode] Value = [%u] ",pHddCtx->cfg_ini->WmmMode);
2010 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [UapsdMask] Value = [0x%x] ",pHddCtx->cfg_ini->UapsdMask);
2011 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PktClassificationBasis] Value = [%u] ",pHddCtx->cfg_ini->PktClassificationBasis);
2012 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ImplicitQosIsEnabled] Value = [%u]",(int)pHddCtx->cfg_ini->bImplicitQosEnabled);
2013
2014 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdVoSrvIntv);
2015 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdVoSuspIntv);
2016
2017 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdViSrvIntv);
2018 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdViSuspIntv);
2019
2020 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBeSrvIntv);
2021 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBeSuspIntv);
2022
2023 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBkSrvIntv);
2024 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBkSuspIntv);
2025#ifdef FEATURE_WLAN_CCX
2026 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraInactivityInterval] Value = [%lu] ",pHddCtx->cfg_ini->InfraInactivityInterval);
2027 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [CcxEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isCcxIniFeatureEnabled);
2028 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastTransitionEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isFastTransitionEnabled);
2029 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gTxPowerCap] Value = [%lu] dBm ",pHddCtx->cfg_ini->nTxPowerCap);
2030#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07002031#ifdef FEATURE_WLAN_LFR
2032 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastRoamEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isFastRoamIniFeatureEnabled);
2033#endif
Jeff Johnson43971f52012-07-17 12:26:56 -07002034#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
2035 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RoamRssiDiff] Value = [%lu] ",pHddCtx->cfg_ini->RoamRssiDiff);
Madan Mohan Koyyalamudi62b55b02012-12-03 16:45:39 -08002036 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ImmediateRoamRssiDiff] Value = [%lu] ",pHddCtx->cfg_ini->nImmediateRoamRssiDiff);
Jeff Johnson43971f52012-07-17 12:26:56 -07002037#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVo] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVo);
2039 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVo);
2040 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVo] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVo);
2041 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVo] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVo);
2042 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVo);
2043
2044 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVi] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVi);
2045 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVi);
2046 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVi] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVi);
2047 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVi] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVi);
2048 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVi);
2049
2050 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBe] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBe);
2051 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBe);
2052 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBe] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBe);
2053 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBe] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBe);
2054 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBe);
2055
2056 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBk] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBk);
2057 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBk);
2058 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBk] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBk);
2059 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBk] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBk);
2060 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBk);
2061
2062 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqBkWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqBkWeight);
2063 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqBeWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqBeWeight);
2064 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqViWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqViWeight);
2065 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqVoWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqVoWeight);
2066 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [DelayedTriggerFrmInt] Value = [%lu] ",pHddCtx->cfg_ini->DelayedTriggerFrmInt);
2067 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [mcastBcastFilterSetting] Value = [%u] ",pHddCtx->cfg_ini->mcastBcastFilterSetting);
2068 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fhostArpOffload] Value = [%u] ",pHddCtx->cfg_ini->fhostArpOffload);
2069#ifdef WLAN_FEATURE_VOWIFI_11R
2070 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTEnable] Value = [%lu] ",pHddCtx->cfg_ini->fFTEnable);
2071 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTResourceReqSupported] Value = [%lu] ",pHddCtx->cfg_ini->fFTResourceReqSupported);
2072#endif
2073
2074#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
2075 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborReassocRssiThreshold] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborReassocRssiThreshold);
2076 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborLookupRssiThreshold] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborLookupRssiThreshold);
2077 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMinChanTime] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanMinChanTime);
2078 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMaxChanTime] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanMaxChanTime);
2079 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nMaxNeighborRetries] Value = [%lu] ",pHddCtx->cfg_ini->nMaxNeighborReqTries);
2080 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanPeriod] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanPeriod);
2081 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanResultsRefreshPeriod] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborResultsRefreshPeriod);
2082#endif
2083 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [burstSizeDefinition] Value = [0x%x] ",pHddCtx->cfg_ini->burstSizeDefinition);
2084 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [tsInfoAckPolicy] Value = [0x%x] ",pHddCtx->cfg_ini->tsInfoAckPolicy);
2085 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [rfSettlingTimeUs] Value = [%u] ",pHddCtx->cfg_ini->rfSettlingTimeUs);
2086 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bSingleTidRc] Value = [%u] ",pHddCtx->cfg_ini->bSingleTidRc);
2087 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gDynamicPSPollvalue] Value = [%u] ",pHddCtx->cfg_ini->dynamicPsPollValue);
2088 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAddTSWhenACMIsOff] Value = [%u] ",pHddCtx->cfg_ini->AddTSWhenACMIsOff);
2089 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gValidateScanList] Value = [%u] ",pHddCtx->cfg_ini->fValidateScanList);
2090
2091 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gStaKeepAlivePeriod] Value = [%u] ",pHddCtx->cfg_ini->infraStaKeepAlivePeriod);
2092 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApDataAvailPollInterVal] Value = [%u] ",pHddCtx->cfg_ini->apDataAvailPollPeriodInMs);
2093 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableBtAmp] Value = [%u] ",pHddCtx->cfg_ini->enableBtAmp);
2094#ifdef WLAN_BTAMP_FEATURE
2095 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [BtAmpPreferredChannel] Value = [%u] ",pHddCtx->cfg_ini->preferredChannel);
2096#endif //WLAN_BTAMP_FEATURE
2097 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [BandCapability] Value = [%u] ",pHddCtx->cfg_ini->nBandCapability);
2098 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableBeaconEarlyTermination] Value = [%u] ",pHddCtx->cfg_ini->fEnableBeaconEarlyTermination);
2099 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [teleBcnWakeupEnable] Value = [%u] ",pHddCtx->cfg_ini->teleBcnWakeupEn);
2100 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransListenInterval);
2101 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransLiNumIdleBeacons);
2102 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxListenInterval);
2103 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxLiNumIdleBeacons);
2104 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bcnEarlyTermWakeInterval] Value = [%u] ",pHddCtx->cfg_ini->bcnEarlyTermWakeInterval);
2105 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApDataAvailPollInterVal] Value = [%u] ",pHddCtx->cfg_ini->apDataAvailPollPeriodInMs);
2106 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableBypass11d] Value = [%u] ",pHddCtx->cfg_ini->enableBypass11d);
2107 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableDFSChnlScan] Value = [%u] ",pHddCtx->cfg_ini->enableDFSChnlScan);
2108 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gReportMaxLinkSpeed] Value = [%u] ",pHddCtx->cfg_ini->reportMaxLinkSpeed);
2109 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [thermalMitigationEnable] Value = [%u] ",pHddCtx->cfg_ini->thermalMitigationEnable);
Jeff Johnsone7245742012-09-05 17:12:55 -07002110#ifdef WLAN_FEATURE_11AC
2111 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gVhtChannelWidth] value = [%u]\n",pHddCtx->cfg_ini->vhtChannelWidth);
2112#endif
2113 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableFirstScan2GOnly] Value = [%u] ",pHddCtx->cfg_ini->enableFirstScan2GOnly);
2114 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",pHddCtx->cfg_ini->skipDfsChnlInP2pSearch);
2115 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",pHddCtx->cfg_ini->ignoreDynamicDtimInP2pMode);
Madan Mohan Koyyalamudi3f65e312012-11-06 15:31:12 -08002116 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIgnore_Chan165] Value = [%u] ",pHddCtx->cfg_ini->ignore_chan165);
Pratik Bhalgat6bfd1422012-11-22 17:09:40 +05302117 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableRxSTBC] Value = [%u] ",pHddCtx->cfg_ini->enableRxSTBC);
Madan Mohan Koyyalamudi0d40e662012-12-07 14:24:14 -08002118 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableLpwrImgTransition] Value = [%u] ",pHddCtx->cfg_ini->enableLpwrImgTransition);
Jeff Johnson295189b2012-06-20 16:38:30 -07002119}
2120
2121
2122#define CFG_VALUE_MAX_LEN 256
2123#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
2124VOS_STATUS hdd_cfg_get_config(hdd_context_t *pHddCtx, char *pBuf, int buflen)
2125{
2126 unsigned int idx;
2127 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
2128 unsigned long cRegTableEntries = sizeof(g_registry_table) / sizeof( g_registry_table[ 0 ]);
2129 v_U32_t value;
2130 char valueStr[CFG_VALUE_MAX_LEN];
2131 char configStr[CFG_ENTRY_MAX_LEN];
2132 char *fmt;
2133 void *pField;
2134 v_MACADDR_t *pMacAddr;
2135 char *pCur = pBuf;
2136 int curlen;
2137
2138 // start with an empty string
2139 *pCur = '\0';
2140
2141 for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
2142 {
2143 pField = ( (v_U8_t *)pHddCtx->cfg_ini) + pRegEntry->VarOffset;
2144
2145 if ( ( WLAN_PARAM_Integer == pRegEntry->RegType ) ||
2146 ( WLAN_PARAM_SignedInteger == pRegEntry->RegType ) ||
2147 ( WLAN_PARAM_HexInteger == pRegEntry->RegType ) )
2148 {
2149 value = 0;
2150 memcpy( &value, pField, pRegEntry->VarSize );
2151 if ( WLAN_PARAM_HexInteger == pRegEntry->RegType )
2152 {
2153 fmt = "%x";
2154 }
2155 else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
2156 {
2157 fmt = "%d";
2158 }
2159 else
2160 {
2161 fmt = "%u";
2162 }
2163 snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
2164 }
2165 else if ( WLAN_PARAM_String == pRegEntry->RegType )
2166 {
2167 snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s", (char *)pField);
2168 }
2169 else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
2170 {
2171 pMacAddr = (v_MACADDR_t *) pField;
2172 snprintf(valueStr, CFG_VALUE_MAX_LEN,
2173 "%02x:%02x:%02x:%02x:%02x:%02x",
2174 pMacAddr->bytes[0],
2175 pMacAddr->bytes[1],
2176 pMacAddr->bytes[2],
2177 pMacAddr->bytes[3],
2178 pMacAddr->bytes[4],
2179 pMacAddr->bytes[5]);
2180 }
2181 else
2182 {
2183 snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
2184 }
2185 curlen = snprintf(configStr, CFG_ENTRY_MAX_LEN,
2186 "%s=[%s]%s\n",
2187 pRegEntry->RegName,
2188 valueStr,
2189 test_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg) ?
2190 "*" : "");
2191
2192 // ideally we want to return the config to the application
2193 // however the config is too big so we just printk() for now
2194#ifdef RETURN_IN_BUFFER
2195 if (curlen <= buflen)
2196 {
2197 // copy string + '\0'
2198 memcpy(pCur, configStr, curlen+1);
2199
2200 // account for addition;
2201 pCur += curlen;
2202 buflen -= curlen;
2203 }
2204 else
2205 {
2206 // buffer space exhausted, return what we have
2207 return VOS_STATUS_E_RESOURCES;
2208 }
2209#else
2210 printk(KERN_CRIT "%s", configStr);
2211#endif // RETURN_IN_BUFFER
2212
2213}
2214
2215#ifndef RETURN_IN_BUFFER
2216 // notify application that output is in system log
2217 snprintf(pCur, buflen, "WLAN configuration written to system log");
2218#endif // RETURN_IN_BUFFER
2219
2220 return VOS_STATUS_SUCCESS;
2221}
2222
2223static VOS_STATUS find_cfg_item (tCfgIniEntry* iniTable, unsigned long entries,
2224 char *name, char** value)
2225{
2226 VOS_STATUS status = VOS_STATUS_E_FAILURE;
2227 unsigned long i;
2228
2229 for (i = 0; i < entries; i++) {
2230 if (strcmp(iniTable[i].name, name) == 0) {
2231 *value = iniTable[i].value;
2232 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Found %s entry for Name=[%s] Value=[%s] ",
2233 WLAN_INI_FILE, name, *value);
2234 return VOS_STATUS_SUCCESS;
2235 }
2236 }
2237
2238 return status;
2239}
2240
2241static int parseHexDigit(char c)
2242{
2243 if (c >= '0' && c <= '9')
2244 return c-'0';
2245 if (c >= 'a' && c <= 'f')
2246 return c-'a'+10;
2247 if (c >= 'A' && c <= 'F')
2248 return c-'A'+10;
2249
2250 return 0;
2251}
2252
2253
2254static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t *pHddCtx, tCfgIniEntry* iniTable, unsigned long entries)
2255{
2256 VOS_STATUS match_status = VOS_STATUS_E_FAILURE;
2257 VOS_STATUS ret_status = VOS_STATUS_SUCCESS;
2258 unsigned int idx;
2259 void *pField;
2260 char *value_str = NULL;
2261 unsigned long len_value_str;
2262 char *candidate;
2263 v_U32_t value;
2264 v_S31_t svalue;
2265 void *pStructBase = pHddCtx->cfg_ini;
2266 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
2267 unsigned long cRegTableEntries = sizeof(g_registry_table) / sizeof( g_registry_table[ 0 ]);
2268 v_U32_t cbOutString;
2269 int i;
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002270 int rv;
Jeff Johnson295189b2012-06-20 16:38:30 -07002271
2272 // sanity test
2273 if (MAX_CFG_INI_ITEMS < cRegTableEntries)
2274 {
2275 hddLog(LOGE, "%s: MAX_CFG_INI_ITEMS too small, must be at least %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002276 __func__, cRegTableEntries);
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 }
2278
2279 for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
2280 {
2281 //Calculate the address of the destination field in the structure.
2282 pField = ( (v_U8_t *)pStructBase )+ pRegEntry->VarOffset;
2283
2284 match_status = find_cfg_item(iniTable, entries, pRegEntry->RegName, &value_str);
2285
2286 if( (match_status != VOS_STATUS_SUCCESS) && ( pRegEntry->Flags & VAR_FLAGS_REQUIRED ) )
2287 {
2288 // If we could not read the cfg item and it is required, this is an error.
2289 hddLog(LOGE, "%s: Failed to read required config parameter %s",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002290 __func__, pRegEntry->RegName);
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 ret_status = VOS_STATUS_E_FAILURE;
2292 break;
2293 }
2294
2295 if ( ( WLAN_PARAM_Integer == pRegEntry->RegType ) ||
2296 ( WLAN_PARAM_HexInteger == pRegEntry->RegType ) )
2297 {
2298 // If successfully read from the registry, use the value read.
2299 // If not, use the default value.
2300 if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002301 rv = kstrtoul(value_str, 10, &value);
2302 if (rv < 0) {
2303 hddLog(LOGE, "%s: Reg Parameter %s invalid. Enforcing default",
2304 __func__, pRegEntry->RegName);
2305 value = pRegEntry->VarDefault;
2306 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 }
2308 else if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002309 rv = kstrtoul(value_str, 16, &value);
2310 if (rv < 0) {
2311 hddLog(LOGE, "%s: Reg paramter %s invalid. Enforcing default",
2312 __func__, pRegEntry->RegName);
2313 value = pRegEntry->VarDefault;
2314 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 }
2316 else {
2317 value = pRegEntry->VarDefault;
2318 }
2319
2320 // If this parameter needs range checking, do it here.
2321 if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
2322 {
2323 if ( value > pRegEntry->VarMax )
2324 {
2325 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%lu > %lu]. Enforcing Maximum",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002326 __func__, pRegEntry->RegName, value, pRegEntry->VarMax );
Jeff Johnson295189b2012-06-20 16:38:30 -07002327 value = pRegEntry->VarMax;
2328 }
2329
2330 if ( value < pRegEntry->VarMin )
2331 {
2332 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%lu < %lu]. Enforcing Minimum",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002333 __func__, pRegEntry->RegName, value, pRegEntry->VarMin);
Jeff Johnson295189b2012-06-20 16:38:30 -07002334 value = pRegEntry->VarMin;
2335 }
2336 }
2337 // If this parameter needs range checking, do it here.
2338 else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
2339 {
2340 if ( value > pRegEntry->VarMax )
2341 {
2342 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%lu > %lu]. Enforcing Default= %lu",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002343 __func__, pRegEntry->RegName, value, pRegEntry->VarMax, pRegEntry->VarDefault );
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 value = pRegEntry->VarDefault;
2345 }
2346
2347 if ( value < pRegEntry->VarMin )
2348 {
2349 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%lu < %lu]. Enforcing Default= %lu",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002350 __func__, pRegEntry->RegName, value, pRegEntry->VarMin, pRegEntry->VarDefault );
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 value = pRegEntry->VarDefault;
2352 }
2353 }
2354
2355 // Move the variable into the output field.
2356 memcpy( pField, &value, pRegEntry->VarSize );
2357 }
2358 else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
2359 {
2360 // If successfully read from the registry, use the value read.
2361 // If not, use the default value.
2362 if (VOS_STATUS_SUCCESS == match_status)
2363 {
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002364 rv = kstrtol(value_str, 10, &svalue);
2365 if (rv < 0) {
2366 hddLog(VOS_TRACE_LEVEL_WARN, "%s: Reg Parameter %s invalid. Enforcing Default",
2367 __func__, pRegEntry->RegName);
2368 svalue = (v_S31_t)pRegEntry->VarDefault;
2369 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 }
2371 else
2372 {
2373 svalue = (v_S31_t)pRegEntry->VarDefault;
2374 }
2375
2376 // If this parameter needs range checking, do it here.
2377 if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
2378 {
2379 if ( svalue > (v_S31_t)pRegEntry->VarMax )
2380 {
2381 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002382 "[%ld > %ld]. Enforcing Maximum", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 pRegEntry->RegName, svalue, (int)pRegEntry->VarMax );
2384 svalue = (v_S31_t)pRegEntry->VarMax;
2385 }
2386
2387 if ( svalue < (v_S31_t)pRegEntry->VarMin )
2388 {
2389 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002390 "[%ld < %ld]. Enforcing Minimum", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 pRegEntry->RegName, svalue, (int)pRegEntry->VarMin);
2392 svalue = (v_S31_t)pRegEntry->VarMin;
2393 }
2394 }
2395 // If this parameter needs range checking, do it here.
2396 else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
2397 {
2398 if ( svalue > (v_S31_t)pRegEntry->VarMax )
2399 {
2400 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
2401 "[%ld > %ld]. Enforcing Default= %ld",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002402 __func__, pRegEntry->RegName, svalue,
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 (int)pRegEntry->VarMax,
2404 (int)pRegEntry->VarDefault );
2405 svalue = (v_S31_t)pRegEntry->VarDefault;
2406 }
2407
2408 if ( svalue < (v_S31_t)pRegEntry->VarMin )
2409 {
2410 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
2411 "[%ld < %ld]. Enforcing Default= %ld",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002412 __func__, pRegEntry->RegName, svalue,
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 (int)pRegEntry->VarMin,
2414 (int)pRegEntry->VarDefault);
2415 svalue = pRegEntry->VarDefault;
2416 }
2417 }
2418
2419 // Move the variable into the output field.
2420 memcpy( pField, &svalue, pRegEntry->VarSize );
2421 }
2422 // Handle string parameters
2423 else if ( WLAN_PARAM_String == pRegEntry->RegType )
2424 {
2425#ifdef WLAN_CFG_DEBUG
2426 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "RegName = %s, VarOffset %u VarSize %u VarDefault %s\n",
2427 pRegEntry->RegName, pRegEntry->VarOffset, pRegEntry->VarSize, (char*)pRegEntry->VarDefault);
2428#endif
2429
2430 if ( match_status == VOS_STATUS_SUCCESS)
2431 {
2432 len_value_str = strlen(value_str);
2433
2434 if(len_value_str > (pRegEntry->VarSize - 1)) {
2435 hddLog(LOGE, "%s: Invalid Value=[%s] specified for Name=[%s] in %s\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002436 __func__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
2438 memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
2439 ( (v_U8_t *)pField )[ cbOutString ] = '\0';
2440 }
2441 else
2442 {
2443 memcpy( pField, (void *)(value_str), len_value_str);
2444 ( (v_U8_t *)pField )[ len_value_str ] = '\0';
2445 }
2446 }
2447 else
2448 {
2449 // Failed to read the string parameter from the registry. Use the default.
2450 cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
2451 memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
2452 ( (v_U8_t *)pField )[ cbOutString ] = '\0';
2453 }
2454 }
2455 else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
2456 {
2457 if(pRegEntry->VarSize != VOS_MAC_ADDR_SIZE) {
2458 hddLog(LOGE, "%s: Invalid VarSize %u for Name=[%s]\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002459 __func__, pRegEntry->VarSize, pRegEntry->RegName);
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 continue;
2461 }
2462 candidate = (char*)pRegEntry->VarDefault;
2463 if ( match_status == VOS_STATUS_SUCCESS) {
2464 len_value_str = strlen(value_str);
2465 if(len_value_str != (VOS_MAC_ADDR_SIZE*2)) {
2466 hddLog(LOGE, "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002467 __func__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 }
2469 else
2470 candidate = value_str;
2471 }
2472 //parse the string and store it in the byte array
2473 for(i=0; i<VOS_MAC_ADDR_SIZE; i++)
2474 {
2475 ((char*)pField)[i] =
2476 (char)(parseHexDigit(candidate[i*2])*16 + parseHexDigit(candidate[i*2+1]));
2477 }
2478 }
2479 else
2480 {
2481 hddLog(LOGE, "%s: Unknown param type for name[%s] in registry table\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002482 __func__, pRegEntry->RegName);
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 }
2484
2485 // did we successfully parse a cfg item for this parameter?
2486 if( (match_status == VOS_STATUS_SUCCESS) &&
2487 (idx < MAX_CFG_INI_ITEMS) )
2488 {
2489 set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
2490 }
2491 }
2492
2493 print_hdd_cfg(pHddCtx);
2494
2495 return( ret_status );
2496}
2497
2498eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode( eHddDot11Mode dot11Mode )
2499{
2500 switch (dot11Mode)
2501 {
2502 case (eHDD_DOT11_MODE_abg):
2503 return eCSR_DOT11_MODE_abg;
2504 case (eHDD_DOT11_MODE_11b):
2505 return eCSR_DOT11_MODE_11b;
2506 case (eHDD_DOT11_MODE_11g):
2507 return eCSR_DOT11_MODE_11g;
2508 default:
2509 case (eHDD_DOT11_MODE_11n):
2510 return eCSR_DOT11_MODE_11n;
2511 case (eHDD_DOT11_MODE_11g_ONLY):
2512 return eCSR_DOT11_MODE_11g_ONLY;
2513 case (eHDD_DOT11_MODE_11n_ONLY):
2514 return eCSR_DOT11_MODE_11n_ONLY;
2515 case (eHDD_DOT11_MODE_11b_ONLY):
2516 return eCSR_DOT11_MODE_11b_ONLY;
Jeff Johnsone7245742012-09-05 17:12:55 -07002517#ifdef WLAN_FEATURE_11AC
2518 case (eHDD_DOT11_MODE_11ac_ONLY):
2519 return eCSR_DOT11_MODE_11ac_ONLY;
2520 case (eHDD_DOT11_MODE_11ac):
2521 return eCSR_DOT11_MODE_11ac;
2522#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 case (eHDD_DOT11_MODE_AUTO):
2524 return eCSR_DOT11_MODE_AUTO;
2525 }
2526
2527}
2528
2529static void hdd_set_btc_config(hdd_context_t *pHddCtx)
2530{
2531 hdd_config_t *pConfig = pHddCtx->cfg_ini;
2532 tSmeBtcConfig btcParams;
2533
2534 sme_BtcGetConfig(pHddCtx->hHal, &btcParams);
2535
2536 btcParams.btcExecutionMode = pConfig->btcExecutionMode;
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 btcParams.btcConsBtSlotsToBlockDuringDhcp = pConfig->btcConsBtSlotsToBlockDuringDhcp;
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 btcParams.btcA2DPBtSubIntervalsDuringDhcp = pConfig->btcA2DPBtSubIntervalsDuringDhcp;
2539
Jeff Johnson32d95a32012-09-10 13:15:23 -07002540 btcParams.btcStaticLenInqBt = pConfig->btcStaticLenInqBt;
2541 btcParams.btcStaticLenPageBt = pConfig->btcStaticLenPageBt;
2542 btcParams.btcStaticLenConnBt = pConfig->btcStaticLenConnBt;
2543 btcParams.btcStaticLenLeBt = pConfig->btcStaticLenLeBt;
2544 btcParams.btcStaticLenInqWlan = pConfig->btcStaticLenInqWlan;
2545 btcParams.btcStaticLenPageWlan = pConfig->btcStaticLenPageWlan;
2546 btcParams.btcStaticLenConnWlan = pConfig->btcStaticLenConnWlan;
2547 btcParams.btcStaticLenLeWlan = pConfig->btcStaticLenLeWlan;
2548 btcParams.btcDynMaxLenBt = pConfig->btcDynMaxLenBt;
2549 btcParams.btcDynMaxLenWlan = pConfig->btcDynMaxLenWlan;
2550 btcParams.btcMaxScoBlockPerc = pConfig->btcMaxScoBlockPerc;
2551 btcParams.btcDhcpProtOnA2dp = pConfig->btcDhcpProtOnA2dp;
2552 btcParams.btcDhcpProtOnSco = pConfig->btcDhcpProtOnSco;
2553
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 sme_BtcSetConfig(pHddCtx->hHal, &btcParams);
2555}
2556
2557static void hdd_set_power_save_config(hdd_context_t *pHddCtx, tSmeConfigParams *smeConfig)
2558{
2559 hdd_config_t *pConfig = pHddCtx->cfg_ini;
2560
2561 tPmcBmpsConfigParams bmpsParams;
2562
2563 sme_GetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams);
2564
2565 if (strcmp(pConfig->PowerUsageControl, "Min") == 0)
2566 {
2567 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsMinSleepTime;
2568 bmpsParams.bmpsPeriod = pConfig->nBmpsMinListenInterval;
2569 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2570 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2571 }
2572 if (strcmp(pConfig->PowerUsageControl, "Max") == 0)
2573 {
2574 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsMaxSleepTime;
2575 bmpsParams.bmpsPeriod = pConfig->nBmpsMaxListenInterval;
2576 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2577 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2578 }
2579 if (strcmp(pConfig->PowerUsageControl, "Mod") == 0)
2580 {
2581 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsModSleepTime;
2582 bmpsParams.bmpsPeriod = pConfig->nBmpsModListenInterval;
2583 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2584 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2585 }
2586
2587 if (pConfig->fIsImpsEnabled)
2588 {
2589 sme_EnablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
2590 }
2591 else
2592 {
2593 sme_DisablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
2594 }
2595
2596 if (pConfig->fIsBmpsEnabled)
2597 {
2598 sme_EnablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
2599 }
2600 else
2601 {
2602 sme_DisablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
2603 }
2604
2605 bmpsParams.trafficMeasurePeriod = pConfig->nAutoBmpsTimerValue;
2606
2607 if (sme_SetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams)== eHAL_STATUS_FAILURE)
2608 {
2609 hddLog(LOGE, "SetConfigPowerSave failed to set BMPS params\n");
2610 }
2611
2612 if(pConfig->fIsAutoBmpsTimerEnabled)
2613 {
2614 sme_StartAutoBmpsTimer(pHddCtx->hHal);
2615 }
2616
2617}
2618
2619#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
2620static VOS_STATUS hdd_string_to_u8_array( char *str, tANI_U8 *intArray, tANI_U8 *len, tANI_U8 intArrayMaxLen )
2621{
2622 char *s = str;
2623
2624 if( str == NULL || intArray == NULL || len == NULL )
2625 {
2626 return VOS_STATUS_E_INVAL;
2627 }
2628 *len = 0;
2629
2630#ifdef VERSION_USING_STRPBRK
2631 while ( (s != NULL) && (*len < intArrayMaxLen) )
2632 {
2633 int val;
2634 //Increment length only if sscanf succesfully extracted one element.
2635 //Any other return value means error. Ignore it.
2636 if( sscanf(s, "%d", &val ) == 1 )
2637 {
2638 intArray[*len] = (tANI_U8) val;
2639 *len += 1;
2640 }
2641 s = strpbrk( s, "," );
2642 if( s )
2643 s++;
2644 }
2645#else
2646 while( (*s != '\0') && (*len < intArrayMaxLen) )
2647 {
2648 unsigned long val;
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002649 int rv;
Jeff Johnson295189b2012-06-20 16:38:30 -07002650
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08002651 rv = kstrtoul( s, 10, &val );
2652 if (rv < 0)
2653 return VOS_STATUS_E_INVAL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 if( val )
2655 {
2656 intArray[*len] = (tANI_U8) val;
2657 *len += 1;
2658 }
2659 if( *s )
2660 s++;
2661 }
2662#endif
2663
2664 return VOS_STATUS_SUCCESS;
2665
2666}
2667#endif
2668
2669
2670v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx )
2671{
2672 v_BOOL_t fStatus = TRUE;
2673
2674 hdd_config_t *pConfig = pHddCtx->cfg_ini;
Pratik Bhalgat6bfd1422012-11-22 17:09:40 +05302675 tSirMacHTCapabilityInfo htCapInfo;
2676
Jeff Johnson295189b2012-06-20 16:38:30 -07002677
2678 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
2679 pConfig->ShortGI20MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2680 {
2681 fStatus = FALSE;
2682 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CCM\n");
2683 }
2684
2685 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CAL_CONTROL, pConfig->Calibration,
2686 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2687 {
2688 fStatus = FALSE;
2689 hddLog(LOGE, "Could not pass on WNI_CFG_CAL_CONTROL to CCM\n");
2690 }
2691
2692 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CAL_PERIOD, pConfig->CalibrationPeriod,
2693 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2694 {
2695 fStatus = FALSE;
2696 hddLog(LOGE, "Could not pass on WNI_CFG_CAL_PERIOD to CCM\n");
2697 }
2698
2699 if ( 0 != pConfig->Cfg1Id )
2700 {
2701 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg1Id, pConfig->Cfg1Value, NULL,
2702 eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2703 {
2704 fStatus = FALSE;
2705 hddLog(LOGE, "Could not pass on Cfg1Id to CCM\n");
2706 }
2707
2708 }
2709
2710 if ( 0 != pConfig->Cfg2Id )
2711 {
2712 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg2Id, pConfig->Cfg2Value,
2713 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2714 {
2715 fStatus = FALSE;
2716 hddLog(LOGE, "Could not pass on Cfg2Id to CCM\n");
2717 }
2718 }
2719
2720 if ( 0 != pConfig->Cfg3Id )
2721 {
2722 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg3Id, pConfig->Cfg3Value,
2723 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2724 {
2725 fStatus = FALSE;
2726 hddLog(LOGE, "Could not pass on Cfg3Id to CCM\n");
2727 }
2728 }
2729
2730 if ( 0 != pConfig->Cfg4Id )
2731 {
2732 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg4Id, pConfig->Cfg4Value,
2733 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2734 {
2735 fStatus = FALSE;
2736 hddLog(LOGE, "Could not pass on Cfg4Id to CCM\n");
2737 }
2738 }
2739
2740 if ( 0 != pConfig->Cfg5Id )
2741 {
2742 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg5Id, pConfig->Cfg5Value,
2743 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2744 {
2745 fStatus = FALSE;
2746 hddLog(LOGE, "Could not pass on Cfg5Id to CCM\n");
2747 }
2748 }
2749
2750 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BA_AUTO_SETUP, pConfig->BlockAckAutoSetup,
2751 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2752 {
2753 fStatus = FALSE;
2754 hddLog(LOGE, "Could not pass on WNI_CFG_BA_AUTO_SETUP to CCM\n");
2755 }
2756
2757 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate,
2758 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2759 {
2760 fStatus = FALSE;
2761 hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CCM\n");
2762 }
2763
2764 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
2765 pConfig->MaxRxAmpduFactor, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2766 {
2767 fStatus = FALSE;
2768 hddLog(LOGE,"Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CCM\n");
2769 }
2770
2771 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE, pConfig->fIsShortPreamble,
2772 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2773 {
2774 fStatus = FALSE;
2775 hddLog(LOGE,"Could not pass on WNI_CFG_SHORT_PREAMBLE to CCM\n");
2776 }
2777
2778 if (pConfig->fIsAutoIbssBssid)
2779 {
2780 if (ccmCfgSetStr(pHddCtx->hHal, WNI_CFG_BSSID, (v_U8_t *)"000000000000",
2781 sizeof(v_BYTE_t) * VOS_MAC_ADDR_SIZE, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2782 {
2783 fStatus = FALSE;
2784 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2785 }
2786 }
2787 else
2788 {
2789 if ( VOS_FALSE == vos_is_macaddr_group( &pConfig->IbssBssid ))
2790 {
2791 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
2792 "MAC Addr (IBSS BSSID) read from Registry is: %02x-%02x-%02x-%02x-%02x-%02x",
2793 pConfig->IbssBssid.bytes[0], pConfig->IbssBssid.bytes[1], pConfig->IbssBssid.bytes[2],
2794 pConfig->IbssBssid.bytes[3], pConfig->IbssBssid.bytes[4], pConfig->IbssBssid.bytes[5]);
2795 if (ccmCfgSetStr(pHddCtx->hHal, WNI_CFG_BSSID, pConfig->IbssBssid.bytes,
2796 sizeof(v_BYTE_t) * VOS_MAC_ADDR_SIZE, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2797 {
2798 fStatus = FALSE;
2799 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2800 }
2801 }
2802 else
2803 {
2804 fStatus = FALSE;
2805 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2806 }
2807 }
2808
2809 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL, pConfig->nBeaconInterval,
2810 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2811 {
2812 fStatus = FALSE;
2813 hddLog(LOGE, "Could not pass on WNI_CFG_BEACON_INTERVAL to CCM\n");
2814 }
2815
2816 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_PS_POLL, pConfig->nMaxPsPoll,
2817 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2818 {
2819 fStatus = FALSE;
2820 hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CCM\n");
2821 }
2822
2823 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA, pConfig-> nRxAnt, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2824 {
2825 fStatus = FALSE;
2826 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_CURRENT_RX_ANTENNA configuration info to HAL\n" );
2827 }
2828
2829 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE, pConfig->fIsLowGainOverride,
2830 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2831 {
2832 fStatus = FALSE;
2833 hddLog(LOGE, "Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL\n");
2834 }
2835
2836 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD, pConfig->nRssiFilterPeriod,
2837 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2838 {
2839 fStatus = FALSE;
2840 hddLog(LOGE, "Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CCM\n");
2841 }
2842
Jeff Johnson04dd8a82012-06-29 20:41:40 -07002843#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FT_RSSI_FILTER_PERIOD, pConfig->FTRssiFilterPeriod,
2845 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2846 {
2847 fStatus = FALSE;
2848 hddLog(LOGE, "Could not pass on WNI_CFG_FT_RSSI_FILTER_PERIOD to CCM\n");
2849 }
2850#endif
2851
2852 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_IGNORE_DTIM, pConfig->fIgnoreDtim,
2853 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2854 {
2855 fStatus = FALSE;
2856 hddLog(LOGE, "Could not pass on WNI_IGNORE_DTIM configuration to CCM\n" );
2857 }
2858
2859 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT, pConfig->fEnableFwHeartBeatMonitoring,
2860 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2861 {
2862 fStatus = FALSE;
2863 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_HEART_BEAT configuration info to CCM\n");
2864 }
2865
2866 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER, pConfig->fEnableFwBeaconFiltering,
2867 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2868 {
2869 fStatus = FALSE;
2870 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_BCN_FILTER configuration info to CCM\n");
2871 }
2872
2873 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR, pConfig->fEnableFwRssiMonitoring,
2874 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2875 {
2876 fStatus = FALSE;
2877 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_RSSI_MONITOR configuration info to CCM\n");
2878 }
2879
2880 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT, pConfig->nDataInactivityTimeout,
2881 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2882 {
2883 fStatus = FALSE;
2884 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT configuration info to CCM\n");
2885 }
2886
2887 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_NTH_BEACON_FILTER, pConfig->nthBeaconFilter,
2888 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2889 {
2890 fStatus = FALSE;
2891 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_NTH_BEACON_FILTER configuration info to CCM\n");
2892 }
2893
2894#ifdef WLAN_SOFTAP_FEATURE
2895 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX, pConfig->enableLTECoex,
2896 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2897 {
2898 fStatus = FALSE;
2899 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_LTE_COEX to CCM\n");
2900 }
2901
2902 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE, pConfig->nEnableListenMode,
2903 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2904 {
2905 fStatus = FALSE;
2906 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CCM\n");
2907 }
2908
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT, pConfig->apKeepAlivePeriod,
2910 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2911 {
2912 fStatus = FALSE;
2913 hddLog(LOGE, "Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CCM\n");
2914 }
2915
2916 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT, pConfig->goKeepAlivePeriod,
2917 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2918 {
2919 fStatus = FALSE;
2920 hddLog(LOGE, "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CCM\n");
2921 }
2922#endif
2923
2924#if defined WLAN_FEATURE_VOWIFI
2925 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_ENABLED, pConfig->fRrmEnable,
2926 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2927 {
2928 fStatus = FALSE;
2929 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_ENABLE configuration info to CCM\n");
2930 }
2931
2932 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_OPERATING_CHAN_MAX, pConfig->nInChanMeasMaxDuration,
2933 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2934 {
2935 fStatus = FALSE;
2936 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_OPERATING_CHAN_MAX configuration info to CCM\n");
2937 }
2938
2939 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_NON_OPERATING_CHAN_MAX, pConfig->nOutChanMeasMaxDuration,
2940 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2941 {
2942 fStatus = FALSE;
2943 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_OUT_CHAN_MAX configuration info to CCM\n");
2944 }
2945
2946 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING, pConfig->mcastBcastFilterSetting,
2947 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2948#endif
2949
2950 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC, pConfig->bSingleTidRc,
2951 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2952 {
2953 fStatus = FALSE;
2954 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_SINGLE_TID_RC configuration info to CCM\n");
2955 }
2956
2957 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN, pConfig->teleBcnWakeupEn,
2958 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2959 {
2960 fStatus = FALSE;
2961 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN configuration info to CCM\n" );
2962 }
2963
2964 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI, pConfig->nTeleBcnTransListenInterval,
2965 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2966 {
2967 fStatus = FALSE;
2968 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI configuration info to CCM\n" );
2969 }
2970
2971 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI, pConfig->nTeleBcnMaxListenInterval,
2972 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2973 {
2974 fStatus = FALSE;
2975 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI configuration info to CCM\n" );
2976 }
2977
2978 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS, pConfig->nTeleBcnTransLiNumIdleBeacons,
2979 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2980 {
2981 fStatus = FALSE;
2982 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS configuration info to CCM\n" );
2983 }
2984
2985 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS, pConfig->nTeleBcnMaxLiNumIdleBeacons,
2986 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2987 {
2988 fStatus = FALSE;
2989 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS configuration info to CCM\n" );
2990 }
2991
2992 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK, pConfig->rfSettlingTimeUs,
2993 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2994 {
2995 fStatus = FALSE;
2996 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK configuration info to CCM\n" );
2997 }
2998
2999 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD, pConfig->infraStaKeepAlivePeriod,
3000 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3001 {
3002 fStatus = FALSE;
3003 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD configuration info to CCM\n" );
3004 }
3005 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE, pConfig->dynamicPsPollValue,
3006 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3007 {
3008 fStatus = FALSE;
3009 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE configuration info to CCM\n" );
3010 }
3011
3012 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT, pConfig->nNullDataApRespTimeout,
3013 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3014 {
3015 fStatus = FALSE;
3016 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT configuration info to CCM\n" );
3017 }
3018
3019 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD, pConfig->apDataAvailPollPeriodInMs,
3020 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3021 {
3022 fStatus = FALSE;
3023 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD configuration info to CCM\n" );
3024 }
3025#ifdef FEATURE_WLAN_INTEGRATED_SOC
3026 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD, pConfig->FragmentationThreshold,
3027 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
3028 {
3029 fStatus = FALSE;
3030 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD configuration info to CCM\n" );
3031 }
3032 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD, pConfig->RTSThreshold,
3033 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
3034 {
3035 fStatus = FALSE;
3036 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RTS_THRESHOLD configuration info to CCM\n" );
3037 }
3038
3039 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_11D_ENABLED, pConfig->Is11dSupportEnabled,
3040 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
3041 {
3042 fStatus = FALSE;
3043 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_11D_ENABLED configuration info to CCM\n" );
3044 }
3045 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD, pConfig->HeartbeatThresh24,
3046 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
3047 {
3048 fStatus = FALSE;
3049 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD configuration info to CCM\n" );
3050 }
3051
3052#endif
3053 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD, pConfig->apDataAvailPollPeriodInMs,
3054 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3055 {
3056 fStatus = FALSE;
3057 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD configuration info to CCM\n" );
3058 }
3059
3060 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_CLOSE_LOOP,
3061 pConfig->enableCloseLoop, NULL, eANI_BOOLEAN_FALSE)
3062 ==eHAL_STATUS_FAILURE)
3063 {
3064 fStatus = FALSE;
3065 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_CLOSE_LOOP to CCM\n");
3066 }
3067
3068 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TX_PWR_CTRL_ENABLE,
3069 pConfig->enableAutomaticTxPowerControl, NULL, eANI_BOOLEAN_FALSE)
3070 ==eHAL_STATUS_FAILURE)
3071 {
3072 fStatus = FALSE;
3073 hddLog(LOGE, "Could not pass on WNI_CFG_TX_PWR_CTRL_ENABLE to CCM\n");
3074 }
3075
3076 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
3077 pConfig->ShortGI40MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3078 {
3079 fStatus = FALSE;
3080 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CCM\n");
3081 }
3082
Jeff Johnsond13512a2012-07-17 11:42:19 -07003083
3084 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST, pConfig->fEnableMCAddrList,
3085 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3086 {
3087 fStatus = FALSE;
3088 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CCM\n");
3089 }
3090
Jeff Johnsone7245742012-09-05 17:12:55 -07003091#ifdef WLAN_FEATURE_11AC
3092 /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map in the cfg.dat */
3093 /* valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9) */
3094 /* we update only the least significant 2 bits in the corresponding fields */
3095 if( (pConfig->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
3096 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
3097 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac) )
3098 {
3099 {
3100 tANI_U32 temp = 0;
3101
3102 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
3103 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
3104
3105 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
3106 temp, NULL, eANI_BOOLEAN_FALSE)
3107 ==eHAL_STATUS_FAILURE)
3108 {
3109 fStatus = FALSE;
3110 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CCM\n");
3111 }
3112
3113 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
3114 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
3115
3116 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
3117 temp, NULL, eANI_BOOLEAN_FALSE)
3118 ==eHAL_STATUS_FAILURE)
3119 {
3120 fStatus = FALSE;
3121 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CCM\n");
3122 }
3123
3124 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
3125 temp = (temp & 0xFFFC) | pConfig->vhtTxMCS;
3126
3127 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
3128 temp, NULL, eANI_BOOLEAN_FALSE)
3129 ==eHAL_STATUS_FAILURE)
3130 {
3131 fStatus = FALSE;
3132 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CCM\n");
3133 }
3134 }
3135 }
3136#endif
3137
Madan Mohan Koyyalamudidd11eaf2012-11-02 16:04:21 -07003138 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_NUM_BUFF_ADVERT,pConfig->numBuffAdvert,
3139 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
3140 {
3141 fStatus = FALSE;
3142 hddLog(LOGE, "Could not pass on WNI_CFG_NUM_BUFF_ADVERT to CCM\n");
3143 }
3144
Pratik Bhalgat6bfd1422012-11-22 17:09:40 +05303145 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
3146 pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
3147 ==eHAL_STATUS_FAILURE)
3148 {
3149 fStatus = FALSE;
3150 hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CCM\n");
3151 }
3152
3153 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, (tANI_U32 *)&htCapInfo);
3154 htCapInfo.rxSTBC = pConfig->enableRxSTBC;
3155
3156 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO,
3157 *(tANI_U32 *)&htCapInfo, NULL, eANI_BOOLEAN_FALSE)
3158 ==eHAL_STATUS_FAILURE)
3159 {
3160 fStatus = FALSE;
3161 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CCM\n");
3162 }
3163
3164 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
3165 pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
3166 ==eHAL_STATUS_FAILURE)
3167 {
3168 fStatus = FALSE;
3169 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CCM\n");
3170 }
Madan Mohan Koyyalamudi0d40e662012-12-07 14:24:14 -08003171 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
3172 pConfig->enableLpwrImgTransition, NULL, eANI_BOOLEAN_FALSE)
3173 ==eHAL_STATUS_FAILURE)
3174 {
3175 fStatus = FALSE;
3176 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CCM\n");
3177 }
Pratik Bhalgat6bfd1422012-11-22 17:09:40 +05303178
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 return fStatus;
3180}
3181
3182
3183/**---------------------------------------------------------------------------
3184
3185 \brief hdd_init_set_sme_config() -
3186
3187 This function initializes the sme configuration parameters
3188
3189 \param - pHddCtx - Pointer to the HDD Adapter.
3190
3191 \return - 0 for success, non zero for failure
3192
3193 --------------------------------------------------------------------------*/
3194
3195VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
3196{
3197 VOS_STATUS status = VOS_STATUS_SUCCESS;
3198 eHalStatus halStatus;
3199 tSmeConfigParams smeConfig;
3200
3201 hdd_config_t *pConfig = pHddCtx->cfg_ini;
3202
3203 vos_mem_zero( &smeConfig, sizeof( smeConfig ) );
3204
3205 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
3206 "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d\n", __func__,
3207 pConfig->WmmMode, pConfig->b80211eIsEnabled, pConfig->dot11Mode);
3208
3209 // Config params obtained from the registry
Madan Mohan Koyyalamudic3a240c2012-09-28 15:34:08 -07003210 if (is_crda_regulatory_entry_valid() == VOS_TRUE)
3211 sme_setRegInfo(pHddCtx->hHal, pConfig->crdaDefaultCountryCode);
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 smeConfig.csrConfig.RTSThreshold = pConfig->RTSThreshold;
3213 smeConfig.csrConfig.FragmentationThreshold = pConfig->FragmentationThreshold;
3214 smeConfig.csrConfig.shortSlotTime = pConfig->ShortSlotTimeEnabled;
3215 smeConfig.csrConfig.Is11dSupportEnabled = pConfig->Is11dSupportEnabled;
3216 smeConfig.csrConfig.HeartbeatThresh24 = pConfig->HeartbeatThresh24;
3217
3218 smeConfig.csrConfig.phyMode = hdd_cfg_xlate_to_csr_phy_mode ( pConfig->dot11Mode );
3219
3220 smeConfig.csrConfig.channelBondingMode24GHz = pConfig->nChannelBondingMode24GHz;
3221 smeConfig.csrConfig.channelBondingMode5GHz = pConfig->nChannelBondingMode5GHz;
3222 smeConfig.csrConfig.TxRate = pConfig->TxRate;
3223 smeConfig.csrConfig.nScanResultAgeCount = pConfig->ScanResultAgeCount;
3224 smeConfig.csrConfig.scanAgeTimeNCNPS = pConfig->nScanAgeTimeNCNPS;
3225 smeConfig.csrConfig.scanAgeTimeNCPS = pConfig->nScanAgeTimeNCPS;
3226 smeConfig.csrConfig.scanAgeTimeCNPS = pConfig->nScanAgeTimeCNPS;
3227 smeConfig.csrConfig.scanAgeTimeCPS = pConfig->nScanAgeTimeCPS;
3228 smeConfig.csrConfig.AdHocChannel24 = pConfig->OperatingChannel;
3229 smeConfig.csrConfig.fEnforce11dChannels = pConfig->fEnforce11dChannels;
3230 smeConfig.csrConfig.fSupplicantCountryCodeHasPriority = pConfig->fSupplicantCountryCodeHasPriority;
3231 smeConfig.csrConfig.fEnforceCountryCodeMatch = pConfig->fEnforceCountryCodeMatch;
3232 smeConfig.csrConfig.fEnforceDefaultDomain = pConfig->fEnforceDefaultDomain;
3233 smeConfig.csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
3234 smeConfig.csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
3235 smeConfig.csrConfig.vccUlMacLossThreshold = pConfig->nVccUlMacLossThreshold;
3236 smeConfig.csrConfig.nRoamingTime = pConfig->nRoamingTime;
3237 smeConfig.csrConfig.IsIdleScanEnabled = pConfig->nEnableIdleScan;
3238 smeConfig.csrConfig.nActiveMaxChnTime = pConfig->nActiveMaxChnTime;
3239 smeConfig.csrConfig.nActiveMinChnTime = pConfig->nActiveMinChnTime;
3240 smeConfig.csrConfig.nPassiveMaxChnTime = pConfig->nPassiveMaxChnTime;
3241 smeConfig.csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
Madan Mohan Koyyalamudi4ff9cd62012-10-30 17:48:57 -07003242#ifdef WLAN_AP_STA_CONCURRENCY
3243 smeConfig.csrConfig.nActiveMaxChnTimeConc = pConfig->nActiveMaxChnTimeConc;
3244 smeConfig.csrConfig.nActiveMinChnTimeConc = pConfig->nActiveMinChnTimeConc;
3245 smeConfig.csrConfig.nPassiveMaxChnTimeConc = pConfig->nPassiveMaxChnTimeConc;
3246 smeConfig.csrConfig.nPassiveMinChnTimeConc = pConfig->nPassiveMinChnTimeConc;
3247 smeConfig.csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
3248#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 smeConfig.csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
3250 smeConfig.csrConfig.WMMSupportMode = pConfig->WmmMode;
3251
3252#if defined WLAN_FEATURE_VOWIFI
3253 smeConfig.rrmConfig.rrmEnabled = pConfig->fRrmEnable;
3254 smeConfig.rrmConfig.maxRandnInterval = pConfig->nRrmRandnIntvl;
3255#endif
3256 //Remaining config params not obtained from registry
3257 // On RF EVB beacon using channel 1.
Jeff Johnsone7245742012-09-05 17:12:55 -07003258#ifdef WLAN_FEATURE_11AC
3259 smeConfig.csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
3260#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07003261 smeConfig.csrConfig.AdHocChannel5G = 44;
3262 smeConfig.csrConfig.ProprietaryRatesEnabled = 0;
3263 smeConfig.csrConfig.HeartbeatThresh50 = 40;
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 smeConfig.csrConfig.Is11hSupportEnabled = 1;
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 smeConfig.csrConfig.bandCapability = pConfig->nBandCapability;
3266 smeConfig.csrConfig.cbChoice = 0;
3267 smeConfig.csrConfig.bgScanInterval = 0;
3268 smeConfig.csrConfig.eBand = pConfig->nBandCapability;
3269 smeConfig.csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
3270 smeConfig.csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
3271 smeConfig.csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
Madan Mohan Koyyalamudi3f65e312012-11-06 15:31:12 -08003272 smeConfig.csrConfig.fIgnore_chan165 = pConfig->ignore_chan165;
Madan Mohan Koyyalamudid5026072012-11-30 14:56:21 -08003273#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
3274 smeConfig.csrConfig.nRoamPrefer5GHz = pConfig->nRoamPrefer5GHz;
3275#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07003276 smeConfig.csrConfig.fFirstScanOnly2GChnl = pConfig->enableFirstScan2GOnly;
3277
Jeff Johnson295189b2012-06-20 16:38:30 -07003278 //FIXME 11d config is hardcoded
3279#ifdef WLAN_SOFTAP_FEATURE
3280 if ( VOS_STA_SAP_MODE != hdd_get_conparam()){
3281#endif
3282 smeConfig.csrConfig.Csr11dinfo.Channels.numChannels = 0;
3283
3284 //if there is a requirement that HDD will control the default channel list &
3285 //country code (say from .ini file) we need to add some logic here. Otherwise
3286 //the default 11d info should come from NV as per our current implementation
3287
3288#ifdef WLAN_SOFTAP_FEATURE
3289 }
3290 else{
3291
3292 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
3293 "AP country Code %s", pConfig->apCntryCode);
3294
3295 if (memcmp(pConfig->apCntryCode, CFG_AP_COUNTRY_CODE_DEFAULT, 3) != 0)
3296 sme_setRegInfo(pHddCtx->hHal, pConfig->apCntryCode);
3297 sme_set11dinfo(pHddCtx->hHal, &smeConfig);
3298 }
3299#endif
3300 hdd_set_power_save_config(pHddCtx, &smeConfig);
3301 hdd_set_btc_config(pHddCtx);
3302
3303#ifdef WLAN_FEATURE_VOWIFI_11R
3304 smeConfig.csrConfig.csr11rConfig.IsFTResourceReqSupported = pConfig->fFTResourceReqSupported;
3305#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07003306#ifdef FEATURE_WLAN_LFR
3307 smeConfig.csrConfig.isFastRoamIniFeatureEnabled = pConfig->isFastRoamIniFeatureEnabled;
3308#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07003309#ifdef FEATURE_WLAN_CCX
3310 smeConfig.csrConfig.isCcxIniFeatureEnabled = pConfig->isCcxIniFeatureEnabled;
3311#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07003312#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 smeConfig.csrConfig.isFastTransitionEnabled = pConfig->isFastTransitionEnabled;
Jeff Johnson43971f52012-07-17 12:26:56 -07003314 smeConfig.csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
Madan Mohan Koyyalamudi62b55b02012-12-03 16:45:39 -08003315 smeConfig.csrConfig.nImmediateRoamRssiDiff = pConfig->nImmediateRoamRssiDiff;
Jeff Johnson295189b2012-06-20 16:38:30 -07003316#endif
3317
3318#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
3319 smeConfig.csrConfig.neighborRoamConfig.nNeighborReassocRssiThreshold = pConfig->nNeighborReassocRssiThreshold;
3320 smeConfig.csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold = pConfig->nNeighborLookupRssiThreshold;
3321 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime = pConfig->nNeighborScanMaxChanTime;
3322 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanMinChanTime = pConfig->nNeighborScanMinChanTime;
3323 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod = pConfig->nNeighborScanPeriod;
3324 smeConfig.csrConfig.neighborRoamConfig.nMaxNeighborRetries = pConfig->nMaxNeighborReqTries;
3325 smeConfig.csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod = pConfig->nNeighborResultsRefreshPeriod;
3326 hdd_string_to_u8_array( pConfig->neighborScanChanList,
3327 smeConfig.csrConfig.neighborRoamConfig.neighborScanChanList.channelList,
3328 &smeConfig.csrConfig.neighborRoamConfig.neighborScanChanList.numChannels,
3329 WNI_CFG_VALID_CHANNEL_LIST_LEN );
3330#endif
3331
3332 smeConfig.csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
3333 smeConfig.csrConfig.fValidateList = pConfig->fValidateScanList;
3334
3335 //Enable/Disable MCC
3336 smeConfig.csrConfig.fEnableMCCMode = pConfig->enableMCC;
Mohit Khanna7ed53f02012-09-11 17:52:10 -07003337 smeConfig.csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
Jeff Johnson295189b2012-06-20 16:38:30 -07003338
3339 halStatus = sme_UpdateConfig( pHddCtx->hHal, &smeConfig);
3340 if ( !HAL_STATUS_SUCCESS( halStatus ) )
3341 {
3342 status = VOS_STATUS_E_FAILURE;
3343 }
3344
3345
3346 return status;
3347}
3348
3349
3350/**---------------------------------------------------------------------------
3351
3352 \brief hdd_execute_config_command() -
3353
3354 This function executes an arbitrary configuration set command
3355
3356 \param - pHddCtx - Pointer to the HDD Adapter.
3357 \parmm - command - a configuration command of the form:
3358 <name>=<value>
3359
3360 \return - 0 for success, non zero for failure
3361
3362 --------------------------------------------------------------------------*/
3363
3364VOS_STATUS hdd_execute_config_command(hdd_context_t *pHddCtx, char *command)
3365{
3366 size_t tableSize = sizeof(g_registry_table)/sizeof(g_registry_table[0]);
3367 REG_TABLE_ENTRY *pRegEntry;
3368 char *clone;
3369 char *pCmd;
3370 void *pField;
3371 char *name;
3372 char *value_str;
3373 v_U32_t value;
3374 v_S31_t svalue;
3375 size_t len_value_str;
3376 unsigned int idx;
3377 unsigned int i;
3378 VOS_STATUS vstatus;
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08003379 int rv;
Jeff Johnson295189b2012-06-20 16:38:30 -07003380
3381 // assume failure until proven otherwise
3382 vstatus = VOS_STATUS_E_FAILURE;
3383
3384 // clone the command so that we can manipulate it
3385 clone = kstrdup(command, GFP_ATOMIC);
3386 if (NULL == clone)
3387 {
3388 hddLog(LOGE, "%s: memory allocation failure, unable to process [%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003389 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003390 return vstatus;
3391 }
3392
3393 // 'clone' will point to the beginning of the string so it can be freed
3394 // 'pCmd' will be used to walk/parse the command
3395 pCmd = clone;
3396
3397 // get rid of leading/trailing whitespace
3398 pCmd = i_trim(pCmd);
3399 if ('\0' == *pCmd)
3400 {
3401 // only whitespace
3402 hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003403 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 goto done;
3405 }
3406
3407 // parse the <name> = <value>
3408 name = pCmd;
3409 while (('=' != *pCmd) && ('\0' != *pCmd))
3410 {
3411 pCmd++;
3412 }
3413 if ('\0' == *pCmd)
3414 {
3415 // did not find '='
3416 hddLog(LOGE, "%s: invalid command, no '=':[%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003417 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 goto done;
3419 }
3420
3421 // replace '=' with NUL to terminate the <name>
3422 *pCmd++ = '\0';
3423 name = i_trim(name);
3424 if ('\0' == *name)
3425 {
3426 // did not find a name
3427 hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003428 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 goto done;
3430 }
3431
3432 value_str = i_trim(pCmd);
3433 if ('\0' == *value_str)
3434 {
3435 // did not find a value
3436 hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003437 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 goto done;
3439 }
3440
3441 // lookup the configuration item
3442 for (idx = 0; idx < tableSize; idx++)
3443 {
3444 if (0 == strcmp(name, g_registry_table[idx].RegName))
3445 {
3446 // found a match
3447 break;
3448 }
3449 }
3450 if (tableSize == idx)
3451 {
3452 // did not match the name
3453 hddLog(LOGE, "%s: invalid command, unknown configuration item:[%s]",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003454 __func__, command);
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 goto done;
3456 }
3457
3458 pRegEntry = &g_registry_table[idx];
3459 if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG))
3460 {
3461 // does not support dynamic configuration
3462 hddLog(LOGE, "%s: invalid command, %s does not support "
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003463 "dynamic configuration", __func__, name);
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 goto done;
3465 }
3466
3467 pField = ((v_U8_t *)pHddCtx->cfg_ini) + pRegEntry->VarOffset;
3468
3469 switch (pRegEntry->RegType)
3470 {
3471 case WLAN_PARAM_Integer:
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08003472 rv = kstrtoul(value_str, 10, &value);
3473 if (rv < 0)
3474 goto done;
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 if (value < pRegEntry->VarMin)
3476 {
3477 // out of range
3478 hddLog(LOGE, "%s: invalid command, value %u < min value %u",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003479 __func__, value, pRegEntry->VarMin);
Jeff Johnson295189b2012-06-20 16:38:30 -07003480 goto done;
3481 }
3482 if (value > pRegEntry->VarMax)
3483 {
3484 // out of range
3485 hddLog(LOGE, "%s: invalid command, value %u > max value %u",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003486 __func__, value, pRegEntry->VarMax);
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 goto done;
3488 }
3489 memcpy(pField, &value, pRegEntry->VarSize);
3490 break;
3491
3492 case WLAN_PARAM_HexInteger:
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08003493 rv = kstrtoul(value_str, 16, &value);
3494 if (rv < 0)
3495 goto done;
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 if (value < pRegEntry->VarMin)
3497 {
3498 // out of range
3499 hddLog(LOGE, "%s: invalid command, value %x < min value %x",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003500 __func__, value, pRegEntry->VarMin);
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 goto done;
3502 }
3503 if (value > pRegEntry->VarMax)
3504 {
3505 // out of range
3506 hddLog(LOGE, "%s: invalid command, value %x > max value %x",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003507 __func__, value, pRegEntry->VarMax);
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 goto done;
3509 }
3510 memcpy(pField, &value, pRegEntry->VarSize);
3511 break;
3512
3513 case WLAN_PARAM_SignedInteger:
Madan Mohan Koyyalamudid8ac8662012-11-06 19:04:56 -08003514 rv = kstrtol(value_str, 10, &svalue);
3515 if (rv < 0)
3516 goto done;
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 if (svalue < (v_S31_t)pRegEntry->VarMin)
3518 {
3519 // out of range
3520 hddLog(LOGE, "%s: invalid command, value %d < min value %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003521 __func__, svalue, (int)pRegEntry->VarMin);
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 goto done;
3523 }
3524 if (svalue > (v_S31_t)pRegEntry->VarMax)
3525 {
3526 // out of range
3527 hddLog(LOGE, "%s: invalid command, value %d > max value %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003528 __func__, svalue, (int)pRegEntry->VarMax);
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 goto done;
3530 }
3531 memcpy(pField, &svalue, pRegEntry->VarSize);
3532 break;
3533
3534 case WLAN_PARAM_String:
3535 len_value_str = strlen(value_str);
3536 if (len_value_str > (pRegEntry->VarSize - 1))
3537 {
3538 // too big
3539 hddLog(LOGE,
3540 "%s: invalid command, string [%s] length "
3541 "%u exceeds maximum length %u",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003542 __func__, value_str,
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 len_value_str, (pRegEntry->VarSize - 1));
3544 goto done;
3545 }
3546 // copy string plus NUL
3547 memcpy(pField, value_str, (len_value_str + 1));
3548 break;
3549
3550 case WLAN_PARAM_MacAddr:
3551 len_value_str = strlen(value_str);
3552 if (len_value_str != (VOS_MAC_ADDR_SIZE * 2))
3553 {
3554 // out of range
3555 hddLog(LOGE,
3556 "%s: invalid command, MAC address [%s] length "
3557 "%u is not expected length %u",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07003558 __func__, value_str,
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 len_value_str, (VOS_MAC_ADDR_SIZE * 2));
3560 goto done;
3561 }
3562 //parse the string and store it in the byte array
3563 for (i = 0; i < VOS_MAC_ADDR_SIZE; i++)
3564 {
3565 ((char*)pField)[i] = (char)
3566 ((parseHexDigit(value_str[(i * 2)]) * 16) +
3567 parseHexDigit(value_str[(i * 2) + 1]));
3568 }
3569 break;
3570
3571 default:
3572 goto done;
3573 }
3574
3575 // if we get here, we had a successful modification
3576 vstatus = VOS_STATUS_SUCCESS;
3577
3578 // config table has been modified, is there a notifier?
3579 if (NULL != pRegEntry->pfnDynamicNotify)
3580 {
3581 (pRegEntry->pfnDynamicNotify)(pHddCtx, pRegEntry->NotifyId);
3582 }
3583
3584 // note that this item was explicitly configured
3585 if (idx < MAX_CFG_INI_ITEMS)
3586 {
3587 set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
3588 }
3589 done:
3590 kfree(clone);
3591 return vstatus;
3592}