blob: b776f6396965159d5cd3992c481383c1b0cf6549 [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
Prashanth Bhatta9e143052015-12-04 11:56:47 -08002 * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003 *
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 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28/**
29 * DOC: wlan_hdd_cfg.c
30 *
31 * WLAN Host Device Driver configuration interface implementation
32 */
33
34/* Include Files */
35
36#include <linux/firmware.h>
37#include <linux/string.h>
38#include <wlan_hdd_includes.h>
39#include <wlan_hdd_main.h>
40#include <wlan_hdd_assoc.h>
41#include <wlan_hdd_cfg.h>
42#include <linux/string.h>
Anurag Chouhan6d760662016-02-20 16:05:43 +053043#include <qdf_types.h>
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080044#include <csr_api.h>
45#include <wlan_hdd_misc.h>
46#include <wlan_hdd_napi.h>
47
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080048static void
49cb_notify_set_roam_prefer5_g_hz(hdd_context_t *pHddCtx, unsigned long notifyId)
50{
51 sme_update_roam_prefer5_g_hz(pHddCtx->hHal,
52 pHddCtx->config->nRoamPrefer5GHz);
53}
54
55static void
56cb_notify_set_roam_rssi_diff(hdd_context_t *pHddCtx, unsigned long notifyId)
57{
58 sme_update_roam_rssi_diff(pHddCtx->hHal,
59 0, pHddCtx->config->RoamRssiDiff);
60}
61
62static void
63cb_notify_set_fast_transition_enabled(hdd_context_t *pHddCtx,
64 unsigned long notifyId)
65{
66 sme_update_fast_transition_enabled(pHddCtx->hHal,
67 pHddCtx->config->
68 isFastTransitionEnabled);
69}
70
71static void
72cb_notify_set_roam_intra_band(hdd_context_t *pHddCtx, unsigned long notifyId)
73{
74 sme_set_roam_intra_band(pHddCtx->hHal, pHddCtx->config->nRoamIntraBand);
75}
76
77static void cb_notify_set_wes_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
78{
79 /* At the point this routine is called, the value in the hdd config
80 table has already been updated */
81 sme_update_wes_mode(pHddCtx->hHal, pHddCtx->config->isWESModeEnabled, 0);
82}
83
84static void
85cb_notify_set_roam_scan_n_probes(hdd_context_t *pHddCtx, unsigned long notifyId)
86{
87 sme_update_roam_scan_n_probes(pHddCtx->hHal, 0, pHddCtx->config->nProbes);
88}
89
90static void
91cb_notify_set_roam_scan_home_away_time(hdd_context_t *pHddCtx, unsigned long notifyId)
92{
93 sme_update_roam_scan_home_away_time(pHddCtx->hHal, 0,
94 pHddCtx->config->nRoamScanHomeAwayTime,
95 true);
96}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080097
98#ifdef FEATURE_WLAN_OKC
99static void
100cb_notify_set_okc_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
101{
102 /* At the point this routine is called, the value in the hdd config
103 table has already been updated */
104}
105#endif
106
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800107static void
108notify_is_fast_roam_ini_feature_enabled(hdd_context_t *pHddCtx,
109 unsigned long notifyId)
110{
111 /* At the point this routine is called, the value in the hdd config
112 table has already been updated */
113 sme_update_is_fast_roam_ini_feature_enabled(pHddCtx->hHal, 0,
114 pHddCtx->config->
115 isFastRoamIniFeatureEnabled);
116}
117
118static void
119notify_is_mawc_ini_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
120{
121 /* At the point this routine is called, the value in the hdd config
122 table has already been updated */
123 sme_update_is_mawc_ini_feature_enabled(pHddCtx->hHal,
124 pHddCtx->config->MAWCEnabled);
125}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800126
127#ifdef FEATURE_WLAN_ESE
128static void
129cb_notify_set_ese_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
130{
131 /* At the point this routine is called, the value in the hdd config
132 table has already been updated */
133 sme_update_is_ese_feature_enabled(pHddCtx->hHal, 0,
134 pHddCtx->config->isEseIniFeatureEnabled);
135}
136#endif
137
138static void
139cb_notify_set_fw_rssi_monitoring(hdd_context_t *pHddCtx, unsigned long notifyId)
140{
141 /* At the point this routine is called, the value in the hdd config
142 table has already been updated */
143 sme_update_config_fw_rssi_monitoring(pHddCtx->hHal,
144 pHddCtx->config->
145 fEnableFwRssiMonitoring);
146}
147
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800148static void cb_notify_set_opportunistic_scan_threshold_diff(hdd_context_t *pHddCtx,
149 unsigned long notifyId)
150{
151 /* At the point this routine is called, the value in the hdd config
152 table has already been updated */
153 sme_set_roam_opportunistic_scan_threshold_diff(pHddCtx->hHal, 0,
154 pHddCtx->config->
155 nOpportunisticThresholdDiff);
156}
157
158static void cb_notify_set_roam_rescan_rssi_diff(hdd_context_t *pHddCtx,
159 unsigned long notifyId)
160{
161 /* At the point this routine is called, the value in the hdd config
162 table has already been updated */
163 sme_set_roam_rescan_rssi_diff(pHddCtx->hHal,
164 0, pHddCtx->config->nRoamRescanRssiDiff);
165}
166
167static void
168cb_notify_set_neighbor_lookup_rssi_threshold(hdd_context_t *pHddCtx,
169 unsigned long notifyId)
170{
171 /* At the point this routine is called, the value in the hdd config
172 table has already been updated */
173 sme_set_neighbor_lookup_rssi_threshold(pHddCtx->hHal, 0,
174 pHddCtx->config->
175 nNeighborLookupRssiThreshold);
176}
177
178static void
179cb_notify_set_delay_before_vdev_stop(hdd_context_t *hdd_ctx,
180 unsigned long notify_id)
181{
182 /*
183 * At the point this routine is called, the value in the cfg_ini
184 * table has already been updated
185 */
186 sme_set_delay_before_vdev_stop(hdd_ctx->hHal, 0,
187 hdd_ctx->config->delay_before_vdev_stop);
188}
189
190static void
191cb_notify_set_neighbor_scan_period(hdd_context_t *pHddCtx, unsigned long notifyId)
192{
193 /* At the point this routine is called, the value in the hdd config
194 table has already been updated */
195 sme_set_neighbor_scan_period(pHddCtx->hHal, 0,
196 pHddCtx->config->nNeighborScanPeriod);
197}
198
199static void
200cb_notify_set_neighbor_results_refresh_period(hdd_context_t *pHddCtx,
201 unsigned long notifyId)
202{
203 /* At the point this routine is called, the value in the hdd config
204 table has already been updated */
205 sme_set_neighbor_scan_refresh_period(pHddCtx->hHal, 0,
206 pHddCtx->config->
207 nNeighborResultsRefreshPeriod);
208}
209
210static void
211cb_notify_set_empty_scan_refresh_period(hdd_context_t *pHddCtx,
212 unsigned long notifyId)
213{
214 /* At the point this routine is called, the value in the hdd config
215 table has already been updated */
216 sme_update_empty_scan_refresh_period(pHddCtx->hHal, 0,
217 pHddCtx->config->
218 nEmptyScanRefreshPeriod);
219}
220
221static void
222cb_notify_set_neighbor_scan_min_chan_time(hdd_context_t *pHddCtx,
223 unsigned long notifyId)
224{
225 /* At the point this routine is called, the value in the hdd config
226 table has already been updated */
227 sme_set_neighbor_scan_min_chan_time(pHddCtx->hHal,
228 pHddCtx->config->
229 nNeighborScanMinChanTime, 0);
230}
231
232static void
233cb_notify_set_neighbor_scan_max_chan_time(hdd_context_t *pHddCtx,
234 unsigned long notifyId)
235{
236 sme_set_neighbor_scan_max_chan_time(pHddCtx->hHal, 0,
237 pHddCtx->config->
238 nNeighborScanMaxChanTime);
239}
240
241static void cb_notify_set_roam_bmiss_first_bcnt(hdd_context_t *pHddCtx,
242 unsigned long notifyId)
243{
244 /* At the point this routine is called, the value in the hdd config
245 table has already been updated */
246 sme_set_roam_bmiss_first_bcnt(pHddCtx->hHal,
247 0, pHddCtx->config->nRoamBmissFirstBcnt);
248}
249
250static void cb_notify_set_roam_bmiss_final_bcnt(hdd_context_t *pHddCtx,
251 unsigned long notifyId)
252{
253 sme_set_roam_bmiss_final_bcnt(pHddCtx->hHal, 0,
254 pHddCtx->config->nRoamBmissFinalBcnt);
255}
256
257static void cb_notify_set_roam_beacon_rssi_weight(hdd_context_t *pHddCtx,
258 unsigned long notifyId)
259{
260 sme_set_roam_beacon_rssi_weight(pHddCtx->hHal, 0,
261 pHddCtx->config->nRoamBeaconRssiWeight);
262}
263
264static void
265cb_notify_set_dfs_scan_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
266{
267 /* At the point this routine is called, the value in the hdd config
268 table has already been updated */
269 sme_update_dfs_scan_mode(pHddCtx->hHal, 0,
270 pHddCtx->config->allowDFSChannelRoam);
271}
272
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800273static void cb_notify_set_enable_ssr(hdd_context_t *pHddCtx,
274 unsigned long notifyId)
275{
276 sme_update_enable_ssr(pHddCtx->hHal, pHddCtx->config->enableSSR);
277}
278
279static void cb_notify_set_g_sap_preferred_chan_location(hdd_context_t *pHddCtx,
280 unsigned long notifyId)
281{
282 wlansap_set_dfs_preferred_channel_location(pHddCtx->hHal,
283 pHddCtx->config->
284 gSapPreferredChanLocation);
285}
286static void ch_notify_set_g_disable_dfs_japan_w53(hdd_context_t *pHddCtx,
287 unsigned long notifyId)
288{
289 wlansap_set_dfs_restrict_japan_w53(pHddCtx->hHal,
290 pHddCtx->config->
291 gDisableDfsJapanW53);
292}
293static void
294cb_notify_update_roam_scan_offload_enabled(hdd_context_t *pHddCtx,
295 unsigned long notifyId)
296{
297 sme_update_roam_scan_offload_enabled(pHddCtx->hHal,
298 pHddCtx->config->
299 isRoamOffloadScanEnabled);
300 if (0 == pHddCtx->config->isRoamOffloadScanEnabled) {
301 pHddCtx->config->bFastRoamInConIniFeatureEnabled = 0;
302 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
303 pHddCtx->config->
304 bFastRoamInConIniFeatureEnabled);
305 }
306}
307
308static void
309cb_notify_set_enable_fast_roam_in_concurrency(hdd_context_t *pHddCtx,
310 unsigned long notifyId)
311{
312 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
313 pHddCtx->config->
314 bFastRoamInConIniFeatureEnabled);
315}
316
317/**
318 * cb_notify_set_roam_scan_hi_rssi_scan_params() - configure hi rssi
319 * scan params from cfg to sme.
320 * @hdd_ctx: HDD context data structure
321 * @notify_id: Identifies 1 of the 4 parameters to be modified
322 *
323 * Picks up the value from hdd configuration and passes it to SME.
324 * Return: void
325 */
326
327static void
328cb_notify_set_roam_scan_hi_rssi_scan_params(hdd_context_t *hdd_ctx,
329 unsigned long notify_id)
330{
331 int32_t val;
332
333 if (wlan_hdd_validate_context(hdd_ctx)) {
334 hddLog(LOGE, FL("HDD context is invalid"));
335 return;
336 }
337
338 switch (notify_id) {
339 case eCSR_HI_RSSI_SCAN_MAXCOUNT_ID:
340 val = hdd_ctx->config->nhi_rssi_scan_max_count;
341 break;
342
343 case eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID:
344 val = hdd_ctx->config->nhi_rssi_scan_rssi_delta;
345 break;
346
347 case eCSR_HI_RSSI_SCAN_DELAY_ID:
348 val = hdd_ctx->config->nhi_rssi_scan_delay;
349 break;
350
351 case eCSR_HI_RSSI_SCAN_RSSI_UB_ID:
352 val = hdd_ctx->config->nhi_rssi_scan_rssi_ub;
353 break;
354
355 default:
356 return;
357 }
358
359 sme_update_roam_scan_hi_rssi_scan_params(hdd_ctx->hHal, 0,
360 notify_id, val);
361}
362
363
364REG_TABLE_ENTRY g_registry_table[] = {
365 REG_VARIABLE(CFG_RTS_THRESHOLD_NAME, WLAN_PARAM_Integer,
366 struct hdd_config, RTSThreshold,
367 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
368 CFG_RTS_THRESHOLD_DEFAULT,
369 CFG_RTS_THRESHOLD_MIN,
370 CFG_RTS_THRESHOLD_MAX),
371
372 REG_VARIABLE(CFG_FRAG_THRESHOLD_NAME, WLAN_PARAM_Integer,
373 struct hdd_config, FragmentationThreshold,
374 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
375 CFG_FRAG_THRESHOLD_DEFAULT,
376 CFG_FRAG_THRESHOLD_MIN,
377 CFG_FRAG_THRESHOLD_MAX),
378
379 REG_VARIABLE(CFG_OPERATING_CHANNEL_NAME, WLAN_PARAM_Integer,
380 struct hdd_config, OperatingChannel,
381 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
382 CFG_OPERATING_CHANNEL_DEFAULT,
383 CFG_OPERATING_CHANNEL_MIN,
384 CFG_OPERATING_CHANNEL_MAX),
385
386 REG_VARIABLE(CFG_SHORT_SLOT_TIME_ENABLED_NAME, WLAN_PARAM_Integer,
387 struct hdd_config, ShortSlotTimeEnabled,
388 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
389 CFG_SHORT_SLOT_TIME_ENABLED_DEFAULT,
390 CFG_SHORT_SLOT_TIME_ENABLED_MIN,
391 CFG_SHORT_SLOT_TIME_ENABLED_MAX),
392
393 REG_VARIABLE(CFG_11D_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
394 struct hdd_config, Is11dSupportEnabled,
395 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
396 CFG_11D_SUPPORT_ENABLED_DEFAULT,
397 CFG_11D_SUPPORT_ENABLED_MIN,
398 CFG_11D_SUPPORT_ENABLED_MAX),
399
400 REG_VARIABLE(CFG_11H_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
401 struct hdd_config, Is11hSupportEnabled,
402 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
403 CFG_11H_SUPPORT_ENABLED_DEFAULT,
404 CFG_11H_SUPPORT_ENABLED_MIN,
405 CFG_11H_SUPPORT_ENABLED_MAX),
406
407 REG_VARIABLE(CFG_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
408 struct hdd_config, fSupplicantCountryCodeHasPriority,
409 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
410 CFG_COUNTRY_CODE_PRIORITY_DEFAULT,
411 CFG_COUNTRY_CODE_PRIORITY_MIN,
412 CFG_COUNTRY_CODE_PRIORITY_MAX),
413
414 REG_VARIABLE(CFG_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
415 struct hdd_config, HeartbeatThresh24,
416 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
417 CFG_HEARTBEAT_THRESH_24_DEFAULT,
418 CFG_HEARTBEAT_THRESH_24_MIN,
419 CFG_HEARTBEAT_THRESH_24_MAX),
420
421 REG_VARIABLE_STRING(CFG_POWER_USAGE_NAME, WLAN_PARAM_String,
422 struct hdd_config, PowerUsageControl,
423 VAR_FLAGS_OPTIONAL,
424 (void *)CFG_POWER_USAGE_DEFAULT),
425
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800426 REG_VARIABLE(CFG_ENABLE_IMPS_NAME, WLAN_PARAM_Integer,
427 struct hdd_config, fIsImpsEnabled,
428 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
429 CFG_ENABLE_IMPS_DEFAULT,
430 CFG_ENABLE_IMPS_MIN,
431 CFG_ENABLE_IMPS_MAX),
432
433 REG_VARIABLE(CFG_ENABLE_PS_NAME, WLAN_PARAM_Integer,
434 struct hdd_config, is_ps_enabled,
435 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
436 CFG_ENABLE_PS_DEFAULT,
437 CFG_ENABLE_PS_MIN,
438 CFG_ENABLE_PS_MAX),
439
440 REG_VARIABLE(CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
441 struct hdd_config, nBmpsMinListenInterval,
442 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
443 CFG_BMPS_MINIMUM_LI_DEFAULT,
444 CFG_BMPS_MINIMUM_LI_MIN,
445 CFG_BMPS_MINIMUM_LI_MAX),
446
447 REG_VARIABLE(CFG_BMPS_MAXIMUM_LI_NAME, WLAN_PARAM_Integer,
448 struct hdd_config, nBmpsMaxListenInterval,
449 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
450 CFG_BMPS_MAXIMUM_LI_DEFAULT,
451 CFG_BMPS_MAXIMUM_LI_MIN,
452 CFG_BMPS_MAXIMUM_LI_MAX),
453
454 REG_VARIABLE(CFG_BMPS_MODERATE_LI_NAME, WLAN_PARAM_Integer,
455 struct hdd_config, nBmpsModListenInterval,
456 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
457 CFG_BMPS_MODERATE_LI_DEFAULT,
458 CFG_BMPS_MODERATE_LI_MIN,
459 CFG_BMPS_MODERATE_LI_MAX),
460
461 REG_VARIABLE(CFG_DOT11_MODE_NAME, WLAN_PARAM_Integer,
462 struct hdd_config, dot11Mode,
463 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
464 CFG_DOT11_MODE_DEFAULT,
465 CFG_DOT11_MODE_MIN,
466 CFG_DOT11_MODE_MAX),
467
468 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_24GHZ_NAME, WLAN_PARAM_Integer,
469 struct hdd_config, nChannelBondingMode24GHz,
470 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
471 CFG_CHANNEL_BONDING_MODE_DEFAULT,
472 CFG_CHANNEL_BONDING_MODE_MIN,
473 CFG_CHANNEL_BONDING_MODE_MAX),
474
475 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
476 struct hdd_config, nChannelBondingMode5GHz,
477 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
478 CFG_CHANNEL_BONDING_MODE_DEFAULT,
479 CFG_CHANNEL_BONDING_MODE_MIN,
480 CFG_CHANNEL_BONDING_MODE_MAX),
481
482 REG_VARIABLE(CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
483 struct hdd_config, MaxRxAmpduFactor,
484 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
485 CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
486 CFG_MAX_RX_AMPDU_FACTOR_MIN,
487 CFG_MAX_RX_AMPDU_FACTOR_MAX),
488
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -0800489 REG_VARIABLE(CFG_HT_MPDU_DENSITY_NAME, WLAN_PARAM_Integer,
490 struct hdd_config, ht_mpdu_density,
491 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
492 CFG_HT_MPDU_DENSITY_DEFAULT,
493 CFG_HT_MPDU_DENSITY_MIN,
494 CFG_HT_MPDU_DENSITY_MAX),
495
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800496 REG_VARIABLE(CFG_FIXED_RATE_NAME, WLAN_PARAM_Integer,
497 struct hdd_config, TxRate,
498 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
499 CFG_FIXED_RATE_DEFAULT,
500 CFG_FIXED_RATE_MIN,
501 CFG_FIXED_RATE_MAX),
502
503 REG_VARIABLE(CFG_SHORT_GI_20MHZ_NAME, WLAN_PARAM_Integer,
504 struct hdd_config, ShortGI20MhzEnable,
505 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
506 CFG_SHORT_GI_20MHZ_DEFAULT,
507 CFG_SHORT_GI_20MHZ_MIN,
508 CFG_SHORT_GI_20MHZ_MAX),
509
510 REG_VARIABLE(CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
511 struct hdd_config, ScanResultAgeCount,
512 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
513 CFG_SCAN_RESULT_AGE_COUNT_DEFAULT,
514 CFG_SCAN_RESULT_AGE_COUNT_MIN,
515 CFG_SCAN_RESULT_AGE_COUNT_MAX),
516
517 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCNPS_NAME, WLAN_PARAM_Integer,
518 struct hdd_config, nScanAgeTimeNCNPS,
519 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
520 CFG_SCAN_RESULT_AGE_TIME_NCNPS_DEFAULT,
521 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MIN,
522 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MAX),
523
524 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCPS_NAME, WLAN_PARAM_Integer,
525 struct hdd_config, nScanAgeTimeNCPS,
526 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
527 CFG_SCAN_RESULT_AGE_TIME_NCPS_DEFAULT,
528 CFG_SCAN_RESULT_AGE_TIME_NCPS_MIN,
529 CFG_SCAN_RESULT_AGE_TIME_NCPS_MAX),
530
531 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CNPS_NAME, WLAN_PARAM_Integer,
532 struct hdd_config, nScanAgeTimeCNPS,
533 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
534 CFG_SCAN_RESULT_AGE_TIME_CNPS_DEFAULT,
535 CFG_SCAN_RESULT_AGE_TIME_CNPS_MIN,
536 CFG_SCAN_RESULT_AGE_TIME_CNPS_MAX),
537
538 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CPS_NAME, WLAN_PARAM_Integer,
539 struct hdd_config, nScanAgeTimeCPS,
540 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
541 CFG_SCAN_RESULT_AGE_TIME_CPS_DEFAULT,
542 CFG_SCAN_RESULT_AGE_TIME_CPS_MIN,
543 CFG_SCAN_RESULT_AGE_TIME_CPS_MAX),
544
545 REG_VARIABLE(CFG_RSSI_CATEGORY_GAP_NAME, WLAN_PARAM_Integer,
546 struct hdd_config, nRssiCatGap,
547 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
548 CFG_RSSI_CATEGORY_GAP_DEFAULT,
549 CFG_RSSI_CATEGORY_GAP_MIN,
550 CFG_RSSI_CATEGORY_GAP_MAX),
551
552 REG_VARIABLE(CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
553 struct hdd_config, fIsShortPreamble,
554 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
555 CFG_SHORT_PREAMBLE_DEFAULT,
556 CFG_SHORT_PREAMBLE_MIN,
557 CFG_SHORT_PREAMBLE_MAX),
558
559 REG_VARIABLE_STRING(CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
560 struct hdd_config, IbssBssid,
561 VAR_FLAGS_OPTIONAL,
562 (void *)CFG_IBSS_BSSID_DEFAULT),
563
564 REG_VARIABLE_STRING(CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
565 struct hdd_config, intfMacAddr[0],
566 VAR_FLAGS_OPTIONAL,
567 (void *)CFG_INTF0_MAC_ADDR_DEFAULT),
568
569 REG_VARIABLE_STRING(CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
570 struct hdd_config, intfMacAddr[1],
571 VAR_FLAGS_OPTIONAL,
572 (void *)CFG_INTF1_MAC_ADDR_DEFAULT),
573
574 REG_VARIABLE_STRING(CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
575 struct hdd_config, intfMacAddr[2],
576 VAR_FLAGS_OPTIONAL,
577 (void *)CFG_INTF2_MAC_ADDR_DEFAULT),
578
579 REG_VARIABLE_STRING(CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
580 struct hdd_config, intfMacAddr[3],
581 VAR_FLAGS_OPTIONAL,
582 (void *)CFG_INTF3_MAC_ADDR_DEFAULT),
583
584 REG_VARIABLE(CFG_AP_QOS_UAPSD_MODE_NAME, WLAN_PARAM_Integer,
585 struct hdd_config, apUapsdEnabled,
586 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
587 CFG_AP_QOS_UAPSD_MODE_DEFAULT,
588 CFG_AP_QOS_UAPSD_MODE_MIN,
589 CFG_AP_QOS_UAPSD_MODE_MAX),
590
591
592 REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
593 struct hdd_config, apRandomBssidEnabled,
594 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
595 CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT,
596 CFG_AP_ENABLE_RANDOM_BSSID_MIN,
597 CFG_AP_ENABLE_RANDOM_BSSID_MAX),
598
599 REG_VARIABLE(CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
600 struct hdd_config, apProtEnabled,
601 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
602 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
603 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
604 CFG_AP_ENABLE_PROTECTION_MODE_MAX),
605
606 REG_VARIABLE(CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
607 struct hdd_config, apProtection,
608 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
609 CFG_AP_PROTECTION_MODE_DEFAULT,
610 CFG_AP_PROTECTION_MODE_MIN,
611 CFG_AP_PROTECTION_MODE_MAX),
612
613 REG_VARIABLE(CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
614 struct hdd_config, apOBSSProtEnabled,
615 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
616 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
617 CFG_AP_OBSS_PROTECTION_MODE_MIN,
618 CFG_AP_OBSS_PROTECTION_MODE_MAX),
619
620 REG_VARIABLE(CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
621 struct hdd_config, apDisableIntraBssFwd,
622 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
623 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
624 CFG_AP_STA_SECURITY_SEPERATION_MIN,
625 CFG_AP_STA_SECURITY_SEPERATION_MAX),
626
627 REG_VARIABLE(CFG_ENABLE_LTE_COEX, WLAN_PARAM_Integer,
628 struct hdd_config, enableLTECoex,
629 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
630 CFG_ENABLE_LTE_COEX_DEFAULT,
631 CFG_ENABLE_LTE_COEX_MIN,
632 CFG_ENABLE_LTE_COEX_MAX),
633 REG_VARIABLE(CFG_FORCE_SAP_ACS, WLAN_PARAM_Integer,
634 struct hdd_config, force_sap_acs,
635 VAR_FLAGS_DYNAMIC_CFG |
636 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
637 CFG_FORCE_SAP_ACS_DEFAULT,
638 CFG_FORCE_SAP_ACS_MIN,
639 CFG_FORCE_SAP_ACS_MAX),
640
641 REG_VARIABLE(CFG_FORCE_SAP_ACS_START_CH, WLAN_PARAM_Integer,
642 struct hdd_config, force_sap_acs_st_ch,
643 VAR_FLAGS_DYNAMIC_CFG |
644 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
645 CFG_FORCE_SAP_ACS_START_CH_DEFAULT,
646 CFG_FORCE_SAP_ACS_START_CH_MIN,
647 CFG_FORCE_SAP_ACS_START_CH_MAX),
648
649 REG_VARIABLE(CFG_FORCE_SAP_ACS_END_CH, WLAN_PARAM_Integer,
650 struct hdd_config, force_sap_acs_end_ch,
651 VAR_FLAGS_DYNAMIC_CFG |
652 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
653 CFG_FORCE_SAP_ACS_END_CH_DEFAULT,
654 CFG_FORCE_SAP_ACS_END_CH_MIN,
655 CFG_FORCE_SAP_ACS_END_CH_MAX),
656
657 REG_VARIABLE(CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
658 struct hdd_config, apKeepAlivePeriod,
659 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
660 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
661 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
662 CFG_AP_KEEP_ALIVE_PERIOD_MAX),
663
664 REG_VARIABLE(CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
665 struct hdd_config, goKeepAlivePeriod,
666 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
667 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
668 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
669 CFG_GO_KEEP_ALIVE_PERIOD_MAX),
670
671 REG_VARIABLE(CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
672 struct hdd_config, apLinkMonitorPeriod,
673 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
674 CFG_AP_LINK_MONITOR_PERIOD_DEFAULT,
675 CFG_AP_LINK_MONITOR_PERIOD_MIN,
676 CFG_AP_LINK_MONITOR_PERIOD_MAX),
677
678 REG_VARIABLE(CFG_GO_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
679 struct hdd_config, goLinkMonitorPeriod,
680 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
681 CFG_GO_LINK_MONITOR_PERIOD_DEFAULT,
682 CFG_GO_LINK_MONITOR_PERIOD_MIN,
683 CFG_GO_LINK_MONITOR_PERIOD_MAX),
684
685 REG_VARIABLE(CFG_DISABLE_PACKET_FILTER, WLAN_PARAM_Integer,
686 struct hdd_config, disablePacketFilter,
687 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
688 CFG_DISABLE_PACKET_FILTER_DEFAULT,
689 CFG_DISABLE_PACKET_FILTER_MIN,
690 CFG_DISABLE_PACKET_FILTER_MAX),
691
692 REG_VARIABLE(CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
693 struct hdd_config, nBeaconInterval,
694 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
695 CFG_BEACON_INTERVAL_DEFAULT,
696 CFG_BEACON_INTERVAL_MIN,
697 CFG_BEACON_INTERVAL_MAX),
698
699 REG_VARIABLE(CFG_ROAMING_TIME_NAME, WLAN_PARAM_Integer,
700 struct hdd_config, nRoamingTime,
701 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
702 CFG_ROAMING_TIME_DEFAULT,
703 CFG_ROAMING_TIME_MIN,
704 CFG_ROAMING_TIME_MAX),
705
706 REG_VARIABLE(CFG_VCC_RSSI_TRIGGER_NAME, WLAN_PARAM_Integer,
707 struct hdd_config, nVccRssiTrigger,
708 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
709 CFG_VCC_RSSI_TRIGGER_DEFAULT,
710 CFG_VCC_RSSI_TRIGGER_MIN,
711 CFG_VCC_RSSI_TRIGGER_MAX),
712
713 REG_VARIABLE(CFG_VCC_UL_MAC_LOSS_THRESH_NAME, WLAN_PARAM_Integer,
714 struct hdd_config, nVccUlMacLossThreshold,
715 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
716 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
717 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
718 CFG_VCC_UL_MAC_LOSS_THRESH_MAX),
719
720 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
721 struct hdd_config, nPassiveMaxChnTime,
722 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
723 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
724 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
725 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX),
726
727 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
728 struct hdd_config, nPassiveMinChnTime,
729 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
730 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
731 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
732 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX),
733
734 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
735 struct hdd_config, nActiveMaxChnTime,
736 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
737 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
738 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
739 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX),
740
741 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
742 struct hdd_config, nActiveMinChnTime,
743 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
744 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
745 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
746 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX),
747
748 REG_VARIABLE(CFG_RETRY_LIMIT_ZERO_NAME, WLAN_PARAM_Integer,
749 struct hdd_config, retryLimitZero,
750 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
751 CFG_RETRY_LIMIT_ZERO_DEFAULT,
752 CFG_RETRY_LIMIT_ZERO_MIN,
753 CFG_RETRY_LIMIT_ZERO_MAX),
754
755 REG_VARIABLE(CFG_RETRY_LIMIT_ONE_NAME, WLAN_PARAM_Integer,
756 struct hdd_config, retryLimitOne,
757 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
758 CFG_RETRY_LIMIT_ONE_DEFAULT,
759 CFG_RETRY_LIMIT_ONE_MIN,
760 CFG_RETRY_LIMIT_ONE_MAX),
761
762 REG_VARIABLE(CFG_RETRY_LIMIT_TWO_NAME, WLAN_PARAM_Integer,
763 struct hdd_config, retryLimitTwo,
764 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
765 CFG_RETRY_LIMIT_TWO_DEFAULT,
766 CFG_RETRY_LIMIT_TWO_MIN,
767 CFG_RETRY_LIMIT_TWO_MAX),
768
769#ifdef WLAN_AP_STA_CONCURRENCY
770 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
771 struct hdd_config, nPassiveMaxChnTimeConc,
772 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
773 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
774 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MIN,
775 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MAX),
776
777 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
778 struct hdd_config, nPassiveMinChnTimeConc,
779 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
780 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
781 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MIN,
782 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MAX),
783
784 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
785 struct hdd_config, nActiveMaxChnTimeConc,
786 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
787 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
788 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MIN,
789 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MAX),
790
791 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
792 struct hdd_config, nActiveMinChnTimeConc,
793 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
794 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
795 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MIN,
796 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MAX),
797
798 REG_VARIABLE(CFG_REST_TIME_CONC_NAME, WLAN_PARAM_Integer,
799 struct hdd_config, nRestTimeConc,
800 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
801 CFG_REST_TIME_CONC_DEFAULT,
802 CFG_REST_TIME_CONC_MIN,
803 CFG_REST_TIME_CONC_MAX),
804
805 REG_VARIABLE(CFG_NUM_STA_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
806 struct hdd_config, nNumStaChanCombinedConc,
807 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
808 CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT,
809 CFG_NUM_STA_CHAN_COMBINED_CONC_MIN,
810 CFG_NUM_STA_CHAN_COMBINED_CONC_MAX),
811
812 REG_VARIABLE(CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
813 struct hdd_config, nNumP2PChanCombinedConc,
814 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
815 CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT,
816 CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN,
817 CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX),
818#endif
819
820 REG_VARIABLE(CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
821 struct hdd_config, nMaxPsPoll,
822 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
823 CFG_MAX_PS_POLL_DEFAULT,
824 CFG_MAX_PS_POLL_MIN,
825 CFG_MAX_PS_POLL_MAX),
826
827 REG_VARIABLE(CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
828 struct hdd_config, nTxPowerCap,
829 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
830 CFG_MAX_TX_POWER_DEFAULT,
831 CFG_MAX_TX_POWER_MIN,
832 CFG_MAX_TX_POWER_MAX),
833
834 REG_VARIABLE(CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
835 struct hdd_config, fIsLowGainOverride,
836 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
837 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
838 CFG_LOW_GAIN_OVERRIDE_MIN,
839 CFG_LOW_GAIN_OVERRIDE_MAX),
840
841 REG_VARIABLE(CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
842 struct hdd_config, nRssiFilterPeriod,
843 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
844 CFG_RSSI_FILTER_PERIOD_DEFAULT,
845 CFG_RSSI_FILTER_PERIOD_MIN,
846 CFG_RSSI_FILTER_PERIOD_MAX),
847
848 REG_VARIABLE(CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
849 struct hdd_config, fIgnoreDtim,
850 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
851 CFG_IGNORE_DTIM_DEFAULT,
852 CFG_IGNORE_DTIM_MIN,
853 CFG_IGNORE_DTIM_MAX),
854
855 REG_VARIABLE(CFG_MAX_LI_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
856 struct hdd_config, fMaxLIModulatedDTIM,
857 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
858 CFG_MAX_LI_MODULATED_DTIM_DEFAULT,
859 CFG_MAX_LI_MODULATED_DTIM_MIN,
860 CFG_MAX_LI_MODULATED_DTIM_MAX),
861
862 REG_VARIABLE(CFG_RX_ANT_CONFIGURATION_NAME, WLAN_PARAM_Integer,
863 struct hdd_config, nRxAnt,
864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
865 CFG_RX_ANT_CONFIGURATION_NAME_DEFAULT,
866 CFG_RX_ANT_CONFIGURATION_NAME_MIN,
867 CFG_RX_ANT_CONFIGURATION_NAME_MAX),
868
869 REG_VARIABLE(CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
870 struct hdd_config, fEnableFwHeartBeatMonitoring,
871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
872 CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
873 CFG_FW_HEART_BEAT_MONITORING_MIN,
874 CFG_FW_HEART_BEAT_MONITORING_MAX),
875
876 REG_VARIABLE(CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
877 struct hdd_config, fEnableFwBeaconFiltering,
878 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
879 CFG_FW_BEACON_FILTERING_DEFAULT,
880 CFG_FW_BEACON_FILTERING_MIN,
881 CFG_FW_BEACON_FILTERING_MAX),
882
883 REG_DYNAMIC_VARIABLE(CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
884 struct hdd_config, fEnableFwRssiMonitoring,
885 VAR_FLAGS_OPTIONAL |
886 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
887 CFG_FW_RSSI_MONITORING_DEFAULT,
888 CFG_FW_RSSI_MONITORING_MIN,
889 CFG_FW_RSSI_MONITORING_MAX,
890 cb_notify_set_fw_rssi_monitoring, 0),
891
892 REG_VARIABLE(CFG_FW_MCC_RTS_CTS_PROT_NAME, WLAN_PARAM_Integer,
893 struct hdd_config, mcc_rts_cts_prot_enable,
894 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
895 CFG_FW_MCC_RTS_CTS_PROT_DEFAULT,
896 CFG_FW_MCC_RTS_CTS_PROT_MIN,
897 CFG_FW_MCC_RTS_CTS_PROT_MAX),
898
899 REG_VARIABLE(CFG_FW_MCC_BCAST_PROB_RESP_NAME, WLAN_PARAM_Integer,
900 struct hdd_config, mcc_bcast_prob_resp_enable,
901 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
902 CFG_FW_MCC_BCAST_PROB_RESP_DEFAULT,
903 CFG_FW_MCC_BCAST_PROB_RESP_MIN,
904 CFG_FW_MCC_BCAST_PROB_RESP_MAX),
905
906 REG_VARIABLE(CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
907 struct hdd_config, nDataInactivityTimeout,
908 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
909 CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
910 CFG_DATA_INACTIVITY_TIMEOUT_MIN,
911 CFG_DATA_INACTIVITY_TIMEOUT_MAX),
912
913 REG_VARIABLE(CFG_QOS_WMM_MODE_NAME, WLAN_PARAM_Integer,
914 struct hdd_config, WmmMode,
915 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
916 CFG_QOS_WMM_MODE_DEFAULT,
917 CFG_QOS_WMM_MODE_MIN,
918 CFG_QOS_WMM_MODE_MAX),
919
920 REG_VARIABLE(CFG_QOS_WMM_80211E_ENABLED_NAME, WLAN_PARAM_Integer,
921 struct hdd_config, b80211eIsEnabled,
922 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
923 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
924 CFG_QOS_WMM_80211E_ENABLED_MIN,
925 CFG_QOS_WMM_80211E_ENABLED_MAX),
926
927 REG_VARIABLE(CFG_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
928 struct hdd_config, UapsdMask,
929 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
930 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
931 CFG_QOS_WMM_UAPSD_MASK_MIN,
932 CFG_QOS_WMM_UAPSD_MASK_MAX),
933
934 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME,
935 WLAN_PARAM_Integer,
936 struct hdd_config, InfraUapsdVoSrvIntv,
937 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
938 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
939 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
940 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX),
941
942 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME,
943 WLAN_PARAM_Integer,
944 struct hdd_config, InfraUapsdVoSuspIntv,
945 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
946 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
947 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
948 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX),
949
950 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME,
951 WLAN_PARAM_Integer,
952 struct hdd_config, InfraUapsdViSrvIntv,
953 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
954 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
955 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
956 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX),
957
958 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME,
959 WLAN_PARAM_Integer,
960 struct hdd_config, InfraUapsdViSuspIntv,
961 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
962 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
963 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
964 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX),
965
966 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME,
967 WLAN_PARAM_Integer,
968 struct hdd_config, InfraUapsdBeSrvIntv,
969 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
970 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
971 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
972 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX),
973
974 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME,
975 WLAN_PARAM_Integer,
976 struct hdd_config, InfraUapsdBeSuspIntv,
977 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
978 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
979 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
980 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX),
981
982 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME,
983 WLAN_PARAM_Integer,
984 struct hdd_config, InfraUapsdBkSrvIntv,
985 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
986 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
987 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
988 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX),
989
990 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME,
991 WLAN_PARAM_Integer,
992 struct hdd_config, InfraUapsdBkSuspIntv,
993 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
994 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
995 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
996 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX),
997
998#ifdef FEATURE_WLAN_ESE
999 REG_VARIABLE(CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME,
1000 WLAN_PARAM_Integer,
1001 struct hdd_config, InfraInactivityInterval,
1002 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1003 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
1004 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
1005 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
1006
1007 REG_DYNAMIC_VARIABLE(CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1008 struct hdd_config, isEseIniFeatureEnabled,
1009 VAR_FLAGS_OPTIONAL |
1010 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1011 CFG_ESE_FEATURE_ENABLED_DEFAULT,
1012 CFG_ESE_FEATURE_ENABLED_MIN,
1013 CFG_ESE_FEATURE_ENABLED_MAX,
1014 cb_notify_set_ese_feature_enabled, 0),
1015#endif /* FEATURE_WLAN_ESE */
1016
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001017 /* flag to turn ON/OFF Legacy Fast Roaming */
1018 REG_DYNAMIC_VARIABLE(CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1019 struct hdd_config, isFastRoamIniFeatureEnabled,
1020 VAR_FLAGS_OPTIONAL |
1021 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1022 CFG_LFR_FEATURE_ENABLED_DEFAULT,
1023 CFG_LFR_FEATURE_ENABLED_MIN,
1024 CFG_LFR_FEATURE_ENABLED_MAX,
1025 notify_is_fast_roam_ini_feature_enabled, 0),
1026
1027 /* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */
1028 REG_DYNAMIC_VARIABLE(CFG_LFR_MAWC_FEATURE_ENABLED_NAME,
1029 WLAN_PARAM_Integer,
1030 struct hdd_config, MAWCEnabled,
1031 VAR_FLAGS_OPTIONAL |
1032 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1033 CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT,
1034 CFG_LFR_MAWC_FEATURE_ENABLED_MIN,
1035 CFG_LFR_MAWC_FEATURE_ENABLED_MAX,
1036 notify_is_mawc_ini_feature_enabled, 0),
1037
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001038 /* flag to turn ON/OFF 11r and ESE FastTransition */
1039 REG_DYNAMIC_VARIABLE(CFG_FAST_TRANSITION_ENABLED_NAME,
1040 WLAN_PARAM_Integer,
1041 struct hdd_config, isFastTransitionEnabled,
1042 VAR_FLAGS_OPTIONAL |
1043 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1044 CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
1045 CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
1046 CFG_FAST_TRANSITION_ENABLED_NAME_MAX,
1047 cb_notify_set_fast_transition_enabled, 0),
1048
1049 /* Variable to specify the delta/difference between the RSSI of current AP
1050 * and roamable AP while roaming */
1051 REG_DYNAMIC_VARIABLE(CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1052 struct hdd_config, RoamRssiDiff,
1053 VAR_FLAGS_OPTIONAL |
1054 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1055 CFG_ROAM_RSSI_DIFF_DEFAULT,
1056 CFG_ROAM_RSSI_DIFF_MIN,
1057 CFG_ROAM_RSSI_DIFF_MAX,
1058 cb_notify_set_roam_rssi_diff, 0),
1059
1060 REG_DYNAMIC_VARIABLE(CFG_ENABLE_WES_MODE_NAME, WLAN_PARAM_Integer,
1061 struct hdd_config, isWESModeEnabled,
1062 VAR_FLAGS_OPTIONAL |
1063 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1064 CFG_ENABLE_WES_MODE_NAME_DEFAULT,
1065 CFG_ENABLE_WES_MODE_NAME_MIN,
1066 CFG_ENABLE_WES_MODE_NAME_MAX,
1067 cb_notify_set_wes_mode, 0),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001068#ifdef FEATURE_WLAN_OKC
1069 REG_DYNAMIC_VARIABLE(CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1070 struct hdd_config, isOkcIniFeatureEnabled,
1071 VAR_FLAGS_OPTIONAL |
1072 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1073 CFG_OKC_FEATURE_ENABLED_DEFAULT,
1074 CFG_OKC_FEATURE_ENABLED_MIN,
1075 CFG_OKC_FEATURE_ENABLED_MAX,
1076 cb_notify_set_okc_feature_enabled, 0),
1077#endif
1078 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer,
1079 struct hdd_config, isRoamOffloadScanEnabled,
1080 VAR_FLAGS_OPTIONAL |
1081 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1082 CFG_ROAM_SCAN_OFFLOAD_ENABLED_DEFAULT,
1083 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MIN,
1084 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
1085 cb_notify_update_roam_scan_offload_enabled, 0),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001086
1087 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME, WLAN_PARAM_Integer,
1088 struct hdd_config, InfraDirAcVo,
1089 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1090 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
1091 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
1092 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX),
1093
1094 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME,
1095 WLAN_PARAM_HexInteger,
1096 struct hdd_config, InfraNomMsduSizeAcVo,
1097 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1098 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
1099 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
1100 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX),
1101
1102 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME,
1103 WLAN_PARAM_HexInteger,
1104 struct hdd_config, InfraMeanDataRateAcVo,
1105 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1106 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
1107 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
1108 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX),
1109
1110 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME,
1111 WLAN_PARAM_HexInteger,
1112 struct hdd_config, InfraMinPhyRateAcVo,
1113 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1114 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
1115 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
1116 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX),
1117
1118 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME, WLAN_PARAM_HexInteger,
1119 struct hdd_config, InfraSbaAcVo,
1120 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1121 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
1122 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
1123 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX),
1124
1125 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME, WLAN_PARAM_Integer,
1126 struct hdd_config, InfraDirAcVi,
1127 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1128 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
1129 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
1130 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX),
1131
1132 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME,
1133 WLAN_PARAM_HexInteger,
1134 struct hdd_config, InfraNomMsduSizeAcVi,
1135 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1136 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
1137 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
1138 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX),
1139
1140 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME,
1141 WLAN_PARAM_HexInteger,
1142 struct hdd_config, InfraMeanDataRateAcVi,
1143 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1144 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
1145 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
1146 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX),
1147
1148 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME,
1149 WLAN_PARAM_HexInteger,
1150 struct hdd_config, InfraMinPhyRateAcVi,
1151 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1152 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
1153 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
1154 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX),
1155
1156 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME, WLAN_PARAM_HexInteger,
1157 struct hdd_config, InfraSbaAcVi,
1158 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1159 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
1160 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
1161 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX),
1162
1163 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME, WLAN_PARAM_Integer,
1164 struct hdd_config, InfraDirAcBe,
1165 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1166 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
1167 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
1168 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX),
1169
1170 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME,
1171 WLAN_PARAM_HexInteger,
1172 struct hdd_config, InfraNomMsduSizeAcBe,
1173 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1174 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
1175 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
1176 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX),
1177
1178 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME,
1179 WLAN_PARAM_HexInteger,
1180 struct hdd_config, InfraMeanDataRateAcBe,
1181 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1182 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
1183 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
1184 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX),
1185
1186 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME,
1187 WLAN_PARAM_HexInteger,
1188 struct hdd_config, InfraMinPhyRateAcBe,
1189 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1190 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
1191 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
1192 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX),
1193
1194 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME, WLAN_PARAM_HexInteger,
1195 struct hdd_config, InfraSbaAcBe,
1196 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1197 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
1198 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
1199 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX),
1200
1201 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME, WLAN_PARAM_Integer,
1202 struct hdd_config, InfraDirAcBk,
1203 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1204 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
1205 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
1206 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX),
1207
1208 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME,
1209 WLAN_PARAM_HexInteger,
1210 struct hdd_config, InfraNomMsduSizeAcBk,
1211 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1212 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
1213 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
1214 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX),
1215
1216 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME,
1217 WLAN_PARAM_HexInteger,
1218 struct hdd_config, InfraMeanDataRateAcBk,
1219 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1220 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
1221 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
1222 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX),
1223
1224 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME,
1225 WLAN_PARAM_HexInteger,
1226 struct hdd_config, InfraMinPhyRateAcBk,
1227 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1228 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
1229 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
1230 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX),
1231
1232 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME, WLAN_PARAM_HexInteger,
1233 struct hdd_config, InfraSbaAcBk,
1234 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1235 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
1236 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
1237 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX),
1238
1239 REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer,
1240 struct hdd_config, DelayedTriggerFrmInt,
1241 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1242 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
1243 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
1244 CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
1245
1246 REG_VARIABLE_STRING(CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
1247 struct hdd_config, wowlPattern,
1248 VAR_FLAGS_OPTIONAL,
1249 (void *)CFG_WOWL_PATTERN_DEFAULT),
1250
1251 REG_VARIABLE(CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME, WLAN_PARAM_Integer,
1252 struct hdd_config, bImplicitQosEnabled,
1253 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1254 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
1255 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
1256 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX),
1257
1258 REG_VARIABLE(CFG_AP_LISTEN_MODE_NAME, WLAN_PARAM_Integer,
1259 struct hdd_config, nEnableListenMode,
1260 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1261 CFG_AP_LISTEN_MODE_DEFAULT,
1262 CFG_AP_LISTEN_MODE_MIN,
1263 CFG_AP_LISTEN_MODE_MAX),
1264
1265 REG_VARIABLE(CFG_AP_AUTO_SHUT_OFF, WLAN_PARAM_Integer,
1266 struct hdd_config, nAPAutoShutOff,
1267 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1268 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
1269 CFG_AP_AUTO_SHUT_OFF_MIN,
1270 CFG_AP_AUTO_SHUT_OFF_MAX),
1271
1272#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
1273 REG_VARIABLE(CFG_WLAN_MCC_TO_SCC_SWITCH_MODE, WLAN_PARAM_Integer,
1274 struct hdd_config, WlanMccToSccSwitchMode,
1275 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1276 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_DEFAULT,
1277 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MIN,
1278 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MAX),
1279#endif
1280#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1281 REG_VARIABLE(CFG_WLAN_AUTO_SHUTDOWN, WLAN_PARAM_Integer,
1282 struct hdd_config, WlanAutoShutdown,
1283 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1284 CFG_WLAN_AUTO_SHUTDOWN_DEFAULT,
1285 CFG_WLAN_AUTO_SHUTDOWN_MIN,
1286 CFG_WLAN_AUTO_SHUTDOWN_MAX),
1287#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001288 REG_VARIABLE(CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
1289 struct hdd_config, fRrmEnable,
1290 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1291 CFG_RRM_ENABLE_DEFAULT,
1292 CFG_RRM_ENABLE_MIN,
1293 CFG_RRM_ENABLE_MAX),
1294
1295 REG_VARIABLE(CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME,
1296 WLAN_PARAM_Integer,
1297 struct hdd_config, nInChanMeasMaxDuration,
1298 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1299 CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1300 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN,
1301 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX),
1302
1303 REG_VARIABLE(CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME,
1304 WLAN_PARAM_Integer,
1305 struct hdd_config, nOutChanMeasMaxDuration,
1306 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1307 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1308 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN,
1309 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX),
1310
1311 REG_VARIABLE(CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
1312 struct hdd_config, nRrmRandnIntvl,
1313 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1314 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
1315 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
1316 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX),
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08001317
1318 REG_VARIABLE_STRING(CFG_RM_CAPABILITY_NAME, WLAN_PARAM_String,
1319 struct hdd_config, rm_capability,
1320 VAR_FLAGS_OPTIONAL,
1321 (void *) CFG_RM_CAPABILITY_DEFAULT),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001322
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001323 REG_VARIABLE(CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
1324 struct hdd_config, fFTResourceReqSupported,
1325 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1326 CFG_FT_RESOURCE_REQ_DEFAULT,
1327 CFG_FT_RESOURCE_REQ_MIN,
1328 CFG_FT_RESOURCE_REQ_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001329
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001330 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME,
1331 WLAN_PARAM_Integer,
1332 struct hdd_config, nNeighborScanPeriod,
1333 VAR_FLAGS_OPTIONAL |
1334 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1335 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
1336 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
1337 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX,
1338 cb_notify_set_neighbor_scan_period, 0),
1339
1340 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME,
1341 WLAN_PARAM_Integer,
1342 struct hdd_config, nNeighborLookupRssiThreshold,
1343 VAR_FLAGS_OPTIONAL |
1344 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1345 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
1346 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
1347 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX,
1348 cb_notify_set_neighbor_lookup_rssi_threshold, 0),
1349
1350 REG_DYNAMIC_VARIABLE(CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME,
1351 WLAN_PARAM_Integer,
1352 struct hdd_config, nOpportunisticThresholdDiff,
1353 VAR_FLAGS_OPTIONAL |
1354 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1355 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT,
1356 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN,
1357 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX,
1358 cb_notify_set_opportunistic_scan_threshold_diff, 0),
1359
1360 REG_DYNAMIC_VARIABLE(CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1361 struct hdd_config, nRoamRescanRssiDiff,
1362 VAR_FLAGS_OPTIONAL |
1363 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1364 CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT,
1365 CFG_ROAM_RESCAN_RSSI_DIFF_MIN,
1366 CFG_ROAM_RESCAN_RSSI_DIFF_MAX,
1367 cb_notify_set_roam_rescan_rssi_diff, 0),
1368
1369 REG_VARIABLE_STRING(CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
1370 struct hdd_config, neighborScanChanList,
1371 VAR_FLAGS_OPTIONAL,
1372 (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT),
1373
1374 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME,
1375 WLAN_PARAM_Integer,
1376 struct hdd_config, nNeighborScanMinChanTime,
1377 VAR_FLAGS_OPTIONAL |
1378 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1379 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
1380 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
1381 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX,
1382 cb_notify_set_neighbor_scan_min_chan_time, 0),
1383
1384 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME,
1385 WLAN_PARAM_Integer,
1386 struct hdd_config, nNeighborScanMaxChanTime,
1387 VAR_FLAGS_OPTIONAL |
1388 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1389 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
1390 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
1391 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX,
1392 cb_notify_set_neighbor_scan_max_chan_time, 0),
1393
1394 REG_VARIABLE(CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
1395 struct hdd_config, nMaxNeighborReqTries,
1396 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1397 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
1398 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
1399 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),
1400
1401 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME,
1402 WLAN_PARAM_Integer,
1403 struct hdd_config, nNeighborResultsRefreshPeriod,
1404 VAR_FLAGS_OPTIONAL |
1405 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1406 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
1407 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
1408 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX,
1409 cb_notify_set_neighbor_results_refresh_period, 0),
1410
1411 REG_DYNAMIC_VARIABLE(CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME,
1412 WLAN_PARAM_Integer,
1413 struct hdd_config, nEmptyScanRefreshPeriod,
1414 VAR_FLAGS_OPTIONAL |
1415 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1416 CFG_EMPTY_SCAN_REFRESH_PERIOD_DEFAULT,
1417 CFG_EMPTY_SCAN_REFRESH_PERIOD_MIN,
1418 CFG_EMPTY_SCAN_REFRESH_PERIOD_MAX,
1419 cb_notify_set_empty_scan_refresh_period, 0),
1420
1421 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer,
1422 struct hdd_config, nRoamBmissFirstBcnt,
1423 VAR_FLAGS_OPTIONAL |
1424 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1425 CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT,
1426 CFG_ROAM_BMISS_FIRST_BCNT_MIN,
1427 CFG_ROAM_BMISS_FIRST_BCNT_MAX,
1428 cb_notify_set_roam_bmiss_first_bcnt, 0),
1429
1430 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer,
1431 struct hdd_config, nRoamBmissFinalBcnt,
1432 VAR_FLAGS_OPTIONAL |
1433 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1434 CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT,
1435 CFG_ROAM_BMISS_FINAL_BCNT_MIN,
1436 CFG_ROAM_BMISS_FINAL_BCNT_MAX,
1437 cb_notify_set_roam_bmiss_final_bcnt, 0),
1438
1439 REG_DYNAMIC_VARIABLE(CFG_ROAM_BEACON_RSSI_WEIGHT_NAME,
1440 WLAN_PARAM_Integer,
1441 struct hdd_config, nRoamBeaconRssiWeight,
1442 VAR_FLAGS_OPTIONAL |
1443 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1444 CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT,
1445 CFG_ROAM_BEACON_RSSI_WEIGHT_MIN,
1446 CFG_ROAM_BEACON_RSSI_WEIGHT_MAX,
1447 cb_notify_set_roam_beacon_rssi_weight, 0),
1448
1449 REG_DYNAMIC_VARIABLE(CFG_ROAMING_DFS_CHANNEL_NAME, WLAN_PARAM_Integer,
1450 struct hdd_config, allowDFSChannelRoam,
1451 VAR_FLAGS_OPTIONAL |
1452 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1453 CFG_ROAMING_DFS_CHANNEL_DEFAULT,
1454 CFG_ROAMING_DFS_CHANNEL_MIN,
1455 CFG_ROAMING_DFS_CHANNEL_MAX,
1456 cb_notify_set_dfs_scan_mode, 0),
1457
1458 REG_DYNAMIC_VARIABLE(CFG_DELAY_BEFORE_VDEV_STOP_NAME,
1459 WLAN_PARAM_Integer,
1460 struct hdd_config,
1461 delay_before_vdev_stop,
1462 VAR_FLAGS_OPTIONAL |
1463 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1464 CFG_DELAY_BEFORE_VDEV_STOP_DEFAULT,
1465 CFG_DELAY_BEFORE_VDEV_STOP_MIN,
1466 CFG_DELAY_BEFORE_VDEV_STOP_MAX,
1467 cb_notify_set_delay_before_vdev_stop,
1468 0),
1469
1470 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_NAME,
1471 WLAN_PARAM_Integer,
1472 struct hdd_config,
1473 nhi_rssi_scan_max_count,
1474 VAR_FLAGS_OPTIONAL |
1475 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1476 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_DEFAULT,
1477 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MIN,
1478 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MAX,
1479 cb_notify_set_roam_scan_hi_rssi_scan_params,
1480 eCSR_HI_RSSI_SCAN_MAXCOUNT_ID),
1481
1482 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELTA_NAME,
1483 WLAN_PARAM_Integer,
1484 struct hdd_config,
1485 nhi_rssi_scan_rssi_delta,
1486 VAR_FLAGS_OPTIONAL |
1487 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1488 CFG_ROAM_SCAN_HI_RSSI_DELTA_DEFAULT,
1489 CFG_ROAM_SCAN_HI_RSSI_DELTA_MIN,
1490 CFG_ROAM_SCAN_HI_RSSI_DELTA_MAX,
1491 cb_notify_set_roam_scan_hi_rssi_scan_params,
1492 eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID),
1493
1494 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELAY_NAME,
1495 WLAN_PARAM_Integer,
1496 struct hdd_config,
1497 nhi_rssi_scan_delay,
1498 VAR_FLAGS_OPTIONAL |
1499 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1500 CFG_ROAM_SCAN_HI_RSSI_DELAY_DEFAULT,
1501 CFG_ROAM_SCAN_HI_RSSI_DELAY_MIN,
1502 CFG_ROAM_SCAN_HI_RSSI_DELAY_MAX,
1503 cb_notify_set_roam_scan_hi_rssi_scan_params,
1504 eCSR_HI_RSSI_SCAN_DELAY_ID),
1505
1506 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_UB_NAME,
1507 WLAN_PARAM_SignedInteger,
1508 struct hdd_config,
1509 nhi_rssi_scan_rssi_ub,
1510 VAR_FLAGS_OPTIONAL |
1511 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1512 CFG_ROAM_SCAN_HI_RSSI_UB_DEFAULT,
1513 CFG_ROAM_SCAN_HI_RSSI_UB_MIN,
1514 CFG_ROAM_SCAN_HI_RSSI_UB_MAX,
1515 cb_notify_set_roam_scan_hi_rssi_scan_params,
1516 eCSR_HI_RSSI_SCAN_RSSI_UB_ID),
1517
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001518 REG_VARIABLE(CFG_QOS_WMM_BURST_SIZE_DEFN_NAME, WLAN_PARAM_Integer,
1519 struct hdd_config, burstSizeDefinition,
1520 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1521 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
1522 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
1523 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX),
1524
1525 REG_VARIABLE(CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
1526 struct hdd_config, mcastBcastFilterSetting,
1527 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1528 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
1529 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
1530 CFG_MCAST_BCAST_FILTER_SETTING_MAX),
1531
1532 REG_VARIABLE(CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
1533 struct hdd_config, fhostArpOffload,
1534 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1535 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
1536 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
1537 CFG_ENABLE_HOST_ARPOFFLOAD_MAX),
1538
1539#ifdef FEATURE_WLAN_RA_FILTERING
1540 REG_VARIABLE(CFG_RA_FILTER_ENABLE_NAME, WLAN_PARAM_Integer,
1541 struct hdd_config, IsRArateLimitEnabled,
1542 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1543 CFG_RA_FILTER_ENABLE_DEFAULT,
1544 CFG_RA_FILTER_ENABLE_MIN,
1545 CFG_RA_FILTER_ENABLE_MAX),
1546
1547 REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
1548 struct hdd_config, RArateLimitInterval,
1549 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1550 CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT,
1551 CFG_RA_RATE_LIMIT_INTERVAL_MIN,
1552 CFG_RA_RATE_LIMIT_INTERVAL_MAX),
1553#endif
1554
1555 REG_VARIABLE(CFG_IGNORE_PEER_ERP_INFO_NAME, WLAN_PARAM_Integer,
1556 struct hdd_config, ignore_peer_erp_info,
1557 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1558 CFG_IGNORE_PEER_ERP_INFO_DEFAULT,
1559 CFG_IGNORE_PEER_ERP_INFO_MIN,
1560 CFG_IGNORE_PEER_ERP_INFO_MAX),
1561
1562 REG_VARIABLE(CFG_ENABLE_HOST_SSDP_NAME, WLAN_PARAM_Integer,
1563 struct hdd_config, ssdp,
1564 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1565 CFG_ENABLE_HOST_SSDP_DEFAULT,
1566 CFG_ENABLE_HOST_SSDP_MIN,
1567 CFG_ENABLE_HOST_SSDP_MAX),
1568
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07001569#ifdef FEATURE_RUNTIME_PM
1570 REG_VARIABLE(CFG_ENABLE_RUNTIME_PM, WLAN_PARAM_Integer,
1571 struct hdd_config, runtime_pm,
1572 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1573 CFG_ENABLE_RUNTIME_PM_DEFAULT,
1574 CFG_ENABLE_RUNTIME_PM_MIN,
1575 CFG_ENABLE_RUNTIME_PM_MAX),
1576
1577 REG_VARIABLE(CFG_RUNTIME_PM_DELAY_NAME, WLAN_PARAM_Integer,
1578 struct hdd_config, runtime_pm_delay,
1579 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1580 CFG_RUNTIME_PM_DELAY_DEFAULT,
1581 CFG_RUNTIME_PM_DELAY_MIN,
1582 CFG_RUNTIME_PM_DELAY_MAX),
1583#endif
1584
1585
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001586 REG_VARIABLE(CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer,
1587 struct hdd_config, fhostNSOffload,
1588 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1589 CFG_ENABLE_HOST_NSOFFLOAD_DEFAULT,
1590 CFG_ENABLE_HOST_NSOFFLOAD_MIN,
1591 CFG_ENABLE_HOST_NSOFFLOAD_MAX),
1592
1593 REG_VARIABLE(CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME, WLAN_PARAM_HexInteger,
1594 struct hdd_config, tsInfoAckPolicy,
1595 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1596 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
1597 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
1598 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX),
1599
1600 REG_VARIABLE(CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
1601 struct hdd_config, bSingleTidRc,
1602 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1603 CFG_SINGLE_TID_RC_DEFAULT,
1604 CFG_SINGLE_TID_RC_MIN,
1605 CFG_SINGLE_TID_RC_MAX),
1606
1607 REG_VARIABLE(CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
1608 struct hdd_config, dynamicPsPollValue,
1609 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1610 CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
1611 CFG_DYNAMIC_PSPOLL_VALUE_MIN,
1612 CFG_DYNAMIC_PSPOLL_VALUE_MAX),
1613
1614 REG_VARIABLE(CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
1615 struct hdd_config, teleBcnWakeupEn,
1616 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1617 CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
1618 CFG_TELE_BCN_WAKEUP_EN_MIN,
1619 CFG_TELE_BCN_WAKEUP_EN_MAX),
1620
1621 REG_VARIABLE(CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
1622 struct hdd_config, infraStaKeepAlivePeriod,
1623 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1624 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
1625 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
1626 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),
1627
1628 REG_VARIABLE(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME, WLAN_PARAM_Integer,
1629 struct hdd_config, AddTSWhenACMIsOff,
1630 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1631 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
1632 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
1633 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX),
1634
1635 REG_VARIABLE(CFG_VALIDATE_SCAN_LIST_NAME, WLAN_PARAM_Integer,
1636 struct hdd_config, fValidateScanList,
1637 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1638 CFG_VALIDATE_SCAN_LIST_DEFAULT,
1639 CFG_VALIDATE_SCAN_LIST_MIN,
1640 CFG_VALIDATE_SCAN_LIST_MAX),
1641
1642 REG_VARIABLE(CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
1643 struct hdd_config, nNullDataApRespTimeout,
1644 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1645 CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
1646 CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
1647 CFG_NULLDATA_AP_RESP_TIMEOUT_MAX),
1648
1649 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1650 struct hdd_config, apDataAvailPollPeriodInMs,
1651 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1652 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1653 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1654 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1655
1656 REG_VARIABLE(CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
1657 struct hdd_config, nBandCapability,
1658 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1659 CFG_BAND_CAPABILITY_DEFAULT,
1660 CFG_BAND_CAPABILITY_MIN,
1661 CFG_BAND_CAPABILITY_MAX),
1662
1663 REG_VARIABLE(CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME,
1664 WLAN_PARAM_Integer,
1665 struct hdd_config, fEnableBeaconEarlyTermination,
1666 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1667 CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
1668 CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
1669 CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX),
1670
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301671/* CFG_QDF_TRACE_ENABLE Parameters */
1672 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
1673 struct hdd_config, qdf_trace_enable_wdi,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001674 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301675 CFG_QDF_TRACE_ENABLE_DEFAULT,
1676 CFG_QDF_TRACE_ENABLE_MIN,
1677 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001678
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301679 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
1680 struct hdd_config, qdf_trace_enable_hdd,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001681 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301682 CFG_QDF_TRACE_ENABLE_DEFAULT,
1683 CFG_QDF_TRACE_ENABLE_MIN,
1684 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001685
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301686 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_BMI_NAME, WLAN_PARAM_Integer,
1687 struct hdd_config, qdf_trace_enable_bmi,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001688 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301689 CFG_QDF_TRACE_ENABLE_DEFAULT,
1690 CFG_QDF_TRACE_ENABLE_MIN,
1691 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001692
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301693 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
1694 struct hdd_config, qdf_trace_enable_sme,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001695 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301696 CFG_QDF_TRACE_ENABLE_DEFAULT,
1697 CFG_QDF_TRACE_ENABLE_MIN,
1698 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001699
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301700 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
1701 struct hdd_config, qdf_trace_enable_pe,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001702 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301703 CFG_QDF_TRACE_ENABLE_DEFAULT,
1704 CFG_QDF_TRACE_ENABLE_MIN,
1705 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001706
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301707 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_WMA_NAME, WLAN_PARAM_Integer,
1708 struct hdd_config, qdf_trace_enable_wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001709 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301710 CFG_QDF_TRACE_ENABLE_DEFAULT,
1711 CFG_QDF_TRACE_ENABLE_MIN,
1712 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001713
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301714 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
1715 struct hdd_config, qdf_trace_enable_sys,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001716 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301717 CFG_QDF_TRACE_ENABLE_DEFAULT,
1718 CFG_QDF_TRACE_ENABLE_MIN,
1719 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001720
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301721 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_QDF_NAME, WLAN_PARAM_Integer,
1722 struct hdd_config, qdf_trace_enable_qdf,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001723 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301724 CFG_QDF_TRACE_ENABLE_DEFAULT,
1725 CFG_QDF_TRACE_ENABLE_MIN,
1726 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001727
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301728 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
1729 struct hdd_config, qdf_trace_enable_sap,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001730 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301731 CFG_QDF_TRACE_ENABLE_DEFAULT,
1732 CFG_QDF_TRACE_ENABLE_MIN,
1733 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001734
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301735 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
1736 struct hdd_config, qdf_trace_enable_hdd_sap,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001737 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301738 CFG_QDF_TRACE_ENABLE_DEFAULT,
1739 CFG_QDF_TRACE_ENABLE_MIN,
1740 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001741
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301742 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_CFG_NAME, WLAN_PARAM_Integer,
1743 struct hdd_config, qdf_trace_enable_cfg,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301744 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301745 CFG_QDF_TRACE_ENABLE_DEFAULT,
1746 CFG_QDF_TRACE_ENABLE_MIN,
1747 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301748
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301749 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_TXRX_NAME, WLAN_PARAM_Integer,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301750 struct hdd_config, cfd_trace_enable_txrx,
1751 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301752 CFG_QDF_TRACE_ENABLE_DEFAULT,
1753 CFG_QDF_TRACE_ENABLE_MIN,
1754 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301755
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301756 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HTC_NAME, WLAN_PARAM_Integer,
1757 struct hdd_config, qdf_trace_enable_htc,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301758 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301759 CFG_QDF_TRACE_ENABLE_DEFAULT,
1760 CFG_QDF_TRACE_ENABLE_MIN,
1761 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301762
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301763 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HIF_NAME, WLAN_PARAM_Integer,
1764 struct hdd_config, qdf_trace_enable_hif,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301765 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301766 CFG_QDF_TRACE_ENABLE_DEFAULT,
1767 CFG_QDF_TRACE_ENABLE_MIN,
1768 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301769
1770 REG_VARIABLE(CFG_CDR_TRACE_ENABLE_HDD_SAP_DATA_NAME, WLAN_PARAM_Integer,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301771 struct hdd_config, qdf_trace_enable_hdd_sap_data,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301772 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301773 CFG_QDF_TRACE_ENABLE_DEFAULT,
1774 CFG_QDF_TRACE_ENABLE_MIN,
1775 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301776
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301777 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_DATA_NAME, WLAN_PARAM_Integer,
1778 struct hdd_config, qdf_trace_enable_hdd_data,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301779 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301780 CFG_QDF_TRACE_ENABLE_DEFAULT,
1781 CFG_QDF_TRACE_ENABLE_MIN,
1782 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301783
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301784 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_EPPING, WLAN_PARAM_Integer,
1785 struct hdd_config, qdf_trace_enable_epping,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301786 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301787 CFG_QDF_TRACE_ENABLE_DEFAULT,
1788 CFG_QDF_TRACE_ENABLE_MIN,
1789 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301790
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301791 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_QDF_DEVICES, WLAN_PARAM_Integer,
1792 struct hdd_config, qdf_trace_enable_qdf_devices,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301793 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301794 CFG_QDF_TRACE_ENABLE_DEFAULT,
1795 CFG_QDF_TRACE_ENABLE_MIN,
1796 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301797
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001798 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
1799 struct hdd_config, nTeleBcnTransListenInterval,
1800 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1801 CFG_TELE_BCN_TRANS_LI_DEFAULT,
1802 CFG_TELE_BCN_TRANS_LI_MIN,
1803 CFG_TELE_BCN_TRANS_LI_MAX),
1804
1805 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME,
1806 WLAN_PARAM_Integer,
1807 struct hdd_config, nTeleBcnTransLiNumIdleBeacons,
1808 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1809 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
1810 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
1811 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX),
1812
1813 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
1814 struct hdd_config, nTeleBcnMaxListenInterval,
1815 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1816 CFG_TELE_BCN_MAX_LI_DEFAULT,
1817 CFG_TELE_BCN_MAX_LI_MIN,
1818 CFG_TELE_BCN_MAX_LI_MAX),
1819
1820 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1821 struct hdd_config, nTeleBcnMaxLiNumIdleBeacons,
1822 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1823 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
1824 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
1825 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX),
1826
1827 REG_VARIABLE(CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer,
1828 struct hdd_config, bcnEarlyTermWakeInterval,
1829 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1830 CFG_BCN_EARLY_TERM_WAKE_DEFAULT,
1831 CFG_BCN_EARLY_TERM_WAKE_MIN,
1832 CFG_BCN_EARLY_TERM_WAKE_MAX),
1833
1834 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1835 struct hdd_config, apDataAvailPollPeriodInMs,
1836 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1837 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1838 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1839 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1840
1841 REG_VARIABLE(CFG_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer,
1842 struct hdd_config, enableCloseLoop,
1843 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1844 CFG_ENABLE_CLOSE_LOOP_DEFAULT,
1845 CFG_ENABLE_CLOSE_LOOP_MIN,
1846 CFG_ENABLE_CLOSE_LOOP_MAX),
1847
1848 REG_VARIABLE(CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
1849 struct hdd_config, enableBypass11d,
1850 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1851 CFG_ENABLE_BYPASS_11D_DEFAULT,
1852 CFG_ENABLE_BYPASS_11D_MIN,
1853 CFG_ENABLE_BYPASS_11D_MAX),
1854
1855 REG_VARIABLE(CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1856 struct hdd_config, enableDFSChnlScan,
1857 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1858 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
1859 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
1860 CFG_ENABLE_DFS_CHNL_SCAN_MAX),
1861
1862 REG_VARIABLE(CFG_ENABLE_DFS_PNO_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1863 struct hdd_config, enable_dfs_pno_chnl_scan,
1864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1865 CFG_ENABLE_DFS_PNO_CHNL_SCAN_DEFAULT,
1866 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MIN,
1867 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MAX),
1868
1869 REG_VARIABLE(CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
1870 struct hdd_config, enableDynamicDTIM,
1871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1872 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
1873 CFG_ENABLE_DYNAMIC_DTIM_MIN,
1874 CFG_ENABLE_DYNAMIC_DTIM_MAX),
1875
1876 REG_VARIABLE(CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME,
1877 WLAN_PARAM_Integer,
1878 struct hdd_config, enableAutomaticTxPowerControl,
1879 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1880 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT,
1881 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN,
1882 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX),
1883
1884 REG_VARIABLE(CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
1885 struct hdd_config, ShortGI40MhzEnable,
1886 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1887 CFG_SHORT_GI_40MHZ_DEFAULT,
1888 CFG_SHORT_GI_40MHZ_MIN,
1889 CFG_SHORT_GI_40MHZ_MAX),
1890
1891 REG_DYNAMIC_VARIABLE(CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
1892 struct hdd_config, reportMaxLinkSpeed,
1893 VAR_FLAGS_OPTIONAL |
1894 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1895 CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
1896 CFG_REPORT_MAX_LINK_SPEED_MIN,
1897 CFG_REPORT_MAX_LINK_SPEED_MAX,
1898 NULL, 0),
1899
1900 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
1901 struct hdd_config, linkSpeedRssiHigh,
1902 VAR_FLAGS_OPTIONAL |
1903 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1904 CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
1905 CFG_LINK_SPEED_RSSI_HIGH_MIN,
1906 CFG_LINK_SPEED_RSSI_HIGH_MAX,
1907 NULL, 0),
1908
1909 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger,
1910 struct hdd_config, linkSpeedRssiMid,
1911 VAR_FLAGS_OPTIONAL |
1912 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1913 CFG_LINK_SPEED_RSSI_MID_DEFAULT,
1914 CFG_LINK_SPEED_RSSI_MID_MIN,
1915 CFG_LINK_SPEED_RSSI_MID_MAX,
1916 NULL, 0),
1917
1918 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
1919 struct hdd_config, linkSpeedRssiLow,
1920 VAR_FLAGS_OPTIONAL |
1921 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1922 CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
1923 CFG_LINK_SPEED_RSSI_LOW_MIN,
1924 CFG_LINK_SPEED_RSSI_LOW_MAX,
1925 NULL, 0),
1926
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001927 REG_DYNAMIC_VARIABLE(CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
1928 struct hdd_config, nRoamPrefer5GHz,
1929 VAR_FLAGS_OPTIONAL |
1930 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1931 CFG_ROAM_PREFER_5GHZ_DEFAULT,
1932 CFG_ROAM_PREFER_5GHZ_MIN,
1933 CFG_ROAM_PREFER_5GHZ_MAX,
1934 cb_notify_set_roam_prefer5_g_hz, 0),
1935
1936 REG_DYNAMIC_VARIABLE(CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer,
1937 struct hdd_config, nRoamIntraBand,
1938 VAR_FLAGS_OPTIONAL |
1939 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1940 CFG_ROAM_INTRA_BAND_DEFAULT,
1941 CFG_ROAM_INTRA_BAND_MIN,
1942 CFG_ROAM_INTRA_BAND_MAX,
1943 cb_notify_set_roam_intra_band, 0),
1944
1945 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer,
1946 struct hdd_config, nProbes,
1947 VAR_FLAGS_OPTIONAL |
1948 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1949 CFG_ROAM_SCAN_N_PROBES_DEFAULT,
1950 CFG_ROAM_SCAN_N_PROBES_MIN,
1951 CFG_ROAM_SCAN_N_PROBES_MAX,
1952 cb_notify_set_roam_scan_n_probes, 0),
1953
1954 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer,
1955 struct hdd_config, nRoamScanHomeAwayTime,
1956 VAR_FLAGS_OPTIONAL |
1957 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1958 CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT,
1959 CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN,
1960 CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX,
1961 cb_notify_set_roam_scan_home_away_time, 0),
1962
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001963 REG_VARIABLE(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME,
1964 WLAN_PARAM_Integer,
1965 struct hdd_config, isP2pDeviceAddrAdministrated,
1966 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1967 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
1968 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
1969 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX),
1970
1971 REG_VARIABLE(CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
1972 struct hdd_config, enableMCC,
1973 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1974 CFG_ENABLE_MCC_ENABLED_DEFAULT,
1975 CFG_ENABLE_MCC_ENABLED_MIN,
1976 CFG_ENABLE_MCC_ENABLED_MAX),
1977
1978 REG_VARIABLE(CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
1979 struct hdd_config, allowMCCGODiffBI,
1980 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1981 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
1982 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
1983 CFG_ALLOW_MCC_GO_DIFF_BI_MAX),
1984
1985 REG_VARIABLE(CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
1986 struct hdd_config, thermalMitigationEnable,
1987 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1988 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
1989 CFG_THERMAL_MIGRATION_ENABLE_MIN,
1990 CFG_THERMAL_MIGRATION_ENABLE_MAX),
1991
1992 REG_VARIABLE(CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer,
1993 struct hdd_config, throttlePeriod,
1994 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1995 CFG_THROTTLE_PERIOD_DEFAULT,
1996 CFG_THROTTLE_PERIOD_MIN,
1997 CFG_THROTTLE_PERIOD_MAX),
1998
1999 REG_VARIABLE(CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
2000 struct hdd_config, enableModulatedDTIM,
2001 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2002 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
2003 CFG_ENABLE_MODULATED_DTIM_MIN,
2004 CFG_ENABLE_MODULATED_DTIM_MAX),
2005
2006 REG_VARIABLE(CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
2007 struct hdd_config, fEnableMCAddrList,
2008 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2009 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
2010 CFG_MC_ADDR_LIST_ENABLE_MIN,
2011 CFG_MC_ADDR_LIST_ENABLE_MAX),
2012
2013#ifdef WLAN_FEATURE_11AC
2014 REG_VARIABLE(CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
2015 struct hdd_config, vhtChannelWidth,
2016 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2017 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
2018 CFG_VHT_CHANNEL_WIDTH_MIN,
2019 CFG_VHT_CHANNEL_WIDTH_MAX),
2020
2021 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
2022 struct hdd_config, vhtRxMCS,
2023 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2024 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
2025 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
2026 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),
2027
2028 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
2029 struct hdd_config, vhtTxMCS,
2030 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2031 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
2032 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
2033 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),
2034
2035 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer,
2036 struct hdd_config, vhtRxMCS2x2,
2037 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2038 CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT,
2039 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN,
2040 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX),
2041
2042 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer,
2043 struct hdd_config, vhtTxMCS2x2,
2044 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2045 CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT,
2046 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN,
2047 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX),
2048
2049 REG_VARIABLE(CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer,
2050 struct hdd_config, enable2x2,
2051 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2052 CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT,
2053 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
2054 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX),
2055
2056 REG_VARIABLE(CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2057 struct hdd_config, enableMuBformee,
2058 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2059 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT,
2060 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN,
2061 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX),
2062
2063 REG_VARIABLE(CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer,
2064 struct hdd_config, enableVhtpAid,
2065 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2066 CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT,
2067 CFG_VHT_ENABLE_PAID_FEATURE_MIN,
2068 CFG_VHT_ENABLE_PAID_FEATURE_MAX),
2069
2070 REG_VARIABLE(CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer,
2071 struct hdd_config, enableVhtGid,
2072 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2073 CFG_VHT_ENABLE_GID_FEATURE_DEFAULT,
2074 CFG_VHT_ENABLE_GID_FEATURE_MIN,
2075 CFG_VHT_ENABLE_GID_FEATURE_MAX),
2076#endif
2077
2078 REG_VARIABLE(CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer,
2079 struct hdd_config, txchainmask1x1,
2080 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2081 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT,
2082 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN,
2083 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX),
2084
2085 REG_VARIABLE(CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer,
2086 struct hdd_config, rxchainmask1x1,
2087 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2088 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT,
2089 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN,
2090 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX),
2091
2092 REG_VARIABLE(CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer,
2093 struct hdd_config, enableAmpduPs,
2094 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2095 CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT,
2096 CFG_ENABLE_AMPDUPS_FEATURE_MIN,
2097 CFG_ENABLE_AMPDUPS_FEATURE_MAX),
2098
2099 REG_VARIABLE(CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2100 struct hdd_config, enableHtSmps,
2101 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2102 CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT,
2103 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN,
2104 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX),
2105
2106 REG_VARIABLE(CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2107 struct hdd_config, htSmps,
2108 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2109 CFG_HT_SMPS_CAP_FEATURE_DEFAULT,
2110 CFG_HT_SMPS_CAP_FEATURE_MIN,
2111 CFG_HT_SMPS_CAP_FEATURE_MAX),
2112
2113 REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
2114 struct hdd_config, disableDFSChSwitch,
2115 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2116 CFG_DISABLE_DFS_CH_SWITCH_DEFAULT,
2117 CFG_DISABLE_DFS_CH_SWITCH_MIN,
2118 CFG_DISABLE_DFS_CH_SWITCH_MAX),
2119
2120 REG_VARIABLE(CFG_ENABLE_DFS_MASTER_CAPABILITY, WLAN_PARAM_Integer,
2121 struct hdd_config, enableDFSMasterCap,
2122 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2123 CFG_ENABLE_DFS_MASTER_CAPABILITY_DEFAULT,
2124 CFG_ENABLE_DFS_MASTER_CAPABILITY_MIN,
2125 CFG_ENABLE_DFS_MASTER_CAPABILITY_MAX),
2126
2127 REG_DYNAMIC_VARIABLE(CFG_SAP_PREFERRED_CHANNEL_LOCATION,
2128 WLAN_PARAM_Integer,
2129 struct hdd_config, gSapPreferredChanLocation,
2130 VAR_FLAGS_OPTIONAL |
2131 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2132 CFG_SAP_PREFERRED_CHANNEL_LOCATION_DEFAULT,
2133 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MIN,
2134 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MAX,
2135 cb_notify_set_g_sap_preferred_chan_location, 0),
2136 REG_DYNAMIC_VARIABLE(CFG_DISABLE_DFS_JAPAN_W53, WLAN_PARAM_Integer,
2137 struct hdd_config, gDisableDfsJapanW53,
2138 VAR_FLAGS_OPTIONAL |
2139 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2140 CFG_DISABLE_DFS_JAPAN_W53_DEFAULT,
2141 CFG_DISABLE_DFS_JAPAN_W53_MIN,
2142 CFG_DISABLE_DFS_JAPAN_W53_MAX,
2143 ch_notify_set_g_disable_dfs_japan_w53, 0),
2144 REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
2145 struct hdd_config, enableFirstScan2GOnly,
2146 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2147 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
2148 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
2149 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX),
2150
2151 REG_VARIABLE(CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
2152 struct hdd_config, skipDfsChnlInP2pSearch,
2153 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2154 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
2155 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
2156 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX),
2157
2158 REG_VARIABLE(CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME,
2159 WLAN_PARAM_Integer,
2160 struct hdd_config, ignoreDynamicDtimInP2pMode,
2161 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2162 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
2163 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
2164 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX),
2165
2166 REG_VARIABLE(CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
2167 struct hdd_config, enableRxSTBC,
2168 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2169 CFG_ENABLE_RX_STBC_DEFAULT,
2170 CFG_ENABLE_RX_STBC_MIN,
2171 CFG_ENABLE_RX_STBC_MAX),
2172
2173 REG_VARIABLE(CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer,
2174 struct hdd_config, enableTxSTBC,
2175 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2176 CFG_ENABLE_TX_STBC_DEFAULT,
2177 CFG_ENABLE_TX_STBC_MIN,
2178 CFG_ENABLE_TX_STBC_MAX),
2179
2180 REG_VARIABLE(CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer,
2181 struct hdd_config, enableRxLDPC,
2182 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2183 CFG_ENABLE_RX_LDPC_DEFAULT,
2184 CFG_ENABLE_RX_LDPC_MIN,
2185 CFG_ENABLE_RX_LDPC_MAX),
2186
2187 REG_VARIABLE(CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer,
2188 struct hdd_config, enable5gEBT,
2189 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2190 CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT,
2191 CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN,
2192 CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX),
2193
2194#ifdef FEATURE_WLAN_TDLS
2195 REG_VARIABLE(CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2196 struct hdd_config, fEnableTDLSSupport,
2197 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2198 CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
2199 CFG_TDLS_SUPPORT_ENABLE_MIN,
2200 CFG_TDLS_SUPPORT_ENABLE_MAX),
2201
2202 REG_VARIABLE(CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer,
2203 struct hdd_config, fEnableTDLSImplicitTrigger,
2204 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2205 CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT,
2206 CFG_TDLS_IMPLICIT_TRIGGER_MIN,
2207 CFG_TDLS_IMPLICIT_TRIGGER_MAX),
2208
2209 REG_VARIABLE(CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer,
2210 struct hdd_config, fTDLSTxStatsPeriod,
2211 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2212 CFG_TDLS_TX_STATS_PERIOD_DEFAULT,
2213 CFG_TDLS_TX_STATS_PERIOD_MIN,
2214 CFG_TDLS_TX_STATS_PERIOD_MAX),
2215
2216 REG_VARIABLE(CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2217 struct hdd_config, fTDLSTxPacketThreshold,
2218 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2219 CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT,
2220 CFG_TDLS_TX_PACKET_THRESHOLD_MIN,
2221 CFG_TDLS_TX_PACKET_THRESHOLD_MAX),
2222
2223 REG_VARIABLE(CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
2224 struct hdd_config, fTDLSMaxDiscoveryAttempt,
2225 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2226 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT,
2227 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN,
2228 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX),
2229
Kabilan Kannanca670be2015-11-23 01:56:12 -08002230 REG_VARIABLE(CFG_TDLS_IDLE_TIMEOUT, WLAN_PARAM_Integer,
2231 struct hdd_config, tdls_idle_timeout,
2232 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2233 CFG_TDLS_IDLE_TIMEOUT_DEFAULT,
2234 CFG_TDLS_IDLE_TIMEOUT_MIN,
2235 CFG_TDLS_IDLE_TIMEOUT_MAX),
2236
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002237 REG_VARIABLE(CFG_TDLS_IDLE_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2238 struct hdd_config, fTDLSIdlePacketThreshold,
2239 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2240 CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT,
2241 CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN,
2242 CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX),
2243
2244 REG_VARIABLE(CFG_TDLS_RSSI_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger,
2245 struct hdd_config, fTDLSRSSITriggerThreshold,
2246 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2247 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT,
2248 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN,
2249 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX),
2250
2251 REG_VARIABLE(CFG_TDLS_RSSI_TEARDOWN_THRESHOLD, WLAN_PARAM_SignedInteger,
2252 struct hdd_config, fTDLSRSSITeardownThreshold,
2253 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2254 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT,
2255 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN,
2256 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX),
2257
2258 REG_VARIABLE(CFG_TDLS_RSSI_DELTA, WLAN_PARAM_SignedInteger,
2259 struct hdd_config, fTDLSRSSIDelta,
2260 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2261 CFG_TDLS_RSSI_DELTA_DEFAULT,
2262 CFG_TDLS_RSSI_DELTA_MIN,
2263 CFG_TDLS_RSSI_DELTA_MAX),
2264
2265 REG_VARIABLE(CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
2266 struct hdd_config, fTDLSUapsdMask,
2267 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2268 CFG_TDLS_QOS_WMM_UAPSD_MASK_DEFAULT,
2269 CFG_TDLS_QOS_WMM_UAPSD_MASK_MIN,
2270 CFG_TDLS_QOS_WMM_UAPSD_MASK_MAX),
2271
2272 REG_VARIABLE(CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2273 struct hdd_config, fEnableTDLSBufferSta,
2274 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2275 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT,
2276 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN,
2277 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX),
2278
2279 REG_VARIABLE(CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2280 struct hdd_config, fEnableTDLSOffChannel,
2281 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2282 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT,
2283 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN,
2284 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX),
2285
2286 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM, WLAN_PARAM_Integer,
2287 struct hdd_config, fTDLSPrefOffChanNum,
2288 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2289 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEFAULT,
2290 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN,
2291 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX),
2292
2293 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_BW, WLAN_PARAM_Integer,
2294 struct hdd_config, fTDLSPrefOffChanBandwidth,
2295 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2296 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_DEFAULT,
2297 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MIN,
2298 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MAX),
2299
2300 REG_VARIABLE(CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer,
2301 struct hdd_config, fTDLSPuapsdInactivityTimer,
2302 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2303 CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT,
2304 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN,
2305 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX),
2306
2307 REG_VARIABLE(CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer,
2308 struct hdd_config, fTDLSRxFrameThreshold,
2309 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2310 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT,
2311 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN,
2312 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX),
2313
2314 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW,
2315 WLAN_PARAM_Integer,
2316 struct hdd_config, fTDLSPuapsdPTIWindow,
2317 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2318 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_DEFAULT,
2319 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MIN,
2320 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MAX),
2321
2322 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT,
2323 WLAN_PARAM_Integer,
2324 struct hdd_config, fTDLSPuapsdPTRTimeout,
2325 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2326 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_DEFAULT,
2327 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MIN,
2328 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MAX),
2329
2330 REG_VARIABLE(CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer,
2331 struct hdd_config, fTDLSExternalControl,
2332 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2333 CFG_TDLS_EXTERNAL_CONTROL_DEFAULT,
2334 CFG_TDLS_EXTERNAL_CONTROL_MIN,
2335 CFG_TDLS_EXTERNAL_CONTROL_MAX),
2336 REG_VARIABLE(CFG_TDLS_WMM_MODE_ENABLE, WLAN_PARAM_Integer,
2337 struct hdd_config, fEnableTDLSWmmMode,
2338 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2339 CFG_TDLS_WMM_MODE_ENABLE_DEFAULT,
2340 CFG_TDLS_WMM_MODE_ENABLE_MIN,
2341 CFG_TDLS_WMM_MODE_ENABLE_MAX),
2342
2343 REG_VARIABLE(CFG_TDLS_SCAN_ENABLE, WLAN_PARAM_Integer,
2344 struct hdd_config, enable_tdls_scan,
2345 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2346 CFG_TDLS_SCAN_ENABLE_DEFAULT,
2347 CFG_TDLS_SCAN_ENABLE_MIN,
2348 CFG_TDLS_SCAN_ENABLE_MAX),
Kabilan Kannan421714b2015-11-23 04:44:59 -08002349
2350 REG_VARIABLE(CFG_TDLS_PEER_KICKOUT_THRESHOLD, WLAN_PARAM_Integer,
2351 struct hdd_config, tdls_peer_kickout_threshold,
2352 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2353 CFG_TDLS_PEER_KICKOUT_THRESHOLD_DEFAULT,
2354 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MIN,
2355 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MAX),
2356
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002357#endif
2358
2359#ifdef WLAN_SOFTAP_VSTA_FEATURE
2360 REG_VARIABLE(CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2361 struct hdd_config, fEnableVSTASupport,
2362 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2363 CFG_VSTA_SUPPORT_ENABLE_DEFAULT,
2364 CFG_VSTA_SUPPORT_ENABLE_MIN,
2365 CFG_VSTA_SUPPORT_ENABLE_MAX),
2366#endif
2367 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2368 struct hdd_config, enableLpwrImgTransition,
2369 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2370 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2371 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2372 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2373
2374 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2375 struct hdd_config, enableLpwrImgTransition,
2376 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2377 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2378 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2379 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2380
2381 REG_VARIABLE(CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer,
2382 struct hdd_config, scanAgingTimeout,
2383 VAR_FLAGS_OPTIONAL,
2384 CFG_SCAN_AGING_PARAM_DEFAULT,
2385 CFG_SCAN_AGING_PARAM_MIN,
2386 CFG_SCAN_AGING_PARAM_MAX),
2387
2388 REG_VARIABLE(CFG_TX_LDPC_ENABLE_FEATURE, WLAN_PARAM_Integer,
2389 struct hdd_config, enableTxLdpc,
2390 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2391 CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT,
2392 CFG_TX_LDPC_ENABLE_FEATURE_MIN,
2393 CFG_TX_LDPC_ENABLE_FEATURE_MAX),
2394
2395 REG_VARIABLE(CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_NAME,
2396 WLAN_PARAM_Integer,
2397 struct hdd_config, enableMCCAdaptiveScheduler,
2398 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2399 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT,
2400 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN,
2401 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX),
2402
2403 REG_VARIABLE(CFG_ANDRIOD_POWER_SAVE_NAME, WLAN_PARAM_Integer,
2404 struct hdd_config, isAndroidPsEn,
2405 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2406 CFG_ANDRIOD_POWER_SAVE_DEFAULT,
2407 CFG_ANDRIOD_POWER_SAVE_MIN,
2408 CFG_ANDRIOD_POWER_SAVE_MAX),
2409
2410 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_5GHZ_NAME, WLAN_PARAM_Integer,
2411 struct hdd_config, AdHocChannel5G,
2412 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2413 CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT,
2414 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN,
2415 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX),
2416
2417 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_24GHZ_NAME, WLAN_PARAM_Integer,
2418 struct hdd_config, AdHocChannel24G,
2419 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2420 CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT,
2421 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN,
2422 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX),
2423
2424 REG_VARIABLE(CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2425 struct hdd_config, enableTxBF,
2426 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2427 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT,
2428 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
2429 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX),
2430
Kiran Kumar Lokere5302ab62015-12-16 16:03:16 -08002431 REG_VARIABLE(CFG_VHT_ENABLE_TXBF_SAP_MODE, WLAN_PARAM_Integer,
2432 struct hdd_config, enable_txbf_sap_mode,
2433 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2434 CFG_VHT_ENABLE_TXBF_SAP_MODE_DEFAULT,
2435 CFG_VHT_ENABLE_TXBF_SAP_MODE_MIN,
2436 CFG_VHT_ENABLE_TXBF_SAP_MODE_MAX),
2437
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002438 REG_VARIABLE(CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
2439 struct hdd_config, enableTxBFin20MHz,
2440 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2441 CFG_VHT_ENABLE_TXBF_IN_20MHZ_DEFAULT,
2442 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MIN,
2443 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MAX),
2444
2445 REG_VARIABLE(CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, WLAN_PARAM_Integer,
2446 struct hdd_config, txBFCsnValue,
2447 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2448 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT,
2449 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN,
2450 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX),
2451
2452 REG_VARIABLE(CFG_VHT_ENABLE_TX_SU_BEAM_FORMER, WLAN_PARAM_Integer,
2453 struct hdd_config, enable_su_tx_bformer,
2454 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2455 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_DEFAULT,
2456 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MIN,
2457 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MAX),
2458
2459 REG_VARIABLE(CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
2460 struct hdd_config, sapAllowAllChannel,
2461 VAR_FLAGS_OPTIONAL,
2462 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT,
2463 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN,
2464 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX),
2465
2466#ifdef WLAN_FEATURE_11AC
2467 REG_VARIABLE(CFG_DISABLE_LDPC_WITH_TXBF_AP, WLAN_PARAM_Integer,
2468 struct hdd_config, disableLDPCWithTxbfAP,
2469 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2470 CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT,
2471 CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN,
2472 CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX),
2473#endif
2474
2475 REG_DYNAMIC_VARIABLE(CFG_ENABLE_SSR, WLAN_PARAM_Integer,
2476 struct hdd_config, enableSSR,
2477 VAR_FLAGS_OPTIONAL |
2478 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2479 CFG_ENABLE_SSR_DEFAULT,
2480 CFG_ENABLE_SSR_MIN,
2481 CFG_ENABLE_SSR_MAX,
2482 cb_notify_set_enable_ssr, 0),
2483
2484 REG_VARIABLE(CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer,
2485 struct hdd_config, cfgMaxMediumTime,
2486 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2487 CFG_MAX_MEDIUM_TIME_STADEFAULT,
2488 CFG_MAX_MEDIUM_TIME_STAMIN,
2489 CFG_MAX_MEDIUM_TIME_STAMAX),
2490
2491
2492
2493#ifdef WLAN_FEATURE_11AC
2494 REG_VARIABLE(CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
2495 struct hdd_config, enableVhtFor24GHzBand,
2496 VAR_FLAGS_OPTIONAL,
2497 CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT,
2498 CFG_ENABLE_VHT_FOR_24GHZ_MIN,
2499 CFG_ENABLE_VHT_FOR_24GHZ_MAX),
2500#endif
2501
2502 REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
2503 WLAN_PARAM_Integer,
2504 struct hdd_config, bFastRoamInConIniFeatureEnabled,
2505 VAR_FLAGS_OPTIONAL |
2506 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2507 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT,
2508 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN,
2509 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX,
2510 cb_notify_set_enable_fast_roam_in_concurrency, 0),
2511
2512 REG_VARIABLE(CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer,
2513 struct hdd_config, fEnableAdaptRxDrain,
2514 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2515 CFG_ENABLE_ADAPT_RX_DRAIN_DEFAULT,
2516 CFG_ENABLE_ADAPT_RX_DRAIN_MIN,
2517 CFG_ENABLE_ADAPT_RX_DRAIN_MAX),
2518
2519 REG_VARIABLE(CFG_FLEX_CONNECT_POWER_FACTOR_NAME, WLAN_PARAM_Integer,
2520 struct hdd_config, flexConnectPowerFactor,
2521 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_MINMAX,
2522 CFG_FLEX_CONNECT_POWER_FACTOR_DEFAULT,
2523 CFG_FLEX_CONNECT_POWER_FACTOR_MIN,
2524 CFG_FLEX_CONNECT_POWER_FACTOR_MAX),
2525
2526 REG_VARIABLE(CFG_ENABLE_HEART_BEAT_OFFLOAD, WLAN_PARAM_Integer,
2527 struct hdd_config, enableIbssHeartBeatOffload,
2528 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2529 CFG_ENABLE_HEART_BEAT_OFFLOAD_DEFAULT,
2530 CFG_ENABLE_HEART_BEAT_OFFLOAD_MIN,
2531 CFG_ENABLE_HEART_BEAT_OFFLOAD_MAX),
2532
2533 REG_VARIABLE(CFG_ANTENNA_DIVERSITY_PARAM_NAME, WLAN_PARAM_Integer,
2534 struct hdd_config, antennaDiversity,
2535 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2536 CFG_ANTENNA_DIVERSITY_PARAM_DEFAULT,
2537 CFG_ANTENNA_DIVERSITY_PARAM_MIN,
2538 CFG_ANTENNA_DIVERSITY_PARAM_MAX),
2539
2540 REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
2541 struct hdd_config, fEnableSNRMonitoring,
2542 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2543 CFG_ENABLE_SNR_MONITORING_DEFAULT,
2544 CFG_ENABLE_SNR_MONITORING_MIN,
2545 CFG_ENABLE_SNR_MONITORING_MAX),
2546
2547#ifdef FEATURE_WLAN_SCAN_PNO
2548 REG_VARIABLE(CFG_PNO_SCAN_SUPPORT, WLAN_PARAM_Integer,
2549 struct hdd_config, configPNOScanSupport,
2550 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2551 CFG_PNO_SCAN_SUPPORT_DEFAULT,
2552 CFG_PNO_SCAN_SUPPORT_DISABLE,
2553 CFG_PNO_SCAN_SUPPORT_ENABLE),
2554
2555 REG_VARIABLE(CFG_PNO_SCAN_TIMER_REPEAT_VALUE, WLAN_PARAM_Integer,
2556 struct hdd_config, configPNOScanTimerRepeatValue,
2557 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2558 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_DEFAULT,
2559 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MIN,
2560 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MAX),
Srinivas Girigowdabdc98162015-09-17 11:06:07 -07002561
2562 REG_VARIABLE(CFG_PNO_SLOW_SCAN_MULTIPLIER, WLAN_PARAM_Integer,
2563 struct hdd_config, pno_slow_scan_multiplier,
2564 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2565 CFG_PNO_SLOW_SCAN_MULTIPLIER_DEFAULT,
2566 CFG_PNO_SLOW_SCAN_MULTIPLIER_MIN,
2567 CFG_PNO_SLOW_SCAN_MULTIPLIER_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002568#endif
2569 REG_VARIABLE(CFG_AMSDU_SUPPORT_IN_AMPDU_NAME, WLAN_PARAM_Integer,
2570 struct hdd_config, isAmsduSupportInAMPDU,
2571 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2572 CFG_AMSDU_SUPPORT_IN_AMPDU_DEFAULT,
2573 CFG_AMSDU_SUPPORT_IN_AMPDU_MIN,
2574 CFG_AMSDU_SUPPORT_IN_AMPDU_MAX),
2575
2576 REG_VARIABLE(CFG_STRICT_5GHZ_PREF_BY_MARGIN, WLAN_PARAM_Integer,
2577 struct hdd_config, nSelect5GHzMargin,
2578 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2579 CFG_STRICT_5GHZ_PREF_BY_MARGIN_DEFAULT,
2580 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MIN,
2581 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MAX),
2582
2583 REG_VARIABLE(CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
2584 struct hdd_config, enable_ip_tcp_udp_checksum_offload,
2585 VAR_FLAGS_OPTIONAL,
2586 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT,
2587 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE,
2588 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE),
2589
2590 REG_VARIABLE(CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer,
2591 struct hdd_config, enablePowersaveOffload,
2592 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2593 CFG_POWERSAVE_OFFLOAD_DEFAULT,
2594 CFG_POWERSAVE_OFFLOAD_MIN,
2595 CFG_POWERSAVE_OFFLOAD_MAX),
2596
2597 REG_VARIABLE(CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer,
2598 struct hdd_config, enablefwprint,
2599 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2600 CFG_ENABLE_FW_UART_PRINT_DEFAULT,
2601 CFG_ENABLE_FW_UART_PRINT_DISABLE,
2602 CFG_ENABLE_FW_UART_PRINT_ENABLE),
2603
2604 REG_VARIABLE(CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer,
Komal Seelamc11bb222016-01-27 18:57:10 +05302605 struct hdd_config, enable_fw_log,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002606 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2607 CFG_ENABLE_FW_LOG_DEFAULT,
2608 CFG_ENABLE_FW_LOG_DISABLE,
2609 CFG_ENABLE_FW_LOG_ENABLE),
2610
2611#ifdef IPA_OFFLOAD
2612 REG_VARIABLE(CFG_IPA_OFFLOAD_CONFIG_NAME, WLAN_PARAM_HexInteger,
2613 struct hdd_config, IpaConfig,
2614 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2615 CFG_IPA_OFFLOAD_CONFIG_DEFAULT,
2616 CFG_IPA_OFFLOAD_CONFIG_MIN,
2617 CFG_IPA_OFFLOAD_CONFIG_MAX),
2618
2619 REG_VARIABLE(CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer,
2620 struct hdd_config, IpaDescSize,
2621 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2622 CFG_IPA_DESC_SIZE_DEFAULT,
2623 CFG_IPA_DESC_SIZE_MIN,
2624 CFG_IPA_DESC_SIZE_MAX),
2625
2626 REG_VARIABLE(CFG_IPA_HIGH_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2627 struct hdd_config, IpaHighBandwidthMbps,
2628 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2629 CFG_IPA_HIGH_BANDWIDTH_MBPS_DEFAULT,
2630 CFG_IPA_HIGH_BANDWIDTH_MBPS_MIN,
2631 CFG_IPA_HIGH_BANDWIDTH_MBPS_MAX),
2632
2633 REG_VARIABLE(CFG_IPA_MEDIUM_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2634 struct hdd_config, IpaMediumBandwidthMbps,
2635 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2636 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_DEFAULT,
2637 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MIN,
2638 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MAX),
2639
2640 REG_VARIABLE(CFG_IPA_LOW_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2641 struct hdd_config, IpaLowBandwidthMbps,
2642 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2643 CFG_IPA_LOW_BANDWIDTH_MBPS_DEFAULT,
2644 CFG_IPA_LOW_BANDWIDTH_MBPS_MIN,
2645 CFG_IPA_LOW_BANDWIDTH_MBPS_MAX),
2646#endif
2647
2648#ifdef WLAN_FEATURE_11AC
2649 REG_VARIABLE(CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer,
2650 struct hdd_config, fVhtAmpduLenExponent,
2651 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2652 CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT,
2653 CFG_VHT_AMPDU_LEN_EXPONENT_MIN,
2654 CFG_VHT_AMPDU_LEN_EXPONENT_MAX),
2655
2656 REG_VARIABLE(CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer,
2657 struct hdd_config, vhtMpduLen,
2658 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2659 CFG_VHT_MPDU_LEN_DEFAULT,
2660 CFG_VHT_MPDU_LEN_MIN,
2661 CFG_VHT_MPDU_LEN_MAX),
2662#endif
2663
2664 REG_VARIABLE(CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer,
2665 struct hdd_config, maxWoWFilters,
2666 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2667 CFG_MAX_WOW_FILTERS_DEFAULT,
2668 CFG_MAX_WOW_FILTERS_MIN,
2669 CFG_MAX_WOW_FILTERS_MAX),
2670
2671 REG_VARIABLE(CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer,
2672 struct hdd_config, wowEnable,
2673 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2674 CFG_WOW_STATUS_DEFAULT,
2675 CFG_WOW_ENABLE_MIN,
2676 CFG_WOW_ENABLE_MAX),
2677
2678 REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
2679 struct hdd_config, isCoalesingInIBSSAllowed,
2680 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2681 CFG_COALESING_IN_IBSS_DEFAULT,
2682 CFG_COALESING_IN_IBSS_MIN,
2683 CFG_COALESING_IN_IBSS_MAX),
2684
2685 REG_VARIABLE(CFG_IBSS_ATIM_WIN_SIZE_NAME, WLAN_PARAM_Integer,
2686 struct hdd_config, ibssATIMWinSize,
2687 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2688 CFG_IBSS_ATIM_WIN_SIZE_DEFAULT,
2689 CFG_IBSS_ATIM_WIN_SIZE_MIN,
2690 CFG_IBSS_ATIM_WIN_SIZE_MAX),
2691
2692 REG_VARIABLE(CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer,
2693 struct hdd_config, maxNumberOfPeers,
2694 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2695 CFG_SAP_MAX_NO_PEERS_DEFAULT,
2696 CFG_SAP_MAX_NO_PEERS_MIN,
2697 CFG_SAP_MAX_NO_PEERS_MAX),
2698
2699 REG_VARIABLE(CFG_IBSS_IS_POWER_SAVE_ALLOWED_NAME, WLAN_PARAM_Integer,
2700 struct hdd_config, isIbssPowerSaveAllowed,
2701 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2702 CFG_IBSS_IS_POWER_SAVE_ALLOWED_DEFAULT,
2703 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MIN,
2704 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MAX),
2705
2706 REG_VARIABLE(CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_NAME,
2707 WLAN_PARAM_Integer,
2708 struct hdd_config, isIbssPowerCollapseAllowed,
2709 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2710 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_DEFAULT,
2711 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MIN,
2712 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MAX),
2713
2714 REG_VARIABLE(CFG_IBSS_AWAKE_ON_TX_RX_NAME, WLAN_PARAM_Integer,
2715 struct hdd_config, isIbssAwakeOnTxRx,
2716 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2717 CFG_IBSS_AWAKE_ON_TX_RX_DEFAULT,
2718 CFG_IBSS_AWAKE_ON_TX_RX_MIN,
2719 CFG_IBSS_AWAKE_ON_TX_RX_MAX),
2720
2721 REG_VARIABLE(CFG_IBSS_INACTIVITY_TIME_NAME, WLAN_PARAM_Integer,
2722 struct hdd_config, ibssInactivityCount,
2723 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2724 CFG_IBSS_INACTIVITY_TIME_DEFAULT,
2725 CFG_IBSS_INACTIVITY_TIME_MIN,
2726 CFG_IBSS_INACTIVITY_TIME_MAX),
2727
2728 REG_VARIABLE(CFG_IBSS_TXSP_END_INACTIVITY_NAME, WLAN_PARAM_Integer,
2729 struct hdd_config, ibssTxSpEndInactivityTime,
2730 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2731 CFG_IBSS_TXSP_END_INACTIVITY_DEFAULT,
2732 CFG_IBSS_TXSP_END_INACTIVITY_MIN,
2733 CFG_IBSS_TXSP_END_INACTIVITY_MAX),
2734
2735 REG_VARIABLE(CFG_IBSS_PS_WARMUP_TIME_NAME, WLAN_PARAM_Integer,
2736 struct hdd_config, ibssPsWarmupTime,
2737 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2738 CFG_IBSS_PS_WARMUP_TIME_DEFAULT,
2739 CFG_IBSS_PS_WARMUP_TIME_MIN,
2740 CFG_IBSS_PS_WARMUP_TIME_MAX),
2741
2742 REG_VARIABLE(CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME,
2743 WLAN_PARAM_Integer,
2744 struct hdd_config, ibssPs1RxChainInAtimEnable,
2745 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2746 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT,
2747 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
2748 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX),
2749
2750 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
2751 struct hdd_config, thermalTempMinLevel0,
2752 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2753 CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT,
2754 CFG_THERMAL_TEMP_MIN_LEVEL0_MIN,
2755 CFG_THERMAL_TEMP_MIN_LEVEL0_MAX),
2756
2757 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL0_NAME, WLAN_PARAM_Integer,
2758 struct hdd_config, thermalTempMaxLevel0,
2759 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2760 CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT,
2761 CFG_THERMAL_TEMP_MAX_LEVEL0_MIN,
2762 CFG_THERMAL_TEMP_MAX_LEVEL0_MAX),
2763
2764 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL1_NAME, WLAN_PARAM_Integer,
2765 struct hdd_config, thermalTempMinLevel1,
2766 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2767 CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT,
2768 CFG_THERMAL_TEMP_MIN_LEVEL1_MIN,
2769 CFG_THERMAL_TEMP_MIN_LEVEL1_MAX),
2770
2771 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL1_NAME, WLAN_PARAM_Integer,
2772 struct hdd_config, thermalTempMaxLevel1,
2773 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2774 CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT,
2775 CFG_THERMAL_TEMP_MAX_LEVEL1_MIN,
2776 CFG_THERMAL_TEMP_MAX_LEVEL1_MAX),
2777
2778 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL2_NAME, WLAN_PARAM_Integer,
2779 struct hdd_config, thermalTempMinLevel2,
2780 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2781 CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT,
2782 CFG_THERMAL_TEMP_MIN_LEVEL2_MIN,
2783 CFG_THERMAL_TEMP_MIN_LEVEL2_MAX),
2784
2785 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL2_NAME, WLAN_PARAM_Integer,
2786 struct hdd_config, thermalTempMaxLevel2,
2787 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2788 CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT,
2789 CFG_THERMAL_TEMP_MAX_LEVEL2_MIN,
2790 CFG_THERMAL_TEMP_MAX_LEVEL2_MAX),
2791
2792 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL3_NAME, WLAN_PARAM_Integer,
2793 struct hdd_config, thermalTempMinLevel3,
2794 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2795 CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT,
2796 CFG_THERMAL_TEMP_MIN_LEVEL3_MIN,
2797 CFG_THERMAL_TEMP_MIN_LEVEL3_MAX),
2798
2799 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL3_NAME, WLAN_PARAM_Integer,
2800 struct hdd_config, thermalTempMaxLevel3,
2801 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2802 CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT,
2803 CFG_THERMAL_TEMP_MAX_LEVEL3_MIN,
2804 CFG_THERMAL_TEMP_MAX_LEVEL3_MAX),
2805
2806 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT2G_NAME, WLAN_PARAM_Integer,
2807 struct hdd_config, TxPower2g,
2808 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2809 CFG_SET_TXPOWER_LIMIT2G_DEFAULT,
2810 CFG_SET_TXPOWER_LIMIT2G_MIN,
2811 CFG_SET_TXPOWER_LIMIT2G_MAX),
2812
2813 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT5G_NAME, WLAN_PARAM_Integer,
2814 struct hdd_config, TxPower5g,
2815 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2816 CFG_SET_TXPOWER_LIMIT5G_DEFAULT,
2817 CFG_SET_TXPOWER_LIMIT5G_MIN,
2818 CFG_SET_TXPOWER_LIMIT5G_MAX),
2819
2820 REG_VARIABLE(CFG_ENABLE_DEBUG_CONNECT_ISSUE, WLAN_PARAM_Integer,
2821 struct hdd_config, gEnableDebugLog,
2822 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2823 CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT,
2824 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN,
2825 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX),
2826
2827 REG_VARIABLE(CFG_ENABLE_RX_THREAD, WLAN_PARAM_Integer,
2828 struct hdd_config, enableRxThread,
2829 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2830 CFG_ENABLE_RX_THREAD_DEFAULT,
2831 CFG_ENABLE_RX_THREAD_MIN,
2832 CFG_ENABLE_RX_THREAD_MAX),
2833
2834 REG_VARIABLE(CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME,
2835 WLAN_PARAM_Integer,
2836 struct hdd_config, fDfsPhyerrFilterOffload,
2837 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2838 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT,
2839 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN,
2840 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX),
2841
2842 REG_VARIABLE(CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer,
2843 struct hdd_config, gEnableOverLapCh,
2844 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2845 CFG_ENABLE_OVERLAP_CH_DEFAULT,
2846 CFG_ENABLE_OVERLAP_CH_MIN,
2847 CFG_ENABLE_OVERLAP_CH_MAX),
2848
2849 REG_VARIABLE(CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer,
2850 struct hdd_config, fRegChangeDefCountry,
2851 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2852 CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT,
2853 CFG_REG_CHANGE_DEF_COUNTRY_MIN,
2854 CFG_REG_CHANGE_DEF_COUNTRY_MAX),
2855
2856#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
2857 REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
2858 struct hdd_config, TxFlowLowWaterMark,
2859 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2860 CFG_LL_TX_FLOW_LWM_DEFAULT,
2861 CFG_LL_TX_FLOW_LWM_MIN,
2862 CFG_LL_TX_FLOW_LWM_MAX),
2863 REG_VARIABLE(CFG_LL_TX_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2864 struct hdd_config, TxFlowHighWaterMarkOffset,
2865 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2866 CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT,
2867 CFG_LL_TX_FLOW_HWM_OFFSET_MIN,
2868 CFG_LL_TX_FLOW_HWM_OFFSET_MAX),
2869 REG_VARIABLE(CFG_LL_TX_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2870 struct hdd_config, TxFlowMaxQueueDepth,
2871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2872 CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT,
2873 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN,
2874 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX),
2875 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer,
2876 struct hdd_config, TxLbwFlowLowWaterMark,
2877 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2878 CFG_LL_TX_LBW_FLOW_LWM_DEFAULT,
2879 CFG_LL_TX_LBW_FLOW_LWM_MIN,
2880 CFG_LL_TX_LBW_FLOW_LWM_MAX),
2881
2882 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2883 struct hdd_config, TxLbwFlowHighWaterMarkOffset,
2884 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2885 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT,
2886 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN,
2887 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX),
2888
2889 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2890 struct hdd_config, TxLbwFlowMaxQueueDepth,
2891 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2892 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2893 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN,
2894 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX),
2895
2896 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_LWM, WLAN_PARAM_Integer,
2897 struct hdd_config, TxHbwFlowLowWaterMark,
2898 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2899 CFG_LL_TX_HBW_FLOW_LWM_DEFAULT,
2900 CFG_LL_TX_HBW_FLOW_LWM_MIN,
2901 CFG_LL_TX_HBW_FLOW_LWM_MAX),
2902
2903 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2904 struct hdd_config, TxHbwFlowHighWaterMarkOffset,
2905 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2906 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT,
2907 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN,
2908 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX),
2909
2910 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2911 struct hdd_config, TxHbwFlowMaxQueueDepth,
2912 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2913 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2914 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN,
2915 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX),
2916#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
2917#ifdef QCA_LL_TX_FLOW_CONTROL_V2
2918
2919 REG_VARIABLE(CFG_LL_TX_FLOW_STOP_QUEUE_TH, WLAN_PARAM_Integer,
2920 struct hdd_config, TxFlowStopQueueThreshold,
2921 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2922 CFG_LL_TX_FLOW_STOP_QUEUE_TH_DEFAULT,
2923 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MIN,
2924 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MAX),
2925
2926 REG_VARIABLE(CFG_LL_TX_FLOW_START_QUEUE_OFFSET, WLAN_PARAM_Integer,
2927 struct hdd_config, TxFlowStartQueueOffset,
2928 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2929 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_DEFAULT,
2930 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MIN,
2931 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MAX),
2932
2933#endif
2934 REG_VARIABLE(CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer,
2935 struct hdd_config, nInitialDwellTime,
2936 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2937 CFG_INITIAL_DWELL_TIME_DEFAULT,
2938 CFG_INITIAL_DWELL_TIME_MIN,
2939 CFG_INITIAL_DWELL_TIME_MAX),
2940
2941 REG_VARIABLE(CFG_INITIAL_SCAN_NO_DFS_CHNL_NAME, WLAN_PARAM_Integer,
2942 struct hdd_config, initial_scan_no_dfs_chnl,
2943 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2944 CFG_INITIAL_SCAN_NO_DFS_CHNL_DEFAULT,
2945 CFG_INITIAL_SCAN_NO_DFS_CHNL_MIN,
2946 CFG_INITIAL_SCAN_NO_DFS_CHNL_MAX),
2947
2948 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer,
2949 struct hdd_config, apMaxOffloadPeers,
2950 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2951 CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT,
2952 CFG_SAP_MAX_OFFLOAD_PEERS_MIN,
2953 CFG_SAP_MAX_OFFLOAD_PEERS_MAX),
2954
2955 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS, WLAN_PARAM_Integer,
2956 struct hdd_config, apMaxOffloadReorderBuffs,
2957 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2958 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_DEFAULT,
2959 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MIN,
2960 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MAX),
2961
2962 REG_VARIABLE(CFG_ADVERTISE_CONCURRENT_OPERATION_NAME,
2963 WLAN_PARAM_Integer,
2964 struct hdd_config, advertiseConcurrentOperation,
2965 VAR_FLAGS_OPTIONAL,
2966 CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT,
2967 CFG_ADVERTISE_CONCURRENT_OPERATION_MIN,
2968 CFG_ADVERTISE_CONCURRENT_OPERATION_MAX),
2969
2970 REG_VARIABLE(CFG_ENABLE_MEMORY_DEEP_SLEEP, WLAN_PARAM_Integer,
2971 struct hdd_config, enableMemDeepSleep,
2972 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2973 CFG_ENABLE_MEMORY_DEEP_SLEEP_DEFAULT,
2974 CFG_ENABLE_MEMORY_DEEP_SLEEP_MIN,
2975 CFG_ENABLE_MEMORY_DEEP_SLEEP_MAX),
2976
2977 REG_VARIABLE(CFG_DEFAULT_RATE_INDEX_24GH, WLAN_PARAM_Integer,
2978 struct hdd_config, defaultRateIndex24Ghz,
2979 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2980 CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT,
2981 CFG_DEFAULT_RATE_INDEX_24GH_MIN,
2982 CFG_DEFAULT_RATE_INDEX_24GH_MAX),
2983
2984#ifdef MEMORY_DEBUG
2985 REG_VARIABLE(CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer,
2986 struct hdd_config, IsMemoryDebugSupportEnabled,
2987 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2988 CFG_ENABLE_MEMORY_DEBUG_DEFAULT,
2989 CFG_ENABLE_MEMORY_DEBUG_MIN,
2990 CFG_ENABLE_MEMORY_DEBUG_MAX),
2991#endif
2992
2993 REG_VARIABLE(CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
2994 struct hdd_config, debugP2pRemainOnChannel,
2995 VAR_FLAGS_OPTIONAL,
2996 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT,
2997 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN,
2998 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX),
2999
3000 REG_VARIABLE(CFG_ENABLE_PACKET_LOG, WLAN_PARAM_Integer,
3001 struct hdd_config, enablePacketLog,
3002 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3003 CFG_ENABLE_PACKET_LOG_DEFAULT,
3004 CFG_ENABLE_PACKET_LOG_MIN,
3005 CFG_ENABLE_PACKET_LOG_MAX),
3006
3007#ifdef WLAN_FEATURE_ROAM_OFFLOAD
3008 REG_VARIABLE(CFG_ROAMING_OFFLOAD_NAME, WLAN_PARAM_Integer,
3009 struct hdd_config, isRoamOffloadEnabled,
3010 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3011 CFG_ROAMING_OFFLOAD_DEFAULT,
3012 CFG_ROAMING_OFFLOAD_MIN,
3013 CFG_ROAMING_OFFLOAD_MAX),
3014#endif
3015#ifdef MSM_PLATFORM
3016 REG_VARIABLE(CFG_BUS_BANDWIDTH_HIGH_THRESHOLD, WLAN_PARAM_Integer,
3017 struct hdd_config, busBandwidthHighThreshold,
3018 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3019 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_DEFAULT,
3020 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MIN,
3021 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MAX),
3022
3023 REG_VARIABLE(CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD, WLAN_PARAM_Integer,
3024 struct hdd_config, busBandwidthMediumThreshold,
3025 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3026 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_DEFAULT,
3027 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MIN,
3028 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MAX),
3029
3030 REG_VARIABLE(CFG_BUS_BANDWIDTH_LOW_THRESHOLD, WLAN_PARAM_Integer,
3031 struct hdd_config, busBandwidthLowThreshold,
3032 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3033 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_DEFAULT,
3034 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MIN,
3035 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MAX),
3036
3037 REG_VARIABLE(CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL, WLAN_PARAM_Integer,
3038 struct hdd_config, busBandwidthComputeInterval,
3039 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3040 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT,
3041 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN,
3042 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX),
3043 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_HIGH, WLAN_PARAM_Integer,
3044 struct hdd_config, tcpDelackThresholdHigh,
3045 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3046 CFG_TCP_DELACK_THRESHOLD_HIGH_DEFAULT,
3047 CFG_TCP_DELACK_THRESHOLD_HIGH_MIN,
3048 CFG_TCP_DELACK_THRESHOLD_HIGH_MAX),
3049 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_LOW, WLAN_PARAM_Integer,
3050 struct hdd_config, tcpDelackThresholdLow,
3051 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3052 CFG_TCP_DELACK_THRESHOLD_LOW_DEFAULT,
3053 CFG_TCP_DELACK_THRESHOLD_LOW_MIN,
3054 CFG_TCP_DELACK_THRESHOLD_LOW_MAX),
Mohit Khannae71e2262015-11-10 09:37:24 -08003055
3056 REG_VARIABLE(CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME, WLAN_PARAM_Integer,
3057 struct hdd_config, tcp_tx_high_tput_thres,
3058 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3059 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_DEFAULT,
3060 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MIN,
3061 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MAX),
3062
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003063#endif
3064
3065 REG_VARIABLE(CFG_ENABLE_FW_LOG_TYPE, WLAN_PARAM_Integer,
3066 struct hdd_config, enableFwLogType,
3067 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3068 CFG_ENABLE_FW_LOG_TYPE_DEFAULT,
3069 CFG_ENABLE_FW_LOG_TYPE_MIN,
3070 CFG_ENABLE_FW_LOG_TYPE_MAX),
3071
3072 REG_VARIABLE(CFG_ENABLE_FW_DEBUG_LOG_LEVEL, WLAN_PARAM_Integer,
3073 struct hdd_config, enableFwLogLevel,
3074 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3075 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_DEFAULT,
3076 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MIN,
3077 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MAX),
3078
3079 REG_VARIABLE_STRING(CFG_ENABLE_FW_MODULE_LOG_LEVEL, WLAN_PARAM_String,
3080 struct hdd_config, enableFwModuleLogLevel,
3081 VAR_FLAGS_OPTIONAL,
3082 (void *)CFG_ENABLE_FW_MODULE_LOG_DEFAULT),
3083
3084#ifdef WLAN_FEATURE_11W
3085 REG_VARIABLE(CFG_PMF_SA_QUERY_MAX_RETRIES_NAME, WLAN_PARAM_Integer,
3086 struct hdd_config, pmfSaQueryMaxRetries,
3087 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3088 CFG_PMF_SA_QUERY_MAX_RETRIES_DEFAULT,
3089 CFG_PMF_SA_QUERY_MAX_RETRIES_MIN,
3090 CFG_PMF_SA_QUERY_MAX_RETRIES_MAX),
3091
3092 REG_VARIABLE(CFG_PMF_SA_QUERY_RETRY_INTERVAL_NAME, WLAN_PARAM_Integer,
3093 struct hdd_config, pmfSaQueryRetryInterval,
3094 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3095 CFG_PMF_SA_QUERY_RETRY_INTERVAL_DEFAULT,
3096 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MIN,
3097 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MAX),
3098#endif
3099 REG_VARIABLE(CFG_MAX_CONCURRENT_CONNECTIONS_NAME, WLAN_PARAM_Integer,
3100 struct hdd_config, gMaxConcurrentActiveSessions,
3101 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3102 CFG_MAX_CONCURRENT_CONNECTIONS_DEFAULT,
3103 CFG_MAX_CONCURRENT_CONNECTIONS_MIN,
3104 CFG_MAX_CONCURRENT_CONNECTIONS_MAX),
3105
3106#ifdef FEATURE_GREEN_AP
3107 REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,
3108 struct hdd_config, enableGreenAP,
3109 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3110 CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
3111 CFG_ENABLE_GREEN_AP_FEATURE_MIN,
3112 CFG_ENABLE_GREEN_AP_FEATURE_MAX),
Ryan Hsucb118cf2015-11-09 16:03:53 -08003113 REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,
3114 struct hdd_config, enable_egap,
3115 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3116 CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,
3117 CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,
3118 CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),
3119 REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,
3120 struct hdd_config, egap_inact_time,
3121 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3122 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,
3123 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,
3124 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),
3125 REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,
3126 struct hdd_config, egap_wait_time,
3127 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3128 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,
3129 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,
3130 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),
3131 REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,
3132 struct hdd_config, egap_feature_flag,
3133 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3134 CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,
3135 CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,
3136 CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003137#endif
3138
3139 REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
3140 struct hdd_config, ignoreCAC,
3141 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3142 CFG_IGNORE_CAC_DEFAULT,
3143 CFG_IGNORE_CAC_MIN,
3144 CFG_IGNORE_CAC_MAX),
3145
3146 REG_VARIABLE(CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_NAME, WLAN_PARAM_Integer,
3147 struct hdd_config, IsSapDfsChSifsBurstEnabled,
3148 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3149 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_DEFAULT,
3150 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MIN,
3151 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MAX),
3152
3153 REG_VARIABLE(CFG_DFS_RADAR_PRI_MULTIPLIER_NAME, WLAN_PARAM_Integer,
3154 struct hdd_config, dfsRadarPriMultiplier,
3155 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3156 CFG_DFS_RADAR_PRI_MULTIPLIER_DEFAULT,
3157 CFG_DFS_RADAR_PRI_MULTIPLIER_MIN,
3158 CFG_DFS_RADAR_PRI_MULTIPLIER_MAX),
3159
3160 REG_VARIABLE(CFG_REORDER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3161 struct hdd_config, reorderOffloadSupport,
3162 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3163 CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT,
3164 CFG_REORDER_OFFLOAD_SUPPORT_MIN,
3165 CFG_REORDER_OFFLOAD_SUPPORT_MAX),
3166
3167 REG_VARIABLE(CFG_IPA_UC_TX_BUF_COUNT_NAME, WLAN_PARAM_Integer,
3168 struct hdd_config, IpaUcTxBufCount,
3169 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3170 CFG_IPA_UC_TX_BUF_COUNT_DEFAULT,
3171 CFG_IPA_UC_TX_BUF_COUNT_MIN,
3172 CFG_IPA_UC_TX_BUF_COUNT_MAX),
3173
3174 REG_VARIABLE(CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer,
3175 struct hdd_config, IpaUcTxBufSize,
3176 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3177 CFG_IPA_UC_TX_BUF_SIZE_DEFAULT,
3178 CFG_IPA_UC_TX_BUF_SIZE_MIN,
3179 CFG_IPA_UC_TX_BUF_SIZE_MAX),
3180
3181 REG_VARIABLE(CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer,
3182 struct hdd_config, IpaUcRxIndRingCount,
3183 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3184 CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT,
3185 CFG_IPA_UC_RX_IND_RING_COUNT_MIN,
3186 CFG_IPA_UC_RX_IND_RING_COUNT_MAX),
3187
3188 REG_VARIABLE(CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer,
3189 struct hdd_config, IpaUcTxPartitionBase,
3190 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3191 CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT,
3192 CFG_IPA_UC_TX_PARTITION_BASE_MIN,
3193 CFG_IPA_UC_TX_PARTITION_BASE_MAX),
3194#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
3195 REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer,
3196 struct hdd_config, wlanLoggingEnable,
3197 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3198 CFG_WLAN_LOGGING_SUPPORT_DEFAULT,
3199 CFG_WLAN_LOGGING_SUPPORT_DISABLE,
3200 CFG_WLAN_LOGGING_SUPPORT_ENABLE),
3201
3202 REG_VARIABLE(CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_NAME,
3203 WLAN_PARAM_Integer,
3204 struct hdd_config, wlanLoggingFEToConsole,
3205 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3206 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DEFAULT,
3207 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DISABLE,
3208 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_ENABLE),
3209
3210 REG_VARIABLE(CFG_WLAN_LOGGING_NUM_BUF_NAME, WLAN_PARAM_Integer,
3211 struct hdd_config, wlanLoggingNumBuf,
3212 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3213 CFG_WLAN_LOGGING_NUM_BUF_DEFAULT,
3214 CFG_WLAN_LOGGING_NUM_BUF_MIN,
3215 CFG_WLAN_LOGGING_NUM_BUF_MAX),
3216#endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */
3217
3218 REG_VARIABLE(CFG_ENABLE_SIFS_BURST, WLAN_PARAM_Integer,
3219 struct hdd_config, enableSifsBurst,
3220 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3221 CFG_ENABLE_SIFS_BURST_DEFAULT,
3222 CFG_ENABLE_SIFS_BURST_MIN,
3223 CFG_ENABLE_SIFS_BURST_MAX),
3224
3225#ifdef WLAN_FEATURE_LPSS
3226 REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer,
Komal Seelamc11bb222016-01-27 18:57:10 +05303227 struct hdd_config, enable_lpass_support,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003228 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3229 CFG_ENABLE_LPASS_SUPPORT_DEFAULT,
3230 CFG_ENABLE_LPASS_SUPPORT_MIN,
3231 CFG_ENABLE_LPASS_SUPPORT_MAX),
3232#endif
3233
3234#ifdef WLAN_FEATURE_NAN
3235 REG_VARIABLE(CFG_ENABLE_NAN_SUPPORT, WLAN_PARAM_Integer,
3236 struct hdd_config, enable_nan_support,
3237 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3238 CFG_ENABLE_NAN_SUPPORT_DEFAULT,
3239 CFG_ENABLE_NAN_SUPPORT_MIN,
3240 CFG_ENABLE_NAN_SUPPORT_MAX),
3241#endif
3242
3243 REG_VARIABLE(CFG_ENABLE_SELF_RECOVERY, WLAN_PARAM_Integer,
3244 struct hdd_config, enableSelfRecovery,
3245 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3246 CFG_ENABLE_SELF_RECOVERY_DEFAULT,
3247 CFG_ENABLE_SELF_RECOVERY_MIN,
3248 CFG_ENABLE_SELF_RECOVERY_MAX),
3249
3250#ifdef FEATURE_WLAN_FORCE_SAP_SCC
3251 REG_VARIABLE(CFG_SAP_SCC_CHAN_AVOIDANCE, WLAN_PARAM_Integer,
3252 struct hdd_config, SapSccChanAvoidance,
3253 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3254 CFG_SAP_SCC_CHAN_AVOIDANCE_DEFAULT,
3255 CFG_SAP_SCC_CHAN_AVOIDANCE_MIN,
3256 CFG_SAP_SCC_CHAN_AVOIDANCE_MAX),
3257#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
3258
3259 REG_VARIABLE(CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer,
3260 struct hdd_config, enableSapSuspend,
3261 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3262 CFG_ENABLE_SAP_SUSPEND_DEFAULT,
3263 CFG_ENABLE_SAP_SUSPEND_MIN,
3264 CFG_ENABLE_SAP_SUSPEND_MAX),
3265
3266#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
3267 REG_VARIABLE(CFG_EXTWOW_GO_TO_SUSPEND, WLAN_PARAM_Integer,
3268 struct hdd_config, extWowGotoSuspend,
3269 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3270 CFG_EXTWOW_GO_TO_SUSPEND_DEFAULT,
3271 CFG_EXTWOW_GO_TO_SUSPEND_MIN,
3272 CFG_EXTWOW_GO_TO_SUSPEND_MAX),
3273
3274 REG_VARIABLE(CFG_EXTWOW_APP1_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3275 struct hdd_config, extWowApp1WakeupPinNumber,
3276 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3277 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_DEFAULT,
3278 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MIN,
3279 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MAX),
3280
3281 REG_VARIABLE(CFG_EXTWOW_APP2_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3282 struct hdd_config, extWowApp2WakeupPinNumber,
3283 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3284 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_DEFAULT,
3285 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MIN,
3286 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MAX),
3287
3288 REG_VARIABLE(CFG_EXTWOW_KA_INIT_PING_INTERVAL, WLAN_PARAM_Integer,
3289 struct hdd_config, extWowApp2KAInitPingInterval,
3290 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3291 CFG_EXTWOW_KA_INIT_PING_INTERVAL_DEFAULT,
3292 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MIN,
3293 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MAX),
3294
3295 REG_VARIABLE(CFG_EXTWOW_KA_MIN_PING_INTERVAL, WLAN_PARAM_Integer,
3296 struct hdd_config, extWowApp2KAMinPingInterval,
3297 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3298 CFG_EXTWOW_KA_MIN_PING_INTERVAL_DEFAULT,
3299 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MIN,
3300 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MAX),
3301
3302 REG_VARIABLE(CFG_EXTWOW_KA_MAX_PING_INTERVAL, WLAN_PARAM_Integer,
3303 struct hdd_config, extWowApp2KAMaxPingInterval,
3304 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3305 CFG_EXTWOW_KA_MAX_PING_INTERVAL_DEFAULT,
3306 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MIN,
3307 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MAX),
3308
3309 REG_VARIABLE(CFG_EXTWOW_KA_INC_PING_INTERVAL, WLAN_PARAM_Integer,
3310 struct hdd_config, extWowApp2KAIncPingInterval,
3311 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3312 CFG_EXTWOW_KA_INC_PING_INTERVAL_DEFAULT,
3313 CFG_EXTWOW_KA_INC_PING_INTERVAL_MIN,
3314 CFG_EXTWOW_KA_INC_PING_INTERVAL_MAX),
3315
3316 REG_VARIABLE(CFG_EXTWOW_TCP_SRC_PORT, WLAN_PARAM_Integer,
3317 struct hdd_config, extWowApp2TcpSrcPort,
3318 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3319 CFG_EXTWOW_TCP_SRC_PORT_DEFAULT,
3320 CFG_EXTWOW_TCP_SRC_PORT_MIN,
3321 CFG_EXTWOW_TCP_SRC_PORT_MAX),
3322
3323 REG_VARIABLE(CFG_EXTWOW_TCP_DST_PORT, WLAN_PARAM_Integer,
3324 struct hdd_config, extWowApp2TcpDstPort,
3325 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3326 CFG_EXTWOW_TCP_DST_PORT_DEFAULT,
3327 CFG_EXTWOW_TCP_DST_PORT_MIN,
3328 CFG_EXTWOW_TCP_DST_PORT_MAX),
3329
3330 REG_VARIABLE(CFG_EXTWOW_TCP_TX_TIMEOUT, WLAN_PARAM_Integer,
3331 struct hdd_config, extWowApp2TcpTxTimeout,
3332 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3333 CFG_EXTWOW_TCP_TX_TIMEOUT_DEFAULT,
3334 CFG_EXTWOW_TCP_TX_TIMEOUT_MIN,
3335 CFG_EXTWOW_TCP_TX_TIMEOUT_MAX),
3336
3337 REG_VARIABLE(CFG_EXTWOW_TCP_RX_TIMEOUT, WLAN_PARAM_Integer,
3338 struct hdd_config, extWowApp2TcpRxTimeout,
3339 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3340 CFG_EXTWOW_TCP_RX_TIMEOUT_DEFAULT,
3341 CFG_EXTWOW_TCP_RX_TIMEOUT_MIN,
3342 CFG_EXTWOW_TCP_RX_TIMEOUT_MAX),
3343#endif
3344 REG_VARIABLE(CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_NAME, WLAN_PARAM_Integer,
3345 struct hdd_config, gEnableDeauthToDisassocMap,
3346 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3347 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_DEFAULT,
3348 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MIN,
3349 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MAX),
3350#ifdef DHCP_SERVER_OFFLOAD
3351 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3352 struct hdd_config, enableDHCPServerOffload,
3353 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3354 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_DEFAULT,
3355 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MIN,
3356 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MAX),
3357 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_NAME,
3358 WLAN_PARAM_Integer,
3359 struct hdd_config, dhcpMaxNumClients,
3360 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3361 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_DEFAULT,
3362 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MIN,
3363 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MAX),
3364 REG_VARIABLE_STRING(CFG_DHCP_SERVER_IP_NAME, WLAN_PARAM_String,
3365 struct hdd_config, dhcpServerIP,
3366 VAR_FLAGS_OPTIONAL,
3367 (void *)CFG_DHCP_SERVER_IP_DEFAULT),
3368#endif /* DHCP_SERVER_OFFLOAD */
3369
3370 REG_VARIABLE(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION, WLAN_PARAM_Integer,
3371 struct hdd_config, sendDeauthBeforeCon,
3372 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3373 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_DEFAULT,
3374 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MIN,
3375 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MAX),
3376
3377 REG_VARIABLE(CFG_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer,
3378 struct hdd_config, enable_mac_spoofing,
3379 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3380 CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT,
3381 CFG_ENABLE_MAC_ADDR_SPOOFING_MIN,
3382 CFG_ENABLE_MAC_ADDR_SPOOFING_MAX),
3383
3384 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE1_NAME, WLAN_PARAM_Integer,
3385 struct hdd_config, conc_custom_rule1,
3386 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3387 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_DEFAULT,
3388 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MIN,
3389 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MAX),
3390
3391 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE2_NAME, WLAN_PARAM_Integer,
3392 struct hdd_config, conc_custom_rule2,
3393 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3394 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_DEFAULT,
3395 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MIN,
3396 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MAX),
3397
3398 REG_VARIABLE(CFG_ENABLE_STA_CONNECTION_IN_5GHZ, WLAN_PARAM_Integer,
3399 struct hdd_config, is_sta_connection_in_5gz_enabled,
3400 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3401 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_DEFAULT,
3402 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MIN,
3403 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MAX),
3404
3405 REG_VARIABLE(CFG_STA_MIRACAST_MCC_REST_TIME_VAL, WLAN_PARAM_Integer,
3406 struct hdd_config, sta_miracast_mcc_rest_time_val,
3407 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3408 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_DEFAULT,
3409 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MIN,
3410 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MAX),
3411
3412#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
3413 REG_VARIABLE(CFG_SAP_MCC_CHANNEL_AVOIDANCE_NAME,
3414 WLAN_PARAM_Integer,
3415 struct hdd_config,
3416 sap_channel_avoidance,
3417 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3418 CFG_SAP_MCC_CHANNEL_AVOIDANCE_DEFAULT,
3419 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MIN,
3420 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MAX),
3421#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
3422
3423 REG_VARIABLE(CFG_SAP_P2P_11AC_OVERRIDE_NAME, WLAN_PARAM_Integer,
3424 struct hdd_config, sap_p2p_11ac_override,
3425 VAR_FLAGS_OPTIONAL |
3426 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3427 CFG_SAP_P2P_11AC_OVERRIDE_DEFAULT,
3428 CFG_SAP_P2P_11AC_OVERRIDE_MIN,
3429 CFG_SAP_P2P_11AC_OVERRIDE_MAX),
3430
3431 REG_VARIABLE(CFG_ENABLE_RAMDUMP_COLLECTION, WLAN_PARAM_Integer,
3432 struct hdd_config, is_ramdump_enabled,
3433 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3434 CFG_ENABLE_RAMDUMP_COLLECTION_DEFAULT,
3435 CFG_ENABLE_RAMDUMP_COLLECTION_MIN,
3436 CFG_ENABLE_RAMDUMP_COLLECTION_MAX),
3437
3438 REG_VARIABLE(CFG_SAP_DOT11MC, WLAN_PARAM_Integer,
3439 struct hdd_config, sap_dot11mc,
3440 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3441 CFG_SAP_DOT11MC_DEFAULT,
3442 CFG_SAP_DOT11MC_MIN,
3443 CFG_SAP_DOT11MC_MAX),
3444
3445 REG_VARIABLE(CFG_ENABLE_NON_DFS_CHAN_ON_RADAR, WLAN_PARAM_Integer,
3446 struct hdd_config, prefer_non_dfs_on_radar,
3447 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3448 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT,
3449 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN,
3450 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX),
3451
3452 REG_VARIABLE(CFG_MULTICAST_HOST_FW_MSGS, WLAN_PARAM_Integer,
3453 struct hdd_config, multicast_host_fw_msgs,
3454 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3455 CFG_MULTICAST_HOST_FW_MSGS_DEFAULT,
3456 CFG_MULTICAST_HOST_FW_MSGS_MIN,
3457 CFG_MULTICAST_HOST_FW_MSGS_MAX),
3458
3459 REG_VARIABLE(CFG_CONC_SYSTEM_PREF, WLAN_PARAM_Integer,
3460 struct hdd_config, conc_system_pref,
3461 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3462 CFG_CONC_SYSTEM_PREF_DEFAULT,
3463 CFG_CONC_SYSTEM_PREF_MIN,
3464 CFG_CONC_SYSTEM_PREF_MAX),
3465
3466 REG_VARIABLE(CFG_POLICY_MNGR_ENABLE, WLAN_PARAM_Integer,
3467 struct hdd_config, policy_manager_enabled,
3468 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3469 CFG_POLICY_MNGR_ENABLE_DEFAULT,
3470 CFG_POLICY_MNGR_ENABLE_MIN,
3471 CFG_POLICY_MNGR_ENABLE_MAX),
3472
3473 REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer,
3474 struct hdd_config, tso_enable,
3475 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3476 CFG_TSO_ENABLED_DEFAULT,
3477 CFG_TSO_ENABLED_MIN,
3478 CFG_TSO_ENABLED_MAX),
3479
3480 REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer,
3481 struct hdd_config, lro_enable,
3482 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3483 CFG_LRO_ENABLED_DEFAULT,
3484 CFG_LRO_ENABLED_MIN,
3485 CFG_LRO_ENABLED_MAX),
3486
3487 REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
3488 struct hdd_config, active_mode_offload,
3489 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3490 CFG_ACTIVE_MODE_OFFLOAD_DEFAULT,
3491 CFG_ACTIVE_MODE_OFFLOAD_MIN,
3492 CFG_ACTIVE_MODE_OFFLOAD_MAX),
3493
3494 REG_VARIABLE(CFG_FINE_TIME_MEAS_CAPABILITY, WLAN_PARAM_HexInteger,
3495 struct hdd_config, fine_time_meas_cap,
3496 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3497 CFG_FINE_TIME_MEAS_CAPABILITY_DEFAULT,
3498 CFG_FINE_TIME_MEAS_CAPABILITY_MIN,
3499 CFG_FINE_TIME_MEAS_CAPABILITY_MAX),
3500
3501#ifdef WLAN_FEATURE_FASTPATH
3502 REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer,
3503 struct hdd_config, fastpath_enable,
3504 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3505 CFG_ENABLE_FASTPATH_DEFAULT,
3506 CFG_ENABLE_FASTPATH_MIN,
3507 CFG_ENABLE_FASTPATH_MAX),
3508#endif
3509 REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer,
3510 struct hdd_config, max_scan_count,
3511 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3512 CFG_MAX_SCAN_COUNT_DEFAULT,
3513 CFG_MAX_SCAN_COUNT_MIN,
3514 CFG_MAX_SCAN_COUNT_MAX),
3515
3516 REG_VARIABLE(CFG_DOT11P_MODE_NAME, WLAN_PARAM_Integer,
3517 struct hdd_config, dot11p_mode,
3518 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3519 CFG_DOT11P_MODE_DEFAULT,
3520 CFG_DOT11P_MODE_MIN,
3521 CFG_DOT11P_MODE_MAX),
3522
3523#ifdef FEATURE_NAPI
3524 REG_VARIABLE(CFG_NAPI_NAME, WLAN_PARAM_Integer,
3525 struct hdd_config, napi_enable,
3526 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3527 CFG_NAPI_DEFAULT,
3528 CFG_NAPI_MIN,
3529 CFG_NAPI_MAX),
3530#endif /* FEATURE_NAPI */
3531
3532#ifdef FEATURE_WLAN_EXTSCAN
3533 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME,
3534 WLAN_PARAM_Integer,
3535 struct hdd_config, extscan_passive_max_chn_time,
3536 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3537 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
3538 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN,
3539 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX),
3540
3541 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME,
3542 WLAN_PARAM_Integer,
3543 struct hdd_config, extscan_passive_min_chn_time,
3544 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3545 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
3546 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN,
3547 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX),
3548
3549 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME,
3550 WLAN_PARAM_Integer,
3551 struct hdd_config, extscan_active_max_chn_time,
3552 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3553 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
3554 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN,
3555 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX),
3556
3557 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME,
3558 WLAN_PARAM_Integer,
3559 struct hdd_config, extscan_active_min_chn_time,
3560 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3561 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
3562 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN,
3563 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX),
3564#endif
3565
3566 REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer,
3567 struct hdd_config, ce_classify_enabled,
3568 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3569 CFG_CE_CLASSIFY_ENABLE_DEFAULT,
3570 CFG_CE_CLASSIFY_ENABLE_MIN,
3571 CFG_CE_CLASSIFY_ENABLE_MAX),
3572
3573 REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
3574 struct hdd_config, dual_mac_feature_disable,
3575 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3576 CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT,
3577 CFG_DUAL_MAC_FEATURE_DISABLE_MIN,
3578 CFG_DUAL_MAC_FEATURE_DISABLE_MAX),
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07003579#ifdef FEATURE_WLAN_SCAN_PNO
3580 REG_VARIABLE(CFG_PNO_CHANNEL_PREDICTION_NAME, WLAN_PARAM_Integer,
3581 struct hdd_config, pno_channel_prediction,
3582 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3583 CFG_PNO_CHANNEL_PREDICTION_DEFAULT,
3584 CFG_PNO_CHANNEL_PREDICTION_MIN,
3585 CFG_PNO_CHANNEL_PREDICTION_MAX),
3586
3587 REG_VARIABLE(CFG_TOP_K_NUM_OF_CHANNELS_NAME, WLAN_PARAM_Integer,
3588 struct hdd_config, top_k_num_of_channels,
3589 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3590 CFG_TOP_K_NUM_OF_CHANNELS_DEFAULT,
3591 CFG_TOP_K_NUM_OF_CHANNELS_MIN,
3592 CFG_TOP_K_NUM_OF_CHANNELS_MAX),
3593
3594 REG_VARIABLE(CFG_STATIONARY_THRESHOLD_NAME, WLAN_PARAM_Integer,
3595 struct hdd_config, stationary_thresh,
3596 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3597 CFG_STATIONARY_THRESHOLD_DEFAULT,
3598 CFG_STATIONARY_THRESHOLD_MIN,
3599 CFG_STATIONARY_THRESHOLD_MAX),
3600
3601 REG_VARIABLE(CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_NAME,
3602 WLAN_PARAM_Integer,
3603 struct hdd_config, channel_prediction_full_scan,
3604 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3605 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_DEFAULT,
3606 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_MIN,
3607 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_MAX),
3608#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003609
3610 REG_VARIABLE(CFG_TX_CHAIN_MASK_CCK, WLAN_PARAM_Integer,
3611 struct hdd_config, tx_chain_mask_cck,
3612 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3613 CFG_TX_CHAIN_MASK_CCK_DEFAULT,
3614 CFG_TX_CHAIN_MASK_CCK_MIN,
3615 CFG_TX_CHAIN_MASK_CCK_MAX),
3616
3617 REG_VARIABLE(CFG_TX_CHAIN_MASK_1SS, WLAN_PARAM_Integer,
3618 struct hdd_config, tx_chain_mask_1ss,
3619 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3620 CFG_TX_CHAIN_MASK_1SS_DEFAULT,
3621 CFG_TX_CHAIN_MASK_1SS_MIN,
3622 CFG_TX_CHAIN_MASK_1SS_MAX),
3623
3624 REG_VARIABLE(CFG_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer,
3625 struct hdd_config, self_gen_frm_pwr,
3626 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3627 CFG_SELF_GEN_FRM_PWR_DEFAULT,
3628 CFG_SELF_GEN_FRM_PWR_MIN,
3629 CFG_SELF_GEN_FRM_PWR_MAX),
3630
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07003631 REG_VARIABLE(CFG_EARLY_STOP_SCAN_ENABLE, WLAN_PARAM_Integer,
3632 struct hdd_config, early_stop_scan_enable,
3633 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3634 CFG_EARLY_STOP_SCAN_ENABLE_DEFAULT,
3635 CFG_EARLY_STOP_SCAN_ENABLE_MIN,
3636 CFG_EARLY_STOP_SCAN_ENABLE_MAX),
3637
3638 REG_VARIABLE(CFG_EARLY_STOP_SCAN_MIN_THRESHOLD,
3639 WLAN_PARAM_SignedInteger, struct hdd_config,
3640 early_stop_scan_min_threshold,
3641 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3642 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_DEFAULT,
3643 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_MIN,
3644 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_MAX),
3645
3646 REG_VARIABLE(CFG_EARLY_STOP_SCAN_MAX_THRESHOLD,
3647 WLAN_PARAM_SignedInteger, struct hdd_config,
3648 early_stop_scan_max_threshold,
3649 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3650 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_DEFAULT,
3651 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_MIN,
3652 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_MAX),
3653
Varun Reddy Yeturu044bda22015-11-21 22:03:40 -08003654 REG_VARIABLE(CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME,
3655 WLAN_PARAM_SignedInteger,
3656 struct hdd_config, first_scan_bucket_threshold,
3657 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3658 CFG_FIRST_SCAN_BUCKET_THRESHOLD_DEFAULT,
3659 CFG_FIRST_SCAN_BUCKET_THRESHOLD_MIN,
3660 CFG_FIRST_SCAN_BUCKET_THRESHOLD_MAX),
3661
Ravi Joshi742495d2015-11-09 18:56:53 -08003662#ifdef FEATURE_LFR_SUBNET_DETECTION
3663 REG_VARIABLE(CFG_ENABLE_LFR_SUBNET_DETECTION, WLAN_PARAM_Integer,
3664 struct hdd_config, enable_lfr_subnet_detection,
3665 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3666 CFG_ENABLE_LFR_SUBNET_DEFAULT,
3667 CFG_ENABLE_LFR_SUBNET_MIN,
3668 CFG_ENABLE_LFR_SUBNET_MAX),
3669#endif
Deepak Dhamdhere68929ec2015-08-05 15:16:35 -07003670
3671 REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer,
3672 struct hdd_config, inform_bss_rssi_raw,
3673 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3674 CFG_INFORM_BSS_RSSI_RAW_DEFAULT,
3675 CFG_INFORM_BSS_RSSI_RAW_MIN,
3676 CFG_INFORM_BSS_RSSI_RAW_MAX),
Tushnim Bhattacharyya24e12a62015-10-12 14:51:56 -07003677
3678#ifdef QCA_WIFI_3_0_EMU
3679 REG_VARIABLE(CFG_ENABLE_M2M_LIMITATION, WLAN_PARAM_Integer,
3680 struct hdd_config, enable_m2m_limitation,
3681 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
Tushnim Bhattacharyya3e2e9352016-02-02 13:31:31 -08003682 CFG_ENABLE_M2M_LIMITATION_DEFAULT,
3683 CFG_ENABLE_M2M_LIMITATION_MIN,
3684 CFG_ENABLE_M2M_LIMITATION_MAX),
Tushnim Bhattacharyya24e12a62015-10-12 14:51:56 -07003685#endif
3686
Gupta, Kapilc68ad462016-02-01 19:17:23 +05303687 REG_VARIABLE(CFG_ROAM_DENSE_TRAFFIC_THRESHOLD, WLAN_PARAM_Integer,
3688 struct hdd_config, roam_dense_traffic_thresh,
3689 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3690 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_DEFAULT,
3691 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_MIN,
3692 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_MAX),
3693
3694 REG_VARIABLE(CFG_ROAM_DENSE_RSSI_THRE_OFFSET, WLAN_PARAM_Integer,
3695 struct hdd_config, roam_dense_rssi_thresh_offset,
3696 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3697 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_DEFAULT,
3698 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MIN,
3699 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MAX),
3700
3701 REG_VARIABLE(CFG_ROAM_DENSE_MIN_APS, WLAN_PARAM_Integer,
3702 struct hdd_config, roam_dense_min_aps,
3703 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3704 CFG_ROAM_DENSE_MIN_APS_DEFAULT,
3705 CFG_ROAM_DENSE_MIN_APS_MIN,
3706 CFG_ROAM_DENSE_MIN_APS_MAX),
3707
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003708};
3709
3710
3711/**
3712 * get_next_line() - find and locate the new line pointer
3713 * @str: pointer to string
3714 *
3715 * This function returns a pointer to the character after the occurence
3716 * of a new line character. It also modifies the original string by replacing
3717 * the '\n' character with the null character.
3718 *
3719 * Return: the pointer to the character at new line,
3720 * or NULL if no new line character was found
3721 */
3722static char *get_next_line(char *str)
3723{
3724 char c;
3725
3726 if (str == NULL || *str == '\0') {
3727 return NULL;
3728 }
3729
3730 c = *str;
3731 while (c != '\n' && c != '\0' && c != 0xd) {
3732 str = str + 1;
3733 c = *str;
3734 }
3735
3736 if (c == '\0') {
3737 return NULL;
3738 } else {
3739 *str = '\0';
3740 return str + 1;
3741 }
3742
3743 return NULL;
3744}
3745
3746/** look for space. Ascii values to look are
3747 * 0x09 == horizontal tab
3748 * 0x0a == Newline ("\n")
3749 * 0x0b == vertical tab
3750 * 0x0c == Newpage or feed form.
3751 * 0x0d == carriage return (CR or "\r")
3752 * Null ('\0') should not considered as space.
3753 */
3754#define i_isspace(ch) (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')
3755
3756/**
3757 * i_trim() - trims any leading and trailing white spaces
3758 * @str: pointer to string
3759 *
3760 * Return: the pointer of the string
3761 */
3762static char *i_trim(char *str)
3763{
3764 char *ptr;
3765
3766 if (*str == '\0')
3767 return str;
3768
3769 /* Find the first non white-space */
3770 ptr = str;
3771 while (i_isspace(*ptr))
3772 ptr++;
3773
3774 if (*ptr == '\0')
3775 return str;
3776
3777 /* This is the new start of the string */
3778 str = ptr;
3779
3780 /* Find the last non white-space */
3781 ptr += strlen(ptr) - 1;
3782
3783 while (ptr != str && i_isspace(*ptr))
3784 ptr--;
3785
3786 /* Null terminate the following character */
3787 ptr[1] = '\0';
3788
3789 return str;
3790}
3791
3792/* Maximum length of the confgiuration name and value */
3793#define CFG_VALUE_MAX_LEN 256
3794#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
3795
3796/**
3797 * hdd_cfg_get_config() - get the configuration content
3798 * @reg_table: pointer to configuration table
3799 * @cRegTableEntries: number of the configuration entries
3800 * @ini_struct: pointer to the hdd config knob
3801 * @pHddCtx: pointer to hdd context
3802 * @pBuf: buffer to store the configuration
3803 * @buflen: size of the buffer
3804 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303805 * Return: QDF_STATUS_SUCCESS if the configuration and buffer size can carry
3806 * the content, otherwise QDF_STATUS_E_RESOURCES
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003807 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303808static QDF_STATUS hdd_cfg_get_config(REG_TABLE_ENTRY *reg_table,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003809 unsigned long cRegTableEntries,
3810 uint8_t *ini_struct,
3811 hdd_context_t *pHddCtx, char *pBuf,
3812 int buflen)
3813{
3814 unsigned int idx;
3815 REG_TABLE_ENTRY *pRegEntry = reg_table;
3816 uint32_t value;
3817 char valueStr[CFG_VALUE_MAX_LEN];
3818 char configStr[CFG_ENTRY_MAX_LEN];
3819 char *fmt;
3820 void *pField;
Anurag Chouhan6d760662016-02-20 16:05:43 +05303821 struct qdf_mac_addr *pMacAddr;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003822 char *pCur = pBuf;
3823 int curlen;
3824
3825 /* start with an empty string */
3826 *pCur = '\0';
3827
3828 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
3829 pField = ini_struct + pRegEntry->VarOffset;
3830
3831 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
3832 (WLAN_PARAM_SignedInteger == pRegEntry->RegType) ||
3833 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
3834 value = 0;
3835 memcpy(&value, pField, pRegEntry->VarSize);
3836 if (WLAN_PARAM_HexInteger == pRegEntry->RegType) {
3837 fmt = "%x";
3838 } else if (WLAN_PARAM_SignedInteger ==
3839 pRegEntry->RegType) {
3840 fmt = "%d";
3841 } else {
3842 fmt = "%u";
3843 }
3844 snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
3845 } else if (WLAN_PARAM_String == pRegEntry->RegType) {
3846 snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s",
3847 (char *)pField);
3848 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
Anurag Chouhan6d760662016-02-20 16:05:43 +05303849 pMacAddr = (struct qdf_mac_addr *) pField;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003850 snprintf(valueStr, CFG_VALUE_MAX_LEN,
3851 "%02x:%02x:%02x:%02x:%02x:%02x",
3852 pMacAddr->bytes[0],
3853 pMacAddr->bytes[1],
3854 pMacAddr->bytes[2],
3855 pMacAddr->bytes[3],
3856 pMacAddr->bytes[4], pMacAddr->bytes[5]);
3857 } else {
3858 snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
3859 }
3860 curlen = scnprintf(configStr, CFG_ENTRY_MAX_LEN,
3861 "%s=[%s]%s\n",
3862 pRegEntry->RegName,
3863 valueStr,
3864 test_bit(idx,
3865 (void *)&pHddCtx->config->
3866 bExplicitCfg) ? "*" : "");
3867
3868 /* Ideally we want to return the config to the application,
3869 * however the config is too big so we just printk() for now
3870 */
3871#ifdef RETURN_IN_BUFFER
3872 if (curlen <= buflen) {
3873 /* copy string + '\0' */
3874 memcpy(pCur, configStr, curlen + 1);
3875
3876 /* account for addition; */
3877 pCur += curlen;
3878 buflen -= curlen;
3879 } else {
3880 /* buffer space exhausted, return what we have */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303881 return QDF_STATUS_E_RESOURCES;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003882 }
3883#else
3884 printk(KERN_INFO "%s", configStr);
3885#endif /* RETURN_IN_BUFFER */
3886
3887 }
3888
3889#ifndef RETURN_IN_BUFFER
3890 /* notify application that output is in system log */
3891 snprintf(pCur, buflen, "WLAN configuration written to system log");
3892#endif /* RETURN_IN_BUFFER */
3893
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303894 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003895}
3896
3897/** struct tCfgIniEntry - ini configuration entry
3898 *
3899 * @name: name of the entry
3900 * @value: value of the entry
3901 */
3902typedef struct {
3903 char *name;
3904 char *value;
3905} tCfgIniEntry;
3906
3907/**
3908 * find_cfg_item() - find the configuration item
3909 * @iniTable: pointer to configuration table
3910 * @entries: number fo the configuration entries
3911 * @name: the interested configuration to find
3912 * @value: the value to read back
3913 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303914 * Return: QDF_STATUS_SUCCESS if the interested configuration is found,
3915 * otherwise QDF_STATUS_E_FAILURE
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003916 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303917static QDF_STATUS find_cfg_item(tCfgIniEntry *iniTable, unsigned long entries,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003918 char *name, char **value)
3919{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303920 QDF_STATUS status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003921 unsigned long i;
3922
3923 for (i = 0; i < entries; i++) {
3924 if (strcmp(iniTable[i].name, name) == 0) {
3925 *value = iniTable[i].value;
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05303926 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003927 "Found %s entry for Name=[%s] Value=[%s] ",
3928 WLAN_INI_FILE, name, *value);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303929 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003930 }
3931 }
3932
3933 return status;
3934}
3935
3936/**
3937 * parse_hex_digit() - conversion to hex value
3938 * @c: the character to convert
3939 *
3940 * Return: the hex value, otherwise 0
3941 */
3942static int parse_hex_digit(char c)
3943{
3944 if (c >= '0' && c <= '9')
3945 return c - '0';
3946 if (c >= 'a' && c <= 'f')
3947 return c - 'a' + 10;
3948 if (c >= 'A' && c <= 'F')
3949 return c - 'A' + 10;
3950
3951 return 0;
3952}
3953
3954/**
3955 * update_mac_from_string() - convert string to 6 bytes mac address
3956 * @pHddCtx: the pointer to hdd context
3957 * @macTable: the macTable to carry the conversion
3958 * @num: number of the interface
3959 *
3960 * 00AA00BB00CC -> 0x00 0xAA 0x00 0xBB 0x00 0xCC
3961 *
3962 * Return: None
3963 */
3964static void update_mac_from_string(hdd_context_t *pHddCtx,
3965 tCfgIniEntry *macTable, int num)
3966{
3967 int i = 0, j = 0, res = 0;
3968 char *candidate = NULL;
Anurag Chouhan6d760662016-02-20 16:05:43 +05303969 struct qdf_mac_addr macaddr[QDF_MAX_CONCURRENCY_PERSONA];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003970
3971 memset(macaddr, 0, sizeof(macaddr));
3972
3973 for (i = 0; i < num; i++) {
3974 candidate = macTable[i].value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05303975 for (j = 0; j < QDF_MAC_ADDR_SIZE; j++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003976 res =
3977 hex2bin(&macaddr[i].bytes[j], &candidate[(j << 1)],
3978 1);
3979 if (res < 0)
3980 break;
3981 }
Anurag Chouhanc5548422016-02-24 18:33:27 +05303982 if (res == 0 && !qdf_is_macaddr_zero(&macaddr[i])) {
Anurag Chouhan600c3a02016-03-01 10:33:54 +05303983 qdf_mem_copy((uint8_t *) &pHddCtx->config->
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003984 intfMacAddr[i].bytes[0],
3985 (uint8_t *) &macaddr[i].bytes[0],
Anurag Chouhan6d760662016-02-20 16:05:43 +05303986 QDF_MAC_ADDR_SIZE);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003987 }
3988 }
3989}
3990
3991/**
3992 * hdd_apply_cfg_ini() - apply the ini configuration file
3993 * @pHddCtx: the pointer to hdd context
3994 * @iniTable: pointer to configuration table
3995 * @entries: number fo the configuration entries
3996 * It overwrites the MAC address if config file exist.
3997 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05303998 * Return: QDF_STATUS_SUCCESS if the ini configuration file is correctly parsed,
3999 * otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004000 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304001static QDF_STATUS hdd_apply_cfg_ini(hdd_context_t *pHddCtx,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004002 tCfgIniEntry *iniTable,
4003 unsigned long entries)
4004{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304005 QDF_STATUS match_status = QDF_STATUS_E_FAILURE;
4006 QDF_STATUS ret_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004007 unsigned int idx;
4008 void *pField;
4009 char *value_str = NULL;
4010 unsigned long len_value_str;
4011 char *candidate;
4012 uint32_t value;
4013 int32_t svalue;
4014 void *pStructBase = pHddCtx->config;
4015 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
Anurag Chouhan6d760662016-02-20 16:05:43 +05304016 unsigned long cRegTableEntries = QDF_ARRAY_SIZE(g_registry_table);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004017 uint32_t cbOutString;
4018 int i;
4019 int rv;
4020
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004021 if (MAX_CFG_INI_ITEMS < cRegTableEntries) {
Srinivas Girigowdaba3091c2015-11-16 17:18:40 -08004022 hddLog(LOGE, FL("MAX_CFG_INI_ITEMS too small, must be at least %ld"),
4023 cRegTableEntries);
4024 WARN_ON(1);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004025 }
4026
4027 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
4028 /* Calculate the address of the destination field in the structure. */
4029 pField = ((uint8_t *) pStructBase) + pRegEntry->VarOffset;
4030
4031 match_status =
4032 find_cfg_item(iniTable, entries, pRegEntry->RegName,
4033 &value_str);
4034
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304035 if ((match_status != QDF_STATUS_SUCCESS)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004036 && (pRegEntry->Flags & VAR_FLAGS_REQUIRED)) {
4037 /* If we could not read the cfg item and it is required, this is an error. */
4038 hddLog(LOGE,
4039 "%s: Failed to read required config parameter %s",
4040 __func__, pRegEntry->RegName);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304041 ret_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004042 break;
4043 }
4044
4045 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
4046 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
4047 /* If successfully read from the registry, use the value read.
4048 * If not, use the default value.
4049 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304050 if (match_status == QDF_STATUS_SUCCESS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004051 && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
4052 rv = kstrtou32(value_str, 10, &value);
4053 if (rv < 0) {
4054 hddLog(LOGE,
4055 "%s: Reg Parameter %s invalid. Enforcing default",
4056 __func__, pRegEntry->RegName);
4057 value = pRegEntry->VarDefault;
4058 }
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304059 } else if (match_status == QDF_STATUS_SUCCESS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004060 && (WLAN_PARAM_HexInteger ==
4061 pRegEntry->RegType)) {
4062 rv = kstrtou32(value_str, 16, &value);
4063 if (rv < 0) {
4064 hddLog(LOGE,
4065 "%s: Reg paramter %s invalid. Enforcing default",
4066 __func__, pRegEntry->RegName);
4067 value = pRegEntry->VarDefault;
4068 }
4069 } else {
4070 value = pRegEntry->VarDefault;
4071 }
4072
4073 /* If this parameter needs range checking, do it here. */
4074 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
4075 if (value > pRegEntry->VarMax) {
4076 hddLog(LOGE,
4077 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Maximum",
4078 __func__, pRegEntry->RegName,
4079 value, pRegEntry->VarMax);
4080 value = pRegEntry->VarMax;
4081 }
4082
4083 if (value < pRegEntry->VarMin) {
4084 hddLog(LOGE,
4085 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Minimum",
4086 __func__, pRegEntry->RegName,
4087 value, pRegEntry->VarMin);
4088 value = pRegEntry->VarMin;
4089 }
4090 }
4091 /* If this parameter needs range checking, do it here. */
4092 else if (pRegEntry->
4093 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
4094 if (value > pRegEntry->VarMax) {
4095 hddLog(LOGE,
4096 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Default= %lu",
4097 __func__, pRegEntry->RegName,
4098 value, pRegEntry->VarMax,
4099 pRegEntry->VarDefault);
4100 value = pRegEntry->VarDefault;
4101 }
4102
4103 if (value < pRegEntry->VarMin) {
4104 hddLog(LOGE,
4105 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Default= %lu",
4106 __func__, pRegEntry->RegName,
4107 value, pRegEntry->VarMin,
4108 pRegEntry->VarDefault);
4109 value = pRegEntry->VarDefault;
4110 }
4111 }
4112 /* Move the variable into the output field. */
4113 memcpy(pField, &value, pRegEntry->VarSize);
4114 } else if (WLAN_PARAM_SignedInteger == pRegEntry->RegType) {
4115 /* If successfully read from the registry, use the value read.
4116 * If not, use the default value.
4117 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304118 if (QDF_STATUS_SUCCESS == match_status) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004119 rv = kstrtos32(value_str, 10, &svalue);
4120 if (rv < 0) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304121 hddLog(QDF_TRACE_LEVEL_WARN,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004122 "%s: Reg Parameter %s invalid. Enforcing Default",
4123 __func__, pRegEntry->RegName);
4124 svalue =
4125 (int32_t) pRegEntry->VarDefault;
4126 }
4127 } else {
4128 svalue = (int32_t) pRegEntry->VarDefault;
4129 }
4130
4131 /* If this parameter needs range checking, do it here. */
4132 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
4133 if (svalue > (int32_t) pRegEntry->VarMax) {
4134 hddLog(LOGE,
4135 "%s: Reg Parameter %s > allowed Maximum "
4136 "[%d > %d]. Enforcing Maximum",
4137 __func__, pRegEntry->RegName,
4138 svalue, (int)pRegEntry->VarMax);
4139 svalue = (int32_t) pRegEntry->VarMax;
4140 }
4141
4142 if (svalue < (int32_t) pRegEntry->VarMin) {
4143 hddLog(LOGE,
4144 "%s: Reg Parameter %s < allowed Minimum "
4145 "[%d < %d]. Enforcing Minimum",
4146 __func__, pRegEntry->RegName,
4147 svalue, (int)pRegEntry->VarMin);
4148 svalue = (int32_t) pRegEntry->VarMin;
4149 }
4150 }
4151 /* If this parameter needs range checking, do it here. */
4152 else if (pRegEntry->
4153 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
4154 if (svalue > (int32_t) pRegEntry->VarMax) {
4155 hddLog(LOGE,
4156 "%s: Reg Parameter %s > allowed Maximum "
4157 "[%d > %d]. Enforcing Default= %d",
4158 __func__, pRegEntry->RegName,
4159 svalue, (int)pRegEntry->VarMax,
4160 (int)pRegEntry->VarDefault);
4161 svalue =
4162 (int32_t) pRegEntry->VarDefault;
4163 }
4164
4165 if (svalue < (int32_t) pRegEntry->VarMin) {
4166 hddLog(LOGE,
4167 "%s: Reg Parameter %s < allowed Minimum "
4168 "[%d < %d]. Enforcing Default= %d",
4169 __func__, pRegEntry->RegName,
4170 svalue, (int)pRegEntry->VarMin,
4171 (int)pRegEntry->VarDefault);
4172 svalue = pRegEntry->VarDefault;
4173 }
4174 }
4175 /* Move the variable into the output field. */
4176 memcpy(pField, &svalue, pRegEntry->VarSize);
4177 }
4178 /* Handle string parameters */
4179 else if (WLAN_PARAM_String == pRegEntry->RegType) {
4180#ifdef WLAN_CFG_DEBUG
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304181 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004182 "RegName = %s, VarOffset %u VarSize %u VarDefault %s",
4183 pRegEntry->RegName, pRegEntry->VarOffset,
4184 pRegEntry->VarSize,
4185 (char *)pRegEntry->VarDefault);
4186#endif
4187
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304188 if (match_status == QDF_STATUS_SUCCESS) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004189 len_value_str = strlen(value_str);
4190
4191 if (len_value_str > (pRegEntry->VarSize - 1)) {
4192 hddLog(LOGE,
4193 "%s: Invalid Value=[%s] specified for Name=[%s] in %s",
4194 __func__, value_str,
4195 pRegEntry->RegName,
4196 WLAN_INI_FILE);
4197 cbOutString =
4198 util_min(strlen
4199 ((char *)pRegEntry->
4200 VarDefault),
4201 pRegEntry->VarSize - 1);
4202 memcpy(pField,
4203 (void *)(pRegEntry->VarDefault),
4204 cbOutString);
4205 ((uint8_t *) pField)[cbOutString] =
4206 '\0';
4207 } else {
4208 memcpy(pField, (void *)(value_str),
4209 len_value_str);
4210 ((uint8_t *) pField)[len_value_str] =
4211 '\0';
4212 }
4213 } else {
4214 /* Failed to read the string parameter from the registry. Use the default. */
4215 cbOutString =
4216 util_min(strlen((char *)pRegEntry->VarDefault),
4217 pRegEntry->VarSize - 1);
4218 memcpy(pField, (void *)(pRegEntry->VarDefault),
4219 cbOutString);
4220 ((uint8_t *) pField)[cbOutString] = '\0';
4221 }
4222 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
Anurag Chouhan6d760662016-02-20 16:05:43 +05304223 if (pRegEntry->VarSize != QDF_MAC_ADDR_SIZE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004224 hddLog(LOGE,
4225 "%s: Invalid VarSize %u for Name=[%s]",
4226 __func__, pRegEntry->VarSize,
4227 pRegEntry->RegName);
4228 continue;
4229 }
4230 candidate = (char *)pRegEntry->VarDefault;
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304231 if (match_status == QDF_STATUS_SUCCESS) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004232 len_value_str = strlen(value_str);
Anurag Chouhan6d760662016-02-20 16:05:43 +05304233 if (len_value_str != (QDF_MAC_ADDR_SIZE * 2)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004234 hddLog(LOGE,
4235 "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s",
4236 __func__, value_str,
4237 pRegEntry->RegName,
4238 WLAN_INI_FILE);
4239 } else
4240 candidate = value_str;
4241 }
4242 /* parse the string and store it in the byte array */
Anurag Chouhan6d760662016-02-20 16:05:43 +05304243 for (i = 0; i < QDF_MAC_ADDR_SIZE; i++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004244 ((char *)pField)[i] =
4245 (char)(parse_hex_digit(candidate[i * 2]) *
4246 16 +
4247 parse_hex_digit(candidate[i * 2 + 1]));
4248 }
4249 } else {
4250 hddLog(LOGE,
4251 "%s: Unknown param type for name[%s] in registry table",
4252 __func__, pRegEntry->RegName);
4253 }
4254
4255 /* did we successfully parse a cfg item for this parameter? */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304256 if ((match_status == QDF_STATUS_SUCCESS) &&
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004257 (idx < MAX_CFG_INI_ITEMS)) {
4258 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4259 }
4260 }
4261
4262 return ret_status;
4263}
4264
4265/**
4266 * hdd_execute_config_command() - executes an arbitrary configuration command
4267 * @reg_table: the pointer to configuration table
4268 * @tableSize: the size of the configuration table
4269 * @ini_struct: pointer to the hdd config knob
4270 * @pHddCtx: the pointer to hdd context
4271 * @command: the command to run
4272 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304273 * Return: QDF_STATUS_SUCCESS if the command is found and able to execute,
4274 * otherwise the appropriate QDF_STATUS will be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004275 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304276static QDF_STATUS hdd_execute_config_command(REG_TABLE_ENTRY *reg_table,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004277 unsigned long tableSize,
4278 uint8_t *ini_struct,
4279 hdd_context_t *pHddCtx,
4280 char *command)
4281{
4282 REG_TABLE_ENTRY *pRegEntry;
4283 char *clone;
4284 char *pCmd;
4285 void *pField;
4286 char *name;
4287 char *value_str;
4288 uint32_t value;
4289 int32_t svalue;
4290 size_t len_value_str;
4291 unsigned int idx;
4292 unsigned int i;
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304293 QDF_STATUS vstatus;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004294 int rv;
4295
4296 /* assume failure until proven otherwise */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304297 vstatus = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004298
4299 /* clone the command so that we can manipulate it */
4300 clone = kstrdup(command, GFP_ATOMIC);
4301 if (NULL == clone) {
4302 hddLog(LOGE,
4303 "%s: memory allocation failure, unable to process [%s]",
4304 __func__, command);
4305 return vstatus;
4306 }
4307 /* 'clone' will point to the beginning of the string so it can be freed
4308 * 'pCmd' will be used to walk/parse the command
4309 */
4310 pCmd = clone;
4311
4312 /* get rid of leading/trailing whitespace */
4313 pCmd = i_trim(pCmd);
4314 if ('\0' == *pCmd) {
4315 /* only whitespace */
4316 hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
4317 __func__, command);
4318 goto done;
4319 }
4320 /* parse the <name> = <value> */
4321 name = pCmd;
4322 while (('=' != *pCmd) && ('\0' != *pCmd)) {
4323 pCmd++;
4324 }
4325 if ('\0' == *pCmd) {
4326 /* did not find '=' */
4327 hddLog(LOGE, "%s: invalid command, no '=':[%s]",
4328 __func__, command);
4329 goto done;
4330 }
4331 /* replace '=' with NUL to terminate the <name> */
4332 *pCmd++ = '\0';
4333 name = i_trim(name);
4334 if ('\0' == *name) {
4335 /* did not find a name */
4336 hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
4337 __func__, command);
4338 goto done;
4339 }
4340
4341 value_str = i_trim(pCmd);
4342 if ('\0' == *value_str) {
4343 /* did not find a value */
4344 hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
4345 __func__, command);
4346 goto done;
4347 }
4348 /* lookup the configuration item */
4349 for (idx = 0; idx < tableSize; idx++) {
4350 if (0 == strcmp(name, reg_table[idx].RegName)) {
4351 /* found a match */
4352 break;
4353 }
4354 }
4355 if (tableSize == idx) {
4356 /* did not match the name */
4357 hddLog(LOGE,
4358 "%s: invalid command, unknown configuration item:[%s]",
4359 __func__, command);
4360 goto done;
4361 }
4362
4363 pRegEntry = &reg_table[idx];
4364 if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG)) {
4365 /* does not support dynamic configuration */
4366 hddLog(LOGE, "%s: Global_Registry_Table.%s does not support "
4367 "dynamic configuration", __func__, name);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304368 vstatus = QDF_STATUS_E_PERM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004369 goto done;
4370 }
4371
4372 pField = ini_struct + pRegEntry->VarOffset;
4373
4374 switch (pRegEntry->RegType) {
4375 case WLAN_PARAM_Integer:
4376 rv = kstrtou32(value_str, 10, &value);
4377 if (rv < 0)
4378 goto done;
4379 if (value < pRegEntry->VarMin) {
4380 /* out of range */
4381 hddLog(LOGE,
4382 "%s: invalid command, value %u < min value %lu",
4383 __func__, value, pRegEntry->VarMin);
4384 goto done;
4385 }
4386 if (value > pRegEntry->VarMax) {
4387 /* out of range */
4388 hddLog(LOGE,
4389 "%s: invalid command, value %u > max value %lu",
4390 __func__, value, pRegEntry->VarMax);
4391 goto done;
4392 }
4393 memcpy(pField, &value, pRegEntry->VarSize);
4394 break;
4395
4396 case WLAN_PARAM_HexInteger:
4397 rv = kstrtou32(value_str, 16, &value);
4398 if (rv < 0)
4399 goto done;
4400 if (value < pRegEntry->VarMin) {
4401 /* out of range */
4402 hddLog(LOGE,
4403 "%s: invalid command, value %x < min value %lx",
4404 __func__, value, pRegEntry->VarMin);
4405 goto done;
4406 }
4407 if (value > pRegEntry->VarMax) {
4408 /* out of range */
4409 hddLog(LOGE,
4410 "%s: invalid command, value %x > max value %lx",
4411 __func__, value, pRegEntry->VarMax);
4412 goto done;
4413 }
4414 memcpy(pField, &value, pRegEntry->VarSize);
4415 break;
4416
4417 case WLAN_PARAM_SignedInteger:
4418 rv = kstrtos32(value_str, 10, &svalue);
4419 if (rv < 0)
4420 goto done;
4421 if (svalue < (int32_t) pRegEntry->VarMin) {
4422 /* out of range */
4423 hddLog(LOGE,
4424 "%s: invalid command, value %d < min value %d",
4425 __func__, svalue, (int)pRegEntry->VarMin);
4426 goto done;
4427 }
4428 if (svalue > (int32_t) pRegEntry->VarMax) {
4429 /* out of range */
4430 hddLog(LOGE,
4431 "%s: invalid command, value %d > max value %d",
4432 __func__, svalue, (int)pRegEntry->VarMax);
4433 goto done;
4434 }
4435 memcpy(pField, &svalue, pRegEntry->VarSize);
4436 break;
4437
4438 case WLAN_PARAM_String:
4439 len_value_str = strlen(value_str);
4440 if (len_value_str > (pRegEntry->VarSize - 1)) {
4441 /* too big */
4442 hddLog(LOGE,
4443 "%s: invalid command, string [%s] length "
4444 "%zu exceeds maximum length %u",
4445 __func__, value_str,
4446 len_value_str, (pRegEntry->VarSize - 1));
4447 goto done;
4448 }
4449 /* copy string plus NUL */
4450 memcpy(pField, value_str, (len_value_str + 1));
4451 break;
4452
4453 case WLAN_PARAM_MacAddr:
4454 len_value_str = strlen(value_str);
Anurag Chouhan6d760662016-02-20 16:05:43 +05304455 if (len_value_str != (QDF_MAC_ADDR_SIZE * 2)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004456 /* out of range */
4457 hddLog(LOGE,
4458 "%s: invalid command, MAC address [%s] length "
4459 "%zu is not expected length %u",
4460 __func__, value_str,
Anurag Chouhan6d760662016-02-20 16:05:43 +05304461 len_value_str, (QDF_MAC_ADDR_SIZE * 2));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004462 goto done;
4463 }
4464 /* parse the string and store it in the byte array */
Anurag Chouhan6d760662016-02-20 16:05:43 +05304465 for (i = 0; i < QDF_MAC_ADDR_SIZE; i++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004466 ((char *)pField)[i] = (char)
4467 ((parse_hex_digit(value_str[(i * 2)]) * 16) +
4468 parse_hex_digit(value_str[(i * 2) + 1]));
4469 }
4470 break;
4471
4472 default:
4473 goto done;
4474 }
4475
4476 /* if we get here, we had a successful modification */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304477 vstatus = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004478
4479 /* config table has been modified, is there a notifier? */
4480 if (NULL != pRegEntry->pfnDynamicnotify) {
4481 (pRegEntry->pfnDynamicnotify)(pHddCtx, pRegEntry->notifyId);
4482 }
4483 /* note that this item was explicitly configured */
4484 if (idx < MAX_CFG_INI_ITEMS) {
4485 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4486 }
4487done:
4488 kfree(clone);
4489 return vstatus;
4490}
4491
4492/**
4493 * hdd_set_power_save_offload_config() - set power save offload configuration
4494 * @pHddCtx: the pointer to hdd context
4495 *
4496 * Return: none
4497 */
4498static void hdd_set_power_save_offload_config(hdd_context_t *pHddCtx)
4499{
4500 struct hdd_config *pConfig = pHddCtx->config;
4501 uint32_t listenInterval = 0;
4502
4503 if (strcmp(pConfig->PowerUsageControl, "Min") == 0) {
4504 listenInterval = pConfig->nBmpsMinListenInterval;
4505 } else if (strcmp(pConfig->PowerUsageControl, "Max") == 0) {
4506 listenInterval = pConfig->nBmpsMaxListenInterval;
4507 } else if (strcmp(pConfig->PowerUsageControl, "Mod") == 0) {
4508 listenInterval = pConfig->nBmpsModListenInterval;
4509 }
4510
4511 /*
4512 * Based on Mode Set the LI
4513 * Otherwise default LI value of 1 will
4514 * be taken
4515 */
4516 if (listenInterval) {
4517 /*
4518 * setcfg for listenInterval.
4519 * Make sure CFG is updated because PE reads this
4520 * from CFG at the time of assoc or reassoc
4521 */
4522 sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_LISTEN_INTERVAL,
4523 listenInterval);
4524 }
4525
4526}
4527
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07004528#ifdef FEATURE_RUNTIME_PM
4529static void hdd_cfg_print_runtime_pm(hdd_context_t *hdd_ctx)
4530{
4531 hdd_info("Name = [gRuntimePM] Value = [%u] ",
4532 hdd_ctx->config->runtime_pm);
4533
4534 hdd_info("Name = [gRuntimePMDelay] Value = [%u] ",
4535 hdd_ctx->config->runtime_pm_delay);
4536}
4537#else
4538static void hdd_cfg_print_runtime_pm(hdd_context_t *hdd_ctx)
4539{
4540}
4541#endif
4542
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004543/**
4544 * hdd_cfg_print() - print the hdd configuration
4545 * @iniTable: pointer to hdd context
4546 *
4547 * Return: None
4548 */
4549void hdd_cfg_print(hdd_context_t *pHddCtx)
4550{
4551 int i;
4552
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304553 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004554 "*********Config values in HDD Adapter*******");
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304555 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004556 "Name = [RTSThreshold] Value = %u",
4557 pHddCtx->config->RTSThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304558 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004559 "Name = [OperatingChannel] Value = [%u]",
4560 pHddCtx->config->OperatingChannel);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304561 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004562 "Name = [PowerUsageControl] Value = [%s]",
4563 pHddCtx->config->PowerUsageControl);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304564 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004565 "Name = [fIsImpsEnabled] Value = [%u]",
4566 pHddCtx->config->fIsImpsEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304567 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004568 "Name = [nVccRssiTrigger] Value = [%u]",
4569 pHddCtx->config->nVccRssiTrigger);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304570 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004571 "Name = [gIbssBssid] Value =[" MAC_ADDRESS_STR "]",
4572 MAC_ADDR_ARRAY(pHddCtx->config->IbssBssid.bytes));
4573
Anurag Chouhan6d760662016-02-20 16:05:43 +05304574 for (i = 0; i < QDF_MAX_CONCURRENCY_PERSONA; i++) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304575 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004576 "Name = [Intf%dMacAddress] Value =[" MAC_ADDRESS_STR "]",
4577 i, MAC_ADDR_ARRAY(pHddCtx->config->intfMacAddr[i].bytes));
4578 }
4579
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304580 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004581 "Name = [gApEnableUapsd] value = [%u]",
4582 pHddCtx->config->apUapsdEnabled);
4583
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304584 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004585 "Name = [gEnableApProt] value = [%u]",
4586 pHddCtx->config->apProtEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304587 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004588 "Name = [gAPAutoShutOff] Value = [%u]",
4589 pHddCtx->config->nAPAutoShutOff);
4590#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304591 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004592 "Name = [gWlanMccToSccSwitchMode] Value = [%u]",
4593 pHddCtx->config->WlanMccToSccSwitchMode);
4594#endif
4595#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304596 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004597 "Name = [gWlanAutoShutdown] Value = [%u]",
4598 pHddCtx->config->WlanAutoShutdown);
4599#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304600 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004601 "Name = [gEnableListenMode] Value = [%u]",
4602 pHddCtx->config->nEnableListenMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304603 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004604 "Name = [gApProtection] value = [%u]",
4605 pHddCtx->config->apProtection);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304606 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004607 "Name = [gEnableApOBSSProt] value = [%u]",
4608 pHddCtx->config->apOBSSProtEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304609 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004610 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS,
4611 pHddCtx->config->force_sap_acs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304612 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004613 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_START_CH,
4614 pHddCtx->config->force_sap_acs_st_ch);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304615 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004616 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_END_CH,
4617 pHddCtx->config->force_sap_acs_end_ch);
4618#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304619 QDF_TRACE(QDF_MODULE_ID_HDD,
4620 QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004621 "Name = [sap_channel_avoidance] value = [%u]",
4622 pHddCtx->config->sap_channel_avoidance);
4623#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304624 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004625 "Name = [%s] value = [%u]", CFG_SAP_P2P_11AC_OVERRIDE_NAME,
4626 pHddCtx->config->sap_p2p_11ac_override);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304627 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004628 "Name = [ChannelBondingMode] Value = [%u]",
4629 pHddCtx->config->nChannelBondingMode24GHz);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304630 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004631 "Name = [ChannelBondingMode] Value = [%u]",
4632 pHddCtx->config->nChannelBondingMode5GHz);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304633 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004634 "Name = [dot11Mode] Value = [%u]",
4635 pHddCtx->config->dot11Mode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304636 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004637 "Name = [WmmMode] Value = [%u] ", pHddCtx->config->WmmMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304638 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004639 "Name = [UapsdMask] Value = [0x%x] ",
4640 pHddCtx->config->UapsdMask);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304641 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004642 "Name = [ImplicitQosIsEnabled] Value = [%u]",
4643 (int)pHddCtx->config->bImplicitQosEnabled);
4644
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304645 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004646 "Name = [InfraUapsdVoSrvIntv] Value = [%u] ",
4647 pHddCtx->config->InfraUapsdVoSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304648 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004649 "Name = [InfraUapsdVoSuspIntv] Value = [%u] ",
4650 pHddCtx->config->InfraUapsdVoSuspIntv);
4651
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304652 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004653 "Name = [InfraUapsdViSrvIntv] Value = [%u] ",
4654 pHddCtx->config->InfraUapsdViSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304655 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004656 "Name = [InfraUapsdViSuspIntv] Value = [%u] ",
4657 pHddCtx->config->InfraUapsdViSuspIntv);
4658
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304659 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004660 "Name = [InfraUapsdBeSrvIntv] Value = [%u] ",
4661 pHddCtx->config->InfraUapsdBeSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304662 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004663 "Name = [InfraUapsdBeSuspIntv] Value = [%u] ",
4664 pHddCtx->config->InfraUapsdBeSuspIntv);
4665
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304666 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004667 "Name = [InfraUapsdBkSrvIntv] Value = [%u] ",
4668 pHddCtx->config->InfraUapsdBkSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304669 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004670 "Name = [InfraUapsdBkSuspIntv] Value = [%u] ",
4671 pHddCtx->config->InfraUapsdBkSuspIntv);
4672#ifdef FEATURE_WLAN_ESE
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304673 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004674 "Name = [InfraInactivityInterval] Value = [%u] ",
4675 pHddCtx->config->InfraInactivityInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304676 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004677 "Name = [EseEnabled] Value = [%u] ",
4678 pHddCtx->config->isEseIniFeatureEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304679 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004680 "Name = [FastTransitionEnabled] Value = [%u] ",
4681 pHddCtx->config->isFastTransitionEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304682 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004683 "Name = [gTxPowerCap] Value = [%u] dBm ",
4684 pHddCtx->config->nTxPowerCap);
4685#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304686 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004687 "Name = [FastRoamEnabled] Value = [%u] ",
4688 pHddCtx->config->isFastRoamIniFeatureEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304689 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004690 "Name = [MAWCEnabled] Value = [%u] ",
4691 pHddCtx->config->MAWCEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304692 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004693 "Name = [RoamRssiDiff] Value = [%u] ",
4694 pHddCtx->config->RoamRssiDiff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304695 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004696 "Name = [isWESModeEnabled] Value = [%u] ",
4697 pHddCtx->config->isWESModeEnabled);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004698#ifdef FEATURE_WLAN_OKC
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304699 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004700 "Name = [OkcEnabled] Value = [%u] ",
4701 pHddCtx->config->isOkcIniFeatureEnabled);
4702#endif
4703#ifdef FEATURE_WLAN_SCAN_PNO
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304704 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004705 "Name = [configPNOScanSupport] Value = [%u] ",
4706 pHddCtx->config->configPNOScanSupport);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304707 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004708 "Name = [configPNOScanTimerRepeatValue] Value = [%u] ",
4709 pHddCtx->config->configPNOScanTimerRepeatValue);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304710 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Srinivas Girigowdabdc98162015-09-17 11:06:07 -07004711 "Name = [gPNOSlowScanMultiplier] Value = [%u] ",
4712 pHddCtx->config->pno_slow_scan_multiplier);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004713#endif
4714#ifdef FEATURE_WLAN_TDLS
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304715 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004716 "Name = [fEnableTDLSSupport] Value = [%u] ",
4717 pHddCtx->config->fEnableTDLSSupport);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304718 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004719 "Name = [fEnableTDLSImplicitTrigger] Value = [%u] ",
4720 pHddCtx->config->fEnableTDLSImplicitTrigger);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304721 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004722 "Name = [fTDLSExternalControl] Value = [%u] ",
4723 pHddCtx->config->fTDLSExternalControl);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304724 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004725 "Name = [fTDLSUapsdMask] Value = [%u] ",
4726 pHddCtx->config->fTDLSUapsdMask);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304727 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004728 "Name = [fEnableTDLSBufferSta] Value = [%u] ",
4729 pHddCtx->config->fEnableTDLSBufferSta);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304730 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004731 "Name = [fEnableTDLSWmmMode] Value = [%u] ",
4732 pHddCtx->config->fEnableTDLSWmmMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304733 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004734 "Name = [enable_tdls_scan] Value = [%u]",
4735 pHddCtx->config->enable_tdls_scan);
4736#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304737 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004738 "Name = [InfraDirAcVo] Value = [%u] ",
4739 pHddCtx->config->InfraDirAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304740 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004741 "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",
4742 pHddCtx->config->InfraNomMsduSizeAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304743 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004744 "Name = [InfraMeanDataRateAcVo] Value = [0x%x] ",
4745 pHddCtx->config->InfraMeanDataRateAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304746 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004747 "Name = [InfraMinPhyRateAcVo] Value = [0x%x] ",
4748 pHddCtx->config->InfraMinPhyRateAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304749 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004750 "Name = [InfraSbaAcVo] Value = [0x%x] ",
4751 pHddCtx->config->InfraSbaAcVo);
4752
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304753 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004754 "Name = [InfraDirAcVi] Value = [%u] ",
4755 pHddCtx->config->InfraDirAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304756 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004757 "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",
4758 pHddCtx->config->InfraNomMsduSizeAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304759 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004760 "Name = [InfraMeanDataRateAcVi] Value = [0x%x] ",
4761 pHddCtx->config->InfraMeanDataRateAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304762 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004763 "Name = [InfraMinPhyRateAcVi] Value = [0x%x] ",
4764 pHddCtx->config->InfraMinPhyRateAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304765 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004766 "Name = [InfraSbaAcVi] Value = [0x%x] ",
4767 pHddCtx->config->InfraSbaAcVi);
4768
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304769 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004770 "Name = [InfraDirAcBe] Value = [%u] ",
4771 pHddCtx->config->InfraDirAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304772 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004773 "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",
4774 pHddCtx->config->InfraNomMsduSizeAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304775 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004776 "Name = [InfraMeanDataRateAcBe] Value = [0x%x] ",
4777 pHddCtx->config->InfraMeanDataRateAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304778 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004779 "Name = [InfraMinPhyRateAcBe] Value = [0x%x] ",
4780 pHddCtx->config->InfraMinPhyRateAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304781 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004782 "Name = [InfraSbaAcBe] Value = [0x%x] ",
4783 pHddCtx->config->InfraSbaAcBe);
4784
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304785 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004786 "Name = [InfraDirAcBk] Value = [%u] ",
4787 pHddCtx->config->InfraDirAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304788 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004789 "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",
4790 pHddCtx->config->InfraNomMsduSizeAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304791 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004792 "Name = [InfraMeanDataRateAcBk] Value = [0x%x] ",
4793 pHddCtx->config->InfraMeanDataRateAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304794 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004795 "Name = [InfraMinPhyRateAcBk] Value = [0x%x] ",
4796 pHddCtx->config->InfraMinPhyRateAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304797 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004798 "Name = [InfraSbaAcBk] Value = [0x%x] ",
4799 pHddCtx->config->InfraSbaAcBk);
4800
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304801 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004802 "Name = [DelayedTriggerFrmInt] Value = [%u] ",
4803 pHddCtx->config->DelayedTriggerFrmInt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304804 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004805 "Name = [mcastBcastFilterSetting] Value = [%u] ",
4806 pHddCtx->config->mcastBcastFilterSetting);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304807 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004808 "Name = [fhostArpOffload] Value = [%u] ",
4809 pHddCtx->config->fhostArpOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304810 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004811 "Name = [ssdp] Value = [%u] ", pHddCtx->config->ssdp);
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07004812 hdd_cfg_print_runtime_pm(pHddCtx);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004813#ifdef FEATURE_WLAN_RA_FILTERING
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304814 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004815 "Name = [RArateLimitInterval] Value = [%u] ",
4816 pHddCtx->config->RArateLimitInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304817 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004818 "Name = [IsRArateLimitEnabled] Value = [%u] ",
4819 pHddCtx->config->IsRArateLimitEnabled);
4820#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304821 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004822 "Name = [fFTResourceReqSupported] Value = [%u] ",
4823 pHddCtx->config->fFTResourceReqSupported);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004824
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304825 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004826 "Name = [nNeighborLookupRssiThreshold] Value = [%u] ",
4827 pHddCtx->config->nNeighborLookupRssiThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304828 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004829 "Name = [delay_before_vdev_stop] Value = [%u] ",
4830 pHddCtx->config->delay_before_vdev_stop);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304831 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004832 "Name = [nOpportunisticThresholdDiff] Value = [%u] ",
4833 pHddCtx->config->nOpportunisticThresholdDiff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304834 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004835 "Name = [nRoamRescanRssiDiff] Value = [%u] ",
4836 pHddCtx->config->nRoamRescanRssiDiff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304837 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004838 "Name = [nNeighborScanMinChanTime] Value = [%u] ",
4839 pHddCtx->config->nNeighborScanMinChanTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304840 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004841 "Name = [nNeighborScanMaxChanTime] Value = [%u] ",
4842 pHddCtx->config->nNeighborScanMaxChanTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304843 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004844 "Name = [nMaxNeighborRetries] Value = [%u] ",
4845 pHddCtx->config->nMaxNeighborReqTries);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304846 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004847 "Name = [nNeighborScanPeriod] Value = [%u] ",
4848 pHddCtx->config->nNeighborScanPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304849 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004850 "Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",
4851 pHddCtx->config->nNeighborResultsRefreshPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304852 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004853 "Name = [nEmptyScanRefreshPeriod] Value = [%u] ",
4854 pHddCtx->config->nEmptyScanRefreshPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304855 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004856 "Name = [nRoamBmissFirstBcnt] Value = [%u] ",
4857 pHddCtx->config->nRoamBmissFirstBcnt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304858 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004859 "Name = [nRoamBmissFinalBcnt] Value = [%u] ",
4860 pHddCtx->config->nRoamBmissFinalBcnt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304861 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004862 "Name = [nRoamBeaconRssiWeight] Value = [%u] ",
4863 pHddCtx->config->nRoamBeaconRssiWeight);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304864 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004865 "Name = [allowDFSChannelRoam] Value = [%u] ",
4866 pHddCtx->config->allowDFSChannelRoam);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304867 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004868 "Name = [nhi_rssi_scan_max_count] Value = [%u] ",
4869 pHddCtx->config->nhi_rssi_scan_max_count);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304870 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004871 "Name = [nhi_rssi_scan_rssi_delta] Value = [%u] ",
4872 pHddCtx->config->nhi_rssi_scan_rssi_delta);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304873 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004874 "Name = [nhi_rssi_scan_delay] Value = [%u] ",
4875 pHddCtx->config->nhi_rssi_scan_delay);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304876 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004877 "Name = [nhi_rssi_scan_rssi_ub] Value = [%u] ",
4878 pHddCtx->config->nhi_rssi_scan_rssi_ub);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304879 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004880 "Name = [burstSizeDefinition] Value = [0x%x] ",
4881 pHddCtx->config->burstSizeDefinition);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304882 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004883 "Name = [tsInfoAckPolicy] Value = [0x%x] ",
4884 pHddCtx->config->tsInfoAckPolicy);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304885 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004886 "Name = [rfSettlingTimeUs] Value = [%u] ",
4887 pHddCtx->config->rfSettlingTimeUs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304888 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004889 "Name = [bSingleTidRc] Value = [%u] ",
4890 pHddCtx->config->bSingleTidRc);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304891 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004892 "Name = [gDynamicPSPollvalue] Value = [%u] ",
4893 pHddCtx->config->dynamicPsPollValue);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304894 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004895 "Name = [gAddTSWhenACMIsOff] Value = [%u] ",
4896 pHddCtx->config->AddTSWhenACMIsOff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304897 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004898 "Name = [gValidateScanList] Value = [%u] ",
4899 pHddCtx->config->fValidateScanList);
4900
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304901 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004902 "Name = [gStaKeepAlivePeriod] Value = [%u] ",
4903 pHddCtx->config->infraStaKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304904 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004905 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
4906 pHddCtx->config->apDataAvailPollPeriodInMs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304907 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004908 "Name = [BandCapability] Value = [%u] ",
4909 pHddCtx->config->nBandCapability);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304910 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004911 "Name = [fEnableBeaconEarlyTermination] Value = [%u] ",
4912 pHddCtx->config->fEnableBeaconEarlyTermination);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304913 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004914 "Name = [teleBcnWakeupEnable] Value = [%u] ",
4915 pHddCtx->config->teleBcnWakeupEn);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304916 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004917 "Name = [transListenInterval] Value = [%u] ",
4918 pHddCtx->config->nTeleBcnTransListenInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304919 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004920 "Name = [transLiNumIdleBeacons] Value = [%u] ",
4921 pHddCtx->config->nTeleBcnTransLiNumIdleBeacons);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304922 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004923 "Name = [maxListenInterval] Value = [%u] ",
4924 pHddCtx->config->nTeleBcnMaxListenInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304925 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004926 "Name = [maxLiNumIdleBeacons] Value = [%u] ",
4927 pHddCtx->config->nTeleBcnMaxLiNumIdleBeacons);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304928 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004929 "Name = [bcnEarlyTermWakeInterval] Value = [%u] ",
4930 pHddCtx->config->bcnEarlyTermWakeInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304931 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004932 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
4933 pHddCtx->config->apDataAvailPollPeriodInMs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304934 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004935 "Name = [gEnableBypass11d] Value = [%u] ",
4936 pHddCtx->config->enableBypass11d);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304937 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004938 "Name = [gEnableDFSChnlScan] Value = [%u] ",
4939 pHddCtx->config->enableDFSChnlScan);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304940 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004941 "Name = [gEnableDFSPnoChnlScan] Value = [%u] ",
4942 pHddCtx->config->enable_dfs_pno_chnl_scan);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304943 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004944 "Name = [gReportMaxLinkSpeed] Value = [%u] ",
4945 pHddCtx->config->reportMaxLinkSpeed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304946 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004947 "Name = [thermalMitigationEnable] Value = [%u] ",
4948 pHddCtx->config->thermalMitigationEnable);
4949#ifdef WLAN_FEATURE_11AC
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304950 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004951 "Name = [gVhtChannelWidth] value = [%u]",
4952 pHddCtx->config->vhtChannelWidth);
4953#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304954 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004955 "Name = [enableFirstScan2GOnly] Value = [%u] ",
4956 pHddCtx->config->enableFirstScan2GOnly);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304957 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004958 "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",
4959 pHddCtx->config->skipDfsChnlInP2pSearch);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304960 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004961 "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",
4962 pHddCtx->config->ignoreDynamicDtimInP2pMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304963 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004964 "Name = [enableRxSTBC] Value = [%u] ",
4965 pHddCtx->config->enableRxSTBC);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304966 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004967 "Name = [gEnableLpwrImgTransition] Value = [%u] ",
4968 pHddCtx->config->enableLpwrImgTransition);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304969 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004970 "Name = [gEnableSSR] Value = [%u] ",
4971 pHddCtx->config->enableSSR);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304972 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004973 "Name = [gEnableVhtFor24GHzBand] Value = [%u] ",
4974 pHddCtx->config->enableVhtFor24GHzBand);
4975
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304976 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004977 "Name = [gFlexConnectPowerFactor] Value = [%u] ",
4978 pHddCtx->config->flexConnectPowerFactor);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304979 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004980 "Name = [gEnableIbssHeartBeatOffload] Value = [%u] ",
4981 pHddCtx->config->enableIbssHeartBeatOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304982 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004983 "Name = [gAntennaDiversity] Value = [%u] ",
4984 pHddCtx->config->antennaDiversity);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304985 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004986 "Name = [gGoLinkMonitorPeriod] Value = [%u]",
4987 pHddCtx->config->goLinkMonitorPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304988 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004989 "Name = [gApLinkMonitorPeriod] Value = [%u]",
4990 pHddCtx->config->apLinkMonitorPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304991 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004992 "Name = [gGoKeepAlivePeriod] Value = [%u]",
4993 pHddCtx->config->goKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304994 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004995 "Name = [gApKeepAlivePeriod]Value = [%u]",
4996 pHddCtx->config->apKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304997 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004998 "Name = [gAmsduSupportInAMPDU] Value = [%u] ",
4999 pHddCtx->config->isAmsduSupportInAMPDU);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305000 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005001 "Name = [nSelect5GHzMargin] Value = [%u] ",
5002 pHddCtx->config->nSelect5GHzMargin);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305003 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005004 "Name = [gCoalesingInIBSS] Value = [%u] ",
5005 pHddCtx->config->isCoalesingInIBSSAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305006 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005007 "Name = [gIbssATIMWinSize] Value = [%u] ",
5008 pHddCtx->config->ibssATIMWinSize);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305009 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005010 "Name = [gIbssIsPowerSaveAllowed] Value = [%u] ",
5011 pHddCtx->config->isIbssPowerSaveAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305012 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005013 "Name = [gIbssIsPowerCollapseAllowed] Value = [%u] ",
5014 pHddCtx->config->isIbssPowerCollapseAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305015 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005016 "Name = [gIbssAwakeOnTxRx] Value = [%u] ",
5017 pHddCtx->config->isIbssAwakeOnTxRx);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305018 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005019 "Name = [gIbssInactivityTime] Value = [%u] ",
5020 pHddCtx->config->ibssInactivityCount);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305021 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005022 "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",
5023 pHddCtx->config->ibssTxSpEndInactivityTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305024 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005025 "Name = [gIbssPsWarmupTime] Value = [%u] ",
5026 pHddCtx->config->ibssPsWarmupTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305027 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005028 "Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
5029 pHddCtx->config->ibssPs1RxChainInAtimEnable);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305030 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005031 "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",
5032 pHddCtx->config->fDfsPhyerrFilterOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305033 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005034 "Name = [gIgnorePeerErpInfo] Value = [%u] ",
5035 pHddCtx->config->ignore_peer_erp_info);
5036#ifdef IPA_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305037 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005038 "Name = [gIPAConfig] Value = [0x%x] ",
5039 pHddCtx->config->IpaConfig);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305040 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005041 "Name = [gIPADescSize] Value = [%u] ",
5042 pHddCtx->config->IpaDescSize);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305043 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005044 "Name = [IpaHighBandwidthMbpsg] Value = [%u] ",
5045 pHddCtx->config->IpaHighBandwidthMbps);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305046 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005047 "Name = [IpaMediumBandwidthMbps] Value = [%u] ",
5048 pHddCtx->config->IpaMediumBandwidthMbps);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305049 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005050 "Name = [IpaLowBandwidthMbps] Value = [%u] ",
5051 pHddCtx->config->IpaLowBandwidthMbps);
5052#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305053 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005054 "Name = [gEnableOverLapCh] Value = [%u] ",
5055 pHddCtx->config->gEnableOverLapCh);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305056 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005057 "Name = [gMaxOffloadPeers] Value = [%u] ",
5058 pHddCtx->config->apMaxOffloadPeers);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305059 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005060 "Name = [gMaxOffloadReorderBuffs] value = [%u] ",
5061 pHddCtx->config->apMaxOffloadReorderBuffs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305062 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005063 "Name = [gAllowDFSChannelRoam] Value = [%u] ",
5064 pHddCtx->config->allowDFSChannelRoam);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305065 hddLog(QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005066 "Name = [gMaxConcurrentActiveSessions] Value = [%u] ",
5067 pHddCtx->config->gMaxConcurrentActiveSessions);
5068
5069#ifdef MSM_PLATFORM
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305070 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005071 "Name = [gBusBandwidthHighThreshold] Value = [%u] ",
5072 pHddCtx->config->busBandwidthHighThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305073 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005074 "Name = [gBusBandwidthMediumThreshold] Value = [%u] ",
5075 pHddCtx->config->busBandwidthMediumThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305076 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005077 "Name = [gBusBandwidthLowThreshold] Value = [%u] ",
5078 pHddCtx->config->busBandwidthLowThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305079 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005080 "Name = [gbusBandwidthComputeInterval] Value = [%u] ",
5081 pHddCtx->config->busBandwidthComputeInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305082 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005083 "Name = [gTcpDelAckThresholdHigh] Value = [%u] ",
5084 pHddCtx->config->tcpDelackThresholdHigh);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305085 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005086 "Name = [gTcpDelAckThresholdLow] Value = [%u] ",
5087 pHddCtx->config->tcpDelackThresholdLow);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305088 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Mohit Khannae71e2262015-11-10 09:37:24 -08005089 "Name = [%s] Value = [%u] ",
5090 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME,
5091 pHddCtx->config->tcp_tx_high_tput_thres);
5092
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005093#endif
5094
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305095 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005096 "Name = [gIgnoreCAC] Value = [%u] ",
5097 pHddCtx->config->ignoreCAC);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305098 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005099 "Name = [gSapPreferredChanLocation] Value = [%u] ",
5100 pHddCtx->config->gSapPreferredChanLocation);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305101 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005102 "Name = [gDisableDfsJapanW53] Value = [%u] ",
5103 pHddCtx->config->gDisableDfsJapanW53);
5104#ifdef FEATURE_GREEN_AP
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305105 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005106 "Name = [gEnableGreenAp] Value = [%u] ",
5107 pHddCtx->config->enableGreenAP);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305108 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005109 "Name = [gEenableEGAP] Value = [%u] ",
5110 pHddCtx->config->enable_egap);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305111 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005112 "Name = [gEGAPInactTime] Value = [%u] ",
5113 pHddCtx->config->egap_inact_time);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305114 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005115 "Name = [gEGAPWaitTime] Value = [%u] ",
5116 pHddCtx->config->egap_wait_time);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305117 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005118 "Name = [gEGAPFeatures] Value = [%u] ",
5119 pHddCtx->config->egap_feature_flag);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005120#endif
5121#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305122 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005123 "Name = [isRoamOffloadEnabled] Value = [%u]",
5124 pHddCtx->config->isRoamOffloadEnabled);
5125#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305126 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005127 "Name = [gEnableSifsBurst] Value = [%u]",
5128 pHddCtx->config->enableSifsBurst);
5129
5130#ifdef WLAN_FEATURE_LPSS
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305131 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005132 "Name = [gEnableLpassSupport] Value = [%u] ",
Komal Seelamc11bb222016-01-27 18:57:10 +05305133 pHddCtx->config->enable_lpass_support);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005134#endif
5135
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305136 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005137 "Name = [gEnableSelfRecovery] Value = [%u]",
5138 pHddCtx->config->enableSelfRecovery);
5139
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305140 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005141 "Name = [gEnableSapSuspend] Value = [%u]",
5142 pHddCtx->config->enableSapSuspend);
5143
5144#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305145 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005146 "Name = [gExtWoWgotoSuspend] Value = [%u]",
5147 pHddCtx->config->extWowGotoSuspend);
5148
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305149 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005150 "Name = [gExtWowApp1WakeupPinNumber] Value = [%u]",
5151 pHddCtx->config->extWowApp1WakeupPinNumber);
5152
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305153 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005154 "Name = [gExtWowApp2WakeupPinNumber] Value = [%u]",
5155 pHddCtx->config->extWowApp2WakeupPinNumber);
5156
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305157 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005158 "Name = [gExtWoWApp2KAInitPingInterval] Value = [%u]",
5159 pHddCtx->config->extWowApp2KAInitPingInterval);
5160
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305161 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005162 "Name = [gExtWoWApp2KAMinPingInterval] Value = [%u]",
5163 pHddCtx->config->extWowApp2KAMinPingInterval);
5164
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305165 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005166 "Name = [gExtWoWApp2KAMaxPingInterval] Value = [%u]",
5167 pHddCtx->config->extWowApp2KAMaxPingInterval);
5168
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305169 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005170 "Name = [gExtWoWApp2KAIncPingInterval] Value = [%u]",
5171 pHddCtx->config->extWowApp2KAIncPingInterval);
5172
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305173 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005174 "Name = [gExtWoWApp2TcpSrcPort] Value = [%u]",
5175 pHddCtx->config->extWowApp2TcpSrcPort);
5176
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305177 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005178 "Name = [gExtWoWApp2TcpDstPort] Value = [%u]",
5179 pHddCtx->config->extWowApp2TcpDstPort);
5180
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305181 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005182 "Name = [gExtWoWApp2TcpTxTimeout] Value = [%u]",
5183 pHddCtx->config->extWowApp2TcpTxTimeout);
5184
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305185 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005186 "Name = [gExtWoWApp2TcpRxTimeout] Value = [%u]",
5187 pHddCtx->config->extWowApp2TcpRxTimeout);
5188#endif
5189
5190#ifdef DHCP_SERVER_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305191 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005192 "Name = [gDHCPServerOffloadEnable] Value = [%u]",
5193 pHddCtx->config->enableDHCPServerOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305194 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005195 "Name = [gDHCPMaxNumClients] Value = [%u]",
5196 pHddCtx->config->dhcpMaxNumClients);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305197 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005198 "Name = [gDHCPServerIP] Value = [%s]",
5199 pHddCtx->config->dhcpServerIP);
5200#endif
5201
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305202 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005203 "Name = [gEnableDumpCollect] Value = [%u]",
5204 pHddCtx->config->is_ramdump_enabled);
5205
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305206 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005207 "Name = [gP2PListenDeferInterval] Value = [%u]",
5208 pHddCtx->config->p2p_listen_defer_interval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305209 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005210 "Name = [is_ps_enabled] value = [%d]",
5211 pHddCtx->config->is_ps_enabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305212 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005213 "Name = [policy_manager_enabled] value = [%d]",
5214 pHddCtx->config->policy_manager_enabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305215 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005216 "Name = [tso_enable] value = [%d]",
5217 pHddCtx->config->tso_enable);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305218 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005219 "Name = [LROEnable] value = [%d]",
5220 pHddCtx->config->lro_enable);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305221 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005222 "Name = [active_mode_offload] value = [%d]",
5223 pHddCtx->config->active_mode_offload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305224 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005225 "Name = [gfine_time_meas_cap] value = [%u]",
5226 pHddCtx->config->fine_time_meas_cap);
5227#ifdef WLAN_FEATURE_FASTPATH
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305228 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005229 "Name = [fastpath_enable] Value = [%u]",
5230 pHddCtx->config->fastpath_enable);
5231#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305232 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005233 "Name = [max_scan_count] value = [%d]",
5234 pHddCtx->config->max_scan_count);
5235#ifdef FEATURE_NAPI_DEBUG
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305236 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005237 "Name = [%s] value = [%d]",
5238 CFG_ENABLE_RX_THREAD, pHddCtx->config->enableRxThread);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305239 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005240 "Name = [%s] value = [%d]",
5241 CFG_NAPI_NAME, pHddCtx->config->napi_enable);
5242#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305243 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005244 "Name = [%s] Value = [%u]",
5245 CFG_CE_CLASSIFY_ENABLE_NAME,
5246 pHddCtx->config->ce_classify_enabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305247 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005248 "Name = [%s] value = [%u]",
5249 CFG_DUAL_MAC_FEATURE_DISABLE,
5250 pHddCtx->config->dual_mac_feature_disable);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07005251#ifdef FEATURE_WLAN_SCAN_PNO
5252 hddLog(LOGE, "Name = [%s] Value = [%u]",
5253 CFG_PNO_CHANNEL_PREDICTION_NAME,
5254 pHddCtx->config->pno_channel_prediction);
5255 hddLog(LOGE, "Name = [%s] Value = [%u]",
5256 CFG_TOP_K_NUM_OF_CHANNELS_NAME,
5257 pHddCtx->config->top_k_num_of_channels);
5258 hddLog(LOGE, "Name = [%s] Value = [%u]",
5259 CFG_STATIONARY_THRESHOLD_NAME,
5260 pHddCtx->config->stationary_thresh);
5261 hddLog(LOGE, "Name = [%s] Value = [%u]",
5262 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_NAME,
5263 pHddCtx->config->channel_prediction_full_scan);
5264#endif
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07005265 hddLog(LOGE, "Name = [%s] Value = [%d]",
5266 CFG_EARLY_STOP_SCAN_ENABLE,
5267 pHddCtx->config->early_stop_scan_enable);
5268 hddLog(LOGE, "Name = [%s] Value = [%d]",
5269 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD,
5270 pHddCtx->config->early_stop_scan_min_threshold);
5271 hddLog(LOGE, "Name = [%s] Value = [%d]",
5272 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD,
5273 pHddCtx->config->early_stop_scan_max_threshold);
Varun Reddy Yeturu044bda22015-11-21 22:03:40 -08005274 hddLog(LOGE, "Name = [%s] Value = [%d]",
5275 CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME,
5276 pHddCtx->config->first_scan_bucket_threshold);
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -08005277 hddLog(LOGE, "Name = [%s] Value = [%u]",
5278 CFG_HT_MPDU_DENSITY_NAME,
5279 pHddCtx->config->ht_mpdu_density);
5280
Ravi Joshi742495d2015-11-09 18:56:53 -08005281
5282#ifdef FEATURE_LFR_SUBNET_DETECTION
5283 hddLog(LOGE, "Name = [%s] Value = [%d]",
5284 CFG_ENABLE_LFR_SUBNET_DETECTION,
5285 pHddCtx->config->enable_lfr_subnet_detection);
5286#endif
Gupta, Kapilc68ad462016-02-01 19:17:23 +05305287 hdd_info("Name = [%s] Value = [%u]",
5288 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD,
5289 pHddCtx->config->roam_dense_traffic_thresh);
5290 hdd_info("Name = [%s] Value = [%u]",
5291 CFG_ROAM_DENSE_RSSI_THRE_OFFSET,
5292 pHddCtx->config->roam_dense_rssi_thresh_offset);
5293 hdd_info("Name = [%s] Value = [%u]",
5294 CFG_ROAM_DENSE_MIN_APS,
5295 pHddCtx->config->roam_dense_min_aps);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005296}
5297
5298
5299/**
5300 * hdd_update_mac_config() - update MAC address from cfg file
5301 * @pHddCtx: the pointer to hdd context
5302 *
5303 * It overwrites the MAC address if config file exist.
5304 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305305 * Return: QDF_STATUS_SUCCESS if the MAC address is found from cfg file
5306 * and overwritten, otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005307 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305308QDF_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005309{
5310 int status, i = 0;
5311 const struct firmware *fw = NULL;
5312 char *line, *buffer = NULL;
5313 char *name, *value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05305314 tCfgIniEntry macTable[QDF_MAX_CONCURRENCY_PERSONA];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005315 tSirMacAddr customMacAddr;
5316
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305317 QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005318
5319 memset(macTable, 0, sizeof(macTable));
5320 status = request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev);
5321
5322 if (status) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305323 hddLog(QDF_TRACE_LEVEL_WARN, "%s: request_firmware failed %d",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005324 __func__, status);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305325 qdf_status = QDF_STATUS_E_FAILURE;
5326 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005327 }
5328 if (!fw || !fw->data || !fw->size) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305329 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: invalid firmware", __func__);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305330 qdf_status = QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005331 goto config_exit;
5332 }
5333
5334 buffer = (char *)fw->data;
5335
5336 /* data format:
5337 * Intf0MacAddress=00AA00BB00CC
5338 * Intf1MacAddress=00AA00BB00CD
5339 * END
5340 */
5341 while (buffer != NULL) {
5342 line = get_next_line(buffer);
5343 buffer = i_trim(buffer);
5344
5345 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5346 buffer = line;
5347 continue;
5348 }
5349 if (strncmp(buffer, "END", 3) == 0)
5350 break;
5351
5352 name = buffer;
5353 buffer = strnchr(buffer, strlen(buffer), '=');
5354 if (buffer) {
5355 *buffer++ = '\0';
5356 i_trim(name);
5357 if (strlen(name) != 0) {
5358 buffer = i_trim(buffer);
5359 if (strlen(buffer) == 12) {
5360 value = buffer;
5361 macTable[i].name = name;
5362 macTable[i++].value = value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05305363 if (i >= QDF_MAX_CONCURRENCY_PERSONA)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005364 break;
5365 }
5366 }
5367 }
5368 buffer = line;
5369 }
Anurag Chouhan6d760662016-02-20 16:05:43 +05305370 if (i <= QDF_MAX_CONCURRENCY_PERSONA) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305371 hddLog(QDF_TRACE_LEVEL_INFO, "%s: %d Mac addresses provided",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005372 __func__, i);
5373 } else {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305374 hddLog(QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005375 "%s: invalid number of Mac address provided, nMac = %d",
5376 __func__, i);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305377 qdf_status = QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005378 goto config_exit;
5379 }
5380
5381 update_mac_from_string(pHddCtx, &macTable[0], i);
5382
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305383 qdf_mem_copy(&customMacAddr,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005384 &pHddCtx->config->intfMacAddr[0].bytes[0],
5385 sizeof(tSirMacAddr));
5386 sme_set_custom_mac_addr(customMacAddr);
5387
5388config_exit:
5389 release_firmware(fw);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305390 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005391}
5392
5393/**
5394 * hdd_parse_config_ini() - parse the ini configuration file
5395 * @pHddCtx: the pointer to hdd context
5396 *
5397 * This function reads the qcom_cfg.ini file and
5398 * parses each 'Name=Value' pair in the ini file
5399 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305400 * Return: QDF_STATUS_SUCCESS if the qcom_cfg.ini is correctly read,
5401 * otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005402 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305403QDF_STATUS hdd_parse_config_ini(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005404{
5405 int status, i = 0;
5406 /** Pointer for firmware image data */
5407 const struct firmware *fw = NULL;
5408 char *buffer, *line, *pTemp = NULL;
5409 size_t size;
5410 char *name, *value;
5411 /* cfgIniTable is static to avoid excess stack usage */
5412 static tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305413 QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005414
5415 memset(cfgIniTable, 0, sizeof(cfgIniTable));
5416
5417 status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
5418
5419 if (status) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305420 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005421 __func__, status);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305422 qdf_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005423 goto config_exit;
5424 }
5425 if (!fw || !fw->data || !fw->size) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305426 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: %s download failed",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005427 __func__, WLAN_INI_FILE);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305428 qdf_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005429 goto config_exit;
5430 }
5431
5432 hddLog(LOG1, "%s: qcom_cfg.ini Size %zu", __func__, fw->size);
5433
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305434 buffer = (char *)qdf_mem_malloc(fw->size);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005435
5436 if (NULL == buffer) {
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305437 hddLog(QDF_TRACE_LEVEL_FATAL, FL("qdf_mem_malloc failure"));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005438 release_firmware(fw);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305439 return QDF_STATUS_E_NOMEM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005440 }
5441 pTemp = buffer;
5442
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305443 qdf_mem_copy((void *)buffer, (void *)fw->data, fw->size);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005444 size = fw->size;
5445
5446 while (buffer != NULL) {
5447 line = get_next_line(buffer);
5448 buffer = i_trim(buffer);
5449
5450 hddLog(LOG1, "%s: item", buffer);
5451
5452 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5453 buffer = line;
5454 continue;
5455 } else if (strncmp(buffer, "END", 3) == 0) {
5456 break;
5457 } else {
5458 name = buffer;
5459 while (*buffer != '=' && *buffer != '\0')
5460 buffer++;
5461 if (*buffer != '\0') {
5462 *buffer++ = '\0';
5463 i_trim(name);
5464 if (strlen(name) != 0) {
5465 buffer = i_trim(buffer);
5466 if (strlen(buffer) > 0) {
5467 value = buffer;
5468 while (!i_isspace(*buffer)
5469 && *buffer != '\0')
5470 buffer++;
5471 *buffer = '\0';
5472 cfgIniTable[i].name = name;
5473 cfgIniTable[i++].value = value;
5474 if (i >= MAX_CFG_INI_ITEMS) {
5475 hddLog(LOGE,
5476 "%s: Number of items in %s > %d",
5477 __func__,
5478 WLAN_INI_FILE,
5479 MAX_CFG_INI_ITEMS);
5480 break;
5481 }
5482 }
5483 }
5484 }
5485 }
5486 buffer = line;
5487 }
5488
5489 /* Loop through the registry table and apply all these configs */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305490 qdf_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005491#ifdef FEATURE_NAPI
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305492 if (QDF_STATUS_SUCCESS == qdf_status)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005493 hdd_napi_event(NAPI_EVT_INI_FILE,
5494 (void *)pHddCtx->config->napi_enable);
5495#endif /* FEATURE_NAPI */
5496
5497config_exit:
5498 release_firmware(fw);
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305499 qdf_mem_free(pTemp);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305500 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005501}
5502
5503/**
5504 * hdd_cfg_xlate_to_csr_phy_mode() - convert PHY mode
5505 * @dot11Mode: the mode to convert
5506 *
5507 * Convert the configuration PHY mode to CSR PHY mode
5508 *
5509 * Return: the CSR phy mode value
5510 */
5511eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(eHddDot11Mode dot11Mode)
5512{
5513 switch (dot11Mode) {
5514 case (eHDD_DOT11_MODE_abg):
5515 return eCSR_DOT11_MODE_abg;
5516 case (eHDD_DOT11_MODE_11b):
5517 return eCSR_DOT11_MODE_11b;
5518 case (eHDD_DOT11_MODE_11g):
5519 return eCSR_DOT11_MODE_11g;
5520 default:
5521 case (eHDD_DOT11_MODE_11n):
5522 return eCSR_DOT11_MODE_11n;
5523 case (eHDD_DOT11_MODE_11g_ONLY):
5524 return eCSR_DOT11_MODE_11g_ONLY;
5525 case (eHDD_DOT11_MODE_11n_ONLY):
5526 return eCSR_DOT11_MODE_11n_ONLY;
5527 case (eHDD_DOT11_MODE_11b_ONLY):
5528 return eCSR_DOT11_MODE_11b_ONLY;
5529#ifdef WLAN_FEATURE_11AC
5530 case (eHDD_DOT11_MODE_11ac_ONLY):
5531 return eCSR_DOT11_MODE_11ac_ONLY;
5532 case (eHDD_DOT11_MODE_11ac):
5533 return eCSR_DOT11_MODE_11ac;
5534#else
5535 /* If 11AC support is not compiled set Auto mode */
5536 case (eHDD_DOT11_MODE_11ac):
5537 case (eHDD_DOT11_MODE_11ac_ONLY):
5538 return eCSR_DOT11_MODE_AUTO;
5539#endif
5540 case (eHDD_DOT11_MODE_AUTO):
5541 return eCSR_DOT11_MODE_AUTO;
5542 case (eHDD_DOT11_MODE_11a):
5543 return eCSR_DOT11_MODE_11a;
5544 }
5545
5546}
5547
5548/**
5549 * hdd_set_idle_ps_config() - set idle power save configuration
5550 * @pHddCtx: the pointer to hdd context
5551 * @val: the value to configure
5552 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305553 * Return: QDF_STATUS_SUCCESS if command set correctly,
5554 * otherwise the QDF_STATUS return from SME layer
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005555 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305556QDF_STATUS hdd_set_idle_ps_config(hdd_context_t *pHddCtx, uint32_t val)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005557{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305558 QDF_STATUS status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005559
5560 hddLog(LOG1, "hdd_set_idle_ps_config: Enter Val %d", val);
5561
Kiran Kumar Lokerefc2803d2016-01-11 19:31:38 -08005562 status = sme_set_idle_powersave_config(pHddCtx->pcds_context,
5563 pHddCtx->hHal, val);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305564 if (QDF_STATUS_SUCCESS != status)
Kiran Kumar Lokerefc2803d2016-01-11 19:31:38 -08005565 hddLog(LOGE, "Fail to Set Idle PS Config val %d", val);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005566 return status;
5567}
5568
5569/**
5570 * hdd_set_fine_time_meas_cap() - set fine timing measurement capability
5571 * @hdd_ctx: HDD context
5572 * @sme_config: pointer to SME config
5573 *
5574 * This function is used to pass fine timing measurement capability coming
5575 * from INI to SME. This function make sure that configure INI is supported
5576 * by the device. Use bit mask to mask out the unsupported capabilities.
5577 *
5578 * Return: None
5579 */
5580static void hdd_set_fine_time_meas_cap(hdd_context_t *hdd_ctx,
5581 tSmeConfigParams *sme_config)
5582{
5583 struct hdd_config *config = hdd_ctx->config;
5584 uint32_t capability = config->fine_time_meas_cap;
5585
5586 /* Make sure only supported capabilities are enabled in INI */
5587 capability &= CFG_FINE_TIME_MEAS_CAPABILITY_MAX;
Krunal Soni1878d3a2016-01-14 13:00:44 -08005588 sme_config->csrConfig.fine_time_meas_cap = capability;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005589
5590 hddLog(LOG1, FL("fine time meas capability - INI: %04x Enabled: %04x"),
Krunal Soni1878d3a2016-01-14 13:00:44 -08005591 config->fine_time_meas_cap,
5592 sme_config->csrConfig.fine_time_meas_cap);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005593
5594 return;
5595}
5596
5597/**
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005598 * hdd_convert_string_to_u8_array() - used to convert string into u8 array
5599 * @str: String to be converted
5600 * @hex_array: Array where converted value is stored
5601 * @len: Length of the populated array
5602 * @array_max_len: Maximum length of the array
5603 * @to_hex: true, if conversion required for hex string
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005604 *
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005605 * This API is called to convert string (each byte separated by
5606 * a comma) into an u8 array
5607 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305608 * Return: QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005609 */
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005610
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305611static QDF_STATUS hdd_convert_string_to_array(char *str, uint8_t *array,
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005612 uint8_t *len, uint8_t array_max_len, bool to_hex)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005613{
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005614 char *format, *s = str;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005615
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005616 if (str == NULL || array == NULL || len == NULL)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305617 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005618
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005619 format = (to_hex) ? "%02x" : "%d";
5620
5621 *len = 0;
5622 while ((s != NULL) && (*len < array_max_len)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005623 int val;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005624 /* Increment length only if sscanf successfully extracted
5625 * one element. Any other return value means error.
5626 * Ignore it. */
5627 if (sscanf(s, format, &val) == 1) {
5628 array[*len] = (uint8_t) val;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005629 *len += 1;
5630 }
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005631
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005632 s = strpbrk(s, ",");
5633 if (s)
5634 s++;
5635 }
5636
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305637 return QDF_STATUS_SUCCESS;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005638}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005639
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005640/**
5641 * hdd_hex_string_to_u8_array() - used to convert hex string into u8 array
5642 * @str: Hexadecimal string
5643 * @hex_array: Array where converted value is stored
5644 * @len: Length of the populated array
5645 * @array_max_len: Maximum length of the array
5646 *
5647 * This API is called to convert hexadecimal string (each byte separated by
5648 * a comma) into an u8 array
5649 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305650 * Return: QDF_STATUS
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005651 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305652QDF_STATUS hdd_hex_string_to_u8_array(char *str, uint8_t *hex_array,
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005653 uint8_t *len, uint8_t array_max_len)
5654{
5655 return hdd_convert_string_to_array(str, hex_array, len,
5656 array_max_len, true);
5657}
5658
5659/**
5660 * hdd_string_to_u8_array() - used to convert decimal string into u8 array
5661 * @str: Decimal string
5662 * @hex_array: Array where converted value is stored
5663 * @len: Length of the populated array
5664 * @array_max_len: Maximum length of the array
5665 *
5666 * This API is called to convert decimal string (each byte separated by
5667 * a comma) into an u8 array
5668 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305669 * Return: QDF_STATUS
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005670 */
5671
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305672QDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *array,
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08005673 uint8_t *len, uint8_t array_max_len)
5674{
5675 return hdd_convert_string_to_array(str, array, len,
5676 array_max_len, false);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005677}
5678
5679/**
5680 * hdd_update_config_dat() - scan the string and convery to u8 array
5681 * @str: the pointer to the string
5682 * @intArray: the pointer of buffer to store the u8 value
5683 * @len: size of the buffer
5684 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305685 * Return: QDF_STATUS_SUCCESS if the configuration could be updated corectly,
5686 * otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005687 */
5688bool hdd_update_config_dat(hdd_context_t *pHddCtx)
5689{
5690 bool fStatus = true;
5691 uint32_t val;
5692 uint16_t val16;
5693
5694 struct hdd_config *pConfig = pHddCtx->config;
5695 tSirMacHTCapabilityInfo *phtCapInfo;
5696
5697 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
5698 pConfig->ShortGI20MhzEnable) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305699 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005700 fStatus = false;
5701 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CFG");
5702 }
5703
5704 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305705 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005706 fStatus = false;
5707 hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CFG");
5708 }
5709
5710 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
5711 pConfig->MaxRxAmpduFactor) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305712 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005713 fStatus = false;
5714 hddLog(LOGE,
5715 "Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CFG");
5716 }
5717
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -08005718 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_MPDU_DENSITY,
5719 pConfig->ht_mpdu_density) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305720 QDF_STATUS_E_FAILURE) {
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -08005721 fStatus = false;
5722 hddLog(LOGE,
5723 "Could not pass on WNI_CFG_MPDU_DENSITY to CFG");
5724 }
5725
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005726 if (sme_cfg_set_int
5727 (pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305728 pConfig->fIsShortPreamble) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005729 fStatus = false;
5730 hddLog(LOGE,
5731 "Could not pass on WNI_CFG_SHORT_PREAMBLE to CFG");
5732 }
5733
5734 if (sme_cfg_set_int(pHddCtx->hHal,
5735 WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME,
5736 pConfig->nPassiveMinChnTime)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305737 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005738 fStatus = false;
5739 hddLog(LOGE,
5740 "Could not pass on WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME"
5741 " to CFG");
5742 }
5743
5744 if (sme_cfg_set_int(pHddCtx->hHal,
5745 WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
5746 pConfig->nPassiveMaxChnTime)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305747 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005748 fStatus = false;
5749 hddLog(LOGE,
5750 "Could not pass on WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME"
5751 " to CFG");
5752 }
5753
5754 if (sme_cfg_set_int
5755 (pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305756 pConfig->nBeaconInterval) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005757 fStatus = false;
5758 hddLog(LOGE,
5759 "Could not pass on WNI_CFG_BEACON_INTERVAL to CFG");
5760 }
5761
5762 if (sme_cfg_set_int
5763 (pHddCtx->hHal, WNI_CFG_MAX_PS_POLL,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305764 pConfig->nMaxPsPoll) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005765 fStatus = false;
5766 hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CFG");
5767 }
5768
5769 if (sme_cfg_set_int
5770 (pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305771 pConfig->nRxAnt) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005772 fStatus = false;
5773 hddLog(LOGE,
5774 "Could not pass on WNI_CFG_CURRENT_RX_ANTENNA to CFG");
5775 }
5776
5777 if (sme_cfg_set_int (pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305778 pConfig->fIsLowGainOverride) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005779 fStatus = false;
5780 hddLog(LOGE,
5781 "Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL");
5782 }
5783
5784 if (sme_cfg_set_int
5785 (pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305786 pConfig->nRssiFilterPeriod) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005787 fStatus = false;
5788 hddLog(LOGE,
5789 "Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CFG");
5790 }
5791
5792 if (sme_cfg_set_int
5793 (pHddCtx->hHal, WNI_CFG_IGNORE_DTIM,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305794 pConfig->fIgnoreDtim) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005795 fStatus = false;
5796 hddLog(LOGE,
5797 "Could not pass on WNI_IGNORE_DTIM to CFG");
5798 }
5799
5800 if (sme_cfg_set_int
5801 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT,
5802 pConfig->fEnableFwHeartBeatMonitoring)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305803 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005804 fStatus = false;
5805 hddLog(LOGE,
5806 "Could not pass on WNI_CFG_PS_HEART_BEAT to CFG");
5807 }
5808
5809 if (sme_cfg_set_int
5810 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER,
5811 pConfig->fEnableFwBeaconFiltering) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305812 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005813 fStatus = false;
5814 hddLog(LOGE,
5815 "Could not pass on WNI_CFG_PS_BCN_FILTER to CFG");
5816 }
5817
5818 if (sme_cfg_set_int
5819 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR,
5820 pConfig->fEnableFwRssiMonitoring) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305821 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005822 fStatus = false;
5823 hddLog(LOGE,
5824 "Could not pass on WNI_CFG_PS_RSSI_MONITOR to CFG");
5825 }
5826
5827 if (sme_cfg_set_int
5828 (pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305829 pConfig->nDataInactivityTimeout) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005830 fStatus = false;
5831 hddLog(LOGE,
5832 "Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT to CFG");
5833 }
5834
5835 if (sme_cfg_set_int
5836 (pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305837 pConfig->enableLTECoex) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005838 fStatus = false;
5839 hddLog(LOGE,
5840 "Could not pass on WNI_CFG_ENABLE_LTE_COEX to CFG");
5841 }
5842
5843 if (sme_cfg_set_int
5844 (pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305845 pConfig->nEnableListenMode) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005846 fStatus = false;
5847 hddLog(LOGE,
5848 "Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CFG");
5849 }
5850
5851 if (sme_cfg_set_int
5852 (pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305853 pConfig->apKeepAlivePeriod) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005854 fStatus = false;
5855 hddLog(LOGE,
5856 "Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CFG");
5857 }
5858
5859 if (sme_cfg_set_int
5860 (pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305861 pConfig->goKeepAlivePeriod) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005862 fStatus = false;
5863 hddLog(LOGE,
5864 "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
5865 }
5866
5867 if (sme_cfg_set_int
5868 (pHddCtx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305869 pConfig->apLinkMonitorPeriod) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005870 fStatus = false;
5871 hddLog(LOGE,
5872 "Could not pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CFG");
5873 }
5874
5875 if (sme_cfg_set_int
5876 (pHddCtx->hHal, WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305877 pConfig->goLinkMonitorPeriod) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005878 fStatus = false;
5879 hddLog(LOGE,
5880 "Could not pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
5881 }
5882
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005883 if (sme_cfg_set_int
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005884 (pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305885 pConfig->mcastBcastFilterSetting) == QDF_STATUS_E_FAILURE)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005886 fStatus = false;
5887 hddLog(LOGE,
5888 "Could not pass on WNI_CFG_MCAST_BCAST_FILTER_SETTING to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005889
5890 if (sme_cfg_set_int
5891 (pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305892 pConfig->bSingleTidRc) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005893 fStatus = false;
5894 hddLog(LOGE,
5895 "Could not pass on WNI_CFG_SINGLE_TID_RC to CFG");
5896 }
5897
5898 if (sme_cfg_set_int
5899 (pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305900 pConfig->teleBcnWakeupEn) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005901 fStatus = false;
5902 hddLog(LOGE,
5903 "Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN to CFG");
5904 }
5905
5906 if (sme_cfg_set_int
5907 (pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI,
5908 pConfig->nTeleBcnTransListenInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305909 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005910 fStatus = false;
5911 hddLog(LOGE,
5912 "Could not pass on WNI_CFG_TELE_BCN_TRANS_LI to CFG");
5913 }
5914
5915 if (sme_cfg_set_int
5916 (pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI,
5917 pConfig->nTeleBcnMaxListenInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305918 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005919 fStatus = false;
5920 hddLog(LOGE,
5921 "Could not pass on WNI_CFG_TELE_BCN_MAX_LI to CFG");
5922 }
5923
5924 if (sme_cfg_set_int
5925 (pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS,
5926 pConfig->nTeleBcnTransLiNumIdleBeacons) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305927 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005928 fStatus = false;
5929 hddLog(LOGE,
5930 "Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS to CFG");
5931 }
5932
5933 if (sme_cfg_set_int
5934 (pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS,
5935 pConfig->nTeleBcnMaxLiNumIdleBeacons) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305936 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005937 fStatus = false;
5938 hddLog(LOGE,
5939 "Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS to CFG");
5940 }
5941
5942 if (sme_cfg_set_int
5943 (pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305944 pConfig->rfSettlingTimeUs) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005945 fStatus = false;
5946 hddLog(LOGE,
5947 "Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK to CFG");
5948 }
5949
5950 if (sme_cfg_set_int
5951 (pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD,
5952 pConfig->infraStaKeepAlivePeriod) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305953 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005954 fStatus = false;
5955 hddLog(LOGE,
5956 "Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD to CFG");
5957 }
5958 if (sme_cfg_set_int
5959 (pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305960 pConfig->dynamicPsPollValue) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005961 fStatus = false;
5962 hddLog(LOGE,
5963 "Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE to CFG");
5964 }
5965
5966 if (sme_cfg_set_int
5967 (pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305968 pConfig->nNullDataApRespTimeout) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005969 fStatus = false;
5970 hddLog(LOGE,
5971 "Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT to CFG");
5972 }
5973
5974 if (sme_cfg_set_int
5975 (pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
5976 pConfig->apDataAvailPollPeriodInMs) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305977 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005978 fStatus = false;
5979 hddLog(LOGE,
5980 "Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
5981 }
5982 if (sme_cfg_set_int
5983 (pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305984 pConfig->FragmentationThreshold) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005985 fStatus = false;
5986 hddLog(LOGE,
5987 "Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD to CFG");
5988 }
5989 if (sme_cfg_set_int
5990 (pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305991 pConfig->RTSThreshold) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005992 fStatus = false;
5993 hddLog(LOGE,
5994 "Could not pass on WNI_CFG_RTS_THRESHOLD to CFG");
5995 }
5996
5997 if (sme_cfg_set_int
5998 (pHddCtx->hHal, WNI_CFG_11D_ENABLED,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305999 pConfig->Is11dSupportEnabled) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006000 fStatus = false;
6001 hddLog(LOGE,
6002 "Could not pass on WNI_CFG_11D_ENABLED to CFG");
6003 }
6004
6005 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_DFS_MASTER_ENABLED,
6006 pConfig->enableDFSMasterCap) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306007 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006008 fStatus = false;
6009 hddLog(LOGE,
6010 "Failure: Could not set value for WNI_CFG_DFS_MASTER_ENABLED");
6011 }
6012
6013 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_ENABLE_TXBF_20MHZ,
6014 pConfig->enableTxBFin20MHz) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306015 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006016 fStatus = false;
6017 hddLog(LOGE,
6018 "Could not set value for WNI_CFG_VHT_ENABLE_TXBF_20MHZ");
6019 }
6020
6021 if (sme_cfg_set_int
6022 (pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306023 pConfig->HeartbeatThresh24) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006024 fStatus = false;
6025 hddLog(LOGE,
6026 "Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD to CFG");
6027 }
6028
6029 if (sme_cfg_set_int
6030 (pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
6031 pConfig->apDataAvailPollPeriodInMs) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306032 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006033 fStatus = false;
6034 hddLog(LOGE,
6035 "Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
6036 }
6037
6038 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_CLOSE_LOOP,
6039 pConfig->enableCloseLoop) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306040 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006041 fStatus = false;
6042 hddLog(LOGE,
6043 "Could not pass on WNI_CFG_ENABLE_CLOSE_LOOP to CFG");
6044 }
6045
6046 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TX_PWR_CTRL_ENABLE,
6047 pConfig->enableAutomaticTxPowerControl)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306048 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006049 fStatus = false;
6050 hddLog(LOGE,
6051 "Could not pass on WNI_CFG_TX_PWR_CTRL_ENABLE to CFG");
6052 }
6053
6054 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
6055 pConfig->ShortGI40MhzEnable) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306056 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006057 fStatus = false;
6058 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CFG");
6059 }
6060
6061 if (sme_cfg_set_int
6062 (pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306063 pConfig->fEnableMCAddrList) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006064 fStatus = false;
6065 hddLog(LOGE,
6066 "Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CFG");
6067 }
6068 /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map
6069 * in the cfg.dat. Valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9)
6070 * we update only the least significant 2 bits in the
6071 * corresponding fields.
6072 */
6073 if ((pConfig->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
6074 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
6075 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac)) {
6076 uint32_t temp = 0;
6077
6078 sme_cfg_get_int(pHddCtx->hHal,
6079 WNI_CFG_VHT_BASIC_MCS_SET, &temp);
6080 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
6081 if (pConfig->enable2x2)
6082 temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
6083 if (sme_cfg_set_int(pHddCtx->hHal,
6084 WNI_CFG_VHT_BASIC_MCS_SET, temp) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306085 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006086 fStatus = false;
6087 hddLog(LOGE,
6088 "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
6089 }
6090
6091 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
6092 &temp);
6093 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
6094 if (pConfig->enable2x2)
6095 temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
6096 if (sme_cfg_set_int(pHddCtx->hHal,
6097 WNI_CFG_VHT_RX_MCS_MAP, temp)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306098 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006099 fStatus = false;
6100 hddLog(LOGE,
6101 "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
6102 }
6103 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
6104 temp = (temp & 0xFFFC) | pConfig->vhtTxMCS;
6105 if (pConfig->enable2x2)
6106 temp = (temp & 0xFFF3) | (pConfig->vhtTxMCS2x2 << 2);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306107 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006108 "vhtRxMCS2x2 - %x temp - %u enable2x2 %d",
6109 pConfig->vhtRxMCS2x2, temp,
6110 pConfig->enable2x2);
6111
6112 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306113 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006114 fStatus = false;
6115 hddLog(LOGE,
6116 "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
6117 }
6118 /* Currently shortGI40Mhz is used for shortGI80Mhz */
6119 if (sme_cfg_set_int
6120 (pHddCtx->hHal, WNI_CFG_VHT_SHORT_GI_80MHZ,
6121 pConfig->ShortGI40MhzEnable) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306122 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006123 fStatus = false;
6124 hddLog(LOGE,
6125 "Could not pass WNI_VHT_SHORT_GI_80MHZ to CFG");
6126 }
6127 /* Hardware is capable of doing
6128 * 128K AMPDU in 11AC mode */
6129 if (sme_cfg_set_int(pHddCtx->hHal,
6130 WNI_CFG_VHT_AMPDU_LEN_EXPONENT,
6131 pConfig->fVhtAmpduLenExponent) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306132 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006133 fStatus = false;
6134 hddLog(LOGE,
6135 "Could not pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CFG");
6136 }
6137 /* Change MU Bformee only when TxBF is enabled */
6138 if (pConfig->enableTxBF) {
6139 sme_cfg_get_int(pHddCtx->hHal,
6140 WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &temp);
6141
6142 if (temp != pConfig->enableMuBformee) {
6143 if (sme_cfg_set_int(pHddCtx->hHal,
6144 WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
6145 pConfig->enableMuBformee
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306146 ) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006147 fStatus = false;
6148 hddLog(LOGE,
6149 "Could not pass on WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CFG");
6150 }
6151 }
6152 }
6153 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_MAX_MPDU_LENGTH,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306154 pConfig->vhtMpduLen) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006155 fStatus = false;
6156 hddLog(LOGE,
6157 "Could not pass on WNI_CFG_VHT_MAX_MPDU_LENGTH to CFG");
6158 }
6159
6160 if (pConfig->enable2x2 && pConfig->enable_su_tx_bformer) {
6161 if (sme_cfg_set_int(pHddCtx->hHal,
6162 WNI_CFG_VHT_SU_BEAMFORMER_CAP,
6163 pConfig->enable_su_tx_bformer) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306164 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006165 fStatus = false;
6166 hdd_err("set SU_BEAMFORMER_CAP to CFG failed");
6167 }
6168 if (sme_cfg_set_int(pHddCtx->hHal,
6169 WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
6170 NUM_OF_SOUNDING_DIMENSIONS) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306171 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006172 fStatus = false;
6173 hdd_err("failed to set NUM_OF_SOUNDING_DIM");
6174 }
6175 }
6176 }
6177
6178 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306179 pConfig->enableRxSTBC) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006180 fStatus = false;
6181 hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CFG");
6182 }
6183
6184 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, &val);
6185 val16 = (uint16_t) val;
6186 phtCapInfo = (tSirMacHTCapabilityInfo *) &val16;
6187 phtCapInfo->rxSTBC = pConfig->enableRxSTBC;
6188 phtCapInfo->advCodingCap = pConfig->enableRxLDPC;
6189 val = val16;
6190 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, val)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306191 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006192 fStatus = false;
6193 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
6194 }
6195
6196 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306197 pConfig->enableRxSTBC) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006198 fStatus = false;
6199 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CFG");
6200 }
6201
6202 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TXSTBC,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306203 pConfig->enableTxSTBC) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006204 fStatus = false;
6205 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TXSTBC to CFG");
6206 }
6207
6208 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306209 pConfig->enableRxLDPC) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006210 fStatus = false;
6211 hddLog(LOGE,
6212 "Could not pass on WNI_CFG_VHT_LDPC_CODING_CAP to CFG");
6213 }
6214#ifdef WLAN_SOFTAP_VSTA_FEATURE
6215 if (pConfig->fEnableVSTASupport) {
6216 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, &val);
6217 if (val <= WNI_CFG_ASSOC_STA_LIMIT_STADEF)
6218 val = WNI_CFG_ASSOC_STA_LIMIT_STAMAX;
6219 } else {
6220 val = pConfig->maxNumberOfPeers;
6221
6222 }
6223 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, val) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306224 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006225 fStatus = false;
6226 hddLog(LOGE,
6227 "Could not pass on WNI_CFG_ASSOC_STA_LIMIT to CFG");
6228 }
6229#endif
6230 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
6231 pConfig->enableLpwrImgTransition)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306232 == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006233 fStatus = false;
6234 hddLog(LOGE,
6235 "Could not pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CFG");
6236 }
6237
6238 if (sme_cfg_set_int
6239 (pHddCtx->hHal, WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
6240 pConfig->enableMCCAdaptiveScheduler) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306241 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006242 fStatus = false;
6243 hddLog(LOGE,
6244 "Could not pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CFG");
6245 }
6246 if (sme_cfg_set_int
6247 (pHddCtx->hHal, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306248 pConfig->disableLDPCWithTxbfAP) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006249 fStatus = false;
6250 hddLog(LOGE,
6251 "Could not pass on WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP to CFG");
6252 }
6253
6254 if (sme_cfg_set_int
6255 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ZERO,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306256 pConfig->retryLimitZero) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006257 fStatus = false;
6258 hddLog(LOGE,
6259 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ZERO to CFG");
6260 }
6261
6262 if (sme_cfg_set_int
6263 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ONE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306264 pConfig->retryLimitOne) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006265 fStatus = false;
6266 hddLog(LOGE,
6267 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ONE to CFG");
6268 }
6269
6270 if (sme_cfg_set_int
6271 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_TWO,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306272 pConfig->retryLimitTwo) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006273 fStatus = false;
6274 hddLog(LOGE,
6275 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_TWO to CFG");
6276 }
6277
6278 if (sme_cfg_set_int
6279 (pHddCtx->hHal, WNI_CFG_MAX_MEDIUM_TIME,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306280 pConfig->cfgMaxMediumTime) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006281 fStatus = false;
6282 hddLog(LOGE,
6283 "Could not pass on WNI_CFG_MAX_MEDIUM_TIME to CFG");
6284 }
6285#ifdef FEATURE_WLAN_TDLS
6286
6287 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306288 pConfig->fTDLSUapsdMask) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006289 fStatus = false;
6290 hddLog(LOGE,
6291 "Could not pass on WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK to CFG");
6292 }
6293 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_BUF_STA_ENABLED,
6294 pConfig->fEnableTDLSBufferSta) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306295 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006296 fStatus = false;
6297 hddLog(LOGE,
6298 "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
6299 }
6300 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_PUAPSD_INACT_TIME,
6301 pConfig->fTDLSPuapsdInactivityTimer) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306302 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006303 fStatus = false;
6304 hddLog(LOGE,
6305 "Could not pass on WNI_CFG_TDLS_PUAPSD_INACT_TIME to CFG");
6306 }
6307 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_RX_FRAME_THRESHOLD,
6308 pConfig->fTDLSRxFrameThreshold) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306309 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006310 fStatus = false;
6311 hddLog(LOGE,
6312 "Could not pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CFG");
6313 }
6314
6315 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,
6316 pConfig->fEnableTDLSOffChannel) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306317 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006318 fStatus = false;
6319 hddLog(LOGE,
6320 "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
6321 }
6322 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_WMM_MODE_ENABLED,
6323 pConfig->fEnableTDLSWmmMode) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306324 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006325 fStatus = false;
6326 hddLog(LOGE,
6327 "Could not pass on WNI_CFG_TDLS_WMM_MODE_ENABLED to CFG");
6328 }
6329#endif
6330
6331 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN,
6332 pConfig->fEnableAdaptRxDrain) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306333 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006334 fStatus = false;
6335 hddLog(LOGE,
6336 "Could not pass on WNI_CFG_ENABLE_ADAPT_RX_DRAIN to CFG");
6337 }
6338
6339 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FLEX_CONNECT_POWER_FACTOR,
6340 pConfig->flexConnectPowerFactor) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306341 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006342 fStatus = false;
6343 hddLog(LOGE, "Failure: Could not pass on "
6344 "WNI_CFG_FLEX_CONNECT_POWER_FACTOR to CFG");
6345 }
6346
6347 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ANTENNA_DIVESITY,
6348 pConfig->antennaDiversity) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306349 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006350 fStatus = false;
6351 hddLog(LOGE,
6352 "Could not pass on WNI_CFG_ANTENNA_DIVESITY to CFG");
6353 }
6354
6355 if (sme_cfg_set_int(pHddCtx->hHal,
6356 WNI_CFG_DEFAULT_RATE_INDEX_24GHZ,
6357 pConfig->defaultRateIndex24Ghz) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306358 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006359 fStatus = false;
6360 hddLog(LOGE,
6361 "Could not pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to CFG");
6362 }
6363
6364 if (sme_cfg_set_int(pHddCtx->hHal,
6365 WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
6366 pConfig->debugP2pRemainOnChannel) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306367 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006368 fStatus = false;
6369 hddLog(LOGE,
6370 "Could not pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CFG");
6371 }
6372#ifdef WLAN_FEATURE_11W
6373 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
6374 pConfig->pmfSaQueryMaxRetries) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306375 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006376 fStatus = false;
6377 hddLog(LOGE,
6378 "Could not pass on WNI_CFG_SA_QUERY_MAX_RETRIES to CFG");
6379 }
6380
6381 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
6382 pConfig->pmfSaQueryRetryInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306383 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006384 fStatus = false;
6385 hddLog(LOGE,
6386 "Could not pass on WNI_CFG_SA_QUERY_RETRY_INTERVAL to CFG");
6387 }
6388#endif
6389
6390 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_IBSS_ATIM_WIN_SIZE,
6391 pConfig->ibssATIMWinSize) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306392 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006393 fStatus = false;
6394 hddLog(LOGE,
6395 "Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CFG");
6396 }
6397 return fStatus;
6398}
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006399#ifdef FEATURE_WLAN_SCAN_PNO
6400/**
6401 * hdd_set_pno_channel_prediction_config() - Set PNO configuration
6402 * @sme_config: Config params from SME Context
6403 * @hdd_ctx: Config params from HDD Context
6404 *
6405 * Copy the PNO Channel prediction feature configuration parameters
6406 * from HDD context to SME context.
6407 *
6408 * Return: None
6409 */
6410void hdd_set_pno_channel_prediction_config(
6411 tpSmeConfigParams sme_config, hdd_context_t *hdd_ctx)
6412{
Krunal Soni1878d3a2016-01-14 13:00:44 -08006413 sme_config->csrConfig.dual_mac_feature_disable =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006414 hdd_ctx->config->dual_mac_feature_disable;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006415 sme_config->csrConfig.pno_channel_prediction =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006416 hdd_ctx->config->pno_channel_prediction;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006417 sme_config->csrConfig.top_k_num_of_channels =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006418 hdd_ctx->config->top_k_num_of_channels;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006419 sme_config->csrConfig.stationary_thresh =
6420 hdd_ctx->config->stationary_thresh;
6421 sme_config->csrConfig.channel_prediction_full_scan =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006422 hdd_ctx->config->channel_prediction_full_scan;
6423}
6424#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006425/**
6426 * hdd_set_sme_config() -initializes the sme configuration parameters
6427 *
6428 * @pHddCtx: the pointer to hdd context
6429 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306430 * Return: QDF_STATUS_SUCCESS if configuration is correctly applied,
6431 * otherwise the appropriate QDF_STATUS would be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006432 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306433QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006434{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306435 QDF_STATUS status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006436 tSmeConfigParams *smeConfig;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006437 uint8_t rrm_capab_len;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006438
6439 struct hdd_config *pConfig = pHddCtx->config;
6440
Anurag Chouhan600c3a02016-03-01 10:33:54 +05306441 smeConfig = qdf_mem_malloc(sizeof(*smeConfig));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006442 if (NULL == smeConfig) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306443 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006444 "%s: unable to allocate smeConfig", __func__);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306445 return QDF_STATUS_E_NOMEM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006446 }
Anurag Chouhan600c3a02016-03-01 10:33:54 +05306447 qdf_mem_zero(smeConfig, sizeof(*smeConfig));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006448
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306449 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006450 "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d",
6451 __func__, pConfig->WmmMode, pConfig->b80211eIsEnabled,
6452 pConfig->dot11Mode);
6453
6454 /* Config params obtained from the registry
6455 * To Do: set regulatory information here
6456 */
6457
6458 smeConfig->csrConfig.RTSThreshold = pConfig->RTSThreshold;
6459 smeConfig->csrConfig.FragmentationThreshold =
6460 pConfig->FragmentationThreshold;
6461 smeConfig->csrConfig.shortSlotTime = pConfig->ShortSlotTimeEnabled;
6462 smeConfig->csrConfig.Is11dSupportEnabled = pConfig->Is11dSupportEnabled;
6463 smeConfig->csrConfig.HeartbeatThresh24 = pConfig->HeartbeatThresh24;
6464
6465 smeConfig->csrConfig.phyMode =
6466 hdd_cfg_xlate_to_csr_phy_mode(pConfig->dot11Mode);
6467
6468 if (pConfig->dot11Mode == eHDD_DOT11_MODE_abg ||
6469 pConfig->dot11Mode == eHDD_DOT11_MODE_11b ||
6470 pConfig->dot11Mode == eHDD_DOT11_MODE_11g ||
6471 pConfig->dot11Mode == eHDD_DOT11_MODE_11b_ONLY ||
6472 pConfig->dot11Mode == eHDD_DOT11_MODE_11g_ONLY) {
6473 smeConfig->csrConfig.channelBondingMode24GHz = 0;
6474 smeConfig->csrConfig.channelBondingMode5GHz = 0;
6475 } else {
6476 smeConfig->csrConfig.channelBondingMode24GHz =
6477 pConfig->nChannelBondingMode24GHz;
6478 smeConfig->csrConfig.channelBondingMode5GHz =
6479 pConfig->nChannelBondingMode5GHz;
6480 }
6481 smeConfig->csrConfig.TxRate = pConfig->TxRate;
6482 smeConfig->csrConfig.nScanResultAgeCount = pConfig->ScanResultAgeCount;
6483 smeConfig->csrConfig.scanAgeTimeNCNPS = pConfig->nScanAgeTimeNCNPS;
6484 smeConfig->csrConfig.scanAgeTimeNCPS = pConfig->nScanAgeTimeNCPS;
6485 smeConfig->csrConfig.scanAgeTimeCNPS = pConfig->nScanAgeTimeCNPS;
6486 smeConfig->csrConfig.scanAgeTimeCPS = pConfig->nScanAgeTimeCPS;
6487 smeConfig->csrConfig.AdHocChannel24 = pConfig->OperatingChannel;
6488 smeConfig->csrConfig.fSupplicantCountryCodeHasPriority =
6489 pConfig->fSupplicantCountryCodeHasPriority;
6490 smeConfig->csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
6491 smeConfig->csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
6492 smeConfig->csrConfig.vccUlMacLossThreshold =
6493 pConfig->nVccUlMacLossThreshold;
6494 smeConfig->csrConfig.nRoamingTime = pConfig->nRoamingTime;
6495 smeConfig->csrConfig.nInitialDwellTime = pConfig->nInitialDwellTime;
6496 smeConfig->csrConfig.initial_scan_no_dfs_chnl =
6497 pConfig->initial_scan_no_dfs_chnl;
6498 smeConfig->csrConfig.nActiveMaxChnTime = pConfig->nActiveMaxChnTime;
6499 smeConfig->csrConfig.nActiveMinChnTime = pConfig->nActiveMinChnTime;
6500 smeConfig->csrConfig.nPassiveMaxChnTime = pConfig->nPassiveMaxChnTime;
6501 smeConfig->csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
6502#ifdef WLAN_AP_STA_CONCURRENCY
6503 smeConfig->csrConfig.nActiveMaxChnTimeConc =
6504 pConfig->nActiveMaxChnTimeConc;
6505 smeConfig->csrConfig.nActiveMinChnTimeConc =
6506 pConfig->nActiveMinChnTimeConc;
6507 smeConfig->csrConfig.nPassiveMaxChnTimeConc =
6508 pConfig->nPassiveMaxChnTimeConc;
6509 smeConfig->csrConfig.nPassiveMinChnTimeConc =
6510 pConfig->nPassiveMinChnTimeConc;
6511 smeConfig->csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
6512 smeConfig->csrConfig.nNumStaChanCombinedConc =
6513 pConfig->nNumStaChanCombinedConc;
6514 smeConfig->csrConfig.nNumP2PChanCombinedConc =
6515 pConfig->nNumP2PChanCombinedConc;
6516
6517#endif
6518 smeConfig->csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
6519 smeConfig->csrConfig.WMMSupportMode = pConfig->WmmMode;
6520
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006521 smeConfig->rrmConfig.rrm_enabled = pConfig->fRrmEnable;
6522 smeConfig->rrmConfig.max_randn_interval = pConfig->nRrmRandnIntvl;
6523 hdd_hex_string_to_u8_array(pConfig->rm_capability,
6524 smeConfig->rrmConfig.rm_capability, &rrm_capab_len,
6525 DOT11F_IE_RRMENABLEDCAP_MAX_LEN);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006526 /* Remaining config params not obtained from registry
6527 * On RF EVB beacon using channel 1.
6528 */
6529#ifdef WLAN_FEATURE_11AC
6530 smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
6531 smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
Kiran Kumar Lokere5302ab62015-12-16 16:03:16 -08006532 smeConfig->csrConfig.enable_txbf_sap_mode =
6533 pConfig->enable_txbf_sap_mode;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006534 smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
6535 smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
6536 smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
6537 smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee;
6538 smeConfig->csrConfig.enableVhtpAid = pConfig->enableVhtpAid;
6539 smeConfig->csrConfig.enableVhtGid = pConfig->enableVhtGid;
6540#endif
6541 smeConfig->csrConfig.enableAmpduPs = pConfig->enableAmpduPs;
6542 smeConfig->csrConfig.enableHtSmps = pConfig->enableHtSmps;
6543 smeConfig->csrConfig.htSmps = pConfig->htSmps;
6544 smeConfig->csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G;
6545 smeConfig->csrConfig.AdHocChannel24 = pConfig->AdHocChannel24G;
6546 smeConfig->csrConfig.ProprietaryRatesEnabled = 0;
6547 smeConfig->csrConfig.HeartbeatThresh50 = 40;
6548 smeConfig->csrConfig.bandCapability = pConfig->nBandCapability;
6549 if (pConfig->nBandCapability == eCSR_BAND_24) {
6550 smeConfig->csrConfig.Is11hSupportEnabled = 0;
6551 } else {
6552 smeConfig->csrConfig.Is11hSupportEnabled =
6553 pConfig->Is11hSupportEnabled;
6554 }
6555 smeConfig->csrConfig.cbChoice = 0;
6556 smeConfig->csrConfig.eBand = pConfig->nBandCapability;
6557 smeConfig->csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
6558 smeConfig->csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
6559 smeConfig->csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006560 smeConfig->csrConfig.nRoamPrefer5GHz = pConfig->nRoamPrefer5GHz;
6561 smeConfig->csrConfig.nRoamIntraBand = pConfig->nRoamIntraBand;
6562 smeConfig->csrConfig.nProbes = pConfig->nProbes;
6563
6564 smeConfig->csrConfig.nRoamScanHomeAwayTime =
6565 pConfig->nRoamScanHomeAwayTime;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006566 smeConfig->csrConfig.fFirstScanOnly2GChnl =
6567 pConfig->enableFirstScan2GOnly;
6568
Peng Xuf5d60c82015-10-02 17:17:03 -07006569 smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006570
6571 hdd_set_power_save_offload_config(pHddCtx);
6572
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006573 smeConfig->csrConfig.csr11rConfig.IsFTResourceReqSupported =
6574 pConfig->fFTResourceReqSupported;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006575 smeConfig->csrConfig.isFastRoamIniFeatureEnabled =
6576 pConfig->isFastRoamIniFeatureEnabled;
6577 smeConfig->csrConfig.MAWCEnabled = pConfig->MAWCEnabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006578#ifdef FEATURE_WLAN_ESE
6579 smeConfig->csrConfig.isEseIniFeatureEnabled =
6580 pConfig->isEseIniFeatureEnabled;
6581 if (pConfig->isEseIniFeatureEnabled) {
6582 pConfig->isFastTransitionEnabled = true;
6583 }
6584#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006585 smeConfig->csrConfig.isFastTransitionEnabled =
6586 pConfig->isFastTransitionEnabled;
6587 smeConfig->csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
6588 smeConfig->csrConfig.isWESModeEnabled = pConfig->isWESModeEnabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006589 smeConfig->csrConfig.isRoamOffloadScanEnabled =
6590 pConfig->isRoamOffloadScanEnabled;
6591 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled =
6592 pConfig->bFastRoamInConIniFeatureEnabled;
6593
6594 if (0 == smeConfig->csrConfig.isRoamOffloadScanEnabled) {
6595 /* Disable roaming in concurrency if roam scan offload is disabled */
6596 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled = 0;
6597 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006598 smeConfig->csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold =
6599 pConfig->nNeighborLookupRssiThreshold;
6600 smeConfig->csrConfig.neighborRoamConfig.delay_before_vdev_stop =
6601 pConfig->delay_before_vdev_stop;
6602 smeConfig->csrConfig.neighborRoamConfig.nOpportunisticThresholdDiff =
6603 pConfig->nOpportunisticThresholdDiff;
6604 smeConfig->csrConfig.neighborRoamConfig.nRoamRescanRssiDiff =
6605 pConfig->nRoamRescanRssiDiff;
6606 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime =
6607 pConfig->nNeighborScanMaxChanTime;
6608 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMinChanTime =
6609 pConfig->nNeighborScanMinChanTime;
6610 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod =
6611 pConfig->nNeighborScanPeriod;
6612 smeConfig->csrConfig.neighborRoamConfig.nMaxNeighborRetries =
6613 pConfig->nMaxNeighborReqTries;
6614 smeConfig->csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod =
6615 pConfig->nNeighborResultsRefreshPeriod;
6616 smeConfig->csrConfig.neighborRoamConfig.nEmptyScanRefreshPeriod =
6617 pConfig->nEmptyScanRefreshPeriod;
6618 hdd_string_to_u8_array(pConfig->neighborScanChanList,
6619 smeConfig->csrConfig.neighborRoamConfig.
6620 neighborScanChanList.channelList,
6621 &smeConfig->csrConfig.neighborRoamConfig.
6622 neighborScanChanList.numChannels,
6623 WNI_CFG_VALID_CHANNEL_LIST_LEN);
6624 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFirstBcnt =
6625 pConfig->nRoamBmissFirstBcnt;
6626 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFinalBcnt =
6627 pConfig->nRoamBmissFinalBcnt;
6628 smeConfig->csrConfig.neighborRoamConfig.nRoamBeaconRssiWeight =
6629 pConfig->nRoamBeaconRssiWeight;
6630 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_max_count =
6631 pConfig->nhi_rssi_scan_max_count;
6632 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_delta =
6633 pConfig->nhi_rssi_scan_rssi_delta;
6634 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_delay =
6635 pConfig->nhi_rssi_scan_delay;
6636 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_ub =
6637 pConfig->nhi_rssi_scan_rssi_ub;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006638 smeConfig->csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
6639 smeConfig->csrConfig.fValidateList = pConfig->fValidateScanList;
6640 smeConfig->csrConfig.allowDFSChannelRoam = pConfig->allowDFSChannelRoam;
6641
6642 /* Enable/Disable MCC */
6643 smeConfig->csrConfig.fEnableMCCMode = pConfig->enableMCC;
6644 smeConfig->csrConfig.mcc_rts_cts_prot_enable =
6645 pConfig->mcc_rts_cts_prot_enable;
6646 smeConfig->csrConfig.mcc_bcast_prob_resp_enable =
6647 pConfig->mcc_bcast_prob_resp_enable;
6648 smeConfig->csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
6649
6650 /* Scan Results Aging Time out value */
6651 smeConfig->csrConfig.scanCfgAgingTime = pConfig->scanAgingTimeout;
6652
6653 smeConfig->csrConfig.enableTxLdpc = pConfig->enableTxLdpc;
6654#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
6655 smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode;
6656#endif
6657
6658 smeConfig->csrConfig.isAmsduSupportInAMPDU =
6659 pConfig->isAmsduSupportInAMPDU;
6660 smeConfig->csrConfig.nSelect5GHzMargin = pConfig->nSelect5GHzMargin;
6661
6662 smeConfig->csrConfig.isCoalesingInIBSSAllowed =
6663 pHddCtx->config->isCoalesingInIBSSAllowed;
6664 smeConfig->csrConfig.ignore_peer_erp_info =
6665 pConfig->ignore_peer_erp_info;
6666 /* update SSR config */
6667 sme_update_enable_ssr((tHalHandle) (pHddCtx->hHal),
6668 pHddCtx->config->enableSSR);
6669
6670#ifdef FEATURE_WLAN_SCAN_PNO
6671 /* Update PNO offoad status */
Krunal Soni1878d3a2016-01-14 13:00:44 -08006672 smeConfig->csrConfig.pnoOffload = pHddCtx->config->PnoOffload;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006673#endif
6674
6675 /* Update maximum interfaces information */
Krunal Soni1878d3a2016-01-14 13:00:44 -08006676 smeConfig->csrConfig.max_intf_count = pHddCtx->max_intf_count;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006677
Krunal Soni1878d3a2016-01-14 13:00:44 -08006678 smeConfig->csrConfig.fEnableDebugLog = pHddCtx->config->gEnableDebugLog;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006679
Krunal Soni1878d3a2016-01-14 13:00:44 -08006680 smeConfig->csrConfig.enable5gEBT = pHddCtx->config->enable5gEBT;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006681
Krunal Soni1878d3a2016-01-14 13:00:44 -08006682 smeConfig->csrConfig.enableSelfRecovery =
6683 pHddCtx->config->enableSelfRecovery;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006684#ifdef WLAN_FEATURE_ROAM_OFFLOAD
6685 smeConfig->csrConfig.isRoamOffloadEnabled =
6686 pHddCtx->config->isRoamOffloadEnabled;
6687#endif
6688 smeConfig->csrConfig.conc_custom_rule1 =
6689 pHddCtx->config->conc_custom_rule1;
6690 smeConfig->csrConfig.conc_custom_rule2 =
6691 pHddCtx->config->conc_custom_rule2;
6692 smeConfig->csrConfig.is_sta_connection_in_5gz_enabled =
6693 pHddCtx->config->is_sta_connection_in_5gz_enabled;
6694
Krunal Soni1878d3a2016-01-14 13:00:44 -08006695 smeConfig->csrConfig.f_sta_miracast_mcc_rest_time_val =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006696 pHddCtx->config->sta_miracast_mcc_rest_time_val;
6697
6698#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
Krunal Soni1878d3a2016-01-14 13:00:44 -08006699 smeConfig->csrConfig.sap_channel_avoidance =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006700 pHddCtx->config->sap_channel_avoidance;
6701#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
6702
Krunal Soni1878d3a2016-01-14 13:00:44 -08006703 smeConfig->csrConfig.f_prefer_non_dfs_on_radar =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006704 pHddCtx->config->prefer_non_dfs_on_radar;
6705
Krunal Soni1878d3a2016-01-14 13:00:44 -08006706 smeConfig->csrConfig.is_ps_enabled = pHddCtx->config->is_ps_enabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006707 hdd_set_fine_time_meas_cap(pHddCtx, smeConfig);
6708
6709 cds_set_multicast_logging(pHddCtx->config->multicast_host_fw_msgs);
6710
6711 smeConfig->csrConfig.sendDeauthBeforeCon = pConfig->sendDeauthBeforeCon;
6712
Krunal Soni1878d3a2016-01-14 13:00:44 -08006713 smeConfig->csrConfig.policy_manager_enabled =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006714 pHddCtx->config->policy_manager_enabled;
6715 smeConfig->csrConfig.max_scan_count =
6716 pHddCtx->config->max_scan_count;
6717
6718 /* Update 802.11p config */
6719 smeConfig->csrConfig.enable_dot11p =
6720 (pHddCtx->config->dot11p_mode != WLAN_HDD_11P_DISABLED);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006721 hdd_set_pno_channel_prediction_config(smeConfig, pHddCtx);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006722
Krunal Soni1878d3a2016-01-14 13:00:44 -08006723 smeConfig->csrConfig.early_stop_scan_enable =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07006724 pHddCtx->config->early_stop_scan_enable;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006725 smeConfig->csrConfig.early_stop_scan_min_threshold =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07006726 pHddCtx->config->early_stop_scan_min_threshold;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006727 smeConfig->csrConfig.early_stop_scan_max_threshold =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07006728 pHddCtx->config->early_stop_scan_max_threshold;
Varun Reddy Yeturu044bda22015-11-21 22:03:40 -08006729 smeConfig->csrConfig.first_scan_bucket_threshold =
6730 pHddCtx->config->first_scan_bucket_threshold;
Gupta, Kapilc68ad462016-02-01 19:17:23 +05306731
6732 smeConfig->csrConfig.roam_dense_rssi_thresh_offset =
6733 pHddCtx->config->roam_dense_rssi_thresh_offset;
6734 smeConfig->csrConfig.roam_dense_min_aps =
6735 pHddCtx->config->roam_dense_min_aps;
6736 smeConfig->csrConfig.roam_dense_traffic_thresh =
6737 pHddCtx->config->roam_dense_traffic_thresh;
6738
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006739 status = sme_update_config(pHddCtx->hHal, smeConfig);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306740 if (!QDF_IS_STATUS_SUCCESS(status)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006741 hddLog(LOGE, "sme_update_config() return failure %d",
6742 status);
6743 }
6744
Anurag Chouhan600c3a02016-03-01 10:33:54 +05306745 qdf_mem_free(smeConfig);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006746 return status;
6747}
6748
6749/**
6750 * hdd_execute_global_config_command() - execute the global config command
6751 * @pHddCtx: the pointer to hdd context
6752 * @command: the command to run
6753 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306754 * Return: the QDF_STATUS return from hdd_execute_config_command
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006755 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306756QDF_STATUS hdd_execute_global_config_command(hdd_context_t *pHddCtx,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006757 char *command)
6758{
6759 return hdd_execute_config_command(g_registry_table,
6760 ARRAY_SIZE(g_registry_table),
6761 (uint8_t *) pHddCtx->config,
6762 pHddCtx, command);
6763}
6764
6765/**
6766 * hdd_cfg_get_global_config() - get the configuration table
6767 * @pHddCtx: pointer to hdd context
6768 * @pBuf: buffer to store the configuration
6769 * @buflen: size of the buffer
6770 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306771 * Return: QDF_STATUS_SUCCESS if the configuration and buffer size can carry
6772 * the content, otherwise QDF_STATUS_E_RESOURCES
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006773 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306774QDF_STATUS hdd_cfg_get_global_config(hdd_context_t *pHddCtx, char *pBuf,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006775 int buflen)
6776{
6777 return hdd_cfg_get_config(g_registry_table,
6778 ARRAY_SIZE(g_registry_table),
6779 (uint8_t *) pHddCtx->config, pHddCtx, pBuf,
6780 buflen);
6781}
6782
6783/**
6784 * hdd_is_okc_mode_enabled() - returns whether OKC mode is enabled or not
6785 * @pHddCtx: the pointer to hdd context
6786 *
6787 * Return: true if OKC is enabled, otherwise false
6788 */
6789bool hdd_is_okc_mode_enabled(hdd_context_t *pHddCtx)
6790{
6791 if (NULL == pHddCtx) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306792 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: pHddCtx is NULL", __func__);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006793 return -EINVAL;
6794 }
6795#ifdef FEATURE_WLAN_OKC
6796 return pHddCtx->config->isOkcIniFeatureEnabled;
6797#else
6798 return false;
6799#endif
6800}
6801
6802/**
6803 * hdd_update_nss() - Update the number of spatial streams supported.
6804 * Ensure that nss is either 1 or 2 before calling this.
6805 *
6806 * @hdd_ctx: the pointer to hdd context
6807 * @nss: the number of spatial streams to be updated
6808 *
6809 * This function is used to modify the number of spatial streams
6810 * supported when not in connected state.
6811 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306812 * Return: QDF_STATUS_SUCCESS if nss is correctly updated,
6813 * otherwise QDF_STATUS_E_FAILURE would be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006814 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306815QDF_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006816{
6817 struct hdd_config *hdd_config = hdd_ctx->config;
6818 uint32_t temp = 0;
6819 uint32_t rx_supp_data_rate, tx_supp_data_rate;
6820 bool status = true;
6821 tSirMacHTCapabilityInfo *ht_cap_info;
6822 uint8_t mcs_set[SIZE_OF_SUPPORTED_MCS_SET] = {0};
6823 uint8_t mcs_set_temp[SIZE_OF_SUPPORTED_MCS_SET];
6824 uint32_t val;
6825 uint16_t val16;
6826 uint8_t enable2x2;
6827
6828 if ((nss == 2) && (hdd_ctx->num_rf_chains != 2)) {
6829 hddLog(LOGE, "No support for 2 spatial streams");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306830 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006831 }
6832
6833 enable2x2 = (nss == 1) ? 0 : 1;
6834
6835 if (hdd_config->enable2x2 == enable2x2) {
6836 hddLog(LOGE, "NSS same as requested");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306837 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006838 }
6839
6840 if (true == sme_is_any_session_in_connected_state(hdd_ctx->hHal)) {
6841 hddLog(LOGE, "Connected sessions present, Do not change NSS");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306842 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006843 }
6844
6845 hdd_config->enable2x2 = enable2x2;
6846
6847 if (!hdd_config->enable2x2) {
6848 /* 1x1 */
6849 rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
6850 tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
6851 } else {
6852 /* 2x2 */
6853 rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
6854 tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
6855 }
6856
6857 /* Update Rx Highest Long GI data Rate */
6858 if (sme_cfg_set_int(hdd_ctx->hHal,
6859 WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306860 rx_supp_data_rate) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006861 status = false;
6862 hddLog(LOGE,
6863 "Could not pass on WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
6864 }
6865
6866 /* Update Tx Highest Long GI data Rate */
6867 if (sme_cfg_set_int(hdd_ctx->hHal,
6868 WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306869 tx_supp_data_rate) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006870 status = false;
6871 hddLog(LOGE,
6872 "Could not pass on WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
6873 }
6874
6875 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO, &temp);
6876 val16 = (uint16_t)temp;
6877 ht_cap_info = (tSirMacHTCapabilityInfo *)&val16;
6878 if (!(hdd_ctx->ht_tx_stbc_supported && hdd_config->enable2x2))
6879 ht_cap_info->txSTBC = 0;
6880 else
6881 ht_cap_info->txSTBC = hdd_config->enableTxSTBC;
6882 temp = val16;
6883 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306884 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006885 status = false;
6886 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
6887 }
6888
6889 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
6890 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
6891 if (hdd_config->enable2x2)
6892 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
6893 else
6894 temp |= 0x000C;
6895
6896 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306897 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006898 status = false;
6899 hddLog(LOGE,
6900 "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
6901 }
6902
6903 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
6904 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
6905 if (hdd_config->enable2x2)
6906 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
6907 else
6908 temp |= 0x000C;
6909
6910 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306911 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006912 status = false;
6913 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
6914 }
6915
6916 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
6917 temp = (temp & 0xFFFC) | hdd_config->vhtTxMCS;
6918 if (hdd_config->enable2x2)
6919 temp = (temp & 0xFFF3) | (hdd_config->vhtTxMCS2x2 << 2);
6920 else
6921 temp |= 0x000C;
6922
6923 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306924 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006925 status = false;
6926 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
6927 }
6928
6929#define WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES 0xff
6930 val = SIZE_OF_SUPPORTED_MCS_SET;
6931 sme_cfg_get_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
6932 mcs_set_temp, &val);
6933
6934 mcs_set[0] = mcs_set_temp[0];
6935 if (hdd_config->enable2x2)
6936 for (val = 0; val < nss; val++)
6937 mcs_set[val] = WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES;
6938
6939 if (sme_cfg_set_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
6940 mcs_set,
6941 SIZE_OF_SUPPORTED_MCS_SET) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306942 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006943 status = false;
6944 hddLog(LOGE, "Could not pass on MCS SET to CFG");
6945 }
6946#undef WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES
6947
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306948 if (QDF_STATUS_SUCCESS != sme_update_nss(hdd_ctx->hHal, nss))
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006949 status = false;
6950
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306951 return (status == false) ? QDF_STATUS_E_FAILURE : QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006952}