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