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