blob: 10eacc3a2d8ff67a9fa937f080a7328c7399eb73 [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
465 REG_VARIABLE( CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
466 hdd_config_t, apProtEnabled,
467 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
468 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
469 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
470 CFG_AP_ENABLE_PROTECTION_MODE_MAX ),
471
472 REG_VARIABLE( CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
473 hdd_config_t, apProtection,
474 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
475 CFG_AP_PROTECTION_MODE_DEFAULT,
476 CFG_AP_PROTECTION_MODE_MIN,
477 CFG_AP_PROTECTION_MODE_MAX ),
478
479 REG_VARIABLE( CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
480 hdd_config_t, apOBSSProtEnabled,
481 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
482 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
483 CFG_AP_OBSS_PROTECTION_MODE_MIN,
484 CFG_AP_OBSS_PROTECTION_MODE_MAX ),
485
486 REG_VARIABLE( CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
487 hdd_config_t, apDisableIntraBssFwd,
488 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
489 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
490 CFG_AP_STA_SECURITY_SEPERATION_MIN,
491 CFG_AP_STA_SECURITY_SEPERATION_MAX ),
492
493 REG_VARIABLE( CFG_FRAMES_PROCESSING_TH_MODE_NAME, WLAN_PARAM_Integer,
494 hdd_config_t, MinFramesProcThres,
495 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
496 CFG_FRAMES_PROCESSING_TH_DEFAULT,
497 CFG_FRAMES_PROCESSING_TH_MIN,
498 CFG_FRAMES_PROCESSING_TH_MAX ),
499
500 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_START_CHANNEL , WLAN_PARAM_Integer,
501 hdd_config_t, apStartChannelNum,
502 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
503 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_DEFAULT,
504 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MIN,
505 CFG_SAP_CHANNEL_SELECT_START_CHANNEL_MAX ),
506
507 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_END_CHANNEL , WLAN_PARAM_Integer,
508 hdd_config_t, apEndChannelNum,
509 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
510 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_DEFAULT,
511 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MIN,
512 CFG_SAP_CHANNEL_SELECT_END_CHANNEL_MAX ),
513
514 REG_VARIABLE(CFG_SAP_CHANNEL_SELECT_OPERATING_BAND , WLAN_PARAM_Integer,
515 hdd_config_t, apOperatingBand,
516 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
517 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_DEFAULT,
518 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MIN,
519 CFG_SAP_CHANNEL_SELECT_OPERATING_BAND_MAX ),
520
521 REG_VARIABLE(CFG_SAP_AUTO_CHANNEL_SELECTION_NAME , WLAN_PARAM_Integer,
522 hdd_config_t, apAutoChannelSelection,
523 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
524 CFG_SAP_AUTO_CHANNEL_SELECTION_DEFAULT,
525 CFG_SAP_AUTO_CHANNEL_SELECTION_MIN,
526 CFG_SAP_AUTO_CHANNEL_SELECTION_MAX ),
527
528 REG_VARIABLE(CFG_ENABLE_LTE_COEX , WLAN_PARAM_Integer,
529 hdd_config_t, enableLTECoex,
530 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
531 CFG_ENABLE_LTE_COEX_DEFAULT,
532 CFG_ENABLE_LTE_COEX_MIN,
533 CFG_ENABLE_LTE_COEX_MAX ),
534
535 REG_VARIABLE( CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
536 hdd_config_t, apKeepAlivePeriod,
537 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
538 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
539 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
540 CFG_AP_KEEP_ALIVE_PERIOD_MAX),
541
542 REG_VARIABLE( CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
543 hdd_config_t, goKeepAlivePeriod,
544 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
545 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
546 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
547 CFG_GO_KEEP_ALIVE_PERIOD_MAX),
548
549#endif
550 REG_VARIABLE(CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer,
551 hdd_config_t, disablePacketFilter,
552 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
553 CFG_DISABLE_PACKET_FILTER_DEFAULT,
554 CFG_DISABLE_PACKET_FILTER_MIN,
555 CFG_DISABLE_PACKET_FILTER_MAX ),
556
557 REG_VARIABLE( CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
558 hdd_config_t, nBeaconInterval,
559 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
560 CFG_BEACON_INTERVAL_DEFAULT,
561 CFG_BEACON_INTERVAL_MIN,
562 CFG_BEACON_INTERVAL_MAX ),
563
564 REG_VARIABLE( CFG_ENABLE_HANDOFF_NAME, WLAN_PARAM_Integer,
565 hdd_config_t, fIsHandoffEnabled,
566 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
567 CFG_ENABLE_HANDOFF_DEFAULT,
568 CFG_ENABLE_HANDOFF_MIN,
569 CFG_ENABLE_HANDOFF_MAX ),
570
571
572 REG_VARIABLE( CFG_ENABLE_IDLE_SCAN_NAME , WLAN_PARAM_Integer,
573 hdd_config_t, nEnableIdleScan,
574 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
575 CFG_ENABLE_IDLE_SCAN_DEFAULT,
576 CFG_ENABLE_IDLE_SCAN_MIN,
577 CFG_ENABLE_IDLE_SCAN_MAX ),
578
579 REG_VARIABLE( CFG_ROAMING_TIME_NAME , WLAN_PARAM_Integer,
580 hdd_config_t, nRoamingTime,
581 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
582 CFG_ROAMING_TIME_DEFAULT,
583 CFG_ROAMING_TIME_MIN,
584 CFG_ROAMING_TIME_MAX ),
585
586 REG_VARIABLE( CFG_VCC_RSSI_TRIGGER_NAME , WLAN_PARAM_Integer,
587 hdd_config_t, nVccRssiTrigger,
588 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
589 CFG_VCC_RSSI_TRIGGER_DEFAULT,
590 CFG_VCC_RSSI_TRIGGER_MIN,
591 CFG_VCC_RSSI_TRIGGER_MAX ),
592
593 REG_VARIABLE( CFG_VCC_UL_MAC_LOSS_THRESH_NAME , WLAN_PARAM_Integer,
594 hdd_config_t, nVccUlMacLossThreshold,
595 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
596 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
597 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
598 CFG_VCC_UL_MAC_LOSS_THRESH_MAX ),
599
600 REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
601 hdd_config_t, nPassiveMaxChnTime,
602 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
603 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
604 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
605 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX ),
606
607 REG_VARIABLE( CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
608 hdd_config_t, nPassiveMinChnTime,
609 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
610 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
611 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
612 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX ),
613
614 REG_VARIABLE( CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
615 hdd_config_t, nActiveMaxChnTime,
616 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
617 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
618 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
619 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX ),
620
621 REG_VARIABLE( CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
622 hdd_config_t, nActiveMinChnTime,
623 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
624 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
625 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
626 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX ),
627
628 REG_VARIABLE( CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
629 hdd_config_t, nMaxPsPoll,
630 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
631 CFG_MAX_PS_POLL_DEFAULT,
632 CFG_MAX_PS_POLL_MIN,
633 CFG_MAX_PS_POLL_MAX ),
634
635 REG_VARIABLE( CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
636 hdd_config_t, nTxPowerCap,
637 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
638 CFG_MAX_TX_POWER_DEFAULT,
639 CFG_MAX_TX_POWER_MIN,
640 CFG_MAX_TX_POWER_MAX ),
641
642 REG_VARIABLE( CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
643 hdd_config_t, fIsLowGainOverride,
644 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
645 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
646 CFG_LOW_GAIN_OVERRIDE_MIN,
647 CFG_LOW_GAIN_OVERRIDE_MAX ),
648
649 REG_VARIABLE( CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
650 hdd_config_t, nRssiFilterPeriod,
651 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
652 CFG_RSSI_FILTER_PERIOD_DEFAULT,
653 CFG_RSSI_FILTER_PERIOD_MIN,
654 CFG_RSSI_FILTER_PERIOD_MAX ),
655
656 REG_VARIABLE( CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
657 hdd_config_t, fIgnoreDtim,
658 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
659 CFG_IGNORE_DTIM_DEFAULT,
660 CFG_IGNORE_DTIM_MIN,
661 CFG_IGNORE_DTIM_MAX ),
662
663 REG_VARIABLE( CFG_RX_ANT_CONFIGURATION_NAME, WLAN_PARAM_Integer,
664 hdd_config_t, nRxAnt,
665 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
666 CFG_RX_ANT_CONFIGURATION_NAME_DEFAULT,
667 CFG_RX_ANT_CONFIGURATION_NAME_MIN,
668 CFG_RX_ANT_CONFIGURATION_NAME_MAX ),
669
670 REG_VARIABLE( CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
671 hdd_config_t, fEnableFwHeartBeatMonitoring,
672 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
673 CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
674 CFG_FW_HEART_BEAT_MONITORING_MIN,
675 CFG_FW_HEART_BEAT_MONITORING_MAX ),
676
677 REG_VARIABLE( CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
678 hdd_config_t, fEnableFwBeaconFiltering,
679 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
680 CFG_FW_BEACON_FILTERING_DEFAULT,
681 CFG_FW_BEACON_FILTERING_MIN,
682 CFG_FW_BEACON_FILTERING_MAX ),
683
684 REG_VARIABLE( CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
685 hdd_config_t, fEnableFwRssiMonitoring,
686 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
687 CFG_FW_RSSI_MONITORING_DEFAULT,
688 CFG_FW_RSSI_MONITORING_MIN,
689 CFG_FW_RSSI_MONITORING_MAX ),
690
691 REG_VARIABLE( CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
692 hdd_config_t, nDataInactivityTimeout,
693 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
694 CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
695 CFG_DATA_INACTIVITY_TIMEOUT_MIN,
696 CFG_DATA_INACTIVITY_TIMEOUT_MAX ),
697
698 REG_VARIABLE( CFG_NTH_BEACON_FILTER_NAME, WLAN_PARAM_Integer,
699 hdd_config_t, nthBeaconFilter,
700 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
701 CFG_NTH_BEACON_FILTER_DEFAULT,
702 CFG_NTH_BEACON_FILTER_MIN,
703 CFG_NTH_BEACON_FILTER_MAX ),
704
705 REG_VARIABLE( CFG_QOS_WMM_MODE_NAME , WLAN_PARAM_Integer,
706 hdd_config_t, WmmMode,
707 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
708 CFG_QOS_WMM_MODE_DEFAULT,
709 CFG_QOS_WMM_MODE_MIN,
710 CFG_QOS_WMM_MODE_MAX ),
711
712 REG_VARIABLE( CFG_QOS_WMM_80211E_ENABLED_NAME , WLAN_PARAM_Integer,
713 hdd_config_t, b80211eIsEnabled,
714 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
715 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
716 CFG_QOS_WMM_80211E_ENABLED_MIN,
717 CFG_QOS_WMM_80211E_ENABLED_MAX ),
718
719 REG_VARIABLE( CFG_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger,
720 hdd_config_t, UapsdMask,
721 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
722 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
723 CFG_QOS_WMM_UAPSD_MASK_MIN,
724 CFG_QOS_WMM_UAPSD_MASK_MAX ),
725
726 REG_VARIABLE( CFG_QOS_WMM_MAX_SP_LEN_NAME , WLAN_PARAM_Integer,
727 hdd_config_t, MaxSpLength,
728 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
729 CFG_QOS_WMM_MAX_SP_LEN_DEFAULT,
730 CFG_QOS_WMM_MAX_SP_LEN_MIN,
731 CFG_QOS_WMM_MAX_SP_LEN_MAX ),
732
733 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME , WLAN_PARAM_Integer,
734 hdd_config_t, InfraUapsdVoSrvIntv,
735 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
736 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
737 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
738 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX ),
739
740 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME , WLAN_PARAM_Integer,
741 hdd_config_t, InfraUapsdVoSuspIntv,
742 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
743 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
744 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
745 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX ),
746
747 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME , WLAN_PARAM_Integer,
748 hdd_config_t, InfraUapsdViSrvIntv,
749 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
750 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
751 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
752 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX ),
753
754 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME , WLAN_PARAM_Integer,
755 hdd_config_t, InfraUapsdViSuspIntv,
756 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
757 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
758 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
759 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX ),
760
761 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME , WLAN_PARAM_Integer,
762 hdd_config_t, InfraUapsdBeSrvIntv,
763 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
764 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
765 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
766 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX ),
767
768 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME , WLAN_PARAM_Integer,
769 hdd_config_t, InfraUapsdBeSuspIntv,
770 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
771 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
772 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
773 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX ),
774
775 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME , WLAN_PARAM_Integer,
776 hdd_config_t, InfraUapsdBkSrvIntv,
777 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
778 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
779 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
780 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX ),
781
782 REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME , WLAN_PARAM_Integer,
783 hdd_config_t, InfraUapsdBkSuspIntv,
784 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
785 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
786 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
787 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX ),
788
789#ifdef FEATURE_WLAN_CCX
790 REG_VARIABLE( CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME, WLAN_PARAM_Integer,
791 hdd_config_t, InfraInactivityInterval,
792 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
793 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
794 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
795 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
796 REG_VARIABLE( CFG_CCX_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
797 hdd_config_t, isCcxIniFeatureEnabled,
798 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
799 CFG_CCX_FEATURE_ENABLED_DEFAULT,
800 CFG_CCX_FEATURE_ENABLED_MIN,
801 CFG_CCX_FEATURE_ENABLED_MAX),
802#endif // FEATURE_WLAN_CCX
803
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700804#ifdef FEATURE_WLAN_LFR
805 // flag to turn ON/OFF Legacy Fast Roaming
806 REG_VARIABLE( CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
807 hdd_config_t, isFastRoamIniFeatureEnabled,
808 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
809 CFG_LFR_FEATURE_ENABLED_DEFAULT,
810 CFG_LFR_FEATURE_ENABLED_MIN,
811 CFG_LFR_FEATURE_ENABLED_MAX),
812#endif // FEATURE_WLAN_LFR
813
814#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 REG_VARIABLE( CFG_FT_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
816 hdd_config_t, FTRssiFilterPeriod,
817 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
818 CFG_FT_RSSI_FILTER_PERIOD_DEFAULT,
819 CFG_FT_RSSI_FILTER_PERIOD_MIN,
820 CFG_FT_RSSI_FILTER_PERIOD_MAX ),
821
822
823 // flag to turn ON/OFF 11r and CCX FastTransition
824 REG_VARIABLE( CFG_FAST_TRANSITION_ENABLED_NAME, WLAN_PARAM_Integer,
825 hdd_config_t, isFastTransitionEnabled,
826 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
827 CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
828 CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
829 CFG_FAST_TRANSITION_ENABLED_NAME_MAX),
Jeff Johnson43971f52012-07-17 12:26:56 -0700830
831 /* Variable to specify the delta/difference between the RSSI of current AP
832 * and roamable AP while roaming */
833 REG_VARIABLE( CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
834 hdd_config_t, RoamRssiDiff,
835 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
836 CFG_ROAM_RSSI_DIFF_DEFAULT,
837 CFG_ROAM_RSSI_DIFF_MIN,
838 CFG_ROAM_RSSI_DIFF_MAX),
Jeff Johnson295189b2012-06-20 16:38:30 -0700839#endif
840
841 REG_VARIABLE( CFG_QOS_WMM_PKT_CLASSIFY_BASIS_NAME , WLAN_PARAM_Integer,
842 hdd_config_t, PktClassificationBasis,
843 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
844 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_DEFAULT,
845 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MIN,
846 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MAX ),
847
848 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME , WLAN_PARAM_Integer,
849 hdd_config_t, InfraDirAcVo,
850 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
851 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
852 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
853 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX ),
854
855 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME , WLAN_PARAM_HexInteger,
856 hdd_config_t, InfraNomMsduSizeAcVo,
857 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
858 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
859 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
860 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX ),
861
862 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
863 hdd_config_t, InfraMeanDataRateAcVo,
864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
865 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
866 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
867 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX ),
868
869 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
870 hdd_config_t, InfraMinPhyRateAcVo,
871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
872 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
873 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
874 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX ),
875
876 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME , WLAN_PARAM_HexInteger,
877 hdd_config_t, InfraSbaAcVo,
878 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
879 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
880 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
881 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX ),
882
883 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME , WLAN_PARAM_Integer,
884 hdd_config_t, InfraDirAcVi,
885 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
886 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
887 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
888 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX ),
889
890 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME , WLAN_PARAM_HexInteger,
891 hdd_config_t, InfraNomMsduSizeAcVi,
892 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
893 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
894 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
895 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX ),
896
897 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
898 hdd_config_t, InfraMeanDataRateAcVi,
899 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
900 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
901 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
902 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX ),
903
904 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
905 hdd_config_t, InfraMinPhyRateAcVi,
906 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
907 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
908 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
909 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX ),
910
911 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME , WLAN_PARAM_HexInteger,
912 hdd_config_t, InfraSbaAcVi,
913 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
914 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
915 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
916 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX ),
917
918 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME , WLAN_PARAM_Integer,
919 hdd_config_t, InfraDirAcBe,
920 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
921 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
922 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
923 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX ),
924
925 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME , WLAN_PARAM_HexInteger,
926 hdd_config_t, InfraNomMsduSizeAcBe,
927 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
928 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
929 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
930 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX ),
931
932 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
933 hdd_config_t, InfraMeanDataRateAcBe,
934 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
935 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
936 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
937 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX ),
938
939 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
940 hdd_config_t, InfraMinPhyRateAcBe,
941 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
942 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
943 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
944 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX ),
945
946 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME , WLAN_PARAM_HexInteger,
947 hdd_config_t, InfraSbaAcBe,
948 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
949 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
950 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
951 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX ),
952
953 REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME , WLAN_PARAM_Integer,
954 hdd_config_t, InfraDirAcBk,
955 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
956 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
957 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
958 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX ),
959
960 REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME , WLAN_PARAM_HexInteger,
961 hdd_config_t, InfraNomMsduSizeAcBk,
962 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
963 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
964 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
965 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX ),
966
967 REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
968 hdd_config_t, InfraMeanDataRateAcBk,
969 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
970 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
971 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
972 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX ),
973
974 REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
975 hdd_config_t, InfraMinPhyRateAcBk,
976 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
977 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
978 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
979 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX ),
980
981 REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME , WLAN_PARAM_HexInteger,
982 hdd_config_t, InfraSbaAcBk,
983 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
984 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
985 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
986 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX ),
987
988 REG_VARIABLE( CFG_TL_WFQ_BK_WEIGHT_NAME , WLAN_PARAM_Integer,
989 hdd_config_t, WfqBkWeight,
990 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
991 CFG_TL_WFQ_BK_WEIGHT_DEFAULT,
992 CFG_TL_WFQ_BK_WEIGHT_MIN,
993 CFG_TL_WFQ_BK_WEIGHT_MAX ),
994
995 REG_VARIABLE( CFG_TL_WFQ_BE_WEIGHT_NAME , WLAN_PARAM_Integer,
996 hdd_config_t, WfqBeWeight,
997 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
998 CFG_TL_WFQ_BE_WEIGHT_DEFAULT,
999 CFG_TL_WFQ_BE_WEIGHT_MIN,
1000 CFG_TL_WFQ_BE_WEIGHT_MAX ),
1001
1002 REG_VARIABLE( CFG_TL_WFQ_VI_WEIGHT_NAME , WLAN_PARAM_Integer,
1003 hdd_config_t, WfqViWeight,
1004 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1005 CFG_TL_WFQ_VI_WEIGHT_DEFAULT,
1006 CFG_TL_WFQ_VI_WEIGHT_MIN,
1007 CFG_TL_WFQ_VI_WEIGHT_MAX ),
1008
1009 REG_VARIABLE( CFG_TL_WFQ_VO_WEIGHT_NAME , WLAN_PARAM_Integer,
1010 hdd_config_t, WfqVoWeight,
1011 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1012 CFG_TL_WFQ_VO_WEIGHT_DEFAULT,
1013 CFG_TL_WFQ_VO_WEIGHT_MIN,
1014 CFG_TL_WFQ_VO_WEIGHT_MAX ),
1015
1016 REG_VARIABLE( CFG_TL_DELAYED_TRGR_FRM_INT_NAME , WLAN_PARAM_Integer,
1017 hdd_config_t, DelayedTriggerFrmInt,
1018 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1019 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
1020 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
1021 CFG_TL_DELAYED_TRGR_FRM_INT_MAX ),
1022
1023 REG_VARIABLE_STRING( CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
1024 hdd_config_t, wowlPattern,
1025 VAR_FLAGS_OPTIONAL,
1026 (void *)CFG_WOWL_PATTERN_DEFAULT ),
1027
1028 REG_VARIABLE( CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME , WLAN_PARAM_Integer,
1029 hdd_config_t, bImplicitQosEnabled,
1030 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1031 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
1032 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
1033 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX ),
1034
1035 REG_VARIABLE( CFG_19P2_MHZ_PMIC_CLK_ENABLED_NAME , WLAN_PARAM_Integer,
1036 hdd_config_t, b19p2MhzPmicClkEnabled,
1037 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1038 CFG_19P2_MHZ_PMIC_CLK_ENABLED_DEFAULT,
1039 CFG_19P2_MHZ_PMIC_CLK_ENABLED_MIN,
1040 CFG_19P2_MHZ_PMIC_CLK_ENABLED_MAX ),
1041
1042 REG_VARIABLE( CFG_BTC_EXECUTION_MODE_NAME , WLAN_PARAM_Integer,
1043 hdd_config_t, btcExecutionMode,
1044 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1045 CFG_BTC_EXECUTION_MODE_DEFAULT,
1046 CFG_BTC_EXECUTION_MODE_MIN,
1047 CFG_BTC_EXECUTION_MODE_MAX ),
1048
1049 REG_VARIABLE( CFG_BTC_DHCP_PROTECTION_NAME , WLAN_PARAM_Integer,
1050 hdd_config_t, btcConsBtSlotsToBlockDuringDhcp,
1051 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1052 CFG_BTC_DHCP_PROTECTION_DEFAULT,
1053 CFG_BTC_DHCP_PROTECTION_MIN,
1054 CFG_BTC_DHCP_PROTECTION_MAX ),
1055
1056 REG_VARIABLE( CFG_BTC_A2DP_DHCP_PROTECTION_NAME , WLAN_PARAM_Integer,
1057 hdd_config_t, btcA2DPBtSubIntervalsDuringDhcp,
1058 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1059 CFG_BTC_A2DP_DHCP_PROTECTION_DEFAULT,
1060 CFG_BTC_A2DP_DHCP_PROTECTION_MIN,
1061 CFG_BTC_A2DP_DHCP_PROTECTION_MAX ),
1062
Jeff Johnson32d95a32012-09-10 13:15:23 -07001063 REG_VARIABLE( CFG_BTC_STATIC_LEN_INQ_BT_NAME , WLAN_PARAM_Integer,
1064 hdd_config_t, btcStaticLenInqBt,
1065 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1066 CFG_BTC_STATIC_LEN_INQ_BT_DEFAULT,
1067 CFG_BTC_STATIC_LEN_INQ_BT_MIN,
1068 CFG_BTC_STATIC_LEN_INQ_BT_MAX ),
1069
1070 REG_VARIABLE( CFG_BTC_STATIC_LEN_PAGE_BT_NAME , WLAN_PARAM_Integer,
1071 hdd_config_t, btcStaticLenPageBt,
1072 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1073 CFG_BTC_STATIC_LEN_PAGE_BT_DEFAULT,
1074 CFG_BTC_STATIC_LEN_PAGE_BT_MIN,
1075 CFG_BTC_STATIC_LEN_PAGE_BT_MAX ),
1076
1077 REG_VARIABLE( CFG_BTC_STATIC_LEN_CONN_BT_NAME , WLAN_PARAM_Integer,
1078 hdd_config_t, btcStaticLenConnBt,
1079 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1080 CFG_BTC_STATIC_LEN_CONN_BT_DEFAULT,
1081 CFG_BTC_STATIC_LEN_CONN_BT_MIN,
1082 CFG_BTC_STATIC_LEN_CONN_BT_MAX ),
1083
1084 REG_VARIABLE( CFG_BTC_STATIC_LEN_LE_BT_NAME , WLAN_PARAM_Integer,
1085 hdd_config_t, btcStaticLenLeBt,
1086 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1087 CFG_BTC_STATIC_LEN_LE_BT_DEFAULT,
1088 CFG_BTC_STATIC_LEN_LE_BT_MIN,
1089 CFG_BTC_STATIC_LEN_LE_BT_MAX ),
1090
1091 REG_VARIABLE( CFG_BTC_STATIC_LEN_INQ_WLAN_NAME , WLAN_PARAM_Integer,
1092 hdd_config_t, btcStaticLenInqWlan,
1093 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1094 CFG_BTC_STATIC_LEN_INQ_WLAN_DEFAULT,
1095 CFG_BTC_STATIC_LEN_INQ_WLAN_MIN,
1096 CFG_BTC_STATIC_LEN_INQ_WLAN_MAX ),
1097
1098 REG_VARIABLE( CFG_BTC_STATIC_LEN_PAGE_WLAN_NAME , WLAN_PARAM_Integer,
1099 hdd_config_t, btcStaticLenPageWlan,
1100 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1101 CFG_BTC_STATIC_LEN_PAGE_WLAN_DEFAULT,
1102 CFG_BTC_STATIC_LEN_PAGE_WLAN_MIN,
1103 CFG_BTC_STATIC_LEN_PAGE_WLAN_MAX ),
1104
1105 REG_VARIABLE( CFG_BTC_STATIC_LEN_CONN_WLAN_NAME , WLAN_PARAM_Integer,
1106 hdd_config_t, btcStaticLenConnWlan,
1107 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1108 CFG_BTC_STATIC_LEN_CONN_WLAN_DEFAULT,
1109 CFG_BTC_STATIC_LEN_CONN_WLAN_MIN,
1110 CFG_BTC_STATIC_LEN_CONN_WLAN_MAX ),
1111
1112 REG_VARIABLE( CFG_BTC_STATIC_LEN_LE_WLAN_NAME , WLAN_PARAM_Integer,
1113 hdd_config_t, btcStaticLenLeWlan,
1114 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1115 CFG_BTC_STATIC_LEN_LE_WLAN_DEFAULT,
1116 CFG_BTC_STATIC_LEN_LE_WLAN_MIN,
1117 CFG_BTC_STATIC_LEN_LE_WLAN_MAX ),
1118
1119 REG_VARIABLE( CFG_BTC_DYN_MAX_LEN_BT_NAME , WLAN_PARAM_Integer,
1120 hdd_config_t, btcDynMaxLenBt,
1121 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1122 CFG_BTC_DYN_MAX_LEN_BT_DEFAULT,
1123 CFG_BTC_DYN_MAX_LEN_BT_MIN,
1124 CFG_BTC_DYN_MAX_LEN_BT_MAX ),
1125
1126 REG_VARIABLE( CFG_BTC_DYN_MAX_LEN_WLAN_NAME , WLAN_PARAM_Integer,
1127 hdd_config_t, btcDynMaxLenWlan,
1128 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1129 CFG_BTC_DYN_MAX_LEN_WLAN_DEFAULT,
1130 CFG_BTC_DYN_MAX_LEN_WLAN_MIN,
1131 CFG_BTC_DYN_MAX_LEN_WLAN_MAX ),
1132
1133 REG_VARIABLE( CFG_BTC_MAX_SCO_BLOCK_PERC_NAME , WLAN_PARAM_Integer,
1134 hdd_config_t, btcMaxScoBlockPerc,
1135 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1136 CFG_BTC_MAX_SCO_BLOCK_PERC_DEFAULT,
1137 CFG_BTC_MAX_SCO_BLOCK_PERC_MIN,
1138 CFG_BTC_MAX_SCO_BLOCK_PERC_MAX ),
1139
1140 REG_VARIABLE( CFG_BTC_DHCP_PROT_ON_A2DP_NAME , WLAN_PARAM_Integer,
1141 hdd_config_t, btcDhcpProtOnA2dp,
1142 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1143 CFG_BTC_DHCP_PROT_ON_A2DP_DEFAULT,
1144 CFG_BTC_DHCP_PROT_ON_A2DP_MIN,
1145 CFG_BTC_DHCP_PROT_ON_A2DP_MAX ),
1146
1147 REG_VARIABLE( CFG_BTC_DHCP_PROT_ON_SCO_NAME , WLAN_PARAM_Integer,
1148 hdd_config_t, btcDhcpProtOnSco,
1149 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1150 CFG_BTC_DHCP_PROT_ON_SCO_DEFAULT,
1151 CFG_BTC_DHCP_PROT_ON_SCO_MIN,
1152 CFG_BTC_DHCP_PROT_ON_SCO_MAX ),
1153
Jeff Johnson295189b2012-06-20 16:38:30 -07001154#ifdef WLAN_SOFTAP_FEATURE
1155 REG_VARIABLE( CFG_AP_LISTEN_MODE_NAME , WLAN_PARAM_Integer,
1156 hdd_config_t, nEnableListenMode,
1157 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1158 CFG_AP_LISTEN_MODE_DEFAULT,
1159 CFG_AP_LISTEN_MODE_MIN,
1160 CFG_AP_LISTEN_MODE_MAX ),
1161
1162 REG_VARIABLE( CFG_AP_AUTO_SHUT_OFF , WLAN_PARAM_Integer,
1163 hdd_config_t, nAPAutoShutOff,
1164 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1165 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
1166 CFG_AP_AUTO_SHUT_OFF_MIN,
1167 CFG_AP_AUTO_SHUT_OFF_MAX ),
1168#endif
1169
1170#if defined WLAN_FEATURE_VOWIFI
1171 REG_VARIABLE( CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
1172 hdd_config_t, fRrmEnable,
1173 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1174 CFG_RRM_ENABLE_DEFAULT,
1175 CFG_RRM_ENABLE_MIN,
1176 CFG_RRM_ENABLE_MAX ),
1177
1178 REG_VARIABLE( CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
1179 hdd_config_t, nInChanMeasMaxDuration,
1180 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1181 CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1182 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN,
1183 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX ),
1184
1185 REG_VARIABLE( CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
1186 hdd_config_t, nOutChanMeasMaxDuration,
1187 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1188 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1189 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN,
1190 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX ),
1191
1192 REG_VARIABLE( CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
1193 hdd_config_t, nRrmRandnIntvl,
1194 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1195 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
1196 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
1197 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX ),
1198#endif
1199
1200#ifdef WLAN_FEATURE_VOWIFI_11R
1201 REG_VARIABLE( CFG_FT_ENABLE_NAME, WLAN_PARAM_Integer,
1202 hdd_config_t, fFTEnable,
1203 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1204 CFG_FT_ENABLE_DEFAULT,
1205 CFG_FT_ENABLE_MIN,
1206 CFG_FT_ENABLE_MAX ),
1207
1208 REG_VARIABLE( CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
1209 hdd_config_t, fFTResourceReqSupported,
1210 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1211 CFG_FT_RESOURCE_REQ_DEFAULT,
1212 CFG_FT_RESOURCE_REQ_MIN,
1213 CFG_FT_RESOURCE_REQ_MAX ),
1214#endif
1215
1216#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
1217 REG_VARIABLE( CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME, WLAN_PARAM_Integer,
1218 hdd_config_t, nNeighborScanPeriod,
1219 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1220 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
1221 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
1222 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX ),
1223
1224 REG_VARIABLE( CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
1225 hdd_config_t, nNeighborReassocRssiThreshold,
1226 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1227 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_DEFAULT,
1228 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MIN,
1229 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MAX ),
1230
1231 REG_VARIABLE( CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
1232 hdd_config_t, nNeighborLookupRssiThreshold,
1233 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1234 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
1235 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
1236 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX ),
1237
1238 REG_VARIABLE_STRING( CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
1239 hdd_config_t, neighborScanChanList,
1240 VAR_FLAGS_OPTIONAL,
1241 (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT ),
1242
1243 REG_VARIABLE( CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME, WLAN_PARAM_Integer,
1244 hdd_config_t, nNeighborScanMinChanTime,
1245 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1246 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
1247 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
1248 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX ),
1249
1250 REG_VARIABLE( CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME, WLAN_PARAM_Integer,
1251 hdd_config_t, nNeighborScanMaxChanTime,
1252 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1253 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
1254 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
1255 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX ),
1256
1257 REG_VARIABLE( CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
1258 hdd_config_t, nMaxNeighborReqTries,
1259 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1260 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
1261 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
1262 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),
1263
1264 REG_VARIABLE( CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer,
1265 hdd_config_t, nNeighborResultsRefreshPeriod,
1266 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1267 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
1268 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
1269 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX ),
1270#endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */
1271
1272 REG_VARIABLE( CFG_QOS_WMM_BURST_SIZE_DEFN_NAME , WLAN_PARAM_Integer,
1273 hdd_config_t, burstSizeDefinition,
1274 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1275 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
1276 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
1277 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX ),
1278
1279 REG_VARIABLE( CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
1280 hdd_config_t, mcastBcastFilterSetting,
1281 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1282 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
1283 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
1284 CFG_MCAST_BCAST_FILTER_SETTING_MAX ),
1285
1286 REG_VARIABLE( CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
1287 hdd_config_t, fhostArpOffload,
1288 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1289 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
1290 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
1291 CFG_ENABLE_HOST_ARPOFFLOAD_MAX ),
1292
1293 REG_VARIABLE( CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME , WLAN_PARAM_HexInteger,
1294 hdd_config_t, tsInfoAckPolicy,
1295 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1296 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
1297 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
1298 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX ),
1299
1300 REG_VARIABLE( CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
1301 hdd_config_t, bSingleTidRc,
1302 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1303 CFG_SINGLE_TID_RC_DEFAULT,
1304 CFG_SINGLE_TID_RC_MIN,
1305 CFG_SINGLE_TID_RC_MAX),
1306
1307 REG_VARIABLE( CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
1308 hdd_config_t, dynamicPsPollValue,
1309 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1310 CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
1311 CFG_DYNAMIC_PSPOLL_VALUE_MIN,
1312 CFG_DYNAMIC_PSPOLL_VALUE_MAX ),
1313
1314 REG_VARIABLE( CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
1315 hdd_config_t, teleBcnWakeupEn,
1316 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1317 CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
1318 CFG_TELE_BCN_WAKEUP_EN_MIN,
1319 CFG_TELE_BCN_WAKEUP_EN_MAX ),
1320
1321 REG_VARIABLE( CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
1322 hdd_config_t, infraStaKeepAlivePeriod,
1323 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1324 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
1325 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
1326 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),
1327
1328 REG_VARIABLE( CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME , WLAN_PARAM_Integer,
1329 hdd_config_t, AddTSWhenACMIsOff,
1330 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1331 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
1332 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
1333 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX ),
1334
1335
1336 REG_VARIABLE( CFG_VALIDATE_SCAN_LIST_NAME , WLAN_PARAM_Integer,
1337 hdd_config_t, fValidateScanList,
1338 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1339 CFG_VALIDATE_SCAN_LIST_DEFAULT,
1340 CFG_VALIDATE_SCAN_LIST_MIN,
1341 CFG_VALIDATE_SCAN_LIST_MAX ),
1342
1343 REG_VARIABLE( CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
1344 hdd_config_t, nNullDataApRespTimeout,
1345 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1346 CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
1347 CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
1348 CFG_NULLDATA_AP_RESP_TIMEOUT_MAX ),
1349
1350 REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1351 hdd_config_t, apDataAvailPollPeriodInMs,
1352 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1353 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1354 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1355 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ),
1356
1357 REG_VARIABLE( CFG_ENABLE_BTAMP_NAME, WLAN_PARAM_Integer,
1358 hdd_config_t, enableBtAmp,
1359 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1360 CFG_ENABLE_BTAMP_DEFAULT,
1361 CFG_ENABLE_BTAMP_MIN,
1362 CFG_ENABLE_BTAMP_MAX ),
1363
1364#ifdef WLAN_BTAMP_FEATURE
1365 REG_VARIABLE( CFG_BT_AMP_PREFERRED_CHANNEL_NAME, WLAN_PARAM_Integer,
1366 hdd_config_t, preferredChannel,
1367 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1368 CFG_BT_AMP_PREFERRED_CHANNEL_DEFAULT,
1369 CFG_BT_AMP_PREFERRED_CHANNEL_MIN,
1370 CFG_BT_AMP_PREFERRED_CHANNEL_MAX ),
1371#endif //WLAN_BTAMP_FEATURE
1372 REG_VARIABLE( CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
1373 hdd_config_t, nBandCapability,
1374 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1375 CFG_BAND_CAPABILITY_DEFAULT,
1376 CFG_BAND_CAPABILITY_MIN,
1377 CFG_BAND_CAPABILITY_MAX ),
1378
1379 REG_VARIABLE( CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME, WLAN_PARAM_Integer,
1380 hdd_config_t, fEnableBeaconEarlyTermination,
1381 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1382 CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
1383 CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
1384 CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ),
1385
1386#ifdef FEATURE_WLAN_INTEGRATED_SOC
1387 /* note that since the default value is out of range we cannot
1388 enable range check, otherwise we get a system log message */
1389 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAL_NAME, WLAN_PARAM_Integer,
1390 hdd_config_t, wdiTraceEnableDAL,
1391 VAR_FLAGS_OPTIONAL,
1392 CFG_WDI_TRACE_ENABLE_DEFAULT,
1393 CFG_WDI_TRACE_ENABLE_MIN,
1394 CFG_WDI_TRACE_ENABLE_MAX ),
1395
1396 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_CTL_NAME, WLAN_PARAM_Integer,
1397 hdd_config_t, wdiTraceEnableCTL,
1398 VAR_FLAGS_OPTIONAL,
1399 CFG_WDI_TRACE_ENABLE_DEFAULT,
1400 CFG_WDI_TRACE_ENABLE_MIN,
1401 CFG_WDI_TRACE_ENABLE_MAX ),
1402
1403 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_DAT_NAME, WLAN_PARAM_Integer,
1404 hdd_config_t, wdiTraceEnableDAT,
1405 VAR_FLAGS_OPTIONAL,
1406 CFG_WDI_TRACE_ENABLE_DEFAULT,
1407 CFG_WDI_TRACE_ENABLE_MIN,
1408 CFG_WDI_TRACE_ENABLE_MAX ),
1409
1410 REG_VARIABLE( CFG_WDI_TRACE_ENABLE_PAL_NAME, WLAN_PARAM_Integer,
1411 hdd_config_t, wdiTraceEnablePAL,
1412 VAR_FLAGS_OPTIONAL,
1413 CFG_WDI_TRACE_ENABLE_DEFAULT,
1414 CFG_WDI_TRACE_ENABLE_MIN,
1415 CFG_WDI_TRACE_ENABLE_MAX ),
1416#endif /* FEATURE_WLAN_INTEGRATED_SOC */
1417
1418 REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
1419 hdd_config_t, nTeleBcnTransListenInterval,
1420 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1421 CFG_TELE_BCN_TRANS_LI_DEFAULT,
1422 CFG_TELE_BCN_TRANS_LI_MIN,
1423 CFG_TELE_BCN_TRANS_LI_MAX ),
1424
1425 REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1426 hdd_config_t, nTeleBcnTransLiNumIdleBeacons,
1427 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1428 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
1429 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
1430 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX ),
1431
1432 REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
1433 hdd_config_t, nTeleBcnMaxListenInterval,
1434 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1435 CFG_TELE_BCN_MAX_LI_DEFAULT,
1436 CFG_TELE_BCN_MAX_LI_MIN,
1437 CFG_TELE_BCN_MAX_LI_MAX ),
1438
1439 REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1440 hdd_config_t, nTeleBcnMaxLiNumIdleBeacons,
1441 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1442 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
1443 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
1444 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX ),
1445
1446 REG_VARIABLE( CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer,
1447 hdd_config_t, bcnEarlyTermWakeInterval,
1448 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1449 CFG_BCN_EARLY_TERM_WAKE_DEFAULT,
1450 CFG_BCN_EARLY_TERM_WAKE_MIN,
1451 CFG_BCN_EARLY_TERM_WAKE_MAX ),
1452
1453 REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1454 hdd_config_t, apDataAvailPollPeriodInMs,
1455 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1456 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1457 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1458 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ),
1459
1460 REG_VARIABLE( CFG_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer,
1461 hdd_config_t, enableCloseLoop,
1462 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1463 CFG_ENABLE_CLOSE_LOOP_DEFAULT,
1464 CFG_ENABLE_CLOSE_LOOP_MIN,
1465 CFG_ENABLE_CLOSE_LOOP_MAX ),
1466
1467 REG_VARIABLE( CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
1468 hdd_config_t, enableBypass11d,
1469 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1470 CFG_ENABLE_BYPASS_11D_DEFAULT,
1471 CFG_ENABLE_BYPASS_11D_MIN,
1472 CFG_ENABLE_BYPASS_11D_MAX ),
1473
1474 REG_VARIABLE( CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1475 hdd_config_t, enableDFSChnlScan,
1476 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1477 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
1478 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
1479 CFG_ENABLE_DFS_CHNL_SCAN_MAX ),
1480
1481 REG_VARIABLE( CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
1482 hdd_config_t, enableDynamicDTIM,
1483 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1484 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
1485 CFG_ENABLE_DYNAMIC_DTIM_MIN,
1486 CFG_ENABLE_DYNAMIC_DTIM_MAX ),
1487
1488 REG_VARIABLE( CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME, WLAN_PARAM_Integer,
1489 hdd_config_t, enableAutomaticTxPowerControl,
1490 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1491 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT,
1492 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN,
1493 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX ),
1494
1495 REG_VARIABLE( CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
1496 hdd_config_t, ShortGI40MhzEnable,
1497 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1498 CFG_SHORT_GI_40MHZ_DEFAULT,
1499 CFG_SHORT_GI_40MHZ_MIN,
1500 CFG_SHORT_GI_40MHZ_MAX ),
1501
1502 REG_DYNAMIC_VARIABLE( CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
1503 hdd_config_t, reportMaxLinkSpeed,
1504 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1505 CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
1506 CFG_REPORT_MAX_LINK_SPEED_MIN,
1507 CFG_REPORT_MAX_LINK_SPEED_MAX,
1508 NULL, 0 ),
1509
1510 REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
1511 hdd_config_t, linkSpeedRssiHigh,
1512 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1513 CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
1514 CFG_LINK_SPEED_RSSI_HIGH_MIN,
1515 CFG_LINK_SPEED_RSSI_HIGH_MAX,
1516 NULL, 0 ),
1517
1518 REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
1519 hdd_config_t, linkSpeedRssiLow,
1520 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1521 CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
1522 CFG_LINK_SPEED_RSSI_LOW_MIN,
1523 CFG_LINK_SPEED_RSSI_LOW_MAX,
1524 NULL, 0 ),
1525
1526#ifdef WLAN_FEATURE_P2P
1527 REG_VARIABLE( CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME, WLAN_PARAM_Integer,
1528 hdd_config_t, isP2pDeviceAddrAdministrated,
1529 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1530 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
1531 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
1532 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX ),
1533#endif
1534
1535REG_VARIABLE( CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
1536 hdd_config_t, enableMCC,
1537 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1538 CFG_ENABLE_MCC_ENABLED_DEFAULT,
1539 CFG_ENABLE_MCC_ENABLED_MIN,
1540 CFG_ENABLE_MCC_ENABLED_MAX ),
1541
Mohit Khanna7ed53f02012-09-11 17:52:10 -07001542REG_VARIABLE( CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
1543 hdd_config_t, allowMCCGODiffBI,
1544 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1545 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
1546 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
1547 CFG_ALLOW_MCC_GO_DIFF_BI_MAX ),
1548
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 REG_VARIABLE( CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
1550 hdd_config_t, thermalMitigationEnable,
1551 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1552 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
1553 CFG_THERMAL_MIGRATION_ENABLE_MIN,
1554 CFG_THERMAL_MIGRATION_ENABLE_MAX ),
1555#ifdef WLAN_FEATURE_PACKET_FILTERING
1556 REG_VARIABLE( CFG_MC_ADDR_LIST_FILTER_NAME, WLAN_PARAM_Integer,
1557 hdd_config_t, isMcAddrListFilter,
1558 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1559 CFG_MC_ADDR_LIST_FILTER_DEFAULT,
1560 CFG_MC_ADDR_LIST_FILTER_MIN,
1561 CFG_MC_ADDR_LIST_FILTER_MAX ),
1562#endif
1563
1564REG_VARIABLE( CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
1565 hdd_config_t, enableModulatedDTIM,
1566 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1567 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
1568 CFG_ENABLE_MODULATED_DTIM_MIN,
1569 CFG_ENABLE_MODULATED_DTIM_MAX ),
1570
Jeff Johnsond13512a2012-07-17 11:42:19 -07001571 REG_VARIABLE( CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
1572 hdd_config_t, fEnableMCAddrList,
1573 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1574 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
1575 CFG_MC_ADDR_LIST_ENABLE_MIN,
1576 CFG_MC_ADDR_LIST_ENABLE_MAX ),
1577
Jeff Johnsone7245742012-09-05 17:12:55 -07001578#ifdef WLAN_FEATURE_11AC
1579REG_VARIABLE( CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
1580 hdd_config_t, vhtChannelWidth,
1581 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1582 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
1583 CFG_VHT_CHANNEL_WIDTH_MIN,
1584 CFG_VHT_CHANNEL_WIDTH_MAX),
1585
1586REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
1587 hdd_config_t, vhtRxMCS,
1588 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1589 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
1590 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
1591 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),
1592
1593REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
1594 hdd_config_t, vhtTxMCS,
1595 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1596 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
1597 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
1598 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),
1599#endif
1600
1601REG_VARIABLE( CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
1602 hdd_config_t, enableFirstScan2GOnly,
1603 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1604 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
1605 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
1606 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX ),
1607
1608REG_VARIABLE( CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
1609 hdd_config_t, skipDfsChnlInP2pSearch,
1610 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1611 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
1612 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
1613 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX ),
1614
1615REG_VARIABLE( CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME, WLAN_PARAM_Integer,
1616 hdd_config_t, ignoreDynamicDtimInP2pMode,
1617 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1618 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
1619 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
1620 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ),
1621
Jeff Johnson295189b2012-06-20 16:38:30 -07001622};
1623
1624/*
1625 * This function returns a pointer to the character after the occurence
1626 * of a new line character. It also modifies the original string by replacing
1627 * the '\n' character with the null character.
1628 * Function returns NULL if no new line character was found before end of
1629 * string was reached
1630 */
1631static char* get_next_line(char* str)
1632{
1633 char c;
1634
1635 if( str == NULL || *str == '\0') {
1636 return NULL;
1637 }
1638
1639 c = *str;
1640 while(c != '\n' && c != '\0' && c != 0xd) {
1641 str = str + 1;
1642 c = *str;
1643 }
1644
1645 if (c == '\0' ) {
1646 return NULL;
1647 }
1648 else
1649 {
1650 *str = '\0';
1651 return (str+1);
1652 }
1653
1654 return NULL;
1655}
1656
1657// look for space. Ascii values to look are -
1658// 0x09 == horizontal tab
1659// 0x0a == Newline ("\n")
1660// 0x0b == vertical tab
1661// 0x0c == Newpage or feed form.
1662// 0x0d == carriage return (CR or "\r")
1663// Null ('\0') should not considered as space.
1664#define i_isspace(ch) (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')
1665
1666/*
1667 * This function trims any leading and trailing white spaces
1668 */
1669static char *i_trim(char *str)
1670
1671{
1672 char *ptr;
1673
1674 if(*str == '\0') return str;
1675
1676 /* Find the first non white-space*/
1677 for (ptr = str; i_isspace(*ptr); ptr++);
1678 if (*ptr == '\0')
1679 return str;
1680
1681 /* This is the new start of the string*/
1682 str = ptr;
1683
1684 /* Find the last non white-space */
1685 ptr += strlen(ptr) - 1;
1686 for (; ptr != str && i_isspace(*ptr); ptr--);
1687 /* Null terminate the following character */
1688 ptr[1] = '\0';
1689
1690 return str;
1691}
1692
1693
1694//Structure to store each entry in qcom_cfg.ini file
1695typedef struct
1696{
1697 char *name;
1698 char *value;
1699}tCfgIniEntry;
1700
1701static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t * pHddCtx,
1702 tCfgIniEntry* iniTable, unsigned long entries);
1703
1704#ifdef WLAN_CFG_DEBUG
1705void dump_cfg_ini (tCfgIniEntry* iniTable, unsigned long entries)
1706{
1707 unsigned long i;
1708
1709 for (i = 0; i < entries; i++) {
1710 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "%s entry Name=[%s] value=[%s]",
1711 WLAN_INI_FILE, iniTable[i].name, iniTable[i].value);
1712 }
1713}
1714#endif
1715
1716/*
1717 * This function reads the qcom_cfg.ini file and
1718 * parses each 'Name=Value' pair in the ini file
1719 */
1720VOS_STATUS hdd_parse_config_ini(hdd_context_t* pHddCtx)
1721{
1722 int status, i=0;
1723 /** Pointer for firmware image data */
1724 const struct firmware *fw = NULL;
1725 char *buffer, *line,*pTemp;
1726 size_t size;
1727 char *name, *value;
1728 tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
1729 VOS_STATUS vos_status = VOS_STATUS_SUCCESS;
1730
1731 memset(cfgIniTable, 0, sizeof(cfgIniTable));
1732
1733 status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
1734
1735 if(status)
1736 {
1737 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d\n",__FUNCTION__, status);
1738 return VOS_STATUS_E_FAILURE;
1739 }
1740 if(!fw || !fw->data || !fw->size)
1741 {
1742 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: %s download failed\n",
1743 __FUNCTION__, WLAN_INI_FILE);
1744 return VOS_STATUS_E_FAILURE;
1745 }
1746
1747 hddLog(LOG1, "%s: qcom_cfg.ini Size %d\n",__FUNCTION__, fw->size);
1748
1749 buffer = (char*)vos_mem_malloc(fw->size);
1750
1751 if(NULL == buffer) {
1752 hddLog(VOS_TRACE_LEVEL_FATAL, "%s: kmalloc failure",__FUNCTION__);
1753 release_firmware(fw);
1754 return VOS_STATUS_E_FAILURE;
1755 }
1756 pTemp = buffer;
1757
1758 vos_mem_copy((void*)buffer,(void *)fw->data, fw->size);
1759 size = fw->size;
1760
1761 while (buffer != NULL)
1762 {
1763 line = get_next_line(buffer);
1764 buffer = i_trim(buffer);
1765
1766 hddLog(LOG1, "%s: item", buffer);
1767
1768 if(strlen((char*)buffer) == 0 || *buffer == '#') {
1769 buffer = line;
1770 continue;
1771 }
1772 else if(strncmp(buffer, "END", 3) == 0 ) {
1773 break;
1774 }
1775 else
1776 {
1777 name = buffer;
1778 while(*buffer != '=' && *buffer != '\0')
1779 buffer++;
1780 if(*buffer != '\0') {
1781 *buffer++ = '\0';
1782 i_trim(name);
1783 if(strlen (name) != 0) {
1784 buffer = i_trim(buffer);
1785 if(strlen(buffer)>0) {
1786 value = buffer;
1787 while(!i_isspace(*buffer) && *buffer != '\0')
1788 buffer++;
1789 *buffer = '\0';
1790 cfgIniTable[i].name= name;
1791 cfgIniTable[i++].value= value;
1792 if(i >= MAX_CFG_INI_ITEMS) {
1793 hddLog(LOGE,"%s: Number of items in %s > %d \n",
1794 __FUNCTION__, WLAN_INI_FILE, MAX_CFG_INI_ITEMS);
1795 break;
1796 }
1797 }
1798 }
1799 }
1800 }
1801 buffer = line;
1802 }
1803
1804 //Loop through the registry table and apply all these configs
1805 vos_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
1806
1807 release_firmware(fw);
1808 vos_mem_free(pTemp);
1809 return vos_status;
1810}
1811
1812
1813static void print_hdd_cfg(hdd_context_t *pHddCtx)
1814{
1815 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "*********Config values in HDD Adapter*******");
1816 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RTSThreshold] Value = %lu",pHddCtx->cfg_ini->RTSThreshold) ;
1817 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [OperatingChannel] Value = [%u]",pHddCtx->cfg_ini->OperatingChannel);
1818 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PowerUsageControl] Value = [%s]",pHddCtx->cfg_ini->PowerUsageControl);
1819 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fIsImpsEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsImpsEnabled);
1820 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [AutoBmpsTimerEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsAutoBmpsTimerEnabled);
1821 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nAutoBmpsTimerValue] Value = [%lu]",pHddCtx->cfg_ini->nAutoBmpsTimerValue);
1822 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nVccRssiTrigger] Value = [%u]",pHddCtx->cfg_ini->nVccRssiTrigger);
1823 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]",
1824 pHddCtx->cfg_ini->IbssBssid.bytes[0],pHddCtx->cfg_ini->IbssBssid.bytes[1],
1825 pHddCtx->cfg_ini->IbssBssid.bytes[2],pHddCtx->cfg_ini->IbssBssid.bytes[3],
1826 pHddCtx->cfg_ini->IbssBssid.bytes[4],pHddCtx->cfg_ini->IbssBssid.bytes[5]);
1827
1828 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1829 "Name = [Intf0MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1830 pHddCtx->cfg_ini->intfMacAddr[0].bytes[0],
1831 pHddCtx->cfg_ini->intfMacAddr[0].bytes[1],
1832 pHddCtx->cfg_ini->intfMacAddr[0].bytes[2],
1833 pHddCtx->cfg_ini->intfMacAddr[0].bytes[3],
1834 pHddCtx->cfg_ini->intfMacAddr[0].bytes[4],
1835 pHddCtx->cfg_ini->intfMacAddr[0].bytes[5]);
1836
1837
1838 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1839 "Name = [Intf1MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1840 pHddCtx->cfg_ini->intfMacAddr[1].bytes[0],
1841 pHddCtx->cfg_ini->intfMacAddr[1].bytes[1],
1842 pHddCtx->cfg_ini->intfMacAddr[1].bytes[2],
1843 pHddCtx->cfg_ini->intfMacAddr[1].bytes[3],
1844 pHddCtx->cfg_ini->intfMacAddr[1].bytes[4],
1845 pHddCtx->cfg_ini->intfMacAddr[1].bytes[5]);
1846
1847 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1848 "Name = [Intf2MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1849 pHddCtx->cfg_ini->intfMacAddr[2].bytes[0],
1850 pHddCtx->cfg_ini->intfMacAddr[2].bytes[1],
1851 pHddCtx->cfg_ini->intfMacAddr[2].bytes[2],
1852 pHddCtx->cfg_ini->intfMacAddr[2].bytes[3],
1853 pHddCtx->cfg_ini->intfMacAddr[2].bytes[4],
1854 pHddCtx->cfg_ini->intfMacAddr[2].bytes[5]);
1855
1856 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
1857 "Name = [Intf3MacAddress] Value =[0x%x 0x%x 0x%x 0x%x 0x%x 0x%x]",
1858 pHddCtx->cfg_ini->intfMacAddr[3].bytes[0],
1859 pHddCtx->cfg_ini->intfMacAddr[3].bytes[1],
1860 pHddCtx->cfg_ini->intfMacAddr[3].bytes[2],
1861 pHddCtx->cfg_ini->intfMacAddr[3].bytes[3],
1862 pHddCtx->cfg_ini->intfMacAddr[3].bytes[4],
1863 pHddCtx->cfg_ini->intfMacAddr[3].bytes[5]);
1864
1865#ifdef WLAN_SOFTAP_FEATURE
1866
1867 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApEnableUapsd] value = [%u]\n",pHddCtx->cfg_ini->apUapsdEnabled);
1868
1869 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPCntryCode] Value =[%c%c%c]\n",
1870 pHddCtx->cfg_ini->apCntryCode[0],pHddCtx->cfg_ini->apCntryCode[1],
1871 pHddCtx->cfg_ini->apCntryCode[2]);
1872 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApProt] value = [%u]", pHddCtx->cfg_ini->apProtEnabled);
1873 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPAutoShutOff] Value = [%u]\n", pHddCtx->cfg_ini->nAPAutoShutOff);
1874
1875 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableListenMode] Value = [%u]\n", pHddCtx->cfg_ini->nEnableListenMode);
1876 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApProtection] value = [%u]\n",pHddCtx->cfg_ini->apProtection);
1877 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApOBSSProt] value = [%u]\n",pHddCtx->cfg_ini->apOBSSProtEnabled);
1878 VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApAutoChannelSelection] value = [%u]\n",pHddCtx->cfg_ini->apAutoChannelSelection);
1879#endif
1880
1881 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%lu]",pHddCtx->cfg_ini->nChannelBondingMode24GHz);
1882 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%lu]",pHddCtx->cfg_ini->nChannelBondingMode5GHz);
1883 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [dot11Mode] Value = [%lu]",pHddCtx->cfg_ini->dot11Mode);
1884 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WmmMode] Value = [%u] ",pHddCtx->cfg_ini->WmmMode);
1885 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [UapsdMask] Value = [0x%x] ",pHddCtx->cfg_ini->UapsdMask);
1886 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PktClassificationBasis] Value = [%u] ",pHddCtx->cfg_ini->PktClassificationBasis);
1887 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ImplicitQosIsEnabled] Value = [%u]",(int)pHddCtx->cfg_ini->bImplicitQosEnabled);
1888
1889 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdVoSrvIntv);
1890 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdVoSuspIntv);
1891
1892 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdViSrvIntv);
1893 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdViSuspIntv);
1894
1895 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBeSrvIntv);
1896 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBeSuspIntv);
1897
1898 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSrvIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBkSrvIntv);
1899 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSuspIntv] Value = [%lu] ",pHddCtx->cfg_ini->InfraUapsdBkSuspIntv);
1900#ifdef FEATURE_WLAN_CCX
1901 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraInactivityInterval] Value = [%lu] ",pHddCtx->cfg_ini->InfraInactivityInterval);
1902 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [CcxEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isCcxIniFeatureEnabled);
1903 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastTransitionEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isFastTransitionEnabled);
1904 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gTxPowerCap] Value = [%lu] dBm ",pHddCtx->cfg_ini->nTxPowerCap);
1905#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07001906#ifdef FEATURE_WLAN_LFR
1907 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastRoamEnabled] Value = [%lu] ",pHddCtx->cfg_ini->isFastRoamIniFeatureEnabled);
1908#endif
Jeff Johnson43971f52012-07-17 12:26:56 -07001909#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
1910 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RoamRssiDiff] Value = [%lu] ",pHddCtx->cfg_ini->RoamRssiDiff);
1911#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVo] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVo);
1913 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVo);
1914 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVo] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVo);
1915 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVo] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVo);
1916 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVo);
1917
1918 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVi] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVi);
1919 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVi);
1920 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVi] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVi);
1921 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVi] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVi);
1922 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVi);
1923
1924 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBe] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBe);
1925 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBe);
1926 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBe] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBe);
1927 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBe] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBe);
1928 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBe);
1929
1930 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBk] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBk);
1931 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBk);
1932 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBk] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBk);
1933 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBk] Value = [0x%lx] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBk);
1934 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBk);
1935
1936 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqBkWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqBkWeight);
1937 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqBeWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqBeWeight);
1938 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqViWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqViWeight);
1939 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WfqVoWeight] Value = [%u] ",pHddCtx->cfg_ini->WfqVoWeight);
1940 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [DelayedTriggerFrmInt] Value = [%lu] ",pHddCtx->cfg_ini->DelayedTriggerFrmInt);
1941 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [mcastBcastFilterSetting] Value = [%u] ",pHddCtx->cfg_ini->mcastBcastFilterSetting);
1942 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fhostArpOffload] Value = [%u] ",pHddCtx->cfg_ini->fhostArpOffload);
1943#ifdef WLAN_FEATURE_VOWIFI_11R
1944 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTEnable] Value = [%lu] ",pHddCtx->cfg_ini->fFTEnable);
1945 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTResourceReqSupported] Value = [%lu] ",pHddCtx->cfg_ini->fFTResourceReqSupported);
1946#endif
1947
1948#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
1949 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborReassocRssiThreshold] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborReassocRssiThreshold);
1950 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborLookupRssiThreshold] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborLookupRssiThreshold);
1951 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMinChanTime] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanMinChanTime);
1952 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMaxChanTime] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanMaxChanTime);
1953 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nMaxNeighborRetries] Value = [%lu] ",pHddCtx->cfg_ini->nMaxNeighborReqTries);
1954 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanPeriod] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborScanPeriod);
1955 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanResultsRefreshPeriod] Value = [%lu] ",pHddCtx->cfg_ini->nNeighborResultsRefreshPeriod);
1956#endif
1957 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [burstSizeDefinition] Value = [0x%x] ",pHddCtx->cfg_ini->burstSizeDefinition);
1958 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [tsInfoAckPolicy] Value = [0x%x] ",pHddCtx->cfg_ini->tsInfoAckPolicy);
1959 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [rfSettlingTimeUs] Value = [%u] ",pHddCtx->cfg_ini->rfSettlingTimeUs);
1960 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bSingleTidRc] Value = [%u] ",pHddCtx->cfg_ini->bSingleTidRc);
1961 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gDynamicPSPollvalue] Value = [%u] ",pHddCtx->cfg_ini->dynamicPsPollValue);
1962 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAddTSWhenACMIsOff] Value = [%u] ",pHddCtx->cfg_ini->AddTSWhenACMIsOff);
1963 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gValidateScanList] Value = [%u] ",pHddCtx->cfg_ini->fValidateScanList);
1964
1965 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gStaKeepAlivePeriod] Value = [%u] ",pHddCtx->cfg_ini->infraStaKeepAlivePeriod);
1966 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApDataAvailPollInterVal] Value = [%u] ",pHddCtx->cfg_ini->apDataAvailPollPeriodInMs);
1967 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableBtAmp] Value = [%u] ",pHddCtx->cfg_ini->enableBtAmp);
1968#ifdef WLAN_BTAMP_FEATURE
1969 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [BtAmpPreferredChannel] Value = [%u] ",pHddCtx->cfg_ini->preferredChannel);
1970#endif //WLAN_BTAMP_FEATURE
1971 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [BandCapability] Value = [%u] ",pHddCtx->cfg_ini->nBandCapability);
1972 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableBeaconEarlyTermination] Value = [%u] ",pHddCtx->cfg_ini->fEnableBeaconEarlyTermination);
1973 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [teleBcnWakeupEnable] Value = [%u] ",pHddCtx->cfg_ini->teleBcnWakeupEn);
1974 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransListenInterval);
1975 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransLiNumIdleBeacons);
1976 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxListenInterval);
1977 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxLiNumIdleBeacons);
1978 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bcnEarlyTermWakeInterval] Value = [%u] ",pHddCtx->cfg_ini->bcnEarlyTermWakeInterval);
1979 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApDataAvailPollInterVal] Value = [%u] ",pHddCtx->cfg_ini->apDataAvailPollPeriodInMs);
1980 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableBypass11d] Value = [%u] ",pHddCtx->cfg_ini->enableBypass11d);
1981 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableDFSChnlScan] Value = [%u] ",pHddCtx->cfg_ini->enableDFSChnlScan);
1982 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gReportMaxLinkSpeed] Value = [%u] ",pHddCtx->cfg_ini->reportMaxLinkSpeed);
1983 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 -07001984#ifdef WLAN_FEATURE_11AC
1985 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gVhtChannelWidth] value = [%u]\n",pHddCtx->cfg_ini->vhtChannelWidth);
1986#endif
1987 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableFirstScan2GOnly] Value = [%u] ",pHddCtx->cfg_ini->enableFirstScan2GOnly);
1988 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",pHddCtx->cfg_ini->skipDfsChnlInP2pSearch);
1989 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",pHddCtx->cfg_ini->ignoreDynamicDtimInP2pMode);
Jeff Johnson295189b2012-06-20 16:38:30 -07001990}
1991
1992
1993#define CFG_VALUE_MAX_LEN 256
1994#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
1995VOS_STATUS hdd_cfg_get_config(hdd_context_t *pHddCtx, char *pBuf, int buflen)
1996{
1997 unsigned int idx;
1998 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
1999 unsigned long cRegTableEntries = sizeof(g_registry_table) / sizeof( g_registry_table[ 0 ]);
2000 v_U32_t value;
2001 char valueStr[CFG_VALUE_MAX_LEN];
2002 char configStr[CFG_ENTRY_MAX_LEN];
2003 char *fmt;
2004 void *pField;
2005 v_MACADDR_t *pMacAddr;
2006 char *pCur = pBuf;
2007 int curlen;
2008
2009 // start with an empty string
2010 *pCur = '\0';
2011
2012 for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
2013 {
2014 pField = ( (v_U8_t *)pHddCtx->cfg_ini) + pRegEntry->VarOffset;
2015
2016 if ( ( WLAN_PARAM_Integer == pRegEntry->RegType ) ||
2017 ( WLAN_PARAM_SignedInteger == pRegEntry->RegType ) ||
2018 ( WLAN_PARAM_HexInteger == pRegEntry->RegType ) )
2019 {
2020 value = 0;
2021 memcpy( &value, pField, pRegEntry->VarSize );
2022 if ( WLAN_PARAM_HexInteger == pRegEntry->RegType )
2023 {
2024 fmt = "%x";
2025 }
2026 else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
2027 {
2028 fmt = "%d";
2029 }
2030 else
2031 {
2032 fmt = "%u";
2033 }
2034 snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
2035 }
2036 else if ( WLAN_PARAM_String == pRegEntry->RegType )
2037 {
2038 snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s", (char *)pField);
2039 }
2040 else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
2041 {
2042 pMacAddr = (v_MACADDR_t *) pField;
2043 snprintf(valueStr, CFG_VALUE_MAX_LEN,
2044 "%02x:%02x:%02x:%02x:%02x:%02x",
2045 pMacAddr->bytes[0],
2046 pMacAddr->bytes[1],
2047 pMacAddr->bytes[2],
2048 pMacAddr->bytes[3],
2049 pMacAddr->bytes[4],
2050 pMacAddr->bytes[5]);
2051 }
2052 else
2053 {
2054 snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
2055 }
2056 curlen = snprintf(configStr, CFG_ENTRY_MAX_LEN,
2057 "%s=[%s]%s\n",
2058 pRegEntry->RegName,
2059 valueStr,
2060 test_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg) ?
2061 "*" : "");
2062
2063 // ideally we want to return the config to the application
2064 // however the config is too big so we just printk() for now
2065#ifdef RETURN_IN_BUFFER
2066 if (curlen <= buflen)
2067 {
2068 // copy string + '\0'
2069 memcpy(pCur, configStr, curlen+1);
2070
2071 // account for addition;
2072 pCur += curlen;
2073 buflen -= curlen;
2074 }
2075 else
2076 {
2077 // buffer space exhausted, return what we have
2078 return VOS_STATUS_E_RESOURCES;
2079 }
2080#else
2081 printk(KERN_CRIT "%s", configStr);
2082#endif // RETURN_IN_BUFFER
2083
2084}
2085
2086#ifndef RETURN_IN_BUFFER
2087 // notify application that output is in system log
2088 snprintf(pCur, buflen, "WLAN configuration written to system log");
2089#endif // RETURN_IN_BUFFER
2090
2091 return VOS_STATUS_SUCCESS;
2092}
2093
2094static VOS_STATUS find_cfg_item (tCfgIniEntry* iniTable, unsigned long entries,
2095 char *name, char** value)
2096{
2097 VOS_STATUS status = VOS_STATUS_E_FAILURE;
2098 unsigned long i;
2099
2100 for (i = 0; i < entries; i++) {
2101 if (strcmp(iniTable[i].name, name) == 0) {
2102 *value = iniTable[i].value;
2103 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Found %s entry for Name=[%s] Value=[%s] ",
2104 WLAN_INI_FILE, name, *value);
2105 return VOS_STATUS_SUCCESS;
2106 }
2107 }
2108
2109 return status;
2110}
2111
2112static int parseHexDigit(char c)
2113{
2114 if (c >= '0' && c <= '9')
2115 return c-'0';
2116 if (c >= 'a' && c <= 'f')
2117 return c-'a'+10;
2118 if (c >= 'A' && c <= 'F')
2119 return c-'A'+10;
2120
2121 return 0;
2122}
2123
2124
2125static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t *pHddCtx, tCfgIniEntry* iniTable, unsigned long entries)
2126{
2127 VOS_STATUS match_status = VOS_STATUS_E_FAILURE;
2128 VOS_STATUS ret_status = VOS_STATUS_SUCCESS;
2129 unsigned int idx;
2130 void *pField;
2131 char *value_str = NULL;
2132 unsigned long len_value_str;
2133 char *candidate;
2134 v_U32_t value;
2135 v_S31_t svalue;
2136 void *pStructBase = pHddCtx->cfg_ini;
2137 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
2138 unsigned long cRegTableEntries = sizeof(g_registry_table) / sizeof( g_registry_table[ 0 ]);
2139 v_U32_t cbOutString;
2140 int i;
2141
2142 // sanity test
2143 if (MAX_CFG_INI_ITEMS < cRegTableEntries)
2144 {
2145 hddLog(LOGE, "%s: MAX_CFG_INI_ITEMS too small, must be at least %d",
2146 __FUNCTION__, cRegTableEntries);
2147 }
2148
2149 for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
2150 {
2151 //Calculate the address of the destination field in the structure.
2152 pField = ( (v_U8_t *)pStructBase )+ pRegEntry->VarOffset;
2153
2154 match_status = find_cfg_item(iniTable, entries, pRegEntry->RegName, &value_str);
2155
2156 if( (match_status != VOS_STATUS_SUCCESS) && ( pRegEntry->Flags & VAR_FLAGS_REQUIRED ) )
2157 {
2158 // If we could not read the cfg item and it is required, this is an error.
2159 hddLog(LOGE, "%s: Failed to read required config parameter %s",
2160 __FUNCTION__, pRegEntry->RegName);
2161 ret_status = VOS_STATUS_E_FAILURE;
2162 break;
2163 }
2164
2165 if ( ( WLAN_PARAM_Integer == pRegEntry->RegType ) ||
2166 ( WLAN_PARAM_HexInteger == pRegEntry->RegType ) )
2167 {
2168 // If successfully read from the registry, use the value read.
2169 // If not, use the default value.
2170 if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
2171 value = simple_strtoul(value_str, NULL, 10);
2172 }
2173 else if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
2174 value = simple_strtoul(value_str, NULL, 16);
2175 }
2176 else {
2177 value = pRegEntry->VarDefault;
2178 }
2179
2180 // If this parameter needs range checking, do it here.
2181 if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
2182 {
2183 if ( value > pRegEntry->VarMax )
2184 {
2185 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%lu > %lu]. Enforcing Maximum",
2186 __FUNCTION__, pRegEntry->RegName, value, pRegEntry->VarMax );
2187 value = pRegEntry->VarMax;
2188 }
2189
2190 if ( value < pRegEntry->VarMin )
2191 {
2192 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%lu < %lu]. Enforcing Minimum",
2193 __FUNCTION__, pRegEntry->RegName, value, pRegEntry->VarMin);
2194 value = pRegEntry->VarMin;
2195 }
2196 }
2197 // If this parameter needs range checking, do it here.
2198 else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
2199 {
2200 if ( value > pRegEntry->VarMax )
2201 {
2202 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%lu > %lu]. Enforcing Default= %lu",
2203 __FUNCTION__, pRegEntry->RegName, value, pRegEntry->VarMax, pRegEntry->VarDefault );
2204 value = pRegEntry->VarDefault;
2205 }
2206
2207 if ( value < pRegEntry->VarMin )
2208 {
2209 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%lu < %lu]. Enforcing Default= %lu",
2210 __FUNCTION__, pRegEntry->RegName, value, pRegEntry->VarMin, pRegEntry->VarDefault );
2211 value = pRegEntry->VarDefault;
2212 }
2213 }
2214
2215 // Move the variable into the output field.
2216 memcpy( pField, &value, pRegEntry->VarSize );
2217 }
2218 else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
2219 {
2220 // If successfully read from the registry, use the value read.
2221 // If not, use the default value.
2222 if (VOS_STATUS_SUCCESS == match_status)
2223 {
2224 svalue = simple_strtol(value_str, NULL, 10);
2225 }
2226 else
2227 {
2228 svalue = (v_S31_t)pRegEntry->VarDefault;
2229 }
2230
2231 // If this parameter needs range checking, do it here.
2232 if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
2233 {
2234 if ( svalue > (v_S31_t)pRegEntry->VarMax )
2235 {
2236 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
2237 "[%ld > %ld]. Enforcing Maximum", __FUNCTION__,
2238 pRegEntry->RegName, svalue, (int)pRegEntry->VarMax );
2239 svalue = (v_S31_t)pRegEntry->VarMax;
2240 }
2241
2242 if ( svalue < (v_S31_t)pRegEntry->VarMin )
2243 {
2244 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
2245 "[%ld < %ld]. Enforcing Minimum", __FUNCTION__,
2246 pRegEntry->RegName, svalue, (int)pRegEntry->VarMin);
2247 svalue = (v_S31_t)pRegEntry->VarMin;
2248 }
2249 }
2250 // If this parameter needs range checking, do it here.
2251 else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
2252 {
2253 if ( svalue > (v_S31_t)pRegEntry->VarMax )
2254 {
2255 hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
2256 "[%ld > %ld]. Enforcing Default= %ld",
2257 __FUNCTION__, pRegEntry->RegName, svalue,
2258 (int)pRegEntry->VarMax,
2259 (int)pRegEntry->VarDefault );
2260 svalue = (v_S31_t)pRegEntry->VarDefault;
2261 }
2262
2263 if ( svalue < (v_S31_t)pRegEntry->VarMin )
2264 {
2265 hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
2266 "[%ld < %ld]. Enforcing Default= %ld",
2267 __FUNCTION__, pRegEntry->RegName, svalue,
2268 (int)pRegEntry->VarMin,
2269 (int)pRegEntry->VarDefault);
2270 svalue = pRegEntry->VarDefault;
2271 }
2272 }
2273
2274 // Move the variable into the output field.
2275 memcpy( pField, &svalue, pRegEntry->VarSize );
2276 }
2277 // Handle string parameters
2278 else if ( WLAN_PARAM_String == pRegEntry->RegType )
2279 {
2280#ifdef WLAN_CFG_DEBUG
2281 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "RegName = %s, VarOffset %u VarSize %u VarDefault %s\n",
2282 pRegEntry->RegName, pRegEntry->VarOffset, pRegEntry->VarSize, (char*)pRegEntry->VarDefault);
2283#endif
2284
2285 if ( match_status == VOS_STATUS_SUCCESS)
2286 {
2287 len_value_str = strlen(value_str);
2288
2289 if(len_value_str > (pRegEntry->VarSize - 1)) {
2290 hddLog(LOGE, "%s: Invalid Value=[%s] specified for Name=[%s] in %s\n",
2291 __FUNCTION__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
2292 cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
2293 memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
2294 ( (v_U8_t *)pField )[ cbOutString ] = '\0';
2295 }
2296 else
2297 {
2298 memcpy( pField, (void *)(value_str), len_value_str);
2299 ( (v_U8_t *)pField )[ len_value_str ] = '\0';
2300 }
2301 }
2302 else
2303 {
2304 // Failed to read the string parameter from the registry. Use the default.
2305 cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
2306 memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
2307 ( (v_U8_t *)pField )[ cbOutString ] = '\0';
2308 }
2309 }
2310 else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
2311 {
2312 if(pRegEntry->VarSize != VOS_MAC_ADDR_SIZE) {
2313 hddLog(LOGE, "%s: Invalid VarSize %u for Name=[%s]\n",
2314 __FUNCTION__, pRegEntry->VarSize, pRegEntry->RegName);
2315 continue;
2316 }
2317 candidate = (char*)pRegEntry->VarDefault;
2318 if ( match_status == VOS_STATUS_SUCCESS) {
2319 len_value_str = strlen(value_str);
2320 if(len_value_str != (VOS_MAC_ADDR_SIZE*2)) {
2321 hddLog(LOGE, "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s\n",
2322 __FUNCTION__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
2323 }
2324 else
2325 candidate = value_str;
2326 }
2327 //parse the string and store it in the byte array
2328 for(i=0; i<VOS_MAC_ADDR_SIZE; i++)
2329 {
2330 ((char*)pField)[i] =
2331 (char)(parseHexDigit(candidate[i*2])*16 + parseHexDigit(candidate[i*2+1]));
2332 }
2333 }
2334 else
2335 {
2336 hddLog(LOGE, "%s: Unknown param type for name[%s] in registry table\n",
2337 __FUNCTION__, pRegEntry->RegName);
2338 }
2339
2340 // did we successfully parse a cfg item for this parameter?
2341 if( (match_status == VOS_STATUS_SUCCESS) &&
2342 (idx < MAX_CFG_INI_ITEMS) )
2343 {
2344 set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
2345 }
2346 }
2347
2348 print_hdd_cfg(pHddCtx);
2349
2350 return( ret_status );
2351}
2352
2353eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode( eHddDot11Mode dot11Mode )
2354{
2355 switch (dot11Mode)
2356 {
2357 case (eHDD_DOT11_MODE_abg):
2358 return eCSR_DOT11_MODE_abg;
2359 case (eHDD_DOT11_MODE_11b):
2360 return eCSR_DOT11_MODE_11b;
2361 case (eHDD_DOT11_MODE_11g):
2362 return eCSR_DOT11_MODE_11g;
2363 default:
2364 case (eHDD_DOT11_MODE_11n):
2365 return eCSR_DOT11_MODE_11n;
2366 case (eHDD_DOT11_MODE_11g_ONLY):
2367 return eCSR_DOT11_MODE_11g_ONLY;
2368 case (eHDD_DOT11_MODE_11n_ONLY):
2369 return eCSR_DOT11_MODE_11n_ONLY;
2370 case (eHDD_DOT11_MODE_11b_ONLY):
2371 return eCSR_DOT11_MODE_11b_ONLY;
Jeff Johnsone7245742012-09-05 17:12:55 -07002372#ifdef WLAN_FEATURE_11AC
2373 case (eHDD_DOT11_MODE_11ac_ONLY):
2374 return eCSR_DOT11_MODE_11ac_ONLY;
2375 case (eHDD_DOT11_MODE_11ac):
2376 return eCSR_DOT11_MODE_11ac;
2377#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 case (eHDD_DOT11_MODE_AUTO):
2379 return eCSR_DOT11_MODE_AUTO;
2380 }
2381
2382}
2383
2384static void hdd_set_btc_config(hdd_context_t *pHddCtx)
2385{
2386 hdd_config_t *pConfig = pHddCtx->cfg_ini;
2387 tSmeBtcConfig btcParams;
2388
2389 sme_BtcGetConfig(pHddCtx->hHal, &btcParams);
2390
2391 btcParams.btcExecutionMode = pConfig->btcExecutionMode;
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 btcParams.btcConsBtSlotsToBlockDuringDhcp = pConfig->btcConsBtSlotsToBlockDuringDhcp;
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 btcParams.btcA2DPBtSubIntervalsDuringDhcp = pConfig->btcA2DPBtSubIntervalsDuringDhcp;
2394
Jeff Johnson32d95a32012-09-10 13:15:23 -07002395 btcParams.btcStaticLenInqBt = pConfig->btcStaticLenInqBt;
2396 btcParams.btcStaticLenPageBt = pConfig->btcStaticLenPageBt;
2397 btcParams.btcStaticLenConnBt = pConfig->btcStaticLenConnBt;
2398 btcParams.btcStaticLenLeBt = pConfig->btcStaticLenLeBt;
2399 btcParams.btcStaticLenInqWlan = pConfig->btcStaticLenInqWlan;
2400 btcParams.btcStaticLenPageWlan = pConfig->btcStaticLenPageWlan;
2401 btcParams.btcStaticLenConnWlan = pConfig->btcStaticLenConnWlan;
2402 btcParams.btcStaticLenLeWlan = pConfig->btcStaticLenLeWlan;
2403 btcParams.btcDynMaxLenBt = pConfig->btcDynMaxLenBt;
2404 btcParams.btcDynMaxLenWlan = pConfig->btcDynMaxLenWlan;
2405 btcParams.btcMaxScoBlockPerc = pConfig->btcMaxScoBlockPerc;
2406 btcParams.btcDhcpProtOnA2dp = pConfig->btcDhcpProtOnA2dp;
2407 btcParams.btcDhcpProtOnSco = pConfig->btcDhcpProtOnSco;
2408
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 sme_BtcSetConfig(pHddCtx->hHal, &btcParams);
2410}
2411
2412static void hdd_set_power_save_config(hdd_context_t *pHddCtx, tSmeConfigParams *smeConfig)
2413{
2414 hdd_config_t *pConfig = pHddCtx->cfg_ini;
2415
2416 tPmcBmpsConfigParams bmpsParams;
2417
2418 sme_GetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams);
2419
2420 if (strcmp(pConfig->PowerUsageControl, "Min") == 0)
2421 {
2422 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsMinSleepTime;
2423 bmpsParams.bmpsPeriod = pConfig->nBmpsMinListenInterval;
2424 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2425 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2426 }
2427 if (strcmp(pConfig->PowerUsageControl, "Max") == 0)
2428 {
2429 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsMaxSleepTime;
2430 bmpsParams.bmpsPeriod = pConfig->nBmpsMaxListenInterval;
2431 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2432 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2433 }
2434 if (strcmp(pConfig->PowerUsageControl, "Mod") == 0)
2435 {
2436 smeConfig->csrConfig.impsSleepTime = pConfig->nImpsModSleepTime;
2437 bmpsParams.bmpsPeriod = pConfig->nBmpsModListenInterval;
2438 bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
2439 bmpsParams.bcnEarlyTermWakeInterval = pConfig->bcnEarlyTermWakeInterval;
2440 }
2441
2442 if (pConfig->fIsImpsEnabled)
2443 {
2444 sme_EnablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
2445 }
2446 else
2447 {
2448 sme_DisablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
2449 }
2450
2451 if (pConfig->fIsBmpsEnabled)
2452 {
2453 sme_EnablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
2454 }
2455 else
2456 {
2457 sme_DisablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
2458 }
2459
2460 bmpsParams.trafficMeasurePeriod = pConfig->nAutoBmpsTimerValue;
2461
2462 if (sme_SetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams)== eHAL_STATUS_FAILURE)
2463 {
2464 hddLog(LOGE, "SetConfigPowerSave failed to set BMPS params\n");
2465 }
2466
2467 if(pConfig->fIsAutoBmpsTimerEnabled)
2468 {
2469 sme_StartAutoBmpsTimer(pHddCtx->hHal);
2470 }
2471
2472}
2473
2474#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
2475static VOS_STATUS hdd_string_to_u8_array( char *str, tANI_U8 *intArray, tANI_U8 *len, tANI_U8 intArrayMaxLen )
2476{
2477 char *s = str;
2478
2479 if( str == NULL || intArray == NULL || len == NULL )
2480 {
2481 return VOS_STATUS_E_INVAL;
2482 }
2483 *len = 0;
2484
2485#ifdef VERSION_USING_STRPBRK
2486 while ( (s != NULL) && (*len < intArrayMaxLen) )
2487 {
2488 int val;
2489 //Increment length only if sscanf succesfully extracted one element.
2490 //Any other return value means error. Ignore it.
2491 if( sscanf(s, "%d", &val ) == 1 )
2492 {
2493 intArray[*len] = (tANI_U8) val;
2494 *len += 1;
2495 }
2496 s = strpbrk( s, "," );
2497 if( s )
2498 s++;
2499 }
2500#else
2501 while( (*s != '\0') && (*len < intArrayMaxLen) )
2502 {
2503 unsigned long val;
2504
2505 val = simple_strtoul( s, &s, 10 );
2506 if( val )
2507 {
2508 intArray[*len] = (tANI_U8) val;
2509 *len += 1;
2510 }
2511 if( *s )
2512 s++;
2513 }
2514#endif
2515
2516 return VOS_STATUS_SUCCESS;
2517
2518}
2519#endif
2520
2521
2522v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx )
2523{
2524 v_BOOL_t fStatus = TRUE;
2525
2526 hdd_config_t *pConfig = pHddCtx->cfg_ini;
2527
2528 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
2529 pConfig->ShortGI20MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2530 {
2531 fStatus = FALSE;
2532 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CCM\n");
2533 }
2534
2535 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CAL_CONTROL, pConfig->Calibration,
2536 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2537 {
2538 fStatus = FALSE;
2539 hddLog(LOGE, "Could not pass on WNI_CFG_CAL_CONTROL to CCM\n");
2540 }
2541
2542 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CAL_PERIOD, pConfig->CalibrationPeriod,
2543 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2544 {
2545 fStatus = FALSE;
2546 hddLog(LOGE, "Could not pass on WNI_CFG_CAL_PERIOD to CCM\n");
2547 }
2548
2549 if ( 0 != pConfig->Cfg1Id )
2550 {
2551 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg1Id, pConfig->Cfg1Value, NULL,
2552 eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2553 {
2554 fStatus = FALSE;
2555 hddLog(LOGE, "Could not pass on Cfg1Id to CCM\n");
2556 }
2557
2558 }
2559
2560 if ( 0 != pConfig->Cfg2Id )
2561 {
2562 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg2Id, pConfig->Cfg2Value,
2563 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2564 {
2565 fStatus = FALSE;
2566 hddLog(LOGE, "Could not pass on Cfg2Id to CCM\n");
2567 }
2568 }
2569
2570 if ( 0 != pConfig->Cfg3Id )
2571 {
2572 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg3Id, pConfig->Cfg3Value,
2573 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2574 {
2575 fStatus = FALSE;
2576 hddLog(LOGE, "Could not pass on Cfg3Id to CCM\n");
2577 }
2578 }
2579
2580 if ( 0 != pConfig->Cfg4Id )
2581 {
2582 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg4Id, pConfig->Cfg4Value,
2583 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2584 {
2585 fStatus = FALSE;
2586 hddLog(LOGE, "Could not pass on Cfg4Id to CCM\n");
2587 }
2588 }
2589
2590 if ( 0 != pConfig->Cfg5Id )
2591 {
2592 if (ccmCfgSetInt(pHddCtx->hHal, pConfig->Cfg5Id, pConfig->Cfg5Value,
2593 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2594 {
2595 fStatus = FALSE;
2596 hddLog(LOGE, "Could not pass on Cfg5Id to CCM\n");
2597 }
2598 }
2599
2600 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BA_AUTO_SETUP, pConfig->BlockAckAutoSetup,
2601 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2602 {
2603 fStatus = FALSE;
2604 hddLog(LOGE, "Could not pass on WNI_CFG_BA_AUTO_SETUP to CCM\n");
2605 }
2606
2607 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate,
2608 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2609 {
2610 fStatus = FALSE;
2611 hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CCM\n");
2612 }
2613
2614 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
2615 pConfig->MaxRxAmpduFactor, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2616 {
2617 fStatus = FALSE;
2618 hddLog(LOGE,"Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CCM\n");
2619 }
2620
2621 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE, pConfig->fIsShortPreamble,
2622 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2623 {
2624 fStatus = FALSE;
2625 hddLog(LOGE,"Could not pass on WNI_CFG_SHORT_PREAMBLE to CCM\n");
2626 }
2627
2628 if (pConfig->fIsAutoIbssBssid)
2629 {
2630 if (ccmCfgSetStr(pHddCtx->hHal, WNI_CFG_BSSID, (v_U8_t *)"000000000000",
2631 sizeof(v_BYTE_t) * VOS_MAC_ADDR_SIZE, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2632 {
2633 fStatus = FALSE;
2634 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2635 }
2636 }
2637 else
2638 {
2639 if ( VOS_FALSE == vos_is_macaddr_group( &pConfig->IbssBssid ))
2640 {
2641 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
2642 "MAC Addr (IBSS BSSID) read from Registry is: %02x-%02x-%02x-%02x-%02x-%02x",
2643 pConfig->IbssBssid.bytes[0], pConfig->IbssBssid.bytes[1], pConfig->IbssBssid.bytes[2],
2644 pConfig->IbssBssid.bytes[3], pConfig->IbssBssid.bytes[4], pConfig->IbssBssid.bytes[5]);
2645 if (ccmCfgSetStr(pHddCtx->hHal, WNI_CFG_BSSID, pConfig->IbssBssid.bytes,
2646 sizeof(v_BYTE_t) * VOS_MAC_ADDR_SIZE, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2647 {
2648 fStatus = FALSE;
2649 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2650 }
2651 }
2652 else
2653 {
2654 fStatus = FALSE;
2655 hddLog(LOGE,"Could not pass on WNI_CFG_BSSID to CCM\n");
2656 }
2657 }
2658
2659 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL, pConfig->nBeaconInterval,
2660 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2661 {
2662 fStatus = FALSE;
2663 hddLog(LOGE, "Could not pass on WNI_CFG_BEACON_INTERVAL to CCM\n");
2664 }
2665
2666 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_PS_POLL, pConfig->nMaxPsPoll,
2667 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2668 {
2669 fStatus = FALSE;
2670 hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CCM\n");
2671 }
2672
2673 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA, pConfig-> nRxAnt, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2674 {
2675 fStatus = FALSE;
2676 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_CURRENT_RX_ANTENNA configuration info to HAL\n" );
2677 }
2678
2679 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE, pConfig->fIsLowGainOverride,
2680 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2681 {
2682 fStatus = FALSE;
2683 hddLog(LOGE, "Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL\n");
2684 }
2685
2686 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD, pConfig->nRssiFilterPeriod,
2687 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2688 {
2689 fStatus = FALSE;
2690 hddLog(LOGE, "Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CCM\n");
2691 }
2692
Jeff Johnson04dd8a82012-06-29 20:41:40 -07002693#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FT_RSSI_FILTER_PERIOD, pConfig->FTRssiFilterPeriod,
2695 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2696 {
2697 fStatus = FALSE;
2698 hddLog(LOGE, "Could not pass on WNI_CFG_FT_RSSI_FILTER_PERIOD to CCM\n");
2699 }
2700#endif
2701
2702 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_IGNORE_DTIM, pConfig->fIgnoreDtim,
2703 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2704 {
2705 fStatus = FALSE;
2706 hddLog(LOGE, "Could not pass on WNI_IGNORE_DTIM configuration to CCM\n" );
2707 }
2708
2709 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT, pConfig->fEnableFwHeartBeatMonitoring,
2710 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2711 {
2712 fStatus = FALSE;
2713 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_HEART_BEAT configuration info to CCM\n");
2714 }
2715
2716 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER, pConfig->fEnableFwBeaconFiltering,
2717 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2718 {
2719 fStatus = FALSE;
2720 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_BCN_FILTER configuration info to CCM\n");
2721 }
2722
2723 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR, pConfig->fEnableFwRssiMonitoring,
2724 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2725 {
2726 fStatus = FALSE;
2727 hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_RSSI_MONITOR configuration info to CCM\n");
2728 }
2729
2730 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT, pConfig->nDataInactivityTimeout,
2731 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2732 {
2733 fStatus = FALSE;
2734 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT configuration info to CCM\n");
2735 }
2736
2737 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_NTH_BEACON_FILTER, pConfig->nthBeaconFilter,
2738 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2739 {
2740 fStatus = FALSE;
2741 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_NTH_BEACON_FILTER configuration info to CCM\n");
2742 }
2743
2744#ifdef WLAN_SOFTAP_FEATURE
2745 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX, pConfig->enableLTECoex,
2746 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2747 {
2748 fStatus = FALSE;
2749 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_LTE_COEX to CCM\n");
2750 }
2751
2752 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE, pConfig->nEnableListenMode,
2753 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2754 {
2755 fStatus = FALSE;
2756 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CCM\n");
2757 }
2758
2759 WLANSAP_SetChannelRange(pHddCtx->hHal, pConfig->apStartChannelNum, pConfig->apEndChannelNum, pConfig->apOperatingBand);
2760
2761 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT, pConfig->apKeepAlivePeriod,
2762 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2763 {
2764 fStatus = FALSE;
2765 hddLog(LOGE, "Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CCM\n");
2766 }
2767
2768 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT, pConfig->goKeepAlivePeriod,
2769 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2770 {
2771 fStatus = FALSE;
2772 hddLog(LOGE, "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CCM\n");
2773 }
2774#endif
2775
2776#if defined WLAN_FEATURE_VOWIFI
2777 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_ENABLED, pConfig->fRrmEnable,
2778 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2779 {
2780 fStatus = FALSE;
2781 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_ENABLE configuration info to CCM\n");
2782 }
2783
2784 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_OPERATING_CHAN_MAX, pConfig->nInChanMeasMaxDuration,
2785 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2786 {
2787 fStatus = FALSE;
2788 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_OPERATING_CHAN_MAX configuration info to CCM\n");
2789 }
2790
2791 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_NON_OPERATING_CHAN_MAX, pConfig->nOutChanMeasMaxDuration,
2792 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2793 {
2794 fStatus = FALSE;
2795 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RRM_OUT_CHAN_MAX configuration info to CCM\n");
2796 }
2797
2798 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING, pConfig->mcastBcastFilterSetting,
2799 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2800#endif
2801
2802 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC, pConfig->bSingleTidRc,
2803 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2804 {
2805 fStatus = FALSE;
2806 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_SINGLE_TID_RC configuration info to CCM\n");
2807 }
2808
2809 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN, pConfig->teleBcnWakeupEn,
2810 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2811 {
2812 fStatus = FALSE;
2813 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN configuration info to CCM\n" );
2814 }
2815
2816 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI, pConfig->nTeleBcnTransListenInterval,
2817 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2818 {
2819 fStatus = FALSE;
2820 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI configuration info to CCM\n" );
2821 }
2822
2823 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI, pConfig->nTeleBcnMaxListenInterval,
2824 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2825 {
2826 fStatus = FALSE;
2827 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI configuration info to CCM\n" );
2828 }
2829
2830 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS, pConfig->nTeleBcnTransLiNumIdleBeacons,
2831 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2832 {
2833 fStatus = FALSE;
2834 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS configuration info to CCM\n" );
2835 }
2836
2837 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS, pConfig->nTeleBcnMaxLiNumIdleBeacons,
2838 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2839 {
2840 fStatus = FALSE;
2841 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS configuration info to CCM\n" );
2842 }
2843
2844 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK, pConfig->rfSettlingTimeUs,
2845 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2846 {
2847 fStatus = FALSE;
2848 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK configuration info to CCM\n" );
2849 }
2850
2851 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD, pConfig->infraStaKeepAlivePeriod,
2852 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2853 {
2854 fStatus = FALSE;
2855 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD configuration info to CCM\n" );
2856 }
2857 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE, pConfig->dynamicPsPollValue,
2858 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2859 {
2860 fStatus = FALSE;
2861 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE configuration info to CCM\n" );
2862 }
2863
2864 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT, pConfig->nNullDataApRespTimeout,
2865 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2866 {
2867 fStatus = FALSE;
2868 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT configuration info to CCM\n" );
2869 }
2870
2871 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD, pConfig->apDataAvailPollPeriodInMs,
2872 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2873 {
2874 fStatus = FALSE;
2875 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD configuration info to CCM\n" );
2876 }
2877#ifdef FEATURE_WLAN_INTEGRATED_SOC
2878 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD, pConfig->FragmentationThreshold,
2879 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
2880 {
2881 fStatus = FALSE;
2882 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD configuration info to CCM\n" );
2883 }
2884 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD, pConfig->RTSThreshold,
2885 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
2886 {
2887 fStatus = FALSE;
2888 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RTS_THRESHOLD configuration info to CCM\n" );
2889 }
2890
2891 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_11D_ENABLED, pConfig->Is11dSupportEnabled,
2892 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
2893 {
2894 fStatus = FALSE;
2895 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_11D_ENABLED configuration info to CCM\n" );
2896 }
2897 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD, pConfig->HeartbeatThresh24,
2898 NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
2899 {
2900 fStatus = FALSE;
2901 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD configuration info to CCM\n" );
2902 }
2903
2904#endif
2905 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD, pConfig->apDataAvailPollPeriodInMs,
2906 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2907 {
2908 fStatus = FALSE;
2909 hddLog(LOGE,"Failure: Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD configuration info to CCM\n" );
2910 }
2911
2912 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_CLOSE_LOOP,
2913 pConfig->enableCloseLoop, NULL, eANI_BOOLEAN_FALSE)
2914 ==eHAL_STATUS_FAILURE)
2915 {
2916 fStatus = FALSE;
2917 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_CLOSE_LOOP to CCM\n");
2918 }
2919
2920 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TX_PWR_CTRL_ENABLE,
2921 pConfig->enableAutomaticTxPowerControl, NULL, eANI_BOOLEAN_FALSE)
2922 ==eHAL_STATUS_FAILURE)
2923 {
2924 fStatus = FALSE;
2925 hddLog(LOGE, "Could not pass on WNI_CFG_TX_PWR_CTRL_ENABLE to CCM\n");
2926 }
2927
2928 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
2929 pConfig->ShortGI40MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2930 {
2931 fStatus = FALSE;
2932 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CCM\n");
2933 }
2934
Jeff Johnsond13512a2012-07-17 11:42:19 -07002935
2936 if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST, pConfig->fEnableMCAddrList,
2937 NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
2938 {
2939 fStatus = FALSE;
2940 hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CCM\n");
2941 }
2942
Jeff Johnsone7245742012-09-05 17:12:55 -07002943#ifdef WLAN_FEATURE_11AC
2944 /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map in the cfg.dat */
2945 /* valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9) */
2946 /* we update only the least significant 2 bits in the corresponding fields */
2947 if( (pConfig->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
2948 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
2949 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac) )
2950 {
2951 {
2952 tANI_U32 temp = 0;
2953
2954 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
2955 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
2956
2957 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
2958 temp, NULL, eANI_BOOLEAN_FALSE)
2959 ==eHAL_STATUS_FAILURE)
2960 {
2961 fStatus = FALSE;
2962 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CCM\n");
2963 }
2964
2965 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
2966 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
2967
2968 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
2969 temp, NULL, eANI_BOOLEAN_FALSE)
2970 ==eHAL_STATUS_FAILURE)
2971 {
2972 fStatus = FALSE;
2973 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CCM\n");
2974 }
2975
2976 ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
2977 temp = (temp & 0xFFFC) | pConfig->vhtTxMCS;
2978
2979 if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
2980 temp, NULL, eANI_BOOLEAN_FALSE)
2981 ==eHAL_STATUS_FAILURE)
2982 {
2983 fStatus = FALSE;
2984 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CCM\n");
2985 }
2986 }
2987 }
2988#endif
2989
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 return fStatus;
2991}
2992
2993
2994/**---------------------------------------------------------------------------
2995
2996 \brief hdd_init_set_sme_config() -
2997
2998 This function initializes the sme configuration parameters
2999
3000 \param - pHddCtx - Pointer to the HDD Adapter.
3001
3002 \return - 0 for success, non zero for failure
3003
3004 --------------------------------------------------------------------------*/
3005
3006VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
3007{
3008 VOS_STATUS status = VOS_STATUS_SUCCESS;
3009 eHalStatus halStatus;
3010 tSmeConfigParams smeConfig;
3011
3012 hdd_config_t *pConfig = pHddCtx->cfg_ini;
3013
3014 vos_mem_zero( &smeConfig, sizeof( smeConfig ) );
3015
3016 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
3017 "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d\n", __func__,
3018 pConfig->WmmMode, pConfig->b80211eIsEnabled, pConfig->dot11Mode);
3019
3020 // Config params obtained from the registry
Madan Mohan Koyyalamudic3a240c2012-09-28 15:34:08 -07003021 if (is_crda_regulatory_entry_valid() == VOS_TRUE)
3022 sme_setRegInfo(pHddCtx->hHal, pConfig->crdaDefaultCountryCode);
Jeff Johnson295189b2012-06-20 16:38:30 -07003023 smeConfig.csrConfig.RTSThreshold = pConfig->RTSThreshold;
3024 smeConfig.csrConfig.FragmentationThreshold = pConfig->FragmentationThreshold;
3025 smeConfig.csrConfig.shortSlotTime = pConfig->ShortSlotTimeEnabled;
3026 smeConfig.csrConfig.Is11dSupportEnabled = pConfig->Is11dSupportEnabled;
3027 smeConfig.csrConfig.HeartbeatThresh24 = pConfig->HeartbeatThresh24;
3028
3029 smeConfig.csrConfig.phyMode = hdd_cfg_xlate_to_csr_phy_mode ( pConfig->dot11Mode );
3030
3031 smeConfig.csrConfig.channelBondingMode24GHz = pConfig->nChannelBondingMode24GHz;
3032 smeConfig.csrConfig.channelBondingMode5GHz = pConfig->nChannelBondingMode5GHz;
3033 smeConfig.csrConfig.TxRate = pConfig->TxRate;
3034 smeConfig.csrConfig.nScanResultAgeCount = pConfig->ScanResultAgeCount;
3035 smeConfig.csrConfig.scanAgeTimeNCNPS = pConfig->nScanAgeTimeNCNPS;
3036 smeConfig.csrConfig.scanAgeTimeNCPS = pConfig->nScanAgeTimeNCPS;
3037 smeConfig.csrConfig.scanAgeTimeCNPS = pConfig->nScanAgeTimeCNPS;
3038 smeConfig.csrConfig.scanAgeTimeCPS = pConfig->nScanAgeTimeCPS;
3039 smeConfig.csrConfig.AdHocChannel24 = pConfig->OperatingChannel;
3040 smeConfig.csrConfig.fEnforce11dChannels = pConfig->fEnforce11dChannels;
3041 smeConfig.csrConfig.fSupplicantCountryCodeHasPriority = pConfig->fSupplicantCountryCodeHasPriority;
3042 smeConfig.csrConfig.fEnforceCountryCodeMatch = pConfig->fEnforceCountryCodeMatch;
3043 smeConfig.csrConfig.fEnforceDefaultDomain = pConfig->fEnforceDefaultDomain;
3044 smeConfig.csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
3045 smeConfig.csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
3046 smeConfig.csrConfig.vccUlMacLossThreshold = pConfig->nVccUlMacLossThreshold;
3047 smeConfig.csrConfig.nRoamingTime = pConfig->nRoamingTime;
3048 smeConfig.csrConfig.IsIdleScanEnabled = pConfig->nEnableIdleScan;
3049 smeConfig.csrConfig.nActiveMaxChnTime = pConfig->nActiveMaxChnTime;
3050 smeConfig.csrConfig.nActiveMinChnTime = pConfig->nActiveMinChnTime;
3051 smeConfig.csrConfig.nPassiveMaxChnTime = pConfig->nPassiveMaxChnTime;
3052 smeConfig.csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
3053 smeConfig.csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
3054 smeConfig.csrConfig.WMMSupportMode = pConfig->WmmMode;
3055
3056#if defined WLAN_FEATURE_VOWIFI
3057 smeConfig.rrmConfig.rrmEnabled = pConfig->fRrmEnable;
3058 smeConfig.rrmConfig.maxRandnInterval = pConfig->nRrmRandnIntvl;
3059#endif
3060 //Remaining config params not obtained from registry
3061 // On RF EVB beacon using channel 1.
Jeff Johnsone7245742012-09-05 17:12:55 -07003062#ifdef WLAN_FEATURE_11AC
3063 smeConfig.csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
3064#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 smeConfig.csrConfig.AdHocChannel5G = 44;
3066 smeConfig.csrConfig.ProprietaryRatesEnabled = 0;
3067 smeConfig.csrConfig.HeartbeatThresh50 = 40;
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 smeConfig.csrConfig.Is11hSupportEnabled = 1;
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 smeConfig.csrConfig.bandCapability = pConfig->nBandCapability;
3070 smeConfig.csrConfig.cbChoice = 0;
3071 smeConfig.csrConfig.bgScanInterval = 0;
3072 smeConfig.csrConfig.eBand = pConfig->nBandCapability;
3073 smeConfig.csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
3074 smeConfig.csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
3075 smeConfig.csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 smeConfig.csrConfig.fFirstScanOnly2GChnl = pConfig->enableFirstScan2GOnly;
3077
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 //FIXME 11d config is hardcoded
3079#ifdef WLAN_SOFTAP_FEATURE
3080 if ( VOS_STA_SAP_MODE != hdd_get_conparam()){
3081#endif
3082 smeConfig.csrConfig.Csr11dinfo.Channels.numChannels = 0;
3083
3084 //if there is a requirement that HDD will control the default channel list &
3085 //country code (say from .ini file) we need to add some logic here. Otherwise
3086 //the default 11d info should come from NV as per our current implementation
3087
3088#ifdef WLAN_SOFTAP_FEATURE
3089 }
3090 else{
3091
3092 VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
3093 "AP country Code %s", pConfig->apCntryCode);
3094
3095 if (memcmp(pConfig->apCntryCode, CFG_AP_COUNTRY_CODE_DEFAULT, 3) != 0)
3096 sme_setRegInfo(pHddCtx->hHal, pConfig->apCntryCode);
3097 sme_set11dinfo(pHddCtx->hHal, &smeConfig);
3098 }
3099#endif
3100 hdd_set_power_save_config(pHddCtx, &smeConfig);
3101 hdd_set_btc_config(pHddCtx);
3102
3103#ifdef WLAN_FEATURE_VOWIFI_11R
3104 smeConfig.csrConfig.csr11rConfig.IsFTResourceReqSupported = pConfig->fFTResourceReqSupported;
3105#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07003106#ifdef FEATURE_WLAN_LFR
3107 smeConfig.csrConfig.isFastRoamIniFeatureEnabled = pConfig->isFastRoamIniFeatureEnabled;
3108#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07003109#ifdef FEATURE_WLAN_CCX
3110 smeConfig.csrConfig.isCcxIniFeatureEnabled = pConfig->isCcxIniFeatureEnabled;
3111#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -07003112#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 smeConfig.csrConfig.isFastTransitionEnabled = pConfig->isFastTransitionEnabled;
Jeff Johnson43971f52012-07-17 12:26:56 -07003114 smeConfig.csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
Jeff Johnson295189b2012-06-20 16:38:30 -07003115#endif
3116
3117#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
3118 smeConfig.csrConfig.neighborRoamConfig.nNeighborReassocRssiThreshold = pConfig->nNeighborReassocRssiThreshold;
3119 smeConfig.csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold = pConfig->nNeighborLookupRssiThreshold;
3120 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime = pConfig->nNeighborScanMaxChanTime;
3121 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanMinChanTime = pConfig->nNeighborScanMinChanTime;
3122 smeConfig.csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod = pConfig->nNeighborScanPeriod;
3123 smeConfig.csrConfig.neighborRoamConfig.nMaxNeighborRetries = pConfig->nMaxNeighborReqTries;
3124 smeConfig.csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod = pConfig->nNeighborResultsRefreshPeriod;
3125 hdd_string_to_u8_array( pConfig->neighborScanChanList,
3126 smeConfig.csrConfig.neighborRoamConfig.neighborScanChanList.channelList,
3127 &smeConfig.csrConfig.neighborRoamConfig.neighborScanChanList.numChannels,
3128 WNI_CFG_VALID_CHANNEL_LIST_LEN );
3129#endif
3130
3131 smeConfig.csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
3132 smeConfig.csrConfig.fValidateList = pConfig->fValidateScanList;
3133
3134 //Enable/Disable MCC
3135 smeConfig.csrConfig.fEnableMCCMode = pConfig->enableMCC;
Mohit Khanna7ed53f02012-09-11 17:52:10 -07003136 smeConfig.csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
Jeff Johnson295189b2012-06-20 16:38:30 -07003137
3138 halStatus = sme_UpdateConfig( pHddCtx->hHal, &smeConfig);
3139 if ( !HAL_STATUS_SUCCESS( halStatus ) )
3140 {
3141 status = VOS_STATUS_E_FAILURE;
3142 }
3143
3144
3145 return status;
3146}
3147
3148
3149/**---------------------------------------------------------------------------
3150
3151 \brief hdd_execute_config_command() -
3152
3153 This function executes an arbitrary configuration set command
3154
3155 \param - pHddCtx - Pointer to the HDD Adapter.
3156 \parmm - command - a configuration command of the form:
3157 <name>=<value>
3158
3159 \return - 0 for success, non zero for failure
3160
3161 --------------------------------------------------------------------------*/
3162
3163VOS_STATUS hdd_execute_config_command(hdd_context_t *pHddCtx, char *command)
3164{
3165 size_t tableSize = sizeof(g_registry_table)/sizeof(g_registry_table[0]);
3166 REG_TABLE_ENTRY *pRegEntry;
3167 char *clone;
3168 char *pCmd;
3169 void *pField;
3170 char *name;
3171 char *value_str;
3172 v_U32_t value;
3173 v_S31_t svalue;
3174 size_t len_value_str;
3175 unsigned int idx;
3176 unsigned int i;
3177 VOS_STATUS vstatus;
3178
3179 // assume failure until proven otherwise
3180 vstatus = VOS_STATUS_E_FAILURE;
3181
3182 // clone the command so that we can manipulate it
3183 clone = kstrdup(command, GFP_ATOMIC);
3184 if (NULL == clone)
3185 {
3186 hddLog(LOGE, "%s: memory allocation failure, unable to process [%s]",
3187 __FUNCTION__, command);
3188 return vstatus;
3189 }
3190
3191 // 'clone' will point to the beginning of the string so it can be freed
3192 // 'pCmd' will be used to walk/parse the command
3193 pCmd = clone;
3194
3195 // get rid of leading/trailing whitespace
3196 pCmd = i_trim(pCmd);
3197 if ('\0' == *pCmd)
3198 {
3199 // only whitespace
3200 hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
3201 __FUNCTION__, command);
3202 goto done;
3203 }
3204
3205 // parse the <name> = <value>
3206 name = pCmd;
3207 while (('=' != *pCmd) && ('\0' != *pCmd))
3208 {
3209 pCmd++;
3210 }
3211 if ('\0' == *pCmd)
3212 {
3213 // did not find '='
3214 hddLog(LOGE, "%s: invalid command, no '=':[%s]",
3215 __FUNCTION__, command);
3216 goto done;
3217 }
3218
3219 // replace '=' with NUL to terminate the <name>
3220 *pCmd++ = '\0';
3221 name = i_trim(name);
3222 if ('\0' == *name)
3223 {
3224 // did not find a name
3225 hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
3226 __FUNCTION__, command);
3227 goto done;
3228 }
3229
3230 value_str = i_trim(pCmd);
3231 if ('\0' == *value_str)
3232 {
3233 // did not find a value
3234 hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
3235 __FUNCTION__, command);
3236 goto done;
3237 }
3238
3239 // lookup the configuration item
3240 for (idx = 0; idx < tableSize; idx++)
3241 {
3242 if (0 == strcmp(name, g_registry_table[idx].RegName))
3243 {
3244 // found a match
3245 break;
3246 }
3247 }
3248 if (tableSize == idx)
3249 {
3250 // did not match the name
3251 hddLog(LOGE, "%s: invalid command, unknown configuration item:[%s]",
3252 __FUNCTION__, command);
3253 goto done;
3254 }
3255
3256 pRegEntry = &g_registry_table[idx];
3257 if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG))
3258 {
3259 // does not support dynamic configuration
3260 hddLog(LOGE, "%s: invalid command, %s does not support "
3261 "dynamic configuration", __FUNCTION__, name);
3262 goto done;
3263 }
3264
3265 pField = ((v_U8_t *)pHddCtx->cfg_ini) + pRegEntry->VarOffset;
3266
3267 switch (pRegEntry->RegType)
3268 {
3269 case WLAN_PARAM_Integer:
3270 value = simple_strtoul(value_str, NULL, 10);
3271 if (value < pRegEntry->VarMin)
3272 {
3273 // out of range
3274 hddLog(LOGE, "%s: invalid command, value %u < min value %u",
3275 __FUNCTION__, value, pRegEntry->VarMin);
3276 goto done;
3277 }
3278 if (value > pRegEntry->VarMax)
3279 {
3280 // out of range
3281 hddLog(LOGE, "%s: invalid command, value %u > max value %u",
3282 __FUNCTION__, value, pRegEntry->VarMax);
3283 goto done;
3284 }
3285 memcpy(pField, &value, pRegEntry->VarSize);
3286 break;
3287
3288 case WLAN_PARAM_HexInteger:
3289 value = simple_strtoul(value_str, NULL, 16);
3290 if (value < pRegEntry->VarMin)
3291 {
3292 // out of range
3293 hddLog(LOGE, "%s: invalid command, value %x < min value %x",
3294 __FUNCTION__, value, pRegEntry->VarMin);
3295 goto done;
3296 }
3297 if (value > pRegEntry->VarMax)
3298 {
3299 // out of range
3300 hddLog(LOGE, "%s: invalid command, value %x > max value %x",
3301 __FUNCTION__, value, pRegEntry->VarMax);
3302 goto done;
3303 }
3304 memcpy(pField, &value, pRegEntry->VarSize);
3305 break;
3306
3307 case WLAN_PARAM_SignedInteger:
3308 svalue = simple_strtol(value_str, NULL, 10);
3309 if (svalue < (v_S31_t)pRegEntry->VarMin)
3310 {
3311 // out of range
3312 hddLog(LOGE, "%s: invalid command, value %d < min value %d",
3313 __FUNCTION__, svalue, (int)pRegEntry->VarMin);
3314 goto done;
3315 }
3316 if (svalue > (v_S31_t)pRegEntry->VarMax)
3317 {
3318 // out of range
3319 hddLog(LOGE, "%s: invalid command, value %d > max value %d",
3320 __FUNCTION__, svalue, (int)pRegEntry->VarMax);
3321 goto done;
3322 }
3323 memcpy(pField, &svalue, pRegEntry->VarSize);
3324 break;
3325
3326 case WLAN_PARAM_String:
3327 len_value_str = strlen(value_str);
3328 if (len_value_str > (pRegEntry->VarSize - 1))
3329 {
3330 // too big
3331 hddLog(LOGE,
3332 "%s: invalid command, string [%s] length "
3333 "%u exceeds maximum length %u",
3334 __FUNCTION__, value_str,
3335 len_value_str, (pRegEntry->VarSize - 1));
3336 goto done;
3337 }
3338 // copy string plus NUL
3339 memcpy(pField, value_str, (len_value_str + 1));
3340 break;
3341
3342 case WLAN_PARAM_MacAddr:
3343 len_value_str = strlen(value_str);
3344 if (len_value_str != (VOS_MAC_ADDR_SIZE * 2))
3345 {
3346 // out of range
3347 hddLog(LOGE,
3348 "%s: invalid command, MAC address [%s] length "
3349 "%u is not expected length %u",
3350 __FUNCTION__, value_str,
3351 len_value_str, (VOS_MAC_ADDR_SIZE * 2));
3352 goto done;
3353 }
3354 //parse the string and store it in the byte array
3355 for (i = 0; i < VOS_MAC_ADDR_SIZE; i++)
3356 {
3357 ((char*)pField)[i] = (char)
3358 ((parseHexDigit(value_str[(i * 2)]) * 16) +
3359 parseHexDigit(value_str[(i * 2) + 1]));
3360 }
3361 break;
3362
3363 default:
3364 goto done;
3365 }
3366
3367 // if we get here, we had a successful modification
3368 vstatus = VOS_STATUS_SUCCESS;
3369
3370 // config table has been modified, is there a notifier?
3371 if (NULL != pRegEntry->pfnDynamicNotify)
3372 {
3373 (pRegEntry->pfnDynamicNotify)(pHddCtx, pRegEntry->NotifyId);
3374 }
3375
3376 // note that this item was explicitly configured
3377 if (idx < MAX_CFG_INI_ITEMS)
3378 {
3379 set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
3380 }
3381 done:
3382 kfree(clone);
3383 return vstatus;
3384}