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