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